明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5666|回复: 18

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

[复制链接]
发表于 2013-7-5 21:17:13 | 显示全部楼层 |阅读模式
本帖最后由 scream2658 于 2013-7-5 21:20 编辑

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


本帖子中包含更多资源

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

x
发表于 2023-10-31 12:36:15 | 显示全部楼层

大哥,你这是什么字体呀,cad出来的是乱码的
发表于 2024-1-7 21:37:16 | 显示全部楼层
要是能导入excel就好了。
发表于 2024-1-8 13:29:26 | 显示全部楼层
支持分享,谢谢!
发表于 2013-7-5 21:23:09 来自手机 | 显示全部楼层
建议弄出三角形……圆形…平行四边形……扇形……等
发表于 2013-7-5 22:01:50 | 显示全部楼层
一个星期就如此了,不错了,感谢共享
发表于 2013-7-5 22:37:25 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2014-2-27 22:00 编辑
  1. ;;;统计相同矩形边长的数量.
  2. ;;;编写日期2013-07-05
  3. ;;;编写: CADMAN
  4. ;;子函数 (求矩形边长)   
  5. (defun qbc (pts / b h)
  6. (setq b (distance (car pts) (cadddr pts)))
  7. (setq h (distance (car pts) (cadr pts)))
  8. (cons (max b h) (min b h))
  9. );结束qbc
  10. (defun c:tg ( / bclst pts ss el bc_new i p2 p3 m x1 x2)
  11. (princ "\n请框选矩形:")
  12. (setq ss (ssget '((0 . "LWPOLYLINE") (90 . 4))))
  13. (setq i 0 bclst nil pts nil)
  14. (repeat (sslength ss)
  15.   (setq el (entget (ssname ss i)))
  16.   (setq pts nil)
  17.   (foreach pt el (if (= (car pt) 10) (setq pts (cons (cdr pt) pts))))      
  18.   (setq bclst (cons (qbc pts) bclst))
  19.   (setq i (1+ i))
  20. );repeat
  21. (setq bc_new nil)
  22. (while bclst
  23.   (setq m (car bclst) x1 (length bclst))
  24.   (setq bclst (vl-remove m bclst))
  25.   (setq x2 (length bclst))
  26.   (setq n (- x1 x2))
  27.   (setq bc_new (cons (list m n) bc_new))
  28. )
  29. (setq p2 (getpoint "\起始位置"))
  30. (setq p3 (polar p2 0 3000))
  31. (command "_.TEXT" "c" (polar p2 (* pi 0.5) 800) "500" "0" "矩形边长");指定书写标题的位置
  32. (command "_.TEXT" "c" (polar p3 (* pi 0.5) 800) "500" "0" "数量")
  33. (foreach bg bc_new                                                      ;设定重复次数为新表的长度
  34.   (command "_.TEXT" "c" p2 "400" "0" (strcat (rtos (car (car bg)) 2)"x" (rtos (cdr (car bg))2)))      
  35.   (command "_.TEXT" "c" p3 "400" "0" (cadr bg))
  36.   (setq p2 (polar p2 (* pi 1.5) 800))
  37.   (setq p3 (polar p2 0 3000))
  38. )
  39. (princ)
  40. )
 楼主| 发表于 2013-7-5 22:54:50 | 显示全部楼层
ZZXXQQ 发表于 2013-7-5 22:37

版主好心人哪。你这样一优化,确实流畅了不少。谢谢!非常感谢!
发表于 2013-7-6 08:23:33 | 显示全部楼层
支持一一下!
发表于 2013-7-17 15:07:47 | 显示全部楼层
支持一下
发表于 2013-12-27 09:42:37 | 显示全部楼层
好东西,试用下。谢谢
发表于 2013-12-27 10:27:32 | 显示全部楼层
ZZXXQQ:WIN7.64位,autocad2010加载程序后提示语法错误。
发表于 2013-12-27 17:03:41 | 显示全部楼层
yaya-54 发表于 2013-12-27 10:27
ZZXXQQ:WIN7.64位,autocad2010加载程序后提示语法错误。

第十三行
(setq i 0 bclst nil pts nil)

评分

参与人数 1明经币 +1 收起 理由
ZZXXQQ + 1 赞一个!

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-26 00:23 , Processed in 0.445719 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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