明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: wchsunshine

所有明经币求 列乘积 lisp

[复制链接]
 楼主| 发表于 2021-3-14 20:59:17 | 显示全部楼层
bai2000 发表于 2021-3-11 21:25
我这有个,不知哪位大神的,你看看

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;两列连 ...

这个不错,就是小数位保留了3位,太多了,哪位大神可以改下吗?  
要求: 保留小数点位1位,数值尾部消零。
回复

使用道具 举报

发表于 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)                                            
)
回复

使用道具 举报

 楼主| 发表于 2021-3-25 20:35:24 | 显示全部楼层
坐等   大师优化下

回复

使用道具 举报

发表于 2021-3-26 11:17:45 | 显示全部楼层

这个,不知道是谁做的哦。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2021-3-26 14:50:49 | 显示全部楼层
wchsunshine 发表于 2021-3-25 20:35
坐等   大师优化下

str3 (rtos (* str1 str2) 2 1)  ;小數點位數就是3改成1
但要注意的是,因為第一列、第二列及第三列都沒有做順序的比較,有時會產生錯亂的情形
回复

使用道具 举报

发表于 2021-6-28 13:55:52 | 显示全部楼层
框选一次即可,先按y轴排列取3项成表,再按x轴排列取前2项乘积







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2021-6-30 17:49:32 | 显示全部楼层
四列相剩怎么办?
回复

使用道具 举报

 楼主| 发表于 2024-8-17 18:38:30 | 显示全部楼层
vitalgg 发表于 2021-3-10 13:17
我微信只聊天,偶尔看朋友圈,能把其它的游戏,看一看之类的删了吗?

这个lisp  运行命令是哪个 ?@m  吗  ?
回复

使用道具 举报

发表于 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列或以上)都可以使用,框选第一列作为被乘数,再选择乘数后,得到计算结果,这样就非常完美了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 16:55 , Processed in 0.182766 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表