大家好,
我正在编写一个例程,将图纸空间中所有绘制的对象从drawingframe右下方移动到点0,0。我必须存储这一点,以便接下来可以使用move命令使用它。
感谢您的输入,以获得一些像样的编码。。
检查
http://www.lee-mac.com/ssboundingbox.html
- ;; Selection Set Bounding Box - Lee Mac
- ;; Returns a list of the lower-left and upper-right WCS coordinates of a
- ;; rectangular frame bounding all objects in a supplied selection set.
- ;; s - [sel] Selection set for which to return bounding box
- (defun LM:ssboundingbox ( s / a b i m n o )
- (repeat (setq i (sslength s))
- (if
- (and
- (setq o (vlax-ename->vla-object (ssname s (setq i (1- i)))))
- (vlax-method-applicable-p o 'getboundingbox)
- (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list o 'a 'b))))
- )
- (setq m (cons (vlax-safearray->list a) m)
- n (cons (vlax-safearray->list b) n)
- )
- )
- )
- (if (and m n)
- (mapcar '(lambda ( a b ) (apply 'mapcar (cons a b))) '(min max) (list m n))
- )
- )
- (defun c:test ( / b s )
- (if
- (and
- (setq s (ssget))
- (setq b (LM:ssboundingbox s))
- )
- (entmake
- (append
- '(
- (000 . "LWPOLYLINE")
- (100 . "AcDbEntity")
- (100 . "AcDbPolyline")
- ; MAKE THE POLYLINE ON DEFPOINTS
- (090 . 4)
- (070 . 1)
- )
- (mapcar '(lambda ( x ) (cons 10 (mapcar '(lambda ( y ) ((eval y) b)) x)))
- '(
- (caar cadar)
- (caadr cadar) ; THIS IS UNDER RIGHT, HOW TO STORE THIS POINT AS PAPER_ORIGIN?
- (caadr cadadr)
- (caar cadadr)
- )
- )
- )
- )
- )
- (COMMAND "MOVE" "ALL" ""
-
- (caadr cadar) ; THIS IS UNDER RIGHT, STORED POINT FOR PAPER_ORIGIN
-
-
- "0,0" "")
- (princ)
- )
- (vl-load-com)
|