Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Балиев от 04-06-2022, 18:57:44

Название: xData и полилиния.
Отправлено: Балиев от 04-06-2022, 18:57:44
Добрый день,
Имеется полилиния (LWPolyline). Мне нужно "повесить" на нее несколько наборов расширенных данных в количестве равном числу сегментов полилинии. Вроде бы логично это делать присоединяя по одному набору расширенных данных к каждому сегменту (или вершине). Проблема для меня заключается в том, что я не знаю, как выделить сегмент полилинии в качестве объекта для присоединения расширенных данных (да и вообще, возможно ли это).
Заранее благодарен.
Название: Re: xData и полилиния.
Отправлено: Александр Ривилис от 04-06-2022, 19:00:54
Балиев,
Для LWPOLYLINE добавить Xdata к сегменту полилинии нельзя - сегмент не является отдельным объектом.
Название: Re: xData и полилиния.
Отправлено: avc от 04-06-2022, 19:20:44
Добавьте к данным поле с информацией об индексе сегмента и записывайте в xData полилинии столько раз, сколько сегментов с данными. Я так данные о гранях солидов храню.
Или пишите все данные массивами длинной по числу сегментов.
Название: Re: xData и полилиния.
Отправлено: Балиев от 04-06-2022, 19:32:23
Или пишите все данные массивами длинной по числу сегментов.
А разве можно в буфер массивы писать?
Название: Re: xData и полилиния.
Отправлено: avc от 04-06-2022, 19:40:24
Бинарные данные или строки csv
Название: Re: xData и полилиния.
Отправлено: Александр Ривилис от 04-06-2022, 19:54:31
Балиев,
Если вершин много (например, несколько сотен или тысяч) очень просто выйти за пределы 16K
Название: Re: xData и полилиния.
Отправлено: Балиев от 04-06-2022, 20:15:58
Балиев,
Если вершин много (например, несколько сотен или тысяч) очень просто выйти за пределы 16K
Вершин предполагается не так много - не более 20-25. К сожалению, по иным причинам нельзя использовать Polyline3D, которые, похоже, позволяют использовать вершины для привязки к ним расширенных данных.
А нельзя ли к одному объекту привязать несколько наборов xData? Вроде бы буфера различаются друг от друга по имени приложения, тогда что мешает?
Название: Re: xData и полилиния.
Отправлено: Александр Ривилис от 04-06-2022, 20:18:25
А нельзя ли к одному объекту привязать несколько наборов xData?
Нет конечно.
Название: Re: xData и полилиния.
Отправлено: avc от 04-06-2022, 22:23:40
А нельзя ли к одному объекту привязать несколько наборов xData? Вроде бы буфера различаются друг от друга по имени приложения, тогда что мешает?
Мешает ограничение на суммарный объем данных xData одного объекта. xData одного объекта один на все приложения.
Но не обязательно же в xData данные хранить. Можно ж создать свой словарь и хранить сколько угодно записей xRecord, связывать с любыми объектами. Там уже нет жестких ограничений по объему данных. да хоть в отдельном файле данные хранить. Или в базе данных. sqlite и т.п. У меня уже 15 лет работает плагин, который все данные в MS SQL хранит, а в чертежах в xdata только номер записи. В переделах одной компании - годное решение. А посторонние инженеры все равно без вашего плагина не прочитают xData.
Название: Re: xData и полилиния.
Отправлено: Балиев от 04-06-2022, 22:54:05
Можно ж создать свой словарь и хранить сколько угодно записей xRecord, связывать с любыми объектами.
А где об этом можно почитать, не подскажете?
Название: Re: xData и полилиния.
Отправлено: Александр Ривилис от 04-06-2022, 22:58:14
К сожалению, по иным причинам нельзя использовать 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
Название: Re: xData и полилиния.
Отправлено: Балиев от 04-06-2022, 23:21:11
К сожалению, по иным причинам нельзя использовать 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 (насколько я понимаю, объекты именно этого класса могут служить для привязки к расширенным данным). Может, конечно, плохо искал или что-то не так понимаю...
Название: Re: xData и полилиния.
Отправлено: Александр Ривилис от 04-06-2022, 23:25:38
А в Polyline2d пользователь может интерактивно добавлять вершины?
Да.
И потом я не нашел класса PolylineVertex2d (насколько я понимаю, объекты именно этого класса могут служить для привязки к расширенным данным).
Этот класс называется Vertex2d.
P.S.: Еще раз обращаю внимание, что возможна конвертация Polyline2d в Polyline с потерей всех Xdata.
Название: Re: xData и полилиния.
Отправлено: Балиев от 05-06-2022, 11:17:07
Этот класс называется Vertex2d.
P.S.: Еще раз обращаю внимание, что возможна конвертация Polyline2d в Polyline с потерей всех Xdata.
Спасибо! Насчет конвертации я понял.