我正在尝试从Revit内部的导入的CAD获取一些(XY)坐标点和旋转,但是只有在从未移动/旋转CAD文件的情况下,它才可以正常工作,这意味着Revit API获得了内部坐标CAD,无论Revit中的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
}
}
}
}
答案 0 :(得分:0)
也许Dynamo正在自动调整Revit项目的位置,向北旋转以及其他全局坐标转换设置。
对Real-World Concrete Corner Coordinates的讨论包括您可能可以应用的Transforming Revit Model Coordinates to the Real World的描述。
查看生成的Structural Concrete Setout Point Add-in,该代码现在在SetoutPoints repository的GitHub上有效。
答案 1 :(得分:0)
您可能首先应该探索与导入实例关联的ProjectLocation。您可以使用RevitLookup来这样做。