Please enable JavaScript to view this site.

» Нет разделов более высокого уровня «

ksDeleteAttrRow, ksAddAttrRow - Пример использования

Scroll

//создадим атрибут для табличного типа неопределенной длины, тип содержит три колонки

//DOUBLE_ATTR_TYPE(double),STRING_ATTR_TYPE(строка),LINT_ATTR_TYPE(long int).

// Атрибут создадим для внутреннего объекта macro.

// Macro на момент создания атрибута временный, т.е. не в модели чертежа.

// Отредактируем атрибут - в диалоге редактирования атрибута, добавим строку, удалим

 

Attribute attrPar;

struct TypeStr

{

double a;

char c[MAX_TEXT_LENGTH];

long b;

} ;

static TypeStr arrBuf[3] =

{

{187654321.0, "1 строка", 19999l},

{287654321.0, "2 строка", 29999l},

{387654321.0, "3 строка", 39999l}

};

 

//массив, определяющий для каждой колонки видимость-невидимость

// (вторая колонка выключена)

unsigned char fV[3]= {1,0,1};

attrPar.key1 = 1; // рекоменд. как код разработчика

attrPar.key2 = 10; // рекоменд. как код атрибута

attrPar.key3 = 100; // рекоменд. как код разработчика

attrPar.key4 = 0; // системный код атрибута

// значения от 0 до 1000 зарезервированы

// за АО "АСКОН"

attrPar.flagVisible = fV; // массив, определяющий для каждой колонки атрибута

// видимость-невидимость

// 0 -видимое поле 1- невидимое поле

attrPar.values = &arrBuf ; // массив значений ячеек таблицы атрибутов

// сначала все значения для 1-ой строки,

// затем все значения для 2-ой строки и т.д.

attrPar.valSize = sizeof(TypeStr)*3;

strcpy (attrPar.password,"111"); // пароль, если не пустая строка

// - защищает от несанкционированного

// изменения информации в атрибуте

 

reference pObj;

char nameFile[128];

if (!ChoiceFile ("*.lat",NULL, nameFile, 128))

nameFile[0]='\0'; //будем искать в документе

//номер типа атрибута (тип создан ранее, если nameFile пустое - ищем тип атрибута в документе)

double numb;

int j = ReadDouble ("Ввести номер типа атрибута", 1000.,0, 1e12,&numb);

if (j)

{

//временная группа

reference g = NewGroup (1);

//создадим пустой macro

Macro (0);

reference m = EndObj ();

 

pObj = LineSeg (10, 10, 20, 20, 1);

//добавим отрезок в macro

ksAddObjectToMacro (m, //указатель на макроэлемент

pObj); //указатель на добавляемый объект

//создадим для отрезка, который принадлежит macro, атрибут

reference attr= CreateAttr (pObj, &attrPar, numb, nameFile);

if (!attr)

MessageBoxResult(); // неудачное завершение - выдадим результат работы

// нашей функции

else

{

//вызываем диалог для редактирования атрибута

ViewEditAttr (attr, 2, "111"); // пароль атрибута для просмотра 0

 

TypeStr arrBuf1 = { 222222222222.0, "NEW строка", 4444444l} ;

//добавим в конец атрибута еще одну строку

ksAddAttrRow (attr, // указатель атрибута

-1, // вставлять строку в конец

fV, // указатель на массив флагов

// видимости ячеек строки

&arrBuf1, // указатель на память пользователя,

// откуда копируются данные

sizeof (TypeStr),// размер выделенной памяти под value

"111"); // пароль атрибута

 

//удалим первую строку

ksDeleteAttrRow (attr, // указатель атрибута

0, "111"); // номер строки и пароль

 

//узнаем количество колонок и строк в атрибуте

unsigned int rowsCount, columnsCount;

GetAttrTabInfo (attr, // указатель атрибута

&rowsCount, // количество строк

&columnsCount);// количество столбцов

 

char buf[250];

sprintf (buf, "rowsCount = %d columnsCount = %d",rowsCount,columnsCount);

 

//выведем количество колонок и строк в атрибуте на экран

Message (buf);

}

//закроем временную группу

EndGroup();

//поставим все объекты временной группы в модель чертежа

StoreTmpGroup(g);

}

© ООО «АСКОН-Системы проектирования», 2024. Все права защищены. | Единая телефонная линия: 8-800-700-00-78