【问题标题】:How to access AutoCad elements / get xyz coordinates from Autocad如何访问 AutoCad 元素/从 Autocad 获取 xyz 坐标
【发布时间】:2020-01-29 14:29:39
【问题描述】:

我正在寻找一种使用 Revit API 访问链接的 Autocad 文件的方法。我已经安装了 SnoopDB,这是一个巨大的帮助。

我找到了this,这也是向前迈出的一步,但是我无法获得文件的点或线。

我进行了一些探索,发现我能够访问文件名,然后获取 cadlink 的哈希码,但在那之后,我知道如何获取其中的几何形状。

我们不胜感激。

这是我目前所拥有的:

 UIApplication uiapp = commandData.Application;
 UIDocument uidoc = uiapp.ActiveUIDocument;
 Application app = uiapp.Application;
 Document doc = uidoc.Document;

Selection sel = uidoc.Selection;

            using (Transaction tx = new Transaction(doc))
            {
                try
                {
                    tx.Start("Tracing Cad");


                    Reference refer = sel.PickObject(ObjectType.Element, "Select a CAD Link");



                    Element elem = doc.GetElement(refer);
                    GeometryElement geoElem = elem.get_Geometry(new Options());

                    Debug.WriteLine("elem.Category.Name: " + elem.Category.Name); // can grab title of CAD


                    foreach (GeometryObject geoObj in geoElem)
                        {
                            GeometryInstance instance = geoObj as GeometryInstance;


                            foreach (GeometryObject instObj in instance.SymbolGeometry)
                            {

                                Debug.WriteLine("geoObj.GraphicsStyleId: " + geoObj.GraphicsStyleId);
                                Debug.WriteLine("geoObj.GetHashCode(): " + geoObj.GetHashCode()); // gets hashcode of selected cad link

                                if (instObj.GetType().Name == "PolyLine")
                                // if (instObj.GetType().Name == "GeometryInstance")
                                {


                                }
                                else
                                {
                                    Debug.WriteLine("there are no blocks found in this CAD File");
                                }
                            }
                        }

                    tx.Commit();
                } catch (Exception e )
                {

                    Debug.WriteLine(e.StackTrace);
                }

【问题讨论】:

    标签: c# autocad revit-api revit


    【解决方案1】:

    Revit API 不提供对链接 CAD 文件内部的任何访问权限。

    只要您有权访问 DWG 并安装了 AutoCAD,您所能做的就是实现一些 AutoCAD.NET 代码来读取 DWG 文件本身。

    The Building Coder 分享了一些示例,展示了如何launch AutoCAD within a Revit add-in

    【讨论】:

    • 我无法使用 Revit Api 从 AutoCAD 文件中的线获取 XYZ 坐标或点或任何内容?链接中的教程抓取类型,Snoop 能够抓取坐标。我的印象是,如果我能够通过 Snoop 查看它,那么我就可以在 C# 中获得它。
    • 下兔子洞,我走了。
    • 一个月后。我在这里:stackoverflow.com/questions/60385727/…,随意看看 Jeremy
    • 我看了你的新问题。我看不出为什么会出现这样的问题。如果一切都失败了,你总是可以使用 IPC 来分离这两个进程。但是,应该不需要这个:thebuildingcoder.typepad.com/blog/2019/04/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2011-12-13
    • 2020-05-20
    相关资源
    最近更新 更多