yyz123121 发表于 2023-11-7 21:05:35

请求将已有面积周长代码增加一个立面面积

已有代码——面积周长

(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输入的立面高度,并且输入的立面高度带记忆功能。

截图示意

yaojing38 发表于 2023-11-7 21:05:36

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

yyz123121 发表于 2023-11-8 10:47:14

哪位帮忙看看哪里出错了,一运行就出现“错误: 参数类型错误: 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)
)

yyz123121 发表于 2023-11-8 17:06:24

yaojing38 发表于 2023-11-7 21:05


谢谢!{:1_1:}
页: [1]
查看完整版本: 请求将已有面积周长代码增加一个立面面积