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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Чтобы результат работы команды (текст) был подчеркнутый...

Чтобы результат работы команды (текст) был подчеркнутый...

Ответ
Поиск в этой теме
Непрочитано 29.11.2022, 13:44 #1
Чтобы результат работы команды (текст) был подчеркнутый...
antistatic1984
 
инженер-конструктор
 
СПб
Регистрация: 29.11.2022
Сообщений: 2

Доброе время суток, господа и дамы.

Я в лиспе -> 0.

Прошу помощи гуру!!!
Если есть возможность, подскажите, что добавить в готовый код (выполнение команды подсчета площади полилинии) -> там после выбора самой линии, выбираешь точку вставки числа (площадь) - вот надо сделать, чтобы текст был подчеркнутый.
Каждый раз выбирать текст и добавлять к нему %%U или нажимать Ctrl+U - очень накладно!

100% есть какие-то команды типа tx+ или tx- (я читал, но не понял, как их прописать, пытался - не работает).

Помогите, пожалуйта!

Благодарю ...

Код:
[Выделить все]
 ;;;ВЫЧИСЛЕНИЕ ПЛОЩАДИ ПО ПРИМИТИВУ
(defun C:ARE ()
(setq sblip (getvar "blipmode")
      scmde (getvar "cmdecho")
      slayr (getvar "clayer")     )
(setvar "blipmode" 0 )
(setvar "cmdecho" 0)
(princ "\n Select border polyline:")
(command "AREA" "e" pause)
(setq sp (getpoint "\nEnter start point:"))
(command "LAYER" "make" "A-AREA" "c" 51 "A-AREA" "")
(command "TEXT" sp (* (getvar "dimtxt") (getvar "dimscale")) ""
                (rtos (/ (getvar "area") 1000000.) 2 2))
(setvar "blipmode" sblip)
(setvar "cmdecho" scmde)
(setvar "clayer" slayr)
);def
Просмотров: 5152
 
Непрочитано 29.11.2022, 14:02
1 | 1 #2
Кулик Алексей aka kpblc
Moderator

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


13-ю строку замени на
Код:
[Выделить все]
(strcat "%%u" (rtos (/ (getvar "area") 1000000.) 2 2)))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.11.2022, 14:16
#3
Ingpro


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


А как можно сделать подчеркнутым любой текст, Мтекст (без площади), просто выбрал тексты и они подчеркнулись...
Ingpro вне форума  
 
Автор темы   Непрочитано 29.11.2022, 14:44
#4
antistatic1984

инженер-конструктор
 
Регистрация: 29.11.2022
СПб
Сообщений: 2


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
13-ю строку замени на
Код:
[Выделить все]
(strcat "%%u" (rtos (/ (getvar "area") 1000000.) 2 2)))
Ай спасибо тебе большое, о великий kpbIc!

Работает как часики...

Сердечно благодарю!
antistatic1984 вне форума  
 
Непрочитано 29.11.2022, 14:56
#5
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
А как можно сделать подчеркнутым любой текст, Мтекст (без площади), просто выбрал тексты и они подчеркнулись...
Теоретически можно - но для многострочных текстов придется использовать принудительное форматирование. В общем случае задача не самая тривиальная ИМХО
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.11.2022, 15:24
#6
Ingpro


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


Алексей, а можно маленький лисп только чтобы подчеркивал текст? Спасибо!
А то, чтобы подчеркнуть текст, надо его сначала перевести в Мтекст, потом зайти в редактор текста и выбрать
подчёркнутый...
А, может, получится для МТекста копировать свойства подчеркнутого для неподчеркнутого?..

Последний раз редактировалось Ingpro, 29.11.2022 в 15:32.
Ingpro вне форума  
 
Непрочитано 29.11.2022, 15:50
#7
Кулик Алексей aka kpblc
Moderator

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


Так это уже модификация примитивов. Совершенно другая задача. А так, без проверок (тьма работы, расписывать все подряд не буду. В коде используются функции из библиотеки, ссылка в описании):
Код:
[Выделить все]
 (defun t1 (/ selset)
  (if (setq selset (_kpblc-conv-selset-to-vla
                     (_kpblc-selset-msg
                       "Select single- or multiline texts"
                       (function (lambda ()
                                   (ssget "_:L" '((0 . "*TEXT")))
                                 ) ;_ end of lambda
                       ) ;_ end of function
                     ) ;_ end of _kpblc-selset-msg
                   ) ;_ end of _kpblc-conv-selset-to-vla
      ) ;_ end of setq
    (foreach ent selset
      (cond
        ((= (vla-get-objectname ent) "AcDbText")
         (vla-put-textstring ent (strcat "%%u" (vla-get-textstring ent)))
        )
        ((= (vla-get-objectname ent) "AcDbMText")
         (vla-put-textstring ent (strcat "{\\L" (vla-get-textstring ent) "}"))
        )
      ) ;_ end of cond
    ) ;_ end of FOREACH
  ) ;_ end of if
) ;_ end of defun
Но за результат не отвечаю.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.11.2022, 15:56
#8
Ingpro


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


Почему-то пишет в КС
; ошибка: no function definition: _KPBLC-SELSET-MSG
Ingpro вне форума  
 
Непрочитано 29.11.2022, 16:05
#9
Кулик Алексей aka kpblc
Moderator

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


Потому что надо загружать всю библиотеку.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В коде используются функции из библиотеки, ссылка в описании
Для кого писал?

----- добавлено через 40 сек. -----
Описание = подпись. Сейчас просто занимаюсь видеоподгонкой, вот по запарке и очепятался
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.11.2022, 16:23
#10
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В коде используются функции из библиотеки, ссылка в описании
Непонятно, где описание и как загружать всю библиотеку... Совсем не в теме...
Ingpro вне форума  
 
Непрочитано 29.11.2022, 22:33
#11
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Ingpro, это вот тут https://github.com/kpblc2000/KpblcLi...ree/master/lsp
В папках conv (_kpblc-conv-selset-to-vla) и selset (_kpblc-selset-msg) лежат эти функции. Надо обеспечить их загрузку в КАД (любым образом) перед запуском лиспа.
skkkk вне форума  
 
Непрочитано 29.11.2022, 22:36
#12
Кулик Алексей aka kpblc
Moderator

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


Только сейчас добрался до компа...
Offtop: Если что, в readme все описано. Аж на двух языках Английский - сорри, как смог

----- добавлено через ~1 мин. -----
Offtop: Добавлю - лучше загружать вообще все, там полно вызовов других функций.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.11.2022, 09:21
#13
Ingpro


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
В папках conv (_kpblc-conv-selset-to-vla) и selset (_kpblc-selset-msg) лежат эти функции. Надо обеспечить их загрузку в КАД (любым образом) перед запуском лиспа.
Спасибо, skkkk. Эту загрузку можно сделать через ЗАГПРИЛ, как лисп? Или есть другой способ, подскажите, пожалуйста.
_kpblc-selset-msg вот так отображается, с некорректными символами:

(defun _kpblc-selset-msg (msg fun-ssget / sysvar res)
;|
* Çàïðîñ îáúåêòîâ ñ ïîëüçîâàòåëüñêèì ïðèãëàøåíèåì
* Ïàðàìåòðû âûçîâà:
msg âûâîäèìîå ïðèãëàøåíèå
Миниатюры
Нажмите на изображение для увеличения
Название: Кодировки.png
Просмотров: 19
Размер:	64.4 Кб
ID:	251606  Нажмите на изображение для увеличения
Название: _kpblc-selset-msg_сайт.png
Просмотров: 19
Размер:	29.1 Кб
ID:	251607  

Последний раз редактировалось Ingpro, 02.12.2022 в 09:39.
Ingpro вне форума  
 
Непрочитано 30.11.2022, 16:13
#14
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Цитата:
Сообщение от Ingpro Посмотреть сообщение
Эту загрузку можно сделать через ЗАГПРИЛ, как лисп?
Можно, но лучше, наверное, в автозагрузку добавить, если потребность не разовая.
Вот тут подробнее: Как использовать лисп, опубликованный на форуме.
Загрузить сначала эти две библиотечные функции, а если внутри них окажутся еще какие-то (об этом в командной строке ошибка выскочит), то надо будет найти и их.


Цитата:
Сообщение от Ingpro Посмотреть сообщение
_kpblc-selset-msg вот так отображается, с некорректными символами
У меня тоже в Гитхабе код и показывается, и копируется с кракозябрами, изменение кодировки в Notepad++ не помогает, но вроде как все эти кракозбры - это просто комментарии, то есть не исполняемые строчки кода, а просто пояснения.
Цитата:
Сообщение от Ingpro Посмотреть сообщение
(_kpblc-selset-сообщение "ОКРУЖНОСТЬ") (функция (лямбда() (ssget "_+.:S: E" '((0 . "КРУГ"))))))
|;
А вот это похоже на результат работы переводчика страницы. Его следует отключить.
skkkk вне форума  
 
Непрочитано 30.11.2022, 16:30
#15
Кулик Алексей aka kpblc
Moderator

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


Offtop: Да хосспидя, склонируйте себе репозиторий - и все будет на месте.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.11.2022, 21:38
#16
Ingpro


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


Если установить эти библиотечные функции (_kpblc-conv-selset-to-vla) и (_kpblc-selset-msg) /с кракозябрами/ и вызвать лисп (t1), выскакивает ошибка:
; ошибка: no function definition: _KPBLC-ERROR-SYSVAR-SAVE-BY-LIST
Что делать с этой ошибкой?
Цитата:
Сообщение от skkkk Посмотреть сообщение
результат переводчика страницы. Его следует отключить.
Отключить, это значит удалить строку из функции?
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
склонируйте себе репозиторий - и все будет на месте.
Где и как можно склонировать репозиторий, поясните, пожалуйста...

Последний раз редактировалось Ingpro, 30.11.2022 в 21:45.
Ingpro вне форума  
 
Непрочитано 30.11.2022, 22:24
#17
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Цитата:
Сообщение от Ingpro Посмотреть сообщение
_KPBLC-ERROR-SYSVAR-SAVE-BY-LIST
эту функцию тоже надо найти там же.
Цитата:
Сообщение от Ingpro Посмотреть сообщение
Отключить, это значит удалить строку из функции?
Нет. Хром при открытии страницы на английском сразу ее переводит, о чем сообщает во вспывающем окне (вроде бы) - там же в этом окне можно отменить. Ну да не стоит об этом уже, см. ниже - кодировка всё равно слетает, это было надо, если бы скопировать код прямо с сайта.
Цитата:
Сообщение от Ingpro Посмотреть сообщение
Где и как можно склонировать репозиторий, поясните, пожалуйста...
Вот ссыль, а на картинке - куда надо нажать. В сохраненном архиве будут все эти лиспы, причем уже без кракозябр. Вот там и найти все нужные. Ругается на "функшн дефинишн" в комтроке - искать эту функцию в архиве и тоже обеспечивать загрузку.
https://github.com/kpblc2000/KpblcLispLib
Миниатюры
Нажмите на изображение для увеличения
Название: 2022-11-30 at 22-21-09.jpg
Просмотров: 17
Размер:	110.3 Кб
ID:	251626  

Последний раз редактировалось skkkk, 30.11.2022 в 22:29.
skkkk вне форума  
 
Непрочитано 30.11.2022, 22:34
#18
Ingpro


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


skkkk, спасибо за подробные ответы, буду пробовать...
Ingpro вне форума  
 
Непрочитано 30.11.2022, 22:45
#19
Кулик Алексей aka kpblc
Moderator

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


Offtop: Кусок описания под спойлером: https://autolisp.ru/2022/10/31/custo...ions-autolisp/
Поскольку не знаю, каким клиентом кто пользуется - пока ограничусь этим.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.11.2022, 22:48
#20
Ingpro


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Ругается на "функшн дефинишн" в комтроке - искать эту функцию в архиве и тоже обеспечивать загрузку.
https://github.com/kpblc2000/KpblcLispLib
Да ругается ; ошибка: no function definition: T1
Не получилось найти в архиве функцию с таким названием... или название другое?

Последний раз редактировалось Ingpro, 30.11.2022 в 23:04.
Ingpro вне форума  
 
Непрочитано 30.11.2022, 22:50
#21
Кулик Алексей aka kpblc
Moderator

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


Сначала загружается все из библиотеки, потом - t1, и только после этого уже вызов.
Offtop: Хоть отдельную тему заводи "Как работать с GitHub для лиспа" ))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.12.2022, 09:30
#22
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Сначала загружается все из библиотеки, потом - t1, и только после этого уже вызов.
Offtop: Хоть отдельную тему заводи "Как работать с GitHub для лиспа" ))
Алексей, спасибо за ликбез, тема, конечно, нужна... Но после всех вышеописанных манипуляций
(t1)
Select single- or multiline texts <Отмена> :
; ошибка: no function definition: nil

----- добавлено через ~8 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
загружается все из библиотеки,
Загружать все из библиотеки или только то, что касается данного лиспа t1?
Ingpro вне форума  
 
Непрочитано 01.12.2022, 10:57
#23
Ingpro


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


После добавления функций_kpblc-conv-ent-to-ename и _kpblc-conv-ent-to-vla
и последующей загрузки t1 - всё работает, подчеркивает текст и Мтекст. Всем огромная благодарность!
Если кому нужно, прикладываю лисп и функции во вложении. Сначала загружаются функции _kpblc..., потом - t1, и только после этого уже вызов команды. Автор - Кулик Алексей aka kpblc.
Вложения
Тип файла: rar Лисп t1_подчеркивание текста.rar (4.4 Кб, 15 просмотров)

Последний раз редактировалось Ingpro, 02.12.2022 в 09:44.
Ingpro вне форума  
 
Непрочитано 09.12.2022, 09:29
#24
Ingpro


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


Алексей, можно ли объединить функции _kpblc и лисп t1 в один лисп. Получилось! Неважно, где лисп t1 - в начале или в конце программы.
Вот рабочий код объединённых лиспов.
t1_on
Код:
[Выделить все]
 (vl-load-com)
(defun C:t11 (/ selset)
	  (if (setq selset (_kpblc-conv-selset-to-vla
	                     (_kpblc-selset-msg
	                       "Select single- or multiline texts"
	                       (function (lambda ()
	                                   (ssget "_:L" '((0 . "*TEXT")))
	                                 ) ;_ end of lambda
	                       ) ;_ end of function
	                     ) ;_ end of _kpblc-selset-msg
	                   ) ;_ end of _kpblc-conv-selset-to-vla
	      ) ;_ end of setq
	    (foreach ent selset
	      (cond
	        ((= (vla-get-objectname ent) "AcDbText")
	         (vla-put-textstring ent (strcat "%%u" (vla-get-textstring ent)))
	        )
	        ((= (vla-get-objectname ent) "AcDbMText")
	         (vla-put-textstring ent (strcat "{\\L" (vla-get-textstring ent) "}"))
	        )
	      ) ;_ end of cond
	    ) ;_ end of FOREACH
	  ) ;_ end of if
	) ;_ end of defun

(defun _kpblc-conv-ent-to-ename (ent-value / _lst)
                                ;|
			*    Функция преобразования полученного значения в ename
			*    Параметры вызова:
			  ent-value  ; значение, которое надо преобразовать в примитив. Может быть именем примитива, vla-указателем или просто списком.
			*    Если не принадлежит ни одному из указанных типов, возвращается nil
			*    Примеры вызова:
			(_kpblc-conv-ent-to-ename (entlast))
			(_kpblc-conv-ent-to-ename (vlax-ename->vla-object (entlast)))
   
   *    Convert value to ename
   *    Call parameters:
     ent-value  ; value to convert to ename. Could be as ename, vla-pointer or list
   *    Otherwise returns nil
   *    Call samples:
      (_kpblc-conv-ent-to-ename (entlast))
			(_kpblc-conv-ent-to-ename (vlax-ename->vla-object (entlast)))
			|;
  (cond
    ((= (type ent-value) 'vla-object) (vlax-vla-object->ename ent-value))
    ((= (type ent-value) 'ename) ent-value)
    ((and (= (type ent-value) 'str) (handent ent-value) (tblobjname "style" ent-value))
     (tblobjname "style" ent-value)
    )
    ((and (= (type ent-value) 'str) (handent ent-value) (tblobjname "dimstyle" ent-value))
     (tblobjname "dimstyle" ent-value)
    )
    ((and (= (type ent-value) 'str) (handent ent-value) (tblobjname "block" ent-value))
     (tblobjname "block" ent-value)
    )
    ((and (= (type ent-value) 'list) (cdr (assoc -1 ent-value)))
     (cdr (assoc -1 ent-value))
    )
    (t nil)
  ) ;_ end of cond
) ;_ end of defun

(defun _kpblc-conv-ent-to-vla (ent_value / res)
                              ;|
    *    Функция преобразования полученного значения в vla-указатель.
    *    Параметры вызова:
      ent_value  значение, которое надо преобразовать в указатель. Может быть именем примитива, vla-указателем или просто
                 списком.
    *      Если не принадлежит ни одному из указанных типов, возвращается nil
    *    Примеры вызова:
      (_kpblc-conv-ent-to-vla (entlast))
      (_kpblc-conv-ent-to-vla (vlax-ename->vla-object (entlast)))
      |;
  (cond
    ((= (type ent_value) 'vla-object) ent_value)
    ((= (type ent_value) 'ename) (vlax-ename->vla-object ent_value))
    ((setq res (_kpblc-conv-ent-to-ename ent_value)) (vlax-ename->vla-object res))
  ) ;_ end of cond
) ;_ end of defun

(defun _kpblc-conv-list-to-list (lst)
                                ;|
  *    Функция конвертации списка точечных пар в обычный список подсписков
  *    Параметры вызова:
    lst  обрабатываемый список
  *    Примеры вызова:
  (_kpblc-conv-list-to-list '((1 . 2) (3 . 4) (5 6 7 8))) ;-> ((1 2) (3 4) (5 6 7 8))
  |;
  (mapcar
    (function
      (lambda (x)
        (if (= (type (cdr x)) 'list)
          (if (= (length (cdr x)) 1)
            (list (car x) (cadr x))
            (cons (car x) (cdr x))
          ) ;_ end of if
          (list (car x) (cdr x))
        ) ;_ end of if
      ) ;_ end of lambda
    ) ;_ end of function
    lst
  ) ;_ end of mapcar
) ;_ end of defun

(defun _kpblc-conv-selset-to-ename (selset / tab item)
                                   ;|
  *    Преобразование набора, полученного через ssget, в список ename-представлени
  * примитивов.
  *    Параметры вызова:
    selset  ; набор примитивов
  *    Примеры вызова:
  (_kpblc-conv-selset-to-ename (ssget))
  |;
  (cond
    ((not selset) nil)
    ((= (type selset) 'pickset)
     (repeat
       (setq tab  nil
             item (sslength selset)
       ) ;_ end setq
        (setq tab (cons (ssname selset (setq item (1- item))) tab))
     ) ;_ end repeat
    )
    ((= (type selset) 'vla-object) (_kpblc-conv-vla-to-list selset))
    ((listp selset) (mapcar (function _kpblc-conv-ent-to-ename) selset))
  ) ;_ end of cond
) ;_ end of defun

(defun _kpblc-conv-selset-to-vla (selset)
                                 ;|
  *    Преобразование набора примитивов в список vla-представлений примитивов
  *    Параметры вызова:
    selset  ; набор, сформированный (ssget)
  |;
  (mapcar (function _kpblc-conv-ent-to-vla) (_kpblc-conv-selset-to-ename selset))
) ;_ end of defun

(defun _kpblc-error-sysvar-restore-by-list (lst)
                                           ;|
  *    Восстановление состояния системных переменных.
  *    Параметры вызова:
    lst  список системных переменных, значения которых надо
      восстаналивать вида:
        '((<sysvar> . <value>) <...>)
  |;
  (foreach item (_kpblc-conv-list-to-list lst)
    (if (getvar (car item))
      (setvar (car item) (cadr item))
    ) ;_ end of if
  ) ;_ end of foreach
) ;_ end of defun

(defun _kpblc-selset-msg (msg fun-ssget / sysvar res)
                         ;|
*    Запрос объектов с пользовательским приглашением
*    Параметры вызова:
  msg    выводимое приглашение
  fun-ssget функция формирования набора, без ssget
*    Примеры вызова:
(_kpblc-selset-msg "Выберите окружность" (function (lambda() (ssget "_+.:S:E" '((0 . "CIRCLE"))))))
|;
  (setq sysvar (_kpblc-error-sysvar-save-by-list '(("sysmon" . 0) ("cmdecho" . 0) ("menuecho" . 0) ("nomutt" . 1))))
  (princ (strcat "\n" (vl-string-trim " \n\t:" msg) " <Отмена> : "))
  (setq res (vl-catch-all-apply fun-ssget))
  (_kpblc-error-sysvar-restore-by-list sysvar)
  (if (= (type res) 'pickset)
    res
  ) ;_ end of if
) ;_ end of defun

(defun _kpblc-error-sysvar-save-by-list (lst / res)
                                        ;|
  *    Сохранение состояния системных переменных для документа. Возможна
  * одновременная установка
  *    Параметры вызова:
    lst  список системных переменных вида
        '((<sysvar> . <value>) <...>)
  *    Возвращает список из списков (не точечную пару)
  |;
  (vl-remove nil
             (mapcar (function (lambda (x / tmp)
                                 (if (setq tmp (getvar (car x)))
                                   (progn (if (cdr x)
                                            (setvar (car x) (cdr x))
                                          ) ;_ end of if
                                          (cons (car x) tmp)
                                   ) ;_ end of progn
                                 ) ;_ end of if
                               ) ;_ end of lambda
                     ) ;_ end of function
                     lst
             ) ;_ end of mapcar
  ) ;_ end of vl-remove
) ;_ end of defun

Последний раз редактировалось Ingpro, 09.12.2022 в 13:55. Причина: добавлена функция_kpblc-error-sysvar-save-by-list
Ingpro вне форума  
 
Непрочитано 09.12.2022, 09:40
#25
Кулик Алексей aka kpblc
Moderator

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


Буква "С" в (defun c:t1 на русском или английском?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.12.2022, 11:06
#26
Ingpro


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


С - на англ. Код исправлен, работает см. #24. Была пропущена функция_kpblc-error-sysvar-save-by-list.
Моя невнимательность, sorry...

Последний раз редактировалось Ingpro, 09.12.2022 в 13:59.
Ingpro вне форума  
 
Непрочитано 09.12.2022, 13:48
1 | 1 #27
Кулик Алексей aka kpblc
Moderator

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


_kpblc-error-sysvar-save-by-list где определение?
Offtop: Я не просто так говорил, что скачивать крайне желательно всю библиотеку. Там далеко не все бесполезно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.12.2022, 14:55
#28
Ingpro


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


В библиотеке более ста функций, в данном лиспе t1 всего 7. Если всю библиотеку добавить, не будет зависать AutoCad при открытии?
Ingpro вне форума  
 
Непрочитано 09.12.2022, 15:23
1 | #29
Кулик Алексей aka kpblc
Moderator

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


Не будет. По крайней мере ни у кого пока не тормозило.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.12.2022, 15:49
#30
Ingpro


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


Алексей, как правильно загружать 1) архивом, 2) вытащить папку "lsp" из архива, или 3) вытащить все функции из всех папок архива и отдельными функциями загрузить?
Ingpro вне форума  
 
Непрочитано 09.12.2022, 16:04
#31
Кулик Алексей aka kpblc
Moderator

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


Offtop: Да я вроде в readme там все описал. Не, точно надо организовывать тему по этой библиотеке
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.12.2022, 17:53
#32
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Да я вроде в readme там все описал
Если перейти по ссылке
"Для загрузки всех исходных кодов просто поставьте в автозагрузку (или любым другим способом гарантируйте загрузку) файл autostart-load-sources.lsp Загружаются только коды, располагаемые в подкаталоге \lsp".
Как конкретно загружаются коды, располагаемые в подкаталоге \lsp? см.#30
Ingpro вне форума  
 
Непрочитано 09.12.2022, 19:15
#33
Кулик Алексей aka kpblc
Moderator

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


Клонировать репозиторий, в ACAD в автозагрузку поставить основной загрузчик. Не думал, что это сложно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Чтобы результат работы команды (текст) был подчеркнутый...



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт координат выбранных точек в *.txt slan.ru Программирование 184 23.03.2023 08:17
Как на LISP подобрать коэффициент сжатия Mтекста в ячейке таблицы, чтобы текст был в одну строчку, без переноса Danil55 LISP 3 16.07.2020 10:57
Как сделать чтобы текст менялся автоматом между листами? dmitry77 AutoCAD 10 08.07.2014 11:11
Как программно на VBA узнать текст последней команды autocada maximiliam Программирование 5 14.01.2010 11:15
Поиск работы Perezz!! Разное 46 21.03.2008 12:50