/
Team8
/
kittycad
Обзор
Документация
Войти
/
Team8
/
kittycad
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/data/solids/extrusion.cpp
86 строк
2 KB
levovix
fix: icons are now embeded into binary
07 янв 2026, 19:47
07 янв 2026, 19:47
48fb22d
Код
Авторство
О чём код?
#include "extrusion.h" #include <solid.h> #include <mesh.h> #include <model.h> #include <cur_polyline.h> #include <cur_polyline3d.h> #include <action_curve.h> #include <action_solid.h> #include <vsn_scenesegment.h> #include <vsn_scenecontent.h> #include <vsn_geometryfactory.h> #include "cr_extrusion_solid.h" #include "data/sketch/sketch.h" #include "geometry/contours.h" using namespace VSN; using namespace c3d; void data::Extrusion::buildSolid() { assert(m_propertyChanged || m_dependencyChanged); if (m_dependencyChanged) { solid = nullptr; } m_propertyChanged = false; m_dependencyChanged = false; markVisualChanged(); if (targetSketch == nullptr) { return; } ExtrusionValues params; params.side1 = length; params.thickness1 = thickness; if (solid) { std::vector<SPtr<MbCreator>> creators; solid->GetCreators(creators); auto creator = dynamic_cast<MbCurveExtrusionSolid*>(creators.back().get()); creator->SetParameters(params); solid->RebuildItem(cm_Same, nullptr, nullptr); } else { auto names = MbSNameMaker(ct_ElementarySolid, MbSNameMaker::i_SideNone, 0); auto cNames = PArray<MbSNameMaker>(0, 1, false); auto curves = targetSketch->getAllMainCurves(); std::vector<SPtr<MbContour>> contours{}; while (curves.size() != 0) { auto contour = constructContinuousContour(curves, thickness != 0); if (contour != nullptr) { contours.push_back(contour); } else { // todo: выводить куда-то информацию о том что какой-то из контуров оказался незамкнутым } } if (contours.size() == 0) { return; } auto plane = SurfaceSPtr(new MbPlane(MbPlacement3D{ targetSketch->xAxis, targetSketch->yAxis, targetSketch->origin, })); auto sweptData = MbSweptData(*plane, contours); MbSolid* solid_raw{}; if (auto code = ::ExtrusionSolid( sweptData, axis, nullptr, nullptr, false, params, names, cNames, solid_raw ); code != rt_Success) { return; } solid = solid_raw; } } std::string_view data::Extrusion::iconName() const { return "tool_extrude"; }