|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
По поводу использования LDATA (т.е. vlax-ldata-put/vlax-ldata-get). Не рекомендую ими пользоваться тем, кто собирается программировать не только на VisualLisp. Средства ObjectARX/AutoCAD .NET API не работают с такими данными. Точнее работа с такими данными совсем не документирована, используется пользовательский класс объекта vlo_VL, у которого нет публичного API. Если копнуть в глубину, то это выглядит так:
![]()
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Цитата:
Допустим, эта задача - определять в Автокаде графические элементы как объекты реальности и описывать их характеристики. Про XData недавно в целом представил, как с ними сделать соответствующие программы для пользователей. Про XRecord пока нет.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
Цитата:
Необходимо не так много возможностей: создания определений нужных записей, редактирования определений, удаления определений, просмотра записей, ввода значений в записи. Или только кажется, что нужно немногое? Во-первых, если бы не вы - программисты, то я бы даже не подозревал о многих возможностях в Автокаде, например, о существовании расширенных данных. Во-вторых, только так можно определить степень реализуемости задачи. Нужно определить расширяемость решения, перспективность решения. Ну, и т.д. Да и далеко не все доступные программисты знают Автокад.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
Цитата:
В любом случае создать LDATA (т.е. выполнить аналог vlax-ldata-put) средствами ObjectARX врядли удастся.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
ru-dictvar-clear-all ru-dictvar-clear-data ru-dictvar-about-dlg ru-dictvar-copyright-data _ru-dictvar-add-new-dict _ru-dictvar-add-new-var-name _ru-dictvar-clear-value _ru-dictvar-copyright _ru-dictvar-gen-var-list _ru-dictvar-get-copyright _ru-dictvar-get-dict _ru-dictvar-get-sym _ru-dictvar-list-to-pickset _ru-dictvar-name _ru-dictvar-pickset-to-list _ru-dictvar-regen-var-list _ru-dictvar-remove-var _ru-dictvar-set-var-data ru-dictvar-get-data ru-dictvar-list-all-var ru-dictvar-set-data ru-xrecord-add ru-xrecord-delete ru-xrecord-get ru-xrecord-rebuild ru-xdata-add-for-ent ru-xdata-add-list-bracket ru-xdata-write-for-ent ru-xdata-get-for-pline-vertex ru-xdata-get-reg-apps ru-xdata-get-ruclass-by-layer-name ru-xdata-get-ruclass-for-active-layer ru-xdata-get-ruclass-for-all-layers ru-xdata-get-ruclass-for-layer-obj ru-xdata-read-for-ent ru-xdata-rem-for-selection ru-3d-xdata-rucad-regapp ru-xdata-rucad-regapp Тут "тщательнЕе надо, тщательнЕе" (С) |
|||
![]() |
|
||||
Цитата:
16 кб - в принципе немало. 160 полей по 100 символов. Тем не менее ограничение объема в 16 кб (а Сергей812 считает, что реально в 1 кб) все-таки для общего случая кажется рискованным. По поводу XRecord мне еще не понятно, из чего состоит из собственное описание, какие у них есть возможности и ограничения, и что ими можно определить. ----- добавлено через ~5 мин. ----- Согласен. В нашем сделанном под Map варианте получилось до 50 команд-программок - для полноценного решения без полноты, разнообразия возможностей не обойтись.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Цитата:
Ограничений по объему практически никаких. Ограничение на длину строки для строковых и битовых данных - 255 байт. Можно в нём хранить строки, целые и плавающие числа, точки, имена других объектов, битовые поля. Структуру определяешь сам.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
1Кб - Не ограничение, а рекомендация от Kean Walmsley. Если переводить #14:
xData хороши для объема данных около 1Кб, а если нужно больше - то рекомендую использовать ExtDicts + XRecords. Так как слишком велик риск использования расширенных данных для большего объема (более 1 кб/приложение). |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
еще пару ссылок
http://books.google.by/books?id=nByA...page&q&f=false http://autolisp.ru/2012/04/06/dictionaries/
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Цитата:
Еще интересно влияние расширенных данных на скорость работы Автокада. Ведь может же быть, что РД меньше влияют на скорость, чем аналогичные объемом графические данные? Сейчас сделал эксперимент: создал полилинию, присоединил к ней с помощью XDATA.lsp из Express Tools расширенные данные в 30 символьных полей по 100 символов. Размножил этот элемент до 10000 штук. Сделал аналогичную полилинию в другом файле, и размножил ее до 10000 штук. В файле с XData должно быть 10 000*30*100=30 000 000 байт занято РД. Это 30 мб? (Умею считать как топограф, но не как программист ![]() Размер файла с аналогичными элементами, но без XData - 700 кб. Т.е. файлы различаются всего на 0.5 мб. Остальные 29.5 мб РД куда делись? Как-то оптимизировались за счет полной их одинаковости? Или свернулись за счет какого-нибудь "шестнадцатеричного представления"? Кроме того, XDLIST.lsp время от времени выдавал, что у одного элемента с этими РД свободно примерно 13 кб, то пишет, что свободно 10 кб. Эти 3 кб разницы индикации свободного места в РД откуда берутся? Чаще 10 кб. Может быть Kean Walmsley что-то подобное имел в виду? Кстати, на моей машине время выделения всех элементов что в файле с РД, что в файле без РД одинаковое - 20 секунд. Файлы для интереса приложил.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
АлексЮстасу, dwg является не только закрытым (то бишь проприетарным) форматом, но еще и архивом в некоторой степени. Ты попробуй сохранять не в dwg, а в dxf версии "пораньше" - и только потом выполняй сравнение.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Мое представление о местах в чертеже, где можно сохранять неграфическую информацию (может быть, поможет Вам разобраться в этом):
1. XDATA, расширенные данные: + Есть инструменты в Express Tools для их просмотра и редактирования + При создании копии объекта, копируется вместе с ним. + Можно использовать эти данные в фильтре выбора объектов с помощью SSGET + Может содержать данные, которые модифицируются вместе с объектом встроенными средствами - насколько я помню, пересчитываются данные под определенными кодами в зависимости от поворота или масштаба объекта. - Ограничение по размеру - При добавлении нужно регистрировать приложение, с которым связываются данные, что вызывает ряд дополнительных сложностей. Назначение: хранение небольших по объему данных с заранее известным объемом. Например - идентификатор связанной с объектом записи во внешней базе данных, точка для дополнительной геометрии объекта при переопределении его отрисовки и т.п. Использую только для тех объектов, которые создаются моими приложениями. То есть, я точно знаю, что они не содержат других расширенных данных. 2. Object Extension Dictionary, словарь расширения объекта. Принадлежит конкретному объекту чертежа. Может содержать как вложенные словари, так и записи в виде XRECORD. + Нет ощутимых ограничений по объему - Не имеет возможностей XDATA. Назначение: хранение данных об объекте, размер которых может изменяться. Например - коллекции точек, текстовые описания и т.п. 3. Named Object Dictionary, NOD, словарь именованных объектов чертежа. Один единственный на весь чертеж. Может содержать как вложенные словари, так и записи в виде XRECORD. + Нет ощутимых ограничений по объему - В нем изначально уже есть много словарей, созданных программистами Autodesk, поэтому, нужно быть аккуратным и не нарушить в нем ничего. Назначение: централизованное хранение информации об объектах чертежа, хранение не связанной с объектами чертежа информации.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) Последний раз редактировалось Do$, 07.10.2014 в 12:12. |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
----- добавлено через ~9 ч. ----- И еще представьте вариант - вам нужно скопировать свойства с объекта с одного чертежа на объект на другом чертеже - будете жонглировать чертежами? |
|||
![]() |
|
||||
1. Можно без ограничений ввести в XData строковое поле с длиной больше 255. Пробовал и 257, и 270, и 300 символов. Пробовал с помощью XDATA.lsp из Express Tools. И XDLIST.lsp подтверждала, что такие строки без обрезания созданы. Сохранял-открывал - поля с длиной больше 255 символов сохранялись со всем содержимым.
И только Audit их обрезал до 255 ![]() 2. Создал XData с 20-ю строками по 250 символов в каждой. Т.е. занял 5 кб. А XDLIST сообщает: Цитата:
Добавил еще 20 строк по 250 символов. Т.е. в сумме данные составили 10 кб. Сообщили: Цитата:
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Цитата:
Сохранил те файлы по совету Кулик Алексей aka kpblc в dxf: без XData - 4 мб, с XData - 36 мб. Из них 30 мб - содержание XData, на "накладные" остается 2 мб. Если реальные издержки XData составляют примерно 7%, то чем объяснить удвоение расходов допустимого объема, показываемого XDATA.lsp и XDLIST.lsp? Там не просто сообщается о большем, чем занято объеме, но и отказывается присоединять еще данные. Косяки XDATA.lsp и XDLIST.lsp? Или еще что-то?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автокад 2010 виснит намертво при сохранении файла | LenaE | AutoCAD | 18 | 04.05.2020 12:59 |
Автокад тормозит при копировании | Борисыч123 | AutoCAD | 35 | 18.11.2019 09:29 |
При добавлении XData, блок перестает редактироваться командой _REFEDIT | oktilon | Программирование | 1 | 05.11.2011 09:43 |
Размещение здания на участке под коммерческое использование, расстояние к границе участка | ValenDz | Архитектура | 13 | 27.02.2011 13:42 |
Ищу способы упрощения работы с XData (расширенными данными) в VBA, Lisp | RasRuf | LISP | 1 | 29.01.2009 10:55 |