请求将已有面积周长代码增加一个立面面积
已有代码——面积周长(defun C:MJZC (/pt a b c s ss tt ttt )
(vl-load-com)
(setvar "cmdecho" 0)
(setq TTS1 (getvar "textsize"))
(setvar "textsize" 300)
(setvar "cecolor" "20")
(while
(setq pt (getpoint "\\n请点取要标注的范围内一点:"))
(command "-boundary" pt "" "")
(setq a (entlast))
(setq b (vlax-ename->vla-object a))
(setq s (vla-get-area b))
(setq ss (rtos (/ s 1000000)2 2))
(setq tt (vla-get-length b))
(setq ttt (rtos (/ tt 1000)2 2))
(command "mtext"pt pt (strcat "面积=" ss "平米\n" "周长=" ttt "米") "")
(command "erase" a "")
)
(command "cecolor" "bylayer")
(setvar "textsize" TTS1)
(setvar "cmdecho" 1)
(princ)
)
需求是增加一个功能,运行代码后首先让输入立面高度(单位为米),然后点取标注范围后,出来的文字增加一行立面面积,
变成:“面积=xxx,周长=xxx,立面=xxx”,也就是要用周长x输入的立面高度,并且输入的立面高度带记忆功能。
截图示意
yyz123121 发表于 2023-11-8 10:47
哪位帮忙看看哪里出错了,一运行就出现“错误: 参数类型错误: numberp:”
(defun C:MJZC (/pt a b c s ...
(defun C:MJZC (/pt a b c s ss tt ttt )
(vl-load-com)
(setvar "cmdecho" 0)
(setq TTS1 (getvar "textsize"))
(setvar "textsize" 300)
(setvar "cecolor" "20")
(if (not LMH)
(setq LMH (getstring "\n立面高度:"))
(setq LMH (if (/= "" (setq LMH_D (getstring (strcat "\n立面高度<" LMH ">:")))) LMH_D LMH))
)
(while
(setq pt (getpoint "\\n请点取要标注的范围内一点:"))
(command "-boundary" pt "" "")
(setq a (entlast))
(setq b (vlax-ename->vla-object a))
(setq s (vla-get-area b))
(setq ss (rtos (/ s 1000000)2 2))
(setq tt (vla-get-length b))
(setq ttt (rtos (/ tt 1000)2 2))
(setq LMMJ (rtos (* (atof LMH) (atofttt)) 2 2))
(command "mtext"pt pt (strcat "面积=" ss "平米\n" "周长=" ttt "米\n" "立面=" LMMJ "平米") "")
(command "erase" a "")
)
(command "cecolor" "bylayer")
(setvar "textsize" TTS1)
(setvar "cmdecho" 1)
(princ)
) 哪位帮忙看看哪里出错了,一运行就出现“错误: 参数类型错误: numberp:”
(defun C:MJZC (/pt a b c s ss tt ttt )
(vl-load-com)
(setvar "cmdecho" 0)
(setq TTS1 (getvar "textsize"))
(setvar "textsize" 300)
(setvar "cecolor" "20")
(if (not LMH)
(setq LMH (getstring "\n立面高度:"))
(setq LMH (if (/= "" (setq LMH_D (getstring (strcat "\n立面高度<" LMH ">:")))) LMH_D LMH))
)
(while
(setq pt (getpoint "\\n请点取要标注的范围内一点:"))
(command "-boundary" pt "" "")
(setq a (entlast))
(setq b (vlax-ename->vla-object a))
(setq s (vla-get-area b))
(setq ss (rtos (/ s 1000000)2 2))
(setq tt (vla-get-length b))
(setq ttt (rtos (/ tt 1000)2 2))
(setq LMMJ (rtos (* LMH ttt)2 2))
(command "mtext"pt pt (strcat "面积=" ss "平米\n" "周长=" ttt "米\n" "立面=" LMMJ "平米") "")
(command "erase" a "")
)
(command "cecolor" "bylayer")
(setvar "textsize" TTS1)
(setvar "cmdecho" 1)
(princ)
) yaojing38 发表于 2023-11-7 21:05
谢谢!{:1_1:}
页:
[1]