试试看,用9乘以任意整数。。
- (defun c:AArr (/ _Positions source atts ref pts ptref refang en i)
- ;; pBe30Apr2013 ;;
- (vl-load-com)
- (defun _Positions (e lst p ang / lst v vals)
- (mapcar (function
- (lambda (at)
- (setq
- vals (list (vla-get-tagstring at) (vlax-get at 'Insertionpoint))
- )
- (if (and lst (setq v (assoc (car vals) lst)))
- (vlax-invoke
- at
- 'Move
- (Cadr vals)
- (polar p (+ (cadr v) ang) (caddr v))
- )
- vals
- )
- )
- )
- (vlax-invoke
- (if (eq (type e) 'ENAME)
- (vlax-ename->vla-object e)
- e
- )
- 'GetAttributes
- )
- )
- )
- (if (and (princ "\nSelect Attribute Block for Reference: ")
- (setq source (ssget "_:S" '((0 . "INSERT") (66 . 1))))
- (princ "\nSelect Blocks to process:")
- (setq atts
- (ssget
- "_:L"
- (list
- '(0 . "INSERT")
- '(66 . 1)
- (cons 2
- (cdr (assoc 2 (entget (setq source (ssname source 0)))))
- )
- )
- )
- )
- )
- (progn
- (setq ref (vlax-get (setq source (vlax-ename->vla-object source))
- 'Insertionpoint
- )
- refang (vla-get-rotation source)
- )
- (setq pts (_Positions source nil nil nil))
- (setq ptref (mapcar '(lambda (p_)
- (list (car p_)
- (angle ref (cadr p_))
- (distance (cadr p_) ref)
- )
- )
- pts
- )
- )
- (repeat (setq i (sslength atts))
- (setq en (vlax-ename->vla-object (ssname atts (setq i (1- i)))))
- (_Positions
- en
- ptref
- (vlax-get en 'Insertionpoint)
- (- (vlax-get en 'Rotation) refang)
- )
- )
- )
- )
- (princ)
- )
|