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

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

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

Ответ
Поиск в этой теме
Непрочитано 03.10.2011, 18:15 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
Просмотров: 34422
 
Непрочитано 08.02.2012, 08:07
#21
antiponf


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


По поводу вывода кабельного журнала я тоже согласен с Alexeipost. Абсолютно так реализовано в нанокаде и маджикаде. Хочешь в таблицу в автокад выводи, хочешь в буфер копируй и вставляй в оффис. Кстати нужно не забыть добавочный коэффициент для длинны кабеля :-)
antiponf вне форума  
 
Непрочитано 03.05.2012, 23:48
#22
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Цитата:
Вопрос: кто где делает кабельный журнал (автокад, ворд, может, ещё чего)? Я всегда вордовский файл использовал.
Только AutoCad ИМХО, плюсы в основном в том что все в одном месте, выборка, подсчет - либо группы по свойствам, либо блоки строк текста + math.lsp. По поводу выносок, может через многострочный атрибут блока выноски? Междустрочное расстояние для мн атрибута также можно установить в минимум как и для Mtext, в последних версиях он стабилен, вплоть до 2009 были проблемы...

Цитата:
Как-то он больше чем автокад подходит под чисто текстовые нужды
Если правильно использовать *.shx AutoCad рулит , Word последнее время напоминает мегамонстра.

Последний раз редактировалось perpetule, 03.05.2012 в 23:55.
perpetule вне форума  
 
Автор темы   Непрочитано 05.05.2012, 00:41
#23
bargool


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


Цитата:
Сообщение от perpetule Посмотреть сообщение
может через многострочный атрибут блока выноски?
Кстати вариант. Попробую
Добавлено:
Судя по темам про многострочный атрибут, и моему прошлому опыту использования, при переходе с автокада на автокад могут возникнуть проблемы. Но, использование многострочного атрибута избавляет от плясок с бубном при большом количестве групп (добавлять кучу атрибутов и проч.)

Последний раз редактировалось bargool, 15.05.2012 в 00:05.
bargool вне форума  
 
Автор темы   Непрочитано 16.05.2012, 01:20
#24
bargool


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


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

Последний раз редактировалось bargool, 16.05.2012 в 15:18.
bargool вне форума  
 
Непрочитано 16.05.2012, 16:04
#25
antiponf


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


не пойму по какой причине, но не работают все нововведения. При помощи netload загрузил новую версию программы (Автокад 10, винда 32) , и прога не распознает не новую выноску, не новые команды...
antiponf вне форума  
 
Автор темы   Непрочитано 16.05.2012, 16:06
#26
bargool


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


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

Последний раз редактировалось bargool, 16.05.2012 в 16:15.
bargool вне форума  
 
Непрочитано 16.05.2012, 16:34
#27
antiponf


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


Перегрузил комп.. заработало))
antiponf вне форума  
 
Автор темы   Непрочитано 16.05.2012, 18:22
#28
bargool


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


Цитата:
Сообщение от antiponf Посмотреть сообщение
Перегрузил комп.. заработало))
Ну, по идее, должно было хватить автокада
bargool вне форума  
 
Автор темы   Непрочитано 03.07.2012, 01:28
#29
bargool


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


Обновил программу до версии 0.6.5, теперь при изменении маркировок групп или их удалении обновляются выноски, так же подправил некоторые ошибки. Товарищи! Если кто-нибудь использует программу - вы наверняка натыкались на ошибки - я не получил ни одного отчёта, это неправильно! Без обратной связи никак!
bargool вне форума  
 
Непрочитано 30.07.2012, 13:31
#30
Артем5555


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


Как вообще установить программу?
Артем5555 вне форума  
 
Автор темы   Непрочитано 30.07.2012, 13:59
#31
bargool


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


Инсталлятора нет. Просто разархивируете куда надо, затем для использования загружаете dll-ку в автокад. Для этого вводите команду netload (или _netload, если локализованная версия автокад), затем указываете длл-ку в соответствии с вашей версией автокада. dll-ку, в принципе, можно поставить в автозагрузку при желании. А так, однажды загруженная таким образом dll работает до закрытия автокада.
bargool вне форума  
 
Непрочитано 30.07.2012, 14:06
#32
Артем5555


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


спасибо!
Артем5555 вне форума  
 
Автор темы   Непрочитано 02.08.2012, 17:56
#33
bargool


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


У меня под боком наконец появился активный пользователь - начались отловы багов и неудобностей в использовании программы.
  • Выяснилось, что нынешняя точность определения совпадения точек слишком уж требовательна, выпадали участки из расчёта наиболее удалённого участка (хе, простите за тавтологию) - увеличил до 10 единиц чертежа. т.е. для того, чтобы точки считались одинаковыми, они должны быть ближе 10 ед. чертежа друг к другу.
  • В окне редактирования данных проекта на вкладке файл добавил кнопку добавить текущий чертёж.
  • При поиске наиболее удалённого участка теперь учитывает и дуги.
  • Исправил ошибку, в результате которой после автосохранения dwg слетали пути в проекте и файл ElectroProject.xml сохранялся в папку автосохранения.
  • Вдохновлённый laywalk, добавил новую команду BEGroupWalk, при её запуске отображается окно со списком групп, при выборе группы, она подсвечивается жирным жёлтым цветом на чертеже. Удобно для отслеживания непрерывности групп, да и вообще корректности, также можно погулять по чертежу рассмотреть группу получше. При смене группы происходит регенерация чертежа - на тяжёлых файлах будет тормозить. Работает только в 2010 и выше автокадах. Это пока тестовый вариант, потом подумаю, как можно избежать регенерации и зависимости от версии.
Обновил архив в теме
bargool вне форума  
 
Непрочитано 28.09.2012, 13:03
#34
WST


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


Установил программу пока изучаю но сразу вопрос
Цитата:
Сообщение от bargool Посмотреть сообщение
теперь при изменении маркировок групп или их удалении обновляются выноски
что для это нужно? при помощи команды BEChGr я меняю маркировку группы и что дальше? существующие выноски не обновляются. И еще

Цитата:
Сообщение от bargool Посмотреть сообщение
Цитата:
Сообщение от Alexeipost
без вывода длин кабелей по группам?
на данный момент вывод реализован только в ком.строку
при помощи кокой команды можно получить длину определенной группы?
BELongest выводит самый длинный участок в группе но в каких единицах? желательно чтобы выводила в метрах с учетом масштаба чертежа
WST вне форума  
 
Автор темы   Непрочитано 02.10.2012, 13:52
#35
bargool


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


Да, про BEChGr я как-то забыл... там обновления выносок нет, сделаю.
В целом, для корректной работы надо запустить сначала BEGroupsEdit, добавить файлы, с которыми ведётся работа (все обновления и расчёты идут в тех файлах, если ни одного файла - ничего не будет работать). Там же можно работать со списком групп. Обновление выносок сейчас сделано при переименовании группы и при удалении с помощью этой команды.
Цитата:
Сообщение от WST Посмотреть сообщение
при помощи кокой команды можно получить длину определенной группы?
BELongest выводит самый длинный участок в группе но в каких единицах? желательно чтобы выводила в метрах с учетом масштаба чертежа
BELen выведет длины групп в ком. строку. Будут учитываться также блоки перепада высот
Но лучше пользоваться BECalculate
Все команды выводят длины в единицах чертежа

Вообще, по мере разрастания программы надо сделать вменяемую документацию, конечно.. и да, программу ещё дорабатывать и дорабатывать, чтобы было удобно работать
bargool вне форума  
 
Непрочитано 02.10.2012, 17:10
#36
WST


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


bargool, мне кажется что нужна переменная для масштаба чтобы выводило длину в м а не в мм иле см. Я обычно черчу в 100-м масштабе реже в 50-м и 200-м. В прикрепленном файле чертеж в 100м масштабе и длина группы Гр-1 приблизительно 32м а в командной строке выводится
Группа Гр-1, длина: 320.102572698063 это в см получается, тоже самое и с наиболее длинным участком
Наиболее удалённый участок группы Гр-1 - 128.983654804875. Это пока по тому что есть.
Далее по тому что хотелось бы добавить в программу:
- подсчет длин кабеля по жильность для освещения (см. чертеж), как я вижу решения данной задачи есть блок на подобия твоего блока перепада высот
программа находит линии на которых есть эти блоки и записывает в расширенные данные что на определенном участке группы Гр-1
5 проводов длиной 5м на другом 4 провода длиной 10м и.т.д и при помощи команды вывести эту информацию так к примеру:
Гр-1 ВВГнг
-3х1,5 - 25м
-4х1,5 - 10м
-5х1,5- 10м,
надеюсь я ясно описал задачу?
Вложения
Тип файла: dwg
DWG 2010
ex1.dwg (160.5 Кб, 3521 просмотров)
WST вне форума  
 
Непрочитано 23.10.2012, 09:04
#37
Alexeipost


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


Как начать работать с прогой? Для lsp понятно, подгрузил и работаешь. Что делать с dll файлами?
Alexeipost вне форума  
 
Непрочитано 23.10.2012, 09:09
#38
WST


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


Alexeipost, тебе сюда
WST вне форума  
 
Непрочитано 23.10.2012, 09:32
#39
Alexeipost


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


у меня вот так вот получилось загрузить (command "_netload" "D:/LISP/BargElectro v0.6.7/BargElectro v0.6.7 2011.dll")
Потом сделал кнопку на панели инструментов с этой командой.
Alexeipost вне форума  
 
Непрочитано 23.10.2012, 09:48
#40
WST


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


Цитата:
Сообщение от Alexeipost Посмотреть сообщение
у меня вот так вот получилось загрузить (command "_netload" "D:/LISP/BargElectro v0.6.7/BargElectro v0.6.7 2011.dll")
Потом сделал кнопку на панели инструментов с этой командой.
А зачем кнопка?
WST вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > C# .net Работа с групповыми линиями для электриков - обсуждение

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

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


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