Hi All
How to Add selection Set to block which insert scale is not 1:1 , don't change the selected objects's Location & size .
Here's a rough code to add selection set to block which inserted by 1:1 sc .
(defun ax:AddObjectsToBlock (blk ss / doc blkref blkdef inspt refpt ss-obj-list)
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object))
blkref (vlax-ename->vla-object blk)
blkdef (vla-Item (vla-get-Blocks doc) (vla-get-Name blkref))
inspt (vlax-variant-value (vla-get-InsertionPoint blkref))
refpt (vlax-3d-point '(0 0 0))
)
(setq ss-obj-list nil)
(foreach en (wjm_ss2lst ss)
(setq ss-obj-list (cons (vlax-ename->vla-object en) ss-obj-list))
)
(setq ss-obj-list
(vlax-make-variant
(vlax-safearray-fill
(vlax-make-safearray
vlax-vbobject
(cons 0 (1- (length (wjm_ss2lst ss))))
)
ss-obj-list
)
)
)
(foreach en (wjm_ss2lst ss)
(setq obj (vlax-ename->vla-object en))
(vla-Move obj inspt refpt)
)
(vla-CopyObjects doc ss-obj-list blkdef)
(foreach en (wjm_ss2lst ss)
(setq obj (vlax-ename->vla-object en))
(vla-Delete obj)
)
(princ)
)
(defun wjm_ss2lst (ss / i e lst)
(if (= (type ss) 'PICKSET)
(progn
(setq i -1)
(while (setq e (ssname ss (setq i (1+ i))))
(if (= (type e) 'ENAME) (setq lst (cons e lst)) nil)
)
lst
)
nil
)
)
I've uploaded the test drawing .