scream2658 发表于 2013-7-5 21:17:13

菜鸟新手刚写的统计矩形边长和数量的LISP,求高手完善

本帖最后由 scream2658 于 2013-7-5 21:20 编辑

    买了猫老师的视频教程,看了一个星期的初级视频,也学着写了个LISP。当中也参考了论坛上几位高手的LISP程序。
现在奉献源码供大家参考。也帮忙完善下。 目前这个LISP还 有几个BUG,在处理非水平的矩形时,虽然边长相等,但是还是会误认为是单个的矩形。
运行的时候,命令行也提示有错误。在下真的是能力有限,没办法修改了。望各位高手指点下。


清水白粥 发表于 2023-10-31 12:36:15

ZZXXQQ 发表于 2013-7-5 22:37


大哥,你这是什么字体呀,cad出来的是乱码的

kzd2004 发表于 2024-1-7 21:37:16

要是能导入excel就好了。

THZL 发表于 2024-1-8 13:29:26

支持分享,谢谢!

flytoday 发表于 2013-7-5 21:23:09

建议弄出三角形……圆形…平行四边形……扇形……等

tianyi1230 发表于 2013-7-5 22:01:50

一个星期就如此了,不错了,感谢共享

ZZXXQQ 发表于 2013-7-5 22:37:25

本帖最后由 ZZXXQQ 于 2014-2-27 22:00 编辑

;;;统计相同矩形边长的数量.
;;;编写日期2013-07-05
;;;编写: CADMAN
;;子函数 (求矩形边长)   
(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 3000))
(command "_.TEXT" "c" (polar p2 (* pi 0.5) 800) "500" "0" "矩形边长");指定书写标题的位置
(command "_.TEXT" "c" (polar p3 (* pi 0.5) 800) "500" "0" "数量")
(foreach bg bc_new                                                      ;设定重复次数为新表的长度
(command "_.TEXT" "c" p2 "400" "0" (strcat (rtos (car (car bg)) 2)"x" (rtos (cdr (car bg))2)))      
(command "_.TEXT" "c" p3 "400" "0" (cadr bg))
(setq p2 (polar p2 (* pi 1.5) 800))
(setq p3 (polar p2 0 3000))
)
(princ)
)

scream2658 发表于 2013-7-5 22:54:50

ZZXXQQ 发表于 2013-7-5 22:37 static/image/common/back.gif


版主好心人哪。你这样一优化,确实流畅了不少。谢谢!非常感谢!

云中孤鹰 发表于 2013-7-6 08:23:33

支持一一下!

陈亚娣 发表于 2013-7-17 15:07:47

支持一下

yaya-54 发表于 2013-12-27 09:42:37

好东西,试用下。谢谢

yaya-54 发表于 2013-12-27 10:27:32

ZZXXQQ:WIN7.64位,autocad2010加载程序后提示语法错误。

edata 发表于 2013-12-27 17:03:41

yaya-54 发表于 2013-12-27 10:27 static/image/common/back.gif
ZZXXQQ:WIN7.64位,autocad2010加载程序后提示语法错误。

第十三行
(setq i 0 bclst nil pts nil)
页: [1] 2
查看完整版本: 菜鸟新手刚写的统计矩形边长和数量的LISP,求高手完善