从Cad获取Revit获取点(X,Y,Z)

时间:2018-12-29 13:14:36

标签: c# api coordinates cad revit

我正在尝试从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

                    }
                }
            }
        }

2 个答案:

答案 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来这样做。