|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Попытался сделать автоматическое составление спецификации по
Москва
Регистрация: 06.07.2006
Сообщений: 42
|
||
Просмотров: 16927
|
|
||||
Регистрация: 06.07.2006
Москва
Сообщений: 42
|
Я поясню:
Необходимое мне описание должно иметь как минимум, два поля: "Обозначение" и "Количество". Еще желательно "Наименование". Количество строк - переменное для каждого блока, смотря сколько позиций он в себя включает. Например: Код:
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Попытки создавать спецификации на основе подсчета блоков принципиально неверные. Пригодны для ограниченных, частных случаев - там, где можно обойтись только блоками. Например, для планировок технологического оборудования. Но и там, стоит только нарисовать оборудование не "правильным" блоком, а "квадратиком", или посторонним блоком - все насмарку.
Подсчет "количества" - дело самое простое. Примеры этого всегда входили в Автокад - планчик офиса с компьютерами. Сложности в ведении базы оборудования и изделий. Основные трудозатраты получаются не в подсчетах, а в формировании документов, написании точных и длинных "формулировок". |
|||
![]() |
|
||||
Регистрация: 06.07.2006
Москва
Сообщений: 42
|
ShaggyDoc, я с вами полностью согласен.
Вилы хотя бы в том, что блок можно разбить!... (Не то, что можно, а даже временами нужно, и это будет происходить с частичной потерей информации). На данный момент я иду на компромисс '"кривость" реализации' / 'легкость реализации', если своими словами. Количество блоков мне считать не нужно. Мне нужно считывать приаттаченную к ним информацию. В технологии присваивания и хранения этой информации у меня и вопрос. [/quote] |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
А приаттачивать надо не посредством атрибутов, а в виде расширенных данных, которые можно присоединить к любому примитиву. Причем, в расширенных данных не само описание изделия, а только ссылка на его характеристики (лучше в БД, хотя это могут быть и любые файлы).
Тогда разработка программы заключается в том, как удобнее выбрать из БД нужную позицию - возможно, из тысяч. Как вести эту БД, формировать документ. В какой момент присоединять данные - можно специальными программами в момент рисования изделия примитивами, а можно в любой момент, путем указания любого примитива. Для самого присоединения достаточно сделать тройку функций - прикремить, прочитать, удалить. В программе вызов наподобие Код:
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Полность согласен с ShaggyDoc. Похожий вариант разрабатывали здесь http://www.autocad.ru/cgi-bin/f1/boa...31596eW&page=1 Почитай, думаю найдешь много для себя полезного. Там данные хранятся в словарях. Сами ф-ции опубликованы, начиная с поста
VVA (2007-01-25 12:24:59) и называются DictAddToEnameByName DictGetFromEnameByName DictRemoveFromEnameByName Правда значения словарей - текст. Но можно их заменить ф-циями vlax-ldata-* либо Набор функций для хранения данных в словарях Петра Лоскутова На работе я обычно примитивы помечаю расширенными данными, чтобы можно было быстро отфильтровать через ssget [типа (ssget "X" ’((0 . "CIRCLE") (-3 ("APP1")("APP2"))))] Ф-ции добавления Расширенных Данных можешь посмотреть здесь http://www.autocad.ru/cgi-bin/f1/board.cgi?t=34219yU _add_txt_dictxd _get_txt_dictxd _del_txt_dictxd |
|||
![]() |
|
||||
Регистрация: 16.05.2005
г. Минск
Сообщений: 276
|
Если данные хранить в словарях, то они не смогут попасть в текущий чертеж при вставке блока из другого чертежа. Хранить надо либо в расширенных данных, либо в невидимых атрибутах. В атрибутах хорошо тем, что по желанию их можно отобразить и визуально осмотреть план на предмет ошибок (опечаток).
|
|||
![]() |
|
||||
Регистрация: 06.07.2006
Москва
Сообщений: 42
|
Спасибо за информацию! К сожалению, на лиспе мне делать что-то тяжело. Но я учту все вышесказанное!
Попробую аттачить данные таким способом: http://www.autocad.ru/cgi-bin/f1/board.cgi?t=28538Na А по-хорошему, потом попытаюсь сделать, как советовал ShaggyDoc. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Внешняя БД не влияет на способ присоединения дополнительных данных. Когда вообще не было никаких расширенных данных и словарей, приходилось использовать и атрибуты блоков. В версии 10. Но атрибуты - это заведомое ограничение возможностей и жесткая привязка только к блоковой технологии. А это плохо. Ссылка на запись в БД (или полная информация, что гораздо хуже) должна "быть мочь" привязанной к любому примитиву. На какие-только ухищрения не идут ради кажущейся простоты работы с блоками. Где-то в Download лежит проект вентиляции в 3D - сделан очень неплохо. Но автор каждый элемент воздуховода превращал в блок, да еще с именем, которое соответствовало полному наименованию элемента. "Сизифов труд" - ради того, чтобы потом сосчитать штуки. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Давать советы по VBA противоречит уставу моей конфессии. |
|||
![]() |
|
||||
Регистрация: 16.05.2005
г. Минск
Сообщений: 276
|
Конечно держаться не будут, так как ты цепляешь данные к ссылке на блок (BlockReference), а не к описанию блока (BlockTableRecord). Понятно, что цеплять к описанию блока нет никакого смысла. Так вот при вставке из ДЦ, ДЦ берет только описание блока, но никак ни его ссылку - в твоем случае из ДЦ брать не имеет смысла. Через драг-дроп должно работать, только блок разбить надо после вставки (блок в блоке - может ты не тот блок проверял).
|
|||
![]() |
|
||||
Регистрация: 06.07.2006
Москва
Сообщений: 42
|
Цитата:
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
>mmmx
Некоторые данные храню в гиперссылке. Думаю, что и в VBA не проблема их туда записать. На лиспе выглядит так Код:
>ShaggyDoc Цитата:
|
|||
![]() |