Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Балиев от 04-06-2022, 18:57:44
-
Добрый день,
Имеется полилиния (LWPolyline). Мне нужно "повесить" на нее несколько наборов расширенных данных в количестве равном числу сегментов полилинии. Вроде бы логично это делать присоединяя по одному набору расширенных данных к каждому сегменту (или вершине). Проблема для меня заключается в том, что я не знаю, как выделить сегмент полилинии в качестве объекта для присоединения расширенных данных (да и вообще, возможно ли это).
Заранее благодарен.
-
Балиев,
Для LWPOLYLINE добавить Xdata к сегменту полилинии нельзя - сегмент не является отдельным объектом.
-
Добавьте к данным поле с информацией об индексе сегмента и записывайте в xData полилинии столько раз, сколько сегментов с данными. Я так данные о гранях солидов храню.
Или пишите все данные массивами длинной по числу сегментов.
-
Или пишите все данные массивами длинной по числу сегментов.
А разве можно в буфер массивы писать?
-
Бинарные данные или строки csv
-
Балиев,
Если вершин много (например, несколько сотен или тысяч) очень просто выйти за пределы 16K
-
Балиев,
Если вершин много (например, несколько сотен или тысяч) очень просто выйти за пределы 16K
Вершин предполагается не так много - не более 20-25. К сожалению, по иным причинам нельзя использовать Polyline3D, которые, похоже, позволяют использовать вершины для привязки к ним расширенных данных.
А нельзя ли к одному объекту привязать несколько наборов xData? Вроде бы буфера различаются друг от друга по имени приложения, тогда что мешает?
-
А нельзя ли к одному объекту привязать несколько наборов xData?
Нет конечно.
-
А нельзя ли к одному объекту привязать несколько наборов xData? Вроде бы буфера различаются друг от друга по имени приложения, тогда что мешает?
Мешает ограничение на суммарный объем данных xData одного объекта. xData одного объекта один на все приложения.
Но не обязательно же в xData данные хранить. Можно ж создать свой словарь и хранить сколько угодно записей xRecord, связывать с любыми объектами. Там уже нет жестких ограничений по объему данных. да хоть в отдельном файле данные хранить. Или в базе данных. sqlite и т.п. У меня уже 15 лет работает плагин, который все данные в MS SQL хранит, а в чертежах в xdata только номер записи. В переделах одной компании - годное решение. А посторонние инженеры все равно без вашего плагина не прочитают xData.
-
Можно ж создать свой словарь и хранить сколько угодно записей xRecord, связывать с любыми объектами.
А где об этом можно почитать, не подскажете?
-
К сожалению, по иным причинам нельзя использовать Polyline3D, которые, похоже, позволяют использовать вершины для привязки к ним расширенных данных.
А Polyline2d? Единственная возможная проблема - конвертация Polyline2d в Polyline, которая может произойти даже при открытии чертежа: https://knowledge.autodesk.com/ru/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2018/RUS/AutoCAD-Core/files/GUID-F6027128-2707-4BBE-A0A4-C757435D4874-htm.html
-
К сожалению, по иным причинам нельзя использовать Polyline3D, которые, похоже, позволяют использовать вершины для привязки к ним расширенных данных.
А Polyline2d? Единственная возможная проблема - конвертация Polyline2d в Polyline, которая может произойти даже при открытии чертежа: https://knowledge.autodesk.com/ru/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2018/RUS/AutoCAD-Core/files/GUID-F6027128-2707-4BBE-A0A4-C757435D4874-htm.html
А в Polyline2d пользователь может интерактивно добавлять вершины? И потом я не нашел класса PolylineVertex2d (насколько я понимаю, объекты именно этого класса могут служить для привязки к расширенным данным). Может, конечно, плохо искал или что-то не так понимаю...
-
А в Polyline2d пользователь может интерактивно добавлять вершины?
Да.
И потом я не нашел класса PolylineVertex2d (насколько я понимаю, объекты именно этого класса могут служить для привязки к расширенным данным).
Этот класс называется Vertex2d.
P.S.: Еще раз обращаю внимание, что возможна конвертация Polyline2d в Polyline с потерей всех Xdata.
-
Этот класс называется Vertex2d.
P.S.: Еще раз обращаю внимание, что возможна конвертация Polyline2d в Polyline с потерей всех Xdata.
Спасибо! Насчет конвертации я понял.