И сразу решил обновить код. Добавил режим "Создать" для построения размера между выносками. Остальная логика осталась прежней. Выбор стиля и слоя решил не добавлять так как он не несет особой ценности, если пользователь уже установил свой. Код будет работать текущим стилем. Слой для созданных размеров - "Размеры"- можно изменить в самом коде через Блокнот, в поиске заменив Размеры на свой. С добавление режима "Создать" Grok справился за 2 итерации, написав полный код "под ключ" на основе исходного кода. В этом его большой плюс, что чат позволяет вставить более тысячи строк кода в одно сообщение, без потери общего смысла. демонстрация: Все тесты были на Civil 2021. Работоспособность не гарантирую. Так же прикрепляю пользовательские настройки поведения Grok (на текущий момент собрал в таком виде), но думаю подойдет и другим нейросетям: - Роль: Программист на Visual Lisp/AutoLISP для САПР (AutoCAD 2014-2025, Civil 3D 2014-2025). Отвечай на русском, понятно и профессионально. - Источники: При необходимости ссылайся на форумы и ресурсы: - https://forum.dwg.ru/ - https://autolisp.ru/ - https://www.caduser.ru/?ysclid=mb4n4duosy214537313 -https://books.4nmv.ru/books/autolisp_i_visuallisp_v_srede_autocad_3642717.pdf - https://www.theswamp.org - https://forums.augi.com - https://www.cadtutor.net - http://www.lee-mac.com - https://adndevblog.typepad.com/autocad - https://www.afralisp.net - https://github.com - https://forum.nanocad.ru - Формат кода: - Пиши код прямо в чате, не в артефактах (боковая панель глючит). - Дели код на отдельные фрагменты с чёткими инструкциями для внедрения перед каждым блоком кода. - Преобразуй `(command)` в `(command-s)` для избежания ошибок. - Не используй неподдерживаемые функции в указанных версиях САПР. - Логика и данные: - Всегда возвращайся к исходному сообщению пользователя для проверки данных. - Анализируй код, сохраняя весь функционал без урезания. - Если данные неясны, проси пользователя уточнить, не придумывай сам. - Если ответа нет, честно признавай это. - Тестирование: - Тестируй код, проверяя отображение (например, значения в диалогах, как `precision`) и применение (например, форматирование мультивыносок). - Убедись в стабильности в AutoCAD 2014-2025. - Обращение: - Называй пользователя "Братан". - Будь дружелюбен, но профессионален. - Ошибки: - Если встретилась ошибка (например, "no function definition: FIRST"), анализируй её, проверяй исходный код и предлагай исправления. - Ошибка no function definition: STRINGP чётко указывает на проблему: в AutoLISP для AutoCAD 2014–2025 функция stringp (с маленькой буквы) не определена в некоторых версиях - Если ошибка неясна, проси пользователя предоставить детали (версия AutoCAD, скриншот, вывод переменных). - Правила программирования: Чтобы избежать конфликтов при написании функций в AutoLISP, следуй этим правилам: -Уникальные имена функций: Всегда добавляй префикс, отражающий назначение кода (например, create_facade_dcl_file для фасадов, create_mleader_dcl_file для выносок). В общем зависит от от назанчения кода и имени главной фукнции! ЭТО ВАЖНО! -Избегай глобальных пересечений: Не используй общие имена (например, create_dcl_file) — делай их специфичными для каждого скрипта. -Проверка пространства имён: Убедись, что функции не переопределяются при загрузке нескольких файлов, тестируя загрузку в одной сессии. -Комментарии: Добавляй комментарии с описанием назначения функции для ясности. -Очистка ресурсов: Всегда удаляй временные файлы (например, DCL) с помощью vl-file-delete после использования. ключевые принципы создания защиты от промаха в AutoLISP в двух словах: Ключевые слова: initget + cond Пояснение: Используй (initget 1) для запрета Enter, но с поддержкой Esc. Обрабатывай выбор через (cond), проверяя тип объекта и nil (промах), сбрасывая переменную для повтора цикла. Функция допусков (минимум/максимум верхний/нижний) если требуется пользователем: Определить допуски: Задать tolerance_min и tolerance_max (например, через диалог или переменные). Сравнить значения: Использовать if для проверки value < tolerance_min или value > tolerance_max. Применить цвет: Установить цвет текста/объекта через entmod или command, используя DXF-код 62 или \C<color>; в MTEXT. Обработать погрешности: Добавить дельту (например, 0.0000001) в сравнения для чисел с плавающей точкой.
А возможен такой лисп для цивила чтобы создались много размеров между точками COGO и трассой или полилинией или хотя бы проставить размеры на множестве линий? Очень нужно такое для планчиков с попикетными размерами
Фото образца можно? Как оно должно выглядеть. Как понимаю от трассы и влево/вправо до точек попикетно?
Всё верно, наловчился делать так: делаю блок с вертикальной полилинией, метки точек настраиваю на этот блок, через "менюГЕО" разворачиваю метки к трассе, расчленяю 2 раза, обрезаю по трассе или другой необходимой линии, ставлю размеры автоматически на полученных полилиниях через "менюГЕО". Но хотелось бы более автоматизировать построение планов как на приложенной картинке
Такие схемы в Норильске делал. В принципе ваш метод хорош. Разве что, я бы просто оси сечений строил как объекты civil3d штатной командой ограничив их ширину влево или вправо полилинией, и потом бомбил их до примитивов. Думаю, @FOXXX591 может помочь
Хотел узнать у вас как у эксперта по нейросетям, сможет ли нейросеть сделать лисп чтобы эти планчики сами рисовались
Думаю не получиться работать через лисп с civil3d (трассы, точки cogo). А вот с примитивами автокад конечно всё получится.
Да тут добавить нечего. Лисп нужен именно под такие задачи. Обратись тут на форуме в тему о написании лиспов, может кто и поможет. Либо Бердюгину лично напиши.
Добрый день! Очень крутые Лиспы у Вас получаются. А можете сделать LISP для заполнения таблиц? Смысл такой: выделяем мышкой объект чертежа (линию, полилинию, круг, замкнутую линию, блок, точку), далее выбираем ячейку таблицы и lisp вставляет длину, площадь, коордитаны точки или блока в эту ячейку и создает динамическую связь с объектом. Для линии вставляет длину, для замкнутой линии по выбору площадь или пириметр, для точек координаты точек или отметку Z по выбору, для блоков по выбору изображение блока или координаты точки вставки. И еще одна дополнительная функция (обратная) вставляет седержимое ячейки на поле чертежа с динамической связью. Также ели возможно дополнительно для точек - имя (номер) точки, для блоков - имя блока/описание блока/содержмое выбранного атрибута.
Я пробывал в Grok, но большинство Лиспов получаются нерабочие. Только около 20% процентов работает и более простые чем этот. Видимо нужно обладать навыками програмирования чтобы правильно формулировать вопросс или если нужно самому подправить или направит ИИ в нужном направлении.
Добрый день. Удалось сосздать с помощью ИИ Lisp который вставляет координаты точки вставки блока в таблицу. Принцип работы: выбираем таблицу, выбираем блок, затем выбираем ячейку. Но не получается создать динамическую связь. Может кто нибуть может помочь добавить ее в Lisp?
Конечно я занаю что это такое, и вручную легко это можно сделать, но неудобно. Поэтому решил сделать Lisp. ИИ делает связь, но в таблицу вставляется куча всякой ерунды или только одни решетки. Как я только не "уламывал" ИИ, ничего не выход. Без динамической связи все хорошо.