Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: RevitTormentor от 22-01-2018, 10:49:42
-
Правильно я понимаю, что сначала в момент открытия чертежа (условно в событиях dwg_open dwg_Created) все Entity загружаются в память. И потом я уже "вторично" могу по ним пройтись и взять нужные данные Polyline.Area XData и пр.
А можно например в момент загрузки Entity или ObjectDB в память из чертежа сразу его и обработать? Например посчитать длины полилиний.
Спасибо.
-
Чисто теоретически: можно отловить событие создания БД чертежа и прицепить к ней обработку события добавления в неё объектов. Но зачем?
-
Правильно я понимаю, что сначала в момент открытия чертежа (условно в событиях dwg_open dwg_Created) все Entity загружаются в память.
Нет.
А можно например в момент загрузки Entity или ObjectDB в память из чертежа сразу его и обработать?
Нет такого события. К сожалению я должен констатировать, что у тебя пока нет понимания работы AutoCAD. В дальнейшем постарайся описать что тебе нужно получить в конечном итоге, а мы постараемся объяснить как это можно сделать (если это возможно).
-
Чисто теоретически: можно отловить событие создания БД чертежа и прицепить к ней обработку события добавления в неё объектов.
Это будут объекты, которые потом добавляются к базе, а не те, которые были в базе при её открытии.
-
Мы же, если программно читаем БД чертежа, сперва создаём Database, а потом применяем к ней метод чтения из файла. Вот между этими действиями и можно было бы вставить обработчик события. Я предположил, что, возможно, любое открытие чертежа работает по такому же принципу (не только программное) - сперва создаётся пустая БД, потом наполняется объектами. Но очень может быть, что всё совсем не так.
-
Но очень может быть, что всё совсем не так.
А проверить??? :-)
-
Нет времени. А главное - нет необходимости. Вот если автору темы надо - пусть проверяет ;)
-
Это будут объекты, которые потом добавляются к базе, а не те, которые были в базе при её открытии.
В какой момент Handle меняются в базе документа при открытии чертежа?
Какое то сравнение происходит на совпадение в базе?
И так каждый объект добавляясь из файла в базу, проверяет свой старый Handle на совпадение, и если найдено, то свой меняет, а потом опять проходится по базе и меняет ещё у связанных?
Или в конце, все загрузились и потом сортировка?
-
Насколько я понимаю, Handle сами по себе не меняются. Единственная ненулевая вероятность - Handle может быть изменен при вставке файла как внешней ссылки. Вот тогда в файле-владельце Handle могут быть и изменены.
-
Я где то на форуме прочитал, что Handle может измениться у Объекта, а может и нет при загрузке чертежа. Если речь только про внешние ссылки это значительно упрощает дело.
-
Это ObjectID меняется каждый раз, но Handle... По-моему, это нечто неизменное :)
О, есть еще пара вариантов, когда Handle меняется!
1. Вставка текущего файла в другой как блок.
2. Выполнение команды _.wblock или _.-wblock и выполнение аналогичных действий.
Правда, это уже не будет иметь никакого отношения к текущему файлу.
-
В какой момент Handle меняются в базе документа при открытии чертежа?
Какое то сравнение происходит на совпадение в базе?
И так каждый объект добавляясь из файла в базу, проверяет свой старый Handle на совпадение, и если найдено, то свой меняет, а потом опять проходится по базе и меняет ещё у связанных?
Или в конце, все загрузились и потом сортировка?
Это полнейший бред. Я даже не знаю что на это можно ответить... Увы.
-
Я где то на форуме прочитал, что Handle может измениться у Объекта, а может и нет при загрузке чертежа. Если речь только про внешние ссылки это значительно упрощает дело.
Не может он изменится при загрузке чертежа. Никак.
-
А когда Handle закончится - AutoCAD умрёт
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fforum.dwg.ru%2Fattachment.php%3Fattachmentid%3D195914%26amp%3Bd%3D1511339578&hash=5d086d20169276d681619a96ae85fe90)
-
Необязательно :) Но корректно работать точно не сможет ;)
-
действительно, когда доходит до конца, то начинает с начала
но вот такой dxf AutoCAD убъёт
0
SECTION
2
HEADER
9
$HANDSEED
5
FFFFFFFFFFFFFFFF
0
ENDSEC
0
SECTION
2
ENTITIES
0
ENDSEC
0
EOF
-
но вот такой dxf AutoCAD убъёт
Ну если есть желание получить Fatal Error в AutoCAD, то есть масса способов. Но какое это имеет отношение к данной теме???
-
Но какое это имеет отношение к данной теме???
handle меняется при загрузке некоторых dxf - если в них нет $ACADVER, то handle может назначатся заново
-
handle меняется при загрузке некоторых dxf - если в них нет $ACADVER, то handle может назначатся заново
В теме есть хоть слово про dxf?