The functions posted so far rely on a number of assumptions:
All dynamic block properties returned by the ActiveX getdynamicblockproperties method are either Angle or Distance parameters (in reality, there will also be many origin parameters)
There are equal numbers of Angle & Distance parameters, perfectly paired
As such, if you wanted to be certain that you were pairing a parameter named "Angle1" with a parameter named "Distance1" and so on, you may need to use somewhat uglier code such as the following:
(defun getdynprops ( blk / ang dis nme )
(foreach prp (reverse (vlax-invoke blk 'getdynamicblockproperties))
(setq nme (strcase (vla-get-propertyname prp) t))
(cond
( (wcmatch nme "angle#*")
(setq ang (cons (cons nme (vlax-get prp 'value)) ang))
)
( (wcmatch nme "distance#*")
(setq dis (cons (cons nme (vlax-get prp 'value)) dis))
)
)
)
(vl-remove-if-not 'cadr
(mapcar '(lambda ( a ) (list a (assoc (strcat "distance" (substr (car a) 6)) dis))) ang)
)
)