You can modify the block definition.
Try this ...Code - Auto/Visual Lisp: [Select]
---- etc )
Ti conviene allegare un esempio di un blocco "prima" e "dopo".
Se ho ben capito, devi scalare i blocchi annidati in un blocco?
(defun c:Test (/ sc ss i sn en)
(if (and (setq sc (getdist "\n Specify The scale factor :"))
(setq ss (ssget "_:L" '((0 . "INSERT"))))
)
(repeat (setq i (sslength ss))
(setq sn (ssname ss (setq i (1- i))))
(setq en (tblobjname "BLOCK" (cdr (assoc 2 (entget sn)))))
(while (setq en (entnext en))
(vl-catch-all-apply
'vla-scaleEntity
(list (vlax-ename->vla-object en)
(vlax-3d-point (cdr (assoc 10 (entget en))))
sc
)
)
)
)
)
(command "_.regen")
(princ)
)
[\code]
Try this ...Code - Auto/Visual Lisp: [Select]
---- etc )
What should he do this lisp.
I've tried it in AutoCAD 2010 but did nothing :-(
(defun c:Test (/ sc ss i sn en)
(if (and (setq sc (getdist "\n Specify The scale factor :"))
(setq ss (ssget "_:L" '((0 . "INSERT"))))
)
(repeat (setq i (sslength ss))
(setq sn (ssname ss (setq i (1- i))))
(setq en (tblobjname "BLOCK" (cdr (assoc 2 (entget sn)))))
(while (setq en (entnext en))
(progn
(vl-catch-all-apply
'vla-scaleEntity
(list (vlax-ename->vla-object en)
(vlax-3d-point (list 0 0 0))
sc
)
)
)
)
)
)
(command "_.regen")
(princ)
)
(vl-load-com)
(vlax-3d-point (cdr (assoc 10 (entget en))))
(vlax-3d-point (list 0 0 0))
However in my case I do not have these situations.
No I never nested blocks ;-)
(defun c:test ( / e f i l n s )
(if
(and
(progn
(initget 6)
(setq f (getdist "\nScale Factor: "))
)
(setq s (ssget "_:L" '((0 . "INSERT"))))
)
(repeat (setq i (sslength s))
(if (not (member (setq n (cdr (assoc 2 (entget (ssname s (setq i (1- i))))))) l))
(progn
(setq l (cons n l)
e (tblobjname "block" n)
)
(while (setq e (entnext e))
(vl-catch-all-apply 'vlax-invoke (list (vlax-ename->vla-object e) 'scaleentity '(0.0 0.0 0.0) f))
)
)
)
)
)
(command "_.regen")
(princ)
)
(vl-load-com) (princ)
(setq f (getdist "\nScale Factor: "))
(initget 6)
(setq f (getdist "\nScale Factor: "))
(initget 3)
(setq f (getdist "\nScale Factor: "))
Code: [Select](setq f (getdist "\nScale Factor: "))
(getdist) will always return positive real number, so to prevent entering 0.0, you need (initget 2)
Command: (getdist "\nEnter a distance: ")
Enter a distance: -2
-2.0
...and to prevent entering ENTER - nil value, you need (initget 1)...
OK Lee, so I left (initget 6)... Here is my modification for my second question - though not tested thoroughly...