Delinting pass
This commit is contained in:
@@ -63,10 +63,6 @@
|
||||
# include <Geom_SurfaceOfRevolution.hxx>
|
||||
# include <Geom_ToroidalSurface.hxx>
|
||||
# include <Geom_TrimmedCurve.hxx>
|
||||
# if OCC_VERSION_HEX < 0x070600
|
||||
# include <GeomAdaptor_HSurface.hxx>
|
||||
# include <GeomAdaptor_HCurve.hxx>
|
||||
# endif
|
||||
# include <GeomAPI_ExtremaCurveCurve.hxx>
|
||||
# include <GeomAPI_Interpolate.hxx>
|
||||
# include <GeomAPI_ProjectPointOnCurve.hxx>
|
||||
@@ -95,15 +91,13 @@
|
||||
# include <Standard_ConstructionError.hxx>
|
||||
# include <Standard_Real.hxx>
|
||||
# include <Standard_Version.hxx>
|
||||
# include <TColgp_Array1OfPnt.hxx>
|
||||
# include <TColgp_Array1OfVec.hxx>
|
||||
# include <TColgp_Array2OfPnt.hxx>
|
||||
# include <TColgp_HArray1OfPnt.hxx>
|
||||
# include <TColStd_Array1OfReal.hxx>
|
||||
# include <TColStd_Array1OfInteger.hxx>
|
||||
# include <TColStd_HArray1OfBoolean.hxx>
|
||||
|
||||
# if OCC_VERSION_HEX < 0x070600
|
||||
# include <GeomAdaptor_HSurface.hxx>
|
||||
# include <GeomAdaptor_HCurve.hxx>
|
||||
# endif
|
||||
|
||||
@@ -117,6 +111,7 @@
|
||||
#include <Base/Writer.h>
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <TopoDS.hxx>
|
||||
#include <memory>
|
||||
|
||||
#include "Geometry.h"
|
||||
#include "ArcOfCirclePy.h"
|
||||
@@ -197,40 +192,43 @@ const char* gce_ErrorStatusText(gce_ErrorType et)
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
TYPESYSTEM_SOURCE_ABSTRACT(Part::Geometry,Base::Persistence)
|
||||
TYPESYSTEM_SOURCE_ABSTRACT(Part::Geometry,Base::Persistence) // NOLINT
|
||||
|
||||
Geometry::Geometry()
|
||||
Geometry::Geometry() // NOLINT
|
||||
{
|
||||
createNewTag();
|
||||
}
|
||||
|
||||
Geometry::~Geometry() = default;
|
||||
|
||||
bool Geometry::hasSameExtensions(const Geometry &other) const
|
||||
bool Geometry::hasSameExtensions(const Geometry& other) const
|
||||
{
|
||||
// We skip non persistent extension while doing comparison. Not sure if
|
||||
// this will cause any problem.
|
||||
size_t i = 0;
|
||||
for (const auto &e : extensions) {
|
||||
if (auto ext = Base::freecad_dynamic_cast<
|
||||
const GeometryPersistenceExtension>(e.get())) {
|
||||
for (;i < other.extensions.size(); ++i) {
|
||||
if (auto extOther = Base::freecad_dynamic_cast<
|
||||
const GeometryPersistenceExtension>(other.extensions[i].get())) {
|
||||
if (!ext->isSame(*extOther))
|
||||
size_t index = 0;
|
||||
for (const auto& ext : extensions) {
|
||||
if (auto persistExt =
|
||||
Base::freecad_dynamic_cast<const GeometryPersistenceExtension>(ext.get())) {
|
||||
for (; index < other.extensions.size(); ++index) {
|
||||
if (auto extOther = Base::freecad_dynamic_cast<const GeometryPersistenceExtension>(
|
||||
other.extensions[index].get())) {
|
||||
if (!persistExt->isSame(*extOther)) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= other.extensions.size())
|
||||
if (index >= other.extensions.size()) {
|
||||
return false;
|
||||
++i;
|
||||
}
|
||||
++index;
|
||||
}
|
||||
}
|
||||
for (;i < other.extensions.size(); ++i) {
|
||||
for (; index < other.extensions.size(); ++index) {
|
||||
if (Base::freecad_dynamic_cast<const GeometryPersistenceExtension>(
|
||||
other.extensions[i].get()))
|
||||
other.extensions[index].get())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -241,37 +239,37 @@ unsigned int Geometry::getMemSize () const
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::unique_ptr<Geometry> Geometry::fromShape(const TopoDS_Shape &s, bool silent)
|
||||
std::unique_ptr<Geometry> Geometry::fromShape(const TopoDS_Shape &shape, bool silent)
|
||||
{
|
||||
std::unique_ptr<Geometry> geom;
|
||||
|
||||
if (s.IsNull()) {
|
||||
if (shape.IsNull()) {
|
||||
if(!silent)
|
||||
throw Base::ValueError("Null shape");
|
||||
return geom;
|
||||
}
|
||||
|
||||
switch (s.ShapeType()) {
|
||||
switch (shape.ShapeType()) {
|
||||
case TopAbs_VERTEX: {
|
||||
gp_Pnt p = BRep_Tool::Pnt(TopoDS::Vertex(s));
|
||||
geom.reset(new GeomPoint(Base::Vector3d(p.X(),p.Y(),p.Z())));
|
||||
gp_Pnt p = BRep_Tool::Pnt(TopoDS::Vertex(shape));
|
||||
geom = std::make_unique<GeomPoint>(Base::Vector3d(p.X(),p.Y(),p.Z()));
|
||||
break;
|
||||
}
|
||||
case TopAbs_EDGE: {
|
||||
const TopoDS_Edge& e = TopoDS::Edge(s);
|
||||
const TopoDS_Edge& e = TopoDS::Edge(shape);
|
||||
BRepAdaptor_Curve adapt(e);
|
||||
geom = makeFromCurveAdaptor(adapt, silent);
|
||||
break;
|
||||
}
|
||||
case TopAbs_FACE: {
|
||||
const TopoDS_Face& f = TopoDS::Face(s);
|
||||
const TopoDS_Face& f = TopoDS::Face(shape);
|
||||
BRepAdaptor_Surface adapt(f);
|
||||
geom = makeFromSurfaceAdaptor(adapt, silent);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if(!silent)
|
||||
FC_THROWM(Base::TypeError, "Unsupported shape type " << TopoShape::shapeName(s.ShapeType()));
|
||||
FC_THROWM(Base::TypeError, "Unsupported shape type " << TopoShape::shapeName(shape.ShapeType()));
|
||||
}
|
||||
return geom;
|
||||
}
|
||||
@@ -310,15 +308,15 @@ void Geometry::Restore(Base::XMLReader &reader)
|
||||
|
||||
long count = reader.getAttributeAsInteger("count");
|
||||
|
||||
for (long i = 0; i < count; i++) {
|
||||
for (long index = 0; index < count; index++) {
|
||||
reader.readElement("GeoExtension");
|
||||
const char* TypeName = reader.getAttribute("type");
|
||||
Base::Type type = Base::Type::fromName(TypeName);
|
||||
GeometryPersistenceExtension *newE = static_cast<GeometryPersistenceExtension *>(type.createInstance());
|
||||
if (newE) {
|
||||
newE->Restore(reader);
|
||||
auto *newExtension = static_cast<GeometryPersistenceExtension *>(type.createInstance());
|
||||
if (newExtension) {
|
||||
newExtension->Restore(reader);
|
||||
|
||||
extensions.push_back(std::shared_ptr<GeometryExtension>(newE));
|
||||
extensions.push_back(std::shared_ptr<GeometryExtension>(newExtension));
|
||||
}
|
||||
else {
|
||||
Base::Console().Warning("Cannot restore geometry extension of type: %s\n", TypeName);
|
||||
@@ -329,7 +327,7 @@ void Geometry::Restore(Base::XMLReader &reader)
|
||||
}
|
||||
else if(strcmp(reader.localName(),"Construction") == 0) { // legacy
|
||||
|
||||
bool construction = (int)reader.getAttributeAsInteger("value")==0?false:true;
|
||||
bool construction = (int)reader.getAttributeAsInteger("value") != 0;
|
||||
|
||||
// prepare migration
|
||||
if(!this->hasExtension(GeometryMigrationExtension::getClassTypeId()))
|
||||
@@ -353,30 +351,29 @@ std::vector<std::weak_ptr<const GeometryExtension>> Geometry::getExtensions() co
|
||||
{
|
||||
std::vector<std::weak_ptr<const GeometryExtension>> wp;
|
||||
|
||||
for(auto & ext:extensions)
|
||||
for (auto& ext : extensions) {
|
||||
wp.push_back(ext);
|
||||
}
|
||||
|
||||
return wp;
|
||||
}
|
||||
|
||||
bool Geometry::hasExtension(const Base::Type & type) const
|
||||
{
|
||||
for(const auto& ext : extensions) {
|
||||
if(ext->getTypeId() == type)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return std::any_of(extensions.begin(),
|
||||
extensions.end(),
|
||||
[type](auto geoExt) {
|
||||
return geoExt->getTypeId() == type;
|
||||
});
|
||||
}
|
||||
|
||||
bool Geometry::hasExtension(const std::string & name) const
|
||||
{
|
||||
for(const auto& ext : extensions) {
|
||||
if(ext->getName() == name)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return std::any_of(extensions.begin(),
|
||||
extensions.end(),
|
||||
[name](auto geoExt) {
|
||||
return geoExt->getName() == name;
|
||||
});
|
||||
}
|
||||
|
||||
std::weak_ptr<GeometryExtension> Geometry::getExtension(const Base::Type & type)
|
||||
@@ -477,9 +474,9 @@ void Geometry::assignTag(const Part::Geometry * geo)
|
||||
throw Base::TypeError("Geometry tag can not be assigned as geometry types do not match.");
|
||||
}
|
||||
|
||||
void Geometry::copyNonTag(const Part::Geometry * src)
|
||||
void Geometry::copyNonTag(const Part::Geometry* src)
|
||||
{
|
||||
for(auto & ext: src->extensions) {
|
||||
for (auto& ext : src->extensions) {
|
||||
this->extensions.push_back(ext->copy());
|
||||
extensions.back()->notifyAttachment(this);
|
||||
}
|
||||
@@ -495,19 +492,19 @@ Geometry *Geometry::clone() const
|
||||
return cpy;
|
||||
}
|
||||
|
||||
void Geometry::mirror(const Base::Vector3d& point)
|
||||
void Geometry::mirror(const Base::Vector3d& point) const
|
||||
{
|
||||
gp_Pnt pnt(point.x, point.y, point.z);
|
||||
handle()->Mirror(pnt);
|
||||
}
|
||||
|
||||
void Geometry::mirror(const Base::Vector3d& point, const Base::Vector3d& dir)
|
||||
void Geometry::mirror(const Base::Vector3d& point, const Base::Vector3d& dir) const
|
||||
{
|
||||
gp_Ax1 ax1(gp_Pnt(point.x,point.y,point.z), gp_Dir(dir.x,dir.y,dir.z));
|
||||
handle()->Mirror(ax1);
|
||||
}
|
||||
|
||||
void Geometry::rotate(const Base::Placement& plm)
|
||||
void Geometry::rotate(const Base::Placement& plm) const
|
||||
{
|
||||
Base::Rotation rot(plm.getRotation());
|
||||
Base::Vector3d pnt, dir;
|
||||
@@ -521,13 +518,13 @@ void Geometry::rotate(const Base::Placement& plm)
|
||||
handle()->Rotate(ax1, angle);
|
||||
}
|
||||
|
||||
void Geometry::scale(const Base::Vector3d& vec, double scale)
|
||||
void Geometry::scale(const Base::Vector3d& vec, double scale) const
|
||||
{
|
||||
gp_Pnt pnt(vec.x, vec.y, vec.z);
|
||||
handle()->Scale(pnt, scale);
|
||||
}
|
||||
|
||||
void Geometry::transform(const Base::Matrix4D& mat)
|
||||
void Geometry::transform(const Base::Matrix4D& mat) const
|
||||
{
|
||||
gp_Trsf trf;
|
||||
trf.SetValues(mat[0][0],mat[0][1],mat[0][2],mat[0][3],
|
||||
@@ -536,7 +533,7 @@ void Geometry::transform(const Base::Matrix4D& mat)
|
||||
handle()->Transform(trf);
|
||||
}
|
||||
|
||||
void Geometry::translate(const Base::Vector3d& vec)
|
||||
void Geometry::translate(const Base::Vector3d& vec) const
|
||||
{
|
||||
gp_Vec trl(vec.x, vec.y, vec.z);
|
||||
handle()->Translate(trl);
|
||||
@@ -577,7 +574,7 @@ void GeomPoint::setHandle(const Handle(Geom_CartesianPoint)& p)
|
||||
|
||||
Geometry *GeomPoint::copy() const
|
||||
{
|
||||
GeomPoint *newPoint = new GeomPoint(myPoint);
|
||||
auto newPoint = new GeomPoint(myPoint);
|
||||
newPoint->copyNonTag(this);
|
||||
return newPoint;
|
||||
}
|
||||
@@ -643,7 +640,7 @@ PyObject *GeomPoint::getPyObject()
|
||||
bool GeomPoint::isSame(const Geometry &other, double tol, double) const
|
||||
{
|
||||
return other.getTypeId() == getTypeId()
|
||||
&& Base::DistanceP2(static_cast<const GeomPoint &>(other).getPoint(),getPoint()) <= tol*tol;
|
||||
&& Base::DistanceP2(dynamic_cast<const GeomPoint &>(other).getPoint(),getPoint()) <= tol*tol;
|
||||
}
|
||||
|
||||
// -------------------------------------------------
|
||||
@@ -694,20 +691,20 @@ static Standard_Boolean IsLinear(const Adaptor3d_Curve& theC)
|
||||
|
||||
bool GeomCurve::isLinear(Base::Vector3d *dir, Base::Vector3d *base) const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
return isLinear(c, dir, base);
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
return isLinear(curve, dir, base);
|
||||
}
|
||||
|
||||
bool GeomCurve::isLinear(const Handle(Geom_Curve) &c, Base::Vector3d *dir, Base::Vector3d *base)
|
||||
bool GeomCurve::isLinear(const Handle(Geom_Curve) &curve, Base::Vector3d *dir, Base::Vector3d *base)
|
||||
{
|
||||
GeomAdaptor_Curve adaptor(c);
|
||||
GeomAdaptor_Curve adaptor(curve);
|
||||
if (!IsLinear(adaptor))
|
||||
return false;
|
||||
|
||||
if (dir || base) {
|
||||
if (adaptor.GetType() == GeomAbs_Line) {
|
||||
// Special treatment of Geom_Line because it is infinite
|
||||
Handle(Geom_Line) curv = Handle(Geom_Line)::DownCast(c);
|
||||
Handle(Geom_Line) curv = Handle(Geom_Line)::DownCast(curve);
|
||||
if (base) {
|
||||
gp_Pnt Pos = curv->Lin().Location();
|
||||
*base = Base::Vector3d(Pos.X(), Pos.Y(), Pos.Z());
|
||||
@@ -719,8 +716,8 @@ bool GeomCurve::isLinear(const Handle(Geom_Curve) &c, Base::Vector3d *dir, Base:
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
GeomLProp_CLProps prop1(c,c->FirstParameter(),0,Precision::Confusion());
|
||||
GeomLProp_CLProps prop2(c,c->LastParameter(),0,Precision::Confusion());
|
||||
GeomLProp_CLProps prop1(curve,curve->FirstParameter(),0,Precision::Confusion());
|
||||
GeomLProp_CLProps prop2(curve,curve->LastParameter(),0,Precision::Confusion());
|
||||
const gp_Pnt &p1 = prop1.Value();
|
||||
const gp_Pnt &p2 = prop2.Value();
|
||||
if (base)
|
||||
@@ -735,7 +732,7 @@ bool GeomCurve::isLinear(const Handle(Geom_Curve) &c, Base::Vector3d *dir, Base:
|
||||
return true;
|
||||
}
|
||||
|
||||
GeomLine* GeomCurve::toLine(bool clone) const
|
||||
GeomLine* GeomCurve::toLine(KeepTag clone) const
|
||||
{
|
||||
if (!isLinear())
|
||||
return nullptr;
|
||||
@@ -744,20 +741,21 @@ GeomLine* GeomCurve::toLine(bool clone) const
|
||||
auto p2 = pointAtParameter(getLastParameter());
|
||||
auto res = new GeomLine(p1, p2-p1);
|
||||
res->copyNonTag(this);
|
||||
if (clone)
|
||||
if (clone == CopyTag) {
|
||||
res->tag = this->tag;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
GeomLineSegment* GeomCurve::toLineSegment(bool clone) const
|
||||
GeomLineSegment* GeomCurve::toLineSegment(KeepTag clone) const
|
||||
{
|
||||
if (!isLinear())
|
||||
return nullptr;
|
||||
|
||||
Base::Vector3d start, end;
|
||||
if (isDerivedFrom(GeomBoundedCurve::getClassTypeId())) {
|
||||
start = static_cast<const GeomBoundedCurve*>(this)->getStartPoint();
|
||||
end = static_cast<const GeomBoundedCurve*>(this)->getEndPoint();
|
||||
start = dynamic_cast<const GeomBoundedCurve*>(this)->getStartPoint();
|
||||
end = dynamic_cast<const GeomBoundedCurve*>(this)->getEndPoint();
|
||||
} else {
|
||||
start = pointAtParameter(getFirstParameter());
|
||||
end = pointAtParameter(getLastParameter());
|
||||
@@ -765,8 +763,9 @@ GeomLineSegment* GeomCurve::toLineSegment(bool clone) const
|
||||
auto res = new GeomLineSegment;
|
||||
res->setPoints(start, end);
|
||||
res->copyNonTag(this);
|
||||
if (clone)
|
||||
if (clone == CopyTag) {
|
||||
res->tag = this->tag;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -787,8 +786,8 @@ GeomBSplineCurve* GeomCurve::toNurbs(double first, double last) const
|
||||
|
||||
bool GeomCurve::tangent(double u, gp_Dir& dir) const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
GeomLProp_CLProps prop(c,u,1,Precision::Confusion());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
GeomLProp_CLProps prop(curve, u,1,Precision::Confusion());
|
||||
if (prop.IsTangentDefined()) {
|
||||
prop.Tangent(dir);
|
||||
return true;
|
||||
@@ -812,17 +811,17 @@ bool GeomCurve::tangent(double u, Base::Vector3d& dir) const
|
||||
|
||||
Base::Vector3d GeomCurve::value(double u) const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
|
||||
const gp_Pnt &point = c->Value(u);
|
||||
const gp_Pnt &point = curve->Value(u);
|
||||
|
||||
return Base::Vector3d(point.X(),point.Y(),point.Z());
|
||||
}
|
||||
|
||||
Base::Vector3d GeomCurve::pointAtParameter(double u) const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
GeomLProp_CLProps prop(c,u,0,Precision::Confusion());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
GeomLProp_CLProps prop(curve, u,0,Precision::Confusion());
|
||||
|
||||
const gp_Pnt &point=prop.Value();
|
||||
|
||||
@@ -831,8 +830,8 @@ Base::Vector3d GeomCurve::pointAtParameter(double u) const
|
||||
|
||||
Base::Vector3d GeomCurve::firstDerivativeAtParameter(double u) const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
GeomLProp_CLProps prop(c,u,1,Precision::Confusion());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
GeomLProp_CLProps prop(curve, u,1,Precision::Confusion());
|
||||
|
||||
const gp_Vec &vec=prop.D1();
|
||||
|
||||
@@ -841,8 +840,8 @@ Base::Vector3d GeomCurve::firstDerivativeAtParameter(double u) const
|
||||
|
||||
Base::Vector3d GeomCurve::secondDerivativeAtParameter(double u) const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
GeomLProp_CLProps prop(c,u,2,Precision::Confusion());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
GeomLProp_CLProps prop(curve, u,2,Precision::Confusion());
|
||||
|
||||
const gp_Vec &vec=prop.D2();
|
||||
|
||||
@@ -851,11 +850,11 @@ Base::Vector3d GeomCurve::secondDerivativeAtParameter(double u) const
|
||||
|
||||
bool GeomCurve::normalAt(double u, Base::Vector3d& dir) const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
|
||||
try {
|
||||
if (!c.IsNull()) {
|
||||
GeomLProp_CLProps prop(c,u,2,Precision::Confusion());
|
||||
if (!curve.IsNull()) {
|
||||
GeomLProp_CLProps prop(curve, u,2,Precision::Confusion());
|
||||
gp_Dir gdir;
|
||||
prop.Normal(gdir);
|
||||
dir = Base::Vector3d(gdir.X(), gdir.Y(), gdir.Z());
|
||||
@@ -867,8 +866,8 @@ bool GeomCurve::normalAt(double u, Base::Vector3d& dir) const
|
||||
dir.Set(0,0,0);
|
||||
return false;
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
THROWM(Base::CADKernelError,e.GetMessageString())
|
||||
catch (Standard_Failure& exc) {
|
||||
THROWM(Base::CADKernelError, exc.GetMessageString())
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -882,12 +881,12 @@ bool GeomCurve::normalAt(const Base::Vector3d & curvepoint, Base::Vector3d & dir
|
||||
return normalAt(u, dir);
|
||||
}
|
||||
|
||||
bool GeomCurve::intersect( const GeomCurve *c,
|
||||
bool GeomCurve::intersect( const GeomCurve *curve,
|
||||
std::vector<std::pair<Base::Vector3d, Base::Vector3d>>& points,
|
||||
double tol) const
|
||||
{
|
||||
Handle(Geom_Curve) curve1 = Handle(Geom_Curve)::DownCast(handle());
|
||||
Handle(Geom_Curve) curve2 = Handle(Geom_Curve)::DownCast(c->handle());
|
||||
Handle(Geom_Curve) curve2 = Handle(Geom_Curve)::DownCast(curve->handle());
|
||||
|
||||
if(!curve1.IsNull() && !curve2.IsNull()) {
|
||||
return intersect(curve1,curve2,points, tol);
|
||||
@@ -897,7 +896,7 @@ bool GeomCurve::intersect( const GeomCurve *c,
|
||||
|
||||
}
|
||||
|
||||
bool GeomCurve::intersect(const Handle(Geom_Curve) curve1, const Handle(Geom_Curve) curve2,
|
||||
bool GeomCurve::intersect(const Handle(Geom_Curve)& curve1, const Handle(Geom_Curve)& curve2,
|
||||
std::vector<std::pair<Base::Vector3d, Base::Vector3d>>& points,
|
||||
double tol)
|
||||
{
|
||||
@@ -934,55 +933,55 @@ bool GeomCurve::intersect(const Handle(Geom_Curve) curve1, const Handle(Geom_Cur
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int i = 1; i <= intersector.NbExtrema(); i++) {
|
||||
if (intersector.Distance(i) > tol)
|
||||
for (int index = 1; index <= intersector.NbExtrema(); index++) {
|
||||
if (intersector.Distance(index) > tol)
|
||||
continue;
|
||||
|
||||
gp_Pnt p1, p2;
|
||||
intersector.Points(i, p1, p2);
|
||||
intersector.Points(index, p1, p2);
|
||||
points.emplace_back(Base::Vector3d(p1.X(),p1.Y(),p1.Z()),Base::Vector3d(p2.X(),p2.Y(),p2.Z()));
|
||||
}
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
catch (Standard_Failure& exc) {
|
||||
// Yes Extrema finding failed, but if we got an intersection then go on with it
|
||||
if(points.size()>0)
|
||||
return points.size()>0?true:false;
|
||||
if(!points.empty())
|
||||
return !points.empty();
|
||||
else
|
||||
THROWM(Base::CADKernelError,e.GetMessageString())
|
||||
THROWM(Base::CADKernelError,exc.GetMessageString())
|
||||
}
|
||||
|
||||
|
||||
return !points.empty()?true:false;
|
||||
return !points.empty();
|
||||
}
|
||||
|
||||
bool GeomCurve::closestParameter(const Base::Vector3d& point, double &u) const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
try {
|
||||
if (!c.IsNull()) {
|
||||
if (!curve.IsNull()) {
|
||||
gp_Pnt pnt(point.x,point.y,point.z);
|
||||
GeomAPI_ProjectPointOnCurve ppc(pnt, c);
|
||||
GeomAPI_ProjectPointOnCurve ppc(pnt, curve);
|
||||
u = ppc.LowerDistanceParameter();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (StdFail_NotDone& e) {
|
||||
if (c->IsKind(STANDARD_TYPE(Geom_BoundedCurve))){
|
||||
Base::Vector3d firstpoint = this->pointAtParameter(c->FirstParameter());
|
||||
Base::Vector3d lastpoint = this->pointAtParameter(c->LastParameter());
|
||||
catch (StdFail_NotDone& exc) {
|
||||
if (curve->IsKind(STANDARD_TYPE(Geom_BoundedCurve))){
|
||||
Base::Vector3d firstpoint = this->pointAtParameter(curve->FirstParameter());
|
||||
Base::Vector3d lastpoint = this->pointAtParameter(curve->LastParameter());
|
||||
|
||||
if((firstpoint-point).Length() < (lastpoint-point).Length())
|
||||
u = c->FirstParameter();
|
||||
u = curve->FirstParameter();
|
||||
else
|
||||
u = c->LastParameter();
|
||||
u = curve->LastParameter();
|
||||
}
|
||||
else
|
||||
THROWM(Base::CADKernelError,e.GetMessageString())
|
||||
THROWM(Base::CADKernelError, exc.GetMessageString())
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
THROWM(Base::CADKernelError,e.GetMessageString())
|
||||
catch (Standard_Failure& exc) {
|
||||
THROWM(Base::CADKernelError, exc.GetMessageString())
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -990,9 +989,9 @@ bool GeomCurve::closestParameter(const Base::Vector3d& point, double &u) const
|
||||
|
||||
bool GeomCurve::closestParameterToBasisCurve(const Base::Vector3d& point, double &u) const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
|
||||
if (c->IsKind(STANDARD_TYPE(Geom_TrimmedCurve))){
|
||||
if (curve->IsKind(STANDARD_TYPE(Geom_TrimmedCurve))){
|
||||
Handle(Geom_TrimmedCurve) tc = Handle(Geom_TrimmedCurve)::DownCast(handle());
|
||||
Handle(Geom_Curve) bc = tc->BasisCurve();
|
||||
try {
|
||||
@@ -1003,8 +1002,8 @@ bool GeomCurve::closestParameterToBasisCurve(const Base::Vector3d& point, double
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
THROWM(Base::CADKernelError,e.GetMessageString())
|
||||
catch (Standard_Failure& exc) {
|
||||
THROWM(Base::CADKernelError, exc.GetMessageString())
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -1016,71 +1015,71 @@ bool GeomCurve::closestParameterToBasisCurve(const Base::Vector3d& point, double
|
||||
|
||||
double GeomCurve::getFirstParameter() const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
|
||||
try {
|
||||
// pending check for RealFirst RealLast in case of infinite curve
|
||||
return c->FirstParameter();
|
||||
return curve->FirstParameter();
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
catch (Standard_Failure& exc) {
|
||||
|
||||
THROWM(Base::CADKernelError,e.GetMessageString())
|
||||
THROWM(Base::CADKernelError, exc.GetMessageString())
|
||||
}
|
||||
}
|
||||
|
||||
double GeomCurve::getLastParameter() const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
|
||||
try {
|
||||
// pending check for RealFirst RealLast in case of infinite curve
|
||||
return c->LastParameter();
|
||||
return curve->LastParameter();
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
catch (Standard_Failure& exc) {
|
||||
|
||||
THROWM(Base::CADKernelError,e.GetMessageString())
|
||||
THROWM(Base::CADKernelError, exc.GetMessageString())
|
||||
}
|
||||
}
|
||||
|
||||
double GeomCurve::curvatureAt(double u) const
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
|
||||
try {
|
||||
GeomLProp_CLProps prop(c,u,2,Precision::Confusion());
|
||||
GeomLProp_CLProps prop(curve, u,2,Precision::Confusion());
|
||||
return prop.Curvature();
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
catch (Standard_Failure& exc) {
|
||||
|
||||
THROWM(Base::CADKernelError,e.GetMessageString())
|
||||
THROWM(Base::CADKernelError, exc.GetMessageString())
|
||||
}
|
||||
}
|
||||
|
||||
double GeomCurve::length(double u, double v) const
|
||||
{
|
||||
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
|
||||
try {
|
||||
GeomAdaptor_Curve adaptor(c);
|
||||
GeomAdaptor_Curve adaptor(curve);
|
||||
return GCPnts_AbscissaPoint::Length(adaptor,u,v,Precision::Confusion());
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
catch (Standard_Failure& exc) {
|
||||
|
||||
THROWM(Base::CADKernelError,e.GetMessageString())
|
||||
THROWM(Base::CADKernelError, exc.GetMessageString())
|
||||
}
|
||||
}
|
||||
|
||||
void GeomCurve::reverse()
|
||||
{
|
||||
Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle());
|
||||
Handle(Geom_Curve) curve = Handle(Geom_Curve)::DownCast(handle());
|
||||
|
||||
try {
|
||||
c->Reverse();
|
||||
curve->Reverse();
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
catch (Standard_Failure& exc) {
|
||||
|
||||
THROWM(Base::CADKernelError,e.GetMessageString())
|
||||
THROWM(Base::CADKernelError, exc.GetMessageString())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1112,20 +1111,20 @@ Base::Vector3d GeomBoundedCurve::getEndPoint() const
|
||||
|
||||
// -------------------------------------------------
|
||||
|
||||
TYPESYSTEM_SOURCE(Part::GeomBezierCurve,Part::GeomBoundedCurve)
|
||||
TYPESYSTEM_SOURCE(Part::GeomBezierCurve, Part::GeomBoundedCurve)
|
||||
|
||||
GeomBezierCurve::GeomBezierCurve()
|
||||
{
|
||||
TColgp_Array1OfPnt poles(1,2);
|
||||
poles(1) = gp_Pnt(0.0,0.0,0.0);
|
||||
poles(2) = gp_Pnt(0.0,0.0,1.0);
|
||||
Handle(Geom_BezierCurve) b = new Geom_BezierCurve(poles);
|
||||
this->myCurve = b;
|
||||
Handle(Geom_BezierCurve) bezier = new Geom_BezierCurve(poles);
|
||||
this->myCurve = bezier;
|
||||
}
|
||||
|
||||
GeomBezierCurve::GeomBezierCurve(const Handle(Geom_BezierCurve)& b)
|
||||
GeomBezierCurve::GeomBezierCurve(const Handle(Geom_BezierCurve)& bezier)
|
||||
{
|
||||
setHandle(b);
|
||||
setHandle(bezier);
|
||||
}
|
||||
|
||||
GeomBezierCurve::GeomBezierCurve( const std::vector<Base::Vector3d>& poles, const std::vector<double>& weights)
|
||||
@@ -1133,20 +1132,20 @@ GeomBezierCurve::GeomBezierCurve( const std::vector<Base::Vector3d>& poles, cons
|
||||
if (poles.size() != weights.size())
|
||||
throw Base::ValueError("poles and weights mismatch");
|
||||
|
||||
TColgp_Array1OfPnt p(1,poles.size());
|
||||
TColStd_Array1OfReal w(1,poles.size());
|
||||
for (std::size_t i = 1; i <= poles.size(); i++) {
|
||||
p.SetValue(i, gp_Pnt(poles[i-1].x,poles[i-1].y,poles[i-1].z));
|
||||
w.SetValue(i, weights[i-1]);
|
||||
TColgp_Array1OfPnt poleArray(1,poles.size());
|
||||
TColStd_Array1OfReal weightArray(1,poles.size());
|
||||
for (std::size_t index = 1; index <= poles.size(); index++) {
|
||||
poleArray.SetValue(index, gp_Pnt(poles[index-1].x,poles[index-1].y,poles[index-1].z));
|
||||
weightArray.SetValue(index, weights[index-1]);
|
||||
}
|
||||
this->myCurve = new Geom_BezierCurve (p, w);
|
||||
this->myCurve = new Geom_BezierCurve (poleArray, weightArray);
|
||||
}
|
||||
|
||||
GeomBezierCurve::~GeomBezierCurve() = default;
|
||||
|
||||
void GeomBezierCurve::setHandle(const Handle(Geom_BezierCurve)& c)
|
||||
void GeomBezierCurve::setHandle(const Handle(Geom_BezierCurve)& curve)
|
||||
{
|
||||
myCurve = Handle(Geom_BezierCurve)::DownCast(c->Copy());
|
||||
myCurve = Handle(Geom_BezierCurve)::DownCast(curve->Copy());
|
||||
}
|
||||
|
||||
const Handle(Geom_Geometry)& GeomBezierCurve::handle() const
|
||||
@@ -1156,7 +1155,7 @@ const Handle(Geom_Geometry)& GeomBezierCurve::handle() const
|
||||
|
||||
Geometry *GeomBezierCurve::copy() const
|
||||
{
|
||||
GeomBezierCurve *newCurve = new GeomBezierCurve(myCurve);
|
||||
auto *newCurve = new GeomBezierCurve(myCurve);
|
||||
newCurve->copyNonTag(this);
|
||||
return newCurve;
|
||||
}
|
||||
@@ -1165,11 +1164,11 @@ std::vector<Base::Vector3d> GeomBezierCurve::getPoles() const
|
||||
{
|
||||
std::vector<Base::Vector3d> poles;
|
||||
poles.reserve(myCurve->NbPoles());
|
||||
TColgp_Array1OfPnt p(1,myCurve->NbPoles());
|
||||
myCurve->Poles(p);
|
||||
TColgp_Array1OfPnt poleArray(1,myCurve->NbPoles());
|
||||
myCurve->Poles(poleArray);
|
||||
|
||||
for (Standard_Integer i=p.Lower(); i<=p.Upper(); i++) {
|
||||
const gp_Pnt& pnt = p(i);
|
||||
for (Standard_Integer index=poleArray.Lower(); index<=poleArray.Upper(); index++) {
|
||||
const gp_Pnt& pnt = poleArray(index);
|
||||
poles.emplace_back(pnt.X(), pnt.Y(), pnt.Z());
|
||||
}
|
||||
return poles;
|
||||
@@ -1179,11 +1178,11 @@ std::vector<double> GeomBezierCurve::getWeights() const
|
||||
{
|
||||
std::vector<double> weights;
|
||||
weights.reserve(myCurve->NbPoles());
|
||||
TColStd_Array1OfReal w(1,myCurve->NbPoles());
|
||||
myCurve->Weights(w);
|
||||
TColStd_Array1OfReal weightArray(1,myCurve->NbPoles());
|
||||
myCurve->Weights(weightArray);
|
||||
|
||||
for (Standard_Integer i=w.Lower(); i<=w.Upper(); i++) {
|
||||
const Standard_Real& real = w(i);
|
||||
for (Standard_Integer index=weightArray.Lower(); index<=weightArray.Upper(); index++) {
|
||||
const Standard_Real& real = weightArray(index);
|
||||
weights.push_back(real);
|
||||
}
|
||||
return weights;
|
||||
@@ -1238,38 +1237,38 @@ void GeomBezierCurve::Restore(Base::XMLReader& reader)
|
||||
// get the value of my attribute
|
||||
int polescount = reader.getAttributeAsInteger("PolesCount");
|
||||
|
||||
TColgp_Array1OfPnt p(1,polescount);
|
||||
TColStd_Array1OfReal w(1,polescount);
|
||||
TColgp_Array1OfPnt poleArray(1,polescount);
|
||||
TColStd_Array1OfReal weightArray(1,polescount);
|
||||
|
||||
for (int i = 1; i <= polescount; i++) {
|
||||
for (int index = 1; index <= polescount; index++) {
|
||||
reader.readElement("Pole");
|
||||
double X = reader.getAttributeAsFloat("X");
|
||||
double Y = reader.getAttributeAsFloat("Y");
|
||||
double Z = reader.getAttributeAsFloat("Z");
|
||||
double W = reader.getAttributeAsFloat("Weight");
|
||||
p.SetValue(i, gp_Pnt(X,Y,Z));
|
||||
w.SetValue(i, W);
|
||||
poleArray.SetValue(index, gp_Pnt(X,Y,Z));
|
||||
weightArray.SetValue(index, W);
|
||||
}
|
||||
|
||||
reader.readEndElement("BezierCurve");
|
||||
|
||||
try {
|
||||
Handle(Geom_BezierCurve) bezier = new Geom_BezierCurve(p, w);
|
||||
Handle(Geom_BezierCurve) bezier = new Geom_BezierCurve(poleArray, weightArray);
|
||||
|
||||
if (!bezier.IsNull())
|
||||
this->myCurve = bezier;
|
||||
else
|
||||
THROWM(Base::CADKernelError,"BezierCurve restore failed")
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
catch (Standard_Failure& exc) {
|
||||
|
||||
THROWM(Base::CADKernelError,e.GetMessageString())
|
||||
THROWM(Base::CADKernelError, exc.GetMessageString())
|
||||
}
|
||||
}
|
||||
|
||||
PyObject *GeomBezierCurve::getPyObject()
|
||||
{
|
||||
return new BezierCurvePy(static_cast<GeomBezierCurve*>(this->clone()));
|
||||
return new BezierCurvePy(dynamic_cast<GeomBezierCurve*>(this->clone()));
|
||||
}
|
||||
|
||||
bool GeomBezierCurve::isSame(const Geometry &_other, double tol, double) const
|
||||
@@ -1277,16 +1276,16 @@ bool GeomBezierCurve::isSame(const Geometry &_other, double tol, double) const
|
||||
if(_other.getTypeId() != getTypeId())
|
||||
return false;
|
||||
|
||||
auto &other = static_cast<const GeomBezierCurve &>(_other);
|
||||
auto &other = dynamic_cast<const GeomBezierCurve &>(_other);
|
||||
|
||||
Standard_Integer c = myCurve->NbPoles();
|
||||
if(c!= other.myCurve->NbPoles())
|
||||
return false;
|
||||
|
||||
double tol2 = tol*tol;
|
||||
for(Standard_Integer i=1; i<=c; ++i) {
|
||||
if(myCurve->Pole(i).SquareDistance(other.myCurve->Pole(i)) > tol2
|
||||
|| fabs(myCurve->Weight(i) - other.myCurve->Weight(i)) > tol)
|
||||
for(Standard_Integer index =1; index <=c; ++index) {
|
||||
if(myCurve->Pole(index).SquareDistance(other.myCurve->Pole(index)) > tol2
|
||||
|| fabs(myCurve->Weight(index) - other.myCurve->Weight(index)) > tol)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -1333,14 +1332,14 @@ GeomBSplineCurve::GeomBSplineCurve( const std::vector<Base::Vector3d>& poles, co
|
||||
TColStd_Array1OfReal k(1,knots.size());
|
||||
TColStd_Array1OfInteger m(1,knots.size());
|
||||
|
||||
for (std::size_t i = 1; i <= poles.size(); i++) {
|
||||
p.SetValue(i, gp_Pnt(poles[i-1].x,poles[i-1].y,poles[i-1].z));
|
||||
w.SetValue(i, weights[i-1]);
|
||||
for (int index = 1; index <= poles.size(); index++) {
|
||||
p.SetValue(index, gp_Pnt(poles[index -1].x,poles[index -1].y,poles[index -1].z));
|
||||
w.SetValue(index, weights[index -1]);
|
||||
}
|
||||
|
||||
for (std::size_t i = 1; i <= knots.size(); i++) {
|
||||
k.SetValue(i, knots[i-1]);
|
||||
m.SetValue(i, multiplicities[i-1]);
|
||||
for (int index = 1; index <= knots.size(); index++) {
|
||||
k.SetValue(index, knots[index -1]);
|
||||
m.SetValue(index, multiplicities[index -1]);
|
||||
}
|
||||
|
||||
this->myCurve = new Geom_BSplineCurve (p, w, k, m, degree, periodic?Standard_True:Standard_False, checkrational?Standard_True:Standard_False);
|
||||
@@ -1350,9 +1349,9 @@ GeomBSplineCurve::GeomBSplineCurve( const std::vector<Base::Vector3d>& poles, co
|
||||
|
||||
GeomBSplineCurve::~GeomBSplineCurve() = default;
|
||||
|
||||
void GeomBSplineCurve::setHandle(const Handle(Geom_BSplineCurve)& c)
|
||||
void GeomBSplineCurve::setHandle(const Handle(Geom_BSplineCurve)& curve)
|
||||
{
|
||||
myCurve = Handle(Geom_BSplineCurve)::DownCast(c->Copy());
|
||||
myCurve = Handle(Geom_BSplineCurve)::DownCast(curve->Copy());
|
||||
}
|
||||
|
||||
const Handle(Geom_Geometry)& GeomBSplineCurve::handle() const
|
||||
@@ -1363,12 +1362,12 @@ const Handle(Geom_Geometry)& GeomBSplineCurve::handle() const
|
||||
Geometry *GeomBSplineCurve::copy() const
|
||||
{
|
||||
try {
|
||||
GeomBSplineCurve *newCurve = new GeomBSplineCurve(myCurve);
|
||||
auto *newCurve = new GeomBSplineCurve(myCurve);
|
||||
newCurve->copyNonTag(this);
|
||||
return newCurve;
|
||||
}
|
||||
catch (Standard_Failure& e) {
|
||||
THROWM(Base::CADKernelError, e.GetMessageString())
|
||||
catch (Standard_Failure& exc) {
|
||||
THROWM(Base::CADKernelError, exc.GetMessageString())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1439,7 +1438,7 @@ void GeomBSplineCurve::setPoles(const std::vector<Base::Vector3d>& poles)
|
||||
{
|
||||
Standard_Integer index=1;
|
||||
|
||||
for (std::vector<Base::Vector3d>::const_iterator it = poles.begin(); it != poles.end(); ++it, index++){
|
||||
for (auto it = poles.begin(); it != poles.end(); ++it, index++){
|
||||
setPole(index, *it);
|
||||
}
|
||||
}
|
||||
@@ -1479,7 +1478,7 @@ void GeomBSplineCurve::setWeights(const std::vector<double>& weights)
|
||||
try {
|
||||
Standard_Integer index=1;
|
||||
|
||||
for (std::vector<double>::const_iterator it = weights.begin(); it != weights.end(); ++it, index++){
|
||||
for (auto it = weights.begin(); it != weights.end(); ++it, index++){
|
||||
myCurve->SetWeight(index, *it);
|
||||
}
|
||||
}
|
||||
@@ -1507,7 +1506,7 @@ void GeomBSplineCurve::setKnots(const std::vector<double>& knots)
|
||||
{
|
||||
Standard_Integer index=1;
|
||||
|
||||
for (std::vector<double>::const_iterator it = knots.begin(); it != knots.end(); ++it, index++) {
|
||||
for (auto it = knots.begin(); it != knots.end(); ++it, index++) {
|
||||
setKnot(index, *it);
|
||||
}
|
||||
}
|
||||
@@ -1958,7 +1957,7 @@ void GeomBSplineCurve::Restore(Base::XMLReader& reader)
|
||||
|
||||
PyObject *GeomBSplineCurve::getPyObject()
|
||||
{
|
||||
return new BSplineCurvePy(static_cast<GeomBSplineCurve*>(this->clone()));
|
||||
return new BSplineCurvePy(dynamic_cast<GeomBSplineCurve*>(this->clone()));
|
||||
}
|
||||
|
||||
bool GeomBSplineCurve::isSame(const Geometry &_other, double tol, double atol) const
|
||||
@@ -1972,7 +1971,7 @@ bool GeomBSplineCurve::isSame(const Geometry &_other, double tol, double atol) c
|
||||
return false;
|
||||
}
|
||||
|
||||
auto &other = static_cast<const GeomBSplineCurve &>(_other);
|
||||
auto &other = dynamic_cast<const GeomBSplineCurve &>(_other);
|
||||
(void)atol;
|
||||
|
||||
if(countPoles() != other.countPoles()
|
||||
@@ -3940,7 +3939,7 @@ GeomBSplineCurve* GeomParabola::toNurbs(double first, double last) const
|
||||
{
|
||||
// the default implementation suffices because a non-rational B-spline with
|
||||
// one segment is a parabola
|
||||
return GeomCurve::toNurbs(first, last);
|
||||
return GeomCurve::toNurbs(first, last); // NOLINT
|
||||
}
|
||||
|
||||
double GeomParabola::getFocal() const
|
||||
@@ -4373,14 +4372,14 @@ bool GeomLine::isSame(const Geometry &_other, double tol, double atol) const
|
||||
{
|
||||
if(_other.getTypeId() != getTypeId()) {
|
||||
if (_other.isDerivedFrom(GeomCurve::getClassTypeId())) {
|
||||
std::unique_ptr<Geometry> geo(static_cast<const GeomCurve&>(_other).toLine());
|
||||
std::unique_ptr<Geometry> geo(dynamic_cast<const GeomCurve&>(_other).toLine());
|
||||
if (geo)
|
||||
return isSame(*geo, tol, atol);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
auto &other = static_cast<const GeomLine &>(_other);
|
||||
auto &other = dynamic_cast<const GeomLine &>(_other);
|
||||
|
||||
return getDir().GetAngle(other.getDir()) <= atol
|
||||
&& Base::DistanceP2(getPos(), other.getPos()) <= tol*tol;
|
||||
@@ -4425,7 +4424,7 @@ const Handle(Geom_Geometry)& GeomLineSegment::handle() const
|
||||
|
||||
Geometry *GeomLineSegment::copy()const
|
||||
{
|
||||
GeomLineSegment *tempCurve = new GeomLineSegment();
|
||||
auto *tempCurve = new GeomLineSegment();
|
||||
tempCurve->myCurve = Handle(Geom_TrimmedCurve)::DownCast(myCurve->Copy());
|
||||
tempCurve->copyNonTag(this);
|
||||
return tempCurve;
|
||||
@@ -4463,7 +4462,8 @@ void GeomLineSegment::setPoints(const Base::Vector3d& Start, const Base::Vector3
|
||||
// get Geom_Line of line segment
|
||||
Handle(Geom_Line) this_line = Handle(Geom_Line)::DownCast
|
||||
(this_curv->BasisCurve());
|
||||
Handle(Geom_TrimmedCurve) that_curv = ms.Value();
|
||||
Handle(Geom_TrimmedCurve)& that_curv =
|
||||
const_cast<opencascade::handle<Geom_TrimmedCurve>&>(ms.Value());
|
||||
Handle(Geom_Line) that_line = Handle(Geom_Line)::DownCast(that_curv->BasisCurve());
|
||||
this_line->SetLin(that_line->Lin());
|
||||
this_curv->SetTrim(that_curv->FirstParameter(), that_curv->LastParameter());
|
||||
@@ -4541,7 +4541,7 @@ void GeomLineSegment::Restore (Base::XMLReader &reader)
|
||||
|
||||
PyObject *GeomLineSegment::getPyObject()
|
||||
{
|
||||
return new LineSegmentPy(static_cast<GeomLineSegment*>(this->clone()));
|
||||
return new LineSegmentPy(dynamic_cast<GeomLineSegment*>(this->clone()));
|
||||
}
|
||||
|
||||
// -------------------------------------------------
|
||||
@@ -4568,12 +4568,12 @@ GeomOffsetCurve::~GeomOffsetCurve() = default;
|
||||
|
||||
Geometry *GeomOffsetCurve::copy() const
|
||||
{
|
||||
GeomOffsetCurve *newCurve = new GeomOffsetCurve(myCurve);
|
||||
auto *newCurve = new GeomOffsetCurve(myCurve);
|
||||
newCurve->copyNonTag(this);
|
||||
return newCurve;
|
||||
}
|
||||
|
||||
Base::Vector3d GeomOffsetCurve::getDir(void) const
|
||||
Base::Vector3d GeomOffsetCurve::getDir() const
|
||||
{
|
||||
gp_Dir Dir = this->myCurve->Direction();
|
||||
return Base::Vector3d(Dir.X(),Dir.Y(),Dir.Z());
|
||||
@@ -4612,7 +4612,7 @@ void GeomOffsetCurve::Restore(Base::XMLReader &/*reader*/)
|
||||
|
||||
PyObject *GeomOffsetCurve::getPyObject()
|
||||
{
|
||||
return new OffsetCurvePy(static_cast<GeomOffsetCurve*>(this->clone()));
|
||||
return new OffsetCurvePy(dynamic_cast<GeomOffsetCurve*>(this->clone()));
|
||||
}
|
||||
|
||||
bool GeomOffsetCurve::isSame(const Geometry &_other, double tol, double atol) const
|
||||
@@ -4620,7 +4620,7 @@ bool GeomOffsetCurve::isSame(const Geometry &_other, double tol, double atol) co
|
||||
if(_other.getTypeId() != getTypeId())
|
||||
return false;
|
||||
|
||||
auto &other = static_cast<const GeomOffsetCurve &>(_other);
|
||||
auto &other = dynamic_cast<const GeomOffsetCurve &>(_other);
|
||||
if(myCurve->Direction().Angle(other.myCurve->Direction()) > atol || fabs(getOffset() - other.getOffset()) > tol)
|
||||
return false;
|
||||
|
||||
@@ -4662,10 +4662,11 @@ bool GeomSurface::isPlanar(const Handle(Geom_Surface) &s, gp_Pln *pln, double to
|
||||
GeomPlane* GeomSurface::toPlane(bool clone, double tol) const
|
||||
{
|
||||
if (isDerivedFrom(GeomPlane::getClassTypeId())) {
|
||||
if (clone)
|
||||
return static_cast<GeomPlane*>(this->clone());
|
||||
else
|
||||
return static_cast<GeomPlane*>(this->copy());
|
||||
if (clone) {
|
||||
return dynamic_cast<GeomPlane*>(this->clone());
|
||||
} else {
|
||||
return dynamic_cast<GeomPlane*>(this->copy());
|
||||
}
|
||||
}
|
||||
|
||||
gp_Pln pln;
|
||||
@@ -4813,7 +4814,7 @@ void GeomBezierSurface::setHandle(const Handle(Geom_BezierSurface)& b)
|
||||
|
||||
Geometry *GeomBezierSurface::copy() const
|
||||
{
|
||||
GeomBezierSurface *newSurf = new GeomBezierSurface(mySurface);
|
||||
auto *newSurf = new GeomBezierSurface(mySurface);
|
||||
newSurf->copyNonTag(this);
|
||||
return newSurf;
|
||||
}
|
||||
|
||||
@@ -72,6 +72,12 @@
|
||||
|
||||
namespace Part {
|
||||
|
||||
enum KeepTag
|
||||
{
|
||||
NewTag, // Assign a new tag
|
||||
CopyTag // Keep the existing tag
|
||||
};
|
||||
|
||||
class PartExport Geometry: public Base::Persistence
|
||||
{
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
@@ -114,12 +120,12 @@ public:
|
||||
void deleteExtension(const Base::Type & type);
|
||||
void deleteExtension(const std::string & name);
|
||||
|
||||
void mirror(const Base::Vector3d& point);
|
||||
void mirror(const Base::Vector3d& point, const Base::Vector3d& dir);
|
||||
void rotate(const Base::Placement& plm);
|
||||
void scale(const Base::Vector3d& vec, double scale);
|
||||
void transform(const Base::Matrix4D& mat);
|
||||
void translate(const Base::Vector3d& vec);
|
||||
void mirror(const Base::Vector3d& point) const;
|
||||
void mirror(const Base::Vector3d& point, const Base::Vector3d& dir) const;
|
||||
void rotate(const Base::Placement& plm) const;
|
||||
void scale(const Base::Vector3d& vec, double scale) const;
|
||||
void transform(const Base::Matrix4D& mat) const;
|
||||
void translate(const Base::Vector3d& vec) const;
|
||||
|
||||
protected:
|
||||
/// create a new tag for the geometry object
|
||||
@@ -146,8 +152,8 @@ class PartExport GeomPoint : public Geometry
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomPoint();
|
||||
GeomPoint(const Handle(Geom_CartesianPoint)&);
|
||||
GeomPoint(const Base::Vector3d&);
|
||||
explicit GeomPoint(const Handle(Geom_CartesianPoint)&);
|
||||
explicit GeomPoint(const Base::Vector3d&);
|
||||
~GeomPoint() override;
|
||||
Geometry *copy() const override;
|
||||
TopoDS_Shape toShape() const override;
|
||||
@@ -157,8 +163,15 @@ public:
|
||||
void Save(Base::Writer &/*writer*/) const override;
|
||||
void Restore(Base::XMLReader &/*reader*/) override;
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject() override;
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
PyObject* getPyObject() override;
|
||||
/**
|
||||
* Compare this point to another one.
|
||||
* @param other Other geometry point. Can pass in Other geometry types but will not match
|
||||
* @param tol Points meed to be within tol^2 to match.
|
||||
* @param atol Angle tolerance is not used for points.
|
||||
* @return True if a match is found.
|
||||
*/
|
||||
bool isSame(const Geometry& other, double tol, double atol) const override;
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
void setHandle(const Handle(Geom_CartesianPoint)&);
|
||||
|
||||
@@ -183,7 +196,7 @@ public:
|
||||
static bool isLinear(const Handle(Geom_Curve) &c, Base::Vector3d *dir = nullptr, Base::Vector3d *base = nullptr);
|
||||
bool isLinear(Base::Vector3d *dir = nullptr, Base::Vector3d *base = nullptr) const;
|
||||
|
||||
TopoDS_Shape toShape() const;
|
||||
TopoDS_Shape toShape() const override;
|
||||
/*!
|
||||
* \brief toBSpline Converts the curve to a B-spline
|
||||
* \param This is the start parameter of the curve
|
||||
@@ -218,11 +231,11 @@ public:
|
||||
|
||||
Base::Vector3d value(double u) const;
|
||||
|
||||
GeomLine *toLine(bool clone=true) const;
|
||||
GeomLineSegment *toLineSegment(bool clone=true) const;
|
||||
GeomLine* toLine(KeepTag clone = CopyTag) const;
|
||||
GeomLineSegment* toLineSegment(KeepTag clone = CopyTag) const;
|
||||
|
||||
protected:
|
||||
static bool intersect(const Handle(Geom_Curve) c, const Handle(Geom_Curve) c2,
|
||||
static bool intersect(const Handle(Geom_Curve)& c, const Handle(Geom_Curve)& c2,
|
||||
std::vector<std::pair<Base::Vector3d, Base::Vector3d>>& points,
|
||||
double tol = Precision::Confusion());
|
||||
};
|
||||
@@ -244,7 +257,7 @@ class PartExport GeomBezierCurve : public GeomBoundedCurve
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomBezierCurve();
|
||||
GeomBezierCurve(const Handle(Geom_BezierCurve)&);
|
||||
explicit GeomBezierCurve(const Handle(Geom_BezierCurve)&);
|
||||
GeomBezierCurve(const std::vector<Base::Vector3d>&, const std::vector<double>&);
|
||||
~GeomBezierCurve() override;
|
||||
Geometry *copy() const override;
|
||||
@@ -271,7 +284,7 @@ class PartExport GeomBSplineCurve : public GeomBoundedCurve
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomBSplineCurve();
|
||||
GeomBSplineCurve(const Handle(Geom_BSplineCurve)&);
|
||||
explicit GeomBSplineCurve(const Handle(Geom_BSplineCurve)&);
|
||||
|
||||
GeomBSplineCurve( const std::vector<Base::Vector3d>& poles, const std::vector<double>& weights,
|
||||
const std::vector<double>& knots, const std::vector<int>& multiplicities,
|
||||
@@ -342,7 +355,7 @@ public:
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject(void) override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_BSplineCurve)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -394,9 +407,9 @@ public:
|
||||
PyObject *getPyObject() override = 0;
|
||||
GeomBSplineCurve* toNurbs(double first, double last) const override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
const Handle(Geom_Geometry)& handle() const = 0;
|
||||
const Handle(Geom_Geometry)& handle() const override = 0;
|
||||
};
|
||||
|
||||
class PartExport GeomTrimmedCurve : public GeomBoundedCurve
|
||||
@@ -404,7 +417,7 @@ class PartExport GeomTrimmedCurve : public GeomBoundedCurve
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomTrimmedCurve();
|
||||
GeomTrimmedCurve(const Handle(Geom_TrimmedCurve)&);
|
||||
explicit GeomTrimmedCurve(const Handle(Geom_TrimmedCurve)&);
|
||||
~GeomTrimmedCurve() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -415,9 +428,9 @@ public:
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject(void) override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_TrimmedCurve)&);
|
||||
virtual void setHandle(const Handle(Geom_TrimmedCurve)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
|
||||
bool intersectBasisCurves( const GeomTrimmedCurve * c,
|
||||
@@ -488,7 +501,7 @@ class PartExport GeomCircle : public GeomConic
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomCircle();
|
||||
GeomCircle(const Handle(Geom_Circle)&);
|
||||
explicit GeomCircle(const Handle(Geom_Circle)&);
|
||||
~GeomCircle() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -503,7 +516,7 @@ public:
|
||||
PyObject *getPyObject() override;
|
||||
GeomBSplineCurve* toNurbs(double first, double last) const override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
|
||||
@@ -518,7 +531,7 @@ class PartExport GeomArcOfCircle : public GeomArcOfConic
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomArcOfCircle();
|
||||
GeomArcOfCircle(const Handle(Geom_Circle)&);
|
||||
explicit GeomArcOfCircle(const Handle(Geom_Circle)&);
|
||||
~GeomArcOfCircle() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -538,7 +551,7 @@ public:
|
||||
PyObject *getPyObject() override;
|
||||
GeomBSplineCurve* toNurbs(double first, double last) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_TrimmedCurve)&);
|
||||
void setHandle(const Handle(Geom_TrimmedCurve)&) override;
|
||||
void setHandle(const Handle(Geom_Circle)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
|
||||
@@ -549,7 +562,7 @@ class PartExport GeomEllipse : public GeomConic
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomEllipse();
|
||||
GeomEllipse(const Handle(Geom_Ellipse)&);
|
||||
explicit GeomEllipse(const Handle(Geom_Ellipse)&);
|
||||
~GeomEllipse() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -569,7 +582,7 @@ public:
|
||||
PyObject *getPyObject() override;
|
||||
GeomBSplineCurve* toNurbs(double first, double last) const override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_Ellipse) &e);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -583,7 +596,7 @@ class PartExport GeomArcOfEllipse : public GeomArcOfConic
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomArcOfEllipse();
|
||||
GeomArcOfEllipse(const Handle(Geom_Ellipse)&);
|
||||
explicit GeomArcOfEllipse(const Handle(Geom_Ellipse)&);
|
||||
~GeomArcOfEllipse() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -606,7 +619,7 @@ public:
|
||||
PyObject *getPyObject() override;
|
||||
GeomBSplineCurve* toNurbs(double first, double last) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_TrimmedCurve)&);
|
||||
void setHandle(const Handle(Geom_TrimmedCurve)&) override;
|
||||
void setHandle(const Handle(Geom_Ellipse)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
};
|
||||
@@ -617,7 +630,7 @@ class PartExport GeomHyperbola : public GeomConic
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomHyperbola();
|
||||
GeomHyperbola(const Handle(Geom_Hyperbola)&);
|
||||
explicit GeomHyperbola(const Handle(Geom_Hyperbola)&);
|
||||
~GeomHyperbola() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -634,7 +647,7 @@ public:
|
||||
PyObject *getPyObject() override;
|
||||
GeomBSplineCurve* toNurbs(double first, double last) const override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
void setHandle(const Handle(Geom_Hyperbola)&);
|
||||
@@ -648,7 +661,7 @@ class PartExport GeomArcOfHyperbola : public GeomArcOfConic
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomArcOfHyperbola();
|
||||
GeomArcOfHyperbola(const Handle(Geom_Hyperbola)&);
|
||||
explicit GeomArcOfHyperbola(const Handle(Geom_Hyperbola)&);
|
||||
~GeomArcOfHyperbola() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -671,7 +684,7 @@ public:
|
||||
PyObject *getPyObject() override;
|
||||
GeomBSplineCurve* toNurbs(double first, double last) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_TrimmedCurve)&);
|
||||
void setHandle(const Handle(Geom_TrimmedCurve)&) override;
|
||||
void setHandle(const Handle(Geom_Hyperbola)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
};
|
||||
@@ -681,7 +694,7 @@ class PartExport GeomParabola : public GeomConic
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomParabola();
|
||||
GeomParabola(const Handle(Geom_Parabola)&);
|
||||
explicit GeomParabola(const Handle(Geom_Parabola)&);
|
||||
~GeomParabola() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -696,7 +709,7 @@ public:
|
||||
PyObject *getPyObject() override;
|
||||
GeomBSplineCurve* toNurbs(double first, double last) const override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
void setHandle(const Handle(Geom_Parabola)&);
|
||||
@@ -710,7 +723,7 @@ class PartExport GeomArcOfParabola : public GeomArcOfConic
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomArcOfParabola();
|
||||
GeomArcOfParabola(const Handle(Geom_Parabola)&);
|
||||
explicit GeomArcOfParabola(const Handle(Geom_Parabola)&);
|
||||
~GeomArcOfParabola() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -730,7 +743,7 @@ public:
|
||||
PyObject *getPyObject() override;
|
||||
GeomBSplineCurve* toNurbs(double first, double last) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_TrimmedCurve)&);
|
||||
void setHandle(const Handle(Geom_TrimmedCurve)&) override;
|
||||
void setHandle(const Handle(Geom_Parabola)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
};
|
||||
@@ -740,7 +753,7 @@ class PartExport GeomLine : public GeomCurve
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomLine();
|
||||
GeomLine(const Handle(Geom_Line)&);
|
||||
explicit GeomLine(const Handle(Geom_Line)&);
|
||||
GeomLine(const Base::Vector3d& Pos, const Base::Vector3d& Dir);
|
||||
~GeomLine() override;
|
||||
Geometry *copy() const override;
|
||||
@@ -756,7 +769,7 @@ public:
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject() override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
void setHandle(const Handle(Geom_Line)&);
|
||||
@@ -770,7 +783,7 @@ class PartExport GeomLineSegment : public GeomTrimmedCurve
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomLineSegment();
|
||||
GeomLineSegment(const Handle(Geom_Line)& l);
|
||||
explicit GeomLineSegment(const Handle(Geom_Line)& l);
|
||||
~GeomLineSegment() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -787,7 +800,7 @@ public:
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject() override;
|
||||
|
||||
void setHandle(const Handle(Geom_TrimmedCurve)&);
|
||||
void setHandle(const Handle(Geom_TrimmedCurve)&) override;
|
||||
void setHandle(const Handle(Geom_Line)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
|
||||
@@ -800,11 +813,11 @@ public:
|
||||
GeomOffsetCurve();
|
||||
GeomOffsetCurve(const Handle(Geom_Curve)&, double, const gp_Dir&);
|
||||
GeomOffsetCurve(const Handle(Geom_Curve)&, double, Base::Vector3d&);
|
||||
GeomOffsetCurve(const Handle(Geom_OffsetCurve)&);
|
||||
explicit GeomOffsetCurve(const Handle(Geom_OffsetCurve)&);
|
||||
~GeomOffsetCurve() override;
|
||||
Geometry *copy(void) const override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
Base::Vector3d getDir(void) const;
|
||||
Base::Vector3d getDir() const;
|
||||
double getOffset() const;
|
||||
|
||||
// Persistence implementer ---------------------
|
||||
@@ -814,7 +827,7 @@ public:
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject() override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_OffsetCurve)& c);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -868,7 +881,7 @@ class PartExport GeomBezierSurface : public GeomSurface
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomBezierSurface();
|
||||
GeomBezierSurface(const Handle(Geom_BezierSurface)&);
|
||||
explicit GeomBezierSurface(const Handle(Geom_BezierSurface)&);
|
||||
~GeomBezierSurface() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -879,7 +892,7 @@ public:
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject() override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_BezierSurface)& b);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -893,7 +906,7 @@ class PartExport GeomBSplineSurface : public GeomSurface
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomBSplineSurface();
|
||||
GeomBSplineSurface(const Handle(Geom_BSplineSurface)&);
|
||||
explicit GeomBSplineSurface(const Handle(Geom_BSplineSurface)&);
|
||||
~GeomBSplineSurface() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -905,7 +918,7 @@ public:
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject() override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_BSplineSurface)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -922,22 +935,22 @@ protected:
|
||||
GeomElementarySurface();
|
||||
|
||||
public:
|
||||
virtual ~GeomElementarySurface();
|
||||
~GeomElementarySurface() override;
|
||||
|
||||
Base::Vector3d getLocation(void) const;
|
||||
Base::Vector3d getDir(void) const;
|
||||
Base::Vector3d getXDir(void) const;
|
||||
Base::Vector3d getYDir(void) const;
|
||||
Base::Vector3d getLocation() const;
|
||||
Base::Vector3d getDir() const;
|
||||
Base::Vector3d getXDir() const;
|
||||
Base::Vector3d getYDir() const;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
};
|
||||
|
||||
class PartExport GeomCylinder : public GeomElementarySurface
|
||||
{
|
||||
TYPESYSTEM_HEADER();
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomCylinder();
|
||||
GeomCylinder(const Handle(Geom_CylindricalSurface)&);
|
||||
explicit GeomCylinder(const Handle(Geom_CylindricalSurface)&);
|
||||
~GeomCylinder() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -946,11 +959,11 @@ public:
|
||||
void Save(Base::Writer &/*writer*/) const override;
|
||||
void Restore(Base::XMLReader &/*reader*/) override;
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject(void) override;
|
||||
PyObject *getPyObject() override;
|
||||
|
||||
double getRadius() const;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_CylindricalSurface)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -964,7 +977,7 @@ class PartExport GeomCone : public GeomElementarySurface
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomCone();
|
||||
GeomCone(const Handle(Geom_ConicalSurface)&);
|
||||
explicit GeomCone(const Handle(Geom_ConicalSurface)&);
|
||||
~GeomCone() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -973,12 +986,12 @@ public:
|
||||
void Save(Base::Writer &/*writer*/) const override;
|
||||
void Restore(Base::XMLReader &/*reader*/) override;
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject(void) override;
|
||||
PyObject *getPyObject() override;
|
||||
|
||||
double getRadius() const;
|
||||
double getSemiAngle() const;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_ConicalSurface)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -995,7 +1008,7 @@ class PartExport GeomSphere : public GeomElementarySurface
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomSphere();
|
||||
GeomSphere(const Handle(Geom_SphericalSurface)&);
|
||||
explicit GeomSphere(const Handle(Geom_SphericalSurface)&);
|
||||
~GeomSphere() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -1008,7 +1021,7 @@ public:
|
||||
|
||||
double getRadius(void) const;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_SphericalSurface)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -1022,7 +1035,7 @@ class PartExport GeomToroid : public GeomElementarySurface
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomToroid();
|
||||
GeomToroid(const Handle(Geom_ToroidalSurface)&);
|
||||
explicit GeomToroid(const Handle(Geom_ToroidalSurface)&);
|
||||
~GeomToroid() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -1033,10 +1046,10 @@ public:
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject() override;
|
||||
|
||||
double getMajorRadius(void) const;
|
||||
double getMinorRadius(void) const;
|
||||
double getMajorRadius() const;
|
||||
double getMinorRadius() const;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_ToroidalSurface)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -1050,8 +1063,8 @@ class PartExport GeomPlane : public GeomElementarySurface
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomPlane();
|
||||
GeomPlane(const Handle(Geom_Plane)&);
|
||||
GeomPlane(const gp_Pln &pln);
|
||||
explicit GeomPlane(const Handle(Geom_Plane)&);
|
||||
explicit GeomPlane(const gp_Pln &pln);
|
||||
~GeomPlane() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -1062,7 +1075,7 @@ public:
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject() override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_Plane)&);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -1077,7 +1090,7 @@ class PartExport GeomOffsetSurface : public GeomSurface
|
||||
public:
|
||||
GeomOffsetSurface();
|
||||
GeomOffsetSurface(const Handle(Geom_Surface)&, double);
|
||||
GeomOffsetSurface(const Handle(Geom_OffsetSurface)&);
|
||||
explicit GeomOffsetSurface(const Handle(Geom_OffsetSurface)&);
|
||||
~GeomOffsetSurface() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -1090,7 +1103,7 @@ public:
|
||||
|
||||
double getOffset() const;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_OffsetSurface)& s);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -1105,8 +1118,8 @@ class PartExport GeomPlateSurface : public GeomSurface
|
||||
public:
|
||||
GeomPlateSurface();
|
||||
GeomPlateSurface(const Handle(Geom_Surface)&, const Plate_Plate&);
|
||||
GeomPlateSurface(const GeomPlate_BuildPlateSurface&);
|
||||
GeomPlateSurface(const Handle(GeomPlate_Surface)&);
|
||||
explicit GeomPlateSurface(const GeomPlate_BuildPlateSurface&);
|
||||
explicit GeomPlateSurface(const Handle(GeomPlate_Surface)&);
|
||||
~GeomPlateSurface() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -1117,7 +1130,7 @@ public:
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject() override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(GeomPlate_Surface)& s);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -1131,7 +1144,7 @@ class PartExport GeomTrimmedSurface : public GeomSurface
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomTrimmedSurface();
|
||||
GeomTrimmedSurface(const Handle(Geom_RectangularTrimmedSurface)&);
|
||||
explicit GeomTrimmedSurface(const Handle(Geom_RectangularTrimmedSurface)&);
|
||||
~GeomTrimmedSurface() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
@@ -1142,7 +1155,7 @@ public:
|
||||
// Base implementer ----------------------------
|
||||
PyObject *getPyObject() override;
|
||||
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
|
||||
void setHandle(const Handle(Geom_RectangularTrimmedSurface)& s);
|
||||
const Handle(Geom_Geometry)& handle() const override;
|
||||
@@ -1159,20 +1172,20 @@ protected:
|
||||
GeomSweptSurface();
|
||||
|
||||
public:
|
||||
virtual ~GeomSweptSurface();
|
||||
~GeomSweptSurface() override;
|
||||
|
||||
Base::Vector3d getDir(void) const;
|
||||
virtual bool isSame(const Geometry &other, double tol, double atol) const;
|
||||
Base::Vector3d getDir() const;
|
||||
bool isSame(const Geometry &other, double tol, double atol) const override;
|
||||
};
|
||||
|
||||
|
||||
class PartExport GeomSurfaceOfRevolution : public GeomSweptSurface
|
||||
{
|
||||
TYPESYSTEM_HEADER();
|
||||
TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
||||
public:
|
||||
GeomSurfaceOfRevolution();
|
||||
GeomSurfaceOfRevolution(const Handle(Geom_Curve)&, const gp_Ax1&);
|
||||
GeomSurfaceOfRevolution(const Handle(Geom_SurfaceOfRevolution)&);
|
||||
explicit GeomSurfaceOfRevolution(const Handle(Geom_SurfaceOfRevolution)&);
|
||||
~GeomSurfaceOfRevolution() override;
|
||||
Geometry *copy() const override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user