ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Символы AutoLISP


Функции

acedGetSym () и acedPutSym () позволяют

ObjectARX-приложениям осматривать и изменять{*заменять*} значение переменных

AutoLISP.

В первом примере, пользователь вводит следующие выражения AutoLISP:

Command: (setq testboole t)

T

Command: (setq teststr “HELLO, WORLD”)

“HELLO, WORLD”

Command: (setq sset1 (ssget))

<Selection set: 1>

Тогда следующий типовой код показывает, как acedGetSym() отыскивает новые значения символов.

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);

Наоборот, acedPutSym () может создавать или изменять связывание символов AutoLISP, следующим образом:

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);

Чтобы устанавливать переменную AutoLISP в ноль, делайте следующее назначение и функциональный запрос:

rb->restype = RTNIL;

acedPutSym("var1", rb);

Пользователи могут отыскивать эти новые значения. (Как показано в примере, ваша программа должна уведомить пользователей относительно любых изменений.)

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.”)))



Содержание раздела