明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5910|回复: 16

[已解答] 请求框选给一组图元中的每一个加最小包围盒的代码

[复制链接]
发表于 2013-7-23 19:04 | 显示全部楼层 |阅读模式
请求框选给一组图元中的每一个加最小包围盒的代码。
我就是想给选择集中每一个图元都套一个方框,仅此而已。
发表于 2013-7-23 19:40 | 显示全部楼层
本帖最后由 wowan1314 于 2013-7-23 19:45 编辑

试试。
  1. (defun c:t11 (/ enbox ss a en p12)
  2.     (defun enbox (ename / ll ur)
  3.         (vla-getboundingbox (vlax-ename->vla-object ename) 'll 'ur)
  4.         (mapcar 'vlax-safearray->list (list ll ur))
  5.     )
  6.     (setq ss (ssget) a -1)
  7.     (if ss
  8.         (while
  9.             (setq en
  10.                 (ssname ss
  11.                     (setq a
  12.                         (1+ a)
  13.                     )
  14.                 )
  15.             )
  16.             (setq p12 (enbox en))
  17.             (command "rectang" (car p12)(cadr p12))
  18.         )
  19.     )
  20. )
回复 支持 2 反对 0

使用道具 举报

发表于 2013-7-23 21:30 | 显示全部楼层
wowan1314 发表于 2013-7-23 19:40
试试。

有时会出错

本帖子中包含更多资源

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

x

点评

关闭捕捉。  发表于 2013-7-23 21:43
 楼主| 发表于 2013-7-24 08:32 | 显示全部楼层
试试我写的(拼凑并自写)
(defun C:bwzb (sel  / minPt maxPt obj minPt1 maxPt1)
  ; ; 来源:1楼第二套 求大侠帮我看看这个包围框的程序~-AutoLISP/Visual LISP 编程技术-CAD论坛-明经CAD社区 - Powered by Discuz!
; ; http://bbs.mjtd.com/forum.php?mod=viewthread&tid=100044
; 这东西在按顺序检查图元时大有作用,一个一个检查,不漏一个,也不重复一个。还可以从中间 任意位置开始检查
  (setq oce (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (vl-load-com)
  (setq minPt (vlax-make-safearray vlax-vbdouble '(0 . 2)))
  (setq maxPt (vlax-make-safearray vlax-vbdouble '(0 . 2)))
  (setq obj (vlax-ename->vla-object sel))
  (vla-GetBoundingBox obj 'minpt 'maxpt)
  (setq minPt1 (vlax-safearray->list minPt))
  (setq maxPt1 (vlax-safearray->list maxPt))
  (command ".rectang" minPt1 maxPt1 "")
  (setvar "cmdecho" oce)
)


(defun C:TT (/ q a)
  (setq Q (ssget))

(setq i 0)
(repeat (sslength Q);循环选择集长度
     (setq a (ssname q I))
  (c:bwzb a)
   
  (setq i (1+ i))
)
)
 楼主| 发表于 2013-7-24 08:41 | 显示全部楼层
试了“wowan1314”的代码,好用啊,还没有发现BUG
 楼主| 发表于 2013-7-24 09:29 | 显示全部楼层
请问,怎么表达这个问题已解决
发表于 2013-7-24 17:13 | 显示全部楼层
“wowan1314“回复真是及时,支持一下“wowan1314”
发表于 2013-7-24 19:54 | 显示全部楼层
本帖最后由 wowan1314 于 2013-7-24 19:57 编辑

简化下!
  1. (mapcar
  2.     '(lambda(x)
  3.         (vla-getboundingbox (vlax-ename->vla-object x) 'a1 'a2)
  4.         (command "rectang" (vlax-safearray->list a1)(vlax-safearray->list a2))
  5.     )
  6.     (cdr(reverse(mapcar 'cadr (ssnamex (ssget))
  7.             )
  8.         )
  9.     )
  10. )
发表于 2014-3-8 12:00 | 显示全部楼层
wowan1314 发表于 2013-7-24 19:54
简化下!

请教大侠,如果图元里面还有图元,能不能只计算每个图元的最大外形的最小包围盒,里面的不用计算,可能我这样描述的不是很清楚,我上个图说明一下。大侠的程式是上图的效果,我想要下图的效果。附图档,请大侠们有空帮忙看看,谢谢!


本帖子中包含更多资源

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

x
发表于 2014-3-10 09:15 | 显示全部楼层

本帖子中包含更多资源

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

x

点评

原来早就有了,大神哦  发表于 2014-5-11 16:56
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 00:23 , Processed in 0.208499 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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