wchsunshine
发表于 2021-3-14 20:59:17
bai2000 发表于 2021-3-11 21:25
我这有个,不知哪位大神的,你看看
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;两列连 ...
这个不错,就是小数位保留了3位,太多了,哪位大神可以改下吗?
要求: 保留小数点位1位,数值尾部消零。
bssurvey
发表于 2021-3-15 08:50:55
wchsunshine 发表于 2021-3-14 20:55
测试了,可以算乘积。希望增加乘积计算后,替换文本功能,这样可以计算后直接替换原文本,就非常好了。
(defun c:t()
(setvar "cmdecho" 0)
(prompt "\n请选择计算式左侧列")
(setq left1(ssget '((0 . "text"))))
(setq lt1(sslength left1))
(setq i 0)
(prompt "\n请选计算式择右侧列")
(setq right1(ssget '((0 . "text"))))
(prompt "\n请选择乘积列")
(setq lr1(ssget '((0 . "text"))))
(repeat lt1
(setq rt1(sslength right1))
(setq j 0)
(setq ent(entget (ssname left1 i)))
(setq l-pt(cdr (assoc 10 ent)))
(setq txth(cdr (assoc 40 ent)))
(setq l-pt-x(car(cdr (assoc 10 ent))))
(setq l-pt-y(cadr(cdr (assoc 10 ent))))
(setq ltxt(cdr (assoc 1 ent)))
(repeat rt1
(setq rent(entget (ssname right1 j)))
(setq r-pt(cdr (assoc 10 rent)))
(setq r-pt-x(car(cdr (assoc 10 rent))))
(setq r-pt-y(cadr(cdr (assoc 10 rent))))
(setq rtxt(cdr (assoc 1 rent)))
(setq lrt1(sslength lr1))
(if (= l-pt-y r-pt-y)
(progn
(setq x1(rtos (* (atof ltxt) (atof rtxt)) 2 1))
(setq k 0)
(repeat lrt1
(setq lrent(entget (ssname lr1 k)))
(setq lrpt(cdr (assoc 10 lrent)))
(setq lr-pt-x(car(cdr (assoc 10 lrent))))
(setq lr-pt-y(cadr(cdr (assoc 10 lrent))))
(if (= r-pt-y lr-pt-y)
(progn
(setq lrtxt(cdr (assoc 1 lrent)))
(setq ntxt(subst (cons 1 x1)(assoc 1 lrent) lrent))
(entmod ntxt)
)
)
(setq k(1+ k))
)
)
)
(setq j(1+ j))
)
(setq i(1+ i))
)
(setvar "cmdecho" 1)
)
wchsunshine
发表于 2021-3-25 20:35:24
坐等 大师优化下
再见熊猫衣服
发表于 2021-3-26 11:17:45
这个,不知道是谁做的哦。
bssurvey
发表于 2021-3-26 14:50:49
wchsunshine 发表于 2021-3-25 20:35
坐等 大师优化下
str3 (rtos (* str1 str2) 2 1);小數點位數就是3改成1
但要注意的是,因為第一列、第二列及第三列都沒有做順序的比較,有時會產生錯亂的情形
xtjd
发表于 2021-6-28 13:55:52
框选一次即可,先按y轴排列取3项成表,再按x轴排列取前2项乘积
bai2000
发表于 2021-6-30 17:49:32
四列相剩怎么办?
wchsunshine
发表于 2024-8-17 18:38:30
vitalgg 发表于 2021-3-10 13:17
我微信只聊天,偶尔看朋友圈,能把其它的游戏,看一看之类的删了吗?
这个lisp运行命令是哪个 ?@m吗?
vitalgg
发表于 2024-8-18 15:27:05
wchsunshine 发表于 2024-8-17 18:38
这个lisp运行命令是哪个 ?@m吗?
执行安装代码
安装成功后在命令行输入中文"多列运算"
或 @P 安装数学工具。后到@lisp菜单中找
金鹅起飞
发表于 2024-9-30 09:17:59
本帖最后由 金鹅起飞 于 2024-9-30 09:21 编辑
xtjd 发表于 2021-6-28 13:55
框选一次即可,先按y轴排列取3项成表,再按x轴排列取前2项乘积
xtjd 大师您好!我下载您的插件使用后觉得非常好。有没有办法改动下,可以很多列(比如60列或以上)都可以使用,框选第一列作为被乘数,再选择乘数后,得到计算结果,这样就非常完美了:lol