请问这个改标高的lsp怎么加入输入数值记忆和变颜色功能?
首先感谢这个lsp的原作者小萝卜头。在使用这个程序的过程中,发现输入的数值不能记忆,每次都要重新输入一次,有点不方便,有没有大神出手添加个记忆功能?还有怎么实现改变标高后把标高变成绿色?本帖最后由 xvjiex 于 2020-7-18 16:04 编辑
(defun C:GBG (/ E I NEW NUM O SS SYM TXT V0)
(vl-load-com)
(setvar "DIMZIN" 0)
(princ "\n建筑标高改成结构标高 作者: 蔡建伟 2011-02-18")
(if (= (setq NUM (getvar "UserR5")) 0.0)
(setq NUM -0.030)
)(setvar "UserR5" NUM)
(If (= (setq NUM (getreal (strcat "\n输入加上的高差值<" (rtos NUM 2 3) ">:"))) nil)
(setq NUM (getvar "UserR5"))
)
(setvar "UserR5" NUM)
(if (setq SS (ssget '((1 . "~*[~`--9]*") (0 . "TEXT,TCH_ELEVATION"))))
(repeat (setq I (sslength SS))
(setq E (ssname SS (setq I (1- I))))
(setq O (vlax-ename->vla-object E))
(setq V0 (cdr (assoc 0 (entget E))))
(cond ((= V0 "TEXT")
(setq SYM "TEXTSTRING")
)
((= V0 "TCH_ELEVATION")
(setq SYM "TEXT")
)
)
(setq TXT (vlax-get-property O SYM))
(setq NEW (+ (atof TXT) NUM))
(setq NEW (rtos NEW 2 3))
(vlax-put-property O SYM NEW)
(vlax-put-property O "color" 1)
(vla-update O)
)
)
(princ)
) ;改为如下
(defun C:GBG (/ E I NEW NUM O SS SYM TXT V0)
(vl-load-com)
(setvar "DIMZIN" 0)
(princ "\n建筑标高改成结构标高 作者: 蔡建伟 2011-02-18")
(if (= (setq NUM (getvar "UserR5")) 0.0)
(setq NUM -0.30)
)
(If (= (setq NUM (getreal (strcat "\n输入加上的高差值<" (rtos NUM 2 3) ">:"))) nil)
(setq NUM (getvar "UserR5"))
)
(setvar "UserR5" NUM)
(if (setq SS (ssget '((1 . "~*[~`--9]*") (0 . "TEXT,TCH_ELEVATION"))))
(repeat (setq I (sslength SS))
(setq E (ssname SS (setq I (1- I))))
(setq O (vlax-ename->vla-object E))
(setq V0 (cdr (assoc 0 (entget E))))
(cond ((= V0 "TEXT")
(setq SYM "TEXTSTRING")
)
((= V0 "TCH_ELEVATION")
(setq SYM "TEXT")
)
)
(setq TXT (vlax-get-property O SYM))
(setq NEW (+ (atof TXT) NUM))
(setq NEW (rtos NEW 2 3))
(vlax-put-property O SYM NEW)
(vlax-put-property O "color" 1)
(vla-update O)
)
)
(princ)
) (defun C:GBG (/ E I NEW NUM O SS SYM TXT V0)
(vl-load-com)
(setvar "DIMZIN" 0)
(princ "\n建筑标高改成结构标高 作者: 蔡建伟 2011-02-18")
(if (= (setq NUM (getvar "UserR5")) 0.0)
(setq NUM -0.30)
)
(setq NUM (getreal (strcat "\n输入加上的高差值<" (rtos NUM 2 3) ">:")))
(setvar "UserR5" NUM)
(if (setq SS (ssget '((1 . "~*[~`--9]*") (0 . "TEXT,TCH_ELEVATION"))))
(repeat (setq I (sslength SS))
(setq E (ssname SS (setq I (1- I))))
(setq O (vlax-ename->vla-object E))
(setq V0 (cdr (assoc 0 (entget E))))
(cond ((= V0 "TEXT")
(setq SYM "TEXTSTRING")
)
((= V0 "TCH_ELEVATION")
(setq SYM "TEXT")
)
)
(setq TXT (vlax-get-property O SYM))
(setq NEW (+ (atof TXT) NUM))
(setq NEW (rtos NEW 2 3))
(vlax-put-property O SYM NEW)
(vlax-put-property O "color" 1)
(vla-update O)
)
)
(princ)
)
yshf 发表于 2020-7-18 07:54
(defun C:GBG (/ E I NEW NUM O SS SYM TXT V0)
(vl-load-com)
(setvar "DIMZIN" 0)
; 错误: AutoCAD 变量设置被拒绝: "UserR5" nil
命令: 加入注册表里面也能记忆啊 yshf 发表于 2020-7-18 10:39
;改为如下
(defun C:GBG (/ E I NEW NUM O SS SYM TXT V0)
有个小问题,就是如果不手动输入数值,使用默认的数值的话,修改会不起作用,只会变色,这是什么原因? xvjiex 发表于 2020-7-18 16:03
(defun C:GBG (/ E I NEW NUM O SS SYM TXT V0)
(vl-load-com)
(setvar "DIMZIN" 0)
可以了,大神牛批!!! xvjiex 发表于 2020-7-18 16:03
(defun C:GBG (/ E I NEW NUM O SS SYM TXT V0)
(vl-load-com)
(setvar "DIMZIN" 0)
在使用的时候发现改天正标高的时候变不了色,请问这个能否解决?
我没有装天正插件,只是颜色变不了吗?标高能改吗
页:
[1]
2