获取文本内容????
如何获取文本内容并将其作为我将要筛选的对象的高程?(defun c:q1 (/ txt1 q1 ss)
(setq ss (ssget "_C" '((0 . "*TEXT"))))
(cdr (assoc 1 (entget (ssname ss (setq txt1 0)))))
(prompt "\nSELECT OBJECTS")
(setq sss (ssget "_:L"))
(command"_.CHANGE" sss "" "_P" "_E" txt1)
) 使用获取文本或多行文字内容
(setq txt(vla-get-TextString(vlax-ename->vla-object (car (entsel)))))
不知道你想用它做什么。 一些猜测:
(defun c:q1 ( / LeaveNumbersAndDots txt enx n SS )
(defun LeaveNumbersAndDots (str)
(if (and (eq 'STR (type str)) (setq str (vl-remove-if-not '(lambda (c) (<= 46 c 57)) (vl-string->list str))) )
(vl-list->string str)
)
); defun LeaveNumbersAndDots
(cond
( (not (setq txt (car (entsel "\nPick text with numerical content: "))))
(alert "\nNothing selected.")
)
( (not (wcmatch (cdr (assoc 0 (setq enx (entget txt)))) "*TEXT"))
(alert "\nThis is not a text.")
)
( (not (numberp (setq n (read (setq txt (cdr (assoc 1 enx)))))))
(alert
(strcat "\nThis text has no full numerical content:
\nCurrently it is: \"" txt "\"
\nIt must be in the following format: \"" (cond ((LeaveNumbersAndDots txt)) ("123.4")) "\"."
)
)
)
( (not (and (princ "\nSelect objects to change their elevation: ") (setq SS (ssget "_:L"))))
(alert "\nNothing selected.")
)
(
(mapcar
'(lambda (enx)
(cond
( (assoc 38 enx) (entmod (append enx (list (cons 38 n)))) )
( (entmod (mapcar '(lambda (x) (if (member (car x) '(10 11)) (reverse (cons n (cdr (reverse x)))) x) ) enx)) )
)
)
(mapcar 'entget (apply 'append (mapcar '(lambda (x) (if (= 3 (car x)) (list (cadr x)))) (ssnamex SS))))
)
)
); cond
(princ)
); defun
你好
您的警告语句并不完全正确,因为numberp函数将为此类字符串返回nil。例如:“abc123”
(defun HasNoNumber-p (str)
(not (vl-some '(lambda (no) (< 47 no 57)) (vl-string->list str)))
)
嗨,塔瓦,
是的:我的目的是只检查文本内容中的数字字符(我认为这是必需的格式)。
是的,我的警告信息并不完全正确(由于缺乏英语)。
无论如何,就像你说的,文本内容可以重新格式化:
; _$ (LeaveNumbers "Leave 251, 900 and 841 numbers please.") -> "251900841"
(defun LeaveNumbers (str)
(apply 'strcat (mapcar 'chr (vl-remove-if-not '(lambda (c) (< 47 c 58)) (vl-string->list str))))
)
我猜这条线索和这条有某种联系
两者都是正确的,但篇幅较短且直接。
(defun LeaveNumbers (str)
(vl-list->string (vl-remove-if-not '(lambda (c) (< 47 c 58)) (vl-string->list str)))
)
非常感谢。
我试过了,只更改了多段线高程,但没有更改线(起点z终点z)、引线(顶点z)、文字(位置z)。如何将其添加到您的lisp中?我不想破坏你的密码
我已经修改了第#3篇文章中的代码,应该可以更好地工作——但我不能保证它是完美的。
页:
[1]