我正在尝试从Revit中导入的CAD获取一些(XY)坐标点和旋转,但只有在CAD文件从未移动/旋转过的情况下才能正常工作,这意味着无论CAD在Revit中的位置如何,Revit API都会获取CAD的内部坐标。
现在,当我尝试使用"Dynamo“进行相同的练习时,即使CAD被移动/旋转,坐标也是正确的
那么怎么做才是正确的呢?
GeometryElement geoElement = cad.get_Geometry(new Options());
foreach (GeometryObject geoObject in geoElement)
{
GeometryInstance instance = geoObject as GeometryInstance;
if (null != instance)
{
foreach (GeometryObject instObj in instance.SymbolGeometry)
{
if (instObj is GeometryInstance)
{
GeometryInstance gi_block = instObj as GeometryInstance;
Transform transform = gi_block.Transform;
XYZ origin = transform.Origin; // coordinates
TaskDialog.Show("xx", origin.ToString());
XYZ vectorTran = transform.OfVector(transform.BasisX.Normalize());
double rot = transform.BasisX.AngleOnPlaneTo(vectorTran, transform.BasisZ.Normalize()); // angle in radians
}
}
}
}发布于 2018-12-30 16:48:59
可能Dynamo会自动调整Revit项目的位置、向北旋转和其他全局坐标变换设置。
在对Real-World Concrete Corner Coordinates的讨论中,包含了对Transforming Revit Model Coordinates to the Real World的描述,您或许可以应用它。
查看生成的Structural Concrete Setout Point Add-in,它现在在SetoutPoints repository中的GitHub上处于活动状态。
发布于 2019-01-07 17:16:05
您可能应该首先浏览与导入实例相关联的ProjectLocation。您可以使用RevitLookup来完成此操作。
https://stackoverflow.com/questions/53969892
复制相似问题