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

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

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

Ответ
Поиск в этой теме
Непрочитано 29.11.2022, 13:44
Чтобы результат работы команды (текст) был подчеркнутый...
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
Просмотров: 4821
 
Непрочитано 30.11.2022, 22:50
#21
Кулик Алексей aka kpblc
Moderator

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


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


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


Цитата:
Сообщение от Кулик Алексей 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
Сообщений: 451


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

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


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


Алексей, можно ли объединить функции _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
С.-Петербург
Сообщений: 39,787


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


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


С - на англ. Код исправлен, работает см. #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
С.-Петербург
Сообщений: 39,787


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


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


В библиотеке более ста функций, в данном лиспе 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
С.-Петербург
Сообщений: 39,787


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


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


Алексей, как правильно загружать 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
С.-Петербург
Сообщений: 39,787


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


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


Цитата:
Сообщение от Кулик Алексей 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
С.-Петербург
Сообщений: 39,787


Клонировать репозиторий, в 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