huisguiji 发表于 2023-4-11 08:30:13

请大佬帮忙修改一下

我是做柜子的,这个统计程序也是在本论坛下载的,现在想按我这行的使用要求请大佬帮忙修改一下规则
1 前面再加1列编号后面数据和数量可不可以成1行文字
2 大小按宽排一起,不是现在这样一条大一条小的200宽以内(含200)归小以上归大
3 宽200以内长度自动加20
4 排序按从左到右 上到下
5 这里统计还有0的,宽小于4的不统计

以下是代码

(defun qbc (pts / b h)
(setq b (distance (car pts) (cadddr pts)))
(setq h (distance (car pts) (cadr pts)))
(cons (max b h) (min b h))
);结束qbc
(defun c:tg ( / bclst pts ss el bc_new i p2 p3 m x1 x2)
(princ "\n请框选矩形:")
(setq ss (ssget '((0 . "LWPOLYLINE") (90 . 4))))
(setq i 0 bclst nil pts nil)
(repeat (sslength ss)
(setq el (entget (ssname ss i)))
(setq pts nil)
(foreach pt el (if (= (car pt) 10) (setq pts (cons (cdr pt) pts))))      
(setq bclst (cons (qbc pts) bclst))
(setq i (1+ i))
);repeat
(setq bc_new nil)
(while bclst
(setq m (car bclst) x1 (length bclst))
(setq bclst (vl-remove m bclst))
(setq x2 (length bclst))
(setq n (- x1 x2))
(setq bc_new (cons (list m n) bc_new))
)
(setq p2 (getpoint "\起始位置"))
(setq p3 (polar p2 0 400))
(command "_.TEXT" "c" (polar p2 (* pi 0.5) 140) "70" "0" "高*宽=");指定书写标题的位置
(command "_.TEXT" "c" (polar p3 (* pi 0.5) 140) "70" "0" "数量")
(foreach bg bc_new                                                      ;设定重复次数为新表的长度
(command "_.TEXT" "c" p2 "70" "0" (strcat (rtos (car (car bg)) 2)"*" (rtos (cdr (car bg))2)"="))      
(command "_.TEXT" "c" p3 "70" "0" (cadr bg))
(setq p2 (polar p2 (* pi 1.5) 140))
(setq p3 (polar p2 0 400))
)
(princ)
)

huisguiji 发表于 2023-4-23 11:48:51

怎么没有大佬来帮帮忙啊,自己顶顶了

SdlFreeCAD 发表于 2023-4-23 12:03:25

:lol QQ上发的ARX程序没有满足你的需求吗?

huisguiji 发表于 2023-4-23 15:40:13

SdlFreeCAD 发表于 2023-4-23 12:03
QQ上发的ARX程序没有满足你的需求吗?

没有:(,,,,,,,,,,,,,,,,,

SdlFreeCAD 发表于 2023-4-23 23:10:29

huisguiji 发表于 2023-4-23 15:40
没有,,,,,,,,,,,,,,,,,

哈哈,看来你比较喜欢lisp程序。 那就找lisp的高手帮你解决下吧。

huisguiji 发表于 2024-9-4 11:38:45

没有解决的帖子怎么删除呢
页: [1]
查看完整版本: 请大佬帮忙修改一下