Files
kompas3d-mcp/docs/Kompas3D_SDK/interfaces/ksbody.md
T
mikhail e1337e4016 feat(sdk-docs): MD-база знаний SDK — в репозиторий; генератор и зеркало убраны
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>
2026-05-26 20:00:05 +03:00

9.9 KiB
Raw Blame History

title, type, api, domain, tags, sources
title type api domain tags sources
Трехмерное тело (Интерфейсы ksBody, Body) interface
api7
3d
2d
interface
api7
3d
2d
ksbody
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] Пример:

(метры|кг - ST_MIX_M|ST_MIX_KG).

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

Тип данных: BOOL Значения свойства:

TRUE - компонент состоит из нескольких частей,
FALSE - компонент не состоит из нескольких частей.
Синтаксис Automation:
MultiBodyParts = iBody.MultiBodyParts    Получить свойство (* )
MultiBodyParts = iBody.GetMultiBodyParts()    Получить свойство (**)

Примечания: Свойство позволяет узнать состоит ли компонент их нескольких частей. В результате работы свойства можно получить компонент (деталь), состоящую из нескольких частей. С точки зрения конструктора, деталь должна представлять нечто целое. Частей быть не должно. Следовательно, нужно отыскать в компоненте операции, порождающие несколько частей, и выключить из расчета не нужные, чтобы образовалось целое тело.