大家好,
我试图从对象的边界框中找到一些关键点(请参见代码中的图)。
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;
- ; x - points to find:
- ; TopLeft, MiddleLeft,
- ; BottomLeft; TopCenter, MiddleCenter,
- ; BottomCenter; TopRight, MiddleRight, BottomRight
- ;
- ; TC
- ; /
- ; TL-> x**********x**********x <- TR
- ; * *
- ; * *
- ; * *
- ; ML-> x * <- MC x <- MR
- ; * *
- ; * *
- ; * *
- ; BL-> x**********x**********x <- BR
- ; /
- ; BC
- ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun C:test (/ oldPDM ent vla-obj bbox mn mx)
- (if
- (setq ent (car (entsel "\nPick an entity")))
- (progn
- (setq oldPDM (getvar 'PDMODE))
- (setvar 'PDMODE 35)
- (setq vla-obj (vlax-ename->vla-object ent))
- (setq bbox (vla-getboundingbox vla-obj 'mn 'mx))
- ; (setq TL)
- ; (setq ML)
- (setq BL (trans (vlax-safearray->list mn) 0 1) )
- (setq TR (trans (vlax-safearray->list mx) 0 1) )
- ; (setq MR)
- ; (setq BR)
- ; (setq TC)
- ; (setq MC)
- ; (setq BC)
-
- ; Perform Check:
- (point BL)
- (point TR)
-
- (setvar 'PDMODE oldPDM)
- );progn
- );if
- (princ)
- );defun
- ; LM:
- (defun Point (pt)
- (entmakex
- (list
- (cons 0 "POINT")
- (cons 10 pt)
- )
- )
- )
知道对角线的角度和长度并使用正弦和余弦函数可能会使任务变得轻松,但我已经有一段时间没有练习数学了,当涉及到弧度时,我有点困惑。
编辑:
更好的主意:为什么不做这样的事?,并为您获得学分:
- ; Define Sub-function that returns assoc list
- ; input: entityname
- ; (ent / TL ML BL TC MC BC TR MR BR)
- ; return example:
- ; ((TL . ptx) (ML . ptx) (BL . ptx) (TC . ptx) (MC . ptx) (BC . ptx) (TR . ptx) (MR . ptx) (BR . ptx))
- ; ptx - coordinates of the point
|