Determining If a Method or Property Applies to an Object

AutoCAD AutoLISP & Visual LISP

 
Determining If a Method or Property Applies to an Object
 
 
 

Trying to use a method that does not apply to the specified object will result in an error. Trying to reference a property that does not apply to an object also results in an error. In instances where you are not sure what applies, use the vlax-method-applicable-p and vlax-property-available-p functions to test the objects. These functions return T if the method or property is available for the object, and nil if it is not.

The syntax for vlax-method-applicable-p is:

(vlax-method-applicable-p objectmethod)

The following command checks to see if the Copy method can be applied to the object referenced by WhatsMyLine:

_$ (vlax-method-applicable-p
WhatsMyLine "Copy")
T

The following command determines whether or not the AddBox method can be applied to the object:

_$ (vlax-method-applicable-p
WhatsMyLine "AddBox")
nil

For vlax-property-available-p, the syntax is:

(vlax-property-available-p objectproperty [T])

For example, the following commands determine if Color and Center are properties of WhatsMyLine:

_$ (vlax-property-available-p
WhatsMyLine "Color")
T
_$ (vlax-property-available-p
WhatsMyLine "Center")
nil

Supplying the optional “T” argument to vlax-property-available-p changes the meaning of the test. If you supply this argument, the function returns T only if the object has the property and the property can be modified. If the object has no such property or the property is read-only, vlax-property-available-p returns nil. For example, an ellipse contains an Area property, but you cannot update it. If you check the property without specifying the optional argument, the result is T:

_$ (vlax-property-available-p
myEllipse "area")
T

If you supply the optional argument, the result is nil:

_$ (vlax-property-available-p
myEllipse "area" T)
nil