Something like this
Code:
;___________________________________________________________________________________________________________|
;
; Written By: Peter Jamtgaard C.E., P.E., S.E. copyright 2019 All Rights Reserved
;___________________________________________________________________________________________________________|
;
; Any use by unauthorized person or business is strictly prohibited.
; Include Shorthand.lsp
;___________________________________________________________________________________________________________|
;___________________________________________________________________________________________________________|
;
; Comand line function list
;___________________________________________________________________________________________________________|
;* C:Augi5
;* Command line function to read a dynamic block and put height and width into an attributes block
;___________________________________________________________________________________________________________|
;
; General Function Header List
;___________________________________________________________________________________________________________|
; Function List Argument1 Argument2 Arguement3
;* (AttributeSublists objSelection)
;* Function to get attribute sublists ('tagstring 'textstring obj)
;* (DynamicPropertiesList objDynamicBlock)
;* Function to Get a list of sublists including dynamic block property names and objects.
;* (ErrorTrap symFunction)
;* Function to trap errors
;$ EndHeader
;___________________________________________________________________________________________________________|
;
; Command Line Function to change attributes to be width and height of dynamic block
;___________________________________________________________________________________________________________|
(defun C:Augi5 (/ entSelection
lstDynamics
lstOfSublists
lstSublist
objBlockInfill
objDynamicBlock
sngUnitHeight
sngUnitWidth
ssSelections
)
(and (princ "\nSelect Boundary Dynamic Block: ")
(setq ssSelections (ssget ":S:E" (list (cons 0 "insert"))))
(setq entSelection (ssname ssSelections 0))
(setq objDynamicBlock (vlax-ename->vla-object entSelection))
(setq lstDynamics (DynamicPropertiesList objDynamicBlock))
(setq sngUnitWidth (cadr (assoc "Unit Width" lstDynamics)))
(setq sngUnitHeight (cadr (assoc "Unit Height" lstDynamics)))
(setq ssSelections (ssget "x" (list (cons 0 "insert")(cons 2 "Infill_Row"))))
(setq entSelection (ssname ssSelections 0))
(setq objBlockInfill (vlax-ename->vla-object entSelection))
(setq lstOfSublists (AttributeSublists objBlockInfill))
(setq lstSublist (assoc "U_WIDTH" lstOfSublists))
(errortrap '(vla-put-textstring (caddr lstSublist) (rtos sngUnitWidth 2 2)))
(setq lstSublist (assoc "U_HEIGHT" lstOfSublists))
(errortrap '(vla-put-textstring (caddr lstSublist) (rtos sngUnitHeight 2 2)))
)
)
;___________________________________________________________________________________________________________|
;
; Function to get attribute sublists ('tagstring 'textstring obj)
;___________________________________________________________________________________________________________|
(defun AttributeSublists (objSelection / lstAttributes);
(if (and (= (vla-get-hasattributes objSelection) :vlax-true)
(setq lstAttributes (vlax-invoke objSelection "getattributes"))
)
(mapcar '(lambda (objAttribute) (list (strcase (vla-get-tagstring objAttribute))
(vla-get-textstring objAttribute)
objAttribute
)
)
lstAttributes
)
)
)
;___________________________________________________________________________________________________________|
;
; 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 (errortrap '(vlax-safearray->list
(variant-value
(vla-GetDynamicBlockProperties objDynamicBlock)
)
)
)
)
(setq lstReturn (mapcar '(lambda (x)(list (vla-get-propertyname X) (vlax-get X "value"))) lstProperties))
)
(while (setq lstSublist (assoc "Origin" lstReturn))
(setq lstReturn (vl-remove lstSublist lstReturn))
)
)
lstReturn
)
;___________________________________________________________________________________________________________|
;
; Function to trap errors
;___________________________________________________________________________________________________________|
(defun ErrorTrap (symFunction / objError result)
(if (vl-catch-all-error-p
(setq objError (vl-catch-all-apply
'(lambda (X)(set X (eval symFunction)))
(list 'result))))
nil
(if result result 'T)
)
)
(princ)
(vl-load-com)