本帖最后由 llsheng_73 于 2013-11-6 09:48 编辑
经过实验,可以在粘贴前得到最后一个图元(setq a1(entlast))
粘贴后
(while(entnext(car a1))(setq a1(append (list(entnext(car a1))) a1)))(setq a1(cdr(reverse a1)))
这样就得到了全部粘贴进来的图元,现在我们可以对它求包容盒,这个可以用黄瓜兄的图元表求包容盒函数
这样可以求出a1的左下角和右上角,就能够用zoom 的w选项把屏幕放到了刚好能完全显示粘贴进去的图元
 - (defun enlstbox(enlst / enma enmi ll ur);图元名表包围盒
- (mapcar'(lambda(x)
- (vla-getboundingbox (vlax-ename->vla-object x) 'll 'ur)
- (setq enma (cons (vlax-safearray->list ll) enma)
- enmi (cons (vlax-safearray->list ur) enmi)))enlst)
- (mapcar'(lambda(a b)(apply'mapcar(cons a b)))'(max min)(list enma enmi))
- );;;该函数由wowan1314分享
-
- (defun c:TT()
- (command "U")
- (command "pasteorig")
- (setq a1(list(entlast))
- (while(entnext(car a1))(setq a1(append (list(entnext(car a1))) a1)))
- ;;;这里可以加入对它们的一些处理方法如亮显等....
- (setq a1(cdr(reverse a1))
- )
- (setq pt(enlstbox a1))
- (commad "ZOOM" "W" (car pt)(cadr pt))
- )
-
|