图形最大边界
各位大虾,请问这个lisp程序该怎么写,用什么函数;根据左边图形的最大边界线(右图中的小长方形),画一个方形(右图红色),使该红方形与小方形(右图)每边最小距离3mm以上,且保证红方形的每边长度为0.5的N倍(N为整数)。请 各位指教,多谢
外框线前不久才讨论过....
----------------------------------
每边长度为0.5的N倍
Command: (/ (fix (* (+ 5.01 0.5) 2)) 2.0)
5.5
Command: (/ (fix (* (+ 5.51 0.5) 2)) 2.0)
6.0
Command: (/ (fix (* (+ 5.49 0.5) 2)) 2.0)
5.5
Command: (/ (fix (* (+ 5.99 0.5) 2)) 2.0)
6.0 呵呵,我是新注册的,多谢你的解答 ANDYHON,能发个链接吗,找了,但没找到,多谢 学习了,谢谢 楼主怎么搞的,前几天刚有人讨论过这个,你找找看呀,两个星期内的贴子都有的入块画外形程序了 ..但没找到...
只是有个印象耳
So,链接您得寻觅哩 以前收集的,可能有用。
;By Longxin 明经通道 2005.06
;;取得实体外矩形框
;;例:(getbox 图元名)
;;返回:((x1 y1 z1)_min (x2 y2 z2)_max)
(defun getbox (e1 / obj minpoint maxpoint)
(setq obj (vlax-ename->vla-object e1)) ;转换图元名
(vla-GetBoundingBox obj 'minpoint 'maxpoint)
;取得包容图元的最大点和最小点
(setq minpoint (vlax-safearray->list minpoint)) ;把变体数据转化为表
(setq maxpoint (vlax-safearray->list maxpoint)) ;把变体数据转化为表
;;(command "box" minpoint maxpoint 2)
(setq obj (list minpoint maxpoint))
)
找好久都找不到,就要2D的,不要3D的!选几个线和几个其它的图元,画出个最大外框!哎 支持选择集的,自已扩展一下就可以了
(setq testSS (ssget))
(if testSS
(progn
(vl-load-com)
(setq Obj (vlax-ename->vla-object (ssname testSS 0)))
(vla-GetBoundingBox obj 'minpoint 'maxpoint)
(setq minX (car (vlax-safearray->list minpoint)))
(setq minY (cadr (vlax-safearray->list minpoint)))
(setq maxX (car (vlax-safearray->list maxpoint)))
(setq maxY (cadr (vlax-safearray->list maxpoint)))
(setq index 0)
(while (< index (sslength testSS))
(setq Obj (vlax-ename->vla-object (ssname testSS index)))
(vla-GetBoundingBox obj 'minpoint 'maxpoint)
(setq #minX (car (vlax-safearray->list minpoint)))
(setq #minY (cadr (vlax-safearray->list minpoint)))
(setq #maxX (car (vlax-safearray->list maxpoint)))
(setq #maxY (cadr (vlax-safearray->list maxpoint)))
(if (<= #minX minX) (setq minX #minX))
(if (<= #minY minY) (setq minY #minY))
(if (>= #maxX maxX) (setq maxX #maxX))
(if (>= #maxY maxY) (setq maxY #maxY))
(setq index (1+ index))
)
(setq MinPoint (list minX minY))
(setq MaxPoint (list maxX maxY))
(vl-cmdf "RECTANG" minPoint MaxPoint)
)
)
页:
[1]
2