This commit adds getShape and setShape to TopoShape

This commit is contained in:
Wolfgang E. Sanyer
2016-08-02 15:59:39 -04:00
committed by wmayer
parent 5a30a43862
commit 7f4a437cc2
54 changed files with 400 additions and 372 deletions

View File

@@ -112,7 +112,7 @@ int TopoShapeFacePy::PyInit(PyObject* args, PyObject* /*kwd*/)
PyObject *pW;
if (PyArg_ParseTuple(args, "O!", &(Part::TopoShapePy::Type), &pW)) {
try {
const TopoDS_Shape& sh = static_cast<Part::TopoShapePy*>(pW)->getTopoShapePtr()->_Shape;
const TopoDS_Shape& sh = static_cast<Part::TopoShapePy*>(pW)->getTopoShapePtr()->getShape();
if (sh.IsNull()) {
PyErr_SetString(PartExceptionOCCError, "cannot create face out of empty wire");
return -1;
@@ -124,11 +124,11 @@ int TopoShapeFacePy::PyInit(PyObject* args, PyObject* /*kwd*/)
PyErr_SetString(PartExceptionOCCError, "Failed to create face from wire");
return -1;
}
getTopoShapePtr()->_Shape = mkFace.Face();
getTopoShapePtr()->setShape(mkFace.Face());
return 0;
}
else if (sh.ShapeType() == TopAbs_FACE) {
getTopoShapePtr()->_Shape = sh;
getTopoShapePtr()->setShape(sh);
return 0;
}
}
@@ -160,7 +160,7 @@ int TopoShapeFacePy::PyInit(PyObject* args, PyObject* /*kwd*/)
for (Py::List::iterator it = list.begin(); it != list.end(); ++it) {
PyObject* item = (*it).ptr();
if (PyObject_TypeCheck(item, &(Part::TopoShapePy::Type))) {
const TopoDS_Shape& sh = static_cast<Part::TopoShapePy*>(item)->getTopoShapePtr()->_Shape;
const TopoDS_Shape& sh = static_cast<Part::TopoShapePy*>(item)->getTopoShapePtr()->getShape();
if (sh.ShapeType() == TopAbs_WIRE)
mkFace.Add(TopoDS::Wire(sh));
else {
@@ -175,7 +175,7 @@ int TopoShapeFacePy::PyInit(PyObject* args, PyObject* /*kwd*/)
}
}
getTopoShapePtr()->_Shape = mkFace.Face();
getTopoShapePtr()->setShape(mkFace.Face());
return 0;
}
catch (Standard_Failure) {
@@ -193,7 +193,7 @@ int TopoShapeFacePy::PyInit(PyObject* args, PyObject* /*kwd*/)
for (Py::List::iterator it = list.begin(); it != list.end(); ++it) {
PyObject* item = (*it).ptr();
if (PyObject_TypeCheck(item, &(Part::TopoShapePy::Type))) {
const TopoDS_Shape& sh = static_cast<Part::TopoShapePy*>(item)->getTopoShapePtr()->_Shape;
const TopoDS_Shape& sh = static_cast<Part::TopoShapePy*>(item)->getTopoShapePtr()->getShape();
if (sh.ShapeType() == TopAbs_WIRE)
wires.push_back(TopoDS::Wire(sh));
else
@@ -231,7 +231,7 @@ int TopoShapeFacePy::PyInit(PyObject* args, PyObject* /*kwd*/)
}
for (std::vector<TopoDS_Wire>::iterator it = wires.begin()+1; it != wires.end(); ++it)
mkFace.Add(*it);
getTopoShapePtr()->_Shape = mkFace.Face();
getTopoShapePtr()->setShape(mkFace.Face());
return 0;
}
else {
@@ -254,7 +254,7 @@ PyObject* TopoShapeFacePy::makeOffset(PyObject *args)
double dist;
if (!PyArg_ParseTuple(args, "d",&dist))
return 0;
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
BRepBuilderAPI_FindPlane findPlane(f);
if (!findPlane.Found()) {
PyErr_SetString(PartExceptionOCCError, "No planar face");
@@ -273,7 +273,7 @@ PyObject* TopoShapeFacePy::valueAt(PyObject *args)
if (!PyArg_ParseTuple(args, "dd",&u,&v))
return 0;
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
BRepAdaptor_Surface adapt(f);
BRepLProp_SLProps prop(adapt,u,v,0,Precision::Confusion());
@@ -287,7 +287,7 @@ PyObject* TopoShapeFacePy::normalAt(PyObject *args)
if (!PyArg_ParseTuple(args, "dd",&u,&v))
return 0;
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
BRepAdaptor_Surface adapt(f);
BRepLProp_SLProps prop(adapt,u,v,2,Precision::Confusion());
@@ -311,7 +311,7 @@ PyObject* TopoShapeFacePy::tangentAt(PyObject *args)
gp_Dir dir;
Py::Tuple tuple(2);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
BRepAdaptor_Surface adapt(f);
BRepLProp_SLProps prop(adapt,u,v,2,Precision::Confusion());
@@ -342,7 +342,7 @@ PyObject* TopoShapeFacePy::curvatureAt(PyObject *args)
return 0;
Py::Tuple tuple(2);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
BRepAdaptor_Surface adapt(f);
BRepLProp_SLProps prop(adapt,u,v,2,Precision::Confusion());
@@ -365,7 +365,7 @@ PyObject* TopoShapeFacePy::derivative1At(PyObject *args)
return 0;
Py::Tuple tuple(2);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
BRepAdaptor_Surface adapt(f);
try {
@@ -390,7 +390,7 @@ PyObject* TopoShapeFacePy::derivative2At(PyObject *args)
return 0;
Py::Tuple tuple(2);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
BRepAdaptor_Surface adapt(f);
try {
@@ -414,7 +414,7 @@ PyObject* TopoShapeFacePy::isPartOfDomain(PyObject *args)
if (!PyArg_ParseTuple(args, "dd",&u,&v))
return 0;
const TopoDS_Face& face = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& face = TopoDS::Face(getTopoShapePtr()->getShape());
double tol;
//double u1, u2, v1, v2, dialen;
@@ -443,7 +443,7 @@ PyObject* TopoShapeFacePy::makeHalfSpace(PyObject *args)
try {
Base::Vector3d pt = Py::Vector(pPnt,false).toVector();
BRepPrimAPI_MakeHalfSpace mkHS(TopoDS::Face(this->getTopoShapePtr()->_Shape), gp_Pnt(pt.x,pt.y,pt.z));
BRepPrimAPI_MakeHalfSpace mkHS(TopoDS::Face(this->getTopoShapePtr()->getShape()), gp_Pnt(pt.x,pt.y,pt.z));
return new TopoShapeSolidPy(new TopoShape(mkHS.Solid()));
}
catch (Standard_Failure) {
@@ -459,7 +459,7 @@ PyObject* TopoShapeFacePy::validate(PyObject *args)
return 0;
try {
const TopoDS_Face& face = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& face = TopoDS::Face(getTopoShapePtr()->getShape());
BRepCheck_Analyzer aChecker(face);
if (!aChecker.IsValid()) {
TopoDS_Wire outerwire = ShapeAnalysis::OuterWire(face);
@@ -490,10 +490,10 @@ PyObject* TopoShapeFacePy::validate(PyObject *args)
fix.Perform();
fix.FixWireTool()->Perform();
fix.FixFaceTool()->Perform();
getTopoShapePtr()->_Shape = fix.Shape();
getTopoShapePtr()->setShape(fix.Shape());
}
else {
getTopoShapePtr()->_Shape = mkFace.Face();
getTopoShapePtr()->setShape(mkFace.Face());
}
}
@@ -508,7 +508,7 @@ PyObject* TopoShapeFacePy::validate(PyObject *args)
Py::Object TopoShapeFacePy::getSurface() const
{
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
BRepAdaptor_Surface adapt(f);
switch(adapt.GetType())
{
@@ -623,27 +623,27 @@ PyObject* TopoShapeFacePy::setTolerance(PyObject *args)
if (!PyArg_ParseTuple(args, "d", &tol))
return 0;
BRep_Builder aBuilder;
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
aBuilder.UpdateFace(f, tol);
Py_Return;
}
Py::Float TopoShapeFacePy::getTolerance(void) const
{
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
return Py::Float(BRep_Tool::Tolerance(f));
}
void TopoShapeFacePy::setTolerance(Py::Float tol)
{
BRep_Builder aBuilder;
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
aBuilder.UpdateFace(f, (double)tol);
}
Py::Tuple TopoShapeFacePy::getParameterRange(void) const
{
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape);
const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->getShape());
BRepAdaptor_Surface adapt(f);
double u1 = adapt.FirstUParameter();
double u2 = adapt.LastUParameter();
@@ -675,7 +675,7 @@ Py::Object TopoShapeFacePy::getWire(void) const
Py::Object TopoShapeFacePy::getOuterWire(void) const
{
const TopoDS_Shape& clSh = getTopoShapePtr()->_Shape;
const TopoDS_Shape& clSh = getTopoShapePtr()->getShape();
if (clSh.IsNull())
throw Py::Exception("Null shape");
if (clSh.ShapeType() == TopAbs_FACE) {
@@ -692,7 +692,7 @@ Py::Object TopoShapeFacePy::getOuterWire(void) const
Py::Object TopoShapeFacePy::getMass(void) const
{
GProp_GProps props;
BRepGProp::SurfaceProperties(getTopoShapePtr()->_Shape, props);
BRepGProp::SurfaceProperties(getTopoShapePtr()->getShape(), props);
double c = props.Mass();
return Py::Float(c);
}
@@ -700,7 +700,7 @@ Py::Object TopoShapeFacePy::getMass(void) const
Py::Object TopoShapeFacePy::getCenterOfMass(void) const
{
GProp_GProps props;
BRepGProp::SurfaceProperties(getTopoShapePtr()->_Shape, props);
BRepGProp::SurfaceProperties(getTopoShapePtr()->getShape(), props);
gp_Pnt c = props.CentreOfMass();
return Py::Vector(Base::Vector3d(c.X(),c.Y(),c.Z()));
}
@@ -708,7 +708,7 @@ Py::Object TopoShapeFacePy::getCenterOfMass(void) const
Py::Object TopoShapeFacePy::getMatrixOfInertia(void) const
{
GProp_GProps props;
BRepGProp::SurfaceProperties(getTopoShapePtr()->_Shape, props);
BRepGProp::SurfaceProperties(getTopoShapePtr()->getShape(), props);
gp_Mat m = props.MatrixOfInertia();
Base::Matrix4D mat;
for (int i=0; i<3; i++) {
@@ -722,7 +722,7 @@ Py::Object TopoShapeFacePy::getMatrixOfInertia(void) const
Py::Object TopoShapeFacePy::getStaticMoments(void) const
{
GProp_GProps props;
BRepGProp::SurfaceProperties(getTopoShapePtr()->_Shape, props);
BRepGProp::SurfaceProperties(getTopoShapePtr()->getShape(), props);
Standard_Real lx,ly,lz;
props.StaticMoments(lx,ly,lz);
Py::Tuple tuple(3);
@@ -735,7 +735,7 @@ Py::Object TopoShapeFacePy::getStaticMoments(void) const
Py::Dict TopoShapeFacePy::getPrincipalProperties(void) const
{
GProp_GProps props;
BRepGProp::SurfaceProperties(getTopoShapePtr()->_Shape, props);
BRepGProp::SurfaceProperties(getTopoShapePtr()->getShape(), props);
GProp_PrincipalProps pprops = props.PrincipalProperties();
Py::Dict dict;