--- 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. Ее наличие обязательно, так как именно ему передает управление КОМПАС при обращении к библиотеке. В данном случае она обеспечивает выдачу сообщения и построение одного единственного объекта чертежа - отрезка. Функции