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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Плагин создания кабельных линий и генерации КЖ раздела КИПиА. Протестировано на AutoCAD 2015...2022 и офис 2013...2019. NanoCAD 23

LISP. Плагин создания кабельных линий и генерации КЖ раздела КИПиА. Протестировано на AutoCAD 2015...2022 и офис 2013...2019. NanoCAD 23

Ответ
Поиск в этой теме
Непрочитано 21.06.2017, 02:40 2 | #1
LISP. Плагин создания кабельных линий и генерации КЖ раздела КИПиА. Протестировано на AutoCAD 2015...2022 и офис 2013...2019. NanoCAD 23
petro_f
 
Проектировщик
 
СПб
Регистрация: 06.10.2016
Сообщений: 299

Плагин кабельных трасс с автоматическим подсчётом длины кабеля и внесением данных по типу прокладки кабеля.

В плагине реализованы функции:
  1. Создания кабельного блока с "цифровой подписью" созданного блока, с внесением информации по типу прокладки:
    • Создание кабельных блоков (кабеля) из линий, полилиний, дуг и сплайнов с автоматическим подсчётом длины кабеля. Ручным и полуавтоматизированным (из таблицы) вводом информации по кабелю и типу и количеству "упаковки" кабеля.
    • Создание новых кабелей на базе существующего кабеля с внесением новой информации по кабелю.
    • Пакетное создание кабелей на базе существующего кабеля с внесением новой информации по кабелям.
  2. Проверки и верификации существующих кабелей.
  3. Проверки и редактирования информации после ручной правки кабеля.
  4. Пакетного редактирования существующих кабельных трасс с функциями:
    • Обрезки кабелей по заданной линии, рамке или многоугольной рамке.
    • Добавления трассы к кабелю.
    • Добавление добавочной длинны к кабелю и пересчёт информации по длине и "упаковке" кабеля.
    • Пересчёта информации по длине вновь получившегося кабеля и пересчёта длины "упаковки" кабельной линии.
    • Объединения соприкасающихся линий трассы, для корректной обрезки кабеля при редактировании.
    • Смены "базовой точки" кабельного блока после редактирования.
  5. Замены существующей трассы кабеля на новую трассу с взятием информации от заменяемого кабеля.
  6. Пакетного переименования кабелей с указанием информации для переименования в виде таблицы.
  7. Экспорта данных для создания (редактирования) кабелей и кабельного журнала с возможностью:
    • Экспорта в программу Word с оформлением кабельного журнала (форматы А3, А4 вертикалый, горизонтальный).
    • Экспорта в програму Excel с функцией контроля длинн упаковки кабели и длины самого кабеля.
    • Экспорта в таблицы AutoCAD с разбивкой на листы с учётом рамки и штампа (большого и малого).
    • Технического экспорта в AutoCAD данных по кабелю из специальных кабельных блоков (с электрических схем).
    • Технического экспорта данных по кабелю в кабельные журналы Word (без указания длинн и типа упаковки).
    • Технического экспорта данных по кабелю в программу Excel (без указания длинн и типа упаковки).
  8. Импорта данных для создания кабелей с возможностью:
    • Импорт из программы Word с оформленного КЖ (форматы А3 и А4, вертикальный и горизонтальный) с преобразованием полученных данных в формат таблицы AutoCAD.
    • Импорта в AutoCAD данных по кабелю из специальных кабельных блоков (с электрических схем).
  9. Маркировки существующик кабелей на планах. Маркировка может быть осуществлена:
    • Мультивыноской - для единичных кабелей в месте маркировки.
    • Табличкой с именами кабелей - для множества кабелей в месте маркировки.
    • Табличкой с именами кабелей со стрелкой из мультивыноски - для множества кабелей в месте маркировки.
    • Табличкой с перечнем задействованных марок и сечений кабеля, с подсчётом общего сечения кабеля в месте выделения. Удобно для подбора сечений КНС (кабеле несущей системы).
  10. Поиска и выделения существующих кабелей для дальнейшей работы с ними.
  11. Просмотр и копирование типов кабелей из базы данных плагина, для дальнейшей работы с ними.
  12. Выгрузка табличной информации по занимаемому сечению кабеля и минимально необходимого сечения КНС (кабеленесущей системы), лотки..короба и пр. .


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


Основной файл плагина составляет файл PDKFKG.lsp расположенный по пути C:\PDKFKG\0_LISP.
Имя папки, её расположение и основные настройки плагина редактируются в двух файлах в разделе основных настроек (там везде даны подсказки):
  • Файл плагина PDKFKG.lsp расположенный по пути C:\PDKFKG\0_LISP - строки с 38 по 76 для версии плагина [>= v 14.20]
  • Файл загрузки плагина 0_PDKFKG_LOAD.lsp расположенный по пути C:\PDKFKG - строки с 1 по 13 для версии плагина [>= v 14.20]

Для загрузки плагина в AutoCAD необходимо распаковать архив PDKFKG.rar в корневую директорию диска C: (если Вы хотите распаковать в другую директорию, то не забудьте внести эти изменения в перечисленные выше файлы) и из получившейся папки C:\PDKFKG всего один раз загрузить файл загрузки плагина 0_PDKFKG_LOAD.lsp.
После загрузки появится две плавающих панели с иконками. Малая панель с "выпадающими" иконками дублирует большую панель и может быть без болезненна отключена. Данная панель предназначена для работы на маленьких мониторах и позволяет не занимать много места.

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

В коде плагина использованы переработанные части чужих кодов, которые полностью и комплектно вшиты в тело плагина. Для исключения пересечения имён функций и глобальных переменных все переменные и функции имеют префикс PDKFKG.

Для замены иконок по своему вкусу в файле PDKFKG.mnu по пути C:\PDKFKG можно заменить на свои, или как вариант просто подменить файлы иконок и удалив файл PDKFKG.cuix заново открыть AutoCAD.

При старте плагина меняются или проверяются следующие переменные:
  • USERR1 - проверяется что не равна 0.0 Отключить можно закомментировав или удалив строку 6 в файле PDKFKG.mnl по пути C:\PDKFKG
  • DIMSCALE - проверяется что не равна 0.0 Отключить можно закомментировав или удалив строку 7 в файле PDKFKG.mnl по пути C:\PDKFKG
  • CANNOSCALEVALUE - проверяется что не равно 0.0 Отключить можно закомментировав или удалив строку 8 в файле PDKFKG.mnl по пути C:\PDKFKG
  • MENUBAR - переводится в 1 для отображения строки плагина. Отключить можно закомментировав или удалив строку 9 в файле PDKFKG.mnl по пути C:\PDKFKG


  1. В версии [>= V 14.21] поправил переменную масштабирования, которая идёт в файле по умолчанию. Теперь для расчёта масштаба используется переменная DIMSCALE. Поправил оформление функции wcmatch и убрал не действующие строки - на работе плагина это никак не отразилось.
  2. В версии [>= V 14.22] переформатировал выводимое меню плагина. Сгруппировал команды и уточнил описания команд.
  3. В версии [>= V 14.24] добавил сводную таблицу по количеству кабеля. Табличка нужна для внесения данных в спецификацию проекта. Сводная таблица вставляется в таблицу "Таблица прокладки кабеля".
  4. В версии [>= V 14.25] Поправил заливку ячеек таблички при изменении имени кабеля в функциях "PDKFKGCPY" и "PDKFKGMCPY".
  5. В версии [>= V 14.30] Добавил функцию пакетного обмена упаковки кабеля "PDKFKGPACKSWAP". Например кабель был уложен в гофре, а заказчик захотел заменить на ПВХ-трубу. Эта функция как раз позволит сделать это для выбранных блоков разом.
  6. В версии [>= V 14.6] Добавил варианты маркировки кабеля с выбором точки привязки, сделал одинаковой установку маркировки кабеля (одиночного и множественного). Пофиксил часть мелких ошибок. Перевёл картинки в png. Добавил команды "PDKFKGALLMARKM2, PDKFKGALLMARKM2Q, PDKFKGALLMARKM2EQ, PDKFKGALLMARKM2E". Описание есть при загрузке плагина.
  7. В версии [>= V 15.0] Добавил варианты установки маркировки кабеля в виде ссылки (м-выноска) и таблички с номерами кабелей. Связь таблички и м-выноски реализована в виде связанного поля. Установка данной маркировки командой "PDKFKGMARKALLMARK". Описание есть при загрузке плагина.
  8. В версии [>= V 16.3] Добавил функционал в функции Пакетное изменение кабельных блоков "PDKFKGMCORRECT". Добавилась возможность в пакетном редактировании блока производить обрезку кабелей рамкой, а так же добавилась функция добавления или удаления добавочной длины кабеля. Так же добавил возможность осуществить простое обновление информации по кабелю, без правки кабеля.
  9. В версии [>= V 16.6] Добавил функционал в функции Пакетное изменение кабельных блоков "PDKFKGMCORRECT". Добавилась возможность в пакетном редактировании блока производить обрезку кабелей секущей рамкой. Так же добавил вариант отказаться от редактирования кабеля, если вдруг что то пошло не так.
  10. В версии [>= V 17.2] Добавил возможность осуществлять подсчёт текущего сечения выбранных кабелей, что необходимо для осуществления подборки КНС (лотков, коробов...). Команда "PDKFKGCABHOLD". Так же добавил команду для просмотра базы данных кабелей с возможностью копирования выбранного кабеля, для дальнейшего использования. Команда "PDKFKGCABBD".
  11. В версии [>= V 17.8] Прошло много изменений. Добавил новые поля в блок кабелей. Добавил возможность делить кабель на "контрольный" и "силовой". Добавил поле "Группа кабеля" и возможность ставить мультивыноску с данным полем. Добавил возможность осуществлять подсчёт текущего сечения выбранных кабелей с делением на контрольные и силовые кабели, а так же общий расчёт для всех кабелей. Это необходимо для осуществления подборки КНС (лотков, коробов...). Команды "PDKFKGCABHOLD" и "PDKFKGMARK_GROUP". Модернизировал команду для просмотра базы данных кабелей с индикацией диаметра и возможностью копирования выбранного кабеля, для дальнейшего использования. Команда "PDKFKGCABBD".
  12. В версии [>= V 18.0] Добавил в вывод команды "PDKFKGCABHOLD" вес кабеля на один погонный метр и вес всех кабелей в КНС так же на 1 погонный метр. Данные нужны для расчёта крепежа КНС.
  13. В версии [>= V 18.2] Добавил автоматический ввод тестового имени кабеля при первом старте плагина. Поправил странный глюк автокада при копировании кабеля (в функции "PDKFKGCPY" и "PDKFKGMCPY"). Добавил кабелей в базу данных кабелей.
  14. В версии [>= V 18.3] Поправил перерасчёт кабеля в функции копирования кабельного блока ("PDKFKGCPY") при использовании нестандартного масштаба (по мотивам поста #54).
  15. В версии [>= V 18.4] Добавил защиту от нулевого масштаба (по мотивам поста #85 и #88).
  16. В версии [>= V 18.5] Поправил автоматическое включение отображение толщин линий. Теперь плагин не меняет отображение толщин линий. (по мотивам поста #92).
  17. В версии [>= V 18.5.1] Добавил в базу данных кабель REDAK.
  18. В версии [>= V 18.6] Добавил возможность фильтрации перечня кабелей в окне выбора кабелей. Это удобно, когда ищешь известный тебе кабель, можно не листать список, а просто его сократить.
  19. В версии [>= V 18.7] Добавил возможность вместе с фильтрацией перечня кабелей в окне выбора кабелей, создавать список выгружаемых кабелей.
  20. В версии [>= V 18.8] Добавил возможность сверить наличие кабелей на чертеже и в таблице. Таблица должна быть стандартной для этого плагина (8 столбцов), которую выгружает из схем плагин. Команда "PDKFKGCHECK".
  21. В версии [>= V 18.10] Поправил работу функции выдающей выбранный коэффициент умножения. Добавил защиту от отрицательных чисел. По мотивам поста #153
  22. В версии [>= V 18.11] Поправил ошибку когда при снятой галочке "Запоминать предыдущий ввод" при указании на таблицу не вводились данные.
  23. В версии [>= V 18.12] Добавил функционал по мотивам поста #159 и #160.
  24. В версии [>= V 18.14] Исправил не работающую функцию защиты из-за которой, при отсутствии доступа к файлу данных кабелей, автокад зависал (по мотивам поста #189). Так же добавил в базу данных кабели https://ekz.nt-rt.ru/images/manuals/PvPg.pdf
  25. В версии [>= V 18.15] Добавил отображение длины выделенных линий при создании кабеля. Эта информация теперь добавляется через слэш в строчке длинны кабеля. Так же добавил в базу данных кабели КПЭПнг(А)-HF и ParLan.
  26. В версии [>= V 18.16] Поправил функцию запоминания и восстановления настроек. Добавил функционала для проверки кабелей. Теперь функция "PDKFKGCHECK" позволяет выбирать для проверки несколько таблиц. Немного изменил цветовую гамму заливки таблички после создания кабеля. Увеличил поля в выгружаемом в AutoCAD кабельном журнале.
  27. В версии [>= V 18.17] Добавил функционала для проверки кабелей. Теперь функция "PDKFKGCHECK" так же осуществляет сверку не только по имени кабельного блока но и по его содержимому (все поля таблички).
  28. В версии [>= V 18.18] Ещё раз изменил цветовую гамму плагина. Добавил возможность установки своих цветов заливки методом правки исходного текста содержимого глобальных переменных цветовых значений. Добавил команду "PDKFKGHELP" которая вызывает окно с образцами цвета, его техническим номером и расшифровкой значения.
  29. В версии [>= V 18.21] Поправил небольшую ошибку и добавил функционала в функции выбора кабелей по фильтру "PDKFKGSEL". Теперь функция позволяет осуществлять поиск и сортировку кабелей по всем полям плагина, а так же позволяет производить сортировку из набора кабелей, которые либо были выделены вручную, либо были отсортированы ранее. Функция "PDKFKGSEL" позволяет запускать себя столько раз, сколько потребуется. Например можно выбрать сначала кабели идущие из одного щита и тут же повторным вызовом сортировки выбрать из ранее выбранных кабелей, все силовые кабели.
  30. В версии [>= V 18.23] Поправил мелкие ошибки. В функции "PDKFKGBROKENV" убрал вылет при отсутствии имени кабеля в пояснительном отчёте. В функции выгрузки "PDKFKGEXPORT" поправил установление размеров листов. На больших таблицах (более 40 листов) набегала ошибка в установке высоты таблицы.
  31. В версии [>= V 18.24] Поправил мелкие ошибки. В функции "PDKFKGSEL" теперь поле "Назначение кабеля" в список выводит название "Силовой кабель |" и текст содержащийся в поле "POWER_CABEL".
  32. В версии [>= V 18.25] Заменил файлы с обозначением КЖ (кабельный журнал) на ТС (таблица соединений), так как по нормам КЖ в проектах КИПиА нет. Поправил алгоритм работы функции "PDKFKGCLEAR"
  33. В версии [>= V 18.26] В функции "PDKFKGCHECK" при сверке кабелей не обращает на точное совпадение в поле "POWER_CABEL". Достаточно проверки на наличие/отсутствие там символов. При наличии любых символов в этом поле кабель считается силовым.
  34. В версии [>= V 18.27] Добавил возможностей в функции "PDKFKGPACKSWAP". Теперь функция позволяет не только произвести обмен "упаковки" кабеля, но и произвести сложение длин упаковок при объединении. Например планировалось, что кабели будут проложены в лотке и опуски будут выполнены в гофре. В процессе проектирования или строительства лотки будут заменены на гофру. Соответственно длину лотка надо будет добавить в гофру.
  35. В версии [>= V 19.00] Исправил мелкие графические и текстовые помарки. Добавил возможность вывода кабельного журнала по форме 1 ГОСТ Р 70444-2022 в функции "PDKFKGEXPORT".
  36. В версии [>= V 19.10] Исправил мелкую, но досадную, ошибку отсутствия кнопки отмены действия в функции "PDKFKGPACKSWAP".
  37. В версии [>= V 19.20] Добавил функционал заполнения "упаковки" кабеля в функции "PDKFKGPACKSWAP". Так как некоторые проектировщики забывают заполнить в чём у них проходит кабель на объекте, то данная функция служит для пакетного заполнения поля упаковки кабеля.


Благодаря нашим не равнодушным пользователям плагина появилась возможность оформить плагин в ленточном оформлении.
  • Turpak предоставил файл "Загрузка ленты_vх.xх.zip", который содержит всю необходимую информацию для загрузки ленты. Более подробно смотрите в посте #80. Текущая лента для плагина версии >= V 18.8.
  • Barmaley Bubusikin предоставил файл "PDKFKG Toolbar 18.12.rar", который содержит файл частичной адаптации ленты. Если есть вопросы как загружать этот файл, то прочтите как это делать в посте #80. Текущая лента для плагина версии >= V 18.14 (подходит и для текущей версии 18.21).

Версия плагина под NanoCAD находится тут

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

P.S. Для получения последней версии надо скачать файл PDKFKG.zip с исходным плагином (если он у Вас ещё не установлен), и файл обновления. Распаковать и заменить (добавить) все содержащиеся в обновлении файлы. Далее работать по исходной инструкции настройки, установки плагина.
P.P.S. Пересобрал исходный файл "PDKFKG.zip". Можно удалить предыдущую папку и установить плагин заново (хотя не обязательно, можно просто поступить как советовал выше). Текущая проверенная версия сборки плагина 18.23. Максимальная версия - смотри вложения.
P.P.P.S. Для преобразования блоков старого образца, достаточно использовать команду "PDKFKGBROKENV".

Вложения
Тип файла: rar Планы с кабелями о образцами блоков.rar (957.0 Кб, 1364 просмотров)
Тип файла: zip PDKFKG_v_18.23.zip (222.0 Кб, 223 просмотров)
Тип файла: zip PDKFKG.zip (681.8 Кб, 362 просмотров)
Тип файла: zip Ссылки на GIF.zip (1.2 Кб, 143 просмотров)
Тип файла: zip PDKFKG_v_19.20.zip (203.9 Кб, 116 просмотров)

__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!

Последний раз редактировалось petro_f, 13.12.2023 в 22:12. Причина: Добавление информации о выходе версии плагина под NanoCAD
Просмотров: 121494
 
Непрочитано 21.06.2017, 13:53
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,000


Что за тяга по умолчанию в корневой каталог системного диска ставить программу? Причем программу, которая по сути не требует прав выше пользовательских - насколько понимаю.
Сергей812 вне форума  
 
Автор темы   Непрочитано 21.06.2017, 14:02
| 1 #3
petro_f

Проектировщик
 
Регистрация: 06.10.2016
СПб
Сообщений: 299
Отправить сообщение для petro_f с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Что за тяга по умолчанию в корневой каталог системного диска ставить программу? Причем программу, которая по сути не требует прав выше пользовательских - насколько понимаю.
Сергей, тяги никакой нет, но если бы Вы внимательно читали текст, то увидели бы, что это не обязательно...
Написано вроде чётко и понятно...
Цитата:
Сообщение от petro_f Посмотреть сообщение
Имя папки, её расположение и основные настройки плагина редактируются в двух файлах в разделе основных настроек (там везде даны подсказки):
Файл плагина PDKFKG.lsp расположенный по пути C:\PDKFKG\0_LISP - строки с 38 по 76 для версии плагина [>= v 14.20]
Файл загрузки плагина 0_PDKFKG_LOAD.lsp расположенный по пути C:\PDKFKG - строки с 1 по 13 для версии плагина [>= v 14.20]
Просто мне так уж исторически сложилось, что удобней кинуть туда папку было.
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума  
 
Непрочитано 21.06.2017, 19:27
#4
Erbol2014

ТОО
 
Регистрация: 22.05.2014
Аршалы
Сообщений: 52


Я дико извиняюсь, но ваш файл "Планы с кабелями для тестов.dwg " имеет внутри макрос....
Вы нам трояна втюхать хотите? С трояном это в лабораторию касперского https://www.youtube.com/watch?v=nURH6dKb9ac
А рамку чертежа специально из "кусков" делаете, чтобы жизнь усложнить ?
Erbol2014 вне форума  
 
Непрочитано 21.06.2017, 19:42
#5
Кулик Алексей aka kpblc
Moderator

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


В качестве намека, где и как можно хранить подобные вещи: http://autolisp.ru/2011/04/11/data-set-and-get-03-2/
При первом запуске запрашивать каталог установки и записывать полученные данные, а потом просто к ним обращаться.
Offtop: P.S. Предоставление "готовой" программы обычно не подразумевает правки исходного кода.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.06.2017, 20:24
#6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,000


И использование в качестве кабеля вместо полилинии с расширенными данными (например) блока с атрибутами очень спорное решение, имхо.
Сергей812 вне форума  
 
Автор темы   Непрочитано 21.06.2017, 20:28
#7
petro_f

Проектировщик
 
Регистрация: 06.10.2016
СПб
Сообщений: 299
Отправить сообщение для petro_f с помощью Skype™


Цитата:
Сообщение от Erbol2014 Посмотреть сообщение
Я дико извиняюсь, но ваш файл "Планы с кабелями для тестов.dwg " имеет внутри макрос....
Уважаемый где и что Вы там нашли? Всё что у меня загружено это взято тут, SelSim и GeomProps.
Единственное я не сильно проверял подложку от нашего отдела АР, но и там сидят спецы не пальцем деланные.... Так что просто не загружайте ничего и да будет Вам счастье...

Цитата:
Сообщение от Erbol2014 Посмотреть сообщение
А рамку чертежа специально из "кусков" делаете, чтобы жизнь усложнить ?
Мне так удобнее и её я Вам и не предлагаю Меня данная рамка устраивает на 146%


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В качестве намека, где и как можно хранить подобные вещи: http://autolisp.ru/2011/04/11/data-set-and-get-03-2/
При первом запуске запрашивать каталог установки и записывать полученные данные, а потом просто к ним обращаться.
Я конечно Вас уважаю, но лезть в реестр по всякому поводу считаю глупой затеей. Не у всех в корпоративной политике есть разрешение на доступ программ к реестру. Я понимаю, что кад и так там ковыряется, но мне проще в самом исходном файле внести один раз настройку. Зато потом при переносе, переустановки системы ничего не надо трогать.. как то так.. я из старых DOS-ников и винде не сильно доверяю

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Offtop: P.S. Предоставление "готовой" программы обычно не подразумевает правки исходного кода.
Это не конечная версия программы. Так же править никто никого не заставляет. Можно пользоваться как есть... а можно и не пользоваться. Я считаю, что лучше сразу показать где и что можно подкорректировать под себя. Кому не нравится тот просто пройдёт мимо.

----- добавлено через ~5 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
И использование в качестве кабеля вместо полилинии с расширенными данными (например) блока с атрибутами очень спорное решение, имхо.
Решение не спорное, а на самом деле обдуманное. Оно позволяет мне контролировать линию от случайного копирования и прочих радостей жизни. Так же я сделал редактирование блоков (в том числе и пакетное). Так что не вижу в этом ничего плохого.
При том данная программа делалась под себя.. кому понравится, тому понравится. Я никого не заставляю
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума  
 
Непрочитано 21.06.2017, 21:13
#8
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,000


Цитата:
Сообщение от petro_f Посмотреть сообщение
Оно позволяет мне контролировать линию от случайного копирования и прочих радостей жизни
Чем защищает? Как полилинию могут случайно удалить, так и блок. Так же как и скопировать. Защищается от изменений, если блокировать слой, например. Так что это чисто вопрос реализации)
Сергей812 вне форума  
 
Автор темы   Непрочитано 21.06.2017, 21:24
#9
petro_f

Проектировщик
 
Регистрация: 06.10.2016
СПб
Сообщений: 299
Отправить сообщение для petro_f с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Чем защищает? Как полилинию могут случайно удалить, так и блок. Так же как и скопировать. Защищается от изменений, если блокировать слой, например. Так что это чисто вопрос реализации)
От удаления практически защититься не возможно (хотя конечно блок можно просто восстановить)... а вот от копирования - попробуйте скопировать блок, а затем нажать на иконку с треугольником.. Функция тут же пометит этот блок как неисправный. Так же попробуйте изменить имя кабеля в атрибуте..
А далее плагин эти кабели не учитывает в работе. Так что достаточно перед выгрузкой или маркировкой вызвать функцию проверки кабелей на соответсвие и они автоматом далее не будут участвовать в работе плагина. Так же это произойдёт, если кабель перенести в другой чертёж.
Так что какая никакая, но защита есть.
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума  
 
Непрочитано 21.06.2017, 22:13
| 1 #10
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


намаешься ты с этим трешем
gomer вне форума  
 
Непрочитано 21.06.2017, 22:21
#11
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от petro_f Посмотреть сообщение
лезть в реестр по всякому поводу считаю глупой затеей
А тот факт, что в реестр лезет почти каждая программа, установленная на компе - это так, мелочь? Ну-ну...

----- добавлено через ~1 мин. -----
Цитата:
Сообщение от petro_f Посмотреть сообщение
мне проще
Ключевое слово - "мне".
Ладно, оставлю критику - все равно времени на посмотреть у меня нет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.06.2017, 22:24
#12
petro_f

Проектировщик
 
Регистрация: 06.10.2016
СПб
Сообщений: 299
Отправить сообщение для petro_f с помощью Skype™


Цитата:
Сообщение от gomer Посмотреть сообщение
намаешься ты с этим трешем
Ну я просто поделился. Кому понравится возьмёт и попользуется. А кому не по душе такая реализация, тот не будет пользоваться. Остальные, кто просто решил поболтать без аргументов, пускай отправляются в пешее эротическое путешествие, его ещё никто не отменял

А так уже как бы 5 больших проектов сделали и всё как часы работает. Так что не надо пессимизма

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ключевое слово - "мне".
Художника обидеть может каждый
Каждый делает наверное всё же под себя. Так что тут любое решение приемлемо.

----- добавлено через ~4 мин. -----
Далее я не вижу смысла писать ответы не по теме.
Будут вопросы именно по реализации плагина - пишите.
Остальные сообщения я думаю есть смысл игнорировать.
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума  
 
Непрочитано 21.06.2017, 23:40
#13
Кулик Алексей aka kpblc
Moderator

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


  1. Разница:
    Код:
    [Выделить все]
     (if (< (pdkfkg-number-rounding-numbers g_pdkfkg_certain_length_cabel) 1)
                        1
                        (pdkfkg-number-rounding-numbers g_pdkfkg_certain_length_cabel)
                        )
    и
    Код:
    [Выделить все]
     (min 1 (pdkfkg-number-rounding-numbers g_pdkfkg_certain_length_cabel))
    В первом случае функция вызывается дважды, во втором - только один раз.
  2. Код:
    [Выделить все]
     (if (= (pdkfkg-alert-question-answer
             "Ошибка заложенных параметров"
             "Длина \"упаковки\" кабеля превышает длину самого кабеля!\nИсправить?"
             (+ 4 48 4096)
             ) ;_ end of pdkfkg-alert-question-answer
           6
           ) ;_ end of =
        ;| предупреждаем, что длина кабеля меньше чем длина "упаковки" и предлагаем исправить |;
      (progn ;| если да, то продолжаем цикл и вызываем окно заново |;
        (setq pdkfkg_temp_work_permit_while t)
        )     ; end progn
      (progn ;| если нет, то разрешаем продолжить функцию |; (setq pdkfkg_temp_work_permit_while nil)) ; end progn
      ) ;_ end of if
    и
    Код:
    [Выделить все]
     (setq pdkfkg_temp_work_permit_while
           (= (pdkfkg-alert-question-answer
                "Ошибка заложенных параметров"
                "Длина \"упаковки\" кабеля превышает длину самого кабеля!\nИсправить?"
                (+ 4 48 4096)
                ) ;_ end of pdkfkg-alert-question-answer
              6
              ) ;_ end of =
          ) ;_ end of setq
    Второй вариант более логичен, мне кажется.
  3. Код:
    [Выделить все]
     (+ (pdkfkg-number-rounding-numbers g_pdkfkg_in_lotok_cabel)
       (pdkfkg-number-rounding-numbers g_pdkfkg_in_gofra_cabel)
       (pdkfkg-number-rounding-numbers g_pdkfkg_in_metrukav_cabel)
       (pdkfkg-number-rounding-numbers g_pdkfkg_in_cabelkanal_cabel)
       (pdkfkg-number-rounding-numbers g_pdkfkg_in_pvx_cabel)
       (pdkfkg-number-rounding-numbers g_pdkfkg_in_truba_cabel)
       (pdkfkg-number-rounding-numbers g_pdkfkg_in_shtroba_cabel)
       ) ;_ end of +
    и
    Код:
    [Выделить все]
     (apply '+
           (mapcar (function pdkfkg-number-rounding-numbers)
                   (list g_pdkfkg_in_lotok_cabel g_pdkfkg_in_gofra_cabel g_pdkfkg_in_metrukav_cabel g_pdkfkg_in_cabelkanal_cabel g_pdkfkg_in_pvx_cabel g_pdkfkg_in_truba_cabel g_pdkfkg_in_shtroba_cabel) ;_ end of list
                   ) ;_ end of mapcar
           ) ;_ end of apply
    Опять же, не лень было писать?
  4. Вместо (nth ...) нередко можно использовать car, cadr, caddr etc.
  5. Вызов конструкции типа
    Код:
    [Выделить все]
     (if pdkfkg_temp_flag_name_ucs ;| если тут есть текст |;
    вернет t, если pdkfkg_temp_flag_name_ucs не nil. Тип данных именно здесь не контролируется.
  6. Кстати, а зачем столько глобальных переменных? Не проще ли было бы создать одну глобальную переменную (если без нее не обойтись), куда загонять все данные, формируя соответствующий список?
  7. В функции pdkfkg-create-block-of-cabel-in-layout меняется cmdecho, но в локальном *error* исходное значение не восстанавливается.
  8. Попытка вызова
    Код:
    [Выделить все]
     (vlax-put-property
                            (vlax-invoke-method pdkfkg_vla_id_dictionary_layer 'item pdkfkg_temp_count)
                            'freeze
                            :vlax-false
                            )
    для текущего слоя гарантированно вызовет ошибку. Свойство Freeze для текущего слоя не меняется.
  9. Вместо
    Код:
    [Выделить все]
     (pdkfkg-block-set-one-attributes
                           pdkfkg_list_selected_block_for_update
                           "LENGTH_CABEL"
                           (if (< (pdkfkg-number-rounding-numbers g_pdkfkg_certain_length_cabel) 1)
                             1
                             (pdkfkg-number-rounding-numbers g_pdkfkg_certain_length_cabel)
                             ) ;_ end of if
                           ) ; ìèíèìàëüíîå çíà÷åíèå 1 ìåòð             
                         (pdkfkg-block-set-one-attributes
                           pdkfkg_list_selected_block_for_update
                           "IN_LOTOK_CABEL"
                           (pdkfkg-number-rounding-numbers g_pdkfkg_in_lotok_cabel)
                           ) ;_ end of PDKFKG-block-set-one-attributes
                         (pdkfkg-block-set-one-attributes
                           pdkfkg_list_selected_block_for_update
                           "IN_GOFRA_CABEL"
                           (pdkfkg-number-rounding-numbers g_pdkfkg_in_gofra_cabel)
                           ) ;_ end of PDKFKG-block-set-one-attributes
                         (pdkfkg-block-set-one-attributes
                           pdkfkg_list_selected_block_for_update
                           "IN_METRUKAV_CABEL"
                           (pdkfkg-number-rounding-numbers g_pdkfkg_in_metrukav_cabel)
                           ) ;_ end of PDKFKG-block-set-one-attributes
                         (pdkfkg-block-set-one-attributes
                           pdkfkg_list_selected_block_for_update
                           "IN_CABELKANAL_CABEL"
                           (pdkfkg-number-rounding-numbers g_pdkfkg_in_cabelkanal_cabel)
                           ) ;_ end of PDKFKG-block-set-one-attributes
                         (pdkfkg-block-set-one-attributes
                           pdkfkg_list_selected_block_for_update
                           "IN_PVX_CABEL"
                           (pdkfkg-number-rounding-numbers g_pdkfkg_in_pvx_cabel)
                           ) ;_ end of PDKFKG-block-set-one-attributes
                         (pdkfkg-block-set-one-attributes
                           pdkfkg_list_selected_block_for_update
                           "IN_TRUBA_CABEL"
                           (pdkfkg-number-rounding-numbers g_pdkfkg_in_truba_cabel)
                           ) ;_ end of PDKFKG-block-set-one-attributes
                         (pdkfkg-block-set-one-attributes
                           pdkfkg_list_selected_block_for_update
                           "IN_SHTROBA_CABEL"
                           (pdkfkg-number-rounding-numbers g_pdkfkg_in_shtroba_cabel)
                           )
    можно запросто обойтись примерно таким:
    Код:
    [Выделить все]
     (pdkfkg-block-set-one-attributes
      pdkfkg_list_selected_block_for_update
      "LENGTH_CABEL"
      (min 1 (pdkfkg-number-rounding-numbers g_pdkfkg_certain_length_cabel))
      ) ;_ end of pdkfkg-block-set-one-attributes
    (foreach item (list (cons "IN_LOTOK_CABEL" g_pdkfkg_in_lotok_cabel)
                        (cons "IN_METRUKAV_CABEL" g_pdkfkg_in_metrukav_cabel)
                        (cons "IN_CABELKANAL_CABEL" g_pdkfkg_in_cabelkanal_cabel)
                        (cons "IN_PVX_CABEL" g_pdkfkg_in_pvx_cabel)
                        (cons "IN_TRUBA_CABEL" g_pdkfkg_in_truba_cabel)
                        (cons "IN_SHTROBA_CABEL" g_pdkfkg_in_shtroba_cabel)
                        ) ;_ end of list
      (pdkfkg-block-set-one-attributes
        pdkfkg_list_selected_block_for_update
        (car item)
        (pdkfkg-number-rounding-numbers (cdr item))
        ) ;_ end of pdkfkg-block-set-one-attributes
      )
    Или вообще таким:
    Код:
    [Выделить все]
     (foreach item (list (list "LENGTH_CABEL" 1 g_pdkfkg_certain_length_cabel)
                        (cons "IN_LOTOK_CABEL" g_pdkfkg_in_lotok_cabel)
                        (cons "IN_METRUKAV_CABEL" g_pdkfkg_in_metrukav_cabel)
                        (cons "IN_CABELKANAL_CABEL" g_pdkfkg_in_cabelkanal_cabel)
                        (cons "IN_PVX_CABEL" g_pdkfkg_in_pvx_cabel)
                        (cons "IN_TRUBA_CABEL" g_pdkfkg_in_truba_cabel)
                        (cons "IN_SHTROBA_CABEL" g_pdkfkg_in_shtroba_cabel)
                        ) ;_ end of list
      (pdkfkg-block-set-one-attributes
        pdkfkg_list_selected_block_for_update
        (car item)
        (if (not (listp (cdr item)))
          (pdkfkg-number-rounding-numbers (cdr item))
          (min (cadr item) (pdkfkg-number-rounding-numbers (caddr item)))
          ) ;_ end of if
        ) ;_ end of pdkfkg-block-set-one-attributes
      ) ;_ end of foreach
Ну и так далее. В код изменения не вносил, работоспособность не проверял.


----- добавлено через ~7 мин. -----
И заменить монстра
Код:
[Выделить все]
 (or ;| если полученный элемент является чем либо из перечисленных, тогда |;
  (wcmatch (cdr
             (assoc 0
                    (entget
                      (handent (vlax-get-property
                                 (vlax-invoke-method pdkfkg_temp_vla_name_description_block 'item pdkfkg_temp_two_count)
                                 'handle
                                 ) ;_ end of vlax-get-property
                               ) ;_ end of handent
                      ) ;_ end of entget
                    ) ;_ end of assoc
             ) ;_ end of cdr
           "*POLYLINE"
           ) ;_ end of wcmatch
  (wcmatch (cdr
             (assoc 0
                    (entget
                      (handent (vlax-get-property
                                 (vlax-invoke-method pdkfkg_temp_vla_name_description_block 'item pdkfkg_temp_two_count)
                                 'handle
                                 ) ;_ end of vlax-get-property
                               ) ;_ end of handent
                      ) ;_ end of entget
                    ) ;_ end of assoc
             ) ;_ end of cdr
           "LINE"
           ) ;_ end of wcmatch
  (wcmatch (cdr
             (assoc 0
                    (entget
                      (handent (vlax-get-property
                                 (vlax-invoke-method pdkfkg_temp_vla_name_description_block 'item pdkfkg_temp_two_count)
                                 'handle
                                 ) ;_ end of vlax-get-property
                               ) ;_ end of handent
                      ) ;_ end of entget
                    ) ;_ end of assoc
             ) ;_ end of cdr
           "ARC"
           ) ;_ end of wcmatch
  (wcmatch (cdr
             (assoc 0
                    (entget
                      (handent (vlax-get-property
                                 (vlax-invoke-method pdkfkg_temp_vla_name_description_block 'item pdkfkg_temp_two_count)
                                 'handle
                                 ) ;_ end of vlax-get-property
                               ) ;_ end of handent
                      ) ;_ end of entget
                    ) ;_ end of assoc
             ) ;_ end of cdr
           "ELLIPSE"
           ) ;_ end of wcmatch
  (wcmatch (cdr
             (assoc 0
                    (entget
                      (handent (vlax-get-property
                                 (vlax-invoke-method pdkfkg_temp_vla_name_description_block 'item pdkfkg_temp_two_count)
                                 'handle
                                 ) ;_ end of vlax-get-property
                               ) ;_ end of handent
                      ) ;_ end of entget
                    ) ;_ end of assoc
             ) ;_ end of cdr
           "SPLINE"
           ) ;_ end of wcmatch
  )
на вменяемые
Код:
[Выделить все]
 (or ;| если полученный элемент является чем либо из перечисленных, тогда |;
  (wcmatch (cdr
             (assoc 0
                    (entget
                      (handent (vlax-get-property
                                 (vlax-invoke-method pdkfkg_temp_vla_name_description_block 'item pdkfkg_temp_two_count)
                                 'handle
                                 ) ;_ end of vlax-get-property
                               ) ;_ end of handent
                      ) ;_ end of entget
                    ) ;_ end of assoc
             ) ;_ end of cdr
           "*POLYLINE,LINE,ARC,ELLIPSE,SPLINE"
           ) ;_ end of wcmatch
  ) ;_ end of or


----- добавлено через ~11 мин. -----
Ох, елки! Там код упрощать можно оооочень долго...
Уже под more прятать не буду
Код:
[Выделить все]
 (assoc "NAME_CABEL" pdkfkg_temp_all_data_attrib_one_block) ;| проверяем наличие всех атрибутов|;
                 (assoc "IN_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "OUT_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "TYPE_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "MOD_OF_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "LENGTH_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "NOTE_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "IN_LOTOK_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "IN_GOFRA_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "IN_METRUKAV_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "IN_CABELKANAL_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "IN_PVX_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "IN_TRUBA_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "IN_SHTROBA_CABEL" pdkfkg_temp_all_data_attrib_one_block)
                 (assoc "ADD_LENGTH_CABEL" pdkfkg_temp_all_data_attrib_one_block)
vs
Код:
[Выделить все]
 (apply 'and
       (mapcar (function (lambda (x) (cdr (assoc x pdkfkg_temp_all_data_attrib_one_block))))
               '("NAME_CABEL"           "IN_CABEL"             "OUT_CABEL"            "TYPE_CABEL"           "MOD_OF_CABEL"         "LENGTH_CABEL"         "NOTE_CABEL"
                 "IN_LOTOK_CABEL"       "IN_GOFRA_CABEL"       "IN_METRUKAV_CABEL"    "IN_CABELKANAL_CABEL"  "IN_PVX_CABEL"         "IN_TRUBA_CABEL"       "IN_SHTROBA_CABEL"
                 "ADD_LENGTH_CABEL"
                 )
               ) ;_ end of mapcar
       ) ;_ end of apply
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 21.06.2017 в 23:52.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.06.2017, 01:48
#14
petro_f

Проектировщик
 
Регистрация: 06.10.2016
СПб
Сообщений: 299
Отправить сообщение для petro_f с помощью Skype™


Ну докопаться и до столба можно, но:
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
По качеству кода
1. При единичном вызове функции не имеет никакой разницы...
2. Абсолютно нет, так как это немного логически разные операции с флагом. Сказать, что там всё не так и при этом не вдаваться в логику запроса, легко. Но не всегда очевидные пути логичны.
3. Невероятно, но не лень. По скорости обработки разница никакая, а по удобству при редактировании - колоссальна.
4. Откровенный бред. Не всегда nth можно заменить на caadr и им подобные. Такое мог бы написать школьник, но не Вы... nth возвращает единичное значение всегда. car..cadr и им подобные могут вернуть остаток списка, вместо единичного значения... т.е. мне всегда надо точно знать, что будет возвращено и иметь шанс хапнуть на вход не 1 параметр, а несколько. Зачем??? Цена вопроса применения (по скорости обработки) абсолютно одинакова. Так что это просто из серии доебаться лишь бы что то написать.
5. В процессе написания плагина логика поменялась, так что там контролируется наличие или отсутствие данных, а не их тип... Переделывать функцию не стал, а просто оставил такой.
6. Ну ту дело вкуса... Можно вообще битами флаги выставлять в реестре, ну если у тебя например микроконтроллер, а можно и осмысленные имена давать переменным и завести их ровно столько, сколько тебе требуется. Как бы одна переменная или 50 нет разницы, а вот шанс вписать в сводную переменную лишнюю инфу и порушить работу плагина - увеличится. Так что это так себе замечание.
7. Опять же замечание из серии я не разобрался и лишь бы что то написать. Просто опишу - момент работы (написания) плагина растянулся на несколько месяцев. В процессе работы некоторые функции переписывались, у некоторых расширялись возможности. Так уж получилось, что функция (PDKFKG-remember-layer) и функция ( PDKFKG-back-remembers-layer) а так же (PDKFKG-all-restore-settings) стали запоминать и восстанавливать более расширенный комплект переменных, включая и cmdecho. Позже, что бы не проверять и переписывать каждую функцию я просто оставил как есть. Так что данная переменная восстанавливается, а с ней и куча других. Код конечно же можно вылизать до идеала, но принцип работает - не лезь править, никто не отменял..
8. Ответ как и в пункте выше, про не разобравшись в логике работы. Имя текущего слоя в данный список не попадает...
9. Можно, но в определённый момент времени (я всё же не проф программист LISP) мне не нравилось направо и налево применять этот функционал (mapcar, foreach...). Сейчас бы я переписал это так, но с другой стороны это работает и читаемо, так что не вижу смысла переписывать.


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Настоятельно советую изучить справку по wcmatch
Можно конечно переделать и так. И даже выиграть 18 наносекунд в скорости выполнения операции Но стоит ли оно того? Так мне на тот момент было удобней написать именно так.
Будет время - оптимизирую этот жутчайший косяк из за которого мне лучше пойти и удавиться, так как я точно не программист а полное г...о момент...

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ох, елки! Там код упрощать можно оооочень долго...
Уже под more прятать не буду
Ну тут часть ответа под номером 9 и предыдущий коммент так же подойдёт...
Но по мне мой вариант читается намного внятней при отладке кода, чем предложенный вариант с "apply 'and mapcar"... Я всегда выступаю за то, что если читабельность кода глазами вызовет написание лишних 10-х строк - значит надо написать эти строки. Компу (компилятору) глубоко похфиг, а мне для отладки легче и удобней.
Так что последних несколько замечаний - это просто обычная вкусовщина..

Больше всего меня добила Ваша ремарка "Ну и так далее. В код изменения не вносил, работоспособность не проверял." - это вообще истинный подход профессионала... написать кучу замечаний, не разбираясь ни в логике работы, ни запуская прогу... Вы мне напомнили работу наших некоторых экспертов в доблестной экспертизе - которые тоже пишут замечания к проекту, не открывая его
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!

Последний раз редактировалось petro_f, 22.06.2017 в 01:56.
petro_f вне форума  
 
Непрочитано 22.06.2017, 06:24
| 1 #15
Кулик Алексей aka kpblc
Moderator

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


petro_f, ок, ок, уговорил. Я дурень, влез куда не просили Умолкаю.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.06.2017, 07:25
| 1 #16
Erbol2014

ТОО
 
Регистрация: 22.05.2014
Аршалы
Сообщений: 52


Цитата:
Сообщение от petro_f Посмотреть сообщение
Уважаемый где и что Вы там нашли? Всё что у меня загружено это взято тут, SelSim и GeomProps.
При открытии вашего файла Автокад выдаёт - см. картинку
У меня никогда такого не выдавало.
Вы в файле чего то мудрили с макросами, удалили, а следы остались.
Чтобы такого небыло создавайте новый файл и копируйте в него содержимое.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 507
Размер:	99.5 Кб
ID:	190033  
Erbol2014 вне форума  
 
Непрочитано 22.06.2017, 09:07
#17
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Подтверждаю, в dwg файле имеется внедренный vba проект. Пустой.
Для удаления этого мусора:
Команда _vbaman нажать отмеченную кнопочку


А вообще в самом файле очень много мусора и прокси объектов, его бы почистить...

Хотя, я уже знаю что ответит автор... =о)

Последний раз редактировалось Boxa, 22.06.2017 в 09:12.
Boxa вне форума  
 
Автор темы   Непрочитано 22.06.2017, 09:22
#18
petro_f

Проектировщик
 
Регистрация: 06.10.2016
СПб
Сообщений: 299
Отправить сообщение для petro_f с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
petro_f, ок, ок, уговорил. Я дурень, влез куда не просили Умолкаю.
Алексей, ну не надо так демонстративно. Просто я ожидал бы замечания по делу. Согласен, что wcmatch просто затупил, а остальное по большому счёту не принципиально... каждый пишет так как ему удобно. И даже в таком варианте wcmatch работает.
Давайте без обид общаться. Ок?
Я всегда готов к конструктивному диалогу. Если где высказался резко, то это не со зла



Цитата:
Сообщение от Erbol2014 Посмотреть сообщение
При открытии вашего файла Автокад выдаёт - см. картинку
У меня никогда такого не выдавало.
Вы в файле чего то мудрили с макросами, удалили, а следы остались.
Чтобы такого небыло создавайте новый файл и копируйте в него содержимое.
Erbol2014 я этот файл просто приложил в последний момент. Если Вас прямо прёт, то можете смело нажать "не включать макросы".
P.S. Посмотрел я на то, что Вас там с макросами пугало ))) Видимо от АР наследие с пустым проектом VBA из подложки прилетело. Сейчас почищу и заменю файл. Так что можете его перекачать заново.

----- добавлено через ~34 мин. -----
Цитата:
Сообщение от Boxa Посмотреть сообщение
Подтверждаю, в dwg файле имеется внедренный vba проект. Пустой.
Для удаления этого мусора:
Команда и картинка

А вообще в самом файле очень много мусора и прокси объектов, его бы почистить...

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

Последний раз редактировалось petro_f, 22.06.2017 в 09:32.
petro_f вне форума  
 
Непрочитано 22.06.2017, 10:12
#19
Кулик Алексей aka kpblc
Moderator

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


petro_f, без вникания - что такое кабельные линии, что такое разделы КИПиА, без понимания (хотя бы примерного) специфики работы, я так полагаю, электриков - по функционалу лично я сказать ничего не могу. По коду - да, но это максимум.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.06.2017, 11:54
#20
AlexZh


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


petro_f. Молодец! Хорошая программа. Видно человек старался! Кому надо, тот возьмет на вооружение.

Кулик Алексей aka kpblc, хорошие замечания по коду.

Некоторые остальные, да. Много необоснованной критики. Человек поделился своим творением. Заметьте, бесплатно. Не каждый на такое способен.

Я вот думаю, все эти свойства все-таки через расширенные данные пользовать. По моему, если кабелей будет много, как то не удобно будет пользоваться чертежом с большим количеством блоков. или уж в грубы объединять.
__________________
Проекты СС
AlexZh вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP. Плагин создания кабельных линий и генерации КЖ раздела КИПиА. Протестировано на AutoCAD 2015...2022 и офис 2013...2019. NanoCAD 23

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Адаптация древних lisp-приложений под AutoCad 2016 trushev LISP 36 08.02.2016 10:33
Autocad 2016 не понимает последовательность команд с ^C^C... Santa123 AutoCAD 0 27.01.2016 10:31
Проблема открытия файлов в Autocad 2010 после установки Autocad 2015 Volodya AutoCAD 18 30.10.2014 14:30