[PD] FeatureSketchBased: only style fixes

to reduce diffs of coming and pending PRs

all fixes were automatically made by MSVC
This commit is contained in:
Uwe
2022-01-23 04:50:52 +01:00
parent 3c7ed89306
commit 62ed6b509e

View File

@@ -87,11 +87,11 @@ PROPERTY_SOURCE(PartDesign::ProfileBased, PartDesign::FeatureAddSub)
ProfileBased::ProfileBased()
{
ADD_PROPERTY_TYPE(Profile,(0),"SketchBased", App::Prop_None, "Reference to sketch");
ADD_PROPERTY_TYPE(Midplane,(0),"SketchBased", App::Prop_None, "Extrude symmetric to sketch face");
ADD_PROPERTY_TYPE(Reversed, (0),"SketchBased", App::Prop_None, "Reverse extrusion direction");
ADD_PROPERTY_TYPE(UpToFace,(0),"SketchBased",(App::PropertyType)(App::Prop_None),"Face where feature will end");
ADD_PROPERTY_TYPE(AllowMultiFace,(false),"SketchBased", App::Prop_None, "Allow multiple faces in profile");
ADD_PROPERTY_TYPE(Profile, (0), "SketchBased", App::Prop_None, "Reference to sketch");
ADD_PROPERTY_TYPE(Midplane, (0), "SketchBased", App::Prop_None, "Extrude symmetric to sketch face");
ADD_PROPERTY_TYPE(Reversed, (0), "SketchBased", App::Prop_None, "Reverse extrusion direction");
ADD_PROPERTY_TYPE(UpToFace, (0), "SketchBased", (App::PropertyType)(App::Prop_None), "Face where feature will end");
ADD_PROPERTY_TYPE(AllowMultiFace, (false), "SketchBased", App::Prop_None, "Allow multiple faces in profile");
}
short ProfileBased::mustExecute() const
@@ -114,25 +114,28 @@ void ProfileBased::positionByPrevious(void)
Part::Feature* feat = getBaseObject(/* silent = */ true);
if (feat) {
this->Placement.setValue(feat->Placement.getValue());
} else {
}
else {
//no base. Use either Sketch support's placement, or sketch's placement itself.
Part::Part2DObject *sketch = getVerifiedSketch();
Part::Part2DObject* sketch = getVerifiedSketch();
App::DocumentObject* support = sketch->Support.getValue();
if(support && support->isDerivedFrom(App::GeoFeature::getClassTypeId())) {
if (support && support->isDerivedFrom(App::GeoFeature::getClassTypeId())) {
this->Placement.setValue(static_cast<App::GeoFeature*>(support)->Placement.getValue());
} else {
this->Placement.setValue( sketch->Placement.getValue() );
}
else {
this->Placement.setValue(sketch->Placement.getValue());
}
}
}
void ProfileBased::transformPlacement(const Base::Placement &transform)
void ProfileBased::transformPlacement(const Base::Placement& transform)
{
Part::Feature* feat = getBaseObject(/* silent = */ true);
if (feat) {
feat->transformPlacement(transform);
} else {
Part::Part2DObject *sketch = getVerifiedSketch();
}
else {
Part::Part2DObject* sketch = getVerifiedSketch();
sketch->transformPlacement(transform);
}
positionByPrevious();
@@ -144,7 +147,8 @@ Part::Part2DObject* ProfileBased::getVerifiedSketch(bool silent) const {
if (!result) {
err = "No profile linked at all";
} else {
}
else {
if (!result->getTypeId().isDerivedFrom(Part::Part2DObject::getClassTypeId())) {
err = "Linked object is not a Sketch or Part2DObject";
result = nullptr;
@@ -152,7 +156,7 @@ Part::Part2DObject* ProfileBased::getVerifiedSketch(bool silent) const {
}
if (!silent && err) {
throw Base::RuntimeError (err);
throw Base::RuntimeError(err);
}
return static_cast<Part::Part2DObject*>(result);
@@ -165,13 +169,14 @@ Part::Feature* ProfileBased::getVerifiedObject(bool silent) const {
if (!result) {
err = "No object linked";
} else {
}
else {
if (!result->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId()))
err = "Linked object is not a Sketch, Part2DObject or Feature";
}
if (!silent && err) {
throw Base::RuntimeError (err);
throw Base::RuntimeError(err);
}
return static_cast<Part::Feature*>(result);
@@ -180,9 +185,9 @@ Part::Feature* ProfileBased::getVerifiedObject(bool silent) const {
Part::TopoShape ProfileBased::getProfileShape() const
{
auto shape = getTopoShape(Profile.getValue());
if(!shape.isNull() && Profile.getSubValues().size()) {
if (!shape.isNull() && Profile.getSubValues().size()) {
std::vector<Part::TopoShape> shapes;
for(auto &sub : Profile.getSubValues(true))
for (auto& sub : Profile.getSubValues(true))
shapes.emplace_back(shape.getSubShape(sub.c_str()));
shape = Part::TopoShape().makECompound(shapes);
}
@@ -197,50 +202,54 @@ TopoDS_Shape ProfileBased::getVerifiedFace(bool silent) const {
if (!result) {
err = "No profile linked";
} else if (AllowMultiFace.getValue()) {
}
else if (AllowMultiFace.getValue()) {
try {
auto shape = getProfileShape();
if(shape.isNull())
if (shape.isNull())
err = "Linked shape object is empty";
else {
auto faces = shape.getSubTopoShapes(TopAbs_FACE);
if(faces.empty()) {
if(!shape.hasSubShape(TopAbs_WIRE))
if (faces.empty()) {
if (!shape.hasSubShape(TopAbs_WIRE))
shape = shape.makEWires();
if(shape.hasSubShape(TopAbs_WIRE))
shape = shape.makEFace(0,"Part::FaceMakerCheese");
if (shape.hasSubShape(TopAbs_WIRE))
shape = shape.makEFace(0, "Part::FaceMakerCheese");
else
err = "Cannot make face from profile";
} else if (faces.size() == 1)
}
else if (faces.size() == 1)
shape = faces.front();
else
shape = TopoShape().makECompound(faces);
}
if(!err)
if (!err)
return shape.getShape();
}catch (Standard_Failure &e) {
}
catch (Standard_Failure& e) {
_err = e.GetMessageString();
err = _err.c_str();
}
} else {
}
else {
if (result->getTypeId().isDerivedFrom(Part::Part2DObject::getClassTypeId())) {
auto wires = getProfileWires();
return Part::FaceMakerCheese::makeFace(wires);
}
else if(result->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
if(Profile.getSubValues().empty())
else if (result->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
if (Profile.getSubValues().empty())
err = "Linked object has no subshape specified";
else {
const Part::TopoShape& shape = Profile.getValue<Part::Feature*>()->Shape.getShape();
TopoDS_Shape sub = shape.getSubShape(Profile.getSubValues()[0].c_str());
if(sub.ShapeType() == TopAbs_FACE)
if (sub.ShapeType() == TopAbs_FACE)
return TopoDS::Face(sub);
else if(sub.ShapeType() == TopAbs_WIRE) {
else if (sub.ShapeType() == TopAbs_WIRE) {
auto wire = TopoDS::Wire(sub);
if(!wire.Closed())
if (!wire.Closed())
err = "Linked wire is not closed";
else {
BRepBuilderAPI_MakeFace mk(wire);
@@ -257,7 +266,7 @@ TopoDS_Shape ProfileBased::getVerifiedFace(bool silent) const {
}
if (!silent && err) {
throw Base::RuntimeError (err);
throw Base::RuntimeError(err);
}
return TopoDS_Face();
@@ -267,14 +276,14 @@ TopoDS_Shape ProfileBased::getVerifiedFace(bool silent) const {
std::vector<TopoDS_Wire> ProfileBased::getProfileWires() const {
std::vector<TopoDS_Wire> result;
if(!Profile.getValue() || !Profile.getValue()->isDerivedFrom(Part::Feature::getClassTypeId()))
if (!Profile.getValue() || !Profile.getValue()->isDerivedFrom(Part::Feature::getClassTypeId()))
throw Base::TypeError("No valid profile linked");
TopoDS_Shape shape;
if(Profile.getValue()->isDerivedFrom(Part::Part2DObject::getClassTypeId()))
if (Profile.getValue()->isDerivedFrom(Part::Part2DObject::getClassTypeId()))
shape = Profile.getValue<Part::Part2DObject*>()->Shape.getValue();
else {
if(Profile.getSubValues().empty())
if (Profile.getSubValues().empty())
throw Base::ValueError("No valid subelement linked in Part::Feature");
shape = Profile.getValue<Part::Feature*>()->Shape.getShape().getSubShape(Profile.getSubValues().front().c_str());
@@ -307,14 +316,14 @@ std::vector<TopoDS_Wire> ProfileBased::getProfileWires() const {
// this method, it becomes null!
const TopoDS_Face ProfileBased::getSupportFace() const {
const Part::Part2DObject* sketch = getVerifiedSketch();
if (sketch->MapMode.getValue() == Attacher::mmFlatFace && sketch->Support.getValue()) {
const auto &Support = sketch->Support;
if (sketch->MapMode.getValue() == Attacher::mmFlatFace && sketch->Support.getValue()) {
const auto& Support = sketch->Support;
App::DocumentObject* ref = Support.getValue();
Part::Feature *part = static_cast<Part::Feature*>(ref);
Part::Feature* part = static_cast<Part::Feature*>(ref);
if (part && part->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
const std::vector<std::string> &sub = Support.getSubValues();
assert(sub.size()==1);
const std::vector<std::string>& sub = Support.getSubValues();
assert(sub.size() == 1);
if (sub.at(0) == "") {
// This seems to happen when sketch is on a datum plane
@@ -322,7 +331,7 @@ const TopoDS_Face ProfileBased::getSupportFace() const {
}
// get the selected sub shape (a Face)
const Part::TopoShape &shape = part->Shape.getShape();
const Part::TopoShape& shape = part->Shape.getShape();
if (shape.getShape().IsNull())
throw Base::ValueError("Sketch support shape is empty!");
@@ -347,16 +356,16 @@ const TopoDS_Face ProfileBased::getSupportFace() const {
int ProfileBased::getSketchAxisCount(void) const
{
Part::Part2DObject *sketch = static_cast<Part::Part2DObject*>(Profile.getValue());
Part::Part2DObject* sketch = static_cast<Part::Part2DObject*>(Profile.getValue());
if (!sketch)
return -1; // the link to the sketch is lost
return sketch->getAxisCount();
}
Part::Feature *ProfileBased::getBaseObject(bool silent) const
Part::Feature* ProfileBased::getBaseObject(bool silent) const
{
// Test the base's class feature.
Part::Feature *rv = Feature::getBaseObject(/* silent = */ true);
Part::Feature* rv = Feature::getBaseObject(/* silent = */ true);
if (rv) {
return rv;
}
@@ -364,7 +373,7 @@ Part::Feature *ProfileBased::getBaseObject(bool silent) const
// getVerifiedObject() may throw it's own exception if fail
Part::Feature* obj = getVerifiedObject(silent);
if(!obj)
if (!obj)
return nullptr;
if (!obj->isDerivedFrom(Part::Part2DObject::getClassTypeId()))
@@ -378,15 +387,17 @@ Part::Feature *ProfileBased::getBaseObject(bool silent) const
if (spt) {
if (spt->isDerivedFrom(Part::Feature::getClassTypeId())) {
rv = static_cast<Part::Feature*>(spt);
} else {
}
else {
err = "No base set, sketch support is not Part::Feature";
}
} else {
}
else {
err = "No base set, no sketch support either";
}
if (!silent && err) {
throw Base::RuntimeError (err);
throw Base::RuntimeError(err);
}
return rv;
@@ -404,7 +415,7 @@ void ProfileBased::onChanged(const App::Property* prop)
void ProfileBased::getUpToFaceFromLinkSub(TopoDS_Face& upToFace,
const App::PropertyLinkSub& refFace)
const App::PropertyLinkSub& refFace)
{
App::DocumentObject* ref = refFace.getValue();
std::vector<std::string> subStrings = refFace.getSubValues();
@@ -415,7 +426,8 @@ void ProfileBased::getUpToFaceFromLinkSub(TopoDS_Face& upToFace,
if (ref->getTypeId().isDerivedFrom(App::Plane::getClassTypeId())) {
upToFace = TopoDS::Face(makeShapeFromPlane(ref));
return;
} else if (ref->getTypeId().isDerivedFrom(PartDesign::Plane::getClassTypeId())) {
}
else if (ref->getTypeId().isDerivedFrom(PartDesign::Plane::getClassTypeId())) {
Part::Datum* datum = static_cast<Part::Datum*>(ref);
upToFace = TopoDS::Face(datum->getShape());
return;
@@ -463,12 +475,12 @@ void ProfileBased::getUpToFace(TopoDS_Face& upToFace,
// Check whether the face has limits or not. Unlimited faces have no wire
// Note: Datum planes are always unlimited
TopExp_Explorer Ex(upToFace,TopAbs_WIRE);
TopExp_Explorer Ex(upToFace, TopAbs_WIRE);
if (Ex.More()) {
// Remove the limits of the upToFace so that the extrusion works even if sketchshape is larger
// than the upToFace
bool remove_limits = false;
for (Ex.Init(sketchshape,TopAbs_FACE); Ex.More(); Ex.Next()) {
for (Ex.Init(sketchshape, TopAbs_FACE); Ex.More(); Ex.Next()) {
// Get outermost wire of sketch face
TopoDS_Face sketchface = TopoDS::Face(Ex.Current());
TopoDS_Wire outerWire = ShapeAnalysis::OuterWire(sketchface);
@@ -501,9 +513,9 @@ void ProfileBased::getUpToFace(TopoDS_Face& upToFace,
// use the placement of the adapter, not of the upToFace
loc = TopLoc_Location(adapt.Trsf());
BRepBuilderAPI_MakeFace mkFace(adapt.Surface().Surface()
#if OCC_VERSION_HEX >= 0x060502
, Precision::Confusion()
#endif
#if OCC_VERSION_HEX >= 0x060502
, Precision::Confusion()
#endif
);
if (!mkFace.IsDone())
throw Base::ValueError("SketchBased: Up To Face: Failed to create unlimited face");
@@ -545,7 +557,8 @@ void ProfileBased::addOffsetToFace(TopoDS_Face& upToFace, const gp_Dir& dir, dou
// to work as expected (see generatePrism())
BRep_Builder builder;
builder.NaturalRestriction(upToFace, Standard_True);
} else {
}
else {
throw Base::TypeError("SketchBased: Up to Face: Offset not supported yet for non-planar faces");
}
}
@@ -594,7 +607,7 @@ void ProfileBased::generatePrism(TopoDS_Shape& prism,
Loffset = -L2;
}
else if (midplane) {
Loffset = -Ltotal/2;
Loffset = -Ltotal / 2;
}
TopoDS_Shape from = sketchshape;
@@ -617,7 +630,7 @@ void ProfileBased::generatePrism(TopoDS_Shape& prism,
// Its better not to use BRepFeat_MakePrism here even if we have a support because the
// resulting shape creates problems with Pocket
BRepPrimAPI_MakePrism PrismMaker(from, Ltotal*gp_Vec(dir), 0, 1); // finite prism
BRepPrimAPI_MakePrism PrismMaker(from, Ltotal * gp_Vec(dir), 0, 1); // finite prism
if (!PrismMaker.IsDone())
throw Base::RuntimeError("ProfileBased: Length: Could not extrude the sketch!");
prism = PrismMaker.Shape();
@@ -676,7 +689,7 @@ bool ProfileBased::checkWireInsideFace(const TopoDS_Wire& wire, const TopoDS_Fac
return (proj.More() && proj.Current().Closed());
}
bool ProfileBased::checkLineCrossesFace(const gp_Lin &line, const TopoDS_Face &face)
bool ProfileBased::checkLineCrossesFace(const gp_Lin& line, const TopoDS_Face& face)
{
#if 1
BRepBuilderAPI_MakeEdge mkEdge(line);
@@ -689,7 +702,7 @@ bool ProfileBased::checkLineCrossesFace(const gp_Lin &line, const TopoDS_Face &f
TopTools_IndexedDataMapOfShapeListOfShape vertex2Edge;
TopExp::MapShapesAndAncestors(wire, TopAbs_VERTEX, TopAbs_EDGE, vertex2Edge);
for (Standard_Integer i=1; i<= distss.NbSolution(); i++) {
for (Standard_Integer i = 1; i <= distss.NbSolution(); i++) {
if (distss.PointOnShape1(i).Distance(distss.PointOnShape2(i)) > Precision::Confusion())
continue;
BRepExtrema_SupportType type = distss.SupportTypeShape1(i);
@@ -704,15 +717,15 @@ bool ProfileBased::checkLineCrossesFace(const gp_Lin &line, const TopoDS_Face &f
Standard_Real t;
distss.ParOnEdgeS1(i, t);
gp_Pnt p_eps1 = adapt.Value(std::max<double>(adapt.FirstParameter(), t-10*Precision::Confusion()));
gp_Pnt p_eps2 = adapt.Value(std::min<double>(adapt.LastParameter(), t+10*Precision::Confusion()));
gp_Pnt p_eps1 = adapt.Value(std::max<double>(adapt.FirstParameter(), t - 10 * Precision::Confusion()));
gp_Pnt p_eps2 = adapt.Value(std::min<double>(adapt.LastParameter(), t + 10 * Precision::Confusion()));
// now check if we get a change in the sign of the distances
Standard_Real dist_p_eps1_pnt = gp_Vec(p_eps1, pnt).Dot(gp_Vec(dir));
Standard_Real dist_p_eps2_pnt = gp_Vec(p_eps2, pnt).Dot(gp_Vec(dir));
// distance to the plane must be noticeable
if (fabs(dist_p_eps1_pnt) > 5*Precision::Confusion() &&
fabs(dist_p_eps2_pnt) > 5*Precision::Confusion()) {
if (fabs(dist_p_eps1_pnt) > 5 * Precision::Confusion() &&
fabs(dist_p_eps2_pnt) > 5 * Precision::Confusion()) {
if (dist_p_eps1_pnt * dist_p_eps2_pnt < 0)
return true;
}
@@ -736,9 +749,9 @@ bool ProfileBased::checkLineCrossesFace(const gp_Lin &line, const TopoDS_Face &f
Standard_Real dist2 = adapt1.Value(adapt1.LastParameter()).SquareDistance(pnt);
gp_Pnt p_eps1;
if (dist1 < dist2)
p_eps1 = adapt1.Value(adapt1.FirstParameter() + 2*Precision::Confusion());
p_eps1 = adapt1.Value(adapt1.FirstParameter() + 2 * Precision::Confusion());
else
p_eps1 = adapt1.Value(adapt1.LastParameter() - 2*Precision::Confusion());
p_eps1 = adapt1.Value(adapt1.LastParameter() - 2 * Precision::Confusion());
// from the second edge get a point next to the intersection point
const TopoDS_Edge& edge2 = TopoDS::Edge(edges.Last());
@@ -747,9 +760,9 @@ bool ProfileBased::checkLineCrossesFace(const gp_Lin &line, const TopoDS_Face &f
Standard_Real dist4 = adapt2.Value(adapt2.LastParameter()).SquareDistance(pnt);
gp_Pnt p_eps2;
if (dist3 < dist4)
p_eps2 = adapt2.Value(adapt2.FirstParameter() + 2*Precision::Confusion());
p_eps2 = adapt2.Value(adapt2.FirstParameter() + 2 * Precision::Confusion());
else
p_eps2 = adapt2.Value(adapt2.LastParameter() - 2*Precision::Confusion());
p_eps2 = adapt2.Value(adapt2.LastParameter() - 2 * Precision::Confusion());
// now check if we get a change in the sign of the distances
Standard_Real dist_p_eps1_pnt = gp_Vec(p_eps1, pnt).Dot(gp_Vec(dir));
@@ -800,16 +813,17 @@ bool ProfileBased::checkLineCrossesFace(const gp_Lin &line, const TopoDS_Face &f
// A line that is coincident with the axis produces three intersections
// 1 with the line itself and 2 with the adjacent edges
intersections -= 2;
} else {
}
else {
Extrema_POnCurv p1, p2;
intersector.Points(i, p1, p2);
intersectionpoints.push_back(p1.Value());
intersections++;
}
}
}
}
}
}
// Note: We might check this inside the loop but then we have to rely on TopExp_Explorer
// returning the wire's edges in adjacent order (because of the coincident line checking)
@@ -824,9 +838,9 @@ bool ProfileBased::checkLineCrossesFace(const gp_Lin &line, const TopoDS_Face &f
return false;
#endif
}
}
void ProfileBased::remapSupportShape(const TopoDS_Shape& newShape)
void ProfileBased::remapSupportShape(const TopoDS_Shape & newShape)
{
TopTools_IndexedMapOfShape faceMap;
TopExp::MapShapes(newShape, TopAbs_FACE, faceMap);
@@ -888,7 +902,7 @@ void ProfileBased::remapSupportShape(const TopoDS_Shape& newShape)
}
// try an exact matching
if (!success) {
for (int i=1; i<faceMap.Extent(); i++) {
for (int i = 1; i < faceMap.Extent(); i++) {
if (isQuasiEqual(element, faceMap.FindKey(i))) {
std::stringstream str;
str << shapetype << i;
@@ -900,7 +914,7 @@ void ProfileBased::remapSupportShape(const TopoDS_Shape& newShape)
}
// if an exact matching fails then try to compare only the geometries
if (!success) {
for (int i=1; i<faceMap.Extent(); i++) {
for (int i = 1; i < faceMap.Extent(); i++) {
if (isEqualGeometry(element, faceMap.FindKey(i))) {
std::stringstream str;
str << shapetype << i;
@@ -922,23 +936,23 @@ void ProfileBased::remapSupportShape(const TopoDS_Shape& newShape)
}
namespace PartDesign {
struct gp_Pnt_Less
{
bool operator()(const gp_Pnt& p1,
const gp_Pnt& p2) const
struct gp_Pnt_Less
{
if (fabs(p1.X() - p2.X()) > Precision::Confusion())
return p1.X() < p2.X();
if (fabs(p1.Y() - p2.Y()) > Precision::Confusion())
return p1.Y() < p2.Y();
if (fabs(p1.Z() - p2.Z()) > Precision::Confusion())
return p1.Z() < p2.Z();
return false; // points are considered to be equal
}
};
bool operator()(const gp_Pnt& p1,
const gp_Pnt& p2) const
{
if (fabs(p1.X() - p2.X()) > Precision::Confusion())
return p1.X() < p2.X();
if (fabs(p1.Y() - p2.Y()) > Precision::Confusion())
return p1.Y() < p2.Y();
if (fabs(p1.Z() - p2.Z()) > Precision::Confusion())
return p1.Z() < p2.Z();
return false; // points are considered to be equal
}
};
}
bool ProfileBased::isQuasiEqual(const TopoDS_Shape& s1, const TopoDS_Shape& s2) const
bool ProfileBased::isQuasiEqual(const TopoDS_Shape & s1, const TopoDS_Shape & s2) const
{
if (s1.ShapeType() != s2.ShapeType())
return false;
@@ -949,12 +963,12 @@ bool ProfileBased::isQuasiEqual(const TopoDS_Shape& s1, const TopoDS_Shape& s2)
return false;
std::vector<gp_Pnt> p1;
for (int i=1; i<=map1.Extent(); i++) {
for (int i = 1; i <= map1.Extent(); i++) {
const TopoDS_Vertex& v = TopoDS::Vertex(map1.FindKey(i));
p1.push_back(BRep_Tool::Pnt(v));
}
std::vector<gp_Pnt> p2;
for (int i=1; i<=map2.Extent(); i++) {
for (int i = 1; i <= map2.Extent(); i++) {
const TopoDS_Vertex& v = TopoDS::Vertex(map2.FindKey(i));
p2.push_back(BRep_Tool::Pnt(v));
}
@@ -974,7 +988,7 @@ bool ProfileBased::isQuasiEqual(const TopoDS_Shape& s1, const TopoDS_Shape& s2)
return true;
}
bool ProfileBased::isEqualGeometry(const TopoDS_Shape& s1, const TopoDS_Shape& s2) const
bool ProfileBased::isEqualGeometry(const TopoDS_Shape & s1, const TopoDS_Shape & s2) const
{
if (s1.ShapeType() == TopAbs_FACE && s2.ShapeType() == TopAbs_FACE) {
BRepAdaptor_Surface a1(TopoDS::Face(s1));
@@ -1002,7 +1016,7 @@ bool ProfileBased::isEqualGeometry(const TopoDS_Shape& s1, const TopoDS_Shape& s
return false;
}
bool ProfileBased::isParallelPlane(const TopoDS_Shape& s1, const TopoDS_Shape& s2) const
bool ProfileBased::isParallelPlane(const TopoDS_Shape & s1, const TopoDS_Shape & s2) const
{
if (s1.ShapeType() == TopAbs_FACE && s2.ShapeType() == TopAbs_FACE) {
BRepAdaptor_Surface a1(TopoDS::Face(s1));
@@ -1021,7 +1035,7 @@ bool ProfileBased::isParallelPlane(const TopoDS_Shape& s1, const TopoDS_Shape& s
}
double ProfileBased::getReversedAngle(const Base::Vector3d &b, const Base::Vector3d &v)
double ProfileBased::getReversedAngle(const Base::Vector3d & b, const Base::Vector3d & v)
{
try {
Part::Feature* obj = getVerifiedObject();
@@ -1039,8 +1053,8 @@ double ProfileBased::getReversedAngle(const Base::Vector3d &b, const Base::Vecto
// get sketch vector pointing away from support material
Base::Placement SketchPos = obj->Placement.getValue();
Base::Rotation SketchOrientation = SketchPos.getRotation();
Base::Vector3d SketchNormal(0,0,1);
SketchOrientation.multVec(SketchNormal,SketchNormal);
Base::Vector3d SketchNormal(0, 0, 1);
SketchOrientation.multVec(SketchNormal, SketchNormal);
return SketchNormal * cross;
}
@@ -1049,7 +1063,7 @@ double ProfileBased::getReversedAngle(const Base::Vector3d &b, const Base::Vecto
}
}
void ProfileBased::getAxis(const App::DocumentObject *pcReferenceAxis, const std::vector<std::string> &subReferenceAxis,
void ProfileBased::getAxis(const App::DocumentObject * pcReferenceAxis, const std::vector<std::string> &subReferenceAxis,
Base::Vector3d& base, Base::Vector3d& dir, ProfileBased::ForbiddenAxis checkAxis)
{
auto verifyAxisFunc = [](ProfileBased::ForbiddenAxis checkAxis, const gp_Pln& sketchplane, const gp_Dir& dir) {
@@ -1091,7 +1105,7 @@ void ProfileBased::getAxis(const App::DocumentObject *pcReferenceAxis, const std
dir = Base::Vector3d(d.X(), d.Y(), d.Z());
};
dir = Base::Vector3d(0,0,0); // If unchanged signals that no valid axis was found
dir = Base::Vector3d(0, 0, 0); // If unchanged signals that no valid axis was found
if (!pcReferenceAxis)
return;
@@ -1157,8 +1171,8 @@ void ProfileBased::getAxis(const App::DocumentObject *pcReferenceAxis, const std
if (pcReferenceAxis->getTypeId().isDerivedFrom(App::Line::getClassTypeId())) {
const App::Line* line = static_cast<const App::Line*>(pcReferenceAxis);
base = Base::Vector3d(0,0,0);
line->Placement.getValue().multVec(Base::Vector3d (1,0,0), dir);
base = Base::Vector3d(0, 0, 0);
line->Placement.getValue().multVec(Base::Vector3d(1, 0, 0), dir);
verifyAxisFunc(checkAxis, sketchplane, gp_Dir(dir.x, dir.y, dir.z));
return;
@@ -1190,16 +1204,16 @@ void ProfileBased::getAxis(const App::DocumentObject *pcReferenceAxis, const std
Base::Vector3d ProfileBased::getProfileNormal() const {
Base::Vector3d SketchVector(0,0,1);
Base::Vector3d SketchVector(0, 0, 1);
auto obj = getVerifiedObject(true);
if(!obj)
if (!obj)
return SketchVector;
// get the Sketch plane
if(obj->isDerivedFrom(Part::Part2DObject::getClassTypeId())) {
if (obj->isDerivedFrom(Part::Part2DObject::getClassTypeId())) {
Base::Placement SketchPos = obj->Placement.getValue();
Base::Rotation SketchOrientation = SketchPos.getRotation();
SketchOrientation.multVec(SketchVector,SketchVector);
SketchOrientation.multVec(SketchVector, SketchVector);
}
else {
TopoDS_Shape shape = getVerifiedFace(true);
@@ -1211,13 +1225,13 @@ Base::Vector3d ProfileBased::getProfileNormal() const {
if (ex.More()) {
TopoDS_Face face = TopoDS::Face(ex.Current());
BRepAdaptor_Surface adapt(face);
double u = adapt.FirstUParameter() + (adapt.LastUParameter() - adapt.FirstUParameter())/2.;
double v = adapt.FirstVParameter() + (adapt.LastVParameter() - adapt.FirstVParameter())/2.;
BRepLProp_SLProps prop(adapt,u,v,2,Precision::Confusion());
if(prop.IsNormalDefined()) {
double u = adapt.FirstUParameter() + (adapt.LastUParameter() - adapt.FirstUParameter()) / 2.;
double v = adapt.FirstVParameter() + (adapt.LastVParameter() - adapt.FirstVParameter()) / 2.;
BRepLProp_SLProps prop(adapt, u, v, 2, Precision::Confusion());
if (prop.IsNormalDefined()) {
gp_Pnt pnt; gp_Vec vec;
// handles the orientation state of the shape
BRepGProp_Face(face).Normal(u,v,pnt,vec);
BRepGProp_Face(face).Normal(u, v, pnt, vec);
SketchVector = Base::Vector3d(vec.X(), vec.Y(), vec.Z());
}
}
@@ -1226,12 +1240,12 @@ Base::Vector3d ProfileBased::getProfileNormal() const {
return SketchVector;
}
void ProfileBased::Restore(Base::XMLReader& reader)
void ProfileBased::Restore(Base::XMLReader & reader)
{
PartDesign::FeatureAddSub::Restore(reader);
}
void ProfileBased::handleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName)
void ProfileBased::handleChangedPropertyName(Base::XMLReader & reader, const char* TypeName, const char* PropName)
{
//check if we load the old sketch property
if ((strcmp("Sketch", PropName) == 0) && (strcmp("App::PropertyLink", TypeName) == 0)) {