SketcherGui: apply clang-format
This commit is contained in:
committed by
abdullahtahiriyo
parent
fd8b50d23f
commit
ec899d75c6
@@ -25,28 +25,27 @@
|
||||
#include <Base/Console.h>
|
||||
#include <Base/Exception.h>
|
||||
|
||||
#include "EditModeGeometryCoinConverter.h"
|
||||
#include "EditModeCoinManagerParameters.h"
|
||||
#include "EditModeGeometryCoinConverter.h"
|
||||
#include "Utils.h"
|
||||
#include "ViewProviderSketchCoinAttorney.h"
|
||||
#include "ViewProviderSketchGeometryExtension.h"
|
||||
#include "Utils.h"
|
||||
|
||||
|
||||
using namespace SketcherGui;
|
||||
|
||||
EditModeGeometryCoinConverter::EditModeGeometryCoinConverter( ViewProviderSketch & vp,
|
||||
GeometryLayerNodes & geometrylayernodes,
|
||||
DrawingParameters & drawingparameters,
|
||||
GeometryLayerParameters& geometryLayerParams,
|
||||
CoinMapping & coinMap ):
|
||||
viewProvider(vp),
|
||||
geometryLayerNodes(geometrylayernodes),
|
||||
drawingParameters(drawingparameters),
|
||||
geometryLayerParameters(geometryLayerParams),
|
||||
coinMapping(coinMap)
|
||||
EditModeGeometryCoinConverter::EditModeGeometryCoinConverter(
|
||||
ViewProviderSketch& vp, GeometryLayerNodes& geometrylayernodes,
|
||||
DrawingParameters& drawingparameters, GeometryLayerParameters& geometryLayerParams,
|
||||
CoinMapping& coinMap)
|
||||
: viewProvider(vp)
|
||||
, geometryLayerNodes(geometrylayernodes)
|
||||
, drawingParameters(drawingparameters)
|
||||
, geometryLayerParameters(geometryLayerParams)
|
||||
, coinMapping(coinMap)
|
||||
{}
|
||||
|
||||
void EditModeGeometryCoinConverter::convert(const Sketcher::GeoListFacade & geolistfacade)
|
||||
void EditModeGeometryCoinConverter::convert(const Sketcher::GeoListFacade& geolistfacade)
|
||||
{
|
||||
|
||||
// measurements
|
||||
@@ -63,7 +62,7 @@ void EditModeGeometryCoinConverter::convert(const Sketcher::GeoListFacade & geol
|
||||
pointCounter.clear();
|
||||
curveCounter.clear();
|
||||
|
||||
for(auto l=0; l<geometryLayerParameters.getCoinLayerCount(); l++){
|
||||
for (auto l = 0; l < geometryLayerParameters.getCoinLayerCount(); l++) {
|
||||
Coords.emplace_back();
|
||||
Points.emplace_back();
|
||||
Index.emplace_back();
|
||||
@@ -73,82 +72,93 @@ void EditModeGeometryCoinConverter::convert(const Sketcher::GeoListFacade & geol
|
||||
coinMapping.PointIdToVertexId.emplace_back();
|
||||
}
|
||||
|
||||
pointCounter.resize(geometryLayerParameters.getCoinLayerCount(),0);
|
||||
curveCounter.resize(geometryLayerParameters.getCoinLayerCount(),0);
|
||||
pointCounter.resize(geometryLayerParameters.getCoinLayerCount(), 0);
|
||||
curveCounter.resize(geometryLayerParameters.getCoinLayerCount(), 0);
|
||||
|
||||
// RootPoint
|
||||
// TODO: RootPoint is here added in layer0. However, this layer may be hidden. The point should,
|
||||
// when that functionality is provided, be added to the first visible layer, or may even a new
|
||||
// empty layer.
|
||||
Points[0].emplace_back(0.,0.,0.);
|
||||
coinMapping.PointIdToGeoId[0].push_back(-1); // root point
|
||||
coinMapping.PointIdToVertexId[0].push_back(-1); // VertexId is the reference used for point selection/preselection
|
||||
Points[0].emplace_back(0., 0., 0.);
|
||||
coinMapping.PointIdToGeoId[0].push_back(-1);// root point
|
||||
coinMapping.PointIdToVertexId[0].push_back(
|
||||
-1);// VertexId is the reference used for point selection/preselection
|
||||
|
||||
coinMapping.GeoElementId2SetId.emplace( std::piecewise_construct,
|
||||
std::forward_as_tuple(Sketcher::GeoElementId::RtPnt),
|
||||
std::forward_as_tuple(pointCounter[0]++, 0));
|
||||
coinMapping.GeoElementId2SetId.emplace(std::piecewise_construct,
|
||||
std::forward_as_tuple(Sketcher::GeoElementId::RtPnt),
|
||||
std::forward_as_tuple(pointCounter[0]++, 0));
|
||||
|
||||
auto setTracking = [this] (int geoId, int coinLayer, EditModeGeometryCoinConverter::PointsMode pointmode, int numberCurves) {
|
||||
auto setTracking = [this](int geoId,
|
||||
int coinLayer,
|
||||
EditModeGeometryCoinConverter::PointsMode pointmode,
|
||||
int numberCurves) {
|
||||
int numberPoints = 0;
|
||||
|
||||
if(pointmode == PointsMode::InsertSingle) {
|
||||
if (pointmode == PointsMode::InsertSingle) {
|
||||
numberPoints = 1;
|
||||
|
||||
coinMapping.GeoElementId2SetId.emplace( std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::start),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
coinMapping.GeoElementId2SetId.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::start),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
}
|
||||
else if (pointmode == PointsMode::InsertStartEnd) {
|
||||
numberPoints = 2;
|
||||
|
||||
coinMapping.GeoElementId2SetId.emplace( std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::start),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
coinMapping.GeoElementId2SetId.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::start),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
|
||||
coinMapping.GeoElementId2SetId.emplace( std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::end),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
coinMapping.GeoElementId2SetId.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::end),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
}
|
||||
else if (pointmode == PointsMode::InsertMidOnly) {
|
||||
numberPoints = 1;
|
||||
|
||||
coinMapping.GeoElementId2SetId.emplace( std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::mid),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
|
||||
|
||||
coinMapping.GeoElementId2SetId.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::mid),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
}
|
||||
else if (pointmode == PointsMode::InsertStartEndMid) {
|
||||
numberPoints = 3;
|
||||
|
||||
coinMapping.GeoElementId2SetId.emplace( std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::start),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
coinMapping.GeoElementId2SetId.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::start),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
|
||||
coinMapping.GeoElementId2SetId.emplace( std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::end),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
coinMapping.GeoElementId2SetId.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::end),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
|
||||
coinMapping.GeoElementId2SetId.emplace( std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::mid),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
coinMapping.GeoElementId2SetId.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::mid),
|
||||
std::forward_as_tuple(pointCounter[coinLayer]++, coinLayer));
|
||||
}
|
||||
|
||||
for(int i = 0; i < numberPoints; i++) {
|
||||
for (int i = 0; i < numberPoints; i++) {
|
||||
coinMapping.PointIdToGeoId[coinLayer].push_back(geoId);
|
||||
coinMapping.PointIdToVertexId[coinLayer].push_back(vertexCounter++);
|
||||
}
|
||||
|
||||
if(numberCurves > 0) // insert the first segment of the curve into the map
|
||||
coinMapping.GeoElementId2SetId.emplace( std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::none),
|
||||
std::forward_as_tuple(static_cast<int>(coinMapping.CurvIdToGeoId[coinLayer].size()), coinLayer));
|
||||
if (numberCurves > 0)// insert the first segment of the curve into the map
|
||||
coinMapping.GeoElementId2SetId.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(geoId, Sketcher::PointPos::none),
|
||||
std::forward_as_tuple(static_cast<int>(coinMapping.CurvIdToGeoId[coinLayer].size()),
|
||||
coinLayer));
|
||||
|
||||
for(int i = 0; i < numberCurves; i++)
|
||||
for (int i = 0; i < numberCurves; i++)
|
||||
coinMapping.CurvIdToGeoId[coinLayer].push_back(geoId);
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < geolistfacade.geomlist.size()- 2; i++) {
|
||||
for (size_t i = 0; i < geolistfacade.geomlist.size() - 2; i++) {
|
||||
|
||||
const auto GeoId = geolistfacade.getGeoIdFromGeomListIndex(i);
|
||||
const auto geom = geolistfacade.getGeometryFacadeFromGeoId(GeoId);
|
||||
@@ -158,46 +168,53 @@ void EditModeGeometryCoinConverter::convert(const Sketcher::GeoListFacade & geol
|
||||
|
||||
auto coinLayer = geometryLayerParameters.getSafeCoinLayer(layerId);
|
||||
|
||||
if (type == Part::GeomPoint::getClassTypeId()) { // add a point
|
||||
convert< Part::GeomPoint,
|
||||
EditModeGeometryCoinConverter::PointsMode::InsertSingle,
|
||||
EditModeGeometryCoinConverter::CurveMode::NoCurve,
|
||||
EditModeGeometryCoinConverter::AnalyseMode::BoundingBoxMagnitude>(geom, GeoId);
|
||||
setTracking(GeoId, coinLayer, EditModeGeometryCoinConverter::PointsMode::InsertSingle, 0);
|
||||
if (type == Part::GeomPoint::getClassTypeId()) {// add a point
|
||||
convert<Part::GeomPoint,
|
||||
EditModeGeometryCoinConverter::PointsMode::InsertSingle,
|
||||
EditModeGeometryCoinConverter::CurveMode::NoCurve,
|
||||
EditModeGeometryCoinConverter::AnalyseMode::BoundingBoxMagnitude>(geom, GeoId);
|
||||
setTracking(
|
||||
GeoId, coinLayer, EditModeGeometryCoinConverter::PointsMode::InsertSingle, 0);
|
||||
}
|
||||
else if (type == Part::GeomLineSegment::getClassTypeId()) { // add a line
|
||||
convert< Part::GeomLineSegment,
|
||||
EditModeGeometryCoinConverter::PointsMode::InsertStartEnd,
|
||||
EditModeGeometryCoinConverter::CurveMode::StartEndPointsOnly,
|
||||
EditModeGeometryCoinConverter::AnalyseMode::BoundingBoxMagnitude>(geom, GeoId);
|
||||
setTracking(GeoId, coinLayer, EditModeGeometryCoinConverter::PointsMode::InsertStartEnd, 1);
|
||||
else if (type == Part::GeomLineSegment::getClassTypeId()) {// add a line
|
||||
convert<Part::GeomLineSegment,
|
||||
EditModeGeometryCoinConverter::PointsMode::InsertStartEnd,
|
||||
EditModeGeometryCoinConverter::CurveMode::StartEndPointsOnly,
|
||||
EditModeGeometryCoinConverter::AnalyseMode::BoundingBoxMagnitude>(geom, GeoId);
|
||||
setTracking(
|
||||
GeoId, coinLayer, EditModeGeometryCoinConverter::PointsMode::InsertStartEnd, 1);
|
||||
}
|
||||
else if (type.isDerivedFrom(Part::GeomConic::getClassTypeId())) { // add a closed curve conic
|
||||
convert< Part::GeomConic,
|
||||
EditModeGeometryCoinConverter::PointsMode::InsertMidOnly,
|
||||
EditModeGeometryCoinConverter::CurveMode::ClosedCurve,
|
||||
EditModeGeometryCoinConverter::AnalyseMode::BoundingBoxMagnitude>(geom, GeoId);
|
||||
setTracking(GeoId, coinLayer, EditModeGeometryCoinConverter::PointsMode::InsertMidOnly, 1);
|
||||
else if (type.isDerivedFrom(Part::GeomConic::getClassTypeId())) {// add a closed curve conic
|
||||
convert<Part::GeomConic,
|
||||
EditModeGeometryCoinConverter::PointsMode::InsertMidOnly,
|
||||
EditModeGeometryCoinConverter::CurveMode::ClosedCurve,
|
||||
EditModeGeometryCoinConverter::AnalyseMode::BoundingBoxMagnitude>(geom, GeoId);
|
||||
setTracking(
|
||||
GeoId, coinLayer, EditModeGeometryCoinConverter::PointsMode::InsertMidOnly, 1);
|
||||
}
|
||||
else if (type.isDerivedFrom(Part::GeomArcOfConic::getClassTypeId())) { // add an arc of conic
|
||||
convert< Part::GeomArcOfConic,
|
||||
EditModeGeometryCoinConverter::PointsMode::InsertStartEndMid,
|
||||
EditModeGeometryCoinConverter::CurveMode::OpenCurve,
|
||||
EditModeGeometryCoinConverter::AnalyseMode::BoundingBoxMagnitude>(geom, GeoId);
|
||||
setTracking(GeoId, coinLayer, EditModeGeometryCoinConverter::PointsMode::InsertStartEndMid, 1);
|
||||
else if (type.isDerivedFrom(Part::GeomArcOfConic::getClassTypeId())) {// add an arc of conic
|
||||
convert<Part::GeomArcOfConic,
|
||||
EditModeGeometryCoinConverter::PointsMode::InsertStartEndMid,
|
||||
EditModeGeometryCoinConverter::CurveMode::OpenCurve,
|
||||
EditModeGeometryCoinConverter::AnalyseMode::BoundingBoxMagnitude>(geom, GeoId);
|
||||
setTracking(
|
||||
GeoId, coinLayer, EditModeGeometryCoinConverter::PointsMode::InsertStartEndMid, 1);
|
||||
arcGeoIds.push_back(GeoId);
|
||||
}
|
||||
else if (type == Part::GeomBSplineCurve::getClassTypeId()) { // add a bspline (a bounded curve that is not a conic)
|
||||
convert< Part::GeomBSplineCurve,
|
||||
EditModeGeometryCoinConverter::PointsMode::InsertStartEnd,
|
||||
EditModeGeometryCoinConverter::CurveMode::OpenCurve,
|
||||
EditModeGeometryCoinConverter::AnalyseMode::BoundingBoxMagnitudeAndBSplineCurvature>(geom, GeoId);
|
||||
setTracking(GeoId, coinLayer, EditModeGeometryCoinConverter::PointsMode::InsertStartEnd, 1);
|
||||
else if (type == Part::GeomBSplineCurve::getClassTypeId()) {// add a bspline (a bounded
|
||||
// curve that is not a conic)
|
||||
convert<Part::GeomBSplineCurve,
|
||||
EditModeGeometryCoinConverter::PointsMode::InsertStartEnd,
|
||||
EditModeGeometryCoinConverter::CurveMode::OpenCurve,
|
||||
EditModeGeometryCoinConverter::AnalyseMode::
|
||||
BoundingBoxMagnitudeAndBSplineCurvature>(geom, GeoId);
|
||||
setTracking(
|
||||
GeoId, coinLayer, EditModeGeometryCoinConverter::PointsMode::InsertStartEnd, 1);
|
||||
bsplineGeoIds.push_back(GeoId);
|
||||
}
|
||||
}
|
||||
|
||||
for(auto l=0 ; l < geometryLayerParameters.getCoinLayerCount() ; l++) {
|
||||
for (auto l = 0; l < geometryLayerParameters.getCoinLayerCount(); l++) {
|
||||
|
||||
// Coin Nodes Editing
|
||||
geometryLayerNodes.CurvesCoordinate[l]->point.setNum(Coords[l].size());
|
||||
@@ -206,23 +223,33 @@ void EditModeGeometryCoinConverter::convert(const Sketcher::GeoListFacade & geol
|
||||
geometryLayerNodes.PointsCoordinate[l]->point.setNum(Points[l].size());
|
||||
geometryLayerNodes.PointsMaterials[l]->diffuseColor.setNum(Points[l].size());
|
||||
|
||||
SbVec3f *verts = geometryLayerNodes.CurvesCoordinate[l]->point.startEditing();
|
||||
int32_t *index = geometryLayerNodes.CurveSet[l]->numVertices.startEditing();
|
||||
SbVec3f *pverts = geometryLayerNodes.PointsCoordinate[l]->point.startEditing();
|
||||
SbVec3f* verts = geometryLayerNodes.CurvesCoordinate[l]->point.startEditing();
|
||||
int32_t* index = geometryLayerNodes.CurveSet[l]->numVertices.startEditing();
|
||||
SbVec3f* pverts = geometryLayerNodes.PointsCoordinate[l]->point.startEditing();
|
||||
|
||||
int i=0; // setting up the line set
|
||||
for (std::vector<Base::Vector3d>::const_iterator it = Coords[l].begin(); it != Coords[l].end(); ++it,i++)
|
||||
verts[i].setValue(it->x,it->y,
|
||||
ViewProviderSketchCoinAttorney::getViewOrientationFactor(viewProvider) * drawingParameters.zLowLines);
|
||||
int i = 0;// setting up the line set
|
||||
for (std::vector<Base::Vector3d>::const_iterator it = Coords[l].begin();
|
||||
it != Coords[l].end();
|
||||
++it, i++)
|
||||
verts[i].setValue(it->x,
|
||||
it->y,
|
||||
ViewProviderSketchCoinAttorney::getViewOrientationFactor(viewProvider)
|
||||
* drawingParameters.zLowLines);
|
||||
|
||||
i=0; // setting up the indexes of the line set
|
||||
for (std::vector<unsigned int>::const_iterator it = Index[l].begin(); it != Index[l].end(); ++it,i++)
|
||||
i = 0;// setting up the indexes of the line set
|
||||
for (std::vector<unsigned int>::const_iterator it = Index[l].begin(); it != Index[l].end();
|
||||
++it, i++)
|
||||
index[i] = *it;
|
||||
|
||||
i=0; // setting up the point set
|
||||
for (std::vector<Base::Vector3d>::const_iterator it = Points[l].begin(); it != Points[l].end(); ++it,i++)
|
||||
pverts[i].setValue(it->x,it->y,
|
||||
ViewProviderSketchCoinAttorney::getViewOrientationFactor(viewProvider) * drawingParameters.zLowPoints);
|
||||
i = 0;// setting up the point set
|
||||
for (std::vector<Base::Vector3d>::const_iterator it = Points[l].begin();
|
||||
it != Points[l].end();
|
||||
++it, i++)
|
||||
pverts[i].setValue(
|
||||
it->x,
|
||||
it->y,
|
||||
ViewProviderSketchCoinAttorney::getViewOrientationFactor(viewProvider)
|
||||
* drawingParameters.zLowPoints);
|
||||
|
||||
geometryLayerNodes.CurvesCoordinate[l]->point.finishEditing();
|
||||
geometryLayerNodes.CurveSet[l]->numVertices.finishEditing();
|
||||
@@ -230,21 +257,22 @@ void EditModeGeometryCoinConverter::convert(const Sketcher::GeoListFacade & geol
|
||||
}
|
||||
}
|
||||
|
||||
template < typename GeoType,
|
||||
EditModeGeometryCoinConverter::PointsMode pointmode,
|
||||
EditModeGeometryCoinConverter::CurveMode curvemode,
|
||||
EditModeGeometryCoinConverter::AnalyseMode analysemode >
|
||||
void EditModeGeometryCoinConverter::convert(const Sketcher::GeometryFacade * geometryfacade, [[maybe_unused]] int geoid) {
|
||||
auto geo = static_cast<const GeoType *>(geometryfacade->getGeometry());
|
||||
template<typename GeoType, EditModeGeometryCoinConverter::PointsMode pointmode,
|
||||
EditModeGeometryCoinConverter::CurveMode curvemode,
|
||||
EditModeGeometryCoinConverter::AnalyseMode analysemode>
|
||||
void EditModeGeometryCoinConverter::convert(const Sketcher::GeometryFacade* geometryfacade,
|
||||
[[maybe_unused]] int geoid)
|
||||
{
|
||||
auto geo = static_cast<const GeoType*>(geometryfacade->getGeometry());
|
||||
auto layerId = getSafeGeomLayerId(geometryfacade);
|
||||
|
||||
auto coinLayer = geometryLayerParameters.getSafeCoinLayer(layerId);
|
||||
|
||||
auto addPoint = [&dMg = boundingBoxMaxMagnitude] (auto & pushvector, Base::Vector3d point) {
|
||||
|
||||
if constexpr (analysemode == AnalyseMode::BoundingBoxMagnitude || analysemode == AnalyseMode::BoundingBoxMagnitudeAndBSplineCurvature) {
|
||||
dMg = dMg>std::abs(point.x)?dMg:std::abs(point.x);
|
||||
dMg = dMg>std::abs(point.y)?dMg:std::abs(point.y);
|
||||
auto addPoint = [&dMg = boundingBoxMaxMagnitude](auto& pushvector, Base::Vector3d point) {
|
||||
if constexpr (analysemode == AnalyseMode::BoundingBoxMagnitude
|
||||
|| analysemode == AnalyseMode::BoundingBoxMagnitudeAndBSplineCurvature) {
|
||||
dMg = dMg > std::abs(point.x) ? dMg : std::abs(point.x);
|
||||
dMg = dMg > std::abs(point.y) ? dMg : std::abs(point.y);
|
||||
pushvector.push_back(point);
|
||||
}
|
||||
};
|
||||
@@ -280,32 +308,32 @@ void EditModeGeometryCoinConverter::convert(const Sketcher::GeometryFacade * geo
|
||||
|
||||
double segment = (geo->getLastParameter() - geo->getFirstParameter()) / numSegments;
|
||||
|
||||
for (int i=0; i < numSegments; i++) {
|
||||
Base::Vector3d pnt = geo->value(i*segment);
|
||||
for (int i = 0; i < numSegments; i++) {
|
||||
Base::Vector3d pnt = geo->value(i * segment);
|
||||
addPoint(Coords[coinLayer], pnt);
|
||||
}
|
||||
|
||||
Base::Vector3d pnt = geo->value(0);
|
||||
addPoint(Coords[coinLayer], pnt);
|
||||
|
||||
Index[coinLayer].push_back(numSegments+1);
|
||||
Index[coinLayer].push_back(numSegments + 1);
|
||||
}
|
||||
else if constexpr (curvemode == CurveMode::OpenCurve) {
|
||||
int numSegments = drawingParameters.curvedEdgeCountSegments;
|
||||
if constexpr (std::is_same<GeoType, Part::GeomBSplineCurve>::value)
|
||||
numSegments *= (geo->countKnots() - 1); // one less segments than knots
|
||||
numSegments *= (geo->countKnots() - 1);// one less segments than knots
|
||||
|
||||
double segment = (geo->getLastParameter() - geo->getFirstParameter()) / numSegments;
|
||||
|
||||
for (int i=0; i < numSegments; i++) {
|
||||
Base::Vector3d pnt = geo->value(geo->getFirstParameter() + i*segment);
|
||||
for (int i = 0; i < numSegments; i++) {
|
||||
Base::Vector3d pnt = geo->value(geo->getFirstParameter() + i * segment);
|
||||
addPoint(Coords[coinLayer], pnt);
|
||||
}
|
||||
|
||||
Base::Vector3d pnt = geo->value(geo->getLastParameter());
|
||||
addPoint(Coords[coinLayer], pnt);
|
||||
addPoint(Coords[coinLayer], pnt);
|
||||
|
||||
Index[coinLayer].push_back(numSegments+1);
|
||||
Index[coinLayer].push_back(numSegments + 1);
|
||||
|
||||
if constexpr (analysemode == AnalyseMode::BoundingBoxMagnitudeAndBSplineCurvature) {
|
||||
//***************************************************************************************************************
|
||||
@@ -313,19 +341,20 @@ void EditModeGeometryCoinConverter::convert(const Sketcher::GeometryFacade * geo
|
||||
|
||||
std::vector<Base::Vector3d> poles = geo->getPoles();
|
||||
|
||||
Base::Vector3d midp = Base::Vector3d(0,0,0);
|
||||
Base::Vector3d midp = Base::Vector3d(0, 0, 0);
|
||||
|
||||
for (std::vector<Base::Vector3d>::iterator it = poles.begin(); it != poles.end(); ++it) {
|
||||
for (std::vector<Base::Vector3d>::iterator it = poles.begin(); it != poles.end();
|
||||
++it) {
|
||||
midp += (*it);
|
||||
}
|
||||
|
||||
midp /= poles.size();
|
||||
|
||||
double firstparam = geo->getFirstParameter();
|
||||
double lastparam = geo->getLastParameter();
|
||||
double lastparam = geo->getLastParameter();
|
||||
|
||||
const int ndiv = poles.size()>4?poles.size()*16:64;
|
||||
double step = (lastparam - firstparam ) / (ndiv -1);
|
||||
const int ndiv = poles.size() > 4 ? poles.size() * 16 : 64;
|
||||
double step = (lastparam - firstparam) / (ndiv - 1);
|
||||
|
||||
std::vector<double> paramlist(ndiv);
|
||||
std::vector<Base::Vector3d> pointatcurvelist(ndiv);
|
||||
@@ -342,36 +371,36 @@ void EditModeGeometryCoinConverter::convert(const Sketcher::GeometryFacade * geo
|
||||
try {
|
||||
curvaturelist[i] = geo->curvatureAt(paramlist[i]);
|
||||
}
|
||||
catch(Base::CADKernelError &e) {
|
||||
catch (Base::CADKernelError& e) {
|
||||
// it is "just" a visualisation matter OCC could not calculate the curvature
|
||||
// terminating here would mean that the other shapes would not be drawn.
|
||||
// Solution: Report the issue and set dummy curvature to 0
|
||||
e.ReportException();
|
||||
Base::Console().DeveloperError("EditModeGeometryCoinConverter","Curvature graph for B-Spline with GeoId=%d could not be calculated.\n", geoid); // TODO: Fix identification of curve.
|
||||
Base::Console().DeveloperError(
|
||||
"EditModeGeometryCoinConverter",
|
||||
"Curvature graph for B-Spline with GeoId=%d could not be calculated.\n",
|
||||
geoid);// TODO: Fix identification of curve.
|
||||
curvaturelist[i] = 0;
|
||||
}
|
||||
|
||||
if (curvaturelist[i] > maxcurv)
|
||||
maxcurv = curvaturelist[i];
|
||||
|
||||
double tempf = ( pointatcurvelist[i] - midp ).Length();
|
||||
double tempf = (pointatcurvelist[i] - midp).Length();
|
||||
|
||||
if (tempf > maxdisttocenterofmass)
|
||||
maxdisttocenterofmass = tempf;
|
||||
|
||||
}
|
||||
|
||||
double temprepscale = 0;
|
||||
if (maxcurv > 0)
|
||||
temprepscale = (0.5 * maxdisttocenterofmass) / maxcurv; // just a factor to make a comb reasonably visible
|
||||
temprepscale = (0.5 * maxdisttocenterofmass)
|
||||
/ maxcurv;// just a factor to make a comb reasonably visible
|
||||
|
||||
if (temprepscale > combrepscale)
|
||||
combrepscale = temprepscale;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
float EditModeGeometryCoinConverter::getBoundingBoxMaxMagnitude()
|
||||
|
||||
Reference in New Issue
Block a user