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

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

Лисп. Создать строку текста с заданными параметрами и выбором текста

Ответ
Поиск в этой теме
Непрочитано 08.04.2024, 21:24 #1
Лисп. Создать строку текста с заданными параметрами и выбором текста
Ingpro
 
Регистрация: 11.07.2022
Сообщений: 756

Мне нужно выбрать название в коде и вставить строку в чертеж с заданными параметрами текста, не представляю как начать, подскажите, плз...
1. Команда Текст (выбор)?
2. Свойства текста
слой "Текст"
шрифт ArialN (или стиль "Ариал Н0")
высота 400
выравнивание влево
подчёркнутый
3. Название выбрать: Схема расположения
Схема армирования
Опалубочный план
4. Вставить строку с названием в чертеж
Код:
[Выделить все]
 (defun c:txt_prm (/ ) ; ???
(command "_TEXT") ; или как выбрать название из трех (см. ниже)
 (setq (getText "\nВыберите название [Схема расположения/Схема армирования/Опалубочный план]: "))
  (setq pt (getpoint "\nУкажите точку вставки текста: "))
(entget (entlast))
'((0 . "TEXT")
  (100 . "AcDbEntity") ; AcDbText
  (67 . 0)
  (410 . "Model")
   (10 1.46689e+008 8.45653e+007 0.0) ; ???
  (1 . "qwerty")
  (2 . "Текст") ;слой текст
  (3 . "ARIALN.TTF") ; шрифт
  (7 . "Ариал Н0")  ;  Название стиля текста или шрифт (что-то одно?)
  (39 . 20) ; вес 
  (40 . 400) ; высота
  (62 . 14) ; цвет
  (72 . 0); выравнивание влево
  (подчеркивание текста %%U, как добавить?)

    (princ)
)
Просмотров: 1335
 
Непрочитано 08.04.2024, 21:27
#2
Кулик Алексей aka kpblc
Moderator

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


Самое простое - создать такой текст руками и посмотреть, что там и как.
ЗЫ создание стиля с ttf это отдельный вид гемора, готовься
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.04.2024, 21:28
#3
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Самое простое - создать такой текст руками и посмотреть, что там и как
Мне не понятно, как выбрать нужное название и вставить в чертеж. Какие команды использовать?
Ingpro вне форума  
 
Непрочитано 08.04.2024, 21:32
#4
Кулик Алексей aka kpblc
Moderator

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


Тупо командой _.text создай текст, и сделай его подчеркнутым - увидишь что и куда надо добавлять.
ACAD не запущен, и виртуалку поднимать ну совсем не хочу. Долго, длинно и нецелесообразно ))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.04.2024, 21:34
#5
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Тупо командой _.text создай текст
Мне не надо создавать текст, я хочу выбрать готовое название...
Ingpro вне форума  
 
Непрочитано 08.04.2024, 21:47
1 | #6
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
или как выбрать название из трех (см. ниже)
initget или dcl, что больше нравится.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.04.2024, 22:28
1 | #7
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 2,103


Цитата:
Сообщение от Ingpro Посмотреть сообщение
Мне не надо создавать текст, я хочу выбрать готовое название... *
Быть может здесь ответ:
https://www.lee-mac.com/promptwithdefault.html
SetQ вне форума  
 
Непрочитано 09.04.2024, 08:44
#8
name02


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


Примерно так можно сделать:
Код:
[Выделить все]
 (defun c:txt (/ var_text pt)
  
  (initget 1 "Расположения Армирования Опалубочный")
  (setq	var_text
	 (getkword
	   "\nВыберите название [cхема Расположения/схема Армирования/Опалубочный план]: "
	 )
  )

  (setq	var_text
	 (cond
	   ((= var_text "Расположения") "Схема расположения")
	   ((= var_text "Армирования") "Схема армирования")
	   ((= var_text "Опалубочный") "Опалубочный план")
	 )
  )

  (setq var_text (strcat "{\\L" var_text "}"))
  (setq pt (getpoint "\nУкажите точку вставки текста: "))
  (entmake (list
	     (cons 0 "MTEXT")
	     (cons 100 "AcDbEntity")
	     (cons 100 "AcDbMText")
	     (cons 7 "GOST 2.304")
;;;	     (cons 8 "E_TEXT_L080")
	     (cons 71 5)		;
	     (cons 72 5)
	     (cons 73 1)
	     (cons 10 pt)		;точка вставки
	     (cons 11 (list 1.0 0.0 0.0))
	     (cons 50 0)		;угол
	     (cons 41 100)
	     (cons 40 5)		;высота текста
	     (cons 44 1.0)
	     (cons 1 var_text)
	   )
  )

  (princ)
)
Назначение групп смотри справку тут
name02 вне форума  
 
Автор темы   Непрочитано 09.04.2024, 09:19
#9
Ingpro


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


Цитата:
Сообщение от name02 Посмотреть сообщение
Примерно так можно сделать:
name02, спасибо!!! Работает, как надо: вставляет выбранный текст (подчеркивает).
Если заменить Мтекст на Текст код будет работать?
Мтекст иногда вставляется в 2 строки (если в коде изменить высоту текста) , хотелось бы одной строкой...
Схема
расположения

Последний раз редактировалось Ingpro, 09.04.2024 в 10:35.
Ingpro вне форума  
 
Непрочитано 09.04.2024, 10:34
1 | #10
name02


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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
А как в коде указывается подчеркивание?
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Самое простое - создать такой текст руками и посмотреть, что там и как.
Выдели МТЕКСТ и посмотри в панели свойств:
Нажмите на изображение для увеличения
Название: Свойства МТЕКСТА.png
Просмотров: 10
Размер:	20.5 Кб
ID:	262565

Цитата:
Сообщение от Ingpro Посмотреть сообщение
Если заменить Мтекст на Текст код будет работать?
Для однострочного текста надо по-другому строку текстовую менять:
Нажмите на изображение для увеличения
Название: Свойства ТЕКСТА.png
Просмотров: 10
Размер:	64.1 Кб
ID:	262567

Цитата:
Сообщение от name02 Посмотреть сообщение
Мтекст иногда вставляется в 2 строки (если в коде изменить высоту текста) , хотелось бы одной строкой...
Почитай справку из моего предыдущего сообщения - так какая-то группа отвечает за ширину (41 вроде), нужно сделать расчет ширины в зависимости от длины текстовой строки
name02 вне форума  
 
Автор темы   Непрочитано 09.04.2024, 10:47
#11
Ingpro


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


Цитата:
Сообщение от name02 Посмотреть сообщение
Для однострочного текста надо по-другому строку текстовую менять:
С подчеркиванием и шириной понятно.
изменяем Мтекст на Текст
Код:
[Выделить все]
 (defun c:txt2 (/ var_text pt)
  
  (initget 1 "Расположения Армирования Опалубочный")
  (setq	var_text
	 (getkword
	   "\nВыберите название [cхема Расположения/схема Армирования/Опалубочный план]: "
	 )
  )

  (setq	var_text
	 (cond
	   ((= var_text "Расположения") "Схема расположения")
	   ((= var_text "Армирования") "Схема армирования")
	   ((= var_text "Опалубочный") "Опалубочный план")
	 )
  )

  (setq var_text (strcat "%%U" var_text))
  (setq pt (getpoint "\nУкажите точку вставки текста: "))
  (entmake (list
	     (cons 0 "TEXT")
	     (cons 100 "AcDbEntity")
	     (cons 100 "AcDbText")
	     (cons 7 "Имя стиля") ;указать текстовый стиль из чертежа
	     (cons 8 "Текст")
	     (cons 72 0)
             (cons 73 0)
             (cons 10 pt)		;точка вставки
	     (cons 11 (list 1.0 0.0 0.0))
	     (cons 41 1.0)
	     (cons 40 5)		;высота текста
	     (cons 1 var_text)
	   )
  )
  (princ)
)

Последний раз редактировалось Ingpro, 09.04.2024 в 19:08.
Ingpro вне форума  
 
Непрочитано 09.04.2024, 11:36
1 | #12
name02


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


1 В точечной паре номер 7 (строка 24) должен быть указан текстовый стиль из твоего чертежа
2 В 18 строке нужно быть внимательнее - фигурная скобка не нужна: (setq var_text (strcat "%%U" var_text))
name02 вне форума  
 
Автор темы   Непрочитано 09.04.2024, 11:59
#13
Ingpro


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


Цитата:
Сообщение от name02 Посмотреть сообщение
1 В точечной паре номер 7 (строка 24) должен быть указан текстовый стиль из твоего чертежа
2 В 18 строке нужно быть внимательнее - фигурная скобка не нужна: (setq var_text (strcat "%%U" var_text))
Строка уезжает в начало координат, а не туда куда указываешь...

Последний раз редактировалось Ingpro, 09.04.2024 в 12:52.
Ingpro вне форума  
 
Непрочитано 09.04.2024, 12:49
#14
Кулик Алексей aka kpblc
Moderator

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


https://autolisp.ru/2010/04/06/text-...trib-entities/ ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.04.2024, 13:50
#15
Ingpro


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


После некоторых манипуляций с (cons 73 и (cons 72 получился рабочий код.
Исправлено в посте #11. Всем спасибо за помощь!
Ingpro вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп. Создать строку текста с заданными параметрами и выбором текста



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в автокад в динамическом блоке создать зависимость текста от длины*? artem961996 Динамические блоки 12 11.07.2023 07:59
Установить фиксированную высоту текста Konstr_pgs LISP 3 21.01.2023 11:01
Python. Компас 3Д. Создать генератор текста с случайным числом в заданном интервале. mrsmith1989 Программирование 1 27.05.2019 15:41
Как в одном М-Тексте создать несколько строк с разной высотой текста? Okl AutoCAD 0 07.06.2018 15:57
как выделить и изменить конкретные линии с заданными параметрами а не весь чертеж оптом Шаман Растаманов AutoCAD 8 15.03.2011 20:09