| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

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

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

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

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


Программу 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 Мб, 2585 просмотров)
Тип файла: lsp adv-programme-cable-routings-create-by-analogue.lsp (6.3 Кб, 1571 просмотров)
Тип файла: rar PRINT FORMATS.rar (6.1 Кб, 1157 просмотров)
Тип файла: rar PRINT FORMATS_dyn.rar (41.0 Кб, 816 просмотров)


Последний раз редактировалось Frigate, 16.05.2013 в 01:36.
Просмотров: 287933
 
Автор темы   Непрочитано 16.11.2010, 20:18
#121
Frigate

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


Nikolay 2,

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

ПРо схему внешних не заыл. ПО кускам код уже собран и отлажен. Есть заготовка таблицы. Но слепить все раньше выходных вряд ли успею.
Сейчас работы много. И еще несколько прог под работу пиши. Напр, вставка полей в тексты, чтобы потом номера жил сами проставлялись, в зависимости от поз. обозначения датчика, привода и тп.
Так что пока отложим - но ненадолго.
Все помню, что намеревался сделать. Постараюсь, по мере моих знаний в ЛИСП (пока довольно плохих).


***********добавлено 17.11.2010**************
Вот, для работы наваял вчера прогу для вставки полей (Field) - может кому понадобится?
Суть ее такая: есть у вас схема (напр., принципиальная электрическая). Маркировка проводов завязана на поз. обозначении оборудования. Запускаете мою прогу (fmt в комстроке), выбираете базу для поля - текст или мтекст с номером позиц. обозначения, затем рамкой выделяете всю часть схемы, где вам нужна автозамена на основе полей. Прога автоматом отсортирует все ТЕКСТЫ (МТЕКСТЫ), в которых есть позиц. обозначение, как в базе. И вместо это базы вставляется поле. Т.е. теперь, чтобы поменять часто использующуюся часть схемы, надо всего лишь обновить текст в базе (объект ТЕКСТ или МТЕКСТ). А потом: _regen.
Ну, напр., есть схема управления насосом "Н5", и маркировка проводов в схеме начинается с "Н5". Выделяю объект ТЕКСТ (МТЕКСТ), с содержанием "Н5". Потом выбираю рамкой всю схеы управления насосом. Энтер. Вуаля-все "Н5" в проводах стали полями. И теперь не надо мучать "Поиск и замена", чтобы поменять поз. обозначение в схеме.

Собственно, сам код:

Код:
[Выделить все]
 
(defun C:fmt ( / 
 _adv-convertdatatype-selset-to-list
 _adv-convertdatatype-selset-to-vlalist
 ent
 selset
 fld
 *error*
 adoc
 )
(vl-load-com)
 (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun
(vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
(PRINC "\nПрограмма разрботана 16.11.2010. Автор - Данила aka Frigate (lifeisnice81).")
;fmt-make fields in many texts by pointed one
(if (setq ent (adv-select-entsel-by-type "Выбери базовый ТЕКСТ (МТЕКСТ): "
 "Это не ТЕКСТ и не МТЕКСТ" (list "TEXT" "MTEXT")))
(PROGN
;===============начало определения локальных функций===============
(defun _adv-convertdatatype-selset-to-list (value / item lst)
  (repeat (setq item (sslength value)) ;_ end setq
    (setq lst (cons (ssname value (setq item (1- item))) lst))
  ) ;_ end repeat
  lst
) ;_ end of defun
(defun _adv-convertdatatype-selset-to-vlalist (selset)
  (if selset
    (mapcar 'vlax-ename->vla-object
            (_adv-convertdatatype-selset-to-list selset)
    ) ;_ end of mapcar
  ) ;_ end of if
) ;_ end of defun
;===============конец определения локальных функций===============
(setq ent (vlax-ename->vla-object ent))
;если в базовом тексте нет символа "*"
(if (null (member 42 (vl-string->list (vla-get-textstring ent))))
(PROGN
(PRINC "\n Выбери рамкой ТЕКСТы (МТЕКСТы), в которые надо добавить поле: ")
(setq selset 
 (vl-remove-if  (function (lambda(x)
    (equal x ent)
   ))
  (_adv-convertdatatype-selset-to-vlalist  (ssget "_:L" '( (-4 . "<OR") (0 . "TEXT") (0 . "MTEXT") (-4 . "OR>") )))))
(setq fld (strcat
                "%<\\AcObjProp Object(%<\\_ObjId "
                (vl-princ-to-string
                  (vla-get-objectid ent)
                  ) ;_ vl-princ-to-string
                ">%).TextString>%"
                ) ;_ strcat
          ) ;_ setq
;(setq txt (car selset))
(foreach txt selset 
(if   (and
         (vlax-write-enabled-p txt)
         (vlax-method-applicable-p txt 'FieldCode)
         (vlax-property-available-p txt 'TextString)
      )
;если содержание совпадает
   (if  (wcmatch (vla-get-textstring txt) (strcat (vla-get-textstring ent) "*"))  
;вставляем поле
 (vla-put-textstring txt 
  (strcat fld 
   (substr (vla-get-textstring txt)
       (1+ (vl-string-mismatch 
                    (vla-get-textstring ent)
                    (vla-get-textstring txt)
              )
       );_end 1+    
   );_end substr
  );_end strcat
 );_end vla-put
;ELSE
(PRINC "\nВ текстах нет совпадений.")
   );_end if
;или так: (vlax-put txt 'TextString fld)
;ELSE
(PRINC "\nПоле не может быть вставлено.")
);end if
);end foreach
);end PROGN
(PRINC "\nВ базовом тексте не должно быть символа \"*\" (звездочка).")
);end if
);end PROGN
);_end if
(vla-endundomark adoc)
(PRINC)
);end of C:fmt
=================еще добавление=======================

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

Код:
[Выделить все]
 
(defun C:fmtm ( / 
 _adv-convertdatatype-selset-to-list
 _adv-convertdatatype-selset-to-vlalist
 flag
 selset
 fld
 ss_analogue
 *error*
 adoc
 )
(vl-load-com)
 (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun
(vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
;fmtm-make times fields in many texts by pointed milti texts
(PRINC "\nПрограмма разрботана 16.11.2010. Автор - Данила aka Frigate (lifeisnice81).")
;===============начало определения локальных функций===============
(defun _adv-convertdatatype-selset-to-list (value / item lst)
  (repeat (setq item (sslength value)) ;_ end setq
    (setq lst (cons (ssname value (setq item (1- item))) lst))
  ) ;_ end repeat
  lst
) ;_ end of defun
(defun _adv-convertdatatype-selset-to-vlalist (selset)
  (if selset
    (mapcar 'vlax-ename->vla-object
            (_adv-convertdatatype-selset-to-list selset)
    ) ;_ end of mapcar
  ) ;_ end of if
) ;_ end of defun
;в функцию передается список VLA-OBJ ТЕКСТов-образцов и VLA-OBJ целевого ТЕКСТ
;функция возвращает ТЕКСТ-образец (VLA-OBJ), имеющий больше всех совпадающих буквс целевым ТЕКСТом
(defun _fmtm-max-mismatch (txt ss_analogue / max_ent)
(setq max_ent (car ss_analogue))
(foreach ent ss_analogue
(if (>  (vl-string-mismatch (vla-get-textstring txt) (vla-get-textstring ent)) 
 (vl-string-mismatch (vla-get-textstring txt) (vla-get-textstring max_ent)))
(setq max_ent ent)
)
max_ent
)
);_end of defun
;===============конец определения локальных функций===============
(PRINC "\nВыбери рамкой или указанием базовые тексты, на основе которых будут вставляться полях <Выход>: ")
;if1
(if
(setq ss_analogue (_adv-convertdatatype-selset-to-vlalist  (ssget "_:L" '( (-4 . "<OR") (0 . "TEXT") (0 . "MTEXT") (-4 . "OR>") ))))
(PROGN
(foreach ent ss_analogue
(if (member 42 (vl-string->list (vla-get-textstring ent)))
(setq flag T)
)
);_end foreach
(if flag
(PRINC "\nБазовые тексты  с символом \"*\" (звездочка) не учитываются.")
)
;if2
;если есть хоть один базовый ТЕКСТ без "*"
(if (vl-remove-if (function (lambda(x) (member 42 (vl-string->list (vla-get-textstring x))))) ss_analogue)
(PROGN
(PRINC "\n Выбери рамкой или указанием ТЕКСТЫ, в которые надо добавить поле <Выход>: ")
(setq selset 
 (vl-remove-if  (function (lambda(x)
    (member x ss_analogue)
   ))
  (_adv-convertdatatype-selset-to-vlalist  (ssget "_:L" '( (-4 . "<OR") (0 . "TEXT") (0 . "MTEXT") (-4 . "OR>") )))))
(foreach ent ss_analogue
(setq fld (strcat
                "%<\\AcObjProp Object(%<\\_ObjId "
                (vl-princ-to-string
                  (vla-get-objectid ent)
                  ) ;_ vl-princ-to-string
                ">%).TextString>%"
                ) ;_ strcat
          ) ;_ setq
(foreach txt selset 
(if   (and
         (vlax-write-enabled-p txt)
         (vlax-method-applicable-p txt 'FieldCode)
         (vlax-property-available-p txt 'TextString)
      )
   (if  (and (vl-string-search (vla-get-textstring ent) (vla-get-textstring txt))
 (equal (_fmtm-max-mismatch txt ss_analogue) ent)
 )
;вставляем поле
 (vla-put-textstring txt 
  (strcat fld 
   (substr (vla-get-textstring txt)
       (1+ (vl-string-mismatch 
                    (vla-get-textstring ent)
                    (vla-get-textstring txt)
              )
       );_end 1+    
   );_end substr
  );_end strcat
 );_end vla-put
   );_end if
;или так: (vlax-put txt 'TextString fld)
;ELSE
(PRINC "\nПоле не может быть вставлено.")
);end if
);end foreach
);end of foreach ent
);end PROGN
(PRINC "\nВыход из программы. Объекты не выбраны")
);_end if2
);end PROGN
(PRINC "\nВыход из программы. Объекты не выбраны")
);_end if1
(vla-endundomark adoc)
(PRINC)
);end of C:fmtm

==================добавлено 17.11.10 в 10-50 по Москве=================

1 и 2 программа в этом сообщении БЫЛИ ИЗМЕНЕНЫ. Если базовый текст содержит "*", то прога не делает вставку поля. Тоже при рабочей отладке выяснилась такая необходимость.
Значит, сначала вставляем все поля, а уже затем, если надо, дописываем звездочки, - но отдельно от текста с обозначением позиции!!!

ПРикладываю один лист из схем внешних, с которым уже поработал программкой.

*****Добавление от 18.11.10*****

Добавляю еще одну программку - она удаляет из объектов ТЕКСТ и МТЕКСТ все поля, но ОСТАВЛЯЕТ содержание НЕИЗМЕННЫМ.
Очень удобна иногда бывает.

Код:
[Выделить все]
 
(defun C:fdel ( / 
 _adv-convertdatatype-selset-to-list
 _adv-convertdatatype-selset-to-vlalist
 *error*
  adoc
  )
(vl-load-com)
 (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun
(vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
(PRINC "\nПрограмма разрботана 18.11.2010. Автор - Данила aka Frigate (lifeisnice81).")
;fdel-delete fields
;===============начало определения локальных функций===============
(defun _adv-convertdatatype-selset-to-list (value / item lst)
  (repeat (setq item (sslength value)) ;_ end setq
    (setq lst (cons (ssname value (setq item (1- item))) lst))
  ) ;_ end repeat
  lst
) ;_ end of defun
(defun _adv-convertdatatype-selset-to-vlalist (selset)
  (if selset
    (mapcar 'vlax-ename->vla-object
            (_adv-convertdatatype-selset-to-list selset)
    ) ;_ end of mapcar
  ) ;_ end of if
) ;_ end of defun
;===============конец определения локальных функций===============
(PRINC "\nВыбери рамкой ТЕКСТы (МТЕКСТы), в которых надо удалить поля (fields), но содержание оставить неизменным: ")
(mapcar (function (lambda(x / txt)
   (setq txt (vla-get-textstring x))(vla-put-textstring x "")(vla-put-textstring x txt)
    ))
(_adv-convertdatatype-selset-to-vlalist  (ssget "_:L" '( (-4 . "<OR") (0 . "TEXT") (0 . "MTEXT") (-4 . "OR>")))))
(vla-endundomark adoc)
(PRINC)
);end of C:fdel
Только я пока не пойму - нужны кому-нибудь эти программы или нет? ))) Только один отзыв получил пока.

На очереди программка для изменения "выравнивания" всех выбранных текстов из "середина влево" на "середина вправо" и ли на "середина по центру", чтобы не было смещения самого объекта, т.е. чтобы передвинулись лишь точки привязки.
Или может такие уже есть на форуме где-нибудь? Не нашел что-то...
Вложения
Тип файла: dwg
DWG 2007
Чертеж1.dwg (112.6 Кб, 4128 просмотров)

Последний раз редактировалось Frigate, 18.11.2010 в 06:26.
Frigate вне форума  
 
Автор темы   Непрочитано 24.11.2010, 06:35
#122
Frigate

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


Всех приветствую.
Много работы навалилось и пока что нет времени вносить серьезные изменения в программы.
ПОтихоньку "причесываю" код. Сделал обработчик ошибок "поумнее" - теперь в нем не происходит UNDO, он просто возвращает состояние состемных переменных в изначальное и стирает созданные программой до нажатия кнопки ESC элементы. В общем, по ESC теперь тоже возможен выход из команд.
Еще некоторые изменения также внес, напр., общий для всего плана трасс "умножающий коэффициент".
В общем, часть замечаний zamtmn учтены уже.

Еще и неясность возникла, как в наиболее удобном виде задавать кабели в схеме внешних соединений при использовании таблицы применяемости - если не показываются на схеме ВСЕ кабели. Пока никакого решения не найдено, чтобы было УДОБНО для использования. Скорее всего буду в будущем заморачиваться внешней базой данных, в которой и ту же спецификацию создавать.
Frigate вне форума  
 
Непрочитано 24.11.2010, 09:21
#123
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Еще и неясность возникла, как в наиболее удобном виде задавать кабели.
Тут как всегда 2 варианта))
1) показывать на схеме все кабели, пусть в непечатаемой области. дополнительно генерить таблицу применяемости в печатаемую область при необходимости.
2) Определять кабели другим способом, а в таблицу подключений копировать информацию из этих определений.

Вообще приемы типа "выполнена для этого, для того аналогично с заменой индекса...", "см. таблицу применяемости" и т.п. тежело вписываются в сапр, лучше показывать всё - комп же сам всё считает)), нефиг бумагу экономить
zamtmn вне форума  
 
Автор темы   Непрочитано 24.11.2010, 15:11
#124
Frigate

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


Согласен, что не лучший вариант для САПРа, но придется в будущем что-то такое выдумывать... В нашей организации в оформлении обязательно будут таблицы применяемости. Это и красиво и технично. И у любого САПРа это сильно выиграет по трудозатратам. ПОэтому возможности проги надо предусматривать для имеющихся стандартов организаци в оформлении проектов, документации.
Так что, видимо, придется основательно повспоминать VB и VBA.

Последний раз редактировалось Frigate, 24.11.2010 в 15:16.
Frigate вне форума  
 
Непрочитано 24.11.2010, 15:51
#125
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Это красиво и технично в качестве отчетной формы по приготовленной модели, но не как форма задания этой модели
zamtmn вне форума  
 
Непрочитано 24.11.2010, 23:03
#126
Nikolay 2


 
Регистрация: 27.02.2008
Сообщений: 140


Цитата:
Сообщение от Frigate Посмотреть сообщение
Можно использовать более общую команду. По ней выделяешь все тексты-образцы, а потом рамкой выделяешь общий чертеж. И получаешь поля в текстах (мтекстах).
Довольно прилично сокращает время редактирования и количество "кликов" при повторном применении ранее выполненной схемы. Спасибо, взял на вооружение...
Схемы соединений внешних проводок по принципу "выполнена для этого, для того аналогично с заменой индекса...", как правило не делаю, как сказал zamtmn , показываю все. А вот на схемах электрических, которые зачастую делаю с таблицами применяемости, 2-ой лиспик, все решает... ИМХО

Последний раз редактировалось Nikolay 2, 24.11.2010 в 23:16.
Nikolay 2 вне форума  
 
Автор темы   Непрочитано 25.11.2010, 06:35
#127
Frigate

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


Nikolay 2,

я рад, что кому-то пригодился ЛИСПик.

ТОлько ты должен быть уверен, что скопировал именно последний вариант. Мне там много пришлось программировать, чтобы он качественно заработал - я про вариант, где сразу несколько текстов (мтекстов), которые являются образцами (которые в виде поля вставляются в другие тексты).
Frigate вне форума  
 
Непрочитано 25.11.2010, 14:17
#128
Nikolay 2


 
Регистрация: 27.02.2008
Сообщений: 140


Цитата:
Сообщение от Frigate Посмотреть сообщение
ТОлько ты должен быть уверен, что скопировал именно последний вариант.....
...- я про вариант, где сразу несколько текстов (мтекстов), которые являются образцами (которые в виде поля вставляются в другие тексты).
Ну так брал из поста #121, если там конечно правильный. И еще, думаю что надо предусмотреть, чтобы этим лиспом (или предыдущим) можно было менять по позиции прибора номер кабеля в блоке, который ты используешь в схеме внешних соединений. Видел множество чертежей (особенно зарубежных проектировщиков), в которых кабель от прибора до клеммной коробки, как правило, имеет номер позиции этого прибора (например РТ-01, ТТ-01, в принципе удобно), а номер кабеля идущего от коробки они чаще привязывают к номеру клеммной коробки (что-то типа JB-01) или же просто, как у нас К-01, 02 и т.д.

Последний раз редактировалось Nikolay 2, 25.11.2010 в 14:22.
Nikolay 2 вне форума  
 
Автор темы   Непрочитано 25.11.2010, 19:22
#129
Frigate

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


Nikolay 2,

я просто в том посту их несколько раз менял.

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

ПОпозже попробую модифицировать прогу, как время немного появится.
Frigate вне форума  
 
Автор темы   Непрочитано 08.12.2010, 13:58
#130
Frigate

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


нужно ли кому-нить?

прога для вставки в схему внешних таблицы с перечнем элементов, в которой уже будут посчитаны и отсортированы по маркам кабели?

дооформлю и выпущу новый релиз скоро
Frigate вне форума  
 
Непрочитано 09.12.2010, 20:52
#131
Nikolay 2


 
Регистрация: 27.02.2008
Сообщений: 140


Цитата:
Сообщение от Frigate Посмотреть сообщение
нужно ли кому-нить?

прога для вставки в схему внешних таблицы с перечнем элементов, в которой уже будут посчитаны и отсортированы по маркам кабели?

дооформлю и выпущу новый релиз скоро
Не знаю как другие, я не откажусь. Т.е. жду и надеюсь! А на реализацию предложения из поста #128 можно надеяться??
Nikolay 2 вне форума  
 
Автор темы   Непрочитано 10.12.2010, 11:53
#132
Frigate

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


Цитата:
Сообщение от Nikolay 2 Посмотреть сообщение
Не знаю как другие, я не откажусь. Т.е. жду и надеюсь! А на реализацию предложения из поста #128 можно надеяться??

Уже сделал вставку в схему внешних и в таблицу Excel - эта часть проги взята у VVA (за что ему большая благодарность, и не только от меня). Единственное, пока не продумал, как сортировать кабель по группам с одинаковым ГОСТ, ТУ...

По поводу поста 128:

вряд ли буду делать оборудование блоками. В любом случае - это не первостепенная для меня задача. К сожалению, пока не представляю, как можно оптимально связать позицию датчика и номер кабеля (если кабель представлен моим блоком).
Т.е. связать-то можно, но нужно такое решение, которое будет упрощать работу с внешними и планом трасс. Здесь нужно не только связывать номера кабеля и поз. обозначения (чисто для автонумерации кабелей), а нечто более глобальное. Пока такого у меня нет.

Напр., есть такая мысль - если привязать полем атрибут номера кабеля в моем блоке к поз. обозначению датчика... В общем вполне нормальный вариант. Для этого лишь немного надо подвравить ту же мою прогу по вставке поля - fmt, чтобы можно было в качестве целевых объектов для вставки поля использовать атрибут номера кабеля (с фильтрацией по тэгу атрибута "НОМЕР_КАБЕЛЯ").
Хотя не знаю, как это может помочь в работе - большой выгоды от этого не будет.
Если привязывать к номеру соед. коробки... у нас, напр., кабель вообще не по номеру коробки нумеруется, а по номеру позиции по генплану (если это проект внутриплощадочных сетей). А просто автонумераторов на этом сайте немало сделано. Повторяться смысла не вижу

Offtop: ОФФ:
все никак не могу заставить себя переделать код нескольких прог, причем глобально переделать
время интереснее потратить на семью, а ночью уже что-то не программиццО - спать охота что это - кризис?
Frigate вне форума  
 
Непрочитано 10.12.2010, 21:45
#133
Nikolay 2


 
Регистрация: 27.02.2008
Сообщений: 140


Цитата:
Сообщение от Frigate Посмотреть сообщение
Напр., есть такая мысль - если привязать полем атрибут номера кабеля в моем блоке к поз. обозначению датчика... В общем вполне нормальный вариант. Для этого лишь немного надо подвравить ту же мою прогу по вставке поля - fmt, чтобы можно было в качестве целевых объектов для вставки поля использовать атрибут номера кабеля (с фильтрацией по тэгу атрибута "НОМЕР_КАБЕЛЯ").
Я как раз об этом...
Nikolay 2 вне форума  
 
Непрочитано 11.12.2010, 00:21
#134
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Цитата:
вряд ли буду делать оборудование блоками. В любом случае - это не первостепенная для меня задача. К сожалению, пока не представляю, как можно оптимально связать позицию датчика и номер кабеля (если кабель представлен моим блоком).
На схеме внешних понятно, а вот на плане зря, чему еще быть символом оборудования если не блоком. У блока оборудования может быть не только атрибут обозначения, но и например атрибут позиции биндюжки чде он установлен или установки к которой он относится. Берем атрибут позиции в начале кабеля, в конце, соединяем их по какойлибо маске, прогоняем автонумератором - вот и нумерация по генплану, меняем маску - получаем другой закон нумерации (в маске нужно указывать не только как составлять, но и какие атрибуты выдергивать из начала и конца кабеля). Также следует разделить обозначения по которому кабели идентифицируются программой и которые проходят в проектных отчетах, чтоб небыло проблем типа "есть 500 кабелей, нужно вставить #5, а последующие перенумеровать"
zamtmn вне форума  
 
Автор темы   Непрочитано 11.12.2010, 09:13
#135
Frigate

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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Также следует разделить обозначения по которому кабели идентифицируются программой и которые проходят в проектных отчетах, чтоб небыло проблем типа "есть 500 кабелей, нужно вставить #5, а последующие перенумеровать"
Т.е. кабель должен идентифицироваться не по номеру, а как-то еще, да?
В принципе, несложно сделать механизм, чтобы перенумеровать кабели. Но кабели разбросаны по многим листам схем внешних и будет проблемно поменять номера кабелей. Хотя что-то придумать можно - наверняка ))) Выкрутился ж я с планами трасс через глобальную переменную. Однако сейчас прихожу к вполне предсказуемому выводу - нужна внешняя база данных. Буду ее в Excel делать, хоть и недолюбливаю Excel - потому что почти не владею порграммированием в нем
Ну посмотрим, может и в Access, в нем когдато базы данных делал.
А мысль такая - чтобы не лезть в дебри VB, связующим звеном между ЛИСП и VBA в Excel будут текстовые файлы, через которые будут передаваться данные туда-сюда. Можно сделать так, что пользователю не нужно будет и знать об этих файлах.
И вот в базе данных уже хранить все. Название файлов с планами трасс, кабели, которые в них используются + длины этих кабелей, а также всю доп. информацию. Т.е. то, что говорил ShaggyDoc и многие - управление Автокадом из внешней программы. Хотя, конечно,без связки через VB у этого управления будут ограничения. Но в конечном результате, если делать что-то серьезное, я прийду в внешней проге и внешней же базе данных.
"Никуда не деться с подводной лодки"

Последний раз редактировалось Frigate, 11.12.2010 в 09:29.
Frigate вне форума  
 
Непрочитано 11.12.2010, 11:41
#136
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Не стоит плодить внешние сущности без реальной на то необходимости. Единственным оправданым применением БД вижу только хранение базы данных обороудования. О всех внешних фалах пользователю всеравно знать придется, хотябы для того чтобы правильно скопировать проект. Логичным способом обработки "многофайловых" проектов помоему будет сборка их в один файл xrefами
zamtmn вне форума  
 
Непрочитано 11.12.2010, 14:59
#137
VVA

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


Цитата:
Сообщение от Frigate Посмотреть сообщение
Единственное, пока не продумал, как сортировать кабель по группам с одинаковым ГОСТ, ТУ
Сортируй строки.
1. Формируешь строку для сортировки путем сцепливания интересующих тебя сведений с неким разделителем (например "|"). Т.е получаешь строки
ГОСТ 223.234|Группа1|Марка 2
ГОСТ 123.234|Группа2|Марка 1
ГОСТ 123.234|Группа1|Марка 1
ГОСТ 123.234|Группа21|Марка 1
и запускаешь ф-цию SortStringWithNumberAsNumber (возьмешь там же где и excell или в гугле)
Пример

Код:
[Выделить все]
(SortStringWithNumberAsNumber '("ГОСТ 223.234|Группа1|Марка 2" "ГОСТ 123.234|Группа2|Марка 1" "ГОСТ 123.234|Группа1|Марка 1" "ГОСТ 123.234|Группа21|Марка 1") t)
Вернет
Цитата:
(
"ГОСТ 123.234|Группа1|Марка 1"
"ГОСТ 123.234|Группа2|Марка 1"
"ГОСТ 123.234|Группа21|Марка 1"
"ГОСТ 223.234|Группа1|Марка 2"
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 07.02.2011, 22:56
#138
Frigate

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


Итак, рад сообщить, что программа доведена до рабочего состояния - сделал редактирование кабелей, как полилиний, не замарачиваясь над каждой полилинией стандартными средствами АВТОКАДа. Сейчас дописываю справку, попозже выложу, буквально в ближайшие дни.

zamtmn,

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

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

В общем, это был небольшой анонс версии 1.10 ADV_CAD
Frigate вне форума  
 
Непрочитано 08.02.2011, 18:00
#139
Nikolay 2


 
Регистрация: 27.02.2008
Сообщений: 140


Цитата:
Сообщение от Frigate Посмотреть сообщение
В общем, это был небольшой анонс версии 1.10 ADV_CAD
Ждемс...
Nikolay 2 вне форума  
 
Автор темы   Непрочитано 09.02.2011, 17:05
#140
Frigate

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


Обновленная версия (1.10) ADV_CAD в обновленном первом посте:

ADV_CAD_AutoCAD ver. 1.10.rar

Кратко о программе:

Цитата:
Данная версия программы предназначена для:
• сокращения количества рутинных операций измерения длины трасс кабелей;
• автоматическое определение кабелей, проходящих через указанную пользователем точку трассы и вставка перечня кабелей;
• расчета реальных длин со всеми поправками;
• обеспечивает автоматический пересчет длин всех кабелей при изменении поправочного умножающего коэффициента и масштаба чертежа;
• вставка подсчитанных значений на схемы соединений внешних проводок;
• подсчет итогового количества кабеля, трубы и металлорукавов по типам и вставка в виде таблицы перечня элементов;
• предлагает дополнительный инструментарий для редактирования различных объектов, в том числе и для работы с блоками в AutoCAD.
Случайно выяснилась такая возможность порграммы ))) Теперь весь план трасс с трассами кабелей можно перенести - если в режиме редактирования )))

Последний раз редактировалось Frigate, 10.02.2011 в 13:15.
Frigate вне форума  
Ответ
Вернуться   Форум 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