AutoLISP Symbols

The functions acedGetSym() and acedPutSym() let ObjectARX applications inspect and change the value of AutoLISP variables.

In the first example, the user enters the following AutoLISP expressions:

Command: (setq testboole t)

T

Command: (setq teststr “HELLO, WORLD”)

“HELLO, WORLD”

Command: (setq sset1 (ssget))

<Selection set: 1>

Then the following sample code shows how acedGetSym() retrieves the new values of the symbols.

struct resbuf *rb; 
int rc; 
long sslen; 
rc = acedGetSym("testboole", &rb); 
if (rc == RTNORM && rb->restype == RTT) 
    acutPrintf("TESTBOOLE is TRUE\n"); 
acutRelRb(rb); 
rc = acedGetSym("teststr", &rb); 
if (rc == RTNORM && rb->restype == RTSTR) 
    acutPrintf("TESTSTR is %s\n", rb->resval.rstring); 
acutRelRb(rb); 
rc = acedGetSym("sset1", &rb); 
if (rc == RTNORM && rb->restype == RTPICKS) { 
    rc = acedSSLength(rb->resval.rlname, &sslen); 
    acutPrintf("SSET1 contains %lu entities\n", sslen); 
}
acutRelRb(rb); 

Conversely, acedPutSym() can create or change the binding of AutoLISP symbols, as follows:

ads_point pt1; 
pt1[X] = pt1[Y] = 1.4; pt1[Z] = 10.9923; 
rb = acutBuildList(RTSTR, "GREETINGS", 0); 
rc = acedPutSym("teststr", rb); 
acedPrompt("TESTSTR has been reset\n"); 
acutRelRb(rb); 
rb = acutBuildList(RTLB, RTSHORT, -1, 
    RTSTR, "The combinations of the world", 
    RTSTR, "are unstable by nature.", RTSHORT, 100, 
    RT3DPOINT, pt1, 
    RTLB, RTSTR, "He jests at scars", 
    RTSTR, "that never felt a wound.", RTLE, RTLE, 0); 
rc = acedPutSym("longlist", rb); 
acedPrompt("LONGLIST has been created\n"); 
acutRelRb(rb);

To set an AutoLISP variable to nil, make the following assignment and function call:

rb->restype = RTNIL;
acedPutSym("var1", rb);

Users can retrieve these new values. (As shown in the example, your program should notify users of any changes.)

TESTSTR has been reset.

LONGLIST has been created.

Command: !teststr

(“GREETINGS”)

Command: !longlist

((-1 “The combinations of the world” “are unstable by nature.” 100 (1.4 1.4 10.9923) (“He jests at scars” “that never felt a wound.”)))