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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > C# .net Работа с групповыми линиями для электриков - обсуждение

C# .net Работа с групповыми линиями для электриков - обсуждение

Ответ
Поиск в этой теме
Непрочитано 03.10.2011, 18:15 1 | #1
C# .net Работа с групповыми линиями для электриков - обсуждение
bargool
 
Санкт-Петербург
Регистрация: 16.08.2006
Сообщений: 508

Программу делал для облегчения труда электриков при работе с планами проводок
В очередной раз подредактировал текст сообщения, обновил вложения.
Самая главная задача, из-за которой начался сыр-бор - сложности с подсчетом длин групповых линий на планах, дальше всё нарастает вокруг этого.
Предполагается черчение кабельных линий стандартными средствами Autocad, далее к этим линиям цепляется информация об их принадлежности к группам, после чего можно с ними творить всякие-разные вещи.
Цепляется эта самая информация с помощью Xrecord. В связи с этим, важно помнить, что Xrecord штатными средствами автокада вы не увидите, копируя линию в новый файл вы копируете и всю информацию, внесенную моей программой.
Важно: в связи с тем, что группы цепляются ко всей автокадовской линии или полилинии, на ответвлениях эти линии/полилинии должны прерываться.

Команды, доступные на данный момент:
  1. BEGroupsEdit - вывод окна для работы с базой данных проекта. Аккуратней, если при работе с базой данных какие-то группы были изменены/удалены и при нажатии на OK при выходе из окна, программа откроет все файлы проектов, произведёт данные изменения и сохранит файлы. БД проекта хранится в файле ElectroProject.xml, к сожалению, на данный момент, все файлы проекта должны лежать в одном каталоге
  2. BEAdd - добавление примитивов к группе, тут же можно создать новую группу
  3. BEDel - удаление группы из примитива, саму группу из базы не удаляет
  4. BEChGr - поменять группу у примитива
  5. BEGet - покажет к каким группам принадлежит примитив
  6. BESel - выделит все примитивы конкретной группы
  7. BELeader - добавление выноски. Тут тоже своё ограничение - в файле уже должен быть определён блок "GroupLeader". Блок вставляется в текущем аннотативном масштабе. При вставке его можно отражать и вертеть для удобства
  8. BECalculate - производит расчёт длин групп и наиболее удалённых участков во всех файлах проекта (должны быть указаны в базе) и записывает данные в текстовые файлы CableShedule.txt и Specification.txt в каталоге чертежа. В начале каждой группы должен стоять блок начала группы, если на линии группы стоит блок перепада - перепад учитывается. При вызове команды можно указать коэффициент запаса в процентах (по умолчанию принимается коэфф. запаса 5%)
  9. BEDelAll - удаляет всю информацию о группах из всех примитивов чертежа. Полная очистка следов работы программы
  10. BELen - выведет длины всех групп в плане в текущем чертеже. Команда осталась с прошлых версий на всякий случай.
  11. BELongest - выведет самый длинный участок в группе. Начало группы должно быть отмечено блоком начала группы. Команда осталась с прошлых версий на всякий случай.

Пояснения:
Блок выноски - блок с именем GroupLeader
Блок начала группы - блок с именем LineStart - точка вставки блока должна совпадать с конточкой линии в начале групповой линии
Блок перепада высот - блок с именем HeightDifference - для того, что бы блок учитывался при расчётах, точка вставки должна находиться непосредственно на линии
Вспомогательные блоки ставим на непечатаемый слой, и вперёд.

В файле примера всё есть, надеюсь, всё будет понятно.

P.S.: Работоспособность проверялась только на 2010-м автокаде. Собирал с 2009 по 2012

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

Исходные коды выложу также позже. Выложил
UPD. Подправил ссылку на исходники

UPD3: Обновил список команд, чтобы не вводить в заблуждение старой информацией
UPD4: Обновил программу до версии 0.6, см. описание и вложения к топику
UPD5: Обновил программу до версии 0.6.5, теперь при изменении маркировок групп или их удалении обновляются выноски
UPD 02.08.2012: Обновил программу до версии 0.6.7, новая команда и пояснения здесь

Вложения
Тип файла: dwg
DWG 2007
Sample.dwg (201.0 Кб, 14494 просмотров)
Тип файла: dwg
DWG 2007
GroupLeader.dwg (80.7 Кб, 14328 просмотров)
Тип файла: dwg
DWG 2007
HeightDifference.dwg (74.6 Кб, 14276 просмотров)
Тип файла: dwg
DWG 2007
LineStart.dwg (73.8 Кб, 14286 просмотров)
Тип файла: rar BargElectro v0.6.7.rar (208.2 Кб, 425 просмотров)


Последний раз редактировалось bargool, 03.12.2012 в 19:32. Причина: Обновил программу до версии 0.6.7
Просмотров: 34420
 
Непрочитано 03.10.2011, 20:16
#2
Лиспер


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


acad.lsp?? Не советую. Ничего хорошего из этого не будет. Лучше сделать отдельный lsp и заставлять его подгружать. ЯТД.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 03.10.2011, 21:31
#3
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Лиспер, проблема в том, что сборку подгружать надо только один раз за сессию автокада. Как это обеспечить без acad.lsp?
Как ведут себя лиспы, прописанные в cuix?
bargool вне форума  
 
Непрочитано 03.10.2011, 21:51
#4
Лиспер


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


Цитата:
Сообщение от bargool Посмотреть сообщение
Как ведут себя лиспы, прописанные в cuix?
грузятся каждый раз в каждый документ. Но неужели повторная загрузка сборки может привести к каким-то фатальным последствиям?
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 03.10.2011, 22:03
#5
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Лиспер Посмотреть сообщение
Лучше сделать отдельный lsp и заставлять его подгружать.
IMHO лучше отдельный mnl-файл (если не делать инсталлятора), который и будет грузить сборку. Повторная загрузка не страшна.
Александр Ривилис вне форума  
 
Непрочитано 03.10.2011, 22:05
#6
Лиспер


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


Не спорю Самое главное - не трогать системные вещи (acad.lsp, acaddoc*.lsp и им подобные )
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 03.10.2011, 22:17
#7
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Александр Ривилис, Лиспер, спасибо, буду думать в этом направлении, инсталлятор в планах, но эта поделка ещё не заслуживает оного.
Александр Ривилис, у себя то в конторе я хочу попробовать сделать что-то вроде локомотива, грузящего набор сборок, как у hwd..
bargool вне форума  
 
Непрочитано 19.10.2011, 16:26
#8
WST


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


а для 2007-2009 автокада?
и пример бы самый простой выложи (.dwg) чтоб хоть увидеть что в результате получается

Последний раз редактировалось WST, 19.10.2011 в 16:34.
WST вне форума  
 
Автор темы   Непрочитано 19.10.2011, 18:35
#9
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Цитата:
Сообщение от WST Посмотреть сообщение
а для 2007-2009 автокада?
попробую собрать для 2009, насчет 2007-2008 не уверен. Но в любом случае в течение пары дней. У меня на работе (да и дома) стоит только 2010-й, проверить работоспособность не смогу. Заодно небольшие обновления добавлю..
Пример тоже чутка позже выложу
Думаю ещё укоротить названия команд - длинные очень, хотя всегда можно алиасы сделать, да и tab помогает
bargool вне форума  
 
Непрочитано 27.12.2011, 15:14
#10
WST


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


Цитата:
Сообщение от bargool Посмотреть сообщение
попробую собрать для 2009, насчет 2007-2008 не уверен. Но в любом случае в течение пары дней. У меня на работе (да и дома) стоит только 2010-й, проверить работоспособность не смогу. Заодно небольшие обновления добавлю..
Пример тоже чутка позже выложу
Думаю ещё укоротить названия команд - длинные очень, хотя всегда можно алиасы сделать, да и tab помогает
bargool,
Попробовал установить 2010 дома но процессор ему не понравился, а на работе просто не могу сис. админ не разрешает может все таки соберешь для 2009
WST вне форума  
 
Автор темы   Непрочитано 28.12.2011, 10:45
#11
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Цитата:
Сообщение от WST Посмотреть сообщение
bargool,
Попробовал установить 2010 дома но процессор ему не понравился, а на работе просто не могу сис. админ не разрешает может все таки соберешь для 2009
WST, за прошедшее время прога подверглась некоторым изменениям. Вся информация на данный момент лежит здесь. Собрал под 2009 и 2010 как для 32-х, так и для 64-х бит. Проверить работоспособность на 2009 не получилось.
bargool вне форума  
 
Непрочитано 26.01.2012, 12:37
#12
antiponf


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


Скажите а можно сделать так что бы максимальное количество групп в одном участке трасс было более 10. Я имею ввиду чтобы выноска могла показывать более 10 групп (скажем 50)
antiponf вне форума  
 
Автор темы   Непрочитано 26.01.2012, 14:45
#13
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


antiponf, Можно. Сначала объясню логику вставки выноски: прога ищет блок под странным названием group_vinoska, проверяет, есть ли там атрибуты, если есть - берёт Tag каждого атрибута, отбрасывает первые 10 символов (т.е. "GROUP_LINE"), остаётся номер. Заполняет текст этого атрибута названием группы из соответствующей позиции списка, закреплённого за линией. Затем выставляет соответствующее значение Lookup1, объявленной в этом блоке.
Соответственно:
  1. Можно просто увеличить количество атрибутов в блоке до нужного количества и внести соответствующие записи в таблицу лукапа (с динамическими блоками знакомы?)
  2. Можно вообще собственный блок сделать, главное, что бы там были атрибуты и лукап подходящие под логику
  3. Если будут предложения по улучшению - с удовольствием выслушаю.
У меня было несколько мыслей по работе с выноской:
  • просто отрисовывать линиями и текстами выноску в нужном месте, но я решил что это не удобно для дальнейшей работы с чертежом;
  • использовать готовый блок (пока остановился на нём, как компромиссе удобства и простоты реализации)
  • генерировать блок налету (тут надо подумать ещё, что хочется видеть в этом случае)
bargool вне форума  
 
Непрочитано 06.02.2012, 22:39
#14
antiponf


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


Попользовался. Программа оч. понравилась. Завтра попробуй свой дин блок выноски сделать если получится :-). Еще бы добавить возможность привинтить к каждой группе диаметр провода и добавить алгоритм для вычисления количества труб (причем диаметр условного прохода задавать самому)необходимых для прокладки всей пачки проводов (ну или количество коробов), причем чтоб количество труб отражалось в выноске. Тогда вообще цены не было бы вашей программе.
antiponf вне форума  
 
Автор темы   Непрочитано 07.02.2012, 15:27
#15
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Цитата:
Сообщение от antiponf Посмотреть сообщение
добавить алгоритм для вычисления количества труб (причем диаметр условного прохода задавать самому)необходимых для прокладки всей пачки проводов (ну или количество коробов)
Я сразу не соображу, что имеется в виду. Проход через стены? Или заполнение лотков на трассах?
bargool вне форума  
 
Непрочитано 07.02.2012, 15:37
#16
antiponf


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


Заполнение лотков (труб, коробов). Просто на данный момент не нашел ни одной программы, которая грамотно бы составляла кабельный журнал и правильно маркировала участки трасс. Ваша программа на данный момент лучшее, что мне удалось пока найти. Есть еще несколько пожеланий в усовершенствовании программы. Если интересно могу изложить :-)
antiponf вне форума  
 
Непрочитано 07.02.2012, 18:01
#17
Alexeipost


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


ВЫкладывый.
Посмотрел. Интересная программа. Но без составления кабельного журнала, без вывода длин кабелей по группам (или другим критериям) - это программа никак не облегчит жизни. Конечно составление кабельного журнала это самое сложное, но вывод длин групп в табличку это все таки необходимость.
Для заполнения лотков на трассах необходимо знать:
1. Количество проложенных кабелей - это реализовано;
2. Диаметр проложенных кабелей - значит программа должна как-то учитывать диаметр проложенных кабелей: а) путем задания пользователем (скажем по слою кабеля), б) путем произведения электрических расчетов (значит тут надо задавать мощности присоединяемого оборудования - путь гораздо сложнее);
3. Степень заполнения лотка - задается пользователем.
Alexeipost вне форума  
 
Непрочитано 07.02.2012, 22:13
#18
antiponf


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


Думаю проще будет по диаметру кабеля. При введении имени группы можно попробовать сделать окно ввода диаметра кабеля.
Чем мне лично понравилась данная программа, так это тем что она подходит почти под любую специфику связанную с кабельными сетями. Я работаю в компании которая занимается проектированием электрических сетей театров. Специфика довольно узкая, и помимо прокладывания кабелей питания мы прокладываем еще кабели передачи сигнала (звук, управление светом и т.д.). Соответственно приходится прокладывать толстые пачки разных кабелей , причем как правило в трубах. За месяцы поисков по сети ничего толкового чтобы автоматизировать процесс не нашел. В большинстве софта маркировка трассы устроена неверно и подчастую вообще не связана с кабельным журналом. Эта же программа самое близкое что удалось найти.


Касательно предложений:
1) Во первых,при маркировки трассы выноска должна отражать какие кабели находятся в участке трассы (маркировка взятая из кабельного журнала (например силовые линии мы обзываем С1,С2,С3..., а линии передачи звука SC1,SC2 и т.д.)), а так же способ прокладки и количество паралельных участков кабеленесущей системы (например в одну трубу диаметра 40 все провода не вошли и нужно добавлять вторую, или в о одной трубе нельзя прокладывать сигнальные и силовые линии (ПУЭ)). Примеры выносок прилагаю (возможно не по ГОСТ, если не прав поправте).
2) Во вторых, конечно не плохо было бы все кабели свести в одну базу данных. Создать некую табличку где есть название кабеля, количество жил, наружный диаметр, и группа кабеля по ПУЭ.
3) По поводу подсчета кабеля в трубе, то здесь предлагаю взять алгоритм предложенный в нанокаде. Поскольку очень тяжело затянуть провода близко друг к другу, то количество проводов помещающихся в трубе можно определить сложив площади квадратов описаных вокруг окружности изоляции кабеля и поделив на площадь прохода трубы(показал на рисунке).Как только коэффициент станет больше 1 требуется следующая труба. Да и коенчно не плохо было бы ввести коэффициент заполнения.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.png
Просмотров: 365
Размер:	7.4 Кб
ID:	74469  Нажмите на изображение для увеличения
Название: Безымянный2.png
Просмотров: 262
Размер:	6.4 Кб
ID:	74471  

Последний раз редактировалось antiponf, 07.02.2012 в 23:01. Причина: Забыл :-)
antiponf вне форума  
 
Автор темы   Непрочитано 08.02.2012, 00:16
#19
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Вооот! А то у меня и запал и идеи кончились
Я уже некоторое время проекты не делаю, так что сам пока перестал пользоваться программой
Цитата:
Сообщение от antiponf Посмотреть сообщение
почти под любую специфику связанную с кабельными сетями
Чего-то такого я и хотел
Цитата:
Сообщение от antiponf Посмотреть сообщение
Касательно предложений:
1) В принципе, выноска отражает именно маркировку, иначе смысла в ней нет. Группы можно назвать как угодно - это и будет на выноске. Другое дело, что используется по одной полочке на обозначение, но у меня вечно группы назывались довольно длинно, вроде "1ЩЭ гр.1", а то и длиннее, по-этому группировать их на одну полочку было неудобно.
2) Да, при дальнейшем развитии без этого не обойтись, этим и займусь в первую очередь
3) Согласен

Цитата:
Сообщение от Alexeipost Посмотреть сообщение
без вывода длин кабелей по группам
на данный момент вывод реализован только в ком.строку, в принципе, можно выводить куда угодно, в акадовскую таблицу, в ворд, в эксель, просто в текстовый файл, только надо сделать

Вопрос: кто где делает кабельный журнал (автокад, ворд, может, ещё чего)? Я всегда вордовский файл использовал. Как-то он больше чем автокад подходит под чисто текстовые нужды
bargool вне форума  
 
Непрочитано 08.02.2012, 07:18
#20
Alexeipost


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


С приложением для кабельного журнала засада. Чтобы печатать все одним файлом пдф по средствам автокада нужно КЖ иметь в автокаде, но не подецки тормозящий автокад при работе с таблицей это то ещё удовольствие.
При печати на бумагу, такой проблемы нет. Так что, я бы все таки оставлял выбор для пользователя куда генерировать КЖ. Если КЖ не большой, то в автокад, если большой то в ворд.
Alexeipost вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > C# .net Работа с групповыми линиями для электриков - обсуждение

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Акты скрытых работ Витос Прочее. Архитектура и строительство 324 05.03.2015 12:24
Как в ACAD 2010 LT начертить мультилинию с цветной заливкой samaraa AutoCAD 4 26.10.2010 22:24