Autocad не работает lisp

Не работает lisp на autocad 2014. Lisp предназначен для изменения порядкового номера листа

Не работает lisp на autocad 2014. Lisp предназначен для изменения порядкового номера листа

«Я просто проставляю в месте штампа вместо номера блок с атрибутом. Потом просто запускаю прогу и она меняет значение атрибута этого блока на порядковый номер листа (как они следуют на чертеже).
Вот прога:

26.03.2015, 17:33 #2

LISP, C# (ACAD 200[9,12,13,14])

__________________

—
Обращение ко мне — на «ты».
Все, что сказано — личное мнение.

26.03.2015, 17:51 #3

Слои разморожены.
Ошибка в командной строке:

Команда: Z-LAYOUT-SET-NUMDER
; ошибка: неверный тип аргумента: lselsetp nil

А вот с блоком может и есть проблема, подскажите как должен называться блок и кокой доложен быть атрибут?
А работающего варианта у меня нет((

26.03.2015, 19:17 #4

27.03.2015, 09:18 #5

Ошибка найдена. Название блока должно быть : LAYOUT_NUMBER, тег INSERT.

А вот теперь появилась новая проблема с лиспом от ZZZ.
Проблема следующего характера: запускаю лисп командой, а мне в ответ вылазит сообщение «Dialog box not found»
DCL фаил находится в той же папке там где лежит lsp фаил, доступ, соответственно, прописан в настройках
Прикладываю lsp и dcl

Источник

AutoCAD

Автор:

Проблема

Процедура запускается ранее без ошибок или на другом компьютере работает нормально.

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

Причины:

Решение

Выполните следующие действия:

  • Убедитесь, что файл vl16.tlb существует в папке C:\Program Files\Autodesk\ \vl16.tlb.
  1. Загрузите прикрепленный файл lspfix.zip и измените его расширение с ZIP на REG. Этот файл реестра предназначен для AutoCAD 2020, установленного в качестве версии. Однако, если запустить другую версию, откройте файл в любом текстовом редакторе и настройте пути соответствующим образом. Например:
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\\1.0\0\win64] @=»C:\\Program Files\\Autodesk\\AutoCAD 2018\\vl16.tlb«
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\\1.0\FLAGS] @=»2″
    • [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\\1.0\HELPDIR] @=»C:\\Program Files\\Autodesk\\AutoCAD 2018«
  2. Сохраните файл, а затем дважды щелкните его, чтобы обновить ключи реестра.

Предупреждение!
Неправильное редактирование реестра Windows может вывести операционную систему компьютера из строя. База знаний Microsoft предоставляет подробную информацию о работе с реестром. Используйте редактор реестра Microsoft с осторожностью и только после сохранения резервной копии реестра в соответствии с инструкциями для вашей операционной системы, представленными в статье Microsoft Резервное копирование и восстановление реестра в Windows и связанной статье Резервное копирование системного реестра. Дополнительные сведения о реестре также можно найти в разделах справки редактора реестра Microsoft.

Если приведенные выше рекомендации не помогли,

  • Удалите AutoCAD и повторно установите его с помощью загрузки через браузер. См. раздел Полное удаление AutoCAD или отраслевых продуктов

Источник

Как использовать лисп, опубликованный на форуме

Примечание: AutoLISP программы могут быть запущены только на полной версии Автокада, они не работают под AutoCAD LT. (исключая случаи загрузки дополнительных приложений типа LT Extender и ему подобных, которые специально разработаны для запуска lisp и (или) arx приложений в среде AutoCAD LT.)

Сохранение программного кода на своем компьютере

С помощью курсора выделяем этот код и копируем его в буфер обмена, нажав правую кнопку мыши и выбрав пункт Копировать (или Ctrl+C).
Запускаем «Блокнот» и вставляем наш код с помощью меню Правка >> Вставить (или Ctrl+V):

После того как вставили код в блокнот, мы должны иметь что-то наподобие этого:

Теперь мы должны сохранить файл. Файл можно назвать, как вам нравится, но расширение у него должно быть .LSP. Правильнее (но не обязательно) будет назвать файл так же, как названа команда в найденном Вами коде. Команде всегда предшествует префикс C: после слова defun. В примере выше видно, что команду назвали OFF2, соответственно файл называем off2.lsp. Таким образом, мы можем избежать беспорядка, т.к. будем знать, что в файле off2.lsp находится команда OFF2.
Иногда в коде представлено несколько функций. Необходимо найти «главную». Такая функция либо имеет префикс С:, либо сам автор кода уточняет, что «использовать как «. В случае нескольких «главных» именование файла не может иметь никаких рекомендаций.

Загрузка lisp файла

Далее, запускаем Автокад и выбираем Сервис >> Автолисп >> Загрузить (Tools >> AutoLISP >> Load) или набираем в командной строке _appload.
Мы должны увидеть диалоговое окно как представлено ниже:

Используйте следующую последовательность, чтобы загрузить off2.lsp:

  1. Перейдите к папке, куда Вы сохранили lisp файл.
  2. Выберите файл, который Вы хотите загрузить из списка.
  3. Нажмите кнопку Загрузить.
    (Если все прошло удачно, Вы должны увидеть надпись «off2.lsp успешно загружено»)
  4. Нажмите кнопку Закрыть для завершения команды.

Команда или функция ?

Для начала необходимо определиться, что у нас: команда или функция?
Немного теории.
В описании практически любого кода есть такая строка, как

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

(defun c:test () )

Ее вызывать (при условии, что она подгружена) с командной строки можно напрямую:

И будут выполнены действия
А вот такую:

(defun test () )

Можно будет вызывать только так:

И будут выполнены действия .
С точки зрения AutoCAD’a это 2 разных модуля.

Запуск lisp программы

Как только lisp файл загружен, Вы можете вызвать команду из командной строки. Команда вызывается по ее имени. В нашем примере необходимо набрать в командной строке OFF2.
Запомните, имя команды содержит префикс C: после слова defun. Если Вы видите в коде:

то в командной строке необходимо набрать без префикса C:.

Tips: Вы можете также загрузить lisp файл путем перетаскивания (drag-and-drop) иконки файла в графическое окно открытого документа Автокада.

AutoCAD ; error: no function definition:

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

Команда: (vlax-get-acad-object)
; error: no function definition: VLAX-GET-ACAD-OBJECT

Наберите в командной строке (vl-load-com) или (предпочтительнее) добавьте ее в начало lisp файла.

Команда: (vl-load-com)

Теперь ваш lisp должен работать без ошибок.

Что такое это (vl-load-com) ?

Данная функция загружает большое количество функций, входящих в расширение AutoLisp, позволяющее работать с объектами, свойствами, методами и событиями ActiveX. Признаком необходимости загрузки расширения AutoLisp является наличие в тексте Вашей программы функций, начинающихся с префиксов vla- (например vla-get-activedocument), vlax- (например vlax-get-acad-object), vl- (например vl-catch-all-apply) и vlr- (например vlr-pers).
В любом случае никогда не помешает добавить (vl-load-com) в начало файла, чтобы избежать подобных ошибок.

Организация библиотеки лисп файлов.

Что делать, если набралось достаточное количество файлов? Каждый раз набирать _appload для загрузки того или иного приложения? Наиболее эффективным будет организация своей библиотеки. Для начала условимся, что все наши файлы будем складывать в одну папку. Например, D:\MyLisp. Пропишем эту папку в путях доступа Автокада. Для этого выбираем Сервис >> Настройка (Tools >> Options) или набираем в командной строке _options. Переходим на закладку Файлы (Files) и раскрываем список Путь доступа к вспомогательным файлам (Support File Search Path).
Мы должны увидеть диалоговое окно, как представлено ниже:

Используйте следующую последовательность, чтобы прописать папку в путях доступа:

  1. Нажмите кнопку Добавить.
  2. Нажмите кнопку Обзор и выберите целевую папку (в нашем случае , D:\MyLisp)
  3. Путь к папке должен появиться в диалоговом окне.
  4. Нажмите кнопку OK для завершения команды.

Теперь наша папка прописана в путях доступа Автокада. Что это нам дает? Мы можем загружать наши файлы не указывая конкретного пути, а только имя файла.
Мы можем набрать в командной строке (load » «) для загрузки необходимого кода, например (load «off2»). Заметьте, что добавлять расширение .lsp не обязятельно, хотя и не запрещается.
И, наконец, самое главное — это позволит нам создать панели с кнопками для загрузки той или иной программы. Кнопка будет иметь следующее содержание:

Вместо текста мы должны будем подставлять имя нужной нам команды, а вместо текста имя того файла, в котором эта команда сохранена. Напоминаю, что файл должен иметь расширение .lsp. Более подробно по организации меню можно почитать еще здесь http://www.kulichki.com/cadhlp/pdmnu.htm

Автозагрузка файлов.

Если есть необходимость загружать свои lsp файлы при открытии чертежа, то нужно добавить необходимые файлы в список автозаргузки.
Запускаем Автокад и выбираем Сервис >> Автолисп >> Загрузить (Tools >> AutoLISP >> Load) или набираем в командной строке _appload.
В открывшемся диалоговом окне жмем на кнопку Приложения рядом с изображение портфеля

В следующем диалоговом окне жмем на кнопку Добавить и указываем на необходимые файлы.

Они должны появиться в списке приложений.
Теперь перечисленные файлы будут загружаться каждый раз при открытии рисунка.
Важно понимать, что (по крайней мере в полной версии AutoCAD) загрузка приложений, помещенных в Автозагрузку (Startup Suite), как правило, выполняется во все профили и сессии AutoCAD’a.
Кроме того, есть еще один момент. Если существует 2 или более файлов, в которых описаны функции с одинаковыми именами, выполняться будет та, которая загрузилась последней. Поскольку предсказать, в какой последовательности будет выполняться загрузка приложений, невозможно, подобных ситуаций следует избегать.

Автор статьи: Владимир Азарко aka VVA

Источник

Не работает Visual LISP Editor, вываливает фаталити при открытии файла

Если из Visual LISP Editor попытаться открыть файл lsp или prj через меню «открыть», то в нем не работает древовидный выпадающий список. Если попытаться без этого списка открыть, то менюшка закрывается, а файл не открывается. Курсор превращается в знак «парковка запрещена» и ничего не дает нажать. Если нажать на крестик закрытия программы — спросит «Abort current evaluation?», жмем да. Курсор переходит в ждущий режим винды. И далее тоже ничего не происходит, все висит. Если нажать esc, то вываливается с фатальной ошибкой.
Если перетащить лисп файл из файлменеджера (TC) в LISP Editor, то все работает. Только вот файл проекта так нельзя открыть. В других прогах такого нет, все работает.

Windows 10, AutoCAD2017eng

Поставил AutoCAD2016eng, таже трабла, на win7 эта сборка работала нормально.

13.10.2016, 07:36 #2

13.10.2016, 07:45 #3

Ты о чем? Причем тут книги по лиспу?

Установил framework 3.5. Проблема решилась.

13.10.2016, 16:40 #4

Ты о чем? Причем тут книги по лиспу?

Установил framework 3.5. Проблема решилась.

13.10.2016, 19:26 #5

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

framework разумеется был установлен, но видимо либо коряво, либо не совсем гладко в нем было с win10. Х.з. но проблема после переустановки решилась.

Совсем деградировали что ли?

14.10.2016, 00:58 #6

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

Это виндовс пытается завершить не отвечающую программу, а автокад сопротивляется и выдает фатал.

все висит — вообще конгениальная фраза. полная разочарования страха ненависти и гнева. как победить — просто без комментариев

Вместо неработающего диалога открытия файла и сообщения о фатальной ошибке, показать вполне себе штатное окошко и надеяться на решение свое проблемы — это как называется? NET Framework — это вообще компонент винды, песочница, в которой пасутся программы типа автокада, а раз стал лагать компонент виндовс, то следовало сразу предположить, что проблема именно в фреймворке. Тебе еще повезло, что твою песочницу не разбомбили основательно, тогда пришлось бы все сносить и ставить заново. а сейчас не факт что это не повторится, но лисп тут точно не причем

14.10.2016, 07:33 #7

14.10.2016, 07:59 #8

а что в автозагрузке AutoCAD?

Так как вряд ли влиде коренным образом менялся в ближайшие лет 12 и никакой NET ему не нужен

14.10.2016, 10:34 #9

Thượng Tá Quân Đội Nhân Dân Việt Nam

Сама Vlide может быть «не виноватая я». Если файл в неё загрузился. А вот диалог выбора файла — очень может быть. Обычно в программах нет собственных диалогов, вызывается (через цепочку посредников) диалоговое окно операционной системы.

Оно может оказаться и из WinAPI и из .NET. Скорее всего именно из .NET, т.к. посредник-AutoCAD на неё заточен. Вот там могут быть сбои. Это замечал в более ранних версиях — очень долгая загрузка диалога.

Но в Win10 более вероятным является отсутствие необходимых прав доступа к файлу. Особенно если он лежит не там, где должен лежать по мнению уродов из Майкрософт. Функция диалога вернет не только имя файла, но и некоторые флаги доступа к нему. Вот тут козни .Net и могут проявиться.

В результате прикладная программа должна сообразить, что ей делать. Она может сказать и «Файл не найден» (хотя вот он, мы его видим) или вообще грохнуться.

Источник

Читайте также:  Как настроить часы по радиосигналу
Оцените статью