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

谁能帮忙写个程序,cad有很多数字,想同时做乘法,并且在原位置替换,第三点要求是能控制小数点后的位数。... 谁能帮忙写个程序,cad有很多数字,想同时做乘法,并且在原位置替换,第三点要求是能控制小数点后的位数。 展开
 我来答
朱06CAD
推荐于2016-02-25 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18070
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部
(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】
45qoqd4tsb
2014-12-03
知道答主
回答量:4
采纳率:0%
帮助的人:4.5万
展开全部
并且在原位置替换,第三点要求是能控制小数点后的位数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式