本文整理汇总了C++中Handle_Geom_BSplineSurface类的典型用法代码示例。如果您正苦于以下问题:C++ Handle_Geom_BSplineSurface类的具体用法?C++ Handle_Geom_BSplineSurface怎么用?C++ Handle_Geom_BSplineSurface使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Handle_Geom_BSplineSurface类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: approxSurface
/* module functions */
static PyObject * approxSurface(PyObject *self, PyObject *args)
{
PyObject *o;
int orderU=4,orderV=4;
int pointsU=6,pointsV=6;
if (!PyArg_ParseTuple(args, "O|iiii",&o,&orderU,&orderV,&pointsU,&pointsV))
return NULL;
PY_TRY {
Py::Sequence l(o);
TColgp_Array1OfPnt clPoints(0, l.size()-1);
int index=0;
for (Py::Sequence::iterator it = l.begin(); it != l.end(); ++it) {
Py::Tuple t(*it);
clPoints(index++) = gp_Pnt(
(double)Py::Float(t.getItem(0)),
(double)Py::Float(t.getItem(1)),
(double)Py::Float(t.getItem(2)));
}
Reen::BSplineParameterCorrection pc(orderU,orderV,pointsU,pointsV);
Handle_Geom_BSplineSurface hSurf;
//pc.EnableSmoothing(true, 0.1f, 0.5f, 0.2f, 0.3f);
pc.EnableSmoothing(true, 0.1f, 1.0f, 0.0f, 0.0f);
hSurf = pc.CreateSurface(clPoints, 5, true, 1.0);
if (!hSurf.IsNull()) {
return new Part::BSplineSurfacePy(new Part::GeomBSplineSurface(hSurf));
}
PyErr_SetString(PyExc_Exception, "Computation of B-Spline surface failed");
return 0;
} PY_CATCH;
}
示例2: getLastUKnotIndex
Py::Object BSplineSurfacePy::getLastUKnotIndex(void) const
{
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
int index = surf->LastUKnotIndex();
return Py::Int(index);
}
示例3: getVDegree
Py::Int BSplineSurfacePy::getVDegree(void) const
{
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
int deg = surf->VDegree();
return Py::Int(deg);
}
示例4: exchangeUV
PyObject* BSplineSurfacePy::exchangeUV(PyObject *args)
{
if (!PyArg_ParseTuple(args, ""))
return 0;
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
surf->ExchangeUV();
Py_Return;
}
示例5: increaseDegree
PyObject* BSplineSurfacePy::increaseDegree(PyObject *args)
{
int udegree, vdegree;
if (!PyArg_ParseTuple(args, "ii",&udegree,&vdegree))
return 0;
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
surf->IncreaseDegree(udegree,vdegree);
Py_Return;
}
示例6: getVKnot
PyObject* BSplineSurfacePy::getVKnot(PyObject *args)
{
int Index;
if (!PyArg_ParseTuple(args, "i", &Index))
return 0;
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
double M = surf->VKnot(Index);
return Py_BuildValue("d",M);
}
示例7: GeomBSplineSurface
PyObject* BSplineSurfacePy::reparametrize(PyObject * args)
{
int u,v;
double tol = 0.000001;
if (!PyArg_ParseTuple(args, "ii|d", &u, &v, &tol))
return 0;
// u,v must be at least 2
u = std::max<int>(u, 2);
v = std::max<int>(v, 2);
try {
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
double maxU = surf->UKnot(surf->NbUKnots()); // 1.0 if normalized surface
double maxV = surf->VKnot(surf->NbVKnots()); // 1.0 if normalized surface
GeomBSplineSurface* geom = new GeomBSplineSurface();
Handle_Geom_BSplineSurface spline = Handle_Geom_BSplineSurface::DownCast
(geom->handle());
for (int i=1; i<u-1; i++) {
double U = i * 1.0 / (u-1.0);
spline->InsertUKnot(U,i,tol,Standard_True);
}
for (int i=1; i<v-1; i++) {
double V = i * 1.0 / (v-1.0);
spline->InsertVKnot(V,i,tol,Standard_True);
}
for (int j=0; j<u; j++) {
double U = j * maxU / (u-1.0);
double newU = j * 1.0 / (u-1.0);
for (int k=0; k<v; k++) {
double V = k * maxV / (v-1.0);
double newV = k * 1.0 / (v-1.0);
// Get UV point and move new surface UV point
gp_Pnt point = surf->Value(U,V);
int ufirst, ulast, vfirst, vlast;
spline->MovePoint(newU, newV, point, j+1, j+1, k+1, k+1, ufirst, ulast, vfirst, vlast);
}
}
return new BSplineSurfacePy(geom);
}
catch (Standard_Failure) {
Handle_Standard_Failure e = Standard_Failure::Caught();
PyErr_SetString(PyExc_Exception, e->GetMessageString());
return 0;
}
}
示例8: getVKnotSequence
Py::List BSplineSurfacePy::getVKnotSequence(void) const
{
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
Standard_Integer m = 0;
for (int i=1; i<= surf->NbVKnots(); i++)
m += surf->VMultiplicity(i);
TColStd_Array1OfReal k(1,m);
surf->VKnotSequence(k);
Py::List list;
for (Standard_Integer i=k.Lower(); i<=k.Upper(); i++) {
list.append(Py::Float(k(i)));
}
return list;
}
示例9: bounds
PyObject* BSplineSurfacePy::bounds(PyObject *args)
{
if (!PyArg_ParseTuple(args, ""))
return 0;
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
Py::Tuple bound(4);
Standard_Real u1,u2,v1,v2;
surf->Bounds(u1,u2,v1,v2);
bound.setItem(0,Py::Float(u1));
bound.setItem(1,Py::Float(u2));
bound.setItem(2,Py::Float(v1));
bound.setItem(3,Py::Float(v2));
return Py::new_reference_to(bound);
}
示例10: setUPeriodic
PyObject* BSplineSurfacePy::setUPeriodic(PyObject *args)
{
if (!PyArg_ParseTuple(args, ""))
return 0;
try {
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
surf->SetUPeriodic();
Py_Return;
}
catch (Standard_Failure) {
Handle_Standard_Failure e = Standard_Failure::Caught();
PyErr_SetString(PyExc_Exception, e->GetMessageString());
return 0;
}
}
示例11: if
PyObject* PlateSurfacePy::makeApprox(PyObject *args, PyObject* kwds)
{
static char* kwds_Parameter[] = {"Tol3d","MaxSegments","MaxDegree","MaxDistance",
"CritOrder","Continuity","EnlargeCoeff",NULL};
double tol3d=0.01;
int maxSeg=9;
int maxDegree=3;
double dmax = 0.0001;
int critOrder=0;
char* cont = "C1";
double enlargeCoeff = 1.1;
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|diidisd", kwds_Parameter,
&tol3d, &maxSeg, &maxDegree, &dmax, &critOrder, &cont, &enlargeCoeff))
return 0;
GeomAbs_Shape continuity;
std::string uc = cont;
if (uc == "C0")
continuity = GeomAbs_C0;
else if (uc == "C1")
continuity = GeomAbs_C1;
else if (uc == "C2")
continuity = GeomAbs_C2;
else if (uc == "C3")
continuity = GeomAbs_C3;
else if (uc == "CN")
continuity = GeomAbs_CN;
else if (uc == "G1")
continuity = GeomAbs_G1;
else
continuity = GeomAbs_C1;
PY_TRY {
GeomPlate_MakeApprox approx(Handle_GeomPlate_Surface::DownCast(getGeomPlateSurfacePtr()->handle()),
tol3d, maxSeg, maxDegree, dmax, critOrder, continuity, enlargeCoeff);
Handle_Geom_BSplineSurface hSurf = approx.Surface();
if (!hSurf.IsNull()) {
return new Part::BSplineSurfacePy(new Part::GeomBSplineSurface(hSurf));
}
PyErr_SetString(PyExc_RuntimeError, "Approximation of B-Spline surface failed");
return 0;
} PY_CATCH_OCC;
}
示例12: isURational
PyObject* BSplineSurfacePy::isURational(PyObject *args)
{
if (!PyArg_ParseTuple(args, ""))
return 0;
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
Standard_Boolean val = surf->IsURational();
if (val) {
Py_INCREF(Py_True);
return Py_True;
}
else {
Py_INCREF(Py_False);
return Py_False;
}
}
示例13: segment
PyObject* BSplineSurfacePy::segment(PyObject *args)
{
double u1,u2,v1,v2;
if (!PyArg_ParseTuple(args, "dddd", &u1,&u2,&v1,&v2))
return 0;
try {
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
surf->Segment(u1,u2,v1,v2);
Py_Return;
}
catch (Standard_Failure) {
Handle_Standard_Failure e = Standard_Failure::Caught();
PyErr_SetString(PyExc_Exception, e->GetMessageString());
return 0;
}
}
示例14: getVMultiplicity
PyObject* BSplineSurfacePy::getVMultiplicity(PyObject *args)
{
int index;
if (!PyArg_ParseTuple(args, "i", &index))
return 0;
try {
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
int mult = surf->VMultiplicity(index);
return Py_BuildValue("i", mult);
}
catch (Standard_Failure) {
Handle_Standard_Failure e = Standard_Failure::Caught();
PyErr_SetString(PyExc_Exception, e->GetMessageString());
return 0;
}
}
示例15: setVKnot
PyObject* BSplineSurfacePy::setVKnot(PyObject *args)
{
int Index, M=-1;
double K;
if (!PyArg_ParseTuple(args, "id|i", &Index, &K, &M))
return 0;
Handle_Geom_BSplineSurface surf = Handle_Geom_BSplineSurface::DownCast
(getGeometryPtr()->handle());
if (M == -1) {
surf->SetUKnot(Index, K);
}
else {
surf->SetUKnot(Index, K, M);
}
Py_Return;
}