---
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 - полное имя файла библиотеки фрагментов + путь внутри библиотеки с именем редактируемого фрагмента.
