---
title: "Компонент сборки (деталь или подсборка). Интерфейсы ksPart и IPart"
type: interface
api: [api7]
domain: [3d, assembly]
tags: [interface, api7, 3d, assembly, kspart]
sources:
  - kspart.html
---

*API интерфейсов. Версия 5 > Документ-модель (Интерфейсы - ksDocument3D, IDocument3D ) *


## Компонент сборки (деталь или подсборка). Интерфейсы ksPart и IPart

Интерфейс детали или подсборки в составе сборки.
| ksPart | - интерфейс Automation |
| --- | --- |
| IPart | - интерфейс COM |
Примечание:
Данный интерфейс можно получить от следующих интерфейсов:
•интерфейс динамического массива компонентов сборки ksPartCollection или IPartCollection,
•интерфейс документа-модели IDocument3D, или ksDocument3D.
Массив объектов модели (Интерфейсы ksEntityCollection и IEntityCollection)
Объект модели (Интерфейсы ksEntity и IEntity)
Математическая поверхность в трехмерном пространстве
Математическая кривая в трехмерном пространстве (Интерфейсы ksCurve3D, ICurve3D)
Объект Дерева построения (Интерфейсы ksFeature, IFeature)
Источник событий объектов документа-модели Object3DNotify
Трехмерное тело


## BeginEdit - Запустить режим редактирования на месте для данного компонента

Синтаксис Automation:
```
IDispatch * BeginEdit();
```
Синтаксис COM:
```
LPDOCUMENT3D BeginEdit();
Возвращаемое значение:
- указатель на интерфейс документа ksDocument3D или IDocument3D.
```
Примечание:
1. Данный метод работает только для компонента, вставленного в сборку. Для детали и для "верхнего" компонента сборки возвращает NULL.
2. Метод работает только для визуального документа.


## BodyCollection - Получить указатель на интерфейс массива тел

Синтаксис Automation:
```
LPDISPATCH BodyCollection();
```
Синтаксис COM:
```
LPBODYCOLLECTION BodyCollection();
Возвращаемое значение:
- указатель на интерфейс документа ksBodyCollection или IBodyCollection.
```


## CalcMassInertiaProperties - Определить массово-центровочные характеристики

Синтаксис Automation:
```
LPDISPATCH CalcMassInertiaProperties (long bitVector);
```
Синтаксис COM:
```
LPMASSINERTIAPARAM CalcMassInertiaProperties (unsigned int bitVector);
Входной параметр:
bitVector    - определяет размерность длины, размерность массы.
Возвращаемое значение:
- указатель на интерфейс ksMassInertiaParam или IMassInertiaParam.
```
Примечание:
Варианты значений для задания значений bitVector находятся в интервале [ST_MIX_MM..ST_MIX_KG]
Пример:
```vb
(метры|кг - ST_MIX_M|ST_MIX_KG)
```


## ClearAllObj - Удалить все вспомогательные объекты, сохранённые в детали

Синтаксис Automation:
```
BOOL ClearAllObj();
```
Синтаксис COM:
```
BOOL ClearAllObj();
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечания:
Объект - это вспомогательная информация, и визуально никак не отображается. Например, если создать болт как макро относительно какого-нибудь объекта (например, отверстие - цилиндрическая поверхность) и запомнить это отверстие в макро болта, то при следующем редактировании можно получить сохранённый указатель на отверстие.


## ColorParam - Получить указатель на интерфейс параметров цвета и визуальных свойств компонента

Синтаксис Automation:
```
LPDISPATCH ColorParam();
```
Синтаксис COM:
```
LPCOLORPARAM ColorParam();
Возвращаемое значение:
- указатель на интерфейс ksColorParam или IColorParam.
```


## CreateOrEditObject - Запустить процесс создания или редактирования объекта

Синтаксис Automation:
```
LPDISPATCH CreateOrEditObject (short objType, LPDISPATCH editObj);
```
Синтаксис COM:
```
LPENTITY CreateOrEditObject (short objType, LPENTITY editObj);
Входные параметры:
objType    - тип создаваемого объекта, выбирается из Obj3dType,
editObj    - редактируемый объект.
Типы компонентов...
Возвращаемое значение:
- Указатель на интерфейс объекта ksEntity или IEntity.
```
Примечание:
1. Для создания нового объекта необходимо передать методу тип objType и нулевой указатель editObj.
2. Для редактирования уже существующего объекта необходимо передать методу указатель editObj на этот объект, переданный тип objType при этом игнорируется.


## CurveIntersection - Рассчитать пересечения с кривой

Синтаксис Automation:
```
BOOL CurveIntersection (LPDISPATCH curve,
LPDISPATCH parts,
LPDISPATCH fases,
LPDISPATCH points);
```
Синтаксис COM:
```
BOOL CurveIntersection (LPCURVE3D curve,
LPPARTCOLLECTION parts,
LPFACECOLLECTION faces,
LPCOORDINATE3DCOLLECTION points);
Входные параметры:
curve    - Указатель на интерфейс 3D кривой ICurve3D
Выходные параметры:
parts    - коллекция деталей, пересекаемых кривой IPartCollection,
fases    - коллекция граней, пересекаемых кривой IFaceCollection,
points    - коллекция координат точек пересечений ICoordinate3dCollection.
Возвращаемое значение:
TRUE    - в случае успеха,
FALSE    - в случае неудачи.
```
Примечание:
1. Координаты точек сортируются по параметру кривой t.
2. Параметры parts, faces, points являются не обязательными.
3. Заполняются только присланные коллекции.
4. Интерфейсы коллекций для заполнения нужно получить с помощью функций:
•ksPartCollection
•ksDocument3D::PartCollection c параметром refresh = FALSE;
•ksFaceCollection
•ksDocument3D::GetInterface с параметром o3dType = o3d_faceCollection;
•ksCoordinate3dCollection
•ksDocument3D::GetInterface с параметром o3dType = o3d_coordinate3dCollection.


## DoubleClickEditOff - Получить признак внешнего редактирования детали

Тип данных:BOOL.
Синтаксис Automation:
```
off = iPart.DoubleClickEditOff    Получить свойство (* )
iPart.DoubleClickEditOff = off    Установить свойство (* )
off = iPart.GetDoubleClickEditOff()    Получить свойство (**)
iPart.SetDoubleClickEditOff (off)    Установить свойство (**)
```
Примечание:
Свойство позволяет для библиотечных элементов, имеющих макропараметры, оставить стандартное поведение компонента и объектов, входящих в состав компонента. Для этого нужно установить значение свойства равным TRUE.


## EndEdit - Закрыть режим редактирования на месте для данного компонента

Синтаксис Automation:
```
VARIANT_BOOL EndEdit (VARIANT_BOOL rebuild);
```
Синтаксис COM:
```
BOOL EndEdit (BOOL rebuild);
Входные параметры:
rebuild    - перестроить компонент.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечание:
Данный метод работает только для компонента, вставленного в сборку.


## EntityCollection - Формирует массив объектов и возвращает указатель на его интерфейс

Синтаксис Automation:
```
LPDISPATCH EntityCollection (short objType);
```
Синтаксис COM:
```
LPENTITYCOLLECTION EntityCollection (short objType);
Входной параметр:
objType    - тип объектов, содержащихся в массиве.
Возвращаемое значение:
- указатель на интерфейс ksEntityCollection или IEntityCollection.
```
Примечания:
1. При создании массив заполняется объектами указанного типа, содержащимися в компоненте.
2. В возвращаемом массиве включен контроль, не позволяющий добавить в него нулевой указатель.
3. Параметр objType необходим для создания массива и для правильной работы метода Refresh.
Типы объектов...


## excluded - Исключить/включить в расчет деталь

Тип данных: BOOL
Значения свойства:
| TRUE | - исключить деталь из расчета, |
| --- | --- |
| FALSE | - включить деталь в расчет. |
Синтаксис Automation:
```
excluded = iEntity.excluded    Получить свойство (* )
iEntity.excluded = excluded    Установить свойство (* )
excluded = iEntity.GetExcluded()    Получить свойство (**)
iEntity.SetExcluded(excluded)    Установить свойство (**)
```
Примечание:
1. После установки признака Excluded в True исключение объекта из расчета происходит сразу, без вызова Update. Поэтому изменение объектов (и вызов Update) нужно делать до переключения Excluded в True.
2. Начиная с КОМПАС-3D V12, исключенные из расчета объекты считаются не валидными.


## fileName - Имя файла компонента

Тип данных: строка
Синтаксис Automation:
```
fileName = iPart.fileName    Получить свойство (* )
iPart.fileName = fileName    Установить свойство (* )
fileName = iPart.GetFileName()    Получить свойство (**)
iPart.SetFileName(fileName)    Установить свойство (**)
```


## fixedComponent - Состояние фиксации компонента

Тип данных: BOOL
Значения свойства:
| TRUE | - компонент зафиксирован, |
| --- | --- |
| FALSE | - компонент не зафиксирован. |
Синтаксис Automation:
```
fixedComponent = iPart.fixedComponent    Получить свойство (* )
iPart.fixedComponent = fixedComponent    Установить свойство (* )
fixedComponent = iPart.GetFixedComponent()    Получить свойство (**)
iPart.SetFixedComponent(fixedComponent)    Установить свойство (**)
```
Примечание:
Если компонент зафиксирован, то нельзя изменить его местоположение.


## GetAdvancedColor - Возвращает параметры цвета и визуальных свойств компонента

Синтаксис Automation:
```
BOOL GetAdvancedColor (long* color,
double* ambient,
double* diffuse,
double* specularity,
double* shininess,
double* transparency,
double* emission);
```
Синтаксис COM:
```
BOOL GetAdvancedColor (COLORREF* color,
double* ambient,
double* diffuse,
double* specularity,
double* shininess,
double* transparency,
double* emission);
Выходные параметры:
color    - цвет,
ambient    - общий свет,
diffuse    - диффузия,
specularity    - зеркальность,
shininess    - блеск,
transparency    - прозрачность,
emission    - излучение.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```


## GetCountObj - Получить количество вспомогательных объектов, сохранённых в макро

Синтаксис Automation:
```
BOOL GetCountObj();
```
Синтаксис COM:
```
long GetCountObj();
Возвращаемое значение:
- Количество вспомогательных объектов, сохранённых в макро.
```
Примечания:
Объект - это вспомогательная информация и визуально никак не отображается. Например, если создать болт как макро относительно какого-нибудь объекта (например, отверстие - цилиндрическая поверхность) и запомнить это отверстие в макро болта, то при следующем редактирование можно получить сохранённый указатель на отверстие.


## GetDefaultEntity - Получить указатель на интерфейс объекта, создаваемого системой по умолчанию

Синтаксис Automation:
```
LPDISPATCH GetDefaultEntity (short objType);
```
Синтаксис COM:
```
LPENTITY GetDefaultEntity (short objType);
Входной параметр:
objType    - тип объекта.
Возвращаемое значение:
- указатель на интерфейс ksEntity или IEntity.
Типы объектов (objType):
o3d_planeXOY    1    - плоскость XOY
o3d_planeXOZ    2    - плоскость XOZ
o3d_planeYOZ    3    - плоскость YOZ
o3d_pointCS    4    - точка начала системы координат
o3d_axisOX    71    - ось OX
o3d_axisOY    72    - ось OY
o3d_axisOZ    73    - ось OZ
```


## GetDensity - Получить плотность детали

Синтаксис Automation:
```
double GetDensity()
```
Синтаксис COM:
```
double GetDensity();
Возвращаемое значение:
плотность (г/куб.мм)    - в случае успешного завершения,
0    - в случае неудачи (если компонент - не деталь).
```


## GetFeature - Вернуть указатель на интерфейс - объект дерева, связанный с данным объектом

Синтаксис Automation:
```
LPDISPATCH GetFeature();
```
Синтаксис COM:
```
LPFEATURE GetFeature();
Возвращаемое значение:
- указатель на интерфейс документа ksFeature или IFeature.
```


## GetGabarit - Получить габарит

Синтаксис Automation:
```
BOOL GetGabarit( BOOL full
BOOL customizable
double * x1
double * y1,
double * z1,
double * x2,
double * y2,
double * z2 );
```
Синтаксис COM:
```
BOOL GetGabarit( BOOL full,
BOOL customizable
double * x1,
double * y1,
double * z1,
double * x2,
double * y2,
double * z2 );
Входные параметры:
full    - TRUE - полный, - FALSE - только тела,
customizable    - TRUE - с учетом настроек видимости, - FALSE - без учета; при full == false игнорируется,
x1, y1, z1    - координаты первой точки габаритного параллелепипеда,
x2, y2, z2    - координаты второй точки габаритного параллелепипеда.
Возвращаемое значение:
TRUE    - в случае успеха.
```


## GetMainBody - Получить указатель на интерфейс результирующего тела

Синтаксис Automation:
```
LPDISPATCH GetMainBody();
```
Синтаксис COM:
```
LPBODY GetMainBody();
Возвращаемое значение:
- указатель на интерфейс ksBody или IBody.
```
Пример:
```vb
Деталь имеет массив интерфейсов тел IBody. Используя этот массив интерфейсов, можно получить доступ к математической модели детали (компонента).
```


## GetMass - Получить массу детали

Синтаксис Automation:
```
double GetMass();
```
Синтаксис COM:
```
double GetMass();
Возвращаемое значение:
масса    - в случае успешного завершения,
0    - в случае неудачи.
```


## GetMateConstraintObjects - Получить массив зависимых объектов для повторного редактирования детали

Синтаксис Automation:
```
LPDISPATCH GetMateConstraintObjects();
```
Синтаксис COM:
```
LPENTITYCOLLECTION GetMateConstraintObjects();
Возвращаемое значение:
- указатель на интерфейс ksEntityCollection или IEntityCollection.
```
Примечание:
Функция работает в сборке. Массив объектов формируется в результате работы функции UserGetPlacementAndEntity для данной детали. Как правило, на указанные в процессе объекты накладываются сопряжения с объектами данной детали. Если массив сохранить, то при повторном входе в процесс связанные объекты будут выделены.


## GetMeasurer - Получить указатель на интерфейс измерений

Синтаксис Automation:
```
LPDISPATCH GetMeasurer();
```
Синтаксис COM:
```
LPMEASURER GetMeasurer();
Возвращаемое значение:
- указатель на интерфейс ksMeasurer или IMeasurer.
```


## GetObject - Получить указатель на вспомогательный объект, сохраненный в деталь по индексу

Синтаксис Automation:
```
LPDISPATCH GetObject(long index);
```
Синтаксис COM:
```
LPUNKNOWN GetObject(long index);
Входные параметры:
index    - номер объекта.
Возвращаемое значение:
Указатель на интерфейс IDispatch или IUnknown сохранённого объекта.
```
Примечания:
Объект - это вспомогательная информация, и визуально никак не отображается. Например, если создать болт как макро относительно какого-нибудь объекта (например отверстие - цилиндрическая поверхность), и запомнить это отверстие в макро болта, то при следующем редактировании можно получить сохранённый указатель на отверстие.
См. также: IPart::SetObject


## GetObject3DNotify - Получить объект обработки событий для объектов 3D документов

Синтаксис Automation:
```
ksObject3DNotify * GetObject3DNotify (long objType, LPDISPATCH obj);
Входные параметры:
Obj    - указатель на объект,
objType    - тип объекта (o3d_unknown...o3d_sketch, o3d_axis2Planes...o3d_thread, o3d_part, o3d_feature).
Возвращаемое значение:
- указатель на интерфейс источника событий Object3DNotify.
```
Примечание:
Если задан указатель на объект, события генерируются только для этого объекта. Если задан тип объекта, события генерируются для всех объектов этого типа. Если задан тип o3d_unknown, события генерируются для всех объектов.


## GetObject3DNotifyResult - Получить интерфейс результатов редактирования объекта документа-модели

Синтаксис Automation:
```
ksObject3DNotifyResult * GetObject3DNotifyResult();
```
Синтаксис COM:
```
IObject3DNotifyResult * GetObject3DNotifyResult();
Возвращаемое значение:
- указатель на интерфейс источника событий ksObject3DNotifyResult или IObject3DNotifyResult.
```


## GetObjectByName - Получить компонент по имени

Синтаксис Automation:
```
LPDISPATCH GetObjectByName( BSTR name,
short objType,
BOOL testFullName,
BOOL testIgnoreCase );
```
Синтаксис COM:
```
LPUNKNOWN GetObjectByName( LPOLESTR name,
short objType,
BOOL testFullName,
BOOL testIgnoreCase );
Входные параметры:
name    - имя компонента,
objType    - тип компонента,
testFullName    - полное имя компонента: TRUE - использовать полное имя, FALSE - частичное совпадение,
testIgnoreCase    - игнорировать регистр.
Возвращаемое значение:
- указатель на интерфейс ksEntity или IEntity.
```
Примечания:
Объект - это вспомогательная информация, и визуально никак не отображается. Например, если создать болт как макро относительно какого-нибудь объекта (например отверстие - цилиндрическая поверхность), и запомнить это отверстие в макро болта, то при следующем редактирование можно получить сохранённый указатель на отверстие.
См. также: IPart::SetObject


## GetPart - Получить указатель на интерфейс компонента в соответствии с заданным типом

Синтаксис Automation:
```
LPDISPATCH GetPart (long type);
```
Синтаксис COM:
```
LPPART GetPart(int type);
Входные параметры:
type    - тип компонента.
Типы компонентов...
Возвращаемое значение:
- указатель на интерфейс компонента ksPart или IPart.
```
Примечание:
Тип задается для нового, редактируемого или главного компонента либо тип равен номеру компонента в документе. Функция используется, чтобы получить доступ к компоненту документа. Деталь или сборка являются компонентами. Сборка, в свою очередь, состоит из компонентов - деталей и подсборок.


## GetPlacement - Получить указатель на интерфейс местоположения компонента

Пример...
Синтаксис Automation:
```
LPDISPATCH GetPlacement();
```
Синтаксис COM:
```
LPPLACEMENT GetPlacement();
Возвращаемое значение:
- указатель на интерфейс ksPlacement или IPlacement.
```


## GetSummMatrix - Получить суммарную матрицу преобразования координат

Синтаксис Automation:
```
VARIANT GetSummMatrix( LPDISPATCH part1 );
```
Синтаксис COM:
```
BOOL GetSummMatrix( VARIANT * matrix,
LPPART part1 );
Входные параметры:
part1    - указатель на интерфейс ksPart или IPart детали из которой нужно сделать пересчет координат.
Возвращаемое значение:
массив SafeArray типа VT_ARRAY    VT_R8
```
Примечания:
1. Элементы матрицы возвращаются в виде одномерного массива из шестнадцати элементов.
2. Матрица имеет размер 4х4.


## GetUserParam - Возвращает пользовательские параметры, записанные в компоненте

Синтаксис Automation:
```
BOOL GetUserParam (LPDISPATCH userPars);
Выходной параметр:
userPars    - указатель на интерфейс пользовательских параметров ksUserParam.
```
Синтаксис COM:
```
BOOL GetUserParam (void *value,
unsigned int size);
Входной параметр:
Size    - размер структуры параметров.
Выходной параметр:
Value    - пользовательская структура параметров.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечание:
Способ получения пользовательских данных (userPars) должен совпадать со способом их сохранения (void*, SAFEARRAY, или DynamicArray) через ksPart::SetUserParam.
•Если пользовательские данные были сохранены через SAFEARRAY (userPars), то перед их получением нужно создать SAFEARRAY соответствующего размера (размер данных можно определить при помощи ksPart::GetUserParamSize).
•Если пользовательские данные были сохранены через ksUserParam::SetUserArray, то перед их получением нужно создать UserArray, аналогичный по структуре используемому при сохранении, и передать его в ksUserParam::SetUserArray.


## GetUserParamSize - Возвращает размер (в байтах) пользовательских параметров, записанных в компоненте

Синтаксис Automation:
```
long GetUserParamSize();
```
Синтаксис COM:
```
long GetUserParamSize();
```


## hidden - Состояние видимости объекта

Тип данных: BOOL
Значения свойства:
| TRUE | - объект скрытый, |
| --- | --- |
| FALSE | - объект видимый. |
Синтаксис Automation:
```
hidden = iPart.hidden    Получить свойство (* )
iPart.hidden = hidden    Установить свойство (* )
hidden = iPart.GetHidden()    Получить свойство (**)
iPart.SetHidden (hidden)    Установить свойство (**)
```


## IsDetail - Определить, является ли компонент деталью

Синтаксис Automation:
```
BOOL IsDetail();
```
Синтаксис COM:
```
BOOL IsDetail();
Возвращаемое значение:
TRUE    - деталь,
FALSE    - сборка.
```


## marking - Обозначение компонента

Тип данных: строка
Синтаксис Automation:
```
marking = iPart.marking    Получить свойство (* )
iPart.marking = marking    Установить свойство (* )
marking = iPart.GetMarking()    Получить свойство (**)
iPart.SetMarking(marking)    Установить свойство (**)
```


## material - Материал детали

Тип данных: строка
Синтаксис Automation:
```
material = iPart.material    Получить свойство (* )
material = iPart.GetMaterial()    Получить свойство (**)
```
Примечания:
1. Данное свойство доступно только для чтения.
2. Обозначение материала можно получить только у детали.


## MultiBodyParts - Признак того, что компонент состоит из нескольких частей

Тип данных: BOOL
Значения свойства:
| TRUE | - компонент состоит из нескольких частей, |
| --- | --- |
| FALSE | - компонент не состоит из нескольких частей. |
Синтаксис Automation:
```
MultiBodyParts = iPart.MultiBodyParts    Получить свойство (* )
MultiBodyParts = iPart.GetMultiBodyParts()    Получить свойство (**)
```
Примечания:
Свойство позволяет узнать состоит ли компонент их нескольких частей.
В результате работы свойства можно получить компонент (деталь), состоящую из нескольких частей. С точки зрения конструктора, деталь должна представлять нечто целое. Частей быть не должно. Следовательно, нужно отыскать в компоненте операции, порождающие несколько частей, и выключить из расчета не нужные, чтобы образовалось целое тело.


## name - Имя детали или подсборки в составе сборки

Тип данных: строка
Синтаксис Automation:
```
name = iPart.name    Получить свойство (* )
iPart.name = name    Установить свойство (* )
name = iPart.GetName()    Получить свойство (**)
iPart.SetName(name)    Установить свойство (**)
```


## needRebuild - Необходимость перестроения объектов при изменении их свойств

Тип данных: BOOL
Значения свойства:
| TRUE | - При вызове метода ksEntity после установки модельному объекту новых свойств модель будет перестроена, |
| --- | --- |
| FALSE | - модель перестраиваться не будет. |
Синтаксис Automation:
```
needRebuild = iPart.needRebuild    Получить свойство (* )
iPart.needRebuild = needRebuild    Установить свойство (* )
needRebuild = iPart.GetNeedRebuild()    Получить свойство (**)
iPart.SetNeedRebuild (needRebuild)    Установить свойство (**)
```
Синтаксис COM:
```
needRebuild = iPart->GetNeedRebuild()    Получить свойство
iPart->SetNeedRebuild (needRebuild)    Установить свойство
```
Примечания:
Если необходимо изменить свойства нескольких объектов, то достаточно одного перестроения модели после установки новых свойств всем модельным объектам. Для этого перед изменением свойств объектов нужно установить значение этого свойства равным FALSE, поменять свойства объектов и вызвать у каждого из них метод ksEntity::Update, а затем вызвать метод ksPart::RebuildModelEx с параметром redraw равным TRUE.
Если значению данного свойства установлено FALSE, то после каждого вызова метода ksEntity::Update у объекта модель будет перестраиваться.


## NewEntity - Создать новый интерфейс объекта и получить указатель на него

Синтаксис Automation:
```
LPDISPATCH NewEntity (short objType);
```
Синтаксис COM:
```
LPENTITY NewEntity (short objType);
Входной параметр:
objType    - тип объекта.
Возвращаемое значение:
- указатель на интерфейс ksEntity или IEntity.
```
Примечание:
Реальный объект создается в модели после вызова метода Create.


## PropertyObjectEditable - Поддерживается интерфейс внешних свойств объекта

Тип данных: BOOL
Синтаксис Automation:
```
PropertyObjectEditable = Object.PropertyObjectEditable    Получить свойство (* )
Object.PropertyObjectEditable = PropertyObjectEditable    Установить свойство (* )
PropertyObjectEditable = Object.GetPropertyObjectEditable()    Получить свойство (**)
Object.SetPropertyObjectEditable( PropertyObjectEditable )    Установить свойство (**)
```


## PutStorage - Вставить деталь-заготовку

Синтаксис Automation:
```
BOOL PutStorage (LPOLESTR fileName,
BOOL type,
BOOL mirror);
```
Синтаксис COM:
```
BOOL PutStorage (const char* fileName,
BOOL type,
BOOL mirror);
Входные параметры:
fileName    - имя файла детали-заготовки,
type    - тип вставки детали-заготовки (TRUE - внешней ссылкой, FALSE - без истории),
mirror    - признак вставки "зеркальной" детали (TRUE - "зеркальная" деталь, FALSE - деталь в том виде, в котором она существует в файле-источнике).
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```


## RebuildModel - Перестроить модель в соответствии с новыми значениями свойств объектов и внешних переменных

Синтаксис Automation:
```
BOOL RebuildModel();
```
Синтаксис COM:
```
BOOL RebuildModel();
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечание:
Если изменены значения внешних переменных компонента, то они будут переданы в модель. Если компонент является фантомом, то он будет перестроен.


## RebuildModelEx - Перестроить модель в соответствии с новыми значениями свойств объектов и внешних переменных

Синтаксис Automation:
```
BOOL RebuildModelEx (BOOL redraw);
```
Синтаксис COM:
```
BOOL RebuildModelEx (BOOL redraw);
Входные параметры:
redraw    - признак перестроения документа: TRUE - перестроить документ, FALSE - не перестраивать.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечание:
1. Если изменены значения внешних переменных компонента, то они будут переданы в модель. Если параметру redraw установлено значение TRUE или компонент является фантомом, то он будет перестроен.
2. Значение redraw, равное FALSE, предполагается использовать для ускорения работы при многократном редактировании одной и той же детали. Перерисовка документа в этом случае не выполняется. Однако следует учитывать, что после завершения редактирования необходимо вызвать метод с параметром redraw, равным TRUE.


## SetAdvancedColor - Установить параметры цвета и визуальных свойств объекта

Синтаксис Automation:
```
BOOL SetAdvancedColor (long color,
double ambient,
double diffuse,
double specularity,
double shininess,
double transparency,
double emission);
```
Синтаксис COM:
```
BOOL SetAdvancedColor (COLORREF color,
double ambient,
double diffuse,
double specularity,
double shininess,
double transparency,
double emission);
Входные параметры:
color    - цвет,
ambient    - общий свет,
diffuse    - диффузия,
specularity    - зеркальность,
shininess    - блеск,
transparency    - прозрачность,
emission    - излучение.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```


## SetFileName - Установить имя файла детали

Синтаксис Automation:
```
BOOL SetFileName (BSTR name);
```
Синтаксис COM:
```
BOOL SetFileName (LPOLESTR name);
Входной параметр:
name    - полное имя файла детали.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечания:
1. Метод используется для компонентов, вставленных в сборку.
2. Документ с указанным именем должен существовать.
3. Компонент не должен быть деталью из библиотеки моделей или стандартным элементом.
4. Изменение вступает в силу после вызова метода ksPart::Update.


## SetMateConstraintObjects - Сохранить в детали зависимые объекты для повторного редактирования детали

Синтаксис Automation:
```
BOOL SetMateConstraintObjects (LPDISPATCH collection);
```
Синтаксис COM:
```
BOOL SetMateConstraintObjects (LPENTITYCOLLECTION collection);
Входной параметр:
collection    - указатель на интерфейс ksEntityCollection или IEntityCollection.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечание:
Функция работает в сборке. Массив объектов формируется в результате работы процесса UserGetPlacementAndEntity для данной детали. Как правило, на указанные в процессе объекты накладываются сопряжения с объектами данной детали. Если массив сохранить, то при повторном входе в процесс связанные объекты будут выделены. Если collection = NULL, массив будет взят из документа, который получился после работы процесса UserGetPlacementAndEntity для данной детали.


## SetMaterial - Установить материал детали

Синтаксис Automation:
```
BOOL SetMaterial (BSTR name,
double density);
```
Синтаксис COM:
```
BOOL SetMaterial (LPOLESTR name,
double density);
Входные параметры:
name    - название материала,
density    - плотность материала (г/куб.см).
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечания:
1. Компонент, у которого меняется материал, должен быть деталью.
2. Компонент не должен быть деталью из библиотеки моделей или стандартным элементом.
3. Метод используется в детали для верхнего компонента, в сборках - для вставленных деталей.
4. Изменение материала вступает в силу после вызова метода ksPart::Update.


## SetObject - Сохранить указатель на вспомогательный объект в деталь по индексу

Синтаксис Automation:
```
BOOL SetObject(long index, LPDISPATCH obj);
```
Синтаксис COM:
```
BOOL SetObject(long index, LPUNKNOWN obj);
Входные параметры:
index    - номер объекта,
obj    - указатель на интерфейс объекта,
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечания:
Объект - это вспомогательная информация и визуально никак не отображается. Например, если создать болт как макро относительно какого-нибудь объекта (например отверстие - цилиндрическая поверхность), и запомнить это отверстие в макро болта, то при следующем редактирование можно получить сохранённый указатель на отверстие.
См. также: IPart::GetObject


## SetPlacement - Установить новое местоположение компонента

Синтаксис Automation:
```
BOOL SetPlacement (LPDISPATCH placement);
```
Синтаксис COM:
```
BOOL SetPlacement (LPPLACEMENT placement);
Входной параметр:
placement    - указатель на интерфейс ksPlacement или IPlacement.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечание:
Данный метод вступает в силу после вызова метода UpdatePlacement.


## SetSourceVariables - Установить для вставки значения переменных из источника

Синтаксис Automation:
```
BOOL SetSourceVariables( BOOL rebuild );
```
Синтаксис COM:
```
BOOL SetSourceVariables( BOOL rebuild );
Входной параметр:
rebuild    - перестроить вставку.
```
Примечание:
Функция позволяет сбросить изменения значений переменных во вставке и установить значения, заданные в источнике.


## SetUserParam - Установить параметры компонента, указанные пользователем

Синтаксис Automation:
```
BOOL SetUserParam (LPDISPATCH userPars);
Входной параметр:
userPars    - указатель на интерфейс пользовательских параметров ksUserParam.
```
Синтаксис COM:
```
BOOL SetUserParam (void *value,
unsigned int size,
LPOLESTR nameFile,
LPOLESTR nameLib,
int number);
Входные параметры:
value    - указатель на пользовательскую структуру параметров,
size    - размер структуры параметров,
nameFile    - имя файла прикладной библиотеки для последующего редактирования через библиотеку (0 - запоминается текущая библиотека),
nameLib    - имя прикладной библиотеки для последующего редактирования через библиотеку (0 - запоминается текущая библиотека),
number    - номер команды в прикладной библиотеке для последующего редактирования через библиотеку (-1 - запоминается текущая команда).
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечание:
Данный метод позволяет сохранить параметры пользователя для последующего редактирования с помощью библиотеки.


## standardComponent - Признак стандартного компонента

Тип данных: BOOL
Значения свойства:
| TRUE | - компонент стандартный, |
| --- | --- |
| FALSE | - компонент нестандартный. |
Синтаксис Automation:
```
standardComponent = iPart.standardComponent    Получить свойство (* )
iPart.standardComponent = standardComponent    Установить свойство (* )
standardComponent = iPart.GetStandardComponent()    Получить свойство (**)
iPart.SetStandardComponent(standardComponent)    Установить свойство (**)
```
Примечание:
Стандартный компонент не имеет Дерева построения и редактируется только через прикладную библиотеку (если он был создан библиотекой, и в нем сохранены имя библиотеки и номер команды редактирования методом SetUserParam).


## TransformPoint - Перевести координаты точки присланной детали part1 в систему координат детали

Синтаксис Automation:
```
BOOL TransformPoint (double* x, double* y, double* z, LPDISPATCH part1);
```
Синтаксис COM:
```
BOOL TransformPoint (double* x, double* y, double* z, LPPART part1);
Входные параметры:
x, y, z    - координаты точки в системе координат детали part1,
part1    указатель на интерфейс детали ksPart, из системы координат которой нужно перевести точку.
Выходные параметры:
x, y, z    - координаты точки в системе координат детали.
Возвращаемое значение:
TRUE    - в случае успеха,
FALSE    - в случае неудачи.
```


## TransformPoints - Перевести координаты точек присланной детали part1 в систему координат детали

Синтаксис Automation:
```
BOOL TransformPoints( VARIANT * points,
LPDISPATCH part1 );
```
Синтаксис COM:
```
BOOL TransformPoints( VARIANT * points,
LPPART part1 );
Входные параметры:
points    - массив SAFEARRAY координат точек,
part1    - указатель на интерфейс детали в системе координат которой заданы точки.
Выходные параметры:
points    - массив SAFEARRAY координат точек.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечания:
1. Значения координат изменяются непосредственно в присланном массиве SAFEARRAY.
2. Тип варианта должен быть VT_ARRAY | VT_R8.
3. Значения в массиве должны лежать в последовательности x1, y1, z1, x2, y2, z2 ... xn, yn, zn.


## Update - Изменить свойства компонента (используя ранее установленные свойства)

Синтаксис Automation:
```
BOOL Update();
```
Синтаксис COM:
```
BOOL Update();
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечание:
После вызова этого метода все изменения отображаются в компоненте.


## UpdatePlacement - Изменить местоположение компонента, заданное методом SetPlacement

Пример...
Синтаксис Automation:
```
BOOL UpdatePlacement();
```
Синтаксис COM:
```
BOOL UpdatePlacement();
Возвращаемое значение:
TRUE    - в случае успешного завершения.
См. также метод SetPlacement
```


## UpdatePlacementEx - Изменить местоположение компонента, заданное методом SetPlacement

Синтаксис Automation:
```
BOOL UpdatePlacementEx (BOOL redraw);
```
Синтаксис COM:
```
BOOL UpdatePlacementEx (BOOL redraw);
Входные параметры:
redraw    - признак перестроения документа после изменения местоположения компонента: (TRUE - перестроить документ, FALSE - не перестраивать).
Возвращаемое значение:
TRUE    - в случае успешного завершения.
См. также метод SetPlacement
```


## useColor - Используемый цвет (цвет источника, цвет хозяина, собственный цвет)

Тип данных: long
Значения свойства...
Синтаксис Automation:
```
useColor = iPart.useColor    Получить свойство (* )
iPart.useColor = useColor    Установить свойство (* )
useColor = iPart.GetUseColor()    Получить свойство (**)
iPart.SetUseColor(useColor)    Установить свойство (**)
```
Примечания:
1. Cобственный цвет можно получить или установить, используя методы:
SetAdvancedColor, GetAdvancedColor и ColorParam.
2. Свойство применимо для деталей и подсборок в сборке.


## VariableCollection - Получить указатель на интерфейс массива внешних переменных

Синтаксис Automation:
```
LPDISPATCH VariableCollection();
```
Синтаксис COM:
```
LPVARIABLECOLLECTION VariableCollection();
Возвращаемое значение:
- указатель на интерфейс ksVariableCollection или IVariableCollection.
```
Примечание:
Изменения в полученном массиве не отображаются в модели немедленно. Чтобы изменения вступили в силу, необходимо вызвать метод RebuildModel.
