e1337e4016
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается. - .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным (safety-net на случай повторной локальной выгрузки). - CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
128 lines
6.2 KiB
Markdown
128 lines
6.2 KiB
Markdown
---
|
|
title: "ksDeleteAttrRow - Удалить строку табличного атрибута"
|
|
type: guide
|
|
api: [api7]
|
|
tags: [guide, api7, ksdeleteattrrow]
|
|
sources:
|
|
- ksdeleteattrrow.html
|
|
---
|
|
|
|
*API экспортных функций > Функции работы с прикладной библиотекой > Функции работы с атрибутами *
|
|
|
|
|
|
## ksDeleteAttrRow - Удалить строку табличного атрибута
|
|
|
|
Пример...
|
|
Аналог данной функции при использовании Automation - метод ksAttributeObject::ksDeleteAttrRow.
|
|
Синтаксис:
|
|
```
|
|
int ksDeleteAttrRow (reference pAttr, unsigned int rowNumb, char * password);
|
|
Входные параметры:
|
|
pAttr - указатель на атрибут,
|
|
rowNumb - номер строки,
|
|
password - пароль атрибута.
|
|
Возвращаемое значение:
|
|
1 - в случае удачного завершения,
|
|
0 - в случае неудачи.
|
|
```
|
|
Примечание:
|
|
1. Указатель на атрибут reference pAttr может быть получен следующими способами:
|
|
– с помощью функций итератора CreateAttrIterator, MoveAttrIterator,
|
|
– с помощью функций создания атрибутов ksCreateAttr или выбора атрибутов ChoiceAttr.
|
|
|
|
|
|
## ksDeleteAttrRow, ksAddAttrRow - Пример использования
|
|
|
|
//создадим атрибут для табличного типа неопределенной длины, тип содержит три колонки
|
|
//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);
|
|
}
|