Code:
;___________________________________________________________________________________________________________|
;
; Command line function to create a static block from a dynamic block with two distance parameters
;___________________________________________________________________________________________________________|
(defun C:StaticBlock (/ entSelection lstProperties objSelection ssSelections strBlockName strEffectiveName)
(if (and (princ "\nSelect Dynamic Block: ")
(setq ssSelections (ssget ":S:E" (list (cons 0 "insert"))))
(setq entSelection (ssname ssSelections 0))
(setq objSelection (vlax-ename->vla-object entSelection))
(setq strEffectiveName (vla-get-effectivename objSelection))
(setq lstProperties (DynamicPropertiesList objSelection))
(setq strBlockName (BlockNewName strEffectiveName lstProperties))
(not (tblobjname "block" strBlockName))
)
(vla-ConvertToStaticBlock objSelection strBlockName)
(princ "\nError Creating Static Block: ")
)
(princ)
)
;___________________________________________________________________________________________________________|
;
; Function to create a new block name from the old dynamic block name and the two distance parameters
;___________________________________________________________________________________________________________|
(defun BlockNewName (strEffectiveName lstProperties)
(strcat strEffectiveName
"-"
(vl-princ-to-string (cadr (nth 0 lstProperties)))
"x"
(vl-princ-to-string (cadr (nth 1 lstProperties)))
)
)
;___________________________________________________________________________________________________________|
;
; Function to Get a list of sublists including dynamic block property names and objects.
;___________________________________________________________________________________________________________|
(defun DynamicPropertiesList (objDynamicBlock
/
lstProperties
X
lstReturn
)
(if (and(vlax-property-available-p objDynamicBlock "IsDynamicBlock")
(= (vla-get-IsDynamicBlock objDynamicBlock) :vlax-true)
(setq lstProperties (vlax-invoke objDynamicBlock "GetDynamicBlockProperties"))
(setq lstReturn (mapcar '(lambda (x)(list (vlax-get X "propertyname") (vlax-get X "value"))) lstProperties))
)
(while (setq lstSublist (assoc "Origin" lstReturn))
(setq lstReturn (vl-remove lstSublist lstReturn))
)
)
lstReturn
)
(vl-load-com)