cad里lisp程序编程求助:能够简单计算并显示出来。 30
求助,有谁懂cad的lisp编程吗?想编个小程序,实现个小功能——比如cad上面有三行文字:第一行为:小红年龄:18第二行为:小明年龄:9第三行为:小李年龄:5(这三行文...
求助,有谁懂cad的lisp编程吗?想编个小程序,实现个小功能——比如cad上面有三行文字:第一行为:小红年龄:18 第二行为:小明年龄:9 第三行为:小李年龄:5 (这三行文字里年龄都是变的) 然后我调用lisp程序,程序提示我选择。我选择这三行文字,确定。然后程序提示我指定插入点。然后我点插入点。这时候在插入点出现两行文字:第一行 小红比小明大:9 第二行 小红比小李大:13 (这个就是我想要的效果,能够自动捕捉文字里的年龄,然后计算结果,固定格式显示出来)求助大神
展开
1个回答
展开全部
你好,请您试一试下面的程序:
;小程序,实现个小功能——比如cad上面有三行文字:
;第一行为:小红年龄:18
;第二行为:小明年龄:9
;第三行为:小李年龄:5
;(这三行文字里年龄都是变的)
;然后调用lisp程序,程序提示选择这三行文字,确定。
;然后程序提示指定插入点。然后点插入点。
;这时候在插入点出现两行文字:
;第一行 小红比小明大:9
;第二行 小红比小李大:13
(defun c:nl ()
(setq sss (ssget)
nm0 (nm&nl 0)
nl0 (cadr nm0)
nm0 (car nm0)
nm1 (nm&nl 1)
nl1 (cadr nm1)
nm1 (car nm1)
nm2 (nm&nl 2)
nl2 (cadr nm2)
nm2 (car nm2)
nl20 (- nl2 nl0)
nl21 (- nl2 nl1)
)
(print (list nm0 nl0 nm1 nl1 nm2 nl2 nl20 nl21))
(command "text" pause "" "" (strcat nm2 "比" nm1 "大:" (rtos nl21 2 0))
"text" "" (strcat nm2 "比" nm0 "大:" (rtos nl20 2 0))
)
)
(defun nm&nl (i / nm nl)
(setq nm (ssname sss i)
nm (entget nm)
nm (cdr (assoc 1 nm))
nl (substr nm 11)
nm (substr nm 1 4)
nl (read nl)
)
(list nm nl)
)
;小程序,实现个小功能——比如cad上面有三行文字:
;第一行为:小红年龄:18
;第二行为:小明年龄:9
;第三行为:小李年龄:5
;(这三行文字里年龄都是变的)
;然后调用lisp程序,程序提示选择这三行文字,确定。
;然后程序提示指定插入点。然后点插入点。
;这时候在插入点出现两行文字:
;第一行 小红比小明大:9
;第二行 小红比小李大:13
(defun c:nl ()
(setq sss (ssget)
nm0 (nm&nl 0)
nl0 (cadr nm0)
nm0 (car nm0)
nm1 (nm&nl 1)
nl1 (cadr nm1)
nm1 (car nm1)
nm2 (nm&nl 2)
nl2 (cadr nm2)
nm2 (car nm2)
nl20 (- nl2 nl0)
nl21 (- nl2 nl1)
)
(print (list nm0 nl0 nm1 nl1 nm2 nl2 nl20 nl21))
(command "text" pause "" "" (strcat nm2 "比" nm1 "大:" (rtos nl21 2 0))
"text" "" (strcat nm2 "比" nm0 "大:" (rtos nl20 2 0))
)
)
(defun nm&nl (i / nm nl)
(setq nm (ssname sss i)
nm (entget nm)
nm (cdr (assoc 1 nm))
nl (substr nm 11)
nm (substr nm 1 4)
nl (read nl)
)
(list nm nl)
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询