明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1969|回复: 9

请大家帮忙编一个程序

[复制链接]
发表于 2004-2-19 22:02:00 | 显示全部楼层 |阅读模式



帮我做一个程序,把相同的导线型号的数量相加,如BLV-35/38,BLV-35/120,把二全本、相加,得158,请大家帮忙了,在下感激不尽

本帖子中包含更多资源

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

x
发表于 2004-2-20 08:49:00 | 显示全部楼层
这些线有什么特征?就线的本身
发表于 2004-2-20 15:34:00 | 显示全部楼层
下面的程序已测试通过,供参考: (defun c:dxcd(/ )
(setq ss(ssget "x" '((0 . "MTEXT"))))
(setq sn(sslength ss))
(setq dxtab nil i 0)

(while(< i sn)
(setq si(ssname ss i)
str(cdr(assoc 1 (entget si)))
)
(setq pos nil)
(if(< (strlen str) 15)
(setq pos(vl-string-position (ascii "/") str))
)
(if pos
(progn
(setq xx(substr str 1 pos) cd(substr str (+ pos 2)) cd(atof cd))
(setq dxlst(assoc xx dxtab))
(if dxlst
(progn
(setq cd(+ (cdr dxlst) cd))
(subst (cons xx cd) dxlst dxtab)
)
(setq dxtab(append dxtab (list(cons xx cd))))
)
)
)
(setq i(1+ i))
)
(princ "\n统计结果")
(princ "\n-----------------------")
(princ "\n导线型号 导线长度")
(princ "\n-----------------------")

(setq i 0)
(while(< i (length dxtab))
(setq dxlst(nth i dxtab))
(princ (strcat "\n" (car dxlst) " " (rtos (cdr dxlst) 2 2)))
(setq i(1+ i))
)
(princ "\n-----------------------")
(princ)
)

下面是运行结果:
Command: dxcd 统计结果
-----------------------
导线型号 导线长度
-----------------------
LGJ-95 690.5
BLV-35 2873
BLV-50 1482.5
BLV-70 252
LGJ-70 125
LGJ-120 92
-----------------------
 楼主| 发表于 2004-2-20 23:07:00 | 显示全部楼层
多谢多谢,可我不懂怎么用?能教我使用否?OICQ:52001189
发表于 2004-2-21 14:41:00 | 显示全部楼层
該程序檔案命名 ***.lsp         ***為自定       


command:下輸入appload         或 ap


載入檔案,執行dxcd
 楼主| 发表于 2004-2-22 15:18:00 | 显示全部楼层
可我执行得下面的数字,和楼上的不一样 命令: dxcd
统计结果
-----------------------
导线型号 导线长度
-----------------------
LGJ-95 52.5
BLV-35 47.5
BLV-50 21
BLV-70 11.5
LGJ-70 38
LGJ-120 48
-----------------------
发表于 2004-2-23 12:51:00 | 显示全部楼层
是程序的第21行没有写全,下面已改过。对不起。
(defun c:dxcd(/ )
(setq ss(ssget "x" '((0 . "MTEXT"))))
(setq sn(sslength ss))
(setq dxtab nil i 0)

(while(< i sn)
(setq si(ssname ss i)
str(cdr(assoc 1 (entget si)))
)
(setq pos nil)
(if(< (strlen str) 15)
(setq pos(vl-string-position (ascii "/") str))
)
(if pos
(progn
(setq xx(substr str 1 pos) cd(substr str (+ pos 2)) cd(atof cd))
(setq dxlst(assoc xx dxtab))
(if dxlst
(progn
(setq cd(+ (cdr dxlst) cd))
(setq dxtab(subst (cons xx cd) dxlst dxtab));改动的行
)
(setq dxtab(append dxtab (list(cons xx cd))))
)
)
)
(setq i(1+ i))
)
(princ "\n统计结果")
(princ "\n-----------------------")
(princ "\n导线型号 导线长度")
(princ "\n-----------------------")

(setq i 0)
(while(< i (length dxtab))
(setq dxlst(nth i dxtab))
(princ (strcat "\n" (car dxlst) " " (rtos (cdr dxlst) 2 2)))
(setq i(1+ i))
)
(princ "\n-----------------------")
(princ)
)
 楼主| 发表于 2004-2-24 12:23:00 | 显示全部楼层
谢谢,我试试看
 楼主| 发表于 2004-2-24 12:33:00 | 显示全部楼层
可以了谢谢
 楼主| 发表于 2004-3-2 19:05:00 | 显示全部楼层
还有一个问题想请教,假如把“/”换成“\”程序如何改动?还有在图纸当中统计如“方框4”中各个方框数字的总和?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 17:50 , Processed in 0.279080 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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