kb2481 发表于 2020-7-18 00:11:24

请问这个改标高的lsp怎么加入输入数值记忆和变颜色功能?

首先感谢这个lsp的原作者小萝卜头。在使用这个程序的过程中,发现输入的数值不能记忆,每次都要重新输入一次,有点不方便,有没有大神出手添加个记忆功能?还有怎么实现改变标高后把标高变成绿色?

xvjiex 发表于 2020-7-18 16:03:00

本帖最后由 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)
)

yshf 发表于 2020-7-18 10:39:46

;改为如下

(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)
)

yshf 发表于 2020-7-18 07:54:33

(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)
)

yangchao2005090 发表于 2020-7-18 08:00:31

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
命令:

烟盒迷唇 发表于 2020-7-18 13:13:01

加入注册表里面也能记忆啊

kb2481 发表于 2020-7-18 14:40:19

yshf 发表于 2020-7-18 10:39
;改为如下

(defun C:GBG (/ E I NEW NUM O SS SYM TXT V0)


有个小问题,就是如果不手动输入数值,使用默认的数值的话,修改会不起作用,只会变色,这是什么原因?

kb2481 发表于 2020-7-18 22:45:21

xvjiex 发表于 2020-7-18 16:03
(defun C:GBG (/ E I NEW NUM O SS SYM TXT V0)
(vl-load-com)
(setvar "DIMZIN" 0)


可以了,大神牛批!!!

kb2481 发表于 2020-7-20 22:07:37

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-21 10:21:31

我没有装天正插件,只是颜色变不了吗?标高能改吗
页: [1] 2
查看完整版本: 请问这个改标高的lsp怎么加入输入数值记忆和变颜色功能?