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


Анонимные Блоки


Вы можете создавать анонимные блоки,  вызывая acdbEntMake (). Чтобы делать так, Вы должны открыть блок с именем, чей первый символ - * и блочный флажок типа (группа 70) чей младший бит установлен в 1. AutoCAD назначает новый анонимный блок имя; символы в строке имени, которые следуют за *,  часто игнорируются. Вы тогда создаете анонимный блок,  путем Вы создали бы регулярный блок, за исключением того, что это более важно вызвать acedGetInput ().

Поскольку имя сгенерировано в соответствии с AutoCAD, ваша программа не имеет никакого другого пути знания имени нового блока.

Следующий код начинает анонимный блок, заканчивает его, и возвращает его имя.

 

int status;

struct resbuf *entlist;

ads_point basept;

char newblkname[20];

ads_point pnt1 = ( 0.0, 0.0, 0.0);

entlist = acutBuildList(

RTDXF0, "BLOCK",

2, "*ANON", // Only the ’*’ matters.

10, "1", // No other flags are set.

0 );

if (entlist == NULL) {

acdbFail("Unable to create result buffer list\n");

return BAD;

}

status = acdbEntMake(entlist);

acutRelRb(entlist); // Release acdbEntMake buffer.

if (status != RTNORM) {

acdbFail("Unable to start anonymous block\n");

return BAD;

}

// Add entities to the block by more acdbEntMake calls.

.

.

.

entlist = acutBuildList(RTDXF0, "ENDBLK", 0 );

if (entlist == NULL) {

acdbFail("Unable to create result buffer list\n");

return BAD;

}

status = acdbEntMake(entlist);

acutRelRb(entlist); // Release acdbEntMake buffer.

if (status != RTKWORD) {

acdbFail("Unable to close anonymous block\n");

return BAD;

}

status = acedGetInput(newblkname);

if (status != RTNORM) {

acdbFail("Anonymous block not created\n");

return BAD;

}

 

К ссылке анонимный блок, создайте примитив вставки с acdbEntMake() (Вы не можете передавать анонимный блок к команде INSERT.)

Продолжая предыдущий пример, следующий кодовый фрагмент вставляет анонимный блок в (0,0).

 

basept[X] = basept[Y] = basept[Z] = 0.0;




Начало  Назад  Вперед



Книжный магазин