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

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

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

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

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


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


Последний раз редактировалось Frigate, 16.05.2013 в 01:36.
Просмотров: 244170
 
Непрочитано 20.09.2010, 12:05
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,683
Отправить сообщение для Do$ с помощью Skype™


Может использовать вместо блока с атрибутом полилинию с расширенными данными?
Do$ вне форума  
 
Непрочитано 20.09.2010, 12:21
#3
kp+

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


в "САПРе на базе Автокад" прямо сказано, что авторы c электриками не дружат (или электрики с авторами )

посмотри темы от Shoorup'a и ElectriCS
__________________
Да здравствует фикус! (С)
kp+ вне форума  
 
Непрочитано 20.09.2010, 12:52
#4
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,104


Цитата:
Сообщение от kp+ Посмотреть сообщение
в "САПРе на базе Автокад" прямо сказано, что авторы c электриками не дружат (или электрики с авторами )
Причем здесь электрики...

"Щелкнуть" по чему-то и получить информацию - типичная ГИС-технология. В ГИС-системах это "обязательная программа" и делается элементарно.

Кабели и любые другие виды коммуникаций - частные случаи. Планы трасс можно импортировать из AutoCAD.

Если главное - получение информации (например, для эксплуатации), то не надо использовать AutoCAD, хотя и для него есть ГИС-системы, хоть и отсталые.

Если же непременно надо в AutoCAD, то надо к полилиниям (или вообще любым объектам) привязывать расширенные данные. Лучше всего если сами данные хранятся в Базе Данных, а внутри чертежа только ссылки на них. Еще лучше, если и все координаты трасс хранятся в базе данных.

Блоки для таких целей - последнее дело. Хотя "кому и кобыла невеста" (С).

И понадобится разработка программ для создания информации с привязкой, просмотра и редактирования. И для всего прочего. Т.е. начать несколько лет конструировать велосипед, который, скорее всего, получится с треугольными колесами.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 20.09.2010, 13:06
#5
Frigate

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


kp+

оно и чувствуется, что очень грустно...

Есть конечно тупые способы решения моей задачи:
сделать блок из одной линии и атрибута, в который и будут записываться номера кабелей с разделителями... Написать функцию, чтобы добавить или вычесть из атрибута номера кабелей при схождении/расхождении трасс... Тоже, в общем то , вариант... Тогда в атрибуте блока будет переменная типа string. ТОлько вот ограничения по длине значения атрибута (string)- какие они

ShaggyDoc

понятно, что тут надо искать другие пути для решения задачи... Буду думать...

Последний раз редактировалось Frigate, 20.09.2010 в 13:15.
Frigate вне форума  
 
Непрочитано 20.09.2010, 13:47
#6
VVA

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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Если же непременно надо в AutoCAD, то надо к полилиниям (или вообще любым объектам) привязывать расширенные данные.
Примеры
Автоматический подбор высоты текста с поста #27
Хэ-records
Список площадей выделенных полилиний в тектовое окно (файл)
Как сопоставить семантику и полилинию (полигон) в AutoCAD
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.09.2010, 14:17
#7
zamtmn

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


Цитата:
Кабели и любые другие виды коммуникаций - частные случаи. Планы трасс можно импортировать из AutoCAD.
ГИС вобщемно абсолютно такойже частный случай, только пошире))

Цитата:
Если же непременно надо в AutoCAD, то надо к полилиниям (или вообще любым объектам) привязывать расширенные данные. Лучше всего если сами данные хранятся в Базе Данных, а внутри чертежа только ссылки на них. Еще лучше, если и все координаты трасс хранятся в базе данных.
У электриков не настолько много доп. информации чтобы было целесообразно использовать внешние базы данных, темболее требуется ее всегда поддерживать в актуальном виде и легко и удобно редактировать... полилинии с xdata - неплохое решение, либо вообще отказаться от примитивов - "обозначителей" кабелей, хранить только трыссы и кабельный журнал в таблице, а когда нужна информация что где проходит выполнять трассировку.

Frigate
Я с переменным успехом пытаюсь делать программу перекрывающую потребности описаные в первом посте, посмотрите - http://shamangrad.net/project.php?act=view&prj=zcad (новую версию пока смотреть не стоит, только старую) и http://forum.dwg.ru/showthread.php?t=8707&page=2 начиная с 29 поста.
zamtmn вне форума  
 
Непрочитано 20.09.2010, 14:47
#8
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,104


Цитата:
У электриков не настолько много доп. информации чтобы было целесообразно использовать внешние базы данных, темболее требуется ее всегда поддерживать в актуальном виде и легко и удобно редактировать
Смотря у каких "электриков". Если электрик делает просто чертеж и желает привязывать информацию, чтобы просто не запутаться - это одно. Тут уж пущай мучается как хочет и может. Можно и xdata, можно и lsp-data. Хотя, с извращениями-то оно всегда интересней. А внешняя БД всегда пригодится. Хотя бы чтобы многочисленные наименования изделий каждый раз не вручную писать.

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

Собственно автоматическая трассировка - третье. Заведомо тупиковое направление для реальных (не учебных) задач. Автоматически протрассировать линию не получится. А вот, как пишет автор, "прощелкать все узлы" трассы и по этим узлам нарисовать любую сеть - вполне реально. Хоть со всякими деталями, креплениями. Это действительное сокращение рутинных операций. Такие программы достаточно просто делаются.

Но саму трассу в этом случае намечает не "автомат", а человек.
ShaggyDoc вне форума  
 
Непрочитано 20.09.2010, 14:48
#9
kp+

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


Для начала неплохо посмотреть
http://forum.dwg.ru/showthread.php?t=14377

Опять же, ElectriCS не сбрасывать со счетов
__________________
Да здравствует фикус! (С)
kp+ вне форума  
 
Автор темы   Непрочитано 20.09.2010, 14:52
#10
Frigate

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


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


VVA

спасибо за примеры

zamtmn

привет землякам

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

ладно, пока буду разбираться...


ShaggyDoc

попал в точку!

Цитата:
Если электрик делает просто чертеж и желает привязывать информацию, чтобы просто не запутаться - это одно
вот и мучаюсь )))

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


kp+

спасибо большое за ссылку!!! Мне кажется, там вполне то, что нужно, ну или хотя бы частично.

Последний раз редактировалось Frigate, 20.09.2010 в 15:17.
Frigate вне форума  
 
Непрочитано 20.09.2010, 15:16
#11
Supermax

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


У меня есть свое решение.
1. Делаете динамический блок на все интересующие вас марки кабеля, типа того, что я сделал на трубы и тут даю.
2. Создаете на каждый тип кабеля свой слой "Кабель такой-то" и все линии и полилинии и сплайны и пр, что символизирует этот кабель рисуете в соответствующем слое.
3. Раскладываете по слоям копии своего динамического блока и настраиваете его на данный тип кабеля.
4. Пишете программу, которая делает следующее:
По выбранным кабелям определяет их слои, находит в них ваши динамические блоки (по имени), берет из них данные о кабеле и распечатывает таблицу с перечнем связей и параметрами материалов.
5. Можно наоборот, ткнуть в блок и получить данные о всех длинах линий в слое где этот блок лежит.

Вот такая вот метода.
Вложения
Тип файла: dwg
DWG 2004
Трубы стальные прямошовные.dwg (102.3 Кб, 11673 просмотров)
Supermax вне форума  
 
Непрочитано 20.09.2010, 15:27
#12
zamtmn

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


ShaggyDoc
Цитата:
Собственно автоматическая трассировка - третье. Заведомо тупиковое направление для реальных (не учебных) задач. Автоматически протрассировать линию не получится
Прекрасно получится, по нормальной, подготовленной "руками" трассе... Всё зависит от того что в данном случае удобнее - прочертить каждый кабель в отдельности или указать что с чем соединять (и в какой очередности если это необходимо). В идеальной программе нужно сочетать оба варианта.
Если информацию о соединении можно откуданибудь автоматом выдернуть - например из принципиальных схем - трассировка самое то

Frigate
Цитата:
привет землякам
аналогично - привет
Внедрять никуда не стоит - не доделано
zamtmn вне форума  
 
Непрочитано 20.09.2010, 17:58
#13
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,104


Цитата:
Прекрасно получится, по нормальной, подготовленной "руками" трассе...
Это уже не трассировка, а рисование, о чем я и писал. А уж как именно рисовать "прочертить каждый кабель в отдельности или указать что с чем соединять" дело автора программы и рисовальщика.

Коли уж в начале упоминалась моя книга, там есть функция, которая подобным образом рисует что угодно - любые виды трасс. В аргументах ей передаётся "по-лисповски" имя функции рисования отдельного сегмента трассы.
ShaggyDoc вне форума  
 
Непрочитано 20.09.2010, 18:51
#14
zamtmn

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


>>Это уже не трассировка, а рисование, о чем я и писал. А уж как именно рисовать

Что тогда по вашему трассировка? большая красная кнопка? ручной работы всеравно не избежать - один раз прочертить трассу, затем автоматом по ней кучу кабелей - нормальный подход электроических сапр
zamtmn вне форума  
 
Непрочитано 20.09.2010, 22:05
#15
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,104


Цитата:
Что тогда по вашему трассировка? большая красная кнопка?
Третий раз поясняю для непонятливых:

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

А вот "автоматом по ней кучу кабелей" - это простой, рутинный процесс. Работа для "чертежника". К САПР имеет мало отношения - это просто "малая механизация", но не Проектирование. Вот в ГИС это самое изображение трасс выполняется вообще автоматом, по координатам из базы данных. Причем рисование может быть в разных видах, в зависимости от задачи.

Впрочем, может быть в "электроических сапр" это и считается "нормальным подходом". Тогда мне жалко электриков...
ShaggyDoc вне форума  
 
Непрочитано 20.09.2010, 22:43
#16
zamtmn

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


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

Цитата:
И трассу совсем не обязательно "прочертить". Координаты трассы можно и сохранить, например в базе данных, как я упоминал
Вам так нравится БД? храните в ней всё что только можно, наздоровье... проектировщику больше понравится "прочертить", где и как это сохранится его не волнует (пока не начнутся проблемы с установкой этих дополнительных бд, фрейм ворков, хмл парсеров и иже с ними). ему нужно чтоб всё было визуально и удобно редактировалось. такчто сначала подумать, потом прочертить, потом легко изменить, а где хранить кроме програмистов никого не волнует

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

Цитата:
Вот в ГИС это самое изображение трасс выполняется вообще автоматом, по координатам из базы данных. Причем рисование может быть в разных видах, в зависимости от задачи.
Блин, а электрики незнают... так бы все в этих ваших ГИС и работали. Чтобы чтото выполнить автоматом по координатам из базы данных нужно чтобы эти координаты туда ктото занес...

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

Последний раз редактировалось zamtmn, 21.09.2010 в 00:06.
zamtmn вне форума  
 
Непрочитано 21.09.2010, 00:00
#17
Main Urod


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


Цитата:
Сообщение от Frigate Посмотреть сообщение
Отсюда и сам вопрос - как это можно реализовать? При помощи чего? Ну а потом уже буду пытаться это сделать, надеясь на вашу помощь.
Сорри что влезаю не прочитав всей ветки дискуссии. Может то ч то я сейчас напишу уже сказали.
Я для решения схожей задачи (рисования проводников для схем электрических принципиальных) сделал ряд функций со следующими алгоритмами:
1. Рисование проводников. Программа сохраняет текущие данные (включенные параметры, слой и т.д.) отключает привязки, орторежим, включает рисование по сетке (специфика принципиалок) и слой проводников. Дальше идет диалог выбора назначения проводника (для твоего случая неактуален). После всего этого по щелчкам в выбранных точках рисуется полилиния соединяющая указанные точки (в моем случае еще и только вертикально или горизонтально. То есть если щелкнуть по диагонали, то рисуется сначала вертикальный отрезок, потом горизонтальный). После окончания рисования восстанавливаются сохраненные в начале параметры.
2. Сборка полилинии проводника. Полилиния формируется из уже нарисованных полилиний и отрезков. Просто щелкаешь на них и они добавляются. Похоже на команду join в редактировании полилиний, но с некоторым интеллектом. То есть точка начала и конца не обязательно совпадают. Программ или продолжает их до пересечения (если не пересекаются) или делает зигзаг до конечной точки если конечная точка одной из линий лежит на другой.
3. Редактирование данных. К выбранной полилинии цепляется последовательность расширенных данных в которой предусмотрено марка провода, сечение, цвет, обозначение. При редактировании выдается диалог в котором все это заполняется. При этом, при заполнении обозначения оно автоматически проставляется у всех концов полилинии.
4. Составление списка. По команде составляется список всех используемых проводов по маркировке, марке, сечению, цвету.
Сейчас планирую дописать функцию 1 до автоматической привязке к точке соединения с элементом схемы, функцию 3 до выбора марки проводника из вариантов хранящихся в текстовом файле, а не вбивания каждый раз вручную как сейчас, а функцию 4 до составления нормальной таблицы соединений.

Таким образом, если любой кабель выполнен в виде полилинии с привязанными к ней расширенными данными, то можно написать функцию которая в указанном мышкой месте будет выводить таблицу с нужными полями расширенных данных предварительно выбранных полилиний (кабелей)

Последний раз редактировалось Main Urod, 21.09.2010 в 00:13.
Main Urod вне форума  
 
Непрочитано 21.09.2010, 03:32
#18
Vlad®

розмысл
 
Регистрация: 12.06.2005
Иркутск
Сообщений: 1,968
<phrase 1=


А чем не устраивают готовые решения? отлаженные и сертифицированные?
Vlad® вне форума  
 
Автор темы   Непрочитано 21.09.2010, 08:43
#19
Frigate

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


Из предложенных вариантов и данных ссылок сделал след. вывод:

как и предлагал ShaggyDoc, я прощелкиваю все узлы трассы одного кабеля, скажем от поз. 1 до поз. 15. Потом надо, чтобы программа запрашивала, не нужно ли и другим кабелям присвоить эту же трассу (тем кабелям, что так же идут от поз. 1 до поз. 15). Эти узловые точки сохраняются в файле текстового формата. Так же делаю по кабелям от других позиций - прощелкиваю узлы этих трасс на плане сетей. И все эти трассы сохраняются в файле, скажем в таком формате:
"№ кабеля" т1 т2 т3 ... тN, где т1 - список с координатами 2D (к примеру). Пока не работал с данными из файлов, со строками - поэтому вопросы уточнений для написания программы будут попозже, если не разберусь сам.

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




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

Думаю, возможно ли осуществить это по следующему алгоритму:
1 указываем на плане точку pt1 (на нарисованной трассировке эстакады);
2 указываем по запросу программы точку pt2, от которой надо строить таблицу с номерами кабелей;
3 программа рисует первую по списку трассу из файла с хранящимися точками узлов: если трасса проходит через точку, то программа добавляет номер трассы в таблицу (не обязательно в объект Table, можно и просто МТекст в рамке 10х5 мм);
4 если трасса не проходит через эту точку, то программа строит след. трассу - см. п. 3.

И на этом все!

===========================================================================

Значит, нужны функции:

- функция №1а, которая получает номер кабеля и список точек-узлов трассы и запихивает все эти данные в строку, потом записывает эту строку в файл "D:\\Cable_traces.txt" (с затиранием пред. информации)
- Функция №1, которая считывает из файла с узлами трасс номер кабеля и список, состоящий из списков 2D координат точек-узлов (обратная функции №1а).
- Функция №2, которая по видимому, будет включать функцию №1: по списку узлов-точек строить полилинию и проверять, лежит ли точка с координатами точки pt1 (см. п.1) на нарисованной полилинии, если да - выполняется 3-я функция (вставка МТекста с номером кабеля с точкой вставки pt2 (см. п. 2). Начерченная полилиния трассы стирается.
- функция №3, которая получает аргументом номер кабеля и точку pt2, вставляет МТекст в рамке 10х5 мм у точки pt2, меняет координаты точки pt2 (чтобы след. МТекст с номером кабеля вставился, скажем, след. строкой, т.е. координата х pt2 равна (изначальная х - 5).


Прошу советов или возможно программ, реализующих функции №1а и №1.

С функцией №3 разобрался уже сам, просто надо было посмотреть в учебник по геометрии ))))) Принадлежность точки к прямой - это ж азбучная истина, класса 5-го наверное )))))

Вот и эта простенькая функция...

Код:
[Выделить все]
 
;|===============================================================================
Функция 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
Думаю, удастся обойтись без всяких расширенных данных и прочих сложностей...

Но все еще нужна помощь в написании функций 1а и 1 (см. выше)

Последний раз редактировалось Frigate, 21.09.2010 в 11:08. Причина: Дополнение (после подглядывания в учебник геометрии) :-)
Frigate вне форума  
 
Непрочитано 21.09.2010, 11:17
#20
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,104


Frigate, вот это уже нормальный подход. Постановка задачи.
Советы:

1. Хранить в файле просто LISP-список. В виде, наподобие
Код:
[Выделить все]
'( "№ кабеля" '( '( X1 Y1 Z1)...'(Xn Yn Zn)))
Этот список легко прочитать штатными функциями (read, eval) и сразу присвоить переменным. В файл он будет писаться в виде строки или строк.
Вообще-то всю топологию трассы очень удобно описать в виде XML, но это потребует много дополнительного программирования. Зато можно и визуально редактировать, и использовать в любых программах.

2. Зачем строить полилинию, которая сразу будет стираться? Проверить, лежит ли точка на сегменте линии можно аналитически. Вот так, например:
Код:
[Выделить все]
(defun ru-geom-is-point-in-line (t1 t2 tx)
  ;;Точка внутри отрезка? 
  (equal (+ (distance tx t1) (distance tx t2))
	 (distance t1 t2)
	 1e-6
  )
)
Всё остальное -"дело техническое".
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 21.09.2010, 11:35
#21
Frigate

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


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,429
<phrase 1=


Наведу немного критики:
Цитата:
как и предлагал 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
Москва-Тюмень
Сообщений: 421


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

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

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

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


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

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,800
<phrase 1= Отправить сообщение для 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,989


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

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


zamtmn

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

VVA

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

kp+

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

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

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


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

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


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

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

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


zamtmn

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

kp+

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

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


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

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


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

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

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


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


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

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


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

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

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

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


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

Про хранение в блоке на другом чертеже - в моем случае на схеме внешних соединений - да, будет храниться там. Но это еще надо придумать как сделать. Я ж только месяц, как ЛИСП осваиваю. Не все сразу ))) Сначала надо научиться просто сохранять список в атрибутах блока данного чертежа, а уж потом... ;-) В плане еще и создание диалоговых окон, в которых будет доступно полное редактирование свойств трассы (кабеля) и можно будет просмотреть трассу именно этого кабеля на плане кабельных сетей.
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
Воронеж
Сообщений: 571


Цитата:
Сообщение от 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
Воронеж
Сообщений: 571


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

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


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

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

Последний раз редактировалось zamtmn, 24.09.2010 в 11:22.
zamtmn вне форума  
 
Автор темы   Непрочитано 24.09.2010, 11:19
#41
Frigate

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


А кто что может сказать по поводу использования словарей чертежа? Там хранить данные вроде бы удобно. Хотя словари я еще никак не изучал.
МОжете рассказать или дать ссылку, что такое словари и есть ли к ним доступ через стандартный интерфейс Автокада (меню там может какой особенное)?

Supermax

идея иметь полилинию как отображение кабеля, и присвоить ей данные о кабеле - это здорово! Я ее обязательно буду воплощать в жизнь, но только не на плане трасс. Кабель - это не трубы. Мне не нужно пару сотен слоев, в которых будут изображены кабели. А по другому нельзя будет при необходимости увидеть трассу именно одного конкретного кабеля. Мое решение подходит целиком моим требованиям - все трассы хранятся где-либо (внешний файл, блок или может даже в словаре чертежа) в виде списков точек. При желании всегда можно увидеть любую трассу любого кабеля - она нарисуется по сохраненным данным. Это, как мне кажется, вполне легко и очевидно - но именно для такого плана трасс, какой есть у меня - см. внимательнее первый пост, я там описал что именно представляет мой план изначально - это чертеж с нанесенными на него линиями, обозначающими расположение кабельных эстакад на площадке, от объекта к объекту. И опять-таки по поводу автоматической трассировки - очень редко когда случается, что есть 2 возможный варианта, как провести кабель отобъекта А к объекту Б. Чаще всего это лишь 1 вариант (идет еще и от нормативки электриков - нельзя строить параллельные эстакады!).
Пока утрясаю программы и функции, делаю хотя бы минимальную проверку ввода. Думаю, потом выложу все сюда, как результат наших дискуссий. Хотя все функции - это либо измененные под мои нужды либо вообще неизмененные коды, взятые с этого форума. Моя работа - это лишь написание главных управляющих функций каждой программы и сортировка прикладных функций по библиотекам. К моему сожалению, пока не могу найти бумажного варианта книги "САПР на базе Автокад", а скачанный электронный вариант как-будто специально (даже уверен, что именно специально :-) ) не содержит очень многих важнейших страниц


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

А пока для начала сделал несколько кнопочек для редактирования текста (и МТекста) по одному щелчку на нем, а также для массового редактирования.

Ну, и в благодарность помогающим мне, решил вставлять такой код в программки :-)

Код:
[Выделить все]
(defun test ()
(PRINC "\n===============================================================
\n  *****Программа разработана 25.09.2010 xxx *****
\n   Выражаю свою благодарность за помощь и исходные коды 
\nучастникам форума DWG.RU и авторам настольной книги по AutoCAD
\n   *****САПР на базе AutoCAD - как это делается*****\n\n===============================================================\n")
(PRINC)
) ;_ end of defun

Последний раз редактировалось Frigate, 28.09.2010 в 13:18.
Frigate вне форума  
 
Автор темы   Непрочитано 29.09.2010, 11:44
#42
Frigate

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


В общем, на данном этапе переделал под себя и оттестировал код для рисования всего и вся при помощи легковесной линии :-)

Естественно, что в основе своей этот код - честно сподсмотренныйй в различных листингах на форуме и сайте ru_CAD.
Но пока не протестировал полностью и не понял все строчки кода, не вводил эту функцию в состав своих программ.

Вот она, прошу строго не судить :-)

Код:
[Выделить все]
;|Функция: adv-draw-pline-add
Что делает:
преобразует список точек pt_lst ((0 0) (0 100) (100 100) (100 0))
в тип Variant (array of doubles) - с массивом координат:
(0 0 100 0 100 100 0 100). И по ним рисует полилинию. 
Вызов:
(adv-draw-pline-add pt_lst is_closed width color layer)
Аргументы:
is_closed - замкнутость (1-замкнута, 0-нет)
width - ширина плинии (выбираем из ряда значений веса линии)
color - цвет
layer - слой (должен уже существовать на чертеже!)
Возвращает: 
<VLA-OBJECT IAcadLWPolyline xxx> - указатель объекта полилинии.
Пример:
(adv-draw-pline-add pt_lst 0 0 0 0)
|;
(defun adv-draw-pline-add (pt_lst is_closed width color layer / safe_array_pnt_lst var_pnt_lst pline_obj)
(foreach x pt_lst
(setq safe_array_pnt_lst(append x safe_array_pnt_lst))
)
(reverse safe_array_pnt_lst)
;альтернативный вариант создания массива координат (и без реверса!): (setq safe_array_pnt_lst 'append pt_lst))
(setq var_pnt_lst 
   (vlax-make-variant 
      (vlax-safearray-fill 
         (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length safe_array_pnt_lst))))
      safe_array_pnt_lst)
   )
) 
(setq pline_obj
   (vla-addLightweightpolyline 
      (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
   var_pnt_lst)
)
(vla-put-closed pline_obj is_closed)
(vla-put-lineweight pline_obj 
   (cond 
    ((= width 0) acLnWtByLwDefault)
    ((= width 25) width)
    ((= width 40) width)
    ((= width 60) width)
    ((= width 80) width)
    ((= width 100) width)
    (T (PRINC "\nНеверно указана толщина. Будет нарисовано \"по умолчанию\".\n") acLnWtByLwDefault)
   )
)
(vla-put-color pline_obj color)
(PRINC color)
(if (= color 0)
   (vla-put-color pline_obj acByLayer)
   (vla-put-color pline_obj color)
)
(vla-put-layer pline_obj layer)
pline_obj
)
,

Пока всю отработанную уже и протестированную библиотеку храню в .doc файле, вполне удобно организованном при помощи оглавления.

Вот такое пока содержание:

Цитата:
СТРУКТУРА БИБЛИОТЕКИ 2
БИБЛИОТЕКА КОДОВ 3
БИБЛИОТЕКА ФУНКЦИЙ 4
CONVERTDATATYPE (ИЗМЕНЕНИЕ ТИПА ДАННЫХ У ПЕРЕМЕННЫХ) 5
adv-convertdatatype-3D_point-to-2D_variant 5
SELECT (ВЫБОР) 6
adv-select-entsel 6
adv-select-entsel-by-type 6
DELETE (УДАЛЕНИЕ) 8
adv-delete-selset 8
BLOCKS (БЛОКИ) 9
adv-blocks-is-entity-block-with-attr 9
adv-blocks-is-entity-block-with-attr-effname 9
adv-blocks-put-attrib-value-to-block-entity 10
adv-blocks-get-attrib-value-from-block-entity 10
adv-blocks-select-block-with-attr 11
adv-blocks-select-block-with-attr-effname 12
GEOMETRY (ГЕОМЕТРИЯ) 13
adv-geom-convert-3D-point-to-2D-list 13
adv-geom-get-scale-dwg 13
DRAW (РИСОВАНИЕ) 14
adv-draw-pline-add 14
БИБЛИОТЕКА ПРОГРАММ 16
Я бы с удовольствием использовал программку для работы с библиотекой функций из ru_CAD, но не знаю где ее можно купить или скачать. Может подскажите, уважаемые гуру?

И у меня вопрос есть. Если можно, посоветуйте, как сделать:

надо вставлятьТЕКСТ или МТЕКСТ в рамку размером 5 на 10 мм. Чтобы, если не быдет влезать в рамку, коэф-т сжатия текста уменьшился. Как это реализовать?

Последний раз редактировалось Frigate, 29.09.2010 в 12:33.
Frigate вне форума  
 
Непрочитано 29.09.2010, 12:53
#43
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,754


Во-первых, я бы все же задумался о применении http://autolisp.ru/2009/10/21/lisp-overloading/
Во-вторых, http://dwg.ru/search.php?zone=1&mod=2&sName=ruCAD&type= никуда не делся.
В-третьих, вот мой вариант создания lwpolyline:
Код:
[Выделить все]
(defun _kpblc-ent-create-lwpline (lst point-list / res point_list)
                                 ;|
*    Функция добавления полилинии в указанное пространство.
*    Параметры вызова:
*	lst	- список точечных пар вида:
*		'(("where" . <Куда добавлять>)	; в какой блок / пространство
*				добавлять полилинию (vla-указатель). nil -> активное пространство
*		("closed" . t / nil)		; замкнутая полилиния. nil -> нет
*		("lineweight" . aclnwt025)		; вес полилинии. nil -> aclnwt000
*		("ltype" . "Continuous")	; тип линии. nil -> Continuous (только английский, нижний регистр)
*		("ltypefile" . "acadiso.lin")	; файл, из которого грузить тип линии (nil -> acadiso.lin)
*		("color" . 0)			; цвет. nil -> (getvar "cecolor")
*		("layer" . "test")		; слой. nil -> "0"
*		("width" . 0)			; изменение глобальной ширины
						; полилинии (группа 39). nil -> 0
*		(cons "normal" '(0. 0. 1.))	; система координат, в которой
			; создавать примитив. nil -> текущая
		(cons "round"(list (cons 0 -1)(cons 1 -2)))	; список участков полилинии
			; с устанавливаемой кривизной (тангенс четверти
			; центрального угла)
*		)
*	point-list	список точек (переводится в 2Д)
*    Возвращает vla-указатель на созданную полилинию либо nil в случае неудачи
*    Примеры вызова:
(_kpblc-ent-create-lwpline (list
	(cons "closed" t)
	(cons "round" '((0 . -1.) (2 . 0.5))))
	'((0. 0.)(10. 10.)(0. 20.)(-10. 10.)))
|;
  ;(_kpblc-is-debug-print "_kpblc-ent-create-lwpline")
  (_kpblc-error-catch
    (function
      (lambda ()
        (setq point-list (apply
                           (function append)
                           (mapcar (function (lambda (x) (list (car x) (cadr x))))
                                   point-list
                                   ) ;_ end of mapcar
                           ) ;_ end of apply
              res        (vla-addlightweightpolyline
                           (if (and (assoc "where" lst)
                                    (cdr (assoc "where" lst))
                                    ) ;_ end of and
                             (cdr (assoc "where" lst))
                             (_kpblc-get-active-space-obj)
                             ) ;_ end of if
                           (vlax-make-variant
                             (vlax-safearray-fill
                               (vlax-make-safearray
                                 vlax-vbdouble
                                 (cons 0 (1- (length point-list)))
                                 ) ;_ end of vlax-make-safearray
                               point-list
                               ) ;_ end of vlax-safearray-fill
                             ) ;_ end of vlax-make-variant
                           ) ;_ end of vla-addlightweightpolyline
              ) ;_ end of setq
        (if (cdr (assoc "round" lst))
          (foreach item (cdr (assoc "round" lst))
            (_kpblc-error-catch
              (function
                (lambda ()
                  (vla-setbulge res (car item) (cdr item))
                  ) ;_ end of lambda
                ) ;_ end of function
              '(lambda (x)
                 (princ (strcat "\nНевозможно задать кривизну "
                                (car item)
                                " участку полилинии"
                                ) ;_ end of strcat
                        ) ;_ end of princ
                 ) ;_ end of lambda
              ) ;_ end of _kpblc-error-catch
            ) ;_ end of foreach
          ) ;_ end of if
        (foreach item (list (list "closed" "closed" :vlax-false)
                            (list "lineweight" "lineweight" aclnwt000)
                            '("ltype" "linetype" "Continuous")
                            (list "color" "color" (getvar "cecolor"))
                            '("layer" "layer" "0")
                            '("width" "ConstantWidth" 0)
                            ) ;_ end of list
          (if (member (car item) lst)
            (setq lst (subst (cons (cadr item) (cdr (assoc (car item) lst))) (assoc (car item) lst) lst))
            (setq lst (append lst (list (cdr item))))
            ) ;_ end of if
          ) ;_ end of foreach
        (foreach item lst
          (vl-catch-all-apply
            (function
              (lambda ()
                (vlax-put-property res (car item) (cadr item))
                ) ;_ end of lambda
              ) ;_ end of function
            ) ;_ end of vl-catch-all-apply
          ) ;_ end of foreach
        ) ;_ end of lambda
      ) ;_ end of function
    (function
      (lambda (x)
        (_kpblc-error-print "_kpblc-ent-create-lwpline" x)
        (setq res nil)
        ) ;_ end of lambda
      ) ;_ end of function
    ) ;_ end of _kpblc-error-catch
  res
  ) ;_ end of defun
Используется масса библиотечных функций, но суть, думаю, понятна.
P.S. Код тестировался прежде всего для мировой системы координат, в пользовательских вроде бы работал нормально для версий 2005 и 2006. Дальше не гонял.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.09.2010, 14:04
#44
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,104


Вот мой рабочий вариант создания полилиний:
Код:
[Выделить все]
(defun ru-pline-add (points is_closed width lineweight ltype / obj)
                    ;|
(ru-pline-add (list (list 0 0) (list 10000 1000) (list 10000 20000) (list 0 20000)) nil  0 50 "HIDDEN")

|;
  (ru-error-catch
    (function
      (lambda ()

        (setq
          obj (vla-addlightweightpolyline
                (ru-obj-active-space)
                (ru-conv-list-points-to-variant-array
                  (apply
                    'append
                    (mapcar 'ru-conv-3dpoint-to-2dpoint
                            points
                    ) ;_ end of mapcar
                  ) ;_ end of apply
                ) ;_ end of ru-conv-list-points-to-variant-array
              ) ;_ end of vla-addlightweightpolyline
        ) ;_ end of setq
        (cond
          ((and
             (vlax-read-enabled-p obj)
             (vlax-write-enabled-p obj)
           ) ;_ end of and
           (if is_closed
             (vla-put-closed obj :vlax-true)
           ) ;_ end of if
           (if width
             (vla-put-constantwidth obj width)
           ) ;_ end of if
           (ru-lw-set-for-obj obj lineweight)
           (if Ltype
             (ru-ltype-apply obj Ltype)
           ) ;_ end of if
           (vla-update obj)
           obj
          )
        ) ;_ end of cond
      ) ;_ end of lambda
    ) ;_ end of function
    (function (lambda (x)
                (princ (strcat "\nОШИБКА RU-PLINE-ADD " x))
                nil
              ) ;_ end of lambda
    ) ;_ end of function
  ) ;_ end of ru-error-catch                

) ;_ end of defun
Обратите внимание - как и у Алексея имеется ловушка ошибок. Без этого нельзя.
В этом варианте аргументов меньше, чем у Алексея, но для практических целей ничего дополнительного в сотнях программ и не понадобилось.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 29.09.2010, 19:12
#45
Frigate

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


Алексей, спасибо большое за ссылки!

Очень хотелось этот просмотрщик. Уже хотел сам в Visual Studio такой писать. В WORD никак не смог сделать предпросмотр

ShaggyDoc,

я с Вами согласен, что нужен обработчик ошибок. Но на все нужно время. Я пока не начал серьезно разбираться с алгоритмом облработки ошибок, лишь использовал Ваши функции для выбора объекта (entsel и entsel by type). Я такой человек, что не могу использовать что-то , не понимая полностью сути работы этого "что-то". Код Ваш и Алексея еще пока сложен для меня. Но я учусь и быстро

Сейчас я понимаю, что аргументов в моей функции вполне достаточно, чтобы иметь возможность дальше развить ее, как и другие функции, но УЖЕ СЕЙЧАС иметь возможность ее применять и тестировать в разных рабочих ситуациях.

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

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

А сейчас хочу попросить:
1) объяснить, где у Lightweightline параметр WIDTH? Width сегмента есть, а где глобальная ширина? Что-то ее не нашел в описалове объекта.

2) как, интересно, во многих стндартных функциях организован алгоритм, что можно опускать какой-то аргумент? Ведь если внутри функции аргумент и может быть равным Nil, то при инициализации функции nil задавать нельзя, только 0...

Последний раз редактировалось Frigate, 29.09.2010 в 19:55.
Frigate вне форума  
 
Непрочитано 29.09.2010, 22:47
#46
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,104


Цитата:
Но на все нужно время.
Если пожалеть время на ловушку ошибок, потом во много раз больше придется его тратить на ручную "ловлю блох".

Цитата:
Width сегмента есть, а где глобальная ширина?
В моей функции здесь устанавливается - (vla-put-constantwidth obj width). По общему правилу ConstantWidth и есть это свойство.

Цитата:
как, интересно, во многих стндартных функциях организован алгоритм, что можно опускать какой-то аргумент
Эти функции написаны на C++, а там можно делать переменное количество аргументов. В функции, написанной на LISP переменное количество аргументов делать нельзя.

Но "если очень хочется, то можно" - в виде списка. В _kpblc-ent-create-lwpline это аргумент lst. Но этот аргумент слишком сложен для поседневного применения и наверняка у хитрого Алексея есть дополнительные функции-обертки поверх этой "низкоуровневой" функции. Неспроста у нее имя начинается с "_".
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 30.09.2010, 09:17
#47
Frigate

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


ShaggyDoc

Цитата:
наверняка у хитрого Алексея есть дополнительные функции-обертки поверх этой "низкоуровневой" функции
да, думаю есть

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

Подскажите, пожалуйста, какое свойство все-таки лучше использовать для LWpolyline - constantWidth или lineWidth? Чем обуславливать выбор - только внешним видом при уменьшении масштаба чертежа?

Кстати, как я понимаю, ConstantWidth имеет приоритет перед весом линии.

Последний раз редактировалось Frigate, 30.09.2010 в 09:25.
Frigate вне форума  
 
Непрочитано 30.09.2010, 11:11
#48
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,104


Когда-то ширина полилинии и только полилинии (Width) было единственным средством делать "жирные" (основные) линии на экране. Ширину можно менять и у каждого сегмента, достигая интересных эффектов. Физическая ширина имеет ряд преимуществ, но и недостатки есть.

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

Да, для полилиний ConstantWidth имеет приоритет. Легко проверяется опытным путем.

Что применять - решает каждый сам, благо выбор есть. Я лично остановился на использовании Lineweight, за исключением некоторых случаев, когда обязательно, по характеру изображения, нужна фиксированная ширина. Или когда нужна переменная ширина, да ещё неотключаемая. Например, при рисовании всяких стрелок.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 30.09.2010, 12:47
#49
Frigate

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


Спасибо за ответ. Я тоже считаю, что могут быть разные варианты, и думаю добавить в аргументы ConstantWidth.
Frigate вне форума  
 
Непрочитано 01.10.2010, 09:23
#50
zamtmn

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


Frigate
Цитата:
все еще впереди - дойду и до автоматического создания трасс )))
Хотя пока не представляю, при помощи какого алгоритма можно заставить трассу идти от объекта-начала до объекта-конца по нарисованным линиям? МОжет подскажешь, где копать?
чета както проглядел пост. копать надо в сторону поиска пути на графе. Возможно стоит объедениться с автором топика http://forum.dwg.ru/showthread.php?t=57194 и делать чтото подходящее и киповцам и сксникам и любым другим товарищам тянущим провода и кабели.
zamtmn вне форума  
 
Непрочитано 05.10.2010, 09:37
#51
NEDIS

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


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
NEDIS, к любому примитиву и даже неграфическим объектам можно добавить расширенные данныех, которые и будут храниться в DXF коде объекта, и в которых ты можех хранить нужную тебе информацию
Понимаю, что немного не по вопросу темы, а есть пример как это делается? Как полилинии добавить не свойственный ему DXF-код и чтобы он там хранился?

Цитата:
Сообщение от zamtmn Посмотреть сообщение
чета както проглядел пост. копать надо в сторону поиска пути на графе. Возможно стоит объедениться с автором топика http://forum.dwg.ru/showthread.php?t=57194 и делать чтото подходящее и киповцам и сксникам и любым другим товарищам тянущим провода и кабели.
Алгоритм поменял на Дейкстры, сейчас перезалью лиспы. Работать стало шустрее, но есть некоторые нюансы, в своем топике я отпишусь по ним.
NEDIS вне форума  
 
Непрочитано 05.10.2010, 11:01
#52
TararykovDG

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


NEDIS, пример добавления расширенных данных

Код:
[Выделить все]
; регистрация приложения (можно и не "NEDIS")
(regapp "NEDIS")
; получения списка данных последнего примитива
(setq ed (entget (entlast)))
; формирование подсписка расширенных данных (добавим текст и число 100)
(setq edata (list (list -3 (list "NEDIS" (cons 1000 "Какой-то текст") (cons 1070 100)))))
; включение в список расширенных данных
(setq ed (append ed edata))
; присоединение расширенных данных к примитиву, обновление примитива
(entmod ed)
; проверка данных примитива (обязательно указывать зарегистрированное приложение "NEDIS")
(entget (entlast) '("NEDIS"))
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 05.10.2010, 13:28
#53
NEDIS

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


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
NEDIS, пример добавления расширенных данных
TararykovDG, спасибо большое на выходных поиграюсь.
NEDIS вне форума  
 
Непрочитано 05.10.2010, 22:07
#54
Lesha


 
Регистрация: 25.09.2006
город Ч на Волге
Сообщений: 20
<phrase 1=


тоже озабочен подобной задачей. тружусь в области автоматики, вторичной коммутации.
Вот некоторые соображения.
1. Надо определиться какая информация является "первичной" (исходной), а какая "вторичной" (производной). Чем выше уровень автоматизации, тем больше информации переходит в разряд "вторичной".
В моем случае "первичная" информация это:
а) принципиальные схемы (само собой);
б) схемы расстановки оборудования;
в) планы кабельных трасс (эстакады, лотки, траншеи и т.п.).
Все остальное - вторично.
В идеале инженер должен разрабатывать только первичные данные.
2. "Первичная" информация (исходные данные) должна быть наглядной. Сам разработчик (не программист, а разработчик КИПиА, АСУТП, РЗА ... !!! ) или другой специалист должен иметь возможность проверять и корректировать исходные данные, пользуясь, по возможности, привычными способами - черчение в граф. редакторе, редактирование таблиц и т.п.
3. Крайне нежелательно дублирование "первичной" информации - это потенциальный источник ошибок.
4. Получение выходной документации выполняется несколькими этапами. Надо дать пользователю возможность видеть промежуточный результат каждого этапа и, если требуется, вносить коррективы.
Пример:
инженер разработал принципиальные схемы (ПС),
на основе ПС автоматически создается таблица соединений (ТС),
на основе ТС создается кабельный журнал (КЖ) (пока без длин - для расчета длин требуется предоставить и обработать другую исходную информацию - расстановку оборудования и план кабельных трасс).

вот как-то так.
Может немножко сумбурно, но, надеюсь, мысль понятна.
В последние месяцы совершенно нет времени продолжать разработку такой само-сапр , но я не оставляю эту идею.
Lesha вне форума  
 
Непрочитано 05.10.2010, 22:24
#55
zamtmn

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


Lesha
>>а) принципиальные схемы (само собой);
В чем вы делаете принципиальные схемы?

>>В последние месяцы совершенно нет времени продолжать разработку такой само-сапр , но я не оставляю эту идею.
Хоть чтото из перечисленных пунктов реализовано?
zamtmn вне форума  
 
Непрочитано 06.10.2010, 22:45
#56
Lesha


 
Регистрация: 25.09.2006
город Ч на Волге
Сообщений: 20
<phrase 1=


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

Начиная с таблицы соединений все делается в excel.
Lesha вне форума  
 
Непрочитано 06.10.2010, 23:00
#57
zamtmn

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


>>Есть экспорт данных из принципиальной схемы в отдельный файл.
>>Данные это содержимое слоев, содержащих линии связи и устройства.
на стороне обрабатывать данные, выдергивая связи - ИМХО самый неудобный вариант... при нахождении ошибок лезть в чертеж по координатам ошибки?
почему не Electrical?
zamtmn вне форума  
 
Непрочитано 06.10.2010, 23:35
#58
Lesha


 
Регистрация: 25.09.2006
город Ч на Волге
Сообщений: 20
<phrase 1=


Цитата:
Сообщение от zamtmn Посмотреть сообщение
>>Есть экспорт данных из принципиальной схемы в отдельный файл.
>>Данные это содержимое слоев, содержащих линии связи и устройства.
на стороне обрабатывать данные, выдергивая связи - ИМХО самый неудобный вариант... при нахождении ошибок лезть в чертеж по координатам ошибки?
почему не Electrical?
А по моему, обработка на стороне - это не самый неудобный вариант.
Как быть иначе, если схем несколько десятков? В каждую открытую принципиалку подгружать данные из других схем и потом эти данные разбирать? Как говорится - те же яйца...
Во-вторых внешняя обработка меньше завязывает на конкретный граф. редактор. Разонравится вот мне завтра акад, перейду на визио. Перепишу функцию экпорта данных и продолжу работать в привычной среде.
В третьих, разделение труда. Я разрабатываю принципиалки, а какой-нибудь студент на основе моих схем все остальное. И не нужен будет ему для работы ни акад, ни визио.
Electrical мне показался бедноват функционалом. Не дает он всего, что нам нужно.
Lesha вне форума  
 
Непрочитано 07.10.2010, 10:23
#59
kp+

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


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

Цитата:
Сообщение от Lesha Посмотреть сообщение
а какой-нибудь студент на основе моих схем все остальное. И не нужен будет ему для работы ни акад, ни визио.
На кульмане?
__________________
Да здравствует фикус! (С)
kp+ вне форума  
 
Непрочитано 07.10.2010, 11:01
#60
zamtmn

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


Цитата:
Как говорится - те же яйца...
Яйца теже. тут всё решает удобство работы. Как вы будете поступать с отчетами на листах схем? т.е. обратная связь планируется?

Цитата:
Я разрабатываю принципиалки, а какой-нибудь студент на основе моих схем все остальное. И не нужен будет ему для работы ни акад, ни визио.
Надо стремиться к тому чтоб по нормально подготовленной принципиалке и компоновке всё отчеты генерировались нажатием одной кнопки - студент не нужен))
zamtmn вне форума  
 
Автор темы   Непрочитано 07.10.2010, 13:11
#61
Frigate

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


Цитата:
Сообщение от Lesha Посмотреть сообщение
Есть авт. подбор типа кабеля по типу эл. цепи (количества и сечения жил), но только для контрольных кабелей. Вручную можно указать любой тип кабеля.
интересно, а как это организовано? Типы кабелей, жильность подвираются из стандартного ряда, а данные эти - в отдельном файле лежат, каком?
Frigate вне форума  
 
Непрочитано 07.10.2010, 21:21
#62
Lesha


 
Регистрация: 25.09.2006
город Ч на Волге
Сообщений: 20
<phrase 1=


kp+, пригляжусь еще раз к Electrical. Когда в прошлый раз его пробовал, слишком многого от него хотел. Попробую смягчить требования, глядишь - сгодится.
Как вы будете поступать с отчетами на листах схем? т.е. обратная связь планируется?
Обратная связь планируется. Более того - она есть. У меня внешнее хранилище и обработчик данных -excel и есть механизм (фукнция) синхронизации данных таблицы acad и таблицы excel. Правда функция эта в рабочем акаде (на работе лиц 2005) вызывает огромные утечки памяти. Дома в 2010-м ничего подобного не замечается.
Генерировать все по одной кнопке - мечта . А есть ли такая софтина?
Lesha вне форума  
 
Непрочитано 08.10.2010, 00:30
#63
zamtmn

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


>>Генерировать все по одной кнопке - мечта . А есть ли такая софтина?

Есть. не софтина, а софтины, только с разного рода натяжками и оговорками)) и все их знают, но почемуто многие (большинство?) используют голый автокад и свои понятные только им приблуды)) мне вот больше нравится EPLAN - море своих заморочек, но в целом очень продуктивно.
Тоже хочется большего - пытаюсь родить свою всеобъемлющую приблуду))
zamtmn вне форума  
 
Автор темы   Непрочитано 16.10.2010, 13:33
#64
Frigate

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


Выношу на суд
Ну и может кому пригодится

Запрос пользователя на ввод поправочных коэффициентов на длину кабельной трассы:


Код:
[Выделить все]
;добавочный коэффициент
(setq flag T)

;устнавливаем значение поправочного добавочного коэффициента по умолчанию
(if routing_length_add_coeff
(setq default_coeff routing_length_add_coeff)
(setq default_coeff 15)
)

;спрашиваем у пользователя поправочный добавочный коэффициент на длину кабеля (в метрах)
(while flag
	(if   (not (setq temp_coeff
  		 (getint    (strcat "\nВведите добавочный коэффициент на длину трассы (в метрах) - любое целое, включая ноль <" 
		(itoa default_coeff) ">: "))))
	(setq temp_coeff default_coeff)
                  )

	(if (< temp_coeff 0 )
		(PRINC "\nНужно ввести целое неотрицательное число!")
		(setq flag nil)
	)
)
(setq routing_length_add_coeff temp_coeff)


;умножающий коэффициент

(setq flag T)

;устнавливаем значение поправочного умножающего коэффициента по умолчанию
(if routing_length_multip_coeff
(setq default_coeff (atoi (rtos (- ( * routing_length_multip_coeff 100) 100) 2 0)))
(setq default_coeff 20)
)

;спрашиваем у пользователя поправочный умноэающий коэффициент на длину кабеля (в процентах)
(while flag
	
	(if   (setq temp_coeff 
	 (getint    (strcat "\nВведите поправку (в процентах) на длину кабеля (целое число от 6 до 30) <" 
		(itoa default_coeff) ">: ")))	
	(setq temp_coeff (1+ (/ (float temp_coeff )100)))
	(setq temp_coeff (1+ (/ (float default_coeff) 100)))
                     )

	(if (or (< temp_coeff 1.06 ) (> temp_coeff 1.3))
		(PRINC "\nНужно ввести целое число в диапазоне от 6 до 30!")
		(setq flag nil)
	)
);_end while
(setq routing_length_multip_coeff temp_coeff)
Больше всего понравился способ преобразования REAL в INTEGER. Я делал через промежуточное преобразование в строку. Других приемлимых вариантов не нашел.



===================================добавлено==============================

Сегодня 2 программы довел до ума
"Создать трассу кабеля"
и
"Просмотр трассы кабеля".

Как и говорили мне вначале, хранение даных о трассе сделал в словаре самого файла чертежа, а не во внешнем файле.

Отлова ошибок в них нет правда. Но проверил почти все варианты ввода - косяки будут , только если юзер - "обезьяна с гранатой", и будет жать ESC )))

"Создать трассу кабеля":

Код:
[Выделить все]
(defun C:adv-programme-cable-routings-create-one
	( 
	/ 
	flag
	temp
	temp_coeff
	default_coeff
	cable
	cable_entity
	routing_list
	pline_obj
	routing_length
	calc_routing_length
	dict_vla_pointer
	cable_routing_data_list 
	adoc
	old_osmode
	)
(vl-load-com)

(vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))

;умножающий коэффициент
(setq flag T)
;устнавливаем значение поправочного умножающего коэффициента по умолчанию
(if routing_length_multip_coeff
(setq default_coeff (atoi (rtos (- ( * routing_length_multip_coeff 100) 100) 2 0)))
(setq default_coeff 20)
)
;спрашиваем у пользователя поправочный умножающий коэффициент на длину кабеля (в процентах)
(while flag	
	(if   (setq temp_coeff 
	 (getint    (strcat "\nВведите поправку (в процентах) на длину кабеля (целое число от 6 до 30) <" 
		(itoa default_coeff) ">: ")))	
	(setq temp_coeff (1+ (/ (float temp_coeff )100)))
	(setq temp_coeff (1+ (/ (float default_coeff) 100)))
                     )

	(if (or (< temp_coeff 1.06 ) (> temp_coeff 1.3))
		(PRINC "\nНужно ввести целое число в диапазоне от 6 до 30!")
		(setq flag nil)
	)
);_end while
(setq routing_length_multip_coeff temp_coeff)

;добавочный коэффициент
(setq flag T)
;устнавливаем значение поправочного добавочного коэффициента по умолчанию
(if routing_length_add_coeff
(setq default_coeff routing_length_add_coeff)
(setq default_coeff 15)
)
;спрашиваем у пользователя поправочный добавочный коэффициент на длину кабеля (в метрах)
(while flag
	(if   (not (setq temp_coeff
  		 (getint    (strcat "\nВведите добавочный коэффициент на длину трассы (в метрах) - любое целое, включая ноль <" 
		(itoa default_coeff) ">: "))))
	(setq temp_coeff default_coeff)
                  )

	(if (< temp_coeff 0 )
		(PRINC "\nНужно ввести целое неотрицательное число!")
		(setq flag nil)
	)
)
(setq routing_length_add_coeff temp_coeff)

;спрашиваем у пользователя масштабный коэффициент
;scale - глобальная переменная
(setq scale (adv-routings-cable_routings-get-scale-from-dictionary))
(if (not scale)
(setq scale (adv-routings-cable_routings-put-scale-to-dictionary (adv-geom-get-scale-dwg)))
)
(PRINC "Масштабный коэффициент: ")
(PRINC scale)
;присваиваем cable значение атрибута "НОМЕР_КАБЕЛЯ" в выбираемом блоке "adv_cable"
;(alert "\nВыберите блок с кабелем, для которого будете задавать трассировку!\n")

;if setq cable_entity
	(if (setq cable_entity
			(adv-blocks-select-block-with-attr-effname 
			"Выберите блок с кабелем, для которого будете задавать трассировку!"  
			"adv_cable"))
;PROGN setq cable_entity
 	(PROGN
	(setq cable (adv-blocks-get-attrib-value-from-block-entity  cable_entity "НОМЕР_КАБЕЛЯ"
		   );_end of adv-blocks-get-attrib-value-from-block-entity
	);_end of setq cable	

 	(PRINC (strcat "\n\nВы выбрали кабель под номером \"" cable "\"\n"))	

;запоминаем настоящее значение переменной привязок OSMODE
(setq old_osmode (getvar 'OSMODE))
;устанавлиаем привязки КОНточка и ПЕРесечение
(setvar 'OSMODE 33)

;создаем полилинию трассы и список точек трассы кабеля
;if setq routing_list
      (if 
         (setq routing_list (adv-geom-routing-click-points))
;PROGN setq routing_list
         (PROGN

;возвращаем старые привязки
(setvar 'OSMODE old_osmode)

;вновь рисуем полилинию трассы для визуализации
             (setq pline_obj (adv-draw-pline-add routing_list 0 60 6 0)) 
;вычисляем длину трассы кабеля на чертеже, перемножаем длину трассы кабеля на коэф. масштаба
;и получаем реальную длину трассы (разделив на 1000, чтобы получить длину в метрах)
;затем округляем до ближайшего БОЛЬШЕГО целого числа
            (setq routing_length (fix 
	(+
		(/
			(*
				scale (adv-geom-dist-points-count routing_list) 1.0
			)
		1000)
	1))
              );_end setq routing_length
;находим длину кабеля со всеми поправками, округление до целого числа происходит в меньшую сторону!!!
             (setq calc_routing_length 
	(atoi (rtos
		(+ 
			(* routing_length routing_length_multip_coeff)
		routing_length_add_coeff 1)
	2 0))
               )
               (alert (strcat "Трасса создана.\nИзмеренная по указанной трассе длина кабеля - " (itoa routing_length) 
		" м." "\nДлина в спецификацию (со всеми поправками) - "  
		(itoa calc_routing_length) " м."))
(setq cable_routing_data_list 
	(adv-routings-cable-routing-data-to-assoclist
	cable
	calc_routing_length
	routing_list
	routing_length_multip_coeff
	routing_length_add_coeff
	)
)
(setq dict_vla_pointer (adv-dict-get-dict-by-name "CABLE_ROUTINGS_000"))
(if 
      (not (setq dict_data (adv-dict-get-data dict_vla_pointer "adv_key")))
	(adv-dict-put-data dict_vla_pointer "adv_key" (list cable_routing_data_list))
	(adv-dict-put-data dict_vla_pointer "adv_key" (cons cable_routing_data_list dict_data))
)
(vla-delete pline_obj)
);_end PROGN if setq routing_list
);_end if setq routing_list
);_end PROGN setq cable_entity
);_end if setq cable_entity
 
(vla-endundomark adoc)

);_end C:adv-programme-cable-routings-create-one

Последний раз редактировалось Frigate, 17.10.2010 в 17:52.
Frigate вне форума  
 
Автор темы   Непрочитано 01.11.2010, 07:37
#65
Frigate

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


Приветствую всех! Долго уже не писал, командировка, дел куча...

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

Это вкратце описание возможностей программы. Теперь планирую заняться схемой соединений внешних проводок, в т.ч. автозаполнением экспликации, общей спецификации по кабелям, выбор типа кабеля из базы данных при помощи диалогового окна, редадктирование используемых для прокладки кабелей длин и типов трубы и металлорукава. Для плана трасс планирую добавить автоподсчет необходимого количества лотков (прямых, угловых, Т-образных, количества полок и стоек.
Frigate вне форума  
 
Непрочитано 01.11.2010, 08:17
#66
zamtmn

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


>>Если кому интересно, опишу ее и выложу здесь исходники.
выкладывать и описывать надо даже если никому не интересно))

>>В плане трасс вся трассировка кабелей хранится в словаре
т.е. с "линейным" примитивом кабель ты решил не отождествлять и использовать свои програмки для создания-редактирования?
как обстоит дело с кабелями изображенными на разных планах или фрагментах? как оформил вертикальные участки?
zamtmn вне форума  
 
Автор темы   Непрочитано 01.11.2010, 09:10
#67
Frigate

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


Хорошо, выложу, немного попозже, сегодня или завтра.
Надо просто еще хоть небольшую справочку накатать, как и куда устанавливать. И как работать.
Система ведь ставится как тот же Express Tools - со своими меню и панельками.

Да, вся инфа о трассах хранится в словаре.

Я делал чисто из соображения нашей специфики. Программка оправдывает себя, когда мы делаем комплект чертежей по сетям, а не по конкретным площадкам (позициям). Т.е. кабель идет снаружи зданий и технологич. площадок - по эстакадам или в траншеях. И план всегда делается на 1 листе.
А вертик. участки никак не оформляются, сделал точно так же, как и сами считали до сих пор - ввод поправочных коэффициентов - в % и в метрах (умножающий и добавочный коэффициенты). Добавочный коэффициент как раз и учитывает подъемы и спуски на (с) эстакаду (-ы).
Самое главное, что дает программа уже сейчас - не только автоматич. простановка реальных (с учетом всех поправок) длин кабелей, но и автоматич. получения перечня всех кабелей, проходящих через указанную точку трассы (эстакады).
Frigate вне форума  
 
Непрочитано 01.11.2010, 09:39
#68
zamtmn

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


>>И план всегда делается на 1 листе.
На хорошем объекте редко так получается((, а даже если получается - всеравно присутствуют разрывы - показано начало и конец а "километры" середины вырезаны из соображений экономии бумаги.
Если это не учитывать - область применения программы будет очень мала.
Можно попробовать делать модель полностью, а в видовых экранах пробовать организовать фрагменты - но изза разных масштабов получится "некрасиво"
zamtmn вне форума  
 
Автор темы   Непрочитано 01.11.2010, 10:35
#69
Frigate

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


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

Кстати, небольшой ОФФ, - как вставить сюда файл? В архиве бы все скинул. Что-то не нахожу как...
Frigate вне форума  
 
Непрочитано 01.11.2010, 10:53
#70
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,754


Цитата:
Сообщение от Frigate Посмотреть сообщение
как вставить сюда файл? В архиве бы все скинул. Что-то не нахожу как...
Как добавить вложение в сообщение?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.11.2010, 12:07
#71
Frigate

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


Кулик Алексей aka kpblc
спасибо, Алексей :-)

Прикладываю получившийся чертеж с планом трасс.

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

zamtmn

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

В общем, спасибо за подсказку :-)


============= после некоторого обдумывания наиболее оптимального решения ====================

пришел к такому варианту:

Надо учесть возможность наличия нескольких внешних планов трасс, где будет один кабель (больше 2-х планов трасс для кабеля). Т.е. надо суммировать при транслировании итоговые длины кабелей. В итоге, должен получиться ассоц. список вида: ((№ кабеля суммарная_реальная_длина) (№ кабеля суммарная_реальная_длина) … (№ кабеля суммарная_реальная_длина)).
И не надо в таком случае менять структуру ассоц. списка внутри каждого плана трасс!
В итоге – не нужно делить планы трасс на основные и НЕосновные! В течение одного сеанса Автокада нужно просто открыть все имеющиеся планы трасс, вся инфа на них суммируется (в каждом открытом файле надо будет нажать кнопку для транслирования имеющейся инфы) и будет передана во внепространственную переменную. Оттуда можно будет ее подкачивать из схем внешних соединений, чтобы автоматически проставились длины кабелей на схемах внешних. Чтобы случайно не учесть инфу с одного плана трасс несколько раз, нужно ввести флаг (глоб. Переменную) в каждом файле, которая будет T после трансляции информации о длинах.

МОжет будут какие советы об оптимизации? Типа одним нажатием кнопки скачиваются данные из словарей (с одним именем и ключом) всех открытых файлов. Если словарь есть - значит это план трасс и нужно скачать из него инфу в общий коллектор - внепростаранственную переменную, например.
:-)

Такое пока плохо представляю как осуществить, но, думаю, реально Как релиз 1.1 пойдет )))

А пока сделаю то, что написал. И тогда уже выложу.

ПО поводу обработки ошибок хотел добавить - я их учел в пользовательской функции *error*. Основным источником "глюков" может быть кнопка ESC, которую сам иногда по привычке еще жму. Другие вообще всегда жмут, как показал опрос )))
Другие моменты учтены обработкой пользовательского ввода (часть честно стырена с ru_CAD).
Если происходит отмена по ESC, то пользователь получает гневное сообщение и происходит отмена сделанных изменений.
НАсколько я понял, системные переменные возвращаются в исходное состояние (я пока только OSMODE менял).

Есть у меня 1 вопрос к знатокам:

Дайте пример кода, чтобы сделать BEEP при отмене программы клавишей ESC :-)
Вложения
Тип файла: zip План трасс.zip (502.2 Кб, 174 просмотров)

Последний раз редактировалось Frigate, 01.11.2010 в 13:26.
Frigate вне форума  
 
Непрочитано 01.11.2010, 13:19
#72
zamtmn

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


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

у меня это сделано аддитивным коэффициентом (в добавок к мультипликативному), также кабель может быть разбитым на "сегменты" - тупо несколько одинаковых кабелей отличающихся номером сегмента и обрабатываемых по возрастанию этого номера. Подход универсальный (вроде как можно смоделировать любую ситуацию), но черезчур муторный - тяжело править все коэффициенты у кабелей, если нужно чтото поменять. Если большинство кабелей состоят из сегментов - вообще труба это хозяйство редактировать((
Подумываю ввести стили кабелей - для легкой правки. И примитив "определение кабеля" - полилиния соединяющая все устройства кабеля но не проходящая по трассе, а кабали получать из определений трассировкой с наследованием свойств типа жильности, марки и т.д.
zamtmn вне форума  
 
Автор темы   Непрочитано 01.11.2010, 13:28
#73
Frigate

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


точно муторно - я мало что понял даже, прочитав

прочти, плиз, мои добавления к предыдущему моему посту - там я описал новую идею, как это осуществить, + задал 1 вопрос

я хочу для кабелей ввести что-то типа формы свойств (на базе диалогового окна). Это будет в схеме внешних соединений. Там можно будет через мою панель уже вставлять блок кабеля, сначала задавая его тип (можно и потом задать, сперва оставив "тип по умолчанию"), будет ли кабель защищен трубой, металлорукавом, проходить по траншее, эстакаде. Где-то так.

Цитата:
Подумываю ввести стили кабелей - для легкой правки. И примитив "определение кабеля" - полилиния соединяющая все устройства кабеля но не проходящая по трассе, а кабали получать из определений трассировкой с наследованием свойств типа жильности, марки и т.д.
теперь понял, зачем тебе нужны именно сегменты кабеля. Ты же описываешь шлейф. В пожарке. Это уже специфика.

Последний раз редактировалось Frigate, 01.11.2010 в 13:46.
Frigate вне форума  
 
Непрочитано 01.11.2010, 13:53
#74
zamtmn

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


>>точно муторно - я мало что понял даже, прочитав
чукча не писатель)). хотя там всё просто, кабель - полилиния, длина считается как длина полилинии*масштаб+добавка. масштаб и добавка задаются пользователем в свойствах кабеля. если к кабелю подключены устройства - они тоже добавляют к длине некоторую добавку определяемою в свойствах этого устройства. например чтоб учесть вертикальный участок кабеля 3м - подключаем к кабелю в этом месте устройство "подъем" (или опуск) и в свойствах "подъема" указываем - что добавлять 3м.

>>там я описал новую идею, как это осуществить, + задал 1 вопрос
в програмировании под автокад я мало что понимаю, такчто с конкретикой реализации - извиняйте))

>>теперь понял, зачем тебе нужны именно сегменты кабеля. Ты же описываешь шлейф. В пожарке. Это уже специфика.
нет, я не делаю раздельные сегменты между оборудованием. Сегменты это когда на разных планах. Если на одном - сегменты не нужны.
Например 1 и 2 этаж. Кабель начинается на плане первого, уходит в стояк и кончается на плане второго. Т.е. кабель один, а примитивов символизирующих этот кабель (сегмента) два - на разных планах.

Последний раз редактировалось zamtmn, 01.11.2010 в 14:04.
zamtmn вне форума  
 
Автор темы   Непрочитано 01.11.2010, 14:19
#75
Frigate

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


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

Как я в Автокаде сделаю, я уже описал )))
Frigate вне форума  
 
Непрочитано 04.11.2010, 12:57
#76
Eddicordo

КИП и А
 
Регистрация: 28.04.2010
Киев
Сообщений: 101
<phrase 1=


Доброго дня.
Frigate,
Можно ли увидеть
Цитата:
Сообщение от zamtmn Посмотреть сообщение
Если кому интересно, опишу ее и выложу здесь исходники.
Очень хочу глянуть и потестировать.
Но идея не с той стороны начата.
1) Схема автоматизации
2) Схема внешних соединений проводок
3) План

Без первых двух сделанных и продуманных схем вам не сделать план.
Но автоподсчет длин, указания (точнее не указания, а выбора с уже проставленных на 2 схеме) номера кабеля и его марки, идея просто изумительная.
А так же выбора на плане позиции прибора указанной на "Схеме автоматизации" и вставка этого оборудования.

Ну и при изменениях на 1 схеме атрибута
"Номер позиции приборов"
и на 2 схеме атрибутов
"Номер кабеля"
"Марка кабеля"

обновление на трассе

Вот сама изюминка
Eddicordo вне форума  
 
Непрочитано 04.11.2010, 13:50
#77
zamtmn

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


Eddicordo
Цитата не моя)).

>>Но идея не с той стороны начата
>>1) Схема автоматизации
>>2) Схема внешних соединений проводок
>>3) План
Сделать сквозную систему проектирования в рамках лиспа не получится, а если получиться то с кучей оговорок и упрощений.
Схема автоматизации на первом месте для меня сомнительно - часто СА делается в упрощенном виде, и отражает точно только места установки приборов на технологическом оборудовании, связи между ними делаются очень условно - считать СА основанием к формированию схемы соединений не правильно. В моей работе основной документ - схема электрическая принципиальная - из нее можно выудить любую информацию для любых других отчетов. ИМХО проектировщик в программе проектирования автоматики должен строить "полную" модель проекта, содержащую в себе всю важную информацию - и из нее уже в автоматическом или полуавтоматическом режиме получать отчетные документы типа схемы автоматизации, подключений, планов и т.д.
zamtmn вне форума  
 
Непрочитано 04.11.2010, 16:43
#78
Eddicordo

КИП и А
 
Регистрация: 28.04.2010
Киев
Сообщений: 101
<phrase 1=


zamtmn,
Цитата:
Сообщение от zamtmn Посмотреть сообщение
Схема автоматизации на первом месте для меня сомнительно
Что такое Схема автоматизации?
Схема автоматизации - это технологическая схема с нанесением на нее оборудования КИП и А.

Цитата:
Сообщение от zamtmn Посмотреть сообщение
часто СА делается в упрощенном виде
Делается но не часто. В основном это разработка щита. Щиты в наше время уже ни кто не разрабатывает. А заказывают готовые щиты.
А если щит маленький и специфический то его свободно вмещают на СА.

Цитата:
Сообщение от zamtmn Посмотреть сообщение
и отражает точно только места установки приборов на технологическом оборудовании
Хм.. аж интересно стало. А что вы тогда отображаете на планах? Не точную установку оборудования? Условно?
Технологическая схема несет в себе саму технологию процесса и показывается условно. Вы не можете на ней точно установить и показать свое оборудование.
А вот на плане все выполнено в масштабе. И на планах нанесение оборудования КИП и А указывается точно.

Цитата:
Сообщение от zamtmn Посмотреть сообщение
считать СА основанием к формированию схемы соединений не правильно
Ни кто и не считает основанием к формированию схем соединений.
Вы путаете это совсем разные схемы.

Цитата:
Сообщение от zamtmn Посмотреть сообщение
В моей работе основной документ - схема электрическая принципиальная - из нее можно выудить любую информацию для любых других отчетов.
Ну очень интересно. Скажите, у вас на Схеме эл. прин. показаны абсолютно все:
Позиции оборудования?
Номера кабелей?
Марки кабелей?
Условные обозначения приборов?
Маркировка клеммных коробок?
Ну хоть что то. Я не знаю что можно выудить со схемы электр. принципиальной для вставки на план. и связей какие то.


1) Схема автоматизации - основная схема где указанны все позиции оборудования, кроме исключения.

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

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

4) План - это расположение в масштабе всего объекта с конкретной установкой и расстановкой всего оборудования. (Грубо говоря сборочный чертеж с первого и третьего)

1, 2, 3, и т.д. схемы, это наши исходные данные.
4 схема, это схема на которой наносятся все наши исходные данные.
Eddicordo вне форума  
 
Автор темы   Непрочитано 04.11.2010, 17:14
#79
Frigate

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


Eddicordo,
Цитата:
Сообщение от Eddicordo Посмотреть сообщение
Очень хочу глянуть и потестировать.
Все будет, осталось 2-3 функции дописать, а мысли уже в схеме соединений внешних проводок, хочется функции от VVA понять и применить у себя для сортировки кабелей. Ну и сам экспорт в Excel тоже заинтересовал.


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

=============================================
Сразу хочу сказать, что для установки моей программы нужно уметь устанавливать файлы частичной адаптации (в итоге всех действий вы получите выпадающее меню "ADV_CAD" в главном меню Автокада и три панели инструментов. Скопировать папку со всеми функциями и программами на диск C. Прописать в настройках пути к вспомогательным файлам. Если разместите папку с программой не на диске С, то пути придется уже менять в соответствии с расположением. Да, перед тем, как лезть в CUI, советую сохранить свое рабочее пространство, чтобы потом не слетели ваши настроенный под себя панели инструментов и вообще весь вид рабочего экрана АВТОКАДа. У меня даже при сохранении иногда случаются глюки с панелями инструментов. Возможно, я не очень хорошо владею CUI.
В общем, если что-то из описанноо вам вдруг непонятно, то советую почитать справку хорошенько, чтобы потом установить мой файл частичной адаптации.

Последний раз редактировалось Frigate, 04.11.2010 в 17:24.
Frigate вне форума  
 
Непрочитано 04.11.2010, 17:46
#80
zamtmn

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


Eddicordo
Цитата:
Делается но не часто. В основном это разработка щита. Щиты в наше время уже ни кто не разрабатывает. А заказывают готовые щиты.
А если щит маленький и специфический то его свободно вмещают на СА.
Что значит готовые? серийно выпускаемые? Если серийно - зачем его нутра вмещать в СА? со щитом идет комплект документов - вполне достаточно его приложить к проекту.

Цитата:
Хм.. аж интересно стало. А что вы тогда отображаете на планах?
План планом, но по СА гораздо быстрее можно понять что датчик стоит например на выходе подогревателя, до запорной арматуры.

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

Цитата:
А вот на плане все выполнено в масштабе. И на планах нанесение оборудования КИП и А указывается точно.
3D модель может будет точно, план - условно. Конечно можно (нужно) сделать все необходимые разрезы - и показать всё точно, но такие требовательные заказчики мне пока не попадались
zamtmn вне форума  
 
Непрочитано 05.11.2010, 10:24
#81
Eddicordo

КИП и А
 
Регистрация: 28.04.2010
Киев
Сообщений: 101
<phrase 1=


Frigate,
Цитата:
Сообщение от Frigate Посмотреть сообщение
Хочу окончательно пояснить, почему начал с плана трасс - это то первоочередное, что очень нужно, так как уберет массу хлопот при создании план трасс - это даже не автоматический подсчет длин (я уже это писал и не раз) - это скорее получение перечня кабелей, проходящих через определенную точку (разрез) трасс.
Как можно получить перечень кабелей не зная какой кабель куда идет?
Не зная к какому кабелю присвоена марка кабеля. Ты же не с потолка берешь все эти данные.
Эти все данные должны быть у тебя на другой какой то схеме с исходными данными. В моем случае это "Схема внешних соединений" у нашего коллеги zamtmn эти данные на "Схеме электрической принципиальной".
Либо ты занимаешься исключительно планами, а исходные данные получаешь от других сотрудников КИП.
У меня схема "План" выполняется в конце проекта. Ибо КИП должны на плане собрать практически все специальности. Тоесть пока остальные отделы:
Генплан
Строители
Монтажники
Линейщики
Водоснабжение
Канализация

Не нанесли на генлан свое оборудование, мы не можем выполнить План.
А это означает что все нужно строить с начала проекта.
Я говорю о том что при создании трасс нужно ВЫБИРАТЬ номер кабеля, приборы с позициями и т.д. из схем с исходными данными, а не писать вручную.
Ну и естественно должна быть связь между исходных данных и планом.

Цитата:
Сообщение от zamtmn Посмотреть сообщение
Что значит готовые? серийно выпускаемые? Если серийно - зачем его нутра вмещать в СА? со щитом идет комплект документов - вполне достаточно его приложить к проекту.
Угу серийно выпускаемые.
Вот именно что если изделия серийные то и никаких схем электрических не может быть. На СА указывается обычный щит куда подходят все нужные сигналы от приборов. А сам щит заказывается в спецификации как обычное изделие.
Разработка щитов это прошлый век, где почти в каждом проекте была разработка щитов. Как говорится зачем разрабатывать велосипед если он уже есть.

Цитата:
Сообщение от zamtmn Посмотреть сообщение
План планом, но по СА гораздо быстрее можно понять что датчик стоит например на выходе подогревателя, до запорной арматуры.
Вот именно, Схема автоматизации и предназначена для общей картины всего проекта КИП что заказано из оборудования и приблизительно что где стоит. Естественно мы на этой схеме и видим все позиции приборов по всему проекту КИП.

Цитата:
Сообщение от zamtmn Посмотреть сообщение
Да, всё перечисленное. И это удобно - иметь один документ с централизованной информацией, а не кучу документов с необходимостью
поддерживать "пересекающуюся" информацию в актуальном состоянии.
Что конкретней вы проектируете?
У Вас что весь проект состоит из 2 чертежей и спецификация?
Схема электрическая
План
Спецификация
И остальная вордовская номенклатура.
Вы наверное не работаете с огромными проектами что умудряетесь все вместить на 1 схему. Да и по ГОСТАМ так не положено.
Или Вы не понимаете для чего нужна Схема электрическая.
Или Вы другую схему обзываете Схема электрическая.
Ну да ладно это ваше дело как что называть...

Цитата:
Сообщение от zamtmn Посмотреть сообщение
3D модель может будет точно, план - условно. Конечно можно (нужно) сделать все необходимые разрезы - и показать всё точно, но такие требовательные заказчики мне пока не попадались
"ВЕДОМОСТЬ ОСНОВНЫХ КОМПЛЕКТОВ РАБОЧИХ ЧЕРТЕЖЕЙ"
нет чертежа 3Д модель.
А есть "План чего то там"
А это значит План это ваш точной чертеж в масштабе или без него созданный с помощь второстепенной схемы 3D модели.
3D модель вы не отдаете заказчику и не отдаете на экспертизу. Значит 3D модель это лично ваше удобство для выполнения плана.
В проекте
Eddicordo вне форума  
 
Автор темы   Непрочитано 05.11.2010, 12:12
#82
Frigate

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


Eddicordo,

да, что-то я видно упускаю в объяснениях...

В общем такая последовательность работы:

схема автоматизации, принципиальные электрические схемы управления задвижками, кранами и тп. параллельно со схемой соединений внешних проводок. В этой схеме проставляем номера кабелей при помощи моего блока КАБЕЛЬ ("adv_cable"). Затем уже приступаем к плну трасс. Я ж уже писал, что считаю, что априори схемы внешних уже есть, в них кабели и номера уже проставлены!
Пока алгоритм такой: копируем все схемы внешних на чертеж с планом трасс. Это нужно, чтобы начать задавать траектории кабелей, щелкнув на нужном нам кабеле (блоке с кабелем). Пока сделал так. Именно такой вариант и выложу сегодня вечером, если не отвлекут по домашним делам - у нас же в России 4 и 5 выходные дни

Попозже сделаю вариант, чтобы не копировать схемы внешних на план трасс, а просто по кнопке копировать всхе номера кабелей (вытаскивать их из всех имеющихся на схеме внешних блоков КАБЕЛЬ). А уже в плане трасс номер кабеля, для которого создавать (редактировать, удалять) траекторию, выбирать из списка в диаулоговом окне. Ну а пока просто сами копируем все схемы внешщних в чертеж с планом трасс. Пример такого я выложу в архиве совместно со всеми программами.

Offtop: А пока пошел поставлю зимнюю резину на машину и поменяю масло в движке ))) Зима в Тюмени может прийти неожиданно )))
Frigate вне форума  
 
Непрочитано 05.11.2010, 18:10
#83
zamtmn

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


Цитата:
Угу серийно выпускаемые.
Вот именно что если изделия серийные то и никаких схем электрических не может быть. На СА указывается обычный щит куда подходят все нужные сигналы от приборов. А сам щит заказывается в спецификации как обычное изделие.
Разработка щитов это прошлый век, где почти в каждом проекте была разработка щитов. Как говорится зачем разрабатывать велосипед если он уже есть.
Не стоит так сурово о разработке щитов)) и про отсутствие схем электрических тоже. Велосипеды серийные есть, не спорю, но иногда надо с педалями V8 или квадратными колесами.

Цитата:
Что конкретней вы проектируете?
У Вас что весь проект состоит из 2 чертежей и спецификация?
В основном котельные. То что я всё стараюсь указать на СЭП, не значит что я кроме нее заказчику ничего не выдаю)). Это значит что СЭП является основным проектным документом где централизованно хранится и редактируется практически вся проектная информация. Так принято в САПР EPLAN которую я использую и имхо это очень удобно. (конечно не для проектов которые могут обойтись без СЭП). отчеты типа схем подключения, различных перичней, кж и т.п. в этом случае получаются из СЭП одним нажатием кнопки. При внесении изменений достаточно внести их в СЭП и перегенерировать отчеты.

Цитата:
Или Вы не понимаете для чего нужна Схема электрическая.
Или Вы другую схему обзываете Схема электрическая.
Ну да ладно это ваше дело как что называть...
Можно долго спорить по нормам или не по нормам отражать в СЭП "лишнюю" информацию типа определений кабелей и клемников. Но для САПР это правильный подход - держать всё в одном месте а не размазывать по разным документам. А для чего по вашему нужна СЭП?
zamtmn вне форума  
 
Автор темы   Непрочитано 05.11.2010, 22:38
#84
Frigate

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


zamtmn,

кстати, насколько я знаю, такие САПР как Екуб (может и ЕПЛАН тоже), никак не поддерживают создание плана трасс. Можно было бы легко трансформировать мою программку, чтобы она через текстовый файл (или через VBA) поддерживала обмен данными с тем же Екубом. Думаю, это было бы достаточно оптимальное решение. Ибо все, кроме плана трасс, там все достаточно продумано. И нет, наверное, необходимости в дальнейшем развитии моей программы при условии наличия Екуба.

Ну вот, доделал некоторые ляпы.
Выкладываю пробный вариант. Там внутри есть описание в папке HELP.


Пока есть единственное ограничение:

нельзя , удалив с чертежа все объекты ("выбрать все"-"удалить"), выполнить команду "Очистить" из моего меню, либо команду очистить из стандартного меню автокада.
Вложения
Тип файла: rar ADV_CAD_AutoCAD.rar (712.7 Кб, 133 просмотров)

Последний раз редактировалось Frigate, 05.11.2010 в 22:45.
Frigate вне форума  
 
Непрочитано 05.11.2010, 23:50
#85
zamtmn

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


Frigate
Да, в еплане нет планов в немецком екубе тоже (вроде поинт чтото пытается по этому поводу решить). перегон данных из епланапи туда-сюда наверно легко сожно сделать, только нужно сначала в ADV_CAD решить несколько моментов:
1) Автотрассировка. понятно что не всё сразу, но нужно изначально делать с такой целью. Да, чудесно - автоматизировали подписи трасс, но если подумать что предстоит прошелкивать 100 трасс по 3-4 путям - у меня мышка разряжается от страха)) (цыфры взял с потолка). Прокладка по аналогу - меня почемуто не воодушевила, - держать в голове аналоги, тыкать блоки - слишком много человеческого фактора.
2) совершенно неудобно редактирование, сдвинулась трасса или вылезли смежники - пришли, поорали - нужно обходить. С твоим подходом насколько я понял придется "перещелкивать" всё. Я об этом говорил выше, когда предлагал отождествить кабель полилинией - выбрал бы все полилинии в нужном месте и подвигал их грипсами все разом. а тут я даже незнаю как удобно можно сделать массовое редактирование.
3)Мелочь,но... модальность. гораздо удобней когда запросы с вариантом ответа по умолчанию - не модальные, зачем зря тыкать enter? основная функция программы должна быть удобной по максимуму
zamtmn вне форума  
 
Автор темы   Непрочитано 06.11.2010, 09:43
#86
Frigate

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


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

2) Я от силы пару раз сталкивался с тем, что смежники меняют траекторию эстакады. Причем, если эстакаду и меняют, то это происходит глобально, так что там по-любому придется много чего менять.
И здесь я согласен, что помогла бы именно автотрассировка. Я бы просто передвинул отрезки, которые обозначают эстакады (т.е. возможные пути, по которым может быть проложен кабель), запустил бы автотрассировку и все :-)

3) Тоже с тобой согласен. МОжет быть, следует сделать возможность задания мультипликативного (умножающего) коэффициента одинаковым для всего плана трасс (так, по сути, и должно быть)?
А уже добавочный коэффициент спрашивать для каждой трассы - это необходимость просто.

Добавлю - и очень сильно упрощает труд по подсчету длин кабелей!!! Он был трудоемок и часто выплывали ошибки. А здесь все можно проверить. Можно ввести несколько проверочных функций, к тому же. :-)

Последний раз редактировалось Frigate, 08.11.2010 в 07:02.
Frigate вне форума  
 
Непрочитано 08.11.2010, 10:50
#87
zamtmn

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


Я не спорю, сильно упрощает))
Кстати еще большой минус связанный с невизуальностью кабелей - нужно сделать чтоб все кабели можно было глянуть сразу, и ткнув в трассу какого либо кабеля узнать его имя. Иначе как можно найти неправильно проложенный кабель?
zamtmn вне форума  
 
Автор темы   Непрочитано 09.11.2010, 06:54
#88
Frigate

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


Очень просто ) так же ) ТОлько ткнуть не в кабель, а в "посмотреть трассу кабеля".

=======================================
ВЫЛОЖИЛ релиз 1.05 в ПЕРВОМ сообщении.

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

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

Последний раз редактировалось Frigate, 09.11.2010 в 07:31.
Frigate вне форума  
 
Непрочитано 09.11.2010, 08:47
#89
zamtmn

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


>>Очень просто ) так же ) ТОлько ткнуть не в кабель, а в "посмотреть трассу кабеля".
А если не знаешь какой с ошибкой? перетыкивать все по очереди?
zamtmn вне форума  
 
Автор темы   Непрочитано 09.11.2010, 09:05
#90
Frigate

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


а как ты в твоем варианте узнаешь, какой с ошибкой? Поясни подробнее, плиз. С первого раза не доходит - сильный загруз на работе.

=================
Внес СРОЧНОЕ изменение в программу - одна команда работала неверно.
См. первый пост.
Frigate вне форума  
 
Непрочитано 09.11.2010, 09:19
#91
zamtmn

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


В моем варианте я просто выделю подозрительный кабель и посмотрю в свойствах его имя и параметры.

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

или сдвинулся один пункт назначения - ты вроде все поредактировал, нужно глянуть может еще чтото осталось нередактированное.
zamtmn вне форума  
 
Автор темы   Непрочитано 09.11.2010, 09:35
#92
Frigate

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


в принципе-то все кабели показать можно - нарисуется туча полилиний, а там глюки все можно отследить. чтобы опять таки узнать, какие именно полилинии проходят, можно вызвать команду "создать перечень проходящих кабелей". Так что все реально
Ок, создам такую команду: "Показать трассы всех кабелей"
Это все-го лишь пара строк с помощью mapcar.
Можешь вставить в комстроку:

Код:
[Выделить все]
 
(mapcar 
   (function
     (lambda(x)
      (adv-draw-pline-add (adv-routings-assoclist-to-routing_list x) 0 60 6 0)
     )
   )
(adv-routings-cable_routings-get-data-from-dictionary)
)
Сделаю такое:
"Включить/Отключить режим просмотра трасс всех кабелей"

zamtmn,

так пойдет? )

Последний раз редактировалось Frigate, 09.11.2010 в 10:32.
Frigate вне форума  
 
Непрочитано 09.11.2010, 11:00
#93
Eddicordo

КИП и А
 
Регистрация: 28.04.2010
Киев
Сообщений: 101
<phrase 1=


Frigate,
1) Очень серьезный момент если уже проложенные номера кабелей и их нужно все сместить на +1.
2) Как мне убрать проложенную трассу с блока adv_cable? Но что бы сам блок то остался. Зачем при удалении удалять сам блок?
Мне надо добавить новый кабель. Я не буду вставлять новый я хочу скопировать уже вставленный блок и изменить его на другой мне номер кабеля.
3) Еще 1 момент.
на трассе у меня 2 чертежа с планами. Первый чертеж масштаб 1:100 второй чертеж 1:500. Как быть?

Последний раз редактировалось Eddicordo, 09.11.2010 в 11:19.
Eddicordo вне форума  
 
Автор темы   Непрочитано 09.11.2010, 12:15
#94
Frigate

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


1. Здесь прога бессильна ))) она не работает со схемами внешних - только имеет возможность экспорта в схему внешних подсчитанных длин кабелей.
Если нужно сместить номера кабелей - смещай. Если длины уже до этого были проставлены в схеме внешних, то от смещения они не изменятся Но БД в плане трасс уже не будет соответствовать схеме внешних.
2. Ну так скопируй блок кабеля и измени ему номер. Трассы при этом не копируются. Трассы не привязаны к блокам, только к номера кабелей, которые программа получает (пока) через указание блоков.
3. Если 2 чертежа с разными масштабами (разные файлы), то проблем вообще нет. У каждого своя база данных. В транслируемой с планов трасс инфе хранятся ассоциативные списки типа (("№ 1-ого кабеля" (длина 1-ого кабеля)) ... ("№ n-ого кабеля" (длина n-ого кабеля))).
Поочередно во время одного сеанса АВТОКАДа транслируем инфу с одного, потом с другого файла. Повториться не удастся - программа это отслеживает.
Потом открываем файл со схемами внешних соединений, где кабели представлены блоками adv_cable. Вызываем прогу из меню "Схемы внешних... - Длины кабелей по транслированной...". Вуаля - вы получаете проставленные длины всех кабелей в схеме внешних.

А вот если один чертеж, то так уже не получится. Можно посоветовать просто скопировать часть чертежа, где другой формат, в другой файл. Этот файл исп-ть лишь как вспомогательный план трасс для расчета. Будут 2 файла с разными масштабами-об этом я уже писал.

И вообще - здесбь уже обсуждалось , как действовать в случае, если кабель пролдожен по нескольким планам трасс. Все уже учтено это в проге.


В общем почти на все вопросы ответ один - нужна автотрассировка (как скажет автор известной всем книги "рисование" по указанным элементам трассы), она все решит.

Последний раз редактировалось Frigate, 09.11.2010 в 13:58.
Frigate вне форума  
 
Непрочитано 09.11.2010, 14:01
#95
zamtmn

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


да, пойдет, когда будет сидеть на кнопке)).
Обработка ошибок у тебя черезчур агрессивная, я конечно понимаю, в лучших традициях этого форума)), но нафига она ундо делает? делай изменения в чертеже после нормальной отработки команды, перед выходом, а пока команда работает запоминай всё во временных местах - унда непонадобится. Окошко - раздразжает, а то что зум и пан откатываются - вообще хороший повод плюнуть и нарисовать всё руками))
zamtmn вне форума  
 
Автор темы   Непрочитано 09.11.2010, 14:52
#96
Frigate

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


что за пан?

а не надо на ESC жать, товарисч )))

ладно, уберу модальное окошко, но сделаю анализ ESC ли был нажат - и все-таки пропишу текстом "ESC жать не надо, товарисч!"

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

хорошо, это доработаю.

Последний раз редактировалось Frigate, 09.11.2010 в 15:33.
Frigate вне форума  
 
Непрочитано 09.11.2010, 15:26
#97
zamtmn

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


надо, батенька, надо. Приведи привер автокадовской команды делающей ундо по esc? вполне законный прием работы.

короткие обозначения кабеля типа "1" крутятся и растягиваются в маркере кабеля))

пан = _pan
зум = _zoom
zamtmn вне форума  
 
Автор темы   Непрочитано 09.11.2010, 15:41
#98
Frigate

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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
короткие обозначения кабеля типа "1" крутятся и растягиваются в маркере кабеля))
что значит крутятся? )))
не крутятся а просто растягиваются "до офигения"

я это подправлю, но только попозже

а пока если надо, используй

adv-programme-edit-block-attrib-alignment-stretch_coeff_0,8

Последний раз редактировалось Frigate, 09.11.2010 в 15:49.
Frigate вне форума  
 
Непрочитано 10.11.2010, 09:44
#99
Eddicordo

КИП и А
 
Регистрация: 28.04.2010
Киев
Сообщений: 101
<phrase 1=


Frigate,
Мысль такая появилась.
По поводу изменения длинны трассы или направления ее.
У тебя при "Редактировать трассу кабеля." Тоже самое что проложить трассу заново. Теряется суть самого понятие редактирование
Предлагаю при редактировании.
1) Указал нужный номер кабеля для редактирования
2) Открылись абсолютно все невидимые проложенные трассы и подсветилась та поллиния которую собираемся редактировать.
3) На полилинии появилисьмаркеры для редактирования и ты оттягивая за маркеры изменяешь направление или длину своего кабеля. Если же надо оттянуть все проложенные кабели собранные в одну точке (в Операторную) то выделил все полилинии и дотянул до нужно точки.
4) При окончании редактирования все полилинии скрываются.

Недочеты.
1) При перечне кабелей в разрезе трассы не правильная сортировка. Кабели с номерами 20А и 2D.
2D должен стоять первый по сравнению с 20А.
При раскладке по столбцам. Сортировка должна сортировать по столбцам, а не по строкам. С лева на право.
То есть сначала сортирует первый столбец потом второй.
2) Группировка в перечне всех прямоугольников в единый блок, для того что бы в случае перенести перечень в другое место не выделять все прямоугольники отдельно.

Последний раз редактировалось Eddicordo, 10.11.2010 в 10:44.
Eddicordo вне форума  
 
Автор темы   Непрочитано 10.11.2010, 11:09
#100
Frigate

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


ответ на "недочеты":

1. Согласен. для своего проекта проверял - там все ок. Смотри как ставит номера в перечне при моих номерах кабелей. Для другой системы нумерации кабеля - не подойдет.
Изменю сортировку по функциям от VVA на сортировку строк с цифрами. Посмотрю, как там будет работать.

2. Да, я это уже записал в список неободимых корректировок.

По поводу редактирования:

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

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

Последний раз редактировалось Frigate, 10.11.2010 в 13:42.
Frigate вне форума  
 
Непрочитано 10.11.2010, 11:22
#101
zamtmn

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


Сортировку в лоб делать не стоит - это нужно обязательно исправить. Например можно все цифровые вхождения в имени дополнять ведущими нулями до определенной длины и потом сравнивать имена
zamtmn вне форума  
 
Автор темы   Непрочитано 11.11.2010, 05:55
#102
Frigate

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


zamtmn,

именно это и делают функции от VVA
Frigate вне форума  
 
Автор темы   Непрочитано 12.11.2010, 19:17
#103
Frigate

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


Получилось сделать автотрассировку. ПОка еще все в рабочем и отладочном виде.

Немного усложнило работу момент хранения VLA-OBJECT. VLA-OBJECT я храню в атрибуте. А в нем как известно тип данных String. После чтения данных (read) получаю список примерно такого вида
(VLA-OBJECT: AcadBlockRef ххх). Указатель пропадает. Если через вариант действовать, то тоже нге получается. Пришлось хранить вместо VLA-OBJECT хендлы вершин графов.
Сам же граф, как вы и догадались наверняка, представлен в виде временно создаваемых блоков вершин графа.

Дооформлю все, тогда выложу. А то пока отладочный вид у чертежа и у блоков )))

Последний раз редактировалось Frigate, 12.11.2010 в 19:39.
Frigate вне форума  
 
Непрочитано 12.11.2010, 20:02
#104
zamtmn

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


а зачем блоки? граф надо создавать из связей (линейных примитивов) - блоки в вершинах лишняя возня пользователю. создал перед трассировкой, потрассировал, забыл...
zamtmn вне форума  
 
Автор темы   Непрочитано 12.11.2010, 21:39
#105
Frigate

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


zamtmn,

не спеши )))

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

а пользователь только и делает, что рисует отрезками линию трассы.

Последний раз редактировалось Frigate, 12.11.2010 в 21:40. Причина: а пользователь только и делает, что рисует отрезками линию трассы.
Frigate вне форума  
 
Непрочитано 12.11.2010, 21:54
#106
zamtmn

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


Вообще, вставка графических объектов штука по трудоемкости не сравнимая с экономией нескольких переменных... смысл такой "экономии" мне не понятен, и ничего кроме лишних тормозов не даст. Блоки должны быть - шкафы, датчики и т.п. и они не временные, их вставляет и передвигает пользователь
Никаких начаьных точек тоже выделять не стоит - сегодня одна операторская, а завтра их десять на одной площадке
zamtmn вне форума  
 
Автор темы   Непрочитано 13.11.2010, 07:13
#107
Frigate

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


zamtmn,

а что ж тогда должно высчитываться?
Расстояние от каждой вершины до каждой?

И как по-твоему вообще должна происходить автопрокладка кабеля?

Это вот точно абсолютно ненужная трата машино времени.

Блоки вершин вставлять не нужно. Они вставляются сами. На концах отрезков, которыми рисуется трасса.

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

Итак, чтобы каждая из выбранных линий соединялась с конточками других линий только конточками. Как это лучше проверить? Кто подскажет алгоритм?
Frigate вне форума  
 
Непрочитано 13.11.2010, 08:43
#108
zamtmn

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


>>И как по-твоему вообще должна происходить автопрокладка кабеля?
также как и по твоему - по графу трассы. только этот граф совсем необязательно рисовать (временные блоки в вершинах), его нужно формировать в памяти.

>>Так что придется думать, как этот вариант проанализировать и исправить.
список примитивов на постройку графа можно проверить на самопересечения отлавливая "T" образные пересечения. пересекаемые сегменты разбивать на 2 в точке пересечения. т.е. было 2 линии - стало 3. также можно поступить и с "X" пересечениями - было 2 линии стало 4. причем линии тут не чрафические примитивы, а сущьности твоей программы
zamtmn вне форума  
 
Автор темы   Непрочитано 13.11.2010, 15:54
#109
Frigate

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


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

а вот с разбиениями это ты хорошо посоветовал. Главное, как это должно выглядеть в алгоритме... Пока не задумывался
Frigate вне форума  
 
Непрочитано 13.11.2010, 16:28
#110
zamtmn

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


>>Главное, как это должно выглядеть в алгоритме

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

- обрабатывать полученный список линий перед трассировкой, не меняя примитивы в чертеже.
zamtmn вне форума  
 
Автор темы   Непрочитано 14.11.2010, 16:44
#111
Frigate

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


zamtmn,

в принципе второй путь совсем почти такой же, как и первый. Если нужнро будет разбивать примитивы даже, то при этом основные обхекты то все равно останутся. Такая вот хорошая функция explode в автокаде. Она как бы копирует объект, разбивает его, возвращает список объектов (как массив). А изначальный объект остается. ЕГо можно удалять, а можно и оставить.

а по поводу алгоритма ты мне так и не ответил. Сам математический метод какой должен быть? МНе пока видится только так:

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

Достаточно муторный вариант.

ВОт я и спрашиваю, может кто более оптимальный способ знает, как узнать, не пересекаются ли 2 отрезка между собой (не в конточках)?
Может метры подскажут? VVA, ShaggyDoc , КрЫс?
Наверняка они знают, как это сделать
Frigate вне форума  
 
Непрочитано 14.11.2010, 17:02
#112
TararykovDG

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


Цитата:
Сообщение от Frigate Посмотреть сообщение
ВОт я и спрашиваю, может кто более оптимальный способ знает, как узнать, не пересекаются ли 2 отрезка между собой (не в конточках)?
Может я чет не так понял, но вообще есть функция (inters <точка1> <точка2> <точка3> <точка4> [<признак>])
Вычисляет координаты точки пересечения двух отрезков. Первый отрезок задается <точка1> <точка2>, второй <точка3> <точка4>.
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 14.11.2010, 17:27
#113
zamtmn

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


>>не пересекаются ли 2 отрезка между собой (не в конточках)?
Это знает интернет... пошарь на пример на http://algolist.manual.ru или других подобных сайтах. Но, тебе нужно работать не с отрезками заданными точками р1 и р2, а с лучами заданными р1+(р2-р1)*t, и соответственно иметь не координаты пересечения а параметр t в точке пересечения. если t в пределах [0..1] - пересечение находится на отрезке. t=0 - в начале, t=1 - в конце. координаты пересечения можно узнать в аодставив t в формулу луча. Это математически, у автокада думаю должны быть по этому поводу свои методы.

Алгоритм элементарный - проверяем список отрезков на самопересечения, в случае обнаружения - разбиваем, уменьшаем отрезок в списке, а остаток отрезка добавляем в конец списка. так пока не проверим все отрезки.
zamtmn вне форума  
 
Автор темы   Непрочитано 14.11.2010, 18:02
#114
Frigate

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


zamtmn,

спасибо за совет, ща гляну ссылку.

Кстати, нельзя разбивать отрезки, если они пересекаются вот так: X
Потому что трассы могут пересекаться, но быть на разных уровнях (к примеру, кабель идет в траншее, но не заходит на эстакаду, хотя траншея пересекает линию эстакады на плане. Что думаешь по этому поводу? Насколько возможна такая ситуация? Думаю, что стоит оставить возможность таких пересечений. Просто если ползователь оставит у себя такие пересечения (Х) и вдруг укажет такие начальную и конечную точки, которые невозможно найти программе (как раз из-а Х-пересечений), то программа не вылетит, а просто в конце выполнения укажет, что такие-то узлы не смогли быть соединены между собой. Или, напр.,"Трасса от точки "Операторная" до точки "поз. 10" не может быть указана. Возможно, неправильно обозначена трасса."
Где-то так )))
Frigate вне форума  
 
Непрочитано 14.11.2010, 18:34
#115
zamtmn

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


>>Что думаешь по этому поводу?
думаю что для трассы просто линией не обойтись к ней всеравно нужно еще привязывать информацию по возможности трассировки кабелей разных типов. разноуровневые пересечения вполне можно осуществить в 3Д - трассировке без разницы 2д или 3д... В zcad я трассу разбиваю на x пересечениях, потому что изначально этот примитив был задуман как цепь для схем. Со временем планирую для каждого отрезка трассы задать способ прокладки и допустимые типы кабелей и разбивать с учетом этих параметров. Также необходимы разрывы типа стояков и уходов на другие планы, чтоб связывать пространственно не связанные трассы
zamtmn вне форума  
 
Автор темы   Непрочитано 14.11.2010, 19:55
#116
Frigate

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


zamtmn,
мы опять с тобой на разных языках говорим )))
Каждый кабель линией у нас никто не прорисовывает. Рисуют линию, представляющую собой поток кабелей (как частный случай - один кабель). См. ГОСТ ГОСТ 21.408-93 Правила выполнения РД АСУ. Там показано это. Да и пожарники в нашем проектном институте не рисуют каждый кабель, если по трассе проходит поток кабелей. Напр., на плане масштабом (1:100) это не нужно, нереально и незачем (см. тот же ГОСТ). Кабели - не трубы. Хотя даже и трубы,Ю когда идут пучком, для наглядности всегда показывают в разрезе. Кабели - так же. Разрез эстакады, траншеи, просто лотков вдоль стены.
Поэтому простой линией - поток кабелей, саму трассу, по которой кабели пойдут.
А на Х-пересечения я может просто укажу пользователю, но разбивать их принудительно не буду.


TararykovDG,

да, точно. Я ж совсем забыл, что есть такая функция )))


zamtmn,

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

Последний раз редактировалось Frigate, 14.11.2010 в 20:14.
Frigate вне форума  
 
Непрочитано 15.11.2010, 22:03
#117
Nikolay 2


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


За темой слежу с самого начала, т.к. имеется желание автоматизировать процесс, но к сожалению Lisp не владею. Жаль, что Supermax не часто в этой теме появляется, насколько понял по его уточняющим вопросам по различным функциям он решает аналогичную задачу. С этой темой http://forum.dwg.ru/showthread.php?t=14377&page=3 ты знаком, он как то даже сказал "...Nikolay 2, я пока в запарке и даже в темах ответы оперативно давать не могу. Жди." ...
Цитата:
Сообщение от Frigate Посмотреть сообщение
Кабели - не трубы. Хотя....когда идут пучком, для наглядности всегда показывают в разрезе. Кабели - так же. Разрез эстакады, траншеи, просто лотков вдоль стены. Поэтому простой линией - поток кабелей, саму трассу, по которой кабели пойдут.
Полностью согласен, так обычно и делается и этого вполне достаточно.
Цитата:
Сообщение от Frigate Посмотреть сообщение
А трассу все-таки придется пользователю разок прорисовать отрезками, по моей команде созданными. В них пользователь сможет задать количество полок с лотками, из типы, которые проходят по данному участку. Вот здесь и правда буду пользоваться расширенными данными линий ))) Зато прога сама будет считать количество лотков. А в будущем - стоек и полок (если понадобится).
А вот еще бы реализовать автоматом отображение сечения трассы (эстакады, лотков или траншеи) в указанной точке трассы на плане сетей или на отдельном листе (типа того, как сейчас выводится перечень кабелей в разрезе трассы). Может быть заготовки этих разрезов можно наделать как шаблоны и на них организовывать ссылку??? Если это будет реализовано, многие будут благодарны.

Последний раз редактировалось Nikolay 2, 15.11.2010 в 22:23.
Nikolay 2 вне форума  
 
Непрочитано 15.11.2010, 22:35
#118
zamtmn

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


>>Полностью согласен, так обычно и делается и этого вполне достаточно.
я не спорю, при автотрассировке так и тожно быть. Тут вопрос в другом - как УДОБНО для пользователя получить информацию кто с кем и чем соединен.
Но если взялся сам указывать трассы - делать это нужно максимально открытым способом, с привычными пользователю набором инструментов редактирования.
По факту эти "полилинии" у автора есть, токлько спрятаны и под редактирование замаскировано пересоздание. А про привычные вещи типа убрать\добавить узел, растянуть - пользователю приходится забыть... Только ненадо говорить что планы почти не редактируются - делаются рас и навсегда)). Еще как редактируются
zamtmn вне форума  
 
Автор темы   Непрочитано 16.11.2010, 07:51
#119
Frigate

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


Nikolay 2,

честно говоря, разрезы мне не кажется реальным реализовать, по крайней мере для моих нужд их автоматом не сделать. Эстакады у нас делают электрики, им в сво. очередь сначала дают разрезы технологи - ведь в основном все сети идут вместе. Так что мы получаем иногда не слишком удобоваримый набор разрезов. Часто еще и в условном масштабе - т.е. без масштаба, с проставленными размерами - до земли, между полками, до труб и тп. Как это все программно обработать - не представляю. Единственное - на эти же разрезы можно копировать перечень кабелей. Для удобства копирования уже сделал несколько полезных кнопок. Скоро выложу подправленный вариант проги.

zamtmn,

может я б и занялся полилиниями, чтобы их можно было редактировать... Но пока времени очень мало, и все его расходую на автотрассировку. Сегодня все вылетавшие ошибки удалось побороть. Осталось только избавиться от тестировочного анахронизма - блоков вершин - все считать "скрыто". Ну и продумать, как указывать реальные позиции.
Frigate вне форума  
 
Непрочитано 16.11.2010, 17:52
#120
Nikolay 2


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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
...Тут вопрос в другом - как УДОБНО для пользователя получить информацию кто с кем и чем соединен.
Но если взялся сам указывать трассы - делать это нужно максимально открытым способом, с привычными пользователю набором инструментов редактирования.
По факту эти "полилинии" у автора есть, токлько спрятаны и под редактирование замаскировано пересоздание. А про привычные вещи типа убрать\добавить узел, растянуть - пользователю приходится забыть... Только ненадо говорить что планы почти не редактируются - делаются рас и навсегда)). Еще как редактируются
С точки зрения использования данной программы, пользователю все равно чем выполнена трасса отрезком или полилинией, результат есть, а вот в случае редактирования трассы...кто как привык.ИМХО. Просто не часто встречаю проектировщиков использующих полилинию, даже для трассировки кабелей.
Трассы конечно редактируются и полилиния здесь более удобна (добавил 1,2...10 вершин и таскай за узлы как нужно. Сам для этих целей использую lisp "Новые команды для работы с полилинией"), но и перечертить не много времени нужно. А затем автотрассировкой....
Цитата:
Сообщение от Frigate Посмотреть сообщение
...Часто еще и в условном масштабе - т.е. без масштаба, с проставленными размерами - до земли, между полками, до труб и тп. Как это все программно обработать - не представляю. Единственное - на эти же разрезы можно копировать перечень кабелей. Для удобства копирования уже сделал несколько полезных кнопок. Скоро выложу подправленный вариант проги.
У нас цепочка подготовки разрезов аналогичная, с той лишь разницей, что все делается 1:1. Ну что ж посмотрим на кнопки... А про таблицу на схеме соединения внешних проводок не забыл? Точнее про то, что кабели отображенные на схеме должны там прописаться и просуммироваться по типу, жильности..., а схем может быть несколько и в разных файлах, о передачи данных между разными файлами ты как то обмолвился (генплан в одном файле, схема(ы) в другом(их))
Nikolay 2 вне форума  
 
Автор темы   Непрочитано 16.11.2010, 20:18
#121
Frigate

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


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 Кб, 4121 просмотров)

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

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


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

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

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


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

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

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


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

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

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


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


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


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

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

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


Nikolay 2,

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

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


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


Цитата:
Сообщение от 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
Москва-Тюмень
Сообщений: 421


Nikolay 2,

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

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

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

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


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

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

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


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


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

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

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

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


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

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

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

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

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

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


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


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

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


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

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


Цитата:
Сообщение от 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,429
<phrase 1=


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

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,800
<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
Москва-Тюмень
Сообщений: 421


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

zamtmn,

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

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

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


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


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

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


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

ADV_CAD_AutoCAD ver. 1.10.rar

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

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

Последний раз редактировалось Frigate, 10.02.2011 в 13:15.
Frigate вне форума  
 
Автор темы   Непрочитано 14.02.2011, 07:15
#141
Frigate

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


Nikolay 2, zamtmn,

вы смотрели? Будут отзывы?

такое чувство, что форум находится в зимней спячке

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

Уважаемый всеми ShaggyDoc был абсолютно прав, еще в начале темы указав:

Цитата:
Если же непременно надо в AutoCAD, то надо к полилиниям (или вообще любым объектам) привязывать расширенные данные. Лучше всего если сами данные хранятся в Базе Данных, а внутри чертежа только ссылки на них. Еще лучше, если и все координаты трасс хранятся в базе данных.
База Данных постепенно разрастается и создается - пока это только всевозможные типы кабелей с возможными для них сечениями и жильностью. И конечно же с возможностью добавления своих типов. ПОКА эта БД представляет собой текстовый файл.

Что касается БД Проекта - то самым лучшим вариантом оказался вариант БЕЗ внешних файлов БД, а хранение все БД с трассами в самом чертежа с планом трасс, в словарях чертежа.

Таким образом мы можем как обычно копироваь проект и быть уверенными, что вся БД будет скопирована. Это оптимальный вариант.

Последний раз редактировалось Frigate, 14.02.2011 в 08:44.
Frigate вне форума  
 
Непрочитано 14.02.2011, 09:46
#142
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,104


Цитата:
Это оптимальный вариант.
Это наихудший вариант - пригоден только для "кустаря-одиночки", который только один и работает с этой "базой данных".
ShaggyDoc вне форума  
 
Непрочитано 14.02.2011, 09:56
#143
zamtmn

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


>>Будут отзывы?
некогда(( и лень))

В целом всё по старому, негатив:

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

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

позитив:
- вроде вполне юзабельно.
zamtmn вне форума  
 
Автор темы   Непрочитано 14.02.2011, 10:39
#144
Frigate

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


ShaggyDoc,
так у меня в файле чертежа хранится ТОЛЬКО БД этого чертежа. Ведь и в автокаде несколько человек не могут одновременно править один и тот же чертеж, по крайней мере я такого не видел и не знаю.
А все "внешние" БД, общие для проекта, будут в корне диска C:, либо на сервере. А то, что одновременно БД не могут редактировать несколько человек - так это не беда.

zamtmn,

1. ESC прерывает команду. Все данные, что были ДО команды, восстанавливаются.
2. Описание, как выйти и как работать, есть в справке.
3. Когда именно Ctrl+Z не сработало, опиши, плиз, поконкретнее. Везде метки Undo ставил. Все вроде работало.
4. Кабель никогда не станет ФИЗИЧЕСКИ полилинией плана трасс - он всегда лишь хранится как список точек в ассоциативном списке кабелей.
Возможно команды редактирования изживут себя, когда появится автораскладка по существующему "скелету" трассы.

Кстати, работа ЛИСПа со списками - это что-то! На основе ассоц. списка очень просто реализовать алгоритм Дейкстры, без всяких "матриц-шматриц"

И еще уточнение: кабель просто отображается в режиме Редактирования как полилиния. Если ты полилинию не передвигаешь (не редактируешь), то она и не учитывается в БД. Вполне удобно, как мне кажется. И для использования, и для программирования.

И еще об ESC: немного еще подучусь, и буду в некоторых местах запрещать нажатие ESC - когда очень нужен ввод, пользователь не сможет выйти, не сделв ввода. А в большинстве случаев ESC будет аналогом выхода из программы или из какого-либо цикла действий, как и штатный выход по Space.

Да, если тебе нравится куча лишних мозолящих глаз полилиний, то можешь оформлять чертеж с планом трасс в режиме редактирования кабельных трасс ))) ТОлько я реакторов на полилинии не писал - если будешь их двигать, длина кабелей автоматом обновляться не будет.
И не принято у киповцев рисовать каждый кабель - он нам визуально не нужен постоянно "висящим" на чертеже, только его свойства :-)
У пожарников раскидка по шлейфам в зданиях - там это нужно. У NEDISа нужно тоже - для проектов освещения.
А нам нужно видеть линию с условным обозначением эстакады, траншеи и т.п., т.е. основу, "скелет" трассы. Чтобы никакие там полилинии ее не загораживали.
Да и удобно, если ты обратил конечно внимание, редактировать кабели: можно выбрать показать полилинии кабелей с определенными номерами, можно показать полилинии кабелей, проходящих через данную точку, можно выбрать ВСЕ кабели в базе данных. Только выбраннные и "воплотятся" в виде полилиний.

Цитата:
позитив:
- вроде вполне юзабельно.
бальзам на сердце )))

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

Последний раз редактировалось Frigate, 14.02.2011 в 11:03.
Frigate вне форума  
 
Непрочитано 14.02.2011, 10:49
#145
zamtmn

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


>> 1. ESC прерывает команду. Все данные, что были ДО команды, восстанавливаются
>>3. Когда именно Ctrl+Z не сработало, опиши, плиз, поконкретнее. Везде метки Undo ставил. Все вроде работало.

Хозяин-барин, но я привык что еск оставляет всё что было нарисовано до нажатия. Ctrl+Z у тебя не отменяет последний введенный сегмент

>>Кстати, работа ЛИСПа со списками - это что-то! На основе ассоц. списка очень просто реализовать алгоритм Дейкстры, без всяких "матриц-шматриц"
Фанатеть от одного языка стоит не забывая про другие)) там тоже все в порядке и с дейкстрой и с шматрицами
zamtmn вне форума  
 
Автор темы   Непрочитано 14.02.2011, 11:16
#146
Frigate

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


zamtmn,
Цитата:
Сообщение от zamtmn Посмотреть сообщение
Фанатеть от одного языка стоит не забывая про другие)) там тоже все в порядке и с дейкстрой и с шматрицами
наверное, только вот уже привычный список так просто в VB не заменить - будут вложенные один в другой массивы, хотя наверное можно тоже сделать функции для чтения.
Либо просто использовать другой подход.
Подход ЛИСПа мне уже близок.
От VB пока вынужденно отдалился, хотя было дело - ради прикола писал на нем игрушки-бродилки

Цитата:
Ctrl+Z у тебя не отменяет последний введенный сегмент
да, что есть, то есть, над этим алгоритмом не думал... и пока нет времени его придумывать, чтобы работал КАК в автокаде создание линии, только если АКСАКАЛЫ подскажут

На случай принципиальных личностей есть возможность указать полилинию, которая и станет трассой кабеля )))

Offtop:
Приходится пока проверять возможности работы и программирования в ZWcad - возможный вариант замены автокада в нашем институте. Не сильно радуют глюки и сбои в работе.

Последний раз редактировалось Frigate, 14.02.2011 в 11:24.
Frigate вне форума  
 
Непрочитано 14.02.2011, 12:07
#147
zamtmn

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


Прокоментирую незамеченное редактирование:
Цитата:
Да, если тебе нравится куча лишних мозолящих глаз полилиний, то можешь оформлять чертеж с планом трасс в режиме редактирования кабельных трасс ))) ТОлько я реакторов на полилинии не писал - если будешь их двигать, длина кабелей автоматом обновляться не будет.
Они не лишние, они доступные и наглядные... Я вот никак не догоняю упорства с которым ты их прячешь. Автокад распрядится с ними по любому быстрей, надежней и удобней чем твоя программа. реакторы не нужны, вполне хватит выполнения команды для обновления
Цитата:
И не принято у киповцев рисовать каждый кабель - он нам визуально не нужен постоянно "висящим" на чертеже, только его свойства :-)
У пожарников раскидка по шлейфам в зданиях - там это нужно. У NEDISа нужно тоже - для проектов освещения.
А нам нужно видеть линию с условным обозначением эстакады, траншеи и т.п., т.е. основу, "скелет" трассы. Чтобы никакие там полилинии ее не загораживали.
Принято, не принято - однако ты пока рисуешь каждый кабель отдельно т.е. у тебя принято)). Я вообще сторонник того, что ВСЁ что можно должно быть визуально и иметь представителя на чертеже для доступа к свойствам из чертежа.

Последний раз редактировалось zamtmn, 14.02.2011 в 12:16.
zamtmn вне форума  
 
Автор темы   Непрочитано 14.02.2011, 14:15
#148
Frigate

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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Принято, не принято - однако ты пока рисуешь каждый кабель отдельно т.е. у тебя принято)).
да я не рисую, а обозначаю трассу :-)

Пойми, у меня на плане НЕ ДОЛЖНО быть никаких доп. линий. Я должен видеть только спец. типы линий, напр.:
- Nэ - Nэ - Nэ -

обозначающие прокладку кабелей по эстакада, либо другие типы линий с другими типами прокладки кабелей.

Ты же предлагаешьш рисовать все полилиниями и так и оставлять. А что тебе даст, что вместо одной полилинии будут лежать 15 полилиний, из которых где какая ты НЕ поймешь без написания программ для фильтрации, определения номера кабеля каждой плинии, интерфейса для выбора именно нужного тебе кабеля (напр., через диалоговое окно). Так чем это отличается в выгодную сторону от моего варианта, когда эти полилинии НЕ видны?
И еще - как ты стандартными средствами автокада ОДНОВРЕМЕННО добавишь вершины или присоединишь отрезки к НЕСКОЛЬКИМ полилиниям?
Не работает у меня что-то опция <Несколько> - позволяет только штучный выбор полилиний.
Frigate вне форума  
 
Непрочитано 14.02.2011, 14:48
#149
zamtmn

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


Цитата:
Пойми, у меня на плане НЕ ДОЛЖНО быть никаких доп. линий. Я должен видеть только спец. типы линий, напр.:
- Nэ - Nэ - Nэ -
Они не должны печататься, а не небыть, печататься вместо них какраз должна трасса.
Цитата:
Ты же предлагаешьш рисовать все полилиниями и так и оставлять. А что тебе даст, что вместо одной полилинии будут лежать 15 полилиний, из которых где какая ты НЕ поймешь без написания программ для фильтрации, определения номера кабеля каждой плинии, интерфейса для выбора именно нужного тебе кабеля (напр., через диалоговое окно). Так чем это отличается в выгодную сторону от моего варианта, когда эти полилинии НЕ видны?
А даст это то, что пользователь постоянно будет видеть ситуацию на чертеже, надоест, выключит слой и вернется в твой вариант. Да, без програмных средств всё понять не получится, но это лучше, чем совсем ничего.
Тебе не придется реализовывать применительно к своим данным все возможные способы редактирования, только экзотические - например описаное добавление вершины в несколько линий. Все сочетания ctrl-z и esc будут работать как надо без усилий с твоей стороны.

Какая часть программы (в процентах) у тебя сейчас отвечает за основные функции, а какая за поддержку добавленных сущностей?
zamtmn вне форума  
 
Автор темы   Непрочитано 14.02.2011, 15:53
#150
Frigate

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


zamtmn,

так и щас никто не мешает именно так работать )))

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

Так что нажми кнопку редактирование - и наслаждайся полилиниями ))) можешь их таскать, редактировать и тп )))

весь полезный функционал проги исползьуется.

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

Так что рисуй полилинию, подцепляй ее как трассу кабеля - и будет тебе щастье )))

В общем, не совсем так, как тыхочешь, но у меня есть по твоему запросу все - как мне кажется )))

А в принципе ты понимаешь, что на вкус и цвет...

Мне вот к примеру всегда вполне нравилось проги в Блокноте писать (где только 1 Undo), а проверять, копируя код в комстроку Акада

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

Я свою прогу в этот сравнении как VLISP рассматриваю по сравнению с обычными подсчетами длин кабелей, которые мы тут стандартно делали. Да что длины... Главное, из-за чего весь сыр-бор затеял - чтобы не запутаться в том, где какие кабели у меня по трассе проходят - надо ж мне было номера всех кабелей, проходящих через указываемую точку, автоматом получать. Вот и пошло поехало )))
В итоге все дорастает до полномасштабной проги, которая может быть дополнением к Е-Кубу, как надстройка, помогающая сделать план трасс и все расчеты по нему. Вот это цель, пока еще не достигнутая, так как много вопросов нерешенных еще... А решу - автотрассировку автоматом будет несложно прикрутить, учитывая, что она у меня и так уже есть, работающая - но только в тестовом режиме и на тестовом объекте. Чтобы ее полноценно использовать, надо еще много новшеств ввести - тогда пользователю (в первую очередь мне и коллегам по отделу) будет удобно ей пользоваться. И еще предусмотреть в будущем возможность перевода проги на ЗВкад или БриксКАД (что в принципе реально, ибо у них есть все возможности программирования, только моментами кривоватые и неудобные после Автокада).


Интересно уже: тестировал скачанную вчера ознакомительную версию БРИКСКАД - БЕЗ переделки работают ВСЕ функции и команды, за исключением вставки перечня элементов - в БРИКСКАД 11 нет таблиц совсем. И он их не поддерживает. ТАк что з аисключением одной ложки дегтя, есть бочка меда ))) Так что совместимость БРИКСКАДА и АВТОКАДА на уровне основ АВТОЛИСПА и VLISPа есть полная, что радует.

Последний раз редактировалось Frigate, 15.02.2011 в 09:31.
Frigate вне форума  
 
Автор темы   Непрочитано 18.03.2011, 06:56
#151
Frigate

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


скачиваний немало, а отзывов нет.

КТо-нибудь еще пользуется прогой? Жду конструктивных предложений.

Николай2, а ты куда исчез?
Frigate вне форума  
 
Непрочитано 18.03.2011, 14:10
#152
Nikolay 2


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


Цитата:
Сообщение от Frigate Посмотреть сообщение
Николай2, а ты куда исчез?
Здесь я, здесь. Релиз 1.10 скачал сразу же, да вот не заладилось-приболел. Вроде бы оживаю. Дня через два-три отпишусь по результатам тестирования, но сразу предупреждаю, что рекомендаций по структуре и взаимосвязям в программе не смогу дать (не программист я, просто КИПовец), ну и естественно все сказанное будет субъективно, но максимально объективно. По организации связей в проге считаю в первую очередь нужно обращать внимание на замечания/предложения ShaggyDoc (все таки, даже имеющийся в открытом доступе RuCAD, неплох) и zamtmn, правде ZCAD последний я не очень потестил, времени в обрез (хотя пожаркой как раз и нагружен)
Nikolay 2 вне форума  
 
Автор темы   Непрочитано 28.03.2011, 08:42
#153
Frigate

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


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

Сейчас еще стараюсь БД о кабелях проекта перенести из чертежа во внешний файл. Хотел сделать в Excel, но в связи с вводом у нас Open Office, пришлось сделать в универсальном csv формате.

Ключевым у кабелей взял Handle блоков кабеля в схемах соединений. И в плане трасс стараюсь (незримо для пользователя) переделать проги, чтобы именно для определенного хендла сохранялась та или иная трасса. Таким образом я решу проблему изменения номера кабеля на схеме соединений.

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

Скоро уже уйду от необходимости копирования блоков кабеля со схем внешних на план трасс (это анахронизхм, конечно). Будет теперь список, раскрывающийся в диалоговом окне. Для наглядности будет возможность вставить матрицу блоков, изображающих имеющиеся в проекте номера кабелей - это делается чисто для наглядности. Некоторым такой вариант больше подойдет, чем выбор номера кабеля из списка в диалоговом окне.
Frigate вне форума  
 
Непрочитано 19.04.2011, 11:06
#154
Lenya


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


Frigate

Я новичок на форуме, попала случайно благодаря Вашей теме о трассировке кабелей.
Подскажите пожалуйста, как найти команды по прокладке трасс. Я подгрузила ваши надстройки, открыла файлы. В Хелпнике у Вас написано команда "Создать трассу кабеля". Где эти кнопки должны быть?
Специфика моей работы - прокладка большого количества кабелей(свыше 1000, разных уровней) в цехах. Мы не используем в своей работе электрические схемы (они уже готовы другой фирмой), только общий план в масштабе 1:1.
Lenya вне форума  
 
Автор темы   Непрочитано 19.04.2011, 11:42
#155
Frigate

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


Lenya,

День добрый :-)

Приятно, что страничку еще посещают, особенно прекрасные дамы :-)

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

МОжете немного пояснить, для начала:

1. что вы должны получить в результате работы - длины всех кабелей с учетом различных поправок?
А куда потом заносите эти длины? В кабельный журнал?
В каком формате журнал?
2. У вас план единственный, в одном файле в простанстве модели?
3. В программе нет привязки в высоте прокладки кабелей, все только в 2D. Все отметки (переходы трасс вверх/вниз) Вы должны учитывать при помощи добавочного коэффициента. Думаю, это Вам и так понятно.

Я в ближайшие дни буду дорабатывать программу, чтобы для выбора кабеля не нужно было тыкать в блок, а можно было выбрать нужные кабели из списка в диалоговом окне. А затем, выбрав нужный кабель (по номеру кабеля), провести над ними любые операции - удалить трассы из БД, отредактировать, показать полилинией проложенную трассу, изменить добавочный коэффициент.
Тогда я уже сделаю обновление.

Для наглядности прошу Вас разместить тут файл с примером, что у вас изначально имеется, и что Вам надо в результате получить.

Да, добавлю еще - основа плана может быть и 1 к 1, но вы для цеха все равно делаете с масштабом, например, 1 : 10 или 1 : 25.
Тогда напрашивается вопрос - каким способом вы делаете "печатаемый" масштаб? При помощи видового экрана в пространстве листа и уже на листе рисуете свои трассы? Или, по-старинке, обводите печатаемый план рамкой и уже при самой печати происходит масштабирование чертежа? ИЛи может масштабируете имеющийся план-подоснову под рамки, нарисованные в масштабе 1 : 1?

Надеюсь, понятно написал а то и сам немного запутался

Последний раз редактировалось Frigate, 19.04.2011 в 12:01.
Frigate вне форума  
 
Непрочитано 20.04.2011, 07:58
#156
Lenya


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


Здравствуйте!

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

Вопрос с автоматизацией возник после того, как выяснилось, что на новом объекте нам предстоит прокладка огромного количества кабелей. Трассы в основном уже проработаны. Есть заготовка кабельного журнала в Exelе, нам требуется раскидать их по трассам и в конечном итоге прописать в кабельном журнале трассу для каждого кабеля и его длину. При этом нужны будут разрезы некоторых участков, чтоб проверить на заполнение труб и лотков, а также для того, чтоб сделать нужное количество этих труб и лотков. Сам кабельный журнал обычно делаем в автокаде, но, возможно, перейдем и в Exel.

План в модели создаем всегда 1:1. Уже в листе происходит компоновка с масштабом, форматкой листа и т.д. Для этого, собственно, и создано пространство листа.

В файле содержится небольшой участок цеха. Можете обратить внимание, что на листе видовые экраны в разных масштабах, а в модели начерчены 1:1. Единственное, что в модели нужно переключать масштаб аннотаций при работе с каждым участком.
Вложения
Тип файла: dwg
DWG 2007
ACAD-Газоочистка. Раб чертеж.dwg (1.45 Мб, 5086 просмотров)
Lenya вне форума  
 
Автор темы   Непрочитано 20.04.2011, 11:00
#157
Frigate

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


Lenya,

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

ТОгда панельки должны появиться.

Мои программки смогут Вам помочь только вот в чем:

1. выполучите длины кабелей - я напишу для Вас небольшую программку, которая выведет данные из БД в файл формата .csv, чтобы вымогли открыть его в Excel.

Формат будет такой:
на каждой строке:
<номер кабеля>;<длина в метрах (по масштабу, с учетом всех коэф-в>

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

Большего прога не сможет ))) Не обучена )))

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

А главное, что придется доработать - это отказ от блоков кабеля.
Frigate вне форума  
 
Автор темы   Непрочитано 21.04.2011, 13:18
#158
Frigate

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


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

Что нужно будет от вас - это текстовый файл, но с расширением .csv, в котором в каждой строке написан номер кабеля, только 1 номер кабеля для каждой строки.

Этот файл по команде подгрузится и вы сможете задавать кабелям трассу.
Такой же файл легко создавать тем, кто основные схемы делает напр., в Е-план или в Е-куб - а план трасс (2D) с легкостью можно посчитать при помощи ADV_CAD. Скромно, да? Во всяком случае, я сам и другие бета-тестеры на реальных проектах испытали, что преимущества есть: вся рутина с расчетами и вписыванием длин теперь убрана.
КОнечно, это не полноценный САПР, со своими оговорками и допущениями. Но позволяет многое уже. В будущем - еще больше.

Дополнения в HELP я также внесу.

Кстати, спасибо Вам - благодаря вопросу я наконец продумал до конца идеологию своей мини-САПР.

Обновление выложу думаю в конце недели, может даже завтра успею.

Жду Вашего отклика. И предложений по наращиванию функциональности программы.
А главное - что конкретно и в каком виде вы хотите получить от моей программы: вывод инфы о кабеле и его длине в файл (формат я написал в предыдущем посте) или еще как-нибудь?
Frigate вне форума  
 
Непрочитано 30.05.2011, 14:01
#159
WST


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


Уважаемый Frigate читая форум наткнулся на Вашу программу, просто поразила на сколько она облегчает работу, большинство команд меня устраивает но есть одно но, я использую чуть другой блок вместо Вашего «adv_cable» (в прикрепленном файле блок.dwg). Можно ли переделать вашу команду «Перечень элементов» под мой блок, я пытался переделать Ваш файл «adv-programme-connection-insert-list_of_elements» вроде как получилось (прикрепленный файле BOR.lsp), но поскольку мои познания Lisp ровны нулю Автокад стал выдавать ошибки при черчение полилиниеи и закрываться, с оригинальным (Вашем файлом) такого не наблюдалось. И еще если Вас не затруднит чуть улучшить (это мое личное мнение, но думаю, электрикам это очень бы пригодилось) команду «Перечень кабелей в разрезе трасы», хотелось бы чтобы это выглядело как на прикрепленном файле план.dwg, потому что не хочется пересекать другие объекты на плане линиями выносок, то есть сначала нанести линию выноски до желаемого места на плане а потом вставить саму выноску (полки) с названием линий.
Вложения
Тип файла: dwg
DWG 2007
Блок.dwg (106.3 Кб, 5099 просмотров)
Тип файла: lsp BOR.lsp (3.9 Кб, 117 просмотров)
Тип файла: dwg
DWG 2007
План.dwg (190.9 Кб, 5094 просмотров)
WST вне форума  
 
Непрочитано 30.05.2011, 20:12
#160
rookie

конструктор
 
Регистрация: 05.03.2011
Хабаровск
Сообщений: 1


Уважаемый Frigate, понравилась очень программа, огромное спасибо вот только захотелось в ней разобраться до мельчайших подробностей, если Вы не возражаете и есть возможность можно скинуть на почту файлы функций с расширением не "*.fas", а "*.lsp".
Заранее благодарен.
rookie вне форума  
 
Непрочитано 31.05.2011, 14:08
#161
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


Скачал. Поставил.
Прога интересная! Особенно мне понравилось копирование атрибутов блока (adv-programme-edit-copy-attrib-to-blocks)! Это как раз то, что я давно искал (увы написать самому не позволяет безграмотность в ЛИСПе и отсутствие времени на освоение ЛИСПа).
1) А можно ли чтобы атрибут вставлялся в другой блок как поле?
С помощью программы начертил 4 линии, вставил выноску "перечень кабелей в разрезе трассы" - тут сразу второй вопрос 2) Можно ли эти выноски делать тоже полем? (чтобы поменял название кабеля нажал _regen и у тебя всё обновилось!
Alexeipost вне форума  
 
Непрочитано 19.10.2011, 16:38
#162
WST


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


Frigate еще раз способа за программу очень сильно облегчает работу но почему не поддерживаешь тему? у меня (да и не только наверное) есть много вопросов и предложении отзовись пожалуйста.
WST вне форума  
 
Автор темы   Непрочитано 20.10.2011, 09:48
#163
Frigate

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


Всем привет!

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

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

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

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

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

WST,

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

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

Последний раз редактировалось Frigate, 20.10.2011 в 10:38.
Frigate вне форума  
 
Непрочитано 20.10.2011, 11:22
#164
WST


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


С возвращением я очень рад что Вы откликнулись, я больше занимаюсь внутриними сетями и 99,9% это многоуровневые здания и одна группа может прокладываться по разным уровням начиная с тех-этажа и заканчивая кровлей, так вот что я предлагаю:
1 - возможность продление трассы/трасс на другом/других плане/планах (уровне-отметке) то есть получается что у них нету общей/общих точки/точек;

2-
Цитата:
Сообщение от WST Посмотреть сообщение
И еще если Вас не затруднит чуть улучшить (это мое личное мнение, но думаю, электрикам это очень бы пригодилось) команду «Перечень кабелей в разрезе трасы», хотелось бы чтобы это выглядело как на прикрепленном файле план.dwg, потому что не хочется пересекать другие объекты на плане линиями выносок, то есть сначала нанести линию выноски до желаемого места на плане а потом вставить саму выноску (полки) с названием линий.
Конечно если это возможно
Цитата:
Сообщение от Frigate
перечень кабелей можно вставлять без связи - потоком, отдельно. А уж связь потом сам нарисуешь. Я сделал вариантом по умолчанию рисование перечня кабелей со связью - так чаще всего у нас использовалось в отделе.
я так и делаю

Последний раз редактировалось WST, 20.10.2011 в 11:31.
WST вне форума  
 
Автор темы   Непрочитано 20.10.2011, 15:50
#165
Frigate

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


WST,

можно и на "ты"

по п.2 - ты сам все уже верно делаешь

по п.1 - указание олдного и того же кабеля на разных планах трасс (у тебя - разхных этажах) - возможна. Инфа с разных планов трасс собирается на схеме внешних при помощи процедуры трансляции данных кажодго чертежа. ИЛи этой возможности недостаточно? Тогда опиши конкретнее, что бы ты хотел получить.
Frigate вне форума  
 
Непрочитано 20.10.2011, 16:39
#166
WST


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


Самый простой пример 2-х эт. здание электощитовая на 1-ом эт. от ГРЩ питаем ЩР-1 (1 эт.) и ЩР-2 (2 эт.).
С ЩР-1 все понятно кабель прокладывается по 1 -эт. берем блок в схеме и создаем трассу, длина кабеля прописывается в блоке все очень хорошо.
С ЩР-2 все немного сложнее часть трассы прокладывается по 1- эт. часть по 2-эт, берем блок для создание трассы, но мая трасса состоит из двух частей не имеющей общей точки (то есть она точка есть но она переходит с 1-го эт. на 2-ой эт.), и я создаю трассу по 1-эт. длина прописывается в блоке потом я при помощи команды "удлинить трассу" хочу создать трассу (продлить) на 2-ом эт. но для этого должна быть общая точка а ее нету.
Так вот что я хочу чтоб при помощи команды "продлить трассу" я мог эту трассу создать без общей точки (часть трассы на одном эт. часть на другом) а общая длина прописывалась в блоке.
Надеюсь ты меня поймешь. (см. прикрепленный файл)
Вложения
Тип файла: dwg
DWG 2007
пример.dwg (57.7 Кб, 3506 просмотров)
WST вне форума  
 
Автор темы   Непрочитано 21.10.2011, 09:17
#167
Frigate

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


WST,

да, я понял теперь о чем ты.

В одном файле ты действительно не сможешь посчитать суммарную длину кабеля. ТО, что я написал выше про трансляцию инфы с двух и более планов трасс - относится к РАЗНЫМ файлам. В общем правило такое - создавай каждый новый план трасс в своем файле двг - и будет тебе щастье ))) Причем, эти планы могут быть с разными масштабами. Для одного файла такого решения пока у меня нет. Да и потребует это усложнение программы, а она и так иногда мне кажется усложненной.
Другой вопрос, что при автотрассировке в таком варианте всплывает куча обстоятельств... Но это уже другой вопрос.

О КОМАНДЕ КОПИРОВАНИЯ ЗНАЧЕНИЯ АТРИБУТОВ:

повспоминал алгоритм работы проги, такие выводы:

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

В общем, не очень ясно, что именно не хватает в данной проге...

Прошу уточнить пожелания по программе копирования значений атрибутов! :-)

Последний раз редактировалось Frigate, 21.10.2011 в 09:52.
Frigate вне форума  
 
Непрочитано 21.10.2011, 10:19
#168
WST


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


Каждый план в своем файле это не вариант бывают что этих планов очень много до 16-20 и еще бывает что заказчик отдает объект не одной монтажной фирме а нескольким для ускорения работ и тогда этих планов еще больше, планы с питающем сетями, с распределительными и с групповыми а потом и групповые разделяются на осветительные и силовые и сети вентиляции короче полный рак мозгов да и геморрой в придачу. Со столькими файлами работа ни как не сократится. Жаль ну что поделать будем работать по старинке.
Тогда еще предложение насчет команды "перечень кабелей в разрезе трассы" у тебя по умолчанию если больше 4-х кабелей то располагает их по рядно а у нас заведено калонами
Чтобы понятнее было
у тебя
С1/С2
С3/С4
С5

у меня
С1/С4
С2/С5
С3

Последний раз редактировалось WST, 21.10.2011 в 14:44.
WST вне форума  
 
Автор темы   Непрочитано 21.10.2011, 15:41
#169
Frigate

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


ок,

я тебя понял. Кстати, судя по примерам в ГОСТе, у тебя правильная форма расположения ссылок на кабели. Это не сложно доработать. На выхах попробую сделать, но однозначно не обещаю.

ПО поводу планов трасс я тебя понял. Как немного вникну в свою прогу (уже многое успел подзабыть), то подумаю, как воплотить твою идею. Кстати, многие мне о такой же идее говорили, но руки не доходили до этого.
Frigate вне форума  
 
Непрочитано 21.10.2011, 16:47
#170
WST


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


По поводу трасс было бы отлично.
Ну раз все ровно собираешься вникать в программу тогда у меня еще одно предложение по поводу команд "создать трассу кабеля" и "удлинить трассу", не знаю как другим но мне очень не хватает при создание/удлинение трассы возможности отменить последнею точку при помощи клавиши U (Undo).
WST вне форума  
 
Непрочитано 21.10.2011, 22:42
#171
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


По поводу копирования атрибутов.
Есть же скрытые атрибуты, которые не должны быть видны на чертеже, но с помощью их очень удобно в экселе что-нибудь делать (заполнять кабельный журнал например). Так вот, нужно чтобы тыкаешь на блоке и выпадал перечень всех атрибутов блока для копирования. Выбираешь значение нужного атрибута, и потом выбираешь блоки в которые нужно вставить это значение и так же выбираешь атрибут у этих блоков, в который нужно скопировать значение.
т.е. у тебя атрибут из блока копируется в одноименные атрибуты других блоков. А тут же хочется чтобы копировалось в разные указываемые пользователем атрибуты.
Alexeipost вне форума  
 
Автор темы   Непрочитано 23.10.2011, 08:13
#172
Frigate

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


Alexeipost,

если копируемое значение атрибута вставлять в боки по одному, вручную - то смысл тогда какой? Так же можно и без всякой проги копировать - не будет сильно медленнее. У меня ж смысл проги в том, чтобы массово копировать одно и то же значение во многие блоки. Здесь от тебя нужно уточнение и хоть какой-нить пример с блоками.
Frigate вне форума  
 
Непрочитано 24.10.2011, 00:08
#173
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


Попробую объяснить.
В файле (на скорую руку) накидал блоки светильников, блок помещений и блок щитка освещения.
У блока "помещение" два атрибута "№помещения" и "наименование_помещения".
У блока "Светильников" 4 атрибута: "номер_автомата", "установлен_в_пом.№" (назвал так специально), "Номер_щитка" и "номер_светильника".
Атрибуты блока "светильник" заполняются следующим образом: в атрибут "установлен_в_пом.№" вставляется значение атрибута "№помещения" блока "помещение". И так как у них нету одинаковых атрибутов, то нельзя использовать твою программу. Иногда случается так, что блоки создаются в разное время и имена атрибутов не совпадают, а переделывать названия атрибутов чревато сбросом блоков (очень неудобно когда несколько сотен блоков уже расставлены по планам).
Далее в атрибут "номер_щитка" блока "светильник" должно скопироваться значение атрибута "номер" блока "щиток". Но так как атрибут "номер" в блоке "щиток" скрытый, то программу тоже нельзя использовать.
Выход конечно есть, во-первых, делать одинаковые имена (это не так сложно), а во-вторых вместо скрытых атрибутов делать атрибуты в слое defpoints (или в делать слой атрибутов не печатаемым). Но тогда чертеж засоряется. И не совсем удобно.
Ну как-то так.......
Вложения
Тип файла: dwg
DWG 2007
пример.dwg (83.8 Кб, 3504 просмотров)
Alexeipost вне форума  
 
Автор темы   Непрочитано 24.10.2011, 11:04
#174
Frigate

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


Алексей,

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

1. немного переделаю прогу, чтобы она копировала первый указанный атрибут и вставляла его значения во все остальные указанные тобой;
2. чтобы копировать из/в скрытые атрибуты в данным момент могу предложить изменять при редактировании чертежа системную переменную ATTMODE (значение по умолчанию - 1, при значении 2 показываются ВСЕ атрибуты блока, в т.ч. и скрытые) + из проги выкину всплывающее окно, которое предназначалось для контроля - тот ли атрибут был выбран. Чтобы вставлять атрибут как поле - это потом можно добавить, пока мало свободного времени.

Последний раз редактировалось Frigate, 24.10.2011 в 12:58.
Frigate вне форума  
 
Непрочитано 24.10.2011, 15:15
#175
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


Frigate
Огромное спасибо за ATTMODE!!!!
Alexeipost вне форума  
 
Автор темы   Непрочитано 24.10.2011, 16:01
#176
Frigate

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


Alexeipost,

ну как - по п. 1 прогу нужно?
Frigate вне форума  
 
Непрочитано 25.10.2011, 09:29
#177
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


ну если тебе не трудно)))
Alexeipost вне форума  
 
Автор темы   Непрочитано 25.10.2011, 18:02
#178
Frigate

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


да не вопрос ) но на вспомнить убил часика полтора )))

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

Пока только так. В будущем обе команды будут доступны - это уже в след. версии. Она и название носит другое - ADV_Toolkit. Там есть автопрокладка кабеля по намеченным трассам и указанным начальной и конечной точке трассы. Выбор кабеля для создания и для удаления в списке в диалоговом окне и т.п.


Теперь по наличию времени буду редактировать команду создания перечня кабелей - что можно было сортировать кабели как по колонкам, так и по столбцам :-)
Вложения
Тип файла: rar Add-on 2011.10.25.rar (1.3 Кб, 97 просмотров)
Frigate вне форума  
 
Непрочитано 25.10.2011, 22:00
#179
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


Еще можно переименование кабелей сделать?
А то когда заказчик просит ввести свое наименование кабелей, то очень уныло заново трассировать 450 кабелей.
*через 5 минут*
Попробовал add-on. Он выдает окно с названием атрибута куда вставлять значение, но само значение не вставляет.
*спустя 10 минут*
Все понял! Надо второй файл в папке FUNCTIONS_DB тоже загрузить в автокад)))
ВСЕ работает! Спасибо!

Последний раз редактировалось Alexeipost, 25.10.2011 в 22:22.
Alexeipost вне форума  
 
Автор темы   Непрочитано 26.10.2011, 09:56
#180
Frigate

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


Alexeipost,

проблема не в том, что нужно подгружать файл в папке
FUNCTIONS, а в том, что я забыл перекомпилировать файл в fas, тогда бы он сам перегружался.

Лови еще раз с перекомпилированным файлом fas:


ПРо переименование кабелей я тоже думал...

Как вариант была такая задумка - неважно как, но заполучить файл txt, где будет примерно следующее:

С1-1;К-15
С1-2;К-16
С1-3;К-17

...

и так далее. С1-1...С1-3 - это уже существующие номера кабелей, которые нужно заменить на новые - К-15...К-17.

Соответственно имея такой файл, мы командой можем заменить сразу все номера кабелей. Но-файл придется самому пока забивать - или получать через Excel. Разхделитель - точка с запятой. Если не ошибаюсь - он формата ".csv".
Такой вариант тебе подойдет? )))

WST,

Теперь о том, чтобы создавать несколько планов трасс на одном поле чертежа. Такая возможность есть - надо просто убрать из программ запрет на добавление в базу кабелей с совпадающими номерами. Теперь пользователь будет сам здесь следить за порядком. Оставлю лишь напоминание, что кабель с таким-то номером уже есть в БД. Напр., в базе будет существовать нескоклько кабелей с номером "С1-1-5". Немного изменить несколько программ - и, думаю, все заработает.
Вложения
Тип файла: rar Add-on 2011.10.26.rar (1.5 Кб, 80 просмотров)

Последний раз редактировалось Frigate, 26.10.2011 в 10:14.
Frigate вне форума  
 
Непрочитано 26.10.2011, 11:20
#181
WST


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


Frigate было бы отлично.

Еще предложение по поводу команды "перечень кабелей в разрезе трассы" возможно ли сделать так чтобы она сома обновлялось, объясняю очень часто бывает случаи что когда проект на 90-95% готов заказчику еще нужно что то запитать или кто то из смежников забыл/добавил что то в задание и соответственно в схемах и на планах появляется новые трассы, кабели естественно прокладывается по уже существующим трассам, так вот что я предлагаю прорисовываем дополнительные кабельные трассы по существующим и при помощи команды "перечень кабелей в разрезе трассы" или новой чтобы этот перечень сам обновлялся то есть добавил в уже существующий перечень новые кабеля, кстати это нужно и в случаи с переименованием кабелей.
WST вне форума  
 
Непрочитано 26.10.2011, 11:24
#182
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


2 Frigate
по поводу переименования у меня такие мысли....... вот когда нажимаешь "редактировать/показать трассы кабелей" (adv-programme-cable-routings-show_edit), то можно перетаскивать полилинии и потом ещё раз нажав на эту кнопку пересчитывается длины кабелей и обновляется база данных. Может сделать что-то вроде этого? т.е. выбираешь кабель у которых нужно изменить название, нажимаешь на кнопку и пишешь новое имя, нажимаешь на эту же кнопку еще раз и новое название сохранилось. Это если по одному кабелю.
Если надо поменять много кабелей, то можно сделать следующее: выбрать много кабелей, написать общее название "КТГ-" (например "КТГ-01, КТГ-02,...., КТГ-55"), а в изменяющейся части (порядковый номер кабеля) написать №, и указать что № от 1 до 10 (ну или от 23 до 56).

И ещё, может добавить атрибут "наружный диаметр кабеля" и при групповой прокладке сразу складывать это значение, ну чтобы было удобнее подбирать кабель-каналы или лотки.

Цитата:
Еще предложение по поводу команды "перечень кабелей в разрезе трассы" возможно ли сделать так чтобы она сома обновлялось,....
1. программа находит блоки adv_cable_text_label в плане;
2. и обновляет значения (кабельная трасса уже отмечена линией)
3. и вставляет на тоже место измененный (или не измененный, если не менялся) перечень кабелей.

Последний раз редактировалось Alexeipost, 26.10.2011 в 11:30.
Alexeipost вне форума  
 
Автор темы   Непрочитано 26.10.2011, 13:13
#183
Frigate

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


так так так

уже три человека предлагают мне свои идеи. ПОра вновь создавать файл со списком задач.

но по обновлению перечня кабелей могу сразу ответить - это unreal. Придется либо самому ручками добавлять блоки с номерами новых кабелей (если новых кабелей немного), либо полностью заменять перечень кабелей. А прокладывать нужно будет только новые добавляемые кабели :-) Если старые переименовываются, то я сделаю возможность переименовать номера кабелей при помощи файла, описанного выше (в формате csv).

ЕЩе раз - автоматом обновлять не получится, а есл и делать не полностью автоматом, то и самому будет недолго все перечни обновить - вернее только те перечни, которые должны были поменяться. ЧТобы сделать автоматом - нужно, как я ща думаю, все перечни группировать, а у этих групп в расширенные данные запихивать координату точки трассы, в которой эти кабели проложены. Учитывая, что прога позволяет перенести план трасс на поле чертежа, то и этот способ, увы, может оказаться недейственным. И еще - при команде создания перечня мы получаем перечень из определенного количества столбцов и строк, потом располагаем его на пространстве чертежа. Но - при добавлении кабелей перечень займет большее пространство и его все равно придется передвигать. А это уже те же самые усилия, чтобы заново создать перечень.

вот такие мысли...

=================

о лотках, трубах и тп...

для лотков важнее знать площадь сечения кабеля, т.к. ГОСТ норммирует процент заполнения лотка, и там описано как этот процент считать. 40 % заполнение разрешается в закрытых лотках, вроде бы.
Диаметр и площадь сечения кабеля нужно указывать в справочном файле, где у меня уже указаны типы кабелей, марки и сечения для выбора. При небольших изменениях это можно сделать.
А далее все данные о кабеле должны заноситься в блок кабеля в виде атрибутов.
=================

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

Последний раз редактировалось Frigate, 26.10.2011 в 13:31.
Frigate вне форума  
 
Непрочитано 26.10.2011, 14:48
#184
WST


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


Frigate
жаль что с обновлением перечня нереальна но идея сома по себе хороша.
Знаю VB но совсем немного, так пишу маленькие программки но больше по расчетам.

Еще одно предложение по поводу команды "создать трассу кабеля" при выборе существующей линии (не создаем трассу а выделяем) у тебя по умолчанию удаляется исходная линия, меня не устраивает каждый раз нажимать клавишу Н, можно по умолчанию не удалять или скажи в коком из твоих файлов и где нужно Да на Нет поменять.

Последний раз редактировалось WST, 26.10.2011 в 15:55.
WST вне форума  
 
Непрочитано 27.10.2011, 10:00
#185
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


У меня тут мысль по поводу переименования кабелей родилась. Переименовать 1 кабель не сложно, а вот переименовать (это получается проложить заново) 10 кабелей уже не охота, тем более если ошибся всего на одну букву в названии кабеля. НО!!! Выход есть!
1. Копируете все блоки кабелей которые надо переименовать
2. Переименовываете как надо скопированные кабели
3. И с помощью adv-programme-cable-routings-create-by-analogue копируете из старого (неправильно названного кабеля) в новый (правильно названный)
4. Удаляете старые кабели с помощью adv-programme-cable-routings-remove
5. Все! Переименовалось! А кабели находятся по тем же трассам)))
Alexeipost вне форума  
 
Автор темы   Непрочитано 27.10.2011, 10:02
#186
Frigate

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


WST,

подкорректировал код функции

ДОБАВЛЕНО:

Alexeipost,

это далеко не самый оптимальный путь - такое переименование. ПРедставь - у тебя 10 трасс и все разные. И 5 трасс (номера кабелей) нужно переименовать. Значит тебе нужно будет кучу раз сначала вводить новые номера кабелей, затем кучу раз запускать команды на создание аналога... А если все кабели должны стать с другой нумерацией?

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

Да, ты тоже скопируй add-on - может пригодится )
Вложения
Тип файла: rar ADD-ON 2011.10.27.rar (1.4 Кб, 70 просмотров)

Последний раз редактировалось Frigate, 27.10.2011 в 10:08.
Frigate вне форума  
 
Непрочитано 27.10.2011, 10:06
#187
WST


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


Alexeipost
Я до сих пор так и делал

Frigate
спасибо

Последний раз редактировалось WST, 27.10.2011 в 10:16.
WST вне форума  
 
Автор темы   Непрочитано 27.10.2011, 10:15
#188
Frigate

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


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


ДОБАВЛЕНО:


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

Последний раз редактировалось Frigate, 27.10.2011 в 10:23.
Frigate вне форума  
 
Непрочитано 27.10.2011, 10:22
#189
WST


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


Frigate
быстрее было вписывать марку и сечение в атрибут блока
WST вне форума  
 
Автор темы   Непрочитано 27.10.2011, 10:31
#190
Frigate

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


WST,


Цитата:
Сообщение от WST Посмотреть сообщение
быстрее было вписывать марку и сечение в атрибут блока
это наверное так, НО! Есть длинные названия марок, есть принятый стандарт написания типа кабеля. И есть человеческий фактор - постоянные описки. И самое важное - ты можешь заложить в проге все стандартно используемые тобой жильности и сечения. И уже не будет ошибки. И еще - от сечения зависит и максимальная жильность - это учитывается прогой (если верно заполнена база).
Frigate вне форума  
 
Непрочитано 27.10.2011, 10:40
#191
WST


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


Frigate ты конечно прав но в моем случае используются пару типов кабелей а в основном ВВГ и ВВГнг 3х2,5 и 5х2,5
WST вне форума  
 
Непрочитано 27.10.2011, 11:27
#192
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


А добавлял в файл названия нужных мне кабелей. Меня это не смущало и неудобств не доставляло ни разу)))
Цитата:
ПРедставь - у тебя 10 трасс и все разные. И 5 трасс (номера кабелей) нужно переименовать. Значит тебе нужно будет кучу раз сначала вводить новые номера кабелей, затем кучу раз запускать команды на создание аналога... А если все кабели должны стать с другой нумерацией?
Ну, я блоки кабелей не вставляю, а копирую. т.е. надо заменить 10 кабелей - копирую эти 10 блоков чуть ниже и с помощью программы "Number.dvb" (автонумерация) перенумеровываю эти 10 новых блоков. Потом копирую свойства кабеля один-в-один. Долго? Но создавать все заново ещё дольше. А допустим на переименовывание 10 кабелей уходит меньше минуты (пробел и "enter" рулят!)
Alexeipost вне форума  
 
Непрочитано 27.10.2011, 11:45
#193
WST


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


Цитата:
Сообщение от Frigate Посмотреть сообщение
в номов варианте программы я поставил целью уйти от указания на поле чертежа с планом трасс блока с кабелем - номер блока выбирается в диалоговом окне.
Очень хорошая идея насчет диалога, я об этом тоже думал, ну не удобно находить ту или иную трассу в куче планов, а так я работаю только с планами ну это опять же в теории, хотелось бы по побывать на деле. Когда новая версия будет готова выложи по тест-им.
WST вне форума  
 
Автор темы   Непрочитано 27.10.2011, 11:57
#194
Frigate

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


WST,

возможность выбора блока кабеля на чертеже остается по кнопке в диалоговом окне - "Выбрать на чертеже".

Alexeipost,

хитро , конечно я особо с переименованиями в работе не сталкивался, поэтому и не знаю такого приема )))

Хорошо, учту такой прием работы.

немного поразмышлял:

твой подход - из разряда "голь на выдумку хитра" :-)
Это классно, но должен быть в проге принцип одного ввода, что я и старался воплотить. Т.е. чтобы не нужно было сначала переименовывать блоки кабеля на схемах внешних соединений, а затем так же делать на плане трасс. Особенно это неудобно, если схема внешних делается в отдельном файле.

когда рациональная идея созреет - наишу сюда.

и вопрос - ты пользуешься моим блоком кабеля на схеме внешних? СИльно переделывал сам блок? Какие предложения по самому блоку - может я что-то не учел в нем для удобства использования.

Последний раз редактировалось Frigate, 27.10.2011 в 12:08.
Frigate вне форума  
 
Непрочитано 27.10.2011, 12:10
#195
WST


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


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

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

лично я переделал под себя использую его для силовых щитов а для освещения он не удобен (ну это понятно ты же под себя разрабатывал) объясняю почему, в освещение в одной группе используется разная жильность то есть до коробки 3 жилы потом если двойной выключатель 4 жилы а если тройной то 5, выгладит все это примерно так

\ Гр-1 ВВГ 3х2,5+4х2,5+5х2,5 П25 30+10+5м

в данном случае что я делаю беру 3 блока один для 3-х жильного второй для 4-х и третий для 5-ти жильного трассу естественно не прорисовываю, потому что пока нету возможность продлить трассу без общей точки, вписываю в ручную в блок длины, эта я делаю только для того чтобы потом не складывать длины а использовать твою команду "перечень элементов" уж очень она облегчает задачу и исключает человеческий фактор.

Так что предложение - возможно ли это все вписать как то в один блок.

пример
Вложения
Тип файла: dwg
DWG 2007
пример плана сетей освещения и щита.dwg (246.9 Кб, 4003 просмотров)

Последний раз редактировалось WST, 27.10.2011 в 12:58.
WST вне форума  
 
Автор темы   Непрочитано 27.10.2011, 12:59
#196
Frigate

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


WST,

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

пока тока с 2-мя последними адд-онами )))

дополнение:


Цитата:
Так что предложение - возможно ли это все вписать как то в один блок.
да, думаю, что можно - просто создать такую видимость в блоке, назвав ее типа "только текст":

оставить атрибуты "НОМЕР_КАБЕЛЯ", "ТИП_КАБЕЛЯ" и "ДЛИНА_КАБЕЛЯ", хотя можно и другие текстовые атрибуты оставить

но я бы в данном случае блоки просто держал в стороне от чертежа - не меняя, чисто для хранения инфы о кабеле

Заметь, что ты атрибут номер_кабеля обнулил, а значит не сможешь создать трассу, раз нет номера кабеля.

Последний раз редактировалось Frigate, 27.10.2011 в 13:21.
Frigate вне форума  
 
Непрочитано 27.10.2011, 13:41
#197
WST


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


Цитата:
Сообщение от Frigate Посмотреть сообщение
Заметь, что ты атрибут номер_кабеля обнулил, а значит не сможешь создать трассу, раз нет номера кабеля
ВСЕ ты понял правильно, но я ее трассу и не могу прорисовать потому что нет пока (я надеюсь что пока ) этой возможности. Как я могу ее прорисовать если там столько ответвлении (см. пример), только что до первой распайки, но что это мне даст, я же трассу прорисовываю не только для того чтобы вывести потом перечень но и для того чтобы в блок записалась длина этой трассы.
WST вне форума  
 
Автор темы   Непрочитано 27.10.2011, 15:11
#198
Frigate

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


WST,

еще раз глянул твой пример... у тебя тут своя специфика - вы кабели не обозначаете на освещение, только указываете жильность проложенного кабеля/провода, верно? У тебя в таблице под блоком кабель указан не кабель, как единица изделия, а марка кабеля для данной группы... для использования моей проги кабель должен быть единым неделимым куском.

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

А тебе взамен могу посоветовать решение, основанное на моей проге. ТОлько объясни мне принцип построения твоего плана трасс, специфику: сначала от зщитка у тебя 5 жил, потом 4, а потом 3? РАспайка происходит на самих светильниках (белые квадраты на твоей схеме)?
И еще - скинь мне плиз измененный тобой блок кабеля для силовых цепей.
Frigate вне форума  
 
Непрочитано 27.10.2011, 16:10
#199
WST


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


Frigate
Для освещения все эта не так критично, я в принципе привык в данном примере всего та 3 группы рабочего освещения.
А вот сила (см. прикрепленный файл) там по круче и здесь твоя программа мне сильно облегчает работу и проект из прикрепленного файла тому пример.
Посмотри файл (и это между прочим даже не средненький объект), и тогда ты может сжалишься над собратом проектировщиком и все таки поменяем свое мнение насчет запрета план трассы
пароль к архиву см. ЛС
Вложения
Тип файла: rar сила.rar (1.23 Мб, 85 просмотров)
WST вне форума  
 
Автор темы   Непрочитано 27.10.2011, 16:42
#200
Frigate

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


WST,

да, наглядней некуда

я подумаю, как лучше модифицировать прогу.
Frigate вне форума  
 
Непрочитано 27.10.2011, 16:47
#201
WST


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


Frigate
Спасибо тебе добрый человек
WST вне форума  
 
Непрочитано 27.10.2011, 22:27
#202
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


Я сделал атрибут "НОМЕР_КАБЕЛЯ" первым атрибутом в блоке, чтобы прога number.dvb могла перенумеровывать (и переименовывать) номер кабеля.
Ну и еще увеличил все в сто раз, чтобы шрифт был 300, а длина кабеля была в мм (ну привык я так )
Твою программу использую для телефонной распределительной сети, для ЛВС. Для пожарки, охранки и электрики пока не использовал - не было случая.
Alexeipost вне форума  
 
Непрочитано 29.10.2011, 15:58
#203
zamtmn

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


Цитата:
но по обновлению перечня кабелей могу сразу ответить - это unreal
Очень плохо. внесение изменений в чертеж обычное дело... Вовсе не обезательно делать изменения в выносках в реальном времени, вполне достаточно команды которая будет пробегать по выноскам и перестраивать списки. Отредактировал кабели, запустил команду, готово.
У меня в зкаде выноски обновляются при регенерации чертежа, пока не приделал это обновление очень парился с ручным обновлением (пересозданием) выносок
zamtmn вне форума  
 
Автор темы   Непрочитано 31.10.2011, 14:19
#204
Frigate

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


zamtmn,

чтобы сделать автоматическую замену, нужно, как минимум, где-то хранить всю инфу о таких перечнях - точка трассы, в которой смотрим перечень проходящих кабелей, точка, от которой строится перечень, число столбцов для построения перечня... Но - пользователь, сделав перечень, потом может захотеть его удалить, а чтобы это отследить, уже нужно использовать реакторы. В общем, муторно очень получается, много неясностей... Даже просто пользователь передвинет перечень кабелей, а при обновлении перечень появится в изначально указанном при его создании месте... В общем - так не получится, ИМХО.

Да и просто заменить 10-20 перечней - это займет несколько минут.

Если кабеля, приведенного в перечне, уже нет в БД чертежа (был удален), то метка такого кабеля будет в перечне подсвечена красным. Можно также сделать уведомление, что такие-то кабели (вновь добалвенные) не указаны ни в одной ментке кабелей в перечнях - это будет подсказка пользователю. Но полностьбю автоматом это сделать не получится (я по крайней мере не знаю как).
Frigate вне форума  
 
Непрочитано 01.11.2011, 07:49
#205
Alexeipost


 
Регистрация: 07.12.2010
Уфа
Сообщений: 374
<phrase 1=


я похоже чего-то не догоняю, но почему нельзя сделать так:
1) поиск блока "adv_cable_text_label";
2) определение на какую точку указывает этот блок (взять координаты блока и прикрепленной к нему линии (слой "adv_КИП_тонкий"));
3) запуск программы "adv-programme-cable-routings-cables-cut_set" (координаты вставки берутся из найденного блока);
4) Если старое значение атрибута "НОМЕР_КАБЕЛЯ_МЕТКА" блока "adv_cable_text_label" совпадает с новым значением - то ничего не делать;
5) Если старое значение не равно новому значению, то удалить старый блок "adv_cable_text_label" и вставить на его место новый блок;
6) Если нового значения нету (кабель удален), то сделать выбор а) пометить красным, б) удалить;
7) Последний блок? а) да см. п. 8, б) нет см. п. 1;
8) Выход
Alexeipost вне форума  
 
Автор темы   Непрочитано 01.11.2011, 13:37
#206
Frigate

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


Цитата:
Сообщение от Alexeipost Посмотреть сообщение
1) поиск блока "adv_cable_text_label";
2) определение на какую точку указывает этот блок (взять координаты блока и прикрепленной к нему линии (слой "adv_КИП_тонкий"));
3) запуск программы "adv-programme-cable-routings-cables-cut_set" (координаты вставки берутся из найденного блока);
4) Если старое значение атрибута "НОМЕР_КАБЕЛЯ_МЕТКА" блока "adv_cable_text_label" совпадает с новым значением - то ничего не делать;
5) Если старое значение не равно новому значению, то удалить старый блок "adv_cable_text_label" и вставить на его место новый блок;
6) Если нового значения нету (кабель удален), то сделать выбор а) пометить красным, б) удалить;
7) Последний блок? а) да см. п. 8, б) нет см. п. 1;
8) Выход
если б все было так просто :-)

Основная неточность у тебя в том, что пользователь может выбрать показать перечень отдельно, потоком, без соединительной линии (так, к примеру, делает WST).
Далее - см. мою цитату:
Цитата:
чтобы сделать автоматическую замену, нужно, как минимум, где-то хранить всю инфу о таких перечнях - точка трассы, в которой смотрим перечень проходящих кабелей, точка, от которой строится перечень, число столбцов для построения перечня... Но - пользователь, сделав перечень, потом может захотеть его удалить, а чтобы это отследить, уже нужно использовать реакторы. В общем, муторно очень получается, много неясностей... Даже просто пользователь передвинет перечень кабелей, а при обновлении перечень появится в изначально указанном при его создании месте...
Да, если б все оставляли линию связи, то можно было бы циклическим перебором все блоков-меток кабеля определить группы блоков (которые имеют хотя б одну общую точку). В этом случае можно определять число столбцов перечня, кабели, уже не проходящие через указанную точку сечения трассы, удалять либо подсвечивать, добавлять новые метки кабелей.
Хотя такое будет непросто запрограммить - во всяком случае вот это:
Цитата:
циклическим перебором все блоков-меток кабеля определить группы блоков (которые имеют хотя б одну общую точку).
так...

корявенький, но вариант, могу предложить!

помимо линии связи в слое (слой "adv_КИП_тонкий") рисовать еще одну линию в непечатаемом слое каком-нить (типа "adv_noprint_link") еще одну линию. И ее проводить в любом случае - со связью вставляется перечень или без. Но - если пользователь захочет в дальнейшем перетащить перечень кабелей в др. место, то он должен будет самостоятельно присоединить линию к перетащенному в др. место перечню. Надеюсь, понятно написал )))

Если такой вариант устроит, то я учту его в дальнейшем.

ПС КОнечно, можно, наверное, сделать линию самопривязывавющуюся линию при помощи реакторов - но это мне не кажется слишком надежным решением, реакторы легко поломать непоследовательоными действиями, даже случайно.
Хотя, это уже надо спецов в ЛИСПе спрашивать.
Frigate вне форума