找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 小菜

[求助] [求助]:如何计算当前UCS下的实体包围盒?

[复制链接]
 楼主| 发表于 2007-2-1 08:35:49 | 显示全部楼层
我上面的说法也有点问题,点表包围盒这一步是多余的,直接变换就可以了,还是用程序说明问题吧,试一下就知道了
经过测试,用vla-rotate旋转实体的方法耗时是矩阵变换的5倍左右,效率不高。
eachy的程序我试了一下,有时候会出现:错误: Automation Error. Description was not provided,图见附件
[PHP]
(defun c:test (/ obj pts p1 p2)
  (setq obj (vlax-ename->vla-object (car(entsel))))
  (setq pts (ucsbndbox obj))
  (setq p1 (car pts) p2 (cadr pts)
        pts (list p1 (list (car p1) (cadr p2)) p2 (list (car p2) (cadr p1)))
  )
  (command "pline" (car pts) (cadr pts) (caddr pts) (last pts) "c")
)
(defun ObjBndBox (obj / ll ur)
  (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list obj 'll 'ur)))
          nil
         (list (vlax-safearray->list ll) (vlax-safearray->list ur))
  )
)
(defun ucsbndbox (obj / pts)  
(if (zerop (getvar "worlducs"))
  (progn
    (vla-TransformBy obj (ucs2wcs_matrix))
    (setq pts (objbndbox obj))
    (vla-TransformBy obj (wcs2ucs_matrix))
    pts
  )
  (objbndbox obj)
  )
)
(defun ucs2wcs_matrix ()
  (vlax-tmatrix
    (append
      (mapcar
        '(lambda (vector origin)
           (append (trans vector 1 0 t) (list origin))
         )
        (list '(1 0 0) '(0 1 0) '(0 0 1))
        (trans '(0 0 0) 0 1)
      )
      (list '(0 0 0 1))
    )
  )
)
(defun wcs2ucs_matrix ()
  (vlax-tmatrix
    (append
      (mapcar
        '(lambda (vector origin)
           (append (trans vector 0 1 t) (list origin))
         )
        (list '(1 0 0) '(0 1 0) '(0 0 1))
        (trans '(0 0 0) 1 0)
      )
      (list '(0 0 0 1))
    )
  )
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-2-1 13:02:05 | 显示全部楼层
晕 受不了了
凭什么斑主能贴图
俺就不能

小菜 没明白 你这两个函数得到的结果有什么不同
(setq pts (ucsbndbox obj))
(setq pts (ObjBndBox obj))

哦 终于搞明白你的意思了
WCS下 UCS下 晕了
可恶的论坛
无法看图也无法下载

。。。。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-2 08:57:02 | 显示全部楼层
eachy版主的程序有一点小错误,总体上是无比英明正确的,通过学习,把我的程序进行了简化,现在二者基本是一样的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 19:42 , Processed in 0.170773 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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