Give the following a try. Note that Get-Dynprops is a general-use function I wrote some time ago, and C:MMDL has been revised only as much as I found necessary to make it work with my function (i.e. it has no error-handling, and is generally not robust). It may help you to get started, though...
Code:
;;=============================================================================================
;; GET-DYNPROPS CREATES AND RETURNS AN ASSOCIATION LIST OF THE PROPERTIES OF A REFERENCE OF A
;; DYNAMIC BLOCK (ASSOCIATED WITH PROPERTYNAME, FOR EACH PROPERTY). RETURNS NIL IF THE BLOCK
;; REFERENCED IS NOT DYNAMIC
(defun get-dynprops (blkins / CONS-X DYNLN DYNPROPARR DYNPROPLST
DYNPROPVAR N OUTLST PROPX PROPX-NM)
(cond ((equal (vla-get-isdynamicblock blkins) ':vlax-false) nil); first condition
((vl-catch-all-error-p
(setq dynpropvar
(vl-catch-all-apply
'vla-getdynamicblockproperties
(list blkins)
); vl-catch-all-apply
); setq
); vl-catch-all-error-p
nil
); second condition
(t
(setq dynproparr (vlax-variant-value dynpropvar)
dynproplst (vl-catch-all-apply 'vlax-safearray->list (list dynproparr))
dynln (cond ((vl-catch-all-error-p dynproplst) 0)
(t (length dynproplst))
); cond
n 0
); setq
(while (< n dynln)
(setq propx (nth n dynproplst)
propx-nm (vla-get-propertyname propx)
cons-x (cons propx-nm propx)
outlst (append outlst (list cons-x))
n (1+ n)
); setq
); while
); third condition
); cond
outlst
); defun
(defun c:mmdl ( / BLK BLKPROPS INPUT P1 WIDTHPROP)
(setq p1 (getpoint "\nPick Insertion Point ")
input 400
); setq
(command "-insert" "MM_DuctDraw_Straight" p1 "" "" "")
(setq blk (vlax-ename->vla-object (ssname (ssget "L") 0))
blkprops (get-dynprops blk)
widthprop (cdr (assoc "Width" blkprops))
); setq
(vla-put-value widthprop (vlax-make-variant (* input 1.0)))
(vla-regen (vla-get-activedocument (vlax-get-acad-object)) AcActiveViewport)
); defun