求cad lisp.cad有很多数字,想同时做乘法,并且在原位置替换,第三点要求是能控制小数点后的位数.

学习 时间:2026-04-04 21:15:42 阅读:3749
求cad lisp.cad有很多数字,想同时做乘法,并且在原位置替换,第三点要求是能控制小数点后的位数.谁能帮忙写个程序,cad有很多数字,想同时做乘法,并且在原位置替换,第三点要求是能控制小数点后的位数.

最佳回答

美丽的大船

风中的绿草

2026-04-04 21:15:42

(defun C:ZX48 ( / #k1 #l1 #l2 &k1 &kw1 n wznr1 wznr2) (setvar "cmdecho" 0) (setvar "blipmode" 0) (setq #L1 (getdist (strcat "\n请输入要相乘的数值:<" "1" ">"))) (if (= #L1 nil) (setq #L1 1) );默认相乘数值为1 (setq #L2 (getint (strcat "\n请输入要控制小数点后的位数:<" "5" ">")));默认小数点后5位 (while (and (/= #L2 nil) (< #L2 0)) (setq #L2 (getint (strcat "\n请输入要控制小数点后的位数:<" "5" ">"))));数值输入不得小于0 (if (= #L2 nil) (setq #L2 5) ) (princ "\n请选择数字文字") (setq &kw1 (ssget '((0 。 "text,mtext") (1 。 "~*[~-。0-9]*" ))));只选择数字文字 (if (/= &kw1 nil);如果有选择了  (progn   (setq n (sslength &kw1))   (setq &k1 (ssname &kw1 0));提取文字   (while &k1    (setq &kw1 (ssdel &k1 &kw1))    (setq #k1 (entget &k1));取得文字属性列表    (setq WZNR1 (assoc 1 #k1));取得文字    (setq WZNR2 (cons 1 (rtos (* (atof (cdr WZNR1)) #L1) 2 #L2)));得到要替换的内容    (setq #k1 (subst WZNR2 WZNR1 #k1));替换内容    (entmod #k1);刷新文字    (setq &k1 (ssname &kw1 0));下一个文字   )  ) ) (princ "\n共选择了") (princ n) (princ "个文字相乘");在命令行显示 (prin1));复制到记事本以【。lsp】为后缀命名,加载到AutoCAD就可以使用,使用命令为【ZX48】

最新回答共有2条回答

  • 稳重的豆芽
    回复
    2026-04-04 21:15:42

    (defun C:ZX48 ( / #k1 #l1 #l2 &k1 &kw1 n wznr1 wznr2) (setvar "cmdecho" 0) (setvar "blipmode" 0) (setq #L1 (getdist (strcat "\n请输入要相乘的数值:<" "1" ">"))) (if (= #L1 nil) (setq #L1 1) );默认相乘数值为1 (setq #L2 (getint (strcat "\n请输入要控制小数点后的位数:<" "5" ">")));默认小数点后5位 (while (and (/= #L2 nil) (< #L2 0)) (setq #L2 (getint (strcat "\n请输入要控制小数点后的位数:<" "5" ">"))));数值输入不得小于0 (if (= #L2 nil) (setq #L2 5) ) (princ "\n请选择数字文字") (setq &kw1 (ssget '((0 。 "text,mtext") (1 。 "~*[~-。0-9]*" ))));只选择数字文字 (if (/= &kw1 nil);如果有选择了  (progn   (setq n (sslength &kw1))   (setq &k1 (ssname &kw1 0));提取文字   (while &k1    (setq &kw1 (ssdel &k1 &kw1))    (setq #k1 (entget &k1));取得文字属性列表    (setq WZNR1 (assoc 1 #k1));取得文字    (setq WZNR2 (cons 1 (rtos (* (atof (cdr WZNR1)) #L1) 2 #L2)));得到要替换的内容    (setq #k1 (subst WZNR2 WZNR1 #k1));替换内容    (entmod #k1);刷新文字    (setq &k1 (ssname &kw1 0));下一个文字   )  ) ) (princ "\n共选择了") (princ n) (princ "个文字相乘");在命令行显示 (prin1));复制到记事本以【。lsp】为后缀命名,加载到AutoCAD就可以使用,使用命令为【ZX48】

上一篇 三年级的课文【争先恐后】的解释说什么?

下一篇 电视节目中乱改的成语有哪些