明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1110|回复: 9

[已解答] 关于CAD图纸筛选问题 ,求高手指导

[复制链接]
发表于 2014-11-20 16:16:46 | 显示全部楼层 |阅读模式
我是做钢结构的,在一张CAD零件图中,有异形件、有矩形件,我想快速把这两种零件筛选过滤出来,通过lisp编程可以解决吗?求高手解答下。附件为一张CAD零件图。

本帖子中包含更多资源

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

x
发表于 2014-11-20 21:32:14 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2014-11-29 08:40 编辑

找规律,分面积
  1. ;零件分组 明经 ZZXXQQ 2014.11.20
  2. (defun c:tt ()
  3. (setvar "CMDECHO" 0)
  4. (vl-load-com)
  5. (if (setq ss (ssget "X" '((0 . "ARC,LINE")(62 . 2)))) (progn
  6. (setq s1 (entlast) sslst (list))
  7. (command "_.PEDIT" "M" ss "" "Y" "J" "0.02" "")
  8. (if (setq ss (ssget "X" '((0 . "LWPOLYLINE") (90 . 4)))) (progn
  9. (repeat (setq i (sslength ss))
  10.   (setq en (ssname ss (setq i (1- i))))
  11.   (vla-getboundingbox (vlax-ename->vla-object en) 'p1 'p2)
  12.   (setq p1 (vlax-safearray->list p1) p2 (vlax-safearray->list p2))
  13.   (setq p1 (mapcar '- p1 '(15 25)) p2 (mapcar '+ p2 '(10 25)))
  14.   (command "_.ERASE" "C" p1 p2 "")
  15. )
  16. ))
  17. (while (setq s1 (entnext s1)) (setq sslst (cons s1 sslst)))
  18. (setq arealst (mapcar '(lambda (x) (vlax-curve-getArea(vlax-ename->vla-object x))) sslst))
  19. (setq alst (mapcar 'list arealst sslst))
  20. (setq alst (vl-sort alst '(lambda (a b) (< (car a) (car b)))))
  21. (setq tmplst (list))
  22. (setq aren (car alst))
  23. (setq ar (car aren))
  24. (setq enlst (cdr aren))
  25. (setq i 1)
  26. (foreach x (cdr alst)
  27. (setq ttlst (list i (cdr x)))
  28. (if (equal ar (car x) 1e-5)
  29.   (setq i (1+ i) enlst (append enlst (cdr x)))
  30.   (setq tmplst (append tmplst (list(list i enlst))) i 1 enlst (cdr x) ar (car x) ttlst (list))
  31. )
  32. )
  33. (setq tmplst (append tmplst (list(list i enlst))))
  34. (setq j 0)
  35. (foreach x tmplst
  36. (setq n (car x) j (1+ j))
  37. (foreach y (cadr x)
  38. (vla-getboundingbox (vlax-ename->vla-object y) 'pt1 'pt2)
  39. (setq pt1 (vlax-safearray->list pt1))
  40. (setq pt2 (vlax-safearray->list pt2))
  41. (setq pt (mapcar '-
  42. (mapcar '(lambda (a b) (/ (+ a b) 2)) pt1 (list (car pt2) (cadr pt1))) '(0 20)))
  43. (command "_.TEXT" "S" "Arial" "M" pt "2.5" "0"
  44.            (strcat "%%U共" (itoa n) "件,编号" (itoa j) "%%U"))
  45. )
  46. )
  47. ))
  48. (setvar "CMDECHO" 1)
  49. (princ)
  50. )
 楼主| 发表于 2014-11-26 16:16:33 | 显示全部楼层
谢谢你的答复,但是我运行了下,怎么出现错误,运行不出来啊。

点评

样图能运行  发表于 2014-11-27 09:15
 楼主| 发表于 2014-11-27 13:21:39 | 显示全部楼层
沙漠孤影 发表于 2014-11-26 16:16
谢谢你的答复,但是我运行了下,怎么出现错误,运行不出来啊。

我CAD2004一运行,怎么出现这样“错误: no function definition: VLAX-ENAME->VLA-OBJECT”的问题呀?求指点

点评

程序中已加上(vl-load-com),再试试  发表于 2014-11-27 20:11
 楼主| 发表于 2014-11-27 23:54:43 | 显示全部楼层
您好!这次可以运行了,谢谢你给与的帮助。运行的结果如图片所示,每个零件下面出现了新的一个编号。再麻烦你一下,请问是否可以实现经过lisp运行,CAD图中异形件异形件不动,把矩形件给删除了呢?期待你的回复,谢谢!!

本帖子中包含更多资源

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

x
发表于 2014-11-28 07:53:43 | 显示全部楼层
沙漠孤影 发表于 2014-11-27 23:54
您好!这次可以运行了,谢谢你给与的帮助。运行的结果如图片所示,每个零件下面出现了新的一个编号。再麻烦 ...

可以。
在(command "PEDIT" ...
之后加上
(if (setq ss (ssget "X" '((0 . "LWPOLYLINE") (90 . 4))))
(command "_.ERASE" ss "")
)
 楼主| 发表于 2014-11-28 14:33:56 | 显示全部楼层
ZZXXQQ 发表于 2014-11-28 07:53
可以。
在(command "PEDIT" ...
之后加上

谢谢你的答复,图片是删除矩形框运行出来的结果,对于我这初学者来说,真有点崇拜你这高手啊 !另外再问一下,通过lisp是否可以把矩形零件的标注线给删呢(即矩形件外轮廓没了,它自身的尺寸线是否也可以消除呢),还有异形件下重新编号的白色字体是否可以不显示呢,谢谢高手!求解答

本帖子中包含更多资源

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

x
发表于 2014-11-28 20:02:17 | 显示全部楼层
还有什么要求一次说完。
新写的字体可以放在一个图层中,将该图层关闭或冻结即可。
 楼主| 发表于 2014-11-28 22:21:07 | 显示全部楼层
ZZXXQQ 发表于 2014-11-28 20:02
还有什么要求一次说完。
新写的字体可以放在一个图层中,将该图层关闭或冻结即可。

不好意思,老麻烦您了!经过lisp运行后,要求删除矩形件的轮廓线及其标注,只保留原图纸中异形件的信息。如所传附件为期望得到的结果。再次麻烦了,求解答。

本帖子中包含更多资源

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

x

点评

程序改了,再试试。  发表于 2014-11-29 08:41
 楼主| 发表于 2014-12-1 23:40:59 | 显示全部楼层
沙漠孤影 发表于 2014-11-28 22:21
不好意思,老麻烦您了!经过lisp运行后,要求删除矩形件的轮廓线及其标注,只保留原图纸中异形件的信息。 ...

问题给解决了,真是太感谢了。在lisp方面,你真是专家啊,特佩服你真得好好的向你学习下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-23 19:33 , Processed in 0.176370 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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