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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Mtext in text string

Mtext in text string

Ответ
Поиск в этой теме
Непрочитано 21.04.2005, 13:41 #1
Mtext in text string
AleX
 
CNC
 
Belarus
Регистрация: 28.08.2003
Сообщений: 47

Mtext in text string
Как получить из навороченного Mtext строку неформатированного текста в виде похожем на то как он отображен на чертеже? Например для размерного текста 4отв.%%с8х13. т.е очистить от шрифтов подчеркивания и другой лабуды. Проблема особенно актуальна для импортированых размеров из Inventorа.
Просмотров: 5117
 
Непрочитано 21.04.2005, 13:55
#2
ZZZ

электрик
 
Регистрация: 11.03.2005
Киев
Сообщений: 157


Взорвать.
Если хочешь оставить так как есть МТЕКСТ только с очисткой, то прийдётся удалять из текста шрифты(лабуды), поиском в строках {;;;} и т.д.
Есть прога(функция) очистки текста от лобуды но дома, вечерком пришлю. Кстати необходимо не забыть о преобразовании юникодов(+U000b) в нормальныё символы.

Автору.
Одну и туже тему поднимать на двух форумах (и autocad.ru) не очень хорошо. Мастера смотрят и там и тут. И где тебе отвечать? Как будет проиходить обсуждение?
__________________
Когда под рукой нет ничего кроме молотка - всё вокруг кажется гвоздями...
Выбор правильного инструмента - залог успеха в любом деле.
ZZZ вне форума  
 
Непрочитано 21.04.2005, 14:12
#3
ZZZ

электрик
 
Регистрация: 11.03.2005
Киев
Сообщений: 157


Это нашел на работе (старое но рабочее). Необходимо ещё коечто добавить.
Код:
[Выделить все]
;;;Очистка текста в MTEXT
;;;(clear_text_in_MTEXT (TXTSelectValue))
(defun z_find_string_condition_MTEXT1  (string find condition pos /)
  (if pos
    (if	(or (= pos 0)
	    (and
	      (/= pos 0)
	      (/= (- pos 1)
		  (vl-string-search "\\{" string (- pos 1)))))
      t
      nil)))
(defun clear_fonts_in_MTEXT  (string / pos temp)
;;;(z_find_string_condition_MTEXT1 string "\{" "\\{" pos)
  (setq pos (vl-string-search "\{" string))
  (while pos
    (if	(z_find_string_condition_MTEXT1 string "\{" "\\{" pos)
      (progn
	(setq string (vl-string-subst "" "\{" string pos))
	(setq pos (vl-string-search "\{" string pos)))
      (setq pos (vl-string-search "\{" string (+ pos 1)))))

  (setq pos (vl-string-search "\}" string))
  (while pos
    (if	(z_find_string_condition_MTEXT1 string "\}" "\\}" pos)
      (progn
	(setq string (vl-string-subst "" "\}" string pos))
	(setq pos (vl-string-search "\}" string pos)))
      (setq pos (vl-string-search "\}" string (+ pos 1)))))

  (setq pos (vl-string-search "\\f" string))
  (while pos
    (setq string (vl-string-subst
		   ""
		   (substr string
			   (+ pos 1)
			   (+ 1 (- (vl-string-search ";" string pos) pos)))
		   string))
    (setq pos (vl-string-search "\\f" string)))
  string)

(defun clear_text_in_MTEXT  (string / pos temp)
  (setq string (clear_fonts_in_MTEXT string))
  (while (/= String (setq String (vl-string-subst "" "\\A1;" String))))
  string)

;;;(string_Unicod->ASCII "\\U+00E2 \\U+00EF\\U+00E5\\U+00F0\\U+00E5\\U+00EA\\U+00F0\\U+00E8\\U+00F2\\U+00F2\\U+00B3")
(defun string_Unicod->ASCII  (string / n)
  (while (setq n (vl-string-search "\\U+00" string))
    (setq string
	   (vl-string-subst
	     (chr (+
		    (* 16
		       (if (< (ascii (strcase (substr string (+ n 6) 1))) 58)
			 (- (ascii (strcase (substr string (+ n 6) 1))) 48)
			 (- (ascii (strcase (substr string (+ n 6) 1))) 55)))
		    (if	(< (ascii (strcase (substr string (+ n 7) 1))) 58)
		      (- (ascii (strcase (substr string (+ n 7) 1))) 48)
		      (- (ascii (strcase (substr string (+ n 7) 1))) 55))))
	     (substr string (1+ n) 7)
	     string)))
  string
  )
__________________
Когда под рукой нет ничего кроме молотка - всё вокруг кажется гвоздями...
Выбор правильного инструмента - залог успеха в любом деле.
ZZZ вне форума  
 
Автор темы   Непрочитано 21.04.2005, 15:06
#4
AleX

CNC
 
Регистрация: 28.08.2003
Belarus
Сообщений: 47


;импорт из инвентора вместе с размером 2отв.D15
;"2отв.\\fAIGDT|b0|i0;\\H17.5000;n\\fArial|b0|i0;\\H17.5000;<>"
(clear_text_in_MTEXT "2отв.\\fAIGDT|b0|i0;\\H17.5000;n\\fArial|b0|i0;\\H17.5000;<>")
;"2отв.\\H17.5000;n\\H17.5000;<>" -результат безусловно намного лучше хотя и не дает "2отв.%%c<>"
;"2отв.%%c15" -представление на экране
AleX вне форума  
 
Непрочитано 21.04.2005, 15:43
#5
ZZZ

электрик
 
Регистрация: 11.03.2005
Киев
Сообщений: 157


Добавишь
Код:
[Выделить все]
;;;(test  "2отв.\\fAIGDT|b0|i0;\\H17.5000;n\\fArial|b0|i0;\\H17.5000;<>") = "2отв.n<>" 
(defun test  (string / _test)
  (defun _test	(string)
    (if	(and (vl-string-search "\\" string)
	     (vl-string-search ";" string (vl-string-search "\\" string)))
      (setq
	string
	 (vl-string-subst
	   ""
	   (substr string
		   (1+ (vl-string-search "\\" string))
		   (1+ (- (vl-string-search ";" string (vl-string-search "\\" string))
			  (vl-string-search "\\" string))))
	   string)))
    string
    )
  (while (/= string (setq string (_test string))))
  string
  )
__________________
Когда под рукой нет ничего кроме молотка - всё вокруг кажется гвоздями...
Выбор правильного инструмента - залог успеха в любом деле.
ZZZ вне форума  
 
Автор темы   Непрочитано 21.04.2005, 16:45
#6
AleX

CNC
 
Регистрация: 28.08.2003
Belarus
Сообщений: 47


(setq pos (vl-string-search "\\h" string))
(while pos
(setq string (vl-string-subst
""
(substr string
(+ pos 1)
(+ 1 (- (vl-string-search ";" string pos) pos)))
string))
(setq pos (vl-string-search "\\h" string)))
string)
или так с сонтролем регистра
AleX вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Mtext in text string