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>
90 lines
3.8 KiB
Markdown
90 lines
3.8 KiB
Markdown
---
|
|
title: "CreateAttr - Создать атрибут объекта"
|
|
type: guide
|
|
api: [api7]
|
|
tags: [guide, api7, createattr]
|
|
sources:
|
|
- createattr.html
|
|
---
|
|
|
|
*API экспортных функций > Функции работы с прикладной библиотекой > Функции работы с атрибутами *
|
|
|
|
|
|
## CreateAttr - Создать атрибут объекта
|
|
|
|
Пример...
|
|
Замечание:
|
|
Функция устарела, рекомендуется использовать ksCreateAttr
|
|
Синтаксис:
|
|
```
|
|
reference CreateAttr (reference pObj,
|
|
Attribute * attr,
|
|
double attrID,
|
|
char *libname);
|
|
Входные параметры:
|
|
pObj - указатель на объект (группа, вид, отдельный объект), атрибут которого создается. Если pObj = 0, то создается атрибут документа,
|
|
attr - указатель на структуру параметров табличного атрибута Attribute,
|
|
attrID - уникальный номер типа атрибута,
|
|
libName - имя библиотеки типов атрибутов, если libname = NULL, то тип атрибута берется из текущего документа.
|
|
Возвращаемое значение:
|
|
указатель на атрибут - в случае удачного завершения,
|
|
0 - в случае неудачи.
|
|
```
|
|
|
|
|
|
## CreateAttr - Пример использования
|
|
|
|
void CreateAttr_Example (void) {
|
|
// создадим атрибут для типа атрибута с колонками
|
|
// DOUBLE_ATTR_TYPE, STRING_ATTR_TYPE, LINT_ATTR_TYPE
|
|
// Предполагается, что данный тип уже существует
|
|
ksAttribute attrPar;
|
|
//структура данных для оформления атрибута
|
|
struct {
|
|
double a;
|
|
char c[MAX_TEXT_LENGTH];
|
|
long b;
|
|
} bufS;
|
|
// заполним поля атрибута
|
|
bufS.a = 987654321.0;
|
|
bufS.b = 99999l;
|
|
strcpy(bufS.c,"Исполнение 1");
|
|
//заполним параметры структуры атрибута
|
|
strcpy(attrPar.comment,"элемент"); //комментарий атрибута
|
|
attrPar.key1 = 1; // рекоменд. как код разработчика
|
|
attrPar.key2 = 10; // рекоменд. как код атрибута
|
|
attrPar.key3 = 100; // рекоменд. как код разработчика
|
|
attrPar.key4 = 0; // системный код атрибута
|
|
// значения от 0 до 1000 зарезервированы АСКОН
|
|
attrPar.flagVisible = 0; //массив, определяющий для каждой колонки
|
|
// атрибут видимость-невидимость
|
|
// 0 -видимое поле 1- невидимое поле
|
|
attrPar.values = &bufS; // массив значений ячеек таблицы атрибутов
|
|
// сначала все значения для 1-ой строки,
|
|
// затем все значения для 2-ой строки и т.д.
|
|
attrPar.valSize = sizeof(bufS);
|
|
strcpy(attrPar.password,"111"); //пароль
|
|
double x, y;
|
|
reference pObj;
|
|
RequestInfo info;
|
|
memset(&info, 0, sizeof(info));
|
|
info.prompt = " Укажите объект ";
|
|
int j = Cursor(&info, &x, &y, 0, 0);
|
|
if (j) {
|
|
if(ExistObj(pObj = FindObj(x, y, MAXDOUBLE))){
|
|
LightObj(pObj, 1);
|
|
//запросить имя библиотеки
|
|
char nameFile[128];
|
|
if(!ChoiceFile("*.tip",NULL, nameFile, 128))
|
|
nameFile[0]='\0'; //будем искать в документе
|
|
double numb;
|
|
j = ReadDouble("Ввести номер типа атрибута", 1000, 0, 1e12,&numb);
|
|
if(j) {
|
|
reference attr= ksCreateAttr(pObj, &attrPar, numb, nameFile);
|
|
if (!attr) MessageBoxResult(); // неудачное завершение
|
|
}
|
|
LightObj(pObj, 0);
|
|
}
|
|
}
|
|
}; /* CreateAttr */
|