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>
226 lines
9.9 KiB
Markdown
226 lines
9.9 KiB
Markdown
---
|
||
title: "Трехмерное тело (Интерфейсы ksBody, Body)"
|
||
type: interface
|
||
api: [api7]
|
||
domain: [3d, 2d]
|
||
tags: [interface, api7, 3d, 2d, ksbody]
|
||
sources:
|
||
- ksbody.html
|
||
---
|
||
|
||
*API интерфейсов. Версия 5 > Документ-модель (Интерфейсы - ksDocument3D, IDocument3D ) > Компонент сборки (деталь или подсборка). Интерфейсы ksPart и IPart > Объект модели (Интерфейсы ksEntity и IEntity) > Интерфейсы ksEntity и iEntity - Интерфейс элемента модели (оси, плоскости, формообразующего элемента) > Интерфейс массива трехмерных тел (Интерфейсы ksBodyCollection, IBodyCollection) *
|
||
|
||
|
||
## Трехмерное тело (Интерфейсы ksBody, Body)
|
||
|
||
Интерфейс трехмерного тела.
|
||
| ksBody | - интерфейс Automation |
|
||
| --- | --- |
|
||
| IBody | - интерфейс COM |
|
||
Примечание:
|
||
1. Твердое тело состоит из массива граней.
|
||
2. Данный интерфейс может быть получен от интерфейса коллекции тел ksBodyCollection, IBodyCollection или от интерфейса компонента ksPart, IPart с помощью метода ksPart::GetMainBody, IPart::GetMainBody.
|
||
|
||
|
||
## CheckIntersectionWithBody - Проверить наличия пересечений с другим телом
|
||
|
||
Интерфейс..
|
||
Синтаксис Automation:
|
||
```
|
||
LPDISPATCH CheckIntersectionWithBody (LPDISPATCH otherBody,
|
||
BOOL checkTangent);
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
LPINTERSECTIONRESULT CheckIntersectionWithBody (LPBODY otherBody,
|
||
BOOL checkTangent);
|
||
Входные параметры:
|
||
otherBody - тело, с которым проверяется пересечение,
|
||
checkTangent - считать касания пересечениями.
|
||
Возвращаемое значение:
|
||
Интерфейс ksIntersectionResult - в случае успеха,
|
||
NULL - если пересечений нет.
|
||
```
|
||
|
||
|
||
## CurveIntersection - Рассчитать пересечения с кривой
|
||
|
||
Интерфейс..
|
||
Automation:
|
||
BOOL CurveIntersection (LPDISPATCH curve,
|
||
LPDISPATCH fases,
|
||
LPDISPATCH points);
|
||
Синтаксис COM:
|
||
```
|
||
BOOL CurveIntersection (LPCURVE3D curve,
|
||
LPFACECOLLECTION faces,
|
||
LPCOORDINATE3DCOLLECTION points);
|
||
Входные параметры:
|
||
curve - Указатель на интерфейс 3D кривой ksCurve3D.
|
||
Выходные параметры:
|
||
faces - Коллекция граней пересекаемых кривой ksFaceCollection,
|
||
points - Коллекция координат точек пересечений ksCoordinate3dCollection.
|
||
Возвращаемое значение:
|
||
TRUE - в случае успеха,
|
||
FALSE - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
1. Координаты точек сортируются по параметру кривой t.
|
||
2. Параметры faсes, points являются необязательными.
|
||
3. Заполняются только присланные коллекции.
|
||
4. Интерфейсы коллекций для заполнения нужно получить с помощью функций:
|
||
•ksFaceCollection, ksD ocument3D::GetInterface с параметром o3dType = o3d_faceCollection;
|
||
•ksCoordinate3dCollection, ksDocument3D::GetInterface с параметром o3dType = o3d_coordinate3dCollection.
|
||
|
||
|
||
## FaceCollection - Получить указатель на интерфейс массива граней, образующих тело
|
||
|
||
Интерфейс..
|
||
Синтаксис Automation:
|
||
```
|
||
LPDISPATCH FaceCollection();
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
LPFACECOLLECTION FaceCollection();
|
||
Возвращаемое значение:
|
||
- указатель на интерфейс ksFaceCollection или IFaceCollection.
|
||
```
|
||
|
||
|
||
## GetFeature - Получить объект дерева, связанный с данным телом
|
||
|
||
Интерфейс..
|
||
Синтаксис Automation:
|
||
```
|
||
LPDISPATCH GetFeature();
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
LPFEATURE GetFeature();
|
||
Возвращаемое значение:
|
||
- указатель на интерфейс ksFeature или IFeature.
|
||
```
|
||
|
||
|
||
## GetGabarit - Получить габарит тела
|
||
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetGabarit (double *x1,
|
||
double *y1,
|
||
double *z1,
|
||
double * x2,
|
||
double *y2,
|
||
double *z2);
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
BOOL GetGabarit (double *x1,
|
||
double *y1,
|
||
double *z1,
|
||
double * x2,
|
||
double *y2,
|
||
double *z2);
|
||
Выходные параметры:
|
||
x1, y1, z1 - координаты первой вершины габаритного куба,
|
||
x2, y2, z2 - координаты второй вершины габаритного куба.
|
||
Возвращаемое значение:
|
||
TRUE - в случае успеха,
|
||
FALSE - в случае неудачи.
|
||
```
|
||
|
||
|
||
## GetIntersectionFacesWithBody - Определить взаимодействующие грани при пересечении данного тела с другим
|
||
|
||
Интерфейс..
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL GetIntersectionFacesWithBody (LPDISPATCH otherBody, VARIANT * intersectionFaces1,
|
||
VARIANT * intersectionFaces2,
|
||
VARIANT * connectedFaces1,
|
||
VARIANT * connectedFaces2);
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
BOOL GetIntersectionFacesWithBody (LPBODY otherBody, VARIANT * intersectionFaces1,
|
||
VARIANT * intersectionFaces2,
|
||
VARIANT * connectedFaces1,
|
||
VARIANT * connectedFaces2).
|
||
Входные параметры:
|
||
otherBody - второе тело.
|
||
Выходные параметры:
|
||
intersectionFaces1 - пересекаемые грани первого тела,
|
||
intersectionFaces2 - пересекаемые грани второго тела,
|
||
connectedFaces1 - совпадающие грани первого тела,
|
||
connectedFaces2 - совпадающие грани второго тела.
|
||
Возвращаемое значение:
|
||
TRUE - в случае успешного завершения,
|
||
FALSE - в случае неудачи.
|
||
```
|
||
Примечание:
|
||
Пересекаемые и совпадающие грани возвращаются в VARIANT-е так:
|
||
•Если грань одна, то VARIANT заполняется как VT_DISPATH в автоматизации и VT_UNKNOVN в COM.
|
||
•Если граней несколько, то VARIANT заполняется как массив SafeArray типа VT_ARRAY | VT_DISPATH в автоматизации и VT_ARRAY | VT_UNKNOVN в COM.
|
||
Количество граней в массивах intersectionFaces1 и intersectionFaces2 совпадают и образуют пары, т.е. грань с индексом i из массива intersectionFaces1 пересекается с гранью i из массива intersectionFaces2.
|
||
Одна и та же грань может встречаться в массиве несколько раз, если она пересекается с несколькими гранями.
|
||
Так же заполняются и массивы connectedFaces1 и connectedFaces2.
|
||
|
||
|
||
## IsSolid - Является ли объект твердым телом или поверхностью
|
||
|
||
Интерфейс..
|
||
Синтаксис Automation:
|
||
```
|
||
BOOL IsSolid();
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
BOOL IsSolid();
|
||
Возвращаемое значение:
|
||
TRUE - объект является твердым телом,
|
||
FALSE - объект является поверхностью.
|
||
```
|
||
Примечание:
|
||
Твердое тело может состоять из набора поверхностей.
|
||
|
||
|
||
## MassInertiaParam - Получить указатель на интерфейс массово-центровочных характеристик
|
||
|
||
Интерфейс..
|
||
Синтаксис Automation:
|
||
```
|
||
LPDISPATCH CalcMassInertiaProperties (long bitVector);
|
||
```
|
||
Синтаксис COM:
|
||
```
|
||
LPMASSINERTIAPARAM CalcMassInertiaProperties (unsigned int bitVector);
|
||
Входной параметр:
|
||
bitVector - определяет размерность длины, размерность массы.
|
||
Возвращаемое значение:
|
||
- указатель на интерфейс ksIMassInertiaParam или IMassInertiaParam.
|
||
```
|
||
Примечания:
|
||
Варианты значений для задания значений bitVector находятся в интервале [ST_MIX_MM..ST_MIX_KG]
|
||
Пример:
|
||
```vb
|
||
(метры|кг - ST_MIX_M|ST_MIX_KG).
|
||
```
|
||
|
||
|
||
## MultiBodyParts - Признак того, что компонент состоит из нескольких частей
|
||
|
||
Тип данных: BOOL
|
||
Значения свойства:
|
||
| TRUE | - компонент состоит из нескольких частей, |
|
||
| --- | --- |
|
||
| FALSE | - компонент не состоит из нескольких частей. |
|
||
Синтаксис Automation:
|
||
```
|
||
MultiBodyParts = iBody.MultiBodyParts Получить свойство (* )
|
||
MultiBodyParts = iBody.GetMultiBodyParts() Получить свойство (**)
|
||
```
|
||
Примечания:
|
||
Свойство позволяет узнать состоит ли компонент их нескольких частей.
|
||
В результате работы свойства можно получить компонент (деталь), состоящую из нескольких частей. С точки зрения конструктора, деталь должна представлять нечто целое. Частей быть не должно. Следовательно, нужно отыскать в компоненте операции, порождающие несколько частей, и выключить из расчета не нужные, чтобы образовалось целое тело.
|