Анкерные системы Schöck Dorn
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > План кабельных сетей - алгоритм автоматизации построения и программирование?

План кабельных сетей - алгоритм автоматизации построения и программирование?

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 20.09.2010, 11:59 4 |
План кабельных сетей - алгоритм автоматизации построения и программирование?
Frigate
 
КИП, АСУ ТП, слаботочка
 
Москва-Тюмень
Регистрация: 02.09.2010
Сообщений: 408

Frigate вне форума Вставить имя

Добрый день, коллеги!


Программу ADV_Toolkit ver 1.1 вы можете скачать внизу этого сообщения.

Ниже я оставлю свой первоначальный первый пост. Даже самому интересно, как я вначале рассуждал, как шел к созданию уже вполне взрослой программы.

ПЕРВОНАЧАЛЬНЫЙ МОЙ ПОСТ===============================
Занимаюсь КИП и решил постепенно автоматизировать рутинные процессы проектирования.
Нужно: автоматизировать некоторые моменты создания плана кабельных сетей.
Дано: план эстакад, который берем у электриков. Таким образом, графическое представление плана трасс есть. На плане есть много позиций (блок-боксы, здания, площадки технологические), от которых кидаем кабель. ТО, что внутри площадок и блок-боксов нас пока не интересует - это делаем отдельными комплектами, попозиционно.
Итак, к примеру, от позиции 1 надо проложить 5 кабелей с маркировкой С1-1-1...С1-1-5 по уже имеющимся эстакадам (линиям).

Конкретика - что нужно получить в результате: щелкнуть в плане кабельных сетей на любой точке на линии, обозначающей трассы, и получить список (list) кабелей, проходящих через данную точку (табличку с номерами кабелей смогу и сам нарисовать, надеюсь :-) ). Для проверки нужна возможность включить отображение трассировки любого из кабелей, которые будут использоваться в проекте.

Отсюда и сам вопрос - как это можно реализовать? При помощи чего? Ну а потом уже буду пытаться это сделать, надеясь на вашу помощь.


Была сначала такая идея:
по имеющемуся плану кабельных сетей мышкой прощелкать все узлы (повороты, начало и конец) трассы, например, от позиции 1 до позиции 15 (в позиции 15 будет операторная, где стоят шкафы АСУ). Автокад должен запомнить трассу (напр., по указанным узловым точкам построить полилинию и ассоциировать ее с определенным номером кабеля (напр., С1-1-1), т.е она должна будет обозначать трассировку кабеля на плане.
Сначала хотел создать блок, напр. cable-trace с атрибутом - номером кабеля. В этот блок программно включить полилинию, обозначающую трассу. Но потом уже дошло :-) что полилиния, обозначающая трассировку кабеля С1-1-1 включится во все вхождения блока, а это уже мягко говоря не то ))). Вот и сижу пока в тупике, пытаюсь придумать другие варианты.

Буду рад идеям знающих

Сразу хочу сказать, что в "САПРе на базе Автокад" этого не нашел, хотя может плохо искал...

КОНЕЦ ПЕРВОНАЧАЛЬНОГО ПОСТА=========================================

ОБНОВЛЕНИЯ:

===============================
Выкладываю релиз 1.05 ADV_CAD

Версия 1.05. Изменения:

1) При импорте БД в схему внешних выводить инфу о недостающих кабелях один раз списком/ (было – предупредительным сообщение АВТОКАДа).
2) Поменял методику расчета длины трассы при создании и редактировании добавил более понятные комментарии при трансляции баз данных и установки длин.
3) Добавил более понятные комментарии при трансляции баз данных и установке длин кабелей (вывод имен файлов, с которых была произведена трансляция, вывод имен всех файлов, с которых транслирована информация о кабелях.
4) Сделал по кнопке проверку транслированной информации – доступна из любого чертежа, не только из плана трасс.

ДОПОЛНЕНИЕ:

- исправил неверную работу программы "Редактирование трассы кабеля": при входе в программу, но досрочном выходе из нее(по указанию <Выход из программы>), изменений в базу не вносилось (так и должно быть), но сама трасса удалялась из базы данных!

необходимо заменить в скачанном архиве файл
adv-programme-cable-routings-edit-one.fas
на новый, который находится в архиве
adv-programme-cable-routings-edit-one.rar

Релиз 1.10

Все практически сделано с нуля. Так что нет особого смысла описывать изменения.
Теперь в папке с программой ЕСТЬ HELP.
Просто скопируйте к себе на комп и распакуйте архив в корневой каталог диска C:.
В HELP есть описание дальнейшей установки, которое сводится (в самом простом варианте) к загрузка fas-модуля, выполняющего настройку AutoCADа.


ADV_Toolkit ver. 1.1

Изменений много.
Основное:
- автоматическая трассировка кабеля по указанным начальной и конечной точке. Более подробно - читайте в Хелпфайле в папке ADV_CAD_HELP (эту папку еще не переименовал, оказывается ). Важно: если у вас поменялась хоть как-нибудь трасса, то для корректной автотрассировки нужно нажать кнопку "Подготовить к трассировке" в диалоговом окне создания кабелей.
- создание кабелей при помощи диалогового окна. В будущем все программы будут переведены в режим диалога. Это преследовало целью уход от указания блоков кабеля на чертеже, а выбор из списка. ТОже немного подробнее читайте в хелпе.
- немного переделал блоки, теперь длина в блок кабеля вставляется сразу с суффиксом - ВНИМАНИЕ!!!
- на подкачке стоят программы из форума - перенумерация по renum, записная книжка - по NBOOK и NBOOK1 - вызов через комстроку.
- начал работу с БД изделий, пока сделал парочку кранов-вентилей (закладные конструкции) для КИПиА - по крайней мере там. где я работал, мы часто сами учитывали закладные, иногда - технологи.

Главное - хочется, чтобы вы потестили автотрассировку. Я ее гонял во всех режимах - было все ок. Но мало ли... Ну и сам диалог создания кабелей с кучей функций, сохранением настроек диалога на время сеанса - тоже стоило непало усилий.

В общем, жду конструктивной критики и пожеланий по тем моментам, что дополнил в программе

Дополнение - подредактировал программку создания трассы по аналогу. Скачайте лисп-файл и замените им такой же в папке с прогой. Теперь работает как надо! :-)

Дополнение от 21.04.2012:
добавил программку для массовой печати чертежей. Я о ней уже писал в теме, но сейчас выкладываю новую версию, где можно выбрать и самому указать стиль печати - монохром или акад (т.е. цветной) или свой стиль. Справка - в файле readme.txt

ПРограммка - в папке PRINT FORMATS, внутри папки ADV_Toolkit. Но - может работать без проги (сделана независимой).

Дополнение от 16.05.2013:

Прога печати (в архиве PRINT FORMTS_dyn.rar) теперь с динблоком моей новой рамки (саму рамку можно подгонять как вам угодно, лишь только оставьте имя блока и атрибут FORMAT, по которому прога определяет нужный формат листа печатающего устройства.

Вложения
Тип файла: rar ADV_Toolkit_ver.1.1.rar (2.39 Мб, 1883 просмотров)
Тип файла: lsp adv-programme-cable-routings-create-by-analogue.lsp (6.3 Кб, 1189 просмотров)
Тип файла: rar PRINT FORMATS.rar (6.1 Кб, 868 просмотров)
Тип файла: rar PRINT FORMATS_dyn.rar (41.0 Кб, 544 просмотров)


Последний раз редактировалось Frigate, 16.05.2013 в 01:36.
Просмотров: 194308
 
Автор темы   Непрочитано 21.09.2010, 11:35
#21
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 408


ShaggyDoc

вы абсолютно правы, я уже выставил код, в котором чисто аналитически смотрю принадлежность точки к одному из сегментов трассы кабеля (просто проверять буду не всю полилинию трассы кабеля, а последовательно каждый сегмент между точками-узлами трассы).

вот дублирую еще раз эту функцию на проверку принадлежности точки отрезку

Код:
[Выделить все]
;|======================================================================
Функция adv_point_belongs_to_segment определяет, принадлежит ли точка pt отрезку,
заданному координатами точек p1 и p2 (p1 и p2 - списки координат)
Вызов функции: (adv_point_belongs_to_segment pt p1 p2).
Возвращаемое значение - T (если принадлежит и nil, если нет|;
(defun adv_point_belongs_to_segment (pt p1 p2 / k c flag)
 (setq k 0 c 0 flag nil)
 (setq k (/(-(cadr p2) (cadr p1)) (-(car p2) (car p1))))
 (setq c (-(cadr p1) (* k (car p1))))
  (if (= (cadr pt) (+(* k (car pt)) C))
  (setq flag T)
  );_end of if
 (PRINC flag)
);_end of defun
За формат строк в файле базы примите мою благодарность :-)

Мы, кстати, тоже почти соседи )))))

Последний раз редактировалось Frigate, 21.09.2010 в 11:46.
Frigate вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.09.2010, 11:46
#22
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,362
Отправить сообщение для zamtmn с помощью ICQ


Наведу немного критики:
Цитата:
как и предлагал ShaggyDoc, я прощелкиваю все узлы трассы одного кабеля, скажем от поз. 1 до поз. 15. Потом надо, чтобы программа запрашивала, не нужно ли и другим кабелям присвоить эту же трассу (тем кабелям, что так же идут от поз. 1 до поз. 15). Эти узловые точки сохраняются в файле текстового формата. Так же делаю по кабелям от других позиций - прощелкиваю узлы этих трасс на плане сетей. И все эти трассы сохраняются в файле, скажем в таком формате:
"№ кабеля" т1 т2 т3 ... тN, где т1 - список с координатами 2D (к примеру). Пока не работал с данными из файлов, со строками - поэтому вопросы уточнений для написания программы будут попозже, если не разберусь сам.
А есть ли разница прощелкать или прорисовать? Есть и не в пользу прощелкать: это не визуально, это нужно гдето хранить, это трудно редактировать. Я так понимаю трасса у вас линейная, без ответвлений? тогда прощелкать нужно заменить на прорисовать полилинию. Почему пользователь должен ломать голову над тем какие еще кабели проходят по этой трассе - толку от такой автоматизации = 0 - буду ошибки и уйдет уйма времени. По поводу сохранять во внешнем файле координаты - это личное дело каждого конечно, но я бы так не делал, это не тот случай.
Цитата:
Что делаем далее - опять таки прав автор небезызвестной книги - трассы совсем даже не нужно обязательно прочерчивать на плане. Единственное, нужно будет, для той же проверки хотя бы, чтоб можно было ввести номер кабеля и программа по данным из файла построила с определенным цветом на новом слое полилинию (трассу этого кабеля) по точкам-узлам.
Автор небезизвестной книги мыслит черезчур глобально, часто ГИС категориями. Не плохо, но о мелочах тоже ктото думать должен. Трассы у вас всеравно БУДУТ. отображать, не отображать вопрос второй. ИМХО трассы как набор полилиний или отрезков самый удобный выход. Выключил слой - не отображаются, включил отображаются и РЕДАКТИРУЮТСЯ штатными УДОБНЫМИ средствами автокада, без левых команд и файлов.

Моё предложение решения:
на входе имеем dwg с расставленными блоками оборудования, прочерченными возможными трассами. и таблицу что с чем и каким кабелем соединять.
далее 2 варианта
1) программа каждый кабель трассирует по трассам от и до, заполняет в таблице способ прокладки (он должен быть учтен в трассе например типом линии или слоем соответствующего участка) и длинной полученого кабеля. для каждого кабеля рисуется своя полилиния с его параметрами в xdata.
2) также как и (1) но полилинии кабелей не создаются, а в xdata примитивов трассы запоминается какие кабели прошли по этому участку

Ну и чтоб сделать выноски потоков прокладки нужно будет проанализировать все полилинии проходящие в данной точке и вытянуть из них информацию о кабелях для варианта (1) или вытягивать из примитива трассы для (2).
zamtmn вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 21.09.2010, 12:02
#23
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 408


Разница в том, чтобы прощелкивать или нет - есть. Визуализация при прощелкивании есть - пока происходит прощелкивание точки-узлы трассы помечаются блоком-меткой. Затем функцией я получаю длину трассы по этому кабелю + буду экспортировать данные трассы в файл (в том числе и длину). Далее блоки-метки удаляются с чертежа - они совсем не нужны. Объясню просто: уже есть план с нанесенными на него линиями трасс (эстакад). ПО эстакадам идут кучи кабелей электриков, связистов, ОС, ПС и тп. И все это нарисовано простыми линиями (то есть одна линия и показывает, что тут, мол, идет эстакада с кабелями). Самое удовбное для меня чтобы указать трассы (а это десятки объектов и до 20 кабелей от каждого) - это "прощелкать" их, указывая узловые точки на уже имеющихся нарисованных отрезках, изображающих эстакады . В конце концов, напишу функцию, которая будет показывать траекторию трассы, если нужно будет визуально проверить правильность ее прокладки. Вызвал функцию, ткнул в блок, в котором атрибут - номер кабеля - и получил нарисованную ярким цветом полилинию кабеля, как он идет по эстакадам.
На этом с самим планом трасс работа заканчивается. Данные о длине уже переходят либо напрямую в файл со схемой внешних соединений, либо сначала в Excel, где уже есть база данных по кабелям (чтобы их не забивать вручную, а вытаскивать из раскрывающегося списка), где суммируются все кабели одинаковых типов и жильности и составляется полуавтоматически спецификация датчиков и кабелей (последнее еще в проработке).

И самое главное, почему на этом решил остановиться, - не надо разбираться с темным пока для меня лесом расширенных данных примитивов...
Пока нужен результат и побыстрее - след. проект не за горами и к нему хочу успеть и других сотрудников отдела "подсадить" на автоматизацию некоторых моментов проектирования.

Последний раз редактировалось Frigate, 21.09.2010 в 12:19.
Frigate вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.09.2010, 12:22
#24
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,362
Отправить сообщение для zamtmn с помощью ICQ


Если меня попросят на подобном чертеже чтонибудь пощелкать или подумать какие еще кабели проходят по этойже трассе - я лучше застрелюсь. ТОЛЬКО АВТОМАТМЧЕСКАЯ ТРАССИРОВКА
Вложения
Тип файла: dwg
DWG 2004
proj_new.dwg (256.6 Кб, 4682 просмотров)
zamtmn вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.09.2010, 13:43
#25
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,542
Отправить сообщение для VVA с помощью ICQ Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Frigate Посмотреть сообщение
вот дублирую еще раз эту функцию на проверку принадлежности точки отрезку
Возьми за основу ф-цию ShaggyDoc №20.
1. Алгоритм проверенный.
2. Вычислений меньше, что влияет на скорость
ТОчка принадлежит отрезку, если сумма расстояний от начала отрезка до точки и от точки до конца отрезка равна длине отрезка с некоторой точностью
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 27.09.2010 в 16:47.
VVA вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.09.2010, 14:05
#26
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепропетровск
Сообщений: 3,569


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Если меня попросят на подобном чертеже чтонибудь пощелкать или подумать какие еще кабели проходят по этойже трассе - я лучше застрелюсь. ТОЛЬКО АВТОМАТМЧЕСКАЯ ТРАССИРОВКА
Капец просто! Это результат работы ZCAD? Или кто-то сделал "вручную"?
__________________
Кому жизнь буги-вуги, а кому полный бред... (С)
kp+ вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 21.09.2010, 14:13
#27
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 408


zamtmn

я и не спорю, что возможно лучше... Просто для нашей специфики выбранный мой вариант пока подходит больше. Но в будущем возможно и поменяю программу. Просто нужно уже что-то работающее создать. А в будущем планирую и привязку к контактам на схеме, чтобы составлялись автоматически таблицы подключения, техтребования на верхний уровень и тп.

VVA

да, думаю алгоритм более надежный, ибо кто знает, как вычислит Автокад точку - хотя проверял на разных линиях, нарисованных под разными углами.

kp+

у нас бывает и понасыщеннее схемка )))

Вот я и задумал вывески, где какой кабель идет делать автоматически - это сильно упростит рутину и даст возможность безошибочно раскладывать кабель по потокам, уже не потеряешь кабель
Frigate вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.09.2010, 14:52
#28
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,362
Отправить сообщение для zamtmn с помощью ICQ


Цитата:
Капец просто! Это результат работы ZCAD? Или кто-то сделал "вручную"?
это предок zcad. тоже куча файлов снаружи, выноски - набор примитивов. Вносить изменения в такое невозможно, проще переделать
zamtmn вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.09.2010, 14:54
#29
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепропетровск
Сообщений: 3,569


Цитата:
Сообщение от Frigate Посмотреть сообщение
... А в будущем планирую и привязку к контактам на схеме, чтобы составлялись автоматически таблицы подключения, техтребования на верхний уровень и тп....
Тогда лучше сразу реализовать это дело на AutoCad Electrical. А его результаты передавать на трассировку.

PS А почему все упорно обходят стороной ElectriCS? Потому что много денег стоит, или по другой причине?
__________________
Кому жизнь буги-вуги, а кому полный бред... (С)
kp+ вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 21.09.2010, 14:59
#30
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 408


zamtmn

все еще впереди - дойду и до автоматического создания трасс )))
Хотя пока не представляю, при помощи какого алгоритма можно заставить трассу идти от объекта-начала до объекта-конца по нарисованным линиям? МОжет подскажешь, где копать?

kp+

никто его в нашей конторе ставить не будет. Уже ставят др. систему, но в ней интересы электриков и слаботочки пока не учитываются - только 3D для технологов. И конечно же цена. А Автокад есть все версии, и не обязательно иметь лицензионную, если дома делаешь ))) Да и универсальное это будет средство - моя программка. Но ооочень полезная. А потом перейду возможно к автотрассировке.
Frigate вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.09.2010, 15:03
#31
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,362
Отправить сообщение для zamtmn с помощью ICQ


Трассы создаются вручную. автоматизировать можно только простейшие случаи, но оно того не стоит. Автоматически только раскладка кабелкй по трассам, т.е. что где пройдет решает программа по какимлибо критериям оптимальности (простейший случай - меньшая длина), возможные маршруты определяет проектировщик
zamtmn вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 21.09.2010, 15:27
#32
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 408


тогда я именно это и делаю - раскладка трасс ))) Вручную ))) Маршрут задается проектировщиком )))

Еще возможный вариант, чтобы не связываться с внешним файлом для хранения даных - хранить список точек-узлов трассы в строковой переменной в значении атрибута блока кабеля.

Последний раз редактировалось Frigate, 21.09.2010 в 21:11.
Frigate вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 22.09.2010, 09:26
#33
Main Urod


 
Регистрация: 20.01.2009
Сообщений: 1,173


Цитата:
Сообщение от kp+ Посмотреть сообщение
PS А почему все упорно обходят стороной ElectriCS? Потому что много денег стоит, или по другой причине?
Сам его не пробовал, но думаю по тем же причинам что и всякие епланы:
- очень малораспространен
- слишком заморочен.
Main Urod вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 22.09.2010, 09:51
#34
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,362
Отправить сообщение для zamtmn с помощью ICQ


Цитата:
Еще возможный вариант, чтобы не связываться с внешним файлом для хранения даных - хранить список точек-узлов трассы в строковой переменной в значении атрибута блока кабеля.
Я всетаки в упор недогоняю зачем чтото гдето хранить... кабель - полилиния, соответственно "список точек-узлов трассы " - узлы данной полилинии... Кабель как блок на плане тоже непонимаю - как блок его надо на схему подключений и править атрибут длины на этой схеме автоматом после трассировки.

Цитата:
PS А почему все упорно обходят стороной ElectriCS? Потому что много денег стоит, или по другой причине?
1) стоит денег, требует автокад который тоже стоит денег((
2) полностью устраивает zcad))

Последний раз редактировалось zamtmn, 22.09.2010 в 09:57.
zamtmn вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 22.09.2010, 11:44
#35
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 408


Цитата:
Я всетаки в упор недогоняю зачем чтото гдето хранить... кабель - полилиния, соответственно "список точек-узлов трассы " - узлы данной полилинии... Кабель как блок на плане тоже непонимаю - как блок его надо на схему подключений и править атрибут длины на этой схеме автоматом после трассировки.
Я ж писал уже, что мне не нужны на плане дополнительные слои с полилиниями кабелей.

Про хранение в блоке на другом чертеже - в моем случае на схеме внешних соединений - да, будет храниться там. Но это еще надо придумать как сделать. Я ж только месяц, как ЛИСП осваиваю. Не все сразу ))) Сначала надо научиться просто сохранять список в атрибутах блока данного чертежа, а уж потом... ;-) В плане еще и создание диалоговых окон, в которых будет доступно полное редактирование свойств трассы (кабеля) и можно будет просмотреть трассу именно этого кабеля на плане кабельных сетей.
Frigate вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 24.09.2010, 09:53
#36
NEDIS

Инженер СКС
 
Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72


А никто не знает можно ли как-то "присвоить" полилинии маркер кабеля, что бы он хранился в dxf коде примитива? Или это только с помощью ObjectARX решается?
NEDIS вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 24.09.2010, 10:12
#37
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 569


Цитата:
Сообщение от NEDIS Посмотреть сообщение
А никто не знает можно ли как-то "присвоить" полилинии маркер кабеля, что бы он хранился в dxf коде примитива? Или это только с помощью ObjectARX решается?

NEDIS, к любому примитиву и даже неграфическим объектам можно добавить расширенные данныех, которые и будут храниться в DXF коде объекта, и в которых ты можех хранить нужную тебе информацию
TararykovDG вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 24.09.2010, 10:46
#38
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


TararykovDG, к линии, которая изображает кабель ничего приписывать не надо, их очень часто надо удалять и заново рисовать, а вот сделать такой маркер в виде динамического блока и настроить в нем атрибут "метод расчета" на то, что в слое, где лежит маркер-блок все, скажем 2D полилинии такого-то цвета, типа линий и заданной толщины и есть тот кабель, который выставлен в этом блоке, можно.
Атрибут "метод расчета" не что иное как строка на лиспе запускающая функцию, к примеру:
Код:
[Выделить все]
(defun generallength (block tip color linetip weight)
;|
block - строка - имя переменной в которую записан указатель на обрабатываемый блок
tip - пятизначное бинарное число 
   1-ый знак - 3D солид, 1/0 1-обрабатывать, 0 - нет
   2-ой - линия, 1/0 1-обрабатывать, 0 - нет
   3-й - 2D полилиния, 1/0 1-обрабатывать, 0 - нет
   4-ый - 3D полилиния, 1/0 1-обрабатывать, 0 - нет
   5-ый - сплайн, 1/0 1-обрабатывать, 0 - нет
color - если целое число до 3-х знаков - 62 точечная пара, 
   если целое число более 3-х знаков - 420 точечная пара с точным цветом,
   если строка - 430 точечная пара название цвета из альбома Автокада,
   если nil - ByLayer
linetip - строка с типом линий (6 точечная пара), 
   если nil - ByLayer
weight - толщина линий, целое число (0,05 - 5; 2.11 - 211; 0,000 - 0)
   если nil - ByLayer
Обрабатываются 3D солиды только двух типов
SolidType (RO) = "Cylinder" или "Extrusion"
|;
...
Это начало функции, которая вычисляет все длины и возвращает общую длинну
Это когда надо посчитать весь кабель или трубы указанные в блоке.
Можно что угодно запускать. Я такие блоки стал делать в дополнение к методу расброски по слоям. Кроме имени слоя мало что можно указать, а тут типа фильтра получается.
Вот есть у тебя глобальная программа, она ищет все такие блоки-маркеры и по очереди их обрабатывает, как? а, просто. Она 1 - записывает указатель на очередной в обработке блок в заранее определенного имени переменную и лезет в атрибут "метод расчета". Там считывает какую функцию для этого материала надо запустить и с какими аргументами и запускает. Функция тоже знает в каком имени хранится указатель на блок и считывает в каком слое тот лежит. Далее эта функция обрабатывает заданные ей примитивы в этом слое и возвращает некий результат глобальной программе. Данные в блоке-маркере нужны как глобальной программе, так и самой функции в этом блоке.

Я перепробовал очень много всяких способов сделать виртуальные материалы и расширенные данные тоже, но этот способ позволяет с примитивами вытворять что угодно, типа резать солиды, рисовать новое и при этом не теряю приписанные к этим примитивам данные.

Последний раз редактировалось Supermax, 24.09.2010 в 10:58.
Supermax вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 24.09.2010, 10:58
#39
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 569


Supermax, полностью согласен, только я отвечал ни учитывая основного вопроса темы, а на конкрретный вопрос NEDISa из #36 поста
TararykovDG вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 24.09.2010, 11:17
#40
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,362
Отправить сообщение для zamtmn с помощью ICQ


Цитата:
к линии, которая изображает кабель ничего приписывать не надо
Можно вообще не создавать линию, хранить информацию о подключениях в таблице, т.е. без "физического" сопоставления кабель-полилиния. Если есть линия - ее надо различить-обознацить. Специфика разделов автоматики такова, что каждый кабель рассматривается отдельно и фигурирует в разных отчетных документах как отдельная единица, а не просто все суммой в спецификации

Но если чтото жранить в xdata, нужно писать удобные для пользователя функции для изменения-обработки

Последний раз редактировалось zamtmn, 24.09.2010 в 11:22.
zamtmn вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > План кабельных сетей - алгоритм автоматизации построения и программирование?

Инженерные консультации
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте программу для построения профилей наружных сетей? dextron3 Вертикальные решения на базе AutoCAD 18 11.03.2012 16:37
Сводный план сетей proekt_mep Инженерные сети 42 16.06.2011 23:09
Ищу книгу "Проектирование кабельных сетей и проводок" под редакцией Г.Е.Храпченко 1980 Инзиля Поиск литературы, чертежей, моделей и прочих материалов 8 03.02.2009 14:47

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


Размещение рекламы