Как получить доступ к элементам AutoCad / получить координаты xyz из Autocad

Я ищу способ получить доступ к связанному файлу Autocad с помощью Revit API. У меня уже установлен SnoopDB, что очень помогает.

Я нашел это что также было еще одним шагом вперед, однако я не могу получить точки или строки файла.

Я немного исследовал и обнаружил, что могу получить доступ к имени файла, а затем получить хэш-код 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);
                }

введите здесь описание изображения


person Cflux    schedule 29.01.2020    source источник


Ответы (1)


Revit API не предоставляет доступа к внутренним компонентам связанного файла САПР.

Все, что вы можете сделать, это реализовать некоторый код AutoCAD.NET для чтения самого файла DWG при условии, что у вас есть доступ к DWG и установлен AutoCAD.

Building Coder делится некоторыми примерами, показывающими, как запустить AutoCAD в надстройке Revit.

person Jeremy Tammik    schedule 29.01.2020
comment
Я не могу получить координаты XYZ, точки или что-либо еще из строк внутри файла AutoCAD с помощью Revit Api? Учебник в виде захвата ссылок, и Snoop может захватывать координаты. У меня сложилось впечатление, что если я смогу просмотреть его через Snoop, то я смогу получить его на C #. - person Cflux; 29.01.2020
comment
Я иду в кроличью нору. - person Cflux; 29.01.2020
comment
месяц спустя. вот я: stackoverflow.com/questions/60385727/, не стесняйтесь взглянуть, Джереми - person Cflux; 25.02.2020
comment
Я посмотрел на ваш новый вопрос. Я не вижу причин, по которым должна появиться такая проблема. Если ничего не помогает, вы всегда можете использовать IPC для разделения двух процессов. Однако в этом не должно быть необходимости: thebuildingcoder.typepad.com/blog/2019/04/ - person Jeremy Tammik; 26.02.2020