试试这个:
唯一的问题是,参考不是一条线,而是一个动态块。
-
- (defunc:AlgnDyn (/ adoc a baseX BaseXBlock MoveXVal MoveXBlock)
- ;; pbe Apr2011 ;;
- (vl-load-com)
- (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
- (setq a (car (entsel "\nSelect Reference Dynamic Block:")))
- (setq baseX
- (variant-value
- (vla-get-value
- (nth
- 15
- (vlax-invoke
- (vlax-ename->vla-object a)
- 'GetDynamicBlockProperties
- )
- )
- )
- )
- BaseXBlock
- (car (cdr (assoc 10 (entget a))))
- )
- (setq MoveXBlock
- (mapcar
- '(lambda (j) (car (cdr (assoc 10 (entget j)))))
- (vl-remove-if
- 'listp
- (mapcar
- 'cadr
- (ssnamex (ssget ":L" '((0 . "INSERT") (66 . 1))))
- )
- )
- )
- )
- (vlax-for
- Dblks (vla-get-activeselectionset adoc)
- (setq MoveXVal
- (car
- (vlax-safearray->list
- (variant-value (vla-get-insertionpoint Dblks))
- )
- )
- )
- (vla-put-value
- (nth 15 (vlax-invoke Dblks 'GetDynamicBlockProperties))
- (+ (- BaseXBlock MoveXVal) baseX)
- )
- )
- (princ)
- )
用法:
命令:AlgnDyn
选择参考动态块:
选择对象:
这段代码专门针对您的区块(光纤标记管sta)编写
希望这有帮助
|