热度 8|||
;;块内填充对象置后显示,CAD2005以上版本适用 By Gu_xl 2014.07.17
(defun c:tt (/ en sortents dict blockdef lst Doc)
(if (and (setq en (car (entsel "\n选择块:")))
(= "INSERT" (cdr (assoc 0 (setq en (entget en)))))
)
(progn
(cond
(
(not
(VL-CATCH-ALL-ERROR-P
(setq sortents
(VL-CATCH-ALL-APPLY
'vla-item
(list
(setq dict
(vla-GetExtensionDictionary
(setq blockdef
(vla-item
(vla-get-blocks
(setq doc
(vla-get-ActiveDocument
(vlax-get-acad-object)
)
)
)
(cdr (assoc 2 en))
)
)
)
)
"ACAD_SORTENTS"
)
)
)
)
)
)
((setq sortents
(VL-CATCH-ALL-APPLY
'vla-AddObject
(list dict "ACAD_SORTENTS" "AcDbSortentsTable")
)
)
)
)
(vlax-for obj blockdef
(if (= "AcDbHatch" (vla-get-objectname obj))
(setq lst (cons obj lst))
)
)
(if lst
(progn
(vla-MoveToBottom
sortents
(vlax-make-variant
(vlax-safearray-fill
(vlax-make-safearray
vlax-vbobject
(cons 0 (1- (length lst)))
)
lst
)
)
)
(vla-regen doc :vlax-true)
)
)
)
)
(princ)
)