In my libraries I like to have general functions to perform common processes.
Here is one that I thought you all might appreciate.
Converting stuff to vla-objects
Comments?
P=
Code:
;___________________________________________________________________________________________________________
;
; The Object function converts objects, dotted pairs, entitynames, entitylists, handles or objectid's to
; object references. Returns nil if unsuccessful.
; Written By: Peter Jamtgaard copyright 2014 all rights reserved.
;___________________________________________________________________________________________________________
(defun Object (value)
(if (or
(= (type value) 'vla-object)
(and
(or
value
(setq value (entsel "\nSelect object: "))
)
(or
(and ; Entsel
(= (type value) 'LIST)
(= (type (car value)) 'ENAME)
(setq value (car value))
)
(and ; Dotted Pair
(= (type value) 'LIST)
(/= (type (cdr value)) 'LIST)
(setq value (cdr value))
)
(and ; Ename
(= (type value) 'ENAME)
(setq value (vlax-ename->vla-object value))
)
(and ; Entity List
(= (type value) 'LIST)
(= (type (car value)) 'LIST)
(setq value (car value))
)
(and ; Handle
(= (type value) 'STR)
(setq value (handent value))
(entget value)
)
(and ; ObjectID
(= (type value) 'INT)
(= (strlen (itoa value)) 10)
(setq value (errortrap '(vla-objectidtoobject
(vla-get-activedocument
(vlax-get-acad-object))
value )))
)
)
(setq value (object value))
)
)
value
)
)
; General Error Trapping function
(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)
)
)
(vl-load-com)