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>
233 lines
10 KiB
Markdown
233 lines
10 KiB
Markdown
---
|
|
title: "Библиотека фрагментов (Интерфейс ksFragmentLibrary)"
|
|
type: interface
|
|
api: [api7]
|
|
tags: [interface, api7, ksfragmentlibrary]
|
|
sources:
|
|
- ksfragmentlibrary.html
|
|
---
|
|
|
|
*API интерфейсов. Версия 5 > Интерфейсы работы с библиотеками *
|
|
|
|
|
|
## Библиотека фрагментов (Интерфейс ksFragmentLibrary)
|
|
|
|
Интерфейс библиотеки фрагментов.
|
|
Примечание:
|
|
Указатель на интерфейс можно получить при помощи метода KompasObject::GetFragmentLibrary.
|
|
Смотрите также KompasObject
|
|
|
|
|
|
## ksFragmentLibrary - Открыть библиотеку фрагментов
|
|
|
|
Функция не поддерживается
|
|
Пример...
|
|
Аналог данной функции при использовании Automation - метод ksFragmentLibrary::ksFragmentLibraryOperation.
|
|
Синтаксис:
|
|
```
|
|
int ksFragmentLibrary (char * libName, int type);
|
|
Входные параметры:
|
|
libName - имя файла библиотеки фрагментов,
|
|
type - тип действия с библиотекой фрагментов.
|
|
Возвращаемое значение:
|
|
1 - в случае успешного завершения,
|
|
0 - в случае неудачи.
|
|
```
|
|
Примечание:
|
|
1. При выполнении операций типа -1, 0, 1, 4, 5 libName - полное имя файла библиотеки фрагментов.
|
|
При выполнении операций типа 2, 3 libName - полное имя файла библиотеки фрагментов путь внутри библиотеки с именем редактируемого фрагмента.
|
|
2. При использовании Unicode следует использовать функцию ksFragmentLibraryW.
|
|
|
|
|
|
## ksFragmentLibraryW - Открыть библиотеку фрагментов (Unicode)
|
|
|
|
Функция не поддерживается
|
|
Аналог данной функции при использовании Automation - метод ksFragmentLibrary::ksFragmentLibraryOperation.
|
|
Синтаксис:
|
|
```
|
|
int LIB_FUNC ksFragmentLibraryW (LPWSTR libName, int type);
|
|
Входные параметры:
|
|
libName - имя файла библиотеки фрагментов,
|
|
type - тип действия с библиотекой фрагментов.
|
|
Возвращаемое значение:
|
|
1 - в случае успешного завершения,
|
|
0 - в случае неудачи.
|
|
```
|
|
Примечание:
|
|
1. При выполнении операций типа -1, 0, 1, 4, 5 libName - полное имя файла библиотеки фрагментов.
|
|
2. При выполнении операций типа 2, 3 libName - полное имя файла библиотеки фрагментов путь внутри библиотеки с именем редактируемого фрагмента.
|
|
3. При использовании ANSI следует использовать функцию ksFragmentLibrary.
|
|
|
|
|
|
## ksFragmentLibrary - Пример использования
|
|
|
|
char libName[250];
|
|
int j1;
|
|
//выберем библиотеку фрагментов
|
|
if (ChoiceFile ("*.lfr","Библиотеки фрагментов(*.lfr)|*.lfr|Все файлы (*.*)|*.*|", libName, 128))
|
|
{
|
|
char buf[250];
|
|
do
|
|
{
|
|
//выбрать фрагмент в библиотеке фрагментов
|
|
if ((j1 = ksChoiceFragmentFromLib(libName, buf, 250))!=0)
|
|
{
|
|
//выделим имя вставки
|
|
char * insertName = strrchr (buf, '|');
|
|
if (insertName)
|
|
{
|
|
double x, y;
|
|
//подготовим структуры фантома и запросов для Placement
|
|
struct Phantom rub;
|
|
rub.type1.xBase = 0;
|
|
rub.type1.yBase = 0;
|
|
rub.type1.scale = 1;
|
|
rub.phType = 1;
|
|
reference pDefFrg;
|
|
// создадим описание вставки фрагментов
|
|
pDefFrg = FragmentDefinition (buf, //имя файла фрагмента
|
|
insertName1, //имя вставки
|
|
1); // внешней ссылкой
|
|
if (pDefFrg)
|
|
{
|
|
//во временную группу положим вставку фрагмента,
|
|
//взятую из библиотеки фрагментов
|
|
rub.type1.gr = NewGroup (1); // временная группа
|
|
PlacementParam par;
|
|
par.xBase = 0;
|
|
par.yBase = 0;
|
|
par.ang = 0;
|
|
par.scale = 1 ;
|
|
//создаем объект "вставка фрагмента"
|
|
reference p = InsertFragment (pDefFrg, // указатель определения
|
|
//фрагмента
|
|
0, //на свои слои
|
|
&par); //параметры привязки
|
|
EndGroup();
|
|
int j;
|
|
do
|
|
{
|
|
rub.type1.ang = 0;
|
|
//запрос точки и угла поворота фрагмента
|
|
if ((j = Placement(NULL, &x, &y, &rub.type1.ang, &rub))!=0)
|
|
{
|
|
CopyObj (p, // указатель на графический объект
|
|
0,0, // базовая точка объекта
|
|
x, y, //точка, куда копировать
|
|
1, // масштаб
|
|
rub.type1.ang);// угол поворота а градусах
|
|
}
|
|
}
|
|
while (j);
|
|
DeleteObj (rub.type1.gr);
|
|
}
|
|
else
|
|
Error ("Ошибка создания описания вставки фрагмента");
|
|
}
|
|
else
|
|
Error("Имя вставки не определено");
|
|
}
|
|
}
|
|
while (j1);
|
|
}
|
|
|
|
|
|
## ksAddFragmentToLibrary - Добавить фрагмент в библиотеку
|
|
|
|
Функция не поддерживается
|
|
Аналог данного метода при использовании API экспортных функций - ksAddFragmentToLibrary.
|
|
Синтаксис Automation:
|
|
```
|
|
long ksAddFragmentToLibrary (BSTR libName,
|
|
BSTR frwName);
|
|
Входные параметры:
|
|
libName - имя фрагмента в библиотеке,
|
|
libFile - имя файла фрагмента.
|
|
Возвращаемое значение:
|
|
1 - в случае успешного завершения,
|
|
0 - в случае неудачи.
|
|
```
|
|
Примечание:
|
|
Допускается задание имени фрагмента следующего вида: "c:\gr\lib1.lfr|детали|литье|фланец",
|
|
где
|
|
c:\gr\lib1.lfr - имя файла библиотеки фрагментов,
|
|
|детали|литье| - разделы, подразделы внутри библиотеки фрагментов,
|
|
фланец - имя фрагмента.
|
|
|
|
|
|
## ksCheckFragmentLibrary - Проверить, открыта ли библиотека фрагментов
|
|
|
|
Функция не поддерживается
|
|
Аналог данного метода при использовании API экспортных функций - ksCheckFragmentLibrary.
|
|
Синтаксис Automation:
|
|
```
|
|
long ksCheckFragmentLibrary (BSTR libName,
|
|
BOOL possibleMessage);
|
|
Входные параметры:
|
|
libName - имя файла библиотеки фрагментов,
|
|
possibleMessage - признак выдачи сообщения: TRUE - выдать сообщение, FALSE - не выдавать сообщение.
|
|
Возвращаемое значение:
|
|
1 - в случае успешного завершения,
|
|
0 - в случае неудачи.
|
|
```
|
|
|
|
|
|
## ksChoiceFragmentFromLib - Выбрать имя фрагмента или папки в библиотеке фрагментов
|
|
|
|
Аналог данного метода при использовании API экспортных функций - ksChoiceFragmentFromLib.
|
|
Синтаксис Automation:
|
|
```
|
|
BSTR ksChoiceFragmentFromLib (BSTR frwLibFile,
|
|
long* type);
|
|
Входные параметры:
|
|
frwLibFile - имя файла библиотеки фрагментов,
|
|
type - тип возвращаемого значения: 3 - имя фрагмента, 2 - имя папки, 1- корень библиотеки фрагментов, 0 - ошибка.
|
|
Возвращаемое значение:
|
|
имя фрагмента.
|
|
```
|
|
Примечание:
|
|
Библиотека фрагментов открывается в режиме диалога.
|
|
Ее редактирование запрещено.
|
|
Enter - выбор имени фрагмента. Esc - отказ.
|
|
|
|
|
|
## ksExistFragmentInLibrary - Проверить наличие указанного фрагмента или раздела в библиотеке фрагментов
|
|
|
|
Аналог данного метода при использовании API экспортных функций - ksExistFragmentInLibrary.
|
|
Синтаксис Automation:
|
|
```
|
|
long ksExistFragmentInLibrary (BSTR frwName);
|
|
Входной параметр:
|
|
name - имя файла библиотеки моделей.
|
|
Возвращаемое значение:
|
|
1 - указанный фрагмент или папка есть в библиотеке,
|
|
0 - указанного фрагмента или папки нет,
|
|
-1 - нет указанной библиотеки.
|
|
```
|
|
Примечание:
|
|
Допускается задание имени файла следующего вида: "c:\gr\lib1.lfr|детали|литье|фланец",
|
|
где
|
|
c:\gr\lib1.lfr - имя файла библиотеки фрагментов,
|
|
|детали|литье| - разделы, подразделы внутри библиотеки фрагментов,
|
|
фланец - имя фрагмента.
|
|
|
|
|
|
## ksFragmentLibraryOperation - Открыть библиотеку фрагментов
|
|
|
|
Функция не поддерживается
|
|
Аналог данного метода при использовании API экспортных функций - ksFragmentLibrary.
|
|
Синтаксис Automation:
|
|
```
|
|
long ksFragmentLibraryOperation (LPCTSTR libName, long type);
|
|
Входные параметры:
|
|
libName - имя файла библиотеки фрагментов,
|
|
type - тип действия.
|
|
Типы действий с библиотекой фрагментов...
|
|
Возвращаемое значение:
|
|
1 - в случае успешного завершения,
|
|
0 - в случае неудачи.
|
|
```
|
|
Примечание:
|
|
При выполнении операций типа -1, 0, 1, 4, 5 libName - полное имя файла библиотеки фрагментов.
|
|
При выполнении операций типа 2, 3 libName - полное имя файла библиотеки фрагментов + путь внутри библиотеки с именем редактируемого фрагмента.
|