;;----------------=={ Add Objects to Block }==----------------;;
;; ;;
;; Adds all objects in the provided SelectionSet to the ;;
;; definition of the specified block. ;;
;;------------------------------------------------------------;;
;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;
;;------------------------------------------------------------;;
(defun LM:AddObjectstoBlock ( doc block ss / lst mat )
(setq lst (LM:ss->vla ss)
mat (LM:Ref->Def block)
mat (vlax-tmatrix (append (mapcar 'append (car mat) (mapcar 'list (cadr mat))) '((0. 0. 0. 1.))))
)
(foreach obj lst (vla-transformby obj mat))
(vla-CopyObjects doc (LM:SafearrayVariant vlax-vbobject lst)
(vla-item (vla-get-Blocks doc) (cdr (assoc 2 (entget block))))
)
(foreach obj lst (vla-delete obj))
(vla-regen doc acAllViewports)
Я впервые вижу такой синтаксис, используемый в AutoLISP.
Я пытаюсь получить какое-то объяснение того, что на самом деле означает "LM:"
.
Использование "Ref->"
тоже вопрос для меня. "Ref"
, похоже, не определен, поэтому кажется, что он каким-то образом является частью системы, хотя я не смог вытащить никакой документации, описывающей такое использование "Ref->"
.
Почему доступ к локальной переменной ss
осуществляется с помощью "LM:ss->"
?
Спасибо.