| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
16.05.2007, 09:18 | #1 | |
Попытался сделать автоматическое составление спецификации по
Москва
Регистрация: 06.07.2006
Сообщений: 42
|
||
Просмотров: 16505
|
|
||||
Регистрация: 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,381
|
Попытки создавать спецификации на основе подсчета блоков принципиально неверные. Пригодны для ограниченных, частных случаев - там, где можно обойтись только блоками. Например, для планировок технологического оборудования. Но и там, стоит только нарисовать оборудование не "правильным" блоком, а "квадратиком", или посторонним блоком - все насмарку.
Подсчет "количества" - дело самое простое. Примеры этого всегда входили в Автокад - планчик офиса с компьютерами. Сложности в ведении базы оборудования и изделий. Основные трудозатраты получаются не в подсчетах, а в формировании документов, написании точных и длинных "формулировок". |
|||
|
||||
Регистрация: 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,381
|
А приаттачивать надо не посредством атрибутов, а в виде расширенных данных, которые можно присоединить к любому примитиву. Причем, в расширенных данных не само описание изделия, а только ссылка на его характеристики (лучше в БД, хотя это могут быть и любые файлы).
Тогда разработка программы заключается в том, как удобнее выбрать из БД нужную позицию - возможно, из тысяч. Как вести эту БД, формировать документ. В какой момент присоединять данные - можно специальными программами в момент рисования изделия примитивами, а можно в любой момент, путем указания любого примитива. Для самого присоединения достаточно сделать тройку функций - прикремить, прочитать, удалить. В программе вызов наподобие Код:
|
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Полность согласен с 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,381
|
Цитата:
Внешняя БД не влияет на способ присоединения дополнительных данных. Когда вообще не было никаких расширенных данных и словарей, приходилось использовать и атрибуты блоков. В версии 10. Но атрибуты - это заведомое ограничение возможностей и жесткая привязка только к блоковой технологии. А это плохо. Ссылка на запись в БД (или полная информация, что гораздо хуже) должна "быть мочь" привязанной к любому примитиву. На какие-только ухищрения не идут ради кажущейся простоты работы с блоками. Где-то в Download лежит проект вентиляции в 3D - сделан очень неплохо. Но автор каждый элемент воздуховода превращал в блок, да еще с именем, которое соответствовало полному наименованию элемента. "Сизифов труд" - ради того, чтобы потом сосчитать штуки. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Давать советы по VBA противоречит уставу моей конфессии. |
|||
|
||||
Регистрация: 16.05.2005
г. Минск
Сообщений: 276
|
Конечно держаться не будут, так как ты цепляешь данные к ссылке на блок (BlockReference), а не к описанию блока (BlockTableRecord). Понятно, что цеплять к описанию блока нет никакого смысла. Так вот при вставке из ДЦ, ДЦ берет только описание блока, но никак ни его ссылку - в твоем случае из ДЦ брать не имеет смысла. Через драг-дроп должно работать, только блок разбить надо после вставки (блок в блоке - может ты не тот блок проверял).
|
|||
|
||||
Регистрация: 06.07.2006
Москва
Сообщений: 42
|
Цитата:
|
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
>mmmx
Некоторые данные храню в гиперссылке. Думаю, что и в VBA не проблема их туда записать. На лиспе выглядит так Код:
>ShaggyDoc Цитата:
|
|||
|
||||
Регистрация: 06.07.2006
Москва
Сообщений: 42
|
В общем, когда-то мне уважаемый kpblc помог с доступом к комментарию блока. Технически оказалось проще решить все через AcadBlockReference. А чем это грозит, я тогда не понял... Теперь, чтобы данные держались при вставке блока в другой чертеж (дизайн центром или дропом из файла) мне нужно переделать эту процедуру в соответствии с замечанием VetalBY:
Цитата:
Код:
|
|||
|
||||
Регистрация: 16.05.2005
г. Минск
Сообщений: 276
|
это мы уже все скоро запутаемся. Комментарий как раз таки и цепляется к описанию блока и ДЦ его нормально перетаскивается. Только я никак не пойму, как можно использовать такую информацию для спецификаций? Каждый блок имеет в чертеже только одну вставку (BlockReference или INSERT) что ли?
Мне показалось, что ты не совсем понимаешь, что такое описание блока (BlockDefinition) и его вставка (BlockReference или INSERT). Описание блока оно одно в файле, но ссылок на этот блок может быть несколько в этом же файле. К BlockReference по-моему нет возможности прикрепить комментарий... Короче нужна более четкая постановка задачи, имхо. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Продвигаю свою идею - хранить данные в гиперссылке как наименее трудоемкую. К сожалению с VBA не работаю, но про гиперссылки на VBA нашел эти примеры
http://discussion.autodesk.com/threa...hreadID=569748 http://www.autocad.ru/cgi-bin/f1/board.cgi?t=34298ea И храни свою базу в URLDescription каждого вхождения блока в чертеже (INSERT) |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Вот примерчик из helpa как задать URLDescription объетку
Код:
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Гиперссылки для таких целей, в принципе, использовать можно. Но это плохо:
1. Они доступны для ручной правки, а значит, могут быть (и будут) попорчены. 2. Кто-то использует их и по прямому назначению. Только не надо думать, что если вы этим не пользуетесь, так и никто больше не применяет. 3. У гиперссылки есть "база", которая может к ссылке добавляться. Она также доступна и может все испортить. Гораздо проще раз и навсегда научиться привязывать данные - пригодится много раз. Разумеется, не к определению блока, а к вставке. Одно и то же определение блока при вставке может быть связано с разными записями БД. Иначе - тупик. Сколько типоразмеров и модификаций изделий - столько и определений блока. А если у оборудования изменилось название, ТУ или еще что? Менять во всех определениях блока во всех чертежах, куда их наперетаскивали? Причем блок - только частный случай, а привязка должна быть к любому примитиву, который захочется специфицировать. Приходилось использовать гиперссылки для БД таким образом: 1. У примитивов были привязанные скрытые ссылки на записи в БД. 2. Для размещения в интернете генерировались тысячи DWF-файлов (план города). При этом перед созданием DWF к примитиву, из расширенных данных, привязывалась гиперссылка. 3. При просмотре DWF в Интернет щелчок по объекту заставлял работать гиперссылку. При этом в браузер выводилась информация об объекте. |
|||
|
||||
Регистрация: 06.07.2006
Москва
Сообщений: 42
|
VVA, Shaggy Doc: пока с гиперссылками подожду, оставлю этот вариант на крайний случай.
А также: мне не нужно привязать описание к конкретной вставке блока. Поясняю: Постановка задачи: Имеются файлы с изображениями: шкафы, монтажные платы для них, различные аппараты, на них устанавливаемые, и всевозможные аксессуары. Папка с этими файлами открыта в Дизайн Центре. Я вытягиваю нужный мне шкаф, и начинаю его компоновать, устанавливая нужную монтажную плату, на нее, в свою очередь, нужный аппарат, и так далее. Шкаф состоит из рамы, боковых и верхней панели, рым-болтов. Если на чертеже три шкафа, то соответственно, все эти компоненты шкафа имеются в тройном размере. Таким образом, спецификация должна быть привязана к описанию блока, а не к его конкретной вставке. VetalBY, аналогично с Comments, работает и Xdata, ту же функцию нетрудно переделать: Код:
Цитата:
|
|||
|
||||
Регистрация: 16.05.2005
г. Минск
Сообщений: 276
|
Цитата:
Цитата:
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Такая постановка - перетаскивание из DesignCenter принципиально неверна.
DesignCenter - это для "блондинок" (жгучие брюнеты, не обижайтесь). Это средство "малой механизации", для небольшого облегчения ручной работы. Работа все равно остается ручной. Для ручной работы можно придумать множество вариантов микроскопического улучшения (ломик, полиспаст, "эх, дубинушка, ухнем"). Все равно это ручной труд. Привязка данных к объектам, притаскиваемых откуда-то бессмысленна. Ну, если "конечно, хочется хорошенько помучиться" (как говорил тов. Сухов) - пробуйте. Радикального результата, сопоставимого с затраченными усилиями не будет. |
|||
|
||||
Регистрация: 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,381
|
Цитата:
Системы строятся не так. У них разная идеология в реализациях, но никак не такая. Например, сведения об изделиях (не только для спецификации, но и например, для расчетов) хранятся в базе данных. Объект создается по данным из базы. В "продвинутых" системах (АДТ, ABS и т.п.) это вообще специальный вид примитивов. В более простых - это стандартные примитивы Автокада, но связанные с базой данных. Блоки также могут использоваться, но как частный случай примитива. Если щит на плане здания можно изобразить блоком, то трубопроводы, проводники, крепления и тысячи других мелочей - не получится. А именно с ними проблема, а не с подсчтетом, например, количества колес на сборочном чертеже автомобиля. |
|||
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Цитата:
|
|||
|
||||
Регистрация: 06.07.2006
Москва
Сообщений: 42
|
Цитата:
Зато у меня уже есть своя база блоков, которые мне достаточно просто обработать (добавить спецификацию или ссылку на запись в БД, и сделать эти блоки неразбиваемыми, чтобы исключить эту опасность). Вот вобщем-то и весь вопрос. Перерисовывать все хозяйство автокадовскими 3Д-телами я не стану, с учетом того, что рисовать трехмерку в акаде - это ношение воды в решете. |
|||
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Цитата:
Цитата:
Цитата:
|
|||
|
||||
Регистрация: 21.03.2007
Санкт-Петербург
Сообщений: 2,662
|
Поностью согласен с Евгением А, 3Д-моделирование более объектно-риентировано. Здесь можно извлекать данные объектов и использовать их в спецификациях не заморачиваясь с блоками которые являются всё-таки уникальными объектами и набор характеристик ограничен. В 3-х мерке руки больше развязаны. На примере ADT все вышеперечисленные ухищрения со спецификациями забавно смотрятся. Хотя в то-же время лёгкость создания спецификаций, накладывает условия создания практически всех элементов конструкции без упрощения, но от этого тоже есть польза - меньше ошибок.
|
|||
|
||||
Регистрация: 06.07.2006
Москва
Сообщений: 42
|
Цитата:
Цитата:
Вы на турбо паскале программировали? А почему перешли на дельфи? В чем их отличия? Отличие, в частности - в "визуальности" программирования. Для меня рабочая цель - сделать спецификацию. Так и я, могу составлять спецификацию проекта по каталогам, каждый раз выискивая заказной номер всех деталей, по сути, составляющих одни и те же сборки... А могу делать это визуально, просто собирать как конструктор. И сборки заготовить заранее, присвоив им весь список их составляющих. Для моих целей это вполне осуществимо, поверьте. Велосипеда каждый раз не изобретаем, все детали стандартные. |
|||
|
||||
Регистрация: 07.12.2010
Уфа
Сообщений: 425
|
Подождите обвинять в некрофилии!
Пролог. С 2007 прошло уже почти 5 лет. Многое изменилось в этом мире в целом и в автокаде в частности. На смену просто блокам (тогда и это была диковинка), пришли динамические блоки (хотя и статические никуда не делись), а также "атрибуты" и "таблица блоков". Основная часть. Идея. 1. Создание "правильных" блоков (то что может сделать каждый). Создаем блок и восемь атрибутов в нем. Имена атрибутов могут быть разными - это не принципиально. Важно, чтобы в "таблице блоков" для этих атрибутов записывалась нужная информация. Первый атрибут это классификация блока ("Оборудование", "Изделия и материалы", "Кабели, провода, шнуры и шины", "итд"). По этому атрибуту блоки будут сортироваться. Второй - шестой атрибуты это 2-6 столбцы в спецификации ("наименование....", "тип, марка...", "Код оборудования.....", "Завод-изготовитель", "Единица измерения"). Седьмой, восьмой атрибуты это восьмой и девятый столбцы спецификации. Создали блок, заполнили атрибуты. 2. Программа (вот тут уже не каждый может). Запускаем программу. Выделяем рамочкой область подсчета. Программа сама определяет блоки и начинает их сравнивать. И считает количество блоков, у которых атрибуты №№2,3,4 и 5 одинаковые. Далее раскладывает блоки по значению первого атрибута - "оборудование" к "оборудованию", "изделия..." к "изделиям....". 3. Финальная часть программы. Создание таблички в автокаде. Табличка стандартная - спецификация по ГОСТу. Заполнение таблицы делает сама программа. Точку вставки (левый верхний угол) задает пользователь. 4. Улучшение программы. После того как она будет считать блоки и делать спецификацию в одном файле можно расширить область действия несколькими файлами. Эпилог. Прошли те времена когда машина пользовала человека. |
|||
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
Чистой воды!!!
Старался, старался 5 (пять) лет назад ShaggyDoc в этой и других темах образумить... Взгляните хотя бы п.33 http://forum.dwg.ru/showthread.php?t=25650 И почувствуйте разницу! Но всё повторяется заново. Наберите в Поиске "спецификация оборудования" и посмотрите сколько копий было сломано, сколько вариантов предложено. А тут опять блок со значащим атрибутом... Не хочется повторяться...
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
|
||||
Регистрация: 07.12.2010
Уфа
Сообщений: 425
|
в п.33 (да и вся тема) не то что я хочу.
КЖ, КМ, ОВ, ВК - это старое, очень глубоко вспаханное и широко засеянное поле. Мне же хотелось некоторую автоматизацию в среде ОПС и СКС (можно еще и ЭОМ). То что сейчас предлагается Нанософтом или другими прикладными программами под автокад - это не совсем то, что нужно. з.ы. поискал "спецификация оборудования" Нашел вот эту тему http://forum.dwg.ru/showthread.php?t=42615 без какого-либо логического завершения. И несколько других не имеющих отношения к автоматизации данного процесса. з.з.ы. и почему блок со значащим атрибутом плох? Последний раз редактировалось Alexeipost, 19.06.2012 в 20:16. |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Alexeipost
Цитата:
Примерно то что описано в 38 посте приминительно к ОПС есть у меня в зкаде, только без сортировки внутри разделов и без указания точки вставки для таблицы (но это от лени)) ) http://forum.dwg.ru/attachment.php?a...0&d=1268694038 Последний раз редактировалось zamtmn, 20.06.2012 в 09:27. |
|||