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

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

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

Ответ
Поиск в этой теме
Непрочитано 02.11.2009, 21:35 #1
Как програмно создать дробный текст в мультитексте?
Glorius
 
инженер-конструктор
 
Беларусь
Регистрация: 20.12.2006
Сообщений: 498

Собственно сабж.
Вот так создаю простой мультитекст
(setq obj (vla-AddMText model_space (vlax-3D-point (getpoint)) 1500 (read-line file)))
В качестве текста выступает строка из файла. Нужно создать дробный текст прграмно.
Спасибо.
__________________
Инженер-конструктор.
Просмотров: 4576
 
Непрочитано 03.11.2009, 08:12
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Пример бы не помешал...
Можно так:
Код:
[Выделить все]
(setq obj (vla-AddMText
	    (vla-get-ModelSpace
	      (vla-get-ActiveDocument (vlax-get-acad-object))
	    ) ;_ end of vla-get-ModelSpace
	    (vlax-3D-point (getpoint "\nInsertion point:"))
	    1500
	    "\\A1;<целое>\\S<числитель>/<знаменатель>"
	  ) ;_ end of vla-AddMText
) ;_ end of setq
Do$ вне форума  
 
Непрочитано 03.11.2009, 09:35
#3
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Еще парочка примеров
Код:
[Выделить все]
(setq obj (vla-AddMText
	    (vla-get-ModelSpace
	      (vla-get-ActiveDocument (vlax-get-acad-object))
	    ) ;_ end of vla-get-ModelSpace
	    (vlax-3D-point (getpoint "\nInsertion point:"))
	    1500
	    "\\A1;<ЦЕЛОЕ>{\\H0.7x;\\S^<нижний индекс>;}"
	  ) ;_ end of vla-AddMText
) ;_ end of setq

(setq obj (vla-AddMText
	    (vla-get-ModelSpace
	      (vla-get-ActiveDocument (vlax-get-acad-object))
	    ) ;_ end of vla-get-ModelSpace
	    (vlax-3D-point (getpoint "\nInsertion point:"))
	    1500
	    "\\A1;<ЦЕЛОЕ>{\\H0.7x;\\S<верхний индекс>^;}"
	  ) ;_ end of vla-AddMText
) ;_ end of setq

(setq obj (vla-AddMText
	    (vla-get-ModelSpace
	      (vla-get-ActiveDocument (vlax-get-acad-object))
	    ) ;_ end of vla-get-ModelSpace
	    (vlax-3D-point (getpoint "\nInsertion point:"))
	    1500
	    "\\A1;<целое>{\\H0.7x;\\S<числитель>#<знаменатель>;}\\PНапример: 8{\\H0.7x;\\S1#2;}"
	  ) ;_ end of vla-AddMText
) ;_ end of setqq
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 03.11.2009 в 09:43.
VVA вне форума  
 
Автор темы   Непрочитано 03.11.2009, 11:55
#4
Glorius

инженер-конструктор
 
Регистрация: 20.12.2006
Беларусь
Сообщений: 498


Спасибо, только что-то я никак не соображу с подстановкой конкретных текстовых величин.
Отредактируйте, пожалуйста, какой нибудь пример, который бы при указании точки в пространстве модели рисовал бы такой текст - "целое1 числитель/знаменатель целое2". Тут "числитель/знаменатель" - это дробная часть, дробь горизонтальная, размер - 70%.
__________________
Инженер-конструктор.
Glorius вне форума  
 
Непрочитано 03.11.2009, 12:02
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Красным выделено форматирование, синим - текст
Код:
[Выделить все]
(setq obj (vla-AddMText
	    (vla-get-ModelSpace
	      (vla-get-ActiveDocument (vlax-get-acad-object))
	    ) ;_ end of vla-get-ModelSpace
	    (vlax-3D-point (getpoint "\nInsertion point:"))
	    1500
	    "\\A1;ЦЕЛОЕ1 {\\H0.7x;\\SЧИСЛИТЕЛЬ/ЗНАМЕНАТЕЛЬ ;}ЦЕЛОЕ2"
	  ) ;_ end of vla-AddMText
) ;_ end of setq
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 03.11.2009, 12:12
#6
Glorius

инженер-конструктор
 
Регистрация: 20.12.2006
Беларусь
Сообщений: 498


VVA, Do$
Спасибо. Все работает.

Поначалу не срабатывало, потому что ошибка закралась в другом фрагменте кода. Вот и последний указаный пример с конкретными текстовыми величинами не пошел. Ошибку нашел и все встало на свои места)

P.S. А где можно посмотреть документацию по заданию вот таких параметров различных объектов автокада? Есть книга Полещука "AutoLISP и Visual LISP в среде AutoCAD", но там такого не видел. Например интересует как програмно подчеркнуть текст...
__________________
Инженер-конструктор.
Glorius вне форума  
 
Непрочитано 03.11.2009, 12:47
#7
Кулик Алексей aka kpblc
Moderator

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


Смотри коды форматирования многострочного текста в справке AutoCAD.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.11.2009, 13:46
#8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


А еще можно ручками нарисовать мтекст, отформатировать его как нужно в редакторе, набрать (entget(entlast)) и смотреть dxf группу 1.
коды форматирования многострочного текста Более полная версия в справке Автокада (искать "Форматирование многострочного текста во внешнем редакторе")
Вложения
Тип файла: pdf acad_aug.pdf (296.1 Кб, 265 просмотров)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 03.11.2009 в 13:53.
VVA вне форума  
 
Непрочитано 13.12.2011, 17:54
#9
WST


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


Всем доброго дня вроде нашел подходящею тему нужно программно вставить в указанную точку текст того типа как в прикрепленном файле это как я понял можно сделать при помощи кода VVA, из поста #5

Код:
[Выделить все]
 (setq obj (vla-AddMText
	    (vla-get-ModelSpace
	      (vla-get-ActiveDocument (vlax-get-acad-object))
	    ) ;_ end of vla-get-ModelSpace
	    (vlax-3D-point (getpoint "\nInsertion point:"))
	    1500
	    "\\A1;quantity_of_lamps type_of_lamp {\\H0.98x;\\Squantity_of_lampsXpower/height;}"
	  ) ;_ end of vla-AddMText
) ;_ end of setq
но что делать если:
- quantity_of_lamps;
- type_of_lamp;
- quantity_of_lampsXpower;
- height.
переменные - которым присваиваются значения как из диалогового окна так и после обработки и расчетов программы.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 54
Размер:	590.3 Кб
ID:	71362  
WST вне форума  
 
Непрочитано 13.12.2011, 19:15
#10
Oliver_88

"ценный кадр"
 
Регистрация: 02.12.2010
Сообщений: 115
<phrase 1=


Код:
[Выделить все]
 (setq quantity_of_lamps 5
      type_of_lamp 10
      Squantity_of_lampsXpower 25
      height 11
      )
(setq obj (vla-AddMText
	    (vla-get-ModelSpace
	      (vla-get-ActiveDocument (vlax-get-acad-object))
	      ) ;_ end of vla-get-ModelSpace
	    (vlax-3D-point (getpoint "\nInsertion point:"))
	    1500
	    (strcat
	      "\\A1;"
	      (vl-princ-to-string quantity_of_lamps)
	      " "
	      (vl-princ-to-string type_of_lamp)
	      " "
	      "{\\H0.98x;\\S"
	      (vl-princ-to-string  Squantity_of_lampsXpower)
	      "/"
	      (vl-princ-to-string  height)
	      " ;}"
	      )
	    ) ;_ end of vla-AddMText
      )

Последний раз редактировалось Oliver_88, 13.12.2011 в 19:16. Причина: лишнего накатал
Oliver_88 вне форума  
 
Непрочитано 13.12.2011, 20:56
#11
WST


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


Oliver_88,
Огромное спасибо то что нужно, а главное понял суть

Последний раз редактировалось WST, 13.12.2011 в 21:04.
WST вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как програмно создать дробный текст в мультитексте?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как извлечь из размера значение, т.е. текст??? Rubль Программирование 10 24.08.2009 17:24
Как вывести текст в model из приложения написанного на lisp? paradoxvaha AutoCAD 3 16.04.2007 03:54
Все поля преобразовать в текст. Как это сделать? Pave1 AutoCAD 4 11.08.2006 12:45
Как из блока програмно вычленить текст Flint Программирование 5 17.02.2004 11:03
Как перенести текст из AutoCAD'a в MS Word? sear_ch AutoCAD 4 12.01.2004 20:50