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>
86 lines
5.0 KiB
Markdown
86 lines
5.0 KiB
Markdown
---
|
|
title: "Элементарные тела"
|
|
type: guide
|
|
api: [api7]
|
|
domain: [3d]
|
|
tags: [guide, api7, 3d, simple]
|
|
sources:
|
|
- simple_bodies.html
|
|
---
|
|
|
|
*API интерфейсов. Версия 7 > Документ 3D *
|
|
|
|
|
|
## Элементарные тела
|
|
|
|
Интерфейс IElementaryBody
|
|
Интерфейс IElementaryBodies
|
|
Интерфейс IBlockByPoints
|
|
Интерфейс IBlockBySizes
|
|
Интерфейс IConeByAngle
|
|
Интерфейс IConeByHeight
|
|
Интерфейс ICylinder
|
|
Интерфейс ISphere
|
|
|
|
|
|
## Пример простейшей программы в среде VC++, оформленной в виде библиотеки КОМПАС
|
|
|
|
#ifndef __LIBTOOL_H
|
|
#include «libtool.h»
|
|
#endif
|
|
char * WINAPI LIBRARYNAME()
|
|
{
|
|
return "Самая простая библиотека";
|
|
}
|
|
void WINAPI LIBRARYENTRY( unsigned int comm )
|
|
{
|
|
Message("Строим отрезок!");
|
|
LineSeg( 10, 10, 100, 100, 1 ); // x1, y1, x2, y2, тип линии - основная
|
|
}
|
|
Функция LIBRARYENTRY является точкой входа в библиотеку при вызове из КОМПАС. Наличие этой функции обязательно, так как именно ей передает управление КОМПАС при обращении к библиотеке. В данном случае она обеспечивает выдачу сообщения и построение одного единственного объекта чертежа - отрезка.
|
|
Все функции оформления библиотек должны быть объявлены в def файле как экспортные, например:
|
|
EXPORTS
|
|
LIBRARYID @1
|
|
LIBRARYENTRY @2
|
|
Функции
|
|
|
|
|
|
## Общие сведения о библиотеках типа AddIn
|
|
|
|
Пример...
|
|
Это обычная библиотека, но она регистрируется в реестре и загружается при запуске системы КОМПАС.
|
|
Без регистрации в реестре библиотеки такого типа работают как стандартные прикладные библиотеки КОМПАС.
|
|
Регистрация осуществляется в разделе HKEY_CURRENT_USER\\Software\\ASCON\\KOMPAS-3D\\AddIns или HKEY_LOCAL_MACHINE\\Software\\ASCON\\KOMPAS-3D\\AddIns. Для регистрации создается подраздел с уникальным именем (например, именем самой библиотеки). В этом разделе должны быть два значения:
|
|
•Тип значения REG_SZ:
|
|
"ProgID" - для ActiveX библиотек или "Path" - полный путь к файлу для простых библиотек. Если есть оба значения "ProgID" и "Path", то "Path" игнорируется. ActiveX библиотека должна быть зарегистрирована.
|
|
•Тип значения REG_DWORD:
|
|
"AutoConnect" - 1 - подключать библиотеку при запуске КОМПАС, 0 - не подключать. Если в реестре этого значения нет, то оно по умолчанию принимается равным 1.
|
|
Существует два способа регистрации библиотеки в реестре:
|
|
•при помощью функций DllRegisterServer.
|
|
•вызов команды regsvr32.exe libname.
|
|
Чтобы отменить регистрацию, необходимо использовать функцию DllUnregisterServer или вызвать команду regsvr32.exe \u libname.
|
|
AddIn библиотеки работают в режиме "Меню". Сменить режим нельзя, так же как и отключить библиотеку.
|
|
|
|
|
|
## Пример простейшей программы в среде VB, оформленной в виде ActiveX библиотеки КОМПАС
|
|
|
|
Dim iKompasObject As Object 'KompasObject
|
|
Dim iDocument2D As Object 'ksDocument2D
|
|
Public Function GetLibraryName() As String
|
|
GetLibraryName = “Самая простая библиотека”
|
|
End Function
|
|
Public Sub ExternalRunCommand(ByVal command As Integer, ByVal mode As Integer, ByVal Kompas As Object)
|
|
Set iKompasObject = Kompas
|
|
If iKompasObject Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
Set iDocument2D = iKompasObject.ActiveDocument2D
|
|
If iDocument2D Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
iKompasObject.ksMessage “Строим отрезок!”
|
|
iDocument2D.ksLineSeg 10, 10, 100, 100, 1 ' x1, y1, x2, y2, тип линии - основная
|
|
End Sub
|
|
Функция ExternalRunCommand - аналог функции LibraryEntry. Ее наличие обязательно, так как именно ему передает управление КОМПАС при обращении к библиотеке. В данном случае она обеспечивает выдачу сообщения и построение одного единственного объекта чертежа - отрезка.
|
|
Функции
|