如何通过 cad 里面的lisp 获得数据;该如何书写

2024-10-22 16:36:19
有4个网友回答
网友(1):

请参考下列程序:
;*把字符串表示的表转化成实数表示的表
(defun release (l / flag count slength single data itemlist temp)
(if l (progn
(foreach item l
(setq count 1 flag T slength (strlen item) itemlist nil )
(while (<= count slength)
(setq single (substr item count 1))
(if (member single '("X" "x" "*"))
(progn
(setq data (atof (substr item 1 (1- count))))
(repeat (atoi (substr item (1+ count)))
(setq itemlist (append itemlist (list data))))
(setq count (1+ slength) flag nil)
);progn
(setq count (1+ count))
);if
);while
(if flag
(setq temp (append temp (list (atof item))))
(setq temp (append temp itemlist))
);if-flag
);foreach
temp
));if-progn
);release

网友(2):

获取单行文字内容,用LISP的话是(cdr(assoc 10 (entget en)))
用VLISP的话是(vla-get-textstring obj)
文字内容的截取可以用substr函数

网友(3):

可否补充下你的问题,你是想获得数据后进行什么操作呢?替换?还是仅仅只是获取?推荐答案的兄弟回答的只是将已知变量字串中的固定字符串取出并赋值给另一个变量,我想应该不是你要的结果吧。望补充,好为您解答。

网友(4):

1、
(setq a "%%1328@100"
b (vl-string-subst "" "%%132" a)
c (vl-string-subst " " "@" b)
e (read (strcat "(" c ")"))
)

2、
(setq a1 "2%%13218;3%%13216"
b1 (vl-string-subst " " ";" a1)
c1 (read (strcat "(" b1 ")"))
e1 (mapcar '(lambda(x)(vl-prin1-to-string x)) c1)
)