Salut
les commandes TOP et BOT définies ci-dessous affectent tous les espaces et tous les blocs.
(mapcar
(function
(lambda (cde fun)
(eval
(list
'defun
cde
'(/ ent doc blocks layer sort lst var)
'(vl-load-com)
(list
'and
'(setq
ent
(car
(entsel "\nSélectionnez un objet sur le calque cible: ")
)
)
'(setq
doc
(vla-get-ActiveDocument (vlax-get-acad-object))
blocks
(vla-get-Blocks doc)
layer
(cdr (assoc 8 (entget ent)))
)
'(not (vla-StartUndoMark doc))
(list
'vlax-for
'b
'blocks
'(or
(not
(vl-catch-all-error-p
(setq
sort
(vl-catch-all-apply
'vla-getObject
(list
(vla-getExtensionDictionary
b
)
"ACAD_SORTENTS"
)
)
)
)
)
(setq
sort
(vla-addObject
(vla-getExtensionDictionary
b
)
"ACAD_SORTENTS"
"AcDbSortentsTable"
)
)
)
'(setq lst nil)
'(vlax-for
obj
b
(if
(= (vla-get-Layer obj) layer)
(setq lst (cons obj lst))
)
)
(list
'if
'lst
(list
fun
'sort
'(vlax-make-variant
(vlax-safearray-fill
(vlax-make-safearray
vlax-vbObject
(cons 0 (1- (length lst)))
)
lst
)
)
)
)
)
)
'(vla-EndUndoMark doc)
'(vla-regen doc acActiveViewport)
'(princ)
)
)
)
)
'(c:top c:bot)
'(vla-MoveToTop vla-MoveToBottom)
)