Files
kompas3d-mcp/docs/Kompas3D_SDK/guides/addcurve.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

2.2 KiB

title, type, api, tags, sources
title type api tags sources
IImportedSurfaceDefinition::AddCurve - пример использования guide
api7
guide
api7
addcurve
addcurve_example.html

void WorkImportedSurfaceAddCurve( KompasObject &kompas ){ int pointCountAll = 6; //кратное трем (x, y, z) int curveCount = 3; double x = 50, dx = 30; double y = 50, dy = 40; double z = 0, dz = 100; int pointCount = pointCountAll / 3; SAFEARRAYBOUND sabound[1]; SAFEARRAY FAR psa; // Создание safe array double sabound[0].cElements = pointCountAll; sabound[0].lLbound = 0; psa =::SafeArrayCreate(VT_R8, 1, sabound); VARIANT v; VariantInit(&v); V_VT(&v) = VT_ARRAY | VT_R8; V_ARRAY(&v) = psa; long index; double d; if ( kompas.m_lpDispatch ) { //получить активный 3d документ ksDocument3D doc( kompas.ActiveDocument3D() ); if ( doc.m_lpDispatch ) { //получить компонент документа ksPart part( doc.GetPart( pTop_Part) ); if ( part ) { //получить новый объект импортированной поверхности ksEntity entity(part.NewEntity(o3d_importedSurface); if (entity) { //Определение импортированной поверхности ksImportedSurfaceDefinition importedSurfaceDef( entity.GetDefinition()); //добавляем в импортированную поверхность кривые по массиву точек if (importedSurfaceDef){ for ( uint i = 0; i < curveCount; i ) { for (uint j = 0; j < pointCount; j ) { //наполняем safe array. Каждая точка представлена тремя координатами x, y, z index = j3; d = x dxi; ::SafeArrayPutElement(psa, &index, &d); index = j3 1; d = y - dy*(i%2); ::SafeArrayPutElement(psa, &index, &d); index = j3 2; d = z dzj; ::SafeArrayPutElement(psa, &index, &d); } //добавить кривую по массиву точек importedSurfaceDef.AddCurve ( v ); } //создать импортированную поверхность entity.Create(); } } } } else kompas.ksError( "3d документ не активизирован" ); } //удалить safe array double if ( psa ) ::SafeArrayDestroy(psa); }