明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 82|回复: 3

[提问] 如何准确获取块内对象包围盒?

[复制链接]
发表于 昨天 21:31 | 显示全部楼层 |阅读模式
遇到一个问题,块内对象的包围盒居然获取异常,请教下大佬们如何解决?


  1. (defun c:gg()
  2.   (setq blocks(vla-get-Blocks(vla-get-ActiveDocument(vlax-get-acad-object))))
  3.   (setq en(car(entsel "选取一个图元:")))
  4.   (setq obj(vlax-ename->vla-object en))
  5.   (if(setq blkDef(vla-Item blocks(vla-get-Name obj)))
  6.     (vlax-for x blkDef
  7.       (if(equal(get_rgb x)'(0 0 0))
  8.         (progn
  9.           (vla-put-Color x 2)
  10.           (vla-GetBoundingBox x 'minp 'maxp)
  11.           (setq box(list(vlax-safearray->list minp)(vlax-safearray->list maxp)))
  12.         )
  13.       )
  14.     )
  15.   )
  16.   (entmakex(list '(0 . "LINE")(cons 10 (car box))(cons 11(cadr box))))
  17.   (print a)
  18.   (princ)
  19. )
  20. ;---获取对象RGB值表
  21. (defun get_rgb(obj / c)
  22.   (setq c(vla-get-TrueColor obj))
  23.   (list
  24.     (vla-get-Red c)
  25.     (vla-get-Green c)
  26.     (vla-get-Blue c)
  27.   )
  28. )

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 昨天 21:37 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2025-5-16 21:39 编辑

如果你是敲C#我会建议你去看IFox,
包围盒错误无非就是类型需要单独处理,
不处理就直接try了之后动态收集类型名称存set上面,
再用set直接过滤下次类型名,已达不反复发生异常信息.

可是你敲Lisp,那就肉眼保证类型.

常出现异常的类型:
点,射线,参照线,0长度多段线,无内容文字,天正...以及利用这些成员组块...
这种不具备包围盒的图元
回复 支持 反对

使用道具 举报

发表于 昨天 23:32 来自手机 | 显示全部楼层
块属性直接获取包围盒,其它对象的包围盒坐标
回复 支持 反对

使用道具 举报

发表于 昨天 23:35 来自手机 | 显示全部楼层
wzg356 发表于 2025-5-16 23:32
块属性直接获取包围盒,其它对象的包围盒坐标

块属性直接获取包围盒,其它对象的包围盒坐标分别乘xyz比例再分别+块参照插入点坐标
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-17 06:45 , Processed in 0.143238 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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