Сергей newbie Posted April 11, 2018 Report Share Posted April 11, 2018 Был лисп, успешно работающий в автокаде (позволял быстро создавать блоки с автоназванием) ;;; АвтоБлок c датой и временем создания (defun C:аuto_blok_data ( / обб твс дата время имяблок) (setq обб (ssget)) (if обб (progn (initget 7) (setq твс (getpoint "\nУкажите точку вставки: ")) (setq дата (itoa (fix (getvar "cdate")))) (princ "\nТекущая дата: ") (prin1 дата) (setq время (itoa (fix (* 1e6 (- (getvar "cdate") (fix (getvar "cdate"))))))) (princ "\nТекущее время: ") (prin1 время) (setq имяблок (strcat дата "_" время)) (vl-cmdf "_-BLOCK" имяблок твс обб "") (princ "\nСоздан блок. Имя блока:") (prin1 имяблок) (vl-cmdf "_INSERT" имяблок твс "1" "1" "0") ) ; progn (princ "\nНичего не выбрано.") ) ; if (princ) ) В нанокаде он не работает. Может кто-нибудь подкорректировать его, чтобы он в нанокаде заработал? Quote Link to comment Share on other sites More sharing options...
Ivanco Posted April 11, 2018 Report Share Posted April 11, 2018 (edited) а не заменить ли нам "vl-cmdf " на "command" в двух местах. lisp заработает, но там с форматированием даты еще что то не то. ++++++++++++++ ;;; АвтоБлок c датой и временем создания (defun C:аuto_blok_data ( / обб твс дата время имяблок) (setq обб (ssget)) (if обб (progn (initget 7) (setq твс (getpoint "\nУкажите точку вставки: ")) (setq дата (itoa (fix (getvar "cdate")))) (princ "\nТекущая дата: ") (prin1 дата) (setq время (itoa (fix (* 1e6 (- (getvar "cdate") (fix (getvar "cdate"))))))) (princ "\nТекущее время: ") (prin1 время) (setq имяблок (strcat дата "_" время)) (command "_-BLOCK" имяблок твс обб "") (princ "\nСоздан блок. Имя блока:") (prin1 имяблок) (command "_INSERT" имяблок твс "1" "1" "0") ) ; progn (princ "\nНичего не выбрано.") ) ; if (princ) ) Edited April 11, 2018 by Ivanco Quote Link to comment Share on other sites More sharing options...
Сергей newbie Posted April 12, 2018 Author Report Share Posted April 12, 2018 а у меня в нанокад спдс 7 при попытке подгрузить лисп вот что выскакивает: ошибка: неверный синтаксис DEFUN: (C: UTO_BLOK_DATA (/ ОББ ТВС Д Т ВРЕ Я И ЯБЛОК) (SETQ ОББ (SSGET)) (IF ОББ (PROGN (INITGET 7) (SETQ ТВС (GETPOINT "\nУкажите точку вставки: ")) (SETQ Д Т (ITOA (FIX (GETVAR "cdate")))) (PRINC "\nТекущая дата: ") (PRIN1 Д Т) (SETQ ВРЕ Я (ITOA (FIX (* 1.0e+006 (- (GETVAR "cdate") (FIX (GETVAR "cdate"))))))) (PRINC "\nТекущее время: ") (PRIN1 ВРЕ Я) (SETQ И ЯБЛОК (STRCAT Д Т "_" ВРЕ Я)) (COMMAND "_-BLOCK" И ЯБЛОК ТВС ОББ "") (PRINC "\nСоздан блок. Имя блока:") (PRIN1 И ЯБЛОК) (COMMAND "_INSERT" И ЯБЛОК ТВС "1" "1" "0")) (PRINC "\nНичего не выбрано.")) (PRINC)) Quote Link to comment Share on other sites More sharing options...
Ivanco Posted April 12, 2018 Report Share Posted April 12, 2018 (edited) а у меня в нанокад спдс 7 при попытке подгрузить лисп вот что выскакивает: нано СПДС 7 x64 win10 , загружаю : Сервис-Приложения-Загрузка приложения - все ОК. эмм.. - может с кодировкой чего , "UTF-8" выставьте в редакторе. - или скопировали не весь код.. Edited April 12, 2018 by Ivanco Quote Link to comment Share on other sites More sharing options...
Сергей newbie Posted April 12, 2018 Author Report Share Posted April 12, 2018 попробую. потом отпишусь о результатах. Спасибо Quote Link to comment Share on other sites More sharing options...
VDSayapov Posted December 9, 2021 Report Share Posted December 9, 2021 Аналогичная проблема, в AutoCad работал, а в NanoCad НЕ работает lisp Код ниже: ;;; ;;; LayoutsToDwgs.lsp ;;; Created 2000-03-27 ;;; By Jimmy Bergmark ;;; Copyright (C) 1997-2016 JTB World, All Rights Reserved ;;; Website: http://jtbworld.com ;;; E-mail: info@jtbworld.com ;;; ;;; 2003-12-12 Sets UCS to world in model space ;;; to avoid problem with wblock ;;; 2011-06-06 Excludes empty layouts ;;; 2012-06-01 Handle Map prompt with WBLOCK ;;; Include AutoCAD Map information in the export? [Yes/No] <Y>: ;;; 2013-03-04 Added _ on some commands to internationalize it ;;; 2015-12-01 Updated for AutoCAD 2015 and 2016 ;;; 2016-10-26 Modified to also allow suffix ;;; ;;; For AutoCAD 2000, 2000i, 2002, 2004, 2005, ;;; 2006, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2015, 2016 and newer ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Creates separate drawings of all layouts. ;;; The new drawings are saved to the current drawings path ;;; and overwrites existing drawings. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:LayoutsToDwgs (/ errexit undox olderr oldcmdecho oldexpert oldcmddia fn path msg msg2 fileprefix filesuffix i j) (defun errexit (s) (princ "\nError: ") (princ s) (restore) ) (defun undox () (command "._undo" "_E") (setvar "cmdecho" oldcmdecho) (setvar "expert" oldexpert) (setvar "cmddia" oldcmddia) (setq *error* olderr) (princ) ) (setq olderr *error* restore undox *error* errexit ) (setq oldcmdecho (getvar "cmdecho")) (setq oldexpert (getvar "expert")) (setq oldcmddia (getvar "cmddia")) (setvar "cmdecho" 0) (setvar "expert" 2) (setvar "cmddia" 0) (defun DelAllLayouts (Keeper / TabName) (vlax-for Layout (vla-get-Layouts (vla-get-activedocument (vlax-get-acad-object)) ) (if (and (/= (setq TabName (strcase (vla-get-name layout))) "MODEL") (/= TabName (strcase Keeper)) ) (vla-delete layout) ) ) ) (vl-load-com) (setq msg "" msg2 "" i 0 j 0) (command "._undo" "_BE") (setq fileprefix (getstring "Enter filename prefix: ")) (setq filesuffix (getstring "Enter filename suffix: ")) (foreach lay (layoutlist) (if (and (/= lay "Model") (> (vla-get-count (vla-get-block (vla-Item (vla-get-Layouts (vla-get-activedocument (vlax-get-acad-object))) lay))) 1)) (progn (command "_.undo" "_M") (DelAllLayouts lay) (setvar "tilemode" 1) (command "_.ucs" "_w") (setvar "tilemode" 0) (setq path (getvar "DWGPREFIX")) (setq fn (strcat path fileprefix lay filesuffix ".dwg")) (if (findfile fn) (progn (command "_.-wblock" fn) (if (equal 1 (logand 1 (getvar "cmdactive"))) (progn (setq i (1+ i) msg (strcat msg "\n" fn)) (command "*") ) (setq j (1+ j) msg2 (strcat msg2 "\n" fn)) ) ) (progn (command "_.-wblock" fn "*") (setq i (1+ i) msg (strcat msg "\n" fn)) ) ) (if (equal 1 (logand 1 (getvar "cmdactive"))) ; Include AutoCAD Map information in the export? ; If you don't want to include Map information in the new files change "_Y" to "_N" below (command "_Y") ) (command "_.undo" "_B") ) ) ) (if (/= msg "") (progn (if (= i 1) (prompt "\nFollowing drawing was created:") (prompt "\nFollowing drawings were created:") ) (prompt msg) ) ) (if (/= msg2 "") (progn (if (= j 1) (prompt "\nFollowing drawing was NOT created:") (prompt "\nFollowing drawings were NOT created:") ) (prompt msg2) ) ) (command "._undo" "_E") (textscr) (restore) (princ) ) (princ) Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted December 9, 2021 Report Share Posted December 9, 2021 Задокументировал несколько строк, связанных с различиями в платформах:. Системная переменная "expert" присутствует в AC, но отсутствует в NC. Отвечает за подавление некоторых запросов. В интерпретаторе автолиспа для NC отсутствует функция textscr. Использование функции непонятно. Похоже, это наследие DOSовских версий (программа написана в 2000г) Программа стала работоспособной. Но в связи с отключением обработки "expert" программа прекращает выполнение, если файл уже присутствует. Если особенно это важно, то необходимо модифицировать программу с проверкой имен файлов и, возможно, еще чего-то в этом роде. LayoutsToDwgs.lsp 3 Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted December 9, 2021 Report Share Posted December 9, 2021 3 часа назад, EdwardSt сказал: В интерпретаторе автолиспа для NC отсутствует функция textscr. Использование функции непонятно. Похоже, это наследие DOSовских версий (программа написана в 2000г) Эмуляция вызова дополнительного текстового окна <F2>. Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted December 9, 2021 Report Share Posted December 9, 2021 Только что, A.Kudrjashov сказал: Эмуляция вызова дополнительного текстового окна <F2>. Я сам этой функцией пользовался еще в довиндовую эпоху. Но сейчас не представляю, зачем она могла бы мне пригодиться. Код изучать не стал. Возможно, и есть тут какая-то сермяга Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted December 10, 2021 Report Share Posted December 10, 2021 В 09.12.2021 в 12:24, VDSayapov сказал: Аналогичная проблема, в AutoCad работал, а в NanoCad НЕ работает lisp Код ниже: Последняя версия данного скрипта (под AutoCAD) доступна здесь https://apps.autodesk.com/ACD/en/Detail/Index?id=8797014408094829177&appLang=en&os=Win32_64&autostart=true В этой версии, кроме экспорта Layouts в отдельные DWG файлы доступен режим, при котором при экспорте производится очистка (PURGE) и внешние ссылки превращаются в блоки. Также там есть выбор метода экспорта посредством WBLOCK или SAVEAS. Выдернул из последней версии LSP файл и заставил через SAVEAS нормально работать под nanoCAD. (WBLOCK не смотрел) Пока навскидку по диагонали. Если будет время, после Нового Года посмотрю более подробно. Что смог, прокомментировал. Проверял на версии nanoCAD 21.0.5797.3451 5851. Собственно LISP файл, исходный:JTB Layouts To Dwgs 3_1_0.lsp и доработанный под nanoCAD: JTB Layouts To Dwgs_NC 3_1_0.lsp DWG пример, на котором тестировал:Layouts_Sample_NC.zip 4 Quote Link to comment Share on other sites More sharing options...
VDSayapov Posted December 14, 2021 Report Share Posted December 14, 2021 (edited) В 09.12.2021 в 12:06, EdwardSt сказал: Задокументировал несколько строк, связанных с различиями в платформах:. Системная переменная "expert" присутствует в AC, но отсутствует в NC. Отвечает за подавление некоторых запросов. В интерпретаторе автолиспа для NC отсутствует функция textscr. Использование функции непонятно. Похоже, это наследие DOSовских версий (программа написана в 2000г) Программа стала работоспособной. Но в связи с отключением обработки "expert" программа прекращает выполнение, если файл уже присутствует. Если особенно это важно, то необходимо модифицировать программу с проверкой имен файлов и, возможно, еще чего-то в этом роде. LayoutsToDwgs.lsp 4 \u043a\u0411 · 7 загрузок Начал работать Дает выбрать префикс и суффикс для отдельного файла Но после ничего не происходит добавлено через 1 минуту Алгоритм работы lisp файла: Edited December 14, 2021 by VDSayapov 1 Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted December 14, 2021 Report Share Posted December 14, 2021 25 минут назад, VDSayapov сказал: Дает выбрать префикс и суффикс для отдельного файла Но после ничего не происходит Выложите свой файл-пример. Мы его прогоним через представленный нами скрипт. Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted December 14, 2021 Report Share Posted December 14, 2021 Алгоритм работы скрипта на моём примере. Исходные файлы разместил в d:\Test_CAD\LayoutsToDWG\NC\ Спойлер Имеем чертеж в области модели и 5 Layouts. Спойлер Выполняем команду LAYOUTSTODWG, задаём префикс Спойлер Задаём суффикс Спойлер Выбираем [по умолчанию] метод Saveas Спойлер Layouts обработаны (ну да, были использованы объекты СПДС) Спойлер ... и сохранены в этом же каталоге в виде отдельных файлов Спойлер ... например: Спойлер Как то так. Ещё раз, использованный файл примера Layouts_Sample_NC.zip и файл скрипта JTB Layouts To Dwgs_NC 3_1_0.lsp 1 Quote Link to comment Share on other sites More sharing options...
VDSayapov Posted December 14, 2021 Report Share Posted December 14, 2021 35 минут назад, A.Kudrjashov сказал: Выложите свой файл-пример. Мы его прогоним через представленный нами скрипт. Пример.dwg Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted December 14, 2021 Report Share Posted December 14, 2021 Результат по примеру, аналогично выше приведенному описанию Спойлер Спойлер Результат:pref_01-A4-suff_02.dwgpref_01-A3-suff_02.dwgpref_01-A2-suff_02.dwgpref_01-A1-suff_02.dwg Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted December 14, 2021 Report Share Posted December 14, 2021 1 час назад, VDSayapov сказал: В 09.12.2021 в 11:06, EdwardSt сказал: Задокументировал несколько строк, связанных с различиями в платформах:. Системная переменная "expert" присутствует в AC, но отсутствует в NC. Отвечает за подавление некоторых запросов. В интерпретаторе автолиспа для NC отсутствует функция textscr. Использование функции непонятно. Похоже, это наследие DOSовских версий (программа написана в 2000г) Программа стала работоспособной. Но в связи с отключением обработки "expert" программа прекращает выполнение, если файл уже присутствует. Если особенно это важно, то необходимо модифицировать программу с проверкой имен файлов и, возможно, еще чего-то в этом роде. LayoutsToDwgs.lsp 4 \u043a\u0411 · 7 загрузок Читать больше Начал работать Дает выбрать префикс и суффикс для отдельного файла Но после ничего не происходит Попробовал на вашем примере первоначально отредактированный скрипт: Спойлер Выделены имена листов в исходном файле Спойлер Quote Link to comment Share on other sites More sharing options...
VDSayapov Posted June 28, 2022 Report Share Posted June 28, 2022 Работало для NanoCad 2020 версии, в 2022 версии не работает. В чем может быть проблема? Подскажите пож-та, где можно взять информацию по отсутствующим функциям lsp в NanoCad. JTB Layouts To Dwgs.lsp Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted June 28, 2022 Report Share Posted June 28, 2022 2 часа назад, VDSayapov сказал: Подскажите пож-та, где можно взять информацию по отсутствующим функциям lsp в NanoCad. Обсуждалось раньше 3 Quote Link to comment Share on other sites More sharing options...
lidia.antipina.ru Posted June 28, 2022 Report Share Posted June 28, 2022 4 часа назад, VDSayapov сказал: Работало для NanoCad 2020 версии, в 2022 версии не работает. В чем может быть проблема? Подскажите пож-та, где можно взять информацию по отсутствующим функциям lsp в NanoCad. В кодировке UTF-8 лиспы работать не будут, только ANSI, пересохраните в ANSI в блокноте и НЕ ставьте галочку "Сохранять кодировку" в SCRIPTED Настройки-Параметры 3 Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted June 29, 2022 Report Share Posted June 29, 2022 Попробовал просто тупо в лоб выше приведенный лисп. Без всяких правок и перекодировок. Спойлер Quote Link to comment Share on other sites More sharing options...
VDSayapov Posted June 29, 2022 Report Share Posted June 29, 2022 16 часов назад, lidia.antipina.ru сказал: В кодировке UTF-8 лиспы работать не будут, только ANSI, пересохраните в ANSI в блокноте и НЕ ставьте галочку "Сохранять кодировку" в SCRIPTED Настройки-Параметры Благодарю. Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted June 29, 2022 Report Share Posted June 29, 2022 16 часов назад, lidia.antipina.ru сказал: В кодировке UTF-8 лиспы работать не будут, только ANSI Прошу прощения за назойливость, но хотелось бы ясности. Непонятно, какое может быть влияние кодировки? Большая часть кода на лиспе пишется символами латиницы и цифрами (коды 32-128). Для этого диапазона кодировка не имеет значения. Видится так, что особенности кодировки могут "выстрелить" только при использовании кириллицы (параметры команды command, диалоги и т.п. - ). В приведенном выше лиспе таких конструкций (за исключением комментариев) не обнаружил. И, как написал раньше, лисп сработал без всяких перекодировок. Если не затруднит, то попросил бы пример кода, сохраненного в разных кодировках и связанной с этим потерей/приобретением функциональности. Действительно, неожиданная информация. Хотелось бы разобраться. Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted June 29, 2022 Report Share Posted June 29, 2022 25 минут назад, EdwardSt сказал: Видится так, что особенности кодировки могут "выстрелить" только при использовании кириллицы (параметры команды command, диалоги и т.п. - ). В приведенном выше лиспе таких конструкций (за исключением комментариев) не обнаружил. А комментариев на русском языке более чем достаточно, чтобы LISP не сработал. Я тоже с этим уже несколько раз сталкивался. Обычно перекодирую в ANSI, Win-1251 или в UTF8 BOM. Глубоко копаться желания нет, поэтому просто тупо перекодирую. С русскими символами UTF8 по опыту проблемы не только у LISP, но и, например, у Graphvizard. Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted June 29, 2022 Report Share Posted June 29, 2022 17 минут назад, A.Kudrjashov сказал: А комментариев на русском языке более чем достаточно Вот бы живьем потрогать! Может есть у кого пример под рукой? Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted June 29, 2022 Report Share Posted June 29, 2022 9 минут назад, EdwardSt сказал: Вот бы живьем потрогать! Может есть у кого пример под рукой? Если появится, то я выложу. Я только что проверил, данный конкретный файл под NC22.0 у меня также работает. Может быть под NC22 этой проблемы больше и не будет. добавлено через 3 минут 22 часа назад, VDSayapov сказал: Работало для NanoCad 2020 версии, в 2022 версии не работает. В чем может быть проблема? JTB Layouts To Dwgs.lsp 19 \u043a\u0411 · 4 загрузки Если возможно пришлите описание возникающей ошибки. В чём заключается неработоспособность и на каком этапе? У меня под NC22.0 всё работает также как и раньше. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.