GeometrySurfacePy.cpp

Go to the documentation of this file.
00001 
00002 // This file is generated by src/Tools/generateTemaplates/templateClassPyExport.py out of the .XML file
00003 // Every change you make here get lost at the next full rebuild!
00004 // This File is normaly build as an include in GeometrySurfacePyImp.cpp! Its not intended to be in a project!
00005 
00006 #include <boost/filesystem/path.hpp>
00007 #include <boost/filesystem/operations.hpp>
00008 #include <boost/filesystem/exception.hpp>
00009 #include <Base/PyObjectBase.h>
00010 #include <Base/Console.h>
00011 #include <Base/Exception.h>
00012 #include <CXX/Objects.hxx>
00013 
00014 #define new DEBUG_CLIENTBLOCK
00015 
00016 using Base::streq;
00017 using namespace Part;
00018 
00020 PyTypeObject GeometrySurfacePy::Type = {
00021     PyObject_HEAD_INIT(&PyType_Type)
00022     0,                                                /*ob_size*/
00023     "Part.GeomSurface",     /*tp_name*/
00024     sizeof(GeometrySurfacePy),                       /*tp_basicsize*/
00025     0,                                                /*tp_itemsize*/
00026     /* methods */
00027     PyDestructor,                                     /*tp_dealloc*/
00028     0,                                                /*tp_print*/
00029     __getattr,                                        /*tp_getattr*/
00030     __setattr,                                        /*tp_setattr*/
00031     0,                                                /*tp_compare*/
00032     __repr,                                           /*tp_repr*/
00033     0,                                                /*tp_as_number*/
00034     0,                                                /*tp_as_sequence*/
00035     0,                                                /*tp_as_mapping*/
00036     0,                                                /*tp_hash*/
00037     0,                                                /*tp_call */
00038     0,                                                /*tp_str  */
00039     0,                                                /*tp_getattro*/
00040     0,                                                /*tp_setattro*/
00041     /* --- Functions to access object as input/output buffer ---------*/
00042     0,                                                /* tp_as_buffer */
00043     /* --- Flags to define presence of optional/expanded features */
00044     Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_CLASS,        /*tp_flags */
00045     "\n"
00046     "                           The abstract class GeometrySurface is the root class of all surface objects.\n"
00047     "                   ",           /*tp_doc */
00048     0,                                                /*tp_traverse */
00049     0,                                                /*tp_clear */
00050     0,                                                /*tp_richcompare */
00051     0,                                                /*tp_weaklistoffset */
00052     0,                                                /*tp_iter */
00053     0,                                                /*tp_iternext */
00054     Part::GeometrySurfacePy::Methods,                     /*tp_methods */
00055     0,                                                /*tp_members */
00056     Part::GeometrySurfacePy::GetterSetter,                     /*tp_getset */
00057     &Part::GeometryPy::Type,                        /*tp_base */
00058     0,                                                /*tp_dict */
00059     0,                                                /*tp_descr_get */
00060     0,                                                /*tp_descr_set */
00061     0,                                                /*tp_dictoffset */
00062     __PyInit,                                         /*tp_init */
00063     0,                                                /*tp_alloc */
00064     Part::GeometrySurfacePy::PyMake,/*tp_new */
00065     0,                                                /*tp_free   Low-level free-memory routine */
00066     0,                                                /*tp_is_gc  For PyObject_IS_GC */
00067     0,                                                /*tp_bases */
00068     0,                                                /*tp_mro    method resolution order */
00069     0,                                                /*tp_cache */
00070     0,                                                /*tp_subclasses */
00071     0,                                                /*tp_weaklist */
00072     0                                                 /*tp_del */
00073 };
00074 
00076 PyMethodDef GeometrySurfacePy::Methods[] = {
00077     {"toShape",
00078         (PyCFunction) staticCallback_toShape,
00079         METH_VARARGS,
00080         "Return the shape for the geometry."
00081     },
00082     {"value",
00083         (PyCFunction) staticCallback_value,
00084         METH_VARARGS,
00085         "Computes the point of parameter (u,v) on this surface"
00086     },
00087     {"tangent",
00088         (PyCFunction) staticCallback_tangent,
00089         METH_VARARGS,
00090         "Computes the tangent of parameter (u,v) on this geometry"
00091     },
00092     {"bounds",
00093         (PyCFunction) staticCallback_bounds,
00094         METH_VARARGS,
00095         "\n                                     Returns the parametric bounds (U1, U2, V1, V2) of this trimmed surface.\n                               "
00096     },
00097     {"isUPeriodic",
00098         (PyCFunction) staticCallback_isUPeriodic,
00099         METH_VARARGS,
00100         "Returns true if this patch is periodic in the given parametric direction."
00101     },
00102     {"isVPeriodic",
00103         (PyCFunction) staticCallback_isVPeriodic,
00104         METH_VARARGS,
00105         "Returns true if this patch is periodic in the given parametric direction."
00106     },
00107     {"isUClosed",
00108         (PyCFunction) staticCallback_isUClosed,
00109         METH_VARARGS,
00110         "\n                                     Checks if this surface is closed in the u parametric direction.\n                               "
00111     },
00112     {"isVClosed",
00113         (PyCFunction) staticCallback_isVClosed,
00114         METH_VARARGS,
00115         "\n                                     Checks if this surface is closed in the v parametric direction.\n                               "
00116     },
00117     {"UPeriod",
00118         (PyCFunction) staticCallback_UPeriod,
00119         METH_VARARGS,
00120         "\n                                     Returns the period of this patch in the u parametric direction.\n                               "
00121     },
00122     {"VPeriod",
00123         (PyCFunction) staticCallback_VPeriod,
00124         METH_VARARGS,
00125         "\n                                     Returns the period of this patch in the v parametric direction.\n                               "
00126     },
00127     {"parameter",
00128         (PyCFunction) staticCallback_parameter,
00129         METH_VARARGS,
00130         "Returns the parameter on the curve\nof the nearest orthogonal projection of the point."
00131     },
00132     {"toBSpline",
00133         (PyCFunction) staticCallback_toBSpline,
00134         METH_VARARGS,
00135         "\n                                     Returns a B-Spline representation of this surface. \nThe required arguments are:\n* tolerance\n* continuity in u (as string e.g. C0, G0, G1, C1, G2, C3, CN)\n* continuity in v (as string e.g. C0, G0, G1, C1, G2, C3, CN)\n* maximum degree in u\n* maximum degree in v\n* maximum number of segments\n* precision code (optional, default=0)\n                               "
00136     },
00137     {NULL, NULL, 0, NULL}               /* Sentinel */
00138 };
00139 
00140 
00141 
00143 PyGetSetDef GeometrySurfacePy::GetterSetter[] = {
00144     {NULL, NULL, NULL, NULL, NULL}              /* Sentinel */
00145 };
00146 
00147 // toShape() callback and implementer
00148 // PyObject*  GeometrySurfacePy::toShape(PyObject *args){};
00149 // has to be implemented in GeometrySurfacePyImp.cpp
00150 PyObject * GeometrySurfacePy::staticCallback_toShape (PyObject *self, PyObject *args)
00151 {
00152     // test if twin object not allready deleted
00153     if (!((PyObjectBase*) self)->isValid()){
00154         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00155         return NULL;
00156     }
00157 
00158 
00159     try { // catches all exceptions coming up from c++ and generate a python exception
00160         PyObject* ret = ((GeometrySurfacePy*)self)->toShape(args);
00161         return ret;
00162     }
00163     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00164     {
00165         std::string str;
00166         str += "FreeCAD exception thrown (";
00167         str += e.what();
00168         str += ")";
00169         e.ReportException();
00170         PyErr_SetString(PyExc_Exception,str.c_str());
00171         return NULL;
00172     }
00173     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00174     {
00175         std::string str;
00176         str += "File system exception thrown (";
00177         //str += e.who();
00178         //str += ", ";
00179         str += e.what();
00180         str += ")\n";
00181         Base::Console().Error(str.c_str());
00182         PyErr_SetString(PyExc_Exception,str.c_str());
00183         return NULL;
00184     }
00185     catch(const Py::Exception&)
00186     {
00187         // The exception text is already set
00188         return NULL;
00189     }
00190     catch(const char* e) // catch simple string exceptions
00191     {
00192         Base::Console().Error(e);
00193         PyErr_SetString(PyExc_Exception,e);
00194         return NULL;
00195     }
00196     // in debug not all exceptions will be catched to get the attention of the developer!
00197 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00198     catch(const std::exception& e) // catch other c++ exceptions
00199     {
00200         std::string str;
00201         str += "FC++ exception thrown (";
00202         str += e.what();
00203         str += ")";
00204         Base::Console().Error(str.c_str());
00205         PyErr_SetString(PyExc_Exception,str.c_str());
00206         return NULL;
00207     }
00208     catch(...)  // catch the rest!
00209     {
00210         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00211         return NULL;
00212     }
00213 #endif
00214 }
00215 
00216 // value() callback and implementer
00217 // PyObject*  GeometrySurfacePy::value(PyObject *args){};
00218 // has to be implemented in GeometrySurfacePyImp.cpp
00219 PyObject * GeometrySurfacePy::staticCallback_value (PyObject *self, PyObject *args)
00220 {
00221     // test if twin object not allready deleted
00222     if (!((PyObjectBase*) self)->isValid()){
00223         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00224         return NULL;
00225     }
00226 
00227     // test if object is set Const
00228     if (((PyObjectBase*) self)->isConst()){
00229         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00230         return NULL;
00231     }
00232 
00233     try { // catches all exceptions coming up from c++ and generate a python exception
00234         PyObject* ret = ((GeometrySurfacePy*)self)->value(args);
00235         if (ret != 0)
00236             ((GeometrySurfacePy*)self)->startNotify();
00237         return ret;
00238     }
00239     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00240     {
00241         std::string str;
00242         str += "FreeCAD exception thrown (";
00243         str += e.what();
00244         str += ")";
00245         e.ReportException();
00246         PyErr_SetString(PyExc_Exception,str.c_str());
00247         return NULL;
00248     }
00249     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00250     {
00251         std::string str;
00252         str += "File system exception thrown (";
00253         //str += e.who();
00254         //str += ", ";
00255         str += e.what();
00256         str += ")\n";
00257         Base::Console().Error(str.c_str());
00258         PyErr_SetString(PyExc_Exception,str.c_str());
00259         return NULL;
00260     }
00261     catch(const Py::Exception&)
00262     {
00263         // The exception text is already set
00264         return NULL;
00265     }
00266     catch(const char* e) // catch simple string exceptions
00267     {
00268         Base::Console().Error(e);
00269         PyErr_SetString(PyExc_Exception,e);
00270         return NULL;
00271     }
00272     // in debug not all exceptions will be catched to get the attention of the developer!
00273 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00274     catch(const std::exception& e) // catch other c++ exceptions
00275     {
00276         std::string str;
00277         str += "FC++ exception thrown (";
00278         str += e.what();
00279         str += ")";
00280         Base::Console().Error(str.c_str());
00281         PyErr_SetString(PyExc_Exception,str.c_str());
00282         return NULL;
00283     }
00284     catch(...)  // catch the rest!
00285     {
00286         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00287         return NULL;
00288     }
00289 #endif
00290 }
00291 
00292 // tangent() callback and implementer
00293 // PyObject*  GeometrySurfacePy::tangent(PyObject *args){};
00294 // has to be implemented in GeometrySurfacePyImp.cpp
00295 PyObject * GeometrySurfacePy::staticCallback_tangent (PyObject *self, PyObject *args)
00296 {
00297     // test if twin object not allready deleted
00298     if (!((PyObjectBase*) self)->isValid()){
00299         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00300         return NULL;
00301     }
00302 
00303     // test if object is set Const
00304     if (((PyObjectBase*) self)->isConst()){
00305         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00306         return NULL;
00307     }
00308 
00309     try { // catches all exceptions coming up from c++ and generate a python exception
00310         PyObject* ret = ((GeometrySurfacePy*)self)->tangent(args);
00311         if (ret != 0)
00312             ((GeometrySurfacePy*)self)->startNotify();
00313         return ret;
00314     }
00315     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00316     {
00317         std::string str;
00318         str += "FreeCAD exception thrown (";
00319         str += e.what();
00320         str += ")";
00321         e.ReportException();
00322         PyErr_SetString(PyExc_Exception,str.c_str());
00323         return NULL;
00324     }
00325     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00326     {
00327         std::string str;
00328         str += "File system exception thrown (";
00329         //str += e.who();
00330         //str += ", ";
00331         str += e.what();
00332         str += ")\n";
00333         Base::Console().Error(str.c_str());
00334         PyErr_SetString(PyExc_Exception,str.c_str());
00335         return NULL;
00336     }
00337     catch(const Py::Exception&)
00338     {
00339         // The exception text is already set
00340         return NULL;
00341     }
00342     catch(const char* e) // catch simple string exceptions
00343     {
00344         Base::Console().Error(e);
00345         PyErr_SetString(PyExc_Exception,e);
00346         return NULL;
00347     }
00348     // in debug not all exceptions will be catched to get the attention of the developer!
00349 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00350     catch(const std::exception& e) // catch other c++ exceptions
00351     {
00352         std::string str;
00353         str += "FC++ exception thrown (";
00354         str += e.what();
00355         str += ")";
00356         Base::Console().Error(str.c_str());
00357         PyErr_SetString(PyExc_Exception,str.c_str());
00358         return NULL;
00359     }
00360     catch(...)  // catch the rest!
00361     {
00362         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00363         return NULL;
00364     }
00365 #endif
00366 }
00367 
00368 // bounds() callback and implementer
00369 // PyObject*  GeometrySurfacePy::bounds(PyObject *args){};
00370 // has to be implemented in GeometrySurfacePyImp.cpp
00371 PyObject * GeometrySurfacePy::staticCallback_bounds (PyObject *self, PyObject *args)
00372 {
00373     // test if twin object not allready deleted
00374     if (!((PyObjectBase*) self)->isValid()){
00375         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00376         return NULL;
00377     }
00378 
00379     // test if object is set Const
00380     if (((PyObjectBase*) self)->isConst()){
00381         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00382         return NULL;
00383     }
00384 
00385     try { // catches all exceptions coming up from c++ and generate a python exception
00386         PyObject* ret = ((GeometrySurfacePy*)self)->bounds(args);
00387         if (ret != 0)
00388             ((GeometrySurfacePy*)self)->startNotify();
00389         return ret;
00390     }
00391     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00392     {
00393         std::string str;
00394         str += "FreeCAD exception thrown (";
00395         str += e.what();
00396         str += ")";
00397         e.ReportException();
00398         PyErr_SetString(PyExc_Exception,str.c_str());
00399         return NULL;
00400     }
00401     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00402     {
00403         std::string str;
00404         str += "File system exception thrown (";
00405         //str += e.who();
00406         //str += ", ";
00407         str += e.what();
00408         str += ")\n";
00409         Base::Console().Error(str.c_str());
00410         PyErr_SetString(PyExc_Exception,str.c_str());
00411         return NULL;
00412     }
00413     catch(const Py::Exception&)
00414     {
00415         // The exception text is already set
00416         return NULL;
00417     }
00418     catch(const char* e) // catch simple string exceptions
00419     {
00420         Base::Console().Error(e);
00421         PyErr_SetString(PyExc_Exception,e);
00422         return NULL;
00423     }
00424     // in debug not all exceptions will be catched to get the attention of the developer!
00425 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00426     catch(const std::exception& e) // catch other c++ exceptions
00427     {
00428         std::string str;
00429         str += "FC++ exception thrown (";
00430         str += e.what();
00431         str += ")";
00432         Base::Console().Error(str.c_str());
00433         PyErr_SetString(PyExc_Exception,str.c_str());
00434         return NULL;
00435     }
00436     catch(...)  // catch the rest!
00437     {
00438         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00439         return NULL;
00440     }
00441 #endif
00442 }
00443 
00444 // isUPeriodic() callback and implementer
00445 // PyObject*  GeometrySurfacePy::isUPeriodic(PyObject *args){};
00446 // has to be implemented in GeometrySurfacePyImp.cpp
00447 PyObject * GeometrySurfacePy::staticCallback_isUPeriodic (PyObject *self, PyObject *args)
00448 {
00449     // test if twin object not allready deleted
00450     if (!((PyObjectBase*) self)->isValid()){
00451         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00452         return NULL;
00453     }
00454 
00455     // test if object is set Const
00456     if (((PyObjectBase*) self)->isConst()){
00457         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00458         return NULL;
00459     }
00460 
00461     try { // catches all exceptions coming up from c++ and generate a python exception
00462         PyObject* ret = ((GeometrySurfacePy*)self)->isUPeriodic(args);
00463         if (ret != 0)
00464             ((GeometrySurfacePy*)self)->startNotify();
00465         return ret;
00466     }
00467     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00468     {
00469         std::string str;
00470         str += "FreeCAD exception thrown (";
00471         str += e.what();
00472         str += ")";
00473         e.ReportException();
00474         PyErr_SetString(PyExc_Exception,str.c_str());
00475         return NULL;
00476     }
00477     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00478     {
00479         std::string str;
00480         str += "File system exception thrown (";
00481         //str += e.who();
00482         //str += ", ";
00483         str += e.what();
00484         str += ")\n";
00485         Base::Console().Error(str.c_str());
00486         PyErr_SetString(PyExc_Exception,str.c_str());
00487         return NULL;
00488     }
00489     catch(const Py::Exception&)
00490     {
00491         // The exception text is already set
00492         return NULL;
00493     }
00494     catch(const char* e) // catch simple string exceptions
00495     {
00496         Base::Console().Error(e);
00497         PyErr_SetString(PyExc_Exception,e);
00498         return NULL;
00499     }
00500     // in debug not all exceptions will be catched to get the attention of the developer!
00501 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00502     catch(const std::exception& e) // catch other c++ exceptions
00503     {
00504         std::string str;
00505         str += "FC++ exception thrown (";
00506         str += e.what();
00507         str += ")";
00508         Base::Console().Error(str.c_str());
00509         PyErr_SetString(PyExc_Exception,str.c_str());
00510         return NULL;
00511     }
00512     catch(...)  // catch the rest!
00513     {
00514         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00515         return NULL;
00516     }
00517 #endif
00518 }
00519 
00520 // isVPeriodic() callback and implementer
00521 // PyObject*  GeometrySurfacePy::isVPeriodic(PyObject *args){};
00522 // has to be implemented in GeometrySurfacePyImp.cpp
00523 PyObject * GeometrySurfacePy::staticCallback_isVPeriodic (PyObject *self, PyObject *args)
00524 {
00525     // test if twin object not allready deleted
00526     if (!((PyObjectBase*) self)->isValid()){
00527         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00528         return NULL;
00529     }
00530 
00531     // test if object is set Const
00532     if (((PyObjectBase*) self)->isConst()){
00533         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00534         return NULL;
00535     }
00536 
00537     try { // catches all exceptions coming up from c++ and generate a python exception
00538         PyObject* ret = ((GeometrySurfacePy*)self)->isVPeriodic(args);
00539         if (ret != 0)
00540             ((GeometrySurfacePy*)self)->startNotify();
00541         return ret;
00542     }
00543     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00544     {
00545         std::string str;
00546         str += "FreeCAD exception thrown (";
00547         str += e.what();
00548         str += ")";
00549         e.ReportException();
00550         PyErr_SetString(PyExc_Exception,str.c_str());
00551         return NULL;
00552     }
00553     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00554     {
00555         std::string str;
00556         str += "File system exception thrown (";
00557         //str += e.who();
00558         //str += ", ";
00559         str += e.what();
00560         str += ")\n";
00561         Base::Console().Error(str.c_str());
00562         PyErr_SetString(PyExc_Exception,str.c_str());
00563         return NULL;
00564     }
00565     catch(const Py::Exception&)
00566     {
00567         // The exception text is already set
00568         return NULL;
00569     }
00570     catch(const char* e) // catch simple string exceptions
00571     {
00572         Base::Console().Error(e);
00573         PyErr_SetString(PyExc_Exception,e);
00574         return NULL;
00575     }
00576     // in debug not all exceptions will be catched to get the attention of the developer!
00577 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00578     catch(const std::exception& e) // catch other c++ exceptions
00579     {
00580         std::string str;
00581         str += "FC++ exception thrown (";
00582         str += e.what();
00583         str += ")";
00584         Base::Console().Error(str.c_str());
00585         PyErr_SetString(PyExc_Exception,str.c_str());
00586         return NULL;
00587     }
00588     catch(...)  // catch the rest!
00589     {
00590         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00591         return NULL;
00592     }
00593 #endif
00594 }
00595 
00596 // isUClosed() callback and implementer
00597 // PyObject*  GeometrySurfacePy::isUClosed(PyObject *args){};
00598 // has to be implemented in GeometrySurfacePyImp.cpp
00599 PyObject * GeometrySurfacePy::staticCallback_isUClosed (PyObject *self, PyObject *args)
00600 {
00601     // test if twin object not allready deleted
00602     if (!((PyObjectBase*) self)->isValid()){
00603         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00604         return NULL;
00605     }
00606 
00607     // test if object is set Const
00608     if (((PyObjectBase*) self)->isConst()){
00609         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00610         return NULL;
00611     }
00612 
00613     try { // catches all exceptions coming up from c++ and generate a python exception
00614         PyObject* ret = ((GeometrySurfacePy*)self)->isUClosed(args);
00615         if (ret != 0)
00616             ((GeometrySurfacePy*)self)->startNotify();
00617         return ret;
00618     }
00619     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00620     {
00621         std::string str;
00622         str += "FreeCAD exception thrown (";
00623         str += e.what();
00624         str += ")";
00625         e.ReportException();
00626         PyErr_SetString(PyExc_Exception,str.c_str());
00627         return NULL;
00628     }
00629     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00630     {
00631         std::string str;
00632         str += "File system exception thrown (";
00633         //str += e.who();
00634         //str += ", ";
00635         str += e.what();
00636         str += ")\n";
00637         Base::Console().Error(str.c_str());
00638         PyErr_SetString(PyExc_Exception,str.c_str());
00639         return NULL;
00640     }
00641     catch(const Py::Exception&)
00642     {
00643         // The exception text is already set
00644         return NULL;
00645     }
00646     catch(const char* e) // catch simple string exceptions
00647     {
00648         Base::Console().Error(e);
00649         PyErr_SetString(PyExc_Exception,e);
00650         return NULL;
00651     }
00652     // in debug not all exceptions will be catched to get the attention of the developer!
00653 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00654     catch(const std::exception& e) // catch other c++ exceptions
00655     {
00656         std::string str;
00657         str += "FC++ exception thrown (";
00658         str += e.what();
00659         str += ")";
00660         Base::Console().Error(str.c_str());
00661         PyErr_SetString(PyExc_Exception,str.c_str());
00662         return NULL;
00663     }
00664     catch(...)  // catch the rest!
00665     {
00666         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00667         return NULL;
00668     }
00669 #endif
00670 }
00671 
00672 // isVClosed() callback and implementer
00673 // PyObject*  GeometrySurfacePy::isVClosed(PyObject *args){};
00674 // has to be implemented in GeometrySurfacePyImp.cpp
00675 PyObject * GeometrySurfacePy::staticCallback_isVClosed (PyObject *self, PyObject *args)
00676 {
00677     // test if twin object not allready deleted
00678     if (!((PyObjectBase*) self)->isValid()){
00679         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00680         return NULL;
00681     }
00682 
00683     // test if object is set Const
00684     if (((PyObjectBase*) self)->isConst()){
00685         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00686         return NULL;
00687     }
00688 
00689     try { // catches all exceptions coming up from c++ and generate a python exception
00690         PyObject* ret = ((GeometrySurfacePy*)self)->isVClosed(args);
00691         if (ret != 0)
00692             ((GeometrySurfacePy*)self)->startNotify();
00693         return ret;
00694     }
00695     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00696     {
00697         std::string str;
00698         str += "FreeCAD exception thrown (";
00699         str += e.what();
00700         str += ")";
00701         e.ReportException();
00702         PyErr_SetString(PyExc_Exception,str.c_str());
00703         return NULL;
00704     }
00705     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00706     {
00707         std::string str;
00708         str += "File system exception thrown (";
00709         //str += e.who();
00710         //str += ", ";
00711         str += e.what();
00712         str += ")\n";
00713         Base::Console().Error(str.c_str());
00714         PyErr_SetString(PyExc_Exception,str.c_str());
00715         return NULL;
00716     }
00717     catch(const Py::Exception&)
00718     {
00719         // The exception text is already set
00720         return NULL;
00721     }
00722     catch(const char* e) // catch simple string exceptions
00723     {
00724         Base::Console().Error(e);
00725         PyErr_SetString(PyExc_Exception,e);
00726         return NULL;
00727     }
00728     // in debug not all exceptions will be catched to get the attention of the developer!
00729 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00730     catch(const std::exception& e) // catch other c++ exceptions
00731     {
00732         std::string str;
00733         str += "FC++ exception thrown (";
00734         str += e.what();
00735         str += ")";
00736         Base::Console().Error(str.c_str());
00737         PyErr_SetString(PyExc_Exception,str.c_str());
00738         return NULL;
00739     }
00740     catch(...)  // catch the rest!
00741     {
00742         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00743         return NULL;
00744     }
00745 #endif
00746 }
00747 
00748 // UPeriod() callback and implementer
00749 // PyObject*  GeometrySurfacePy::UPeriod(PyObject *args){};
00750 // has to be implemented in GeometrySurfacePyImp.cpp
00751 PyObject * GeometrySurfacePy::staticCallback_UPeriod (PyObject *self, PyObject *args)
00752 {
00753     // test if twin object not allready deleted
00754     if (!((PyObjectBase*) self)->isValid()){
00755         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00756         return NULL;
00757     }
00758 
00759     // test if object is set Const
00760     if (((PyObjectBase*) self)->isConst()){
00761         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00762         return NULL;
00763     }
00764 
00765     try { // catches all exceptions coming up from c++ and generate a python exception
00766         PyObject* ret = ((GeometrySurfacePy*)self)->UPeriod(args);
00767         if (ret != 0)
00768             ((GeometrySurfacePy*)self)->startNotify();
00769         return ret;
00770     }
00771     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00772     {
00773         std::string str;
00774         str += "FreeCAD exception thrown (";
00775         str += e.what();
00776         str += ")";
00777         e.ReportException();
00778         PyErr_SetString(PyExc_Exception,str.c_str());
00779         return NULL;
00780     }
00781     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00782     {
00783         std::string str;
00784         str += "File system exception thrown (";
00785         //str += e.who();
00786         //str += ", ";
00787         str += e.what();
00788         str += ")\n";
00789         Base::Console().Error(str.c_str());
00790         PyErr_SetString(PyExc_Exception,str.c_str());
00791         return NULL;
00792     }
00793     catch(const Py::Exception&)
00794     {
00795         // The exception text is already set
00796         return NULL;
00797     }
00798     catch(const char* e) // catch simple string exceptions
00799     {
00800         Base::Console().Error(e);
00801         PyErr_SetString(PyExc_Exception,e);
00802         return NULL;
00803     }
00804     // in debug not all exceptions will be catched to get the attention of the developer!
00805 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00806     catch(const std::exception& e) // catch other c++ exceptions
00807     {
00808         std::string str;
00809         str += "FC++ exception thrown (";
00810         str += e.what();
00811         str += ")";
00812         Base::Console().Error(str.c_str());
00813         PyErr_SetString(PyExc_Exception,str.c_str());
00814         return NULL;
00815     }
00816     catch(...)  // catch the rest!
00817     {
00818         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00819         return NULL;
00820     }
00821 #endif
00822 }
00823 
00824 // VPeriod() callback and implementer
00825 // PyObject*  GeometrySurfacePy::VPeriod(PyObject *args){};
00826 // has to be implemented in GeometrySurfacePyImp.cpp
00827 PyObject * GeometrySurfacePy::staticCallback_VPeriod (PyObject *self, PyObject *args)
00828 {
00829     // test if twin object not allready deleted
00830     if (!((PyObjectBase*) self)->isValid()){
00831         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00832         return NULL;
00833     }
00834 
00835     // test if object is set Const
00836     if (((PyObjectBase*) self)->isConst()){
00837         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00838         return NULL;
00839     }
00840 
00841     try { // catches all exceptions coming up from c++ and generate a python exception
00842         PyObject* ret = ((GeometrySurfacePy*)self)->VPeriod(args);
00843         if (ret != 0)
00844             ((GeometrySurfacePy*)self)->startNotify();
00845         return ret;
00846     }
00847     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00848     {
00849         std::string str;
00850         str += "FreeCAD exception thrown (";
00851         str += e.what();
00852         str += ")";
00853         e.ReportException();
00854         PyErr_SetString(PyExc_Exception,str.c_str());
00855         return NULL;
00856     }
00857     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00858     {
00859         std::string str;
00860         str += "File system exception thrown (";
00861         //str += e.who();
00862         //str += ", ";
00863         str += e.what();
00864         str += ")\n";
00865         Base::Console().Error(str.c_str());
00866         PyErr_SetString(PyExc_Exception,str.c_str());
00867         return NULL;
00868     }
00869     catch(const Py::Exception&)
00870     {
00871         // The exception text is already set
00872         return NULL;
00873     }
00874     catch(const char* e) // catch simple string exceptions
00875     {
00876         Base::Console().Error(e);
00877         PyErr_SetString(PyExc_Exception,e);
00878         return NULL;
00879     }
00880     // in debug not all exceptions will be catched to get the attention of the developer!
00881 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00882     catch(const std::exception& e) // catch other c++ exceptions
00883     {
00884         std::string str;
00885         str += "FC++ exception thrown (";
00886         str += e.what();
00887         str += ")";
00888         Base::Console().Error(str.c_str());
00889         PyErr_SetString(PyExc_Exception,str.c_str());
00890         return NULL;
00891     }
00892     catch(...)  // catch the rest!
00893     {
00894         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00895         return NULL;
00896     }
00897 #endif
00898 }
00899 
00900 // parameter() callback and implementer
00901 // PyObject*  GeometrySurfacePy::parameter(PyObject *args){};
00902 // has to be implemented in GeometrySurfacePyImp.cpp
00903 PyObject * GeometrySurfacePy::staticCallback_parameter (PyObject *self, PyObject *args)
00904 {
00905     // test if twin object not allready deleted
00906     if (!((PyObjectBase*) self)->isValid()){
00907         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00908         return NULL;
00909     }
00910 
00911     // test if object is set Const
00912     if (((PyObjectBase*) self)->isConst()){
00913         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00914         return NULL;
00915     }
00916 
00917     try { // catches all exceptions coming up from c++ and generate a python exception
00918         PyObject* ret = ((GeometrySurfacePy*)self)->parameter(args);
00919         if (ret != 0)
00920             ((GeometrySurfacePy*)self)->startNotify();
00921         return ret;
00922     }
00923     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00924     {
00925         std::string str;
00926         str += "FreeCAD exception thrown (";
00927         str += e.what();
00928         str += ")";
00929         e.ReportException();
00930         PyErr_SetString(PyExc_Exception,str.c_str());
00931         return NULL;
00932     }
00933     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00934     {
00935         std::string str;
00936         str += "File system exception thrown (";
00937         //str += e.who();
00938         //str += ", ";
00939         str += e.what();
00940         str += ")\n";
00941         Base::Console().Error(str.c_str());
00942         PyErr_SetString(PyExc_Exception,str.c_str());
00943         return NULL;
00944     }
00945     catch(const Py::Exception&)
00946     {
00947         // The exception text is already set
00948         return NULL;
00949     }
00950     catch(const char* e) // catch simple string exceptions
00951     {
00952         Base::Console().Error(e);
00953         PyErr_SetString(PyExc_Exception,e);
00954         return NULL;
00955     }
00956     // in debug not all exceptions will be catched to get the attention of the developer!
00957 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00958     catch(const std::exception& e) // catch other c++ exceptions
00959     {
00960         std::string str;
00961         str += "FC++ exception thrown (";
00962         str += e.what();
00963         str += ")";
00964         Base::Console().Error(str.c_str());
00965         PyErr_SetString(PyExc_Exception,str.c_str());
00966         return NULL;
00967     }
00968     catch(...)  // catch the rest!
00969     {
00970         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00971         return NULL;
00972     }
00973 #endif
00974 }
00975 
00976 // toBSpline() callback and implementer
00977 // PyObject*  GeometrySurfacePy::toBSpline(PyObject *args){};
00978 // has to be implemented in GeometrySurfacePyImp.cpp
00979 PyObject * GeometrySurfacePy::staticCallback_toBSpline (PyObject *self, PyObject *args)
00980 {
00981     // test if twin object not allready deleted
00982     if (!((PyObjectBase*) self)->isValid()){
00983         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00984         return NULL;
00985     }
00986 
00987     // test if object is set Const
00988     if (((PyObjectBase*) self)->isConst()){
00989         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00990         return NULL;
00991     }
00992 
00993     try { // catches all exceptions coming up from c++ and generate a python exception
00994         PyObject* ret = ((GeometrySurfacePy*)self)->toBSpline(args);
00995         if (ret != 0)
00996             ((GeometrySurfacePy*)self)->startNotify();
00997         return ret;
00998     }
00999     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01000     {
01001         std::string str;
01002         str += "FreeCAD exception thrown (";
01003         str += e.what();
01004         str += ")";
01005         e.ReportException();
01006         PyErr_SetString(PyExc_Exception,str.c_str());
01007         return NULL;
01008     }
01009     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01010     {
01011         std::string str;
01012         str += "File system exception thrown (";
01013         //str += e.who();
01014         //str += ", ";
01015         str += e.what();
01016         str += ")\n";
01017         Base::Console().Error(str.c_str());
01018         PyErr_SetString(PyExc_Exception,str.c_str());
01019         return NULL;
01020     }
01021     catch(const Py::Exception&)
01022     {
01023         // The exception text is already set
01024         return NULL;
01025     }
01026     catch(const char* e) // catch simple string exceptions
01027     {
01028         Base::Console().Error(e);
01029         PyErr_SetString(PyExc_Exception,e);
01030         return NULL;
01031     }
01032     // in debug not all exceptions will be catched to get the attention of the developer!
01033 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01034     catch(const std::exception& e) // catch other c++ exceptions
01035     {
01036         std::string str;
01037         str += "FC++ exception thrown (";
01038         str += e.what();
01039         str += ")";
01040         Base::Console().Error(str.c_str());
01041         PyErr_SetString(PyExc_Exception,str.c_str());
01042         return NULL;
01043     }
01044     catch(...)  // catch the rest!
01045     {
01046         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01047         return NULL;
01048     }
01049 #endif
01050 }
01051 
01052 
01053 
01054 //--------------------------------------------------------------------------
01055 // Parents structure
01056 //--------------------------------------------------------------------------
01057 PyParentObject GeometrySurfacePy::Parents[] = { PARENTSPartGeometrySurfacePy };
01058 
01059 //--------------------------------------------------------------------------
01060 // Constructor
01061 //--------------------------------------------------------------------------
01062 GeometrySurfacePy::GeometrySurfacePy(GeomSurface *pcObject, PyTypeObject *T)
01063     : GeometryPy(reinterpret_cast<GeometryPy::PointerType>(pcObject), T)
01064 {
01065 }
01066 
01067 
01068 //--------------------------------------------------------------------------
01069 // destructor
01070 //--------------------------------------------------------------------------
01071 GeometrySurfacePy::~GeometrySurfacePy()                                // Everything handled in parent
01072 {
01073 }
01074 
01075 //--------------------------------------------------------------------------
01076 // GeometrySurfacePy representation
01077 //--------------------------------------------------------------------------
01078 PyObject *GeometrySurfacePy::_repr(void)
01079 {
01080     return Py_BuildValue("s", representation().c_str());
01081 }
01082 
01083 //--------------------------------------------------------------------------
01084 // GeometrySurfacePy Attributes
01085 //--------------------------------------------------------------------------
01086 PyObject *GeometrySurfacePy::_getattr(char *attr)                               // __getattr__ function: note only need to handle new state
01087 {
01088     try {
01089         // getter method for special Attributes (e.g. dynamic ones)
01090         PyObject *r = getCustomAttributes(attr);
01091         if(r) return r;
01092     }
01093 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01094     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01095     {
01096         std::string str;
01097         str += "FreeCAD exception thrown (";
01098         str += e.what();
01099         str += ")";
01100         e.ReportException();
01101         PyErr_SetString(PyExc_Exception,str.c_str());
01102         return NULL;
01103     }
01104     catch(const std::exception& e) // catch other c++ exceptions
01105     {
01106         std::string str;
01107         str += "FC++ exception thrown (";
01108         str += e.what();
01109         str += ")";
01110         Base::Console().Error(str.c_str());
01111         PyErr_SetString(PyExc_Exception,str.c_str());
01112         return NULL;
01113     }
01114     catch(const Py::Exception&)
01115     {
01116         // The exception text is already set
01117         return NULL;
01118     }
01119     catch(...)  // catch the rest!
01120     {
01121         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01122         return NULL;
01123     }
01124 #else  // DONT_CATCH_CXX_EXCEPTIONS  
01125     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01126     {
01127         std::string str;
01128         str += "FreeCAD exception thrown (";
01129         str += e.what();
01130         str += ")";
01131         e.ReportException();
01132         PyErr_SetString(PyExc_Exception,str.c_str());
01133         return NULL;
01134     }
01135     catch(const Py::Exception&)
01136     {
01137         // The exception text is already set
01138         return NULL;
01139     }
01140 #endif  // DONT_CATCH_CXX_EXCEPTIONS
01141 
01142     PyObject *rvalue = Py_FindMethod(Methods, this, attr);
01143     if (rvalue == NULL)
01144     {
01145         PyErr_Clear();
01146         return GeometryPy::_getattr(attr);
01147     }
01148     else
01149     {
01150         return rvalue;
01151     }
01152 }
01153 
01154 int GeometrySurfacePy::_setattr(char *attr, PyObject *value)    // __setattr__ function: note only need to handle new state
01155 {
01156     try {
01157         // setter for  special Attributes (e.g. dynamic ones)
01158         int r = setCustomAttributes(attr, value);
01159         if(r==1) return 0;
01160     }
01161 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01162     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01163     {
01164         std::string str;
01165         str += "FreeCAD exception thrown (";
01166         str += e.what();
01167         str += ")";
01168         e.ReportException();
01169         PyErr_SetString(PyExc_Exception,str.c_str());
01170         return -1;
01171     }
01172     catch(const std::exception& e) // catch other c++ exceptions
01173     {
01174         std::string str;
01175         str += "FC++ exception thrown (";
01176         str += e.what();
01177         str += ")";
01178         Base::Console().Error(str.c_str());
01179         PyErr_SetString(PyExc_Exception,str.c_str());
01180         return -1;
01181     }
01182     catch(const Py::Exception&)
01183     {
01184         // The exception text is already set
01185         return -1;
01186     }
01187     catch(...)  // catch the rest!
01188     {
01189         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01190         return -1;
01191     }
01192 #else  // DONT_CATCH_CXX_EXCEPTIONS  
01193     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01194     {
01195         std::string str;
01196         str += "FreeCAD exception thrown (";
01197         str += e.what();
01198         str += ")";
01199         e.ReportException();
01200         PyErr_SetString(PyExc_Exception,str.c_str());
01201         return -1;
01202     }
01203     catch(const Py::Exception&)
01204     {
01205         // The exception text is already set
01206         return -1;
01207     }
01208 #endif  // DONT_CATCH_CXX_EXCEPTIONS
01209 
01210     return GeometryPy::_setattr(attr, value);
01211 }
01212 
01213 GeomSurface *GeometrySurfacePy::getGeomSurfacePtr(void) const
01214 {
01215     return static_cast<GeomSurface *>(_pcTwinPointer);
01216 }
01217 
01218 #if 0
01219 /* From here on come the methods you have to implement, but NOT in this module. Implement in GeometrySurfacePyImp.cpp! This prototypes 
01220  * are just for convenience when you add a new method.
01221  */
01222 
01223 PyObject *GeometrySurfacePy::PyMake(struct _typeobject *, PyObject *, PyObject *)  // Python wrapper
01224 {
01225     // create a new instance of GeometrySurfacePy and the Twin object 
01226     return new GeometrySurfacePy(new GeomSurface);
01227 }
01228 
01229 // constructor method
01230 int GeometrySurfacePy::PyInit(PyObject* /*args*/, PyObject* /*kwd*/)
01231 {
01232     return 0;
01233 }
01234 
01235 // returns a string which represents the object e.g. when printed in python
01236 std::string GeometrySurfacePy::representation(void) const
01237 {
01238     return std::string("<GeomSurface object>");
01239 }
01240 
01241 PyObject* GeometrySurfacePy::toShape(PyObject *args)
01242 {
01243     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01244     return 0;
01245 }
01246 
01247 PyObject* GeometrySurfacePy::value(PyObject *args)
01248 {
01249     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01250     return 0;
01251 }
01252 
01253 PyObject* GeometrySurfacePy::tangent(PyObject *args)
01254 {
01255     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01256     return 0;
01257 }
01258 
01259 PyObject* GeometrySurfacePy::bounds(PyObject *args)
01260 {
01261     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01262     return 0;
01263 }
01264 
01265 PyObject* GeometrySurfacePy::isUPeriodic(PyObject *args)
01266 {
01267     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01268     return 0;
01269 }
01270 
01271 PyObject* GeometrySurfacePy::isVPeriodic(PyObject *args)
01272 {
01273     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01274     return 0;
01275 }
01276 
01277 PyObject* GeometrySurfacePy::isUClosed(PyObject *args)
01278 {
01279     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01280     return 0;
01281 }
01282 
01283 PyObject* GeometrySurfacePy::isVClosed(PyObject *args)
01284 {
01285     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01286     return 0;
01287 }
01288 
01289 PyObject* GeometrySurfacePy::UPeriod(PyObject *args)
01290 {
01291     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01292     return 0;
01293 }
01294 
01295 PyObject* GeometrySurfacePy::VPeriod(PyObject *args)
01296 {
01297     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01298     return 0;
01299 }
01300 
01301 PyObject* GeometrySurfacePy::parameter(PyObject *args)
01302 {
01303     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01304     return 0;
01305 }
01306 
01307 PyObject* GeometrySurfacePy::toBSpline(PyObject *args)
01308 {
01309     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
01310     return 0;
01311 }
01312 
01313 
01314 
01315 PyObject *GeometrySurfacePy::getCustomAttributes(const char* attr) const
01316 {
01317     return 0;
01318 }
01319 
01320 int GeometrySurfacePy::setCustomAttributes(const char* attr, PyObject *obj)
01321 {
01322     return 0; 
01323 }
01324 #endif
01325 
01326 
01327 

Generated on Wed Nov 23 19:00:16 2011 for FreeCAD by  doxygen 1.6.1