BSplineSurfacePy.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 BSplineSurfacePyImp.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 BSplineSurfacePy::Type = {
00021     PyObject_HEAD_INIT(&PyType_Type)
00022     0,                                                /*ob_size*/
00023     "Part.GeomBSplineSurface",     /*tp_name*/
00024     sizeof(BSplineSurfacePy),                       /*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     "Describes a B-Spline surface in 3D space",           /*tp_doc */
00046     0,                                                /*tp_traverse */
00047     0,                                                /*tp_clear */
00048     0,                                                /*tp_richcompare */
00049     0,                                                /*tp_weaklistoffset */
00050     0,                                                /*tp_iter */
00051     0,                                                /*tp_iternext */
00052     Part::BSplineSurfacePy::Methods,                     /*tp_methods */
00053     0,                                                /*tp_members */
00054     Part::BSplineSurfacePy::GetterSetter,                     /*tp_getset */
00055     &Part::GeometrySurfacePy::Type,                        /*tp_base */
00056     0,                                                /*tp_dict */
00057     0,                                                /*tp_descr_get */
00058     0,                                                /*tp_descr_set */
00059     0,                                                /*tp_dictoffset */
00060     __PyInit,                                         /*tp_init */
00061     0,                                                /*tp_alloc */
00062     Part::BSplineSurfacePy::PyMake,/*tp_new */
00063     0,                                                /*tp_free   Low-level free-memory routine */
00064     0,                                                /*tp_is_gc  For PyObject_IS_GC */
00065     0,                                                /*tp_bases */
00066     0,                                                /*tp_mro    method resolution order */
00067     0,                                                /*tp_cache */
00068     0,                                                /*tp_subclasses */
00069     0,                                                /*tp_weaklist */
00070     0                                                 /*tp_del */
00071 };
00072 
00074 PyMethodDef BSplineSurfacePy::Methods[] = {
00075     {"bounds",
00076         (PyCFunction) staticCallback_bounds,
00077         METH_VARARGS,
00078         "\n                                     Returns the parametric bounds (U1, U2, V1, V2) of this B-Spline surface.\n                              "
00079     },
00080     {"isURational",
00081         (PyCFunction) staticCallback_isURational,
00082         METH_VARARGS,
00083         "\n                                     Returns false if the equation of this B-Spline surface is polynomial\n                                  (e.g. non-rational) in the u or v parametric direction.\n                                       In other words, returns false if for each row of poles, the associated\n                                        weights are identical\n                         "
00084     },
00085     {"isVRational",
00086         (PyCFunction) staticCallback_isVRational,
00087         METH_VARARGS,
00088         "\n                                     Returns false if the equation of this B-Spline surface is polynomial\n                                  (e.g. non-rational) in the u or v parametric direction.\n                                       In other words, returns false if for each column of poles, the associated\n                                     weights are identical\n                         "
00089     },
00090     {"isUPeriodic",
00091         (PyCFunction) staticCallback_isUPeriodic,
00092         METH_VARARGS,
00093         "Returns true if this surface is periodic in the u parametric direction."
00094     },
00095     {"isVPeriodic",
00096         (PyCFunction) staticCallback_isVPeriodic,
00097         METH_VARARGS,
00098         "Returns true if this surface is periodic in the v parametric direction."
00099     },
00100     {"isUClosed",
00101         (PyCFunction) staticCallback_isUClosed,
00102         METH_VARARGS,
00103         "\n                                     Checks if this surface is closed in the u parametric direction.\n                                       Returns true if, in the table of poles the first row and the last\n                                     row are identical.\n                            "
00104     },
00105     {"isVClosed",
00106         (PyCFunction) staticCallback_isVClosed,
00107         METH_VARARGS,
00108         "\n                                     Checks if this surface is closed in the v parametric direction.\n                                       Returns true if, in the table of poles the first column and the\n                                       last column are identical.\n                            "
00109     },
00110     {"increaseDegree",
00111         (PyCFunction) staticCallback_increaseDegree,
00112         METH_VARARGS,
00113         "\n                                     increase(Int=UDegree, int=VDegree)\n                                    Increases the degrees of this B-Spline surface to UDegree and VDegree\n                                 in the u and v parametric directions respectively.\n                                    As a result, the tables of poles, weights and multiplicities are modified.\n                                    The tables of knots is not changed.\n\n                                 Note: Nothing is done if the given degree is less than or equal to the\n                                        current degree in the corresponding parametric direction.\n                             "
00114     },
00115     {"increaseUMultiplicity",
00116         (PyCFunction) staticCallback_increaseUMultiplicity,
00117         METH_VARARGS,
00118         "Increases the multiplicity in the u direction."
00119     },
00120     {"increaseVMultiplicity",
00121         (PyCFunction) staticCallback_increaseVMultiplicity,
00122         METH_VARARGS,
00123         "Increases the multiplicity in the v direction."
00124     },
00125     {"incrementUMultiplicity",
00126         (PyCFunction) staticCallback_incrementUMultiplicity,
00127         METH_VARARGS,
00128         "Increment the multiplicity in the u direction"
00129     },
00130     {"incrementVMultiplicity",
00131         (PyCFunction) staticCallback_incrementVMultiplicity,
00132         METH_VARARGS,
00133         "Increment the multiplicity in the v direction"
00134     },
00135     {"insertUKnot",
00136         (PyCFunction) staticCallback_insertUKnot,
00137         METH_VARARGS,
00138         "insertUKnote(float U, int Index, float Tolerance) - Insert or overide a knot"
00139     },
00140     {"insertUKnots",
00141         (PyCFunction) staticCallback_insertUKnots,
00142         METH_VARARGS,
00143         "insertUKnote(List of float U, List of float Mult, float Tolerance) - Inserts knots."
00144     },
00145     {"insertVKnot",
00146         (PyCFunction) staticCallback_insertVKnot,
00147         METH_VARARGS,
00148         "insertUKnote(float V, int Index, float Tolerance) - Insert or overide a knot."
00149     },
00150     {"insertVKnots",
00151         (PyCFunction) staticCallback_insertVKnots,
00152         METH_VARARGS,
00153         "insertUKnote(List of float V, List of float Mult, float Tolerance) - Inserts knots."
00154     },
00155     {"removeUKnot",
00156         (PyCFunction) staticCallback_removeUKnot,
00157         METH_VARARGS,
00158         "\n                             Reduces to M the multiplicity of the knot of index Index in the given\n                         parametric direction. If M is 0, the knot is removed.\n                         With a modification of this type, the table of poles is also modified.\n                                Two different algorithms are used systematically to compute the new\n                           poles of the surface. For each pole, the distance between the pole\n                            calculated using the first algorithm and the same pole calculated using\n                               the second algorithm, is checked. If this distance is less than Tolerance\n                             it ensures that the surface is not modified by more than Tolerance.\n                           Under these conditions, the function returns true; otherwise, it returns\n                              false.\n\n                              A low tolerance prevents modification of the surface. A high tolerance\n                                'smoothes' the surface.\n                               "
00159     },
00160     {"removeVKnot",
00161         (PyCFunction) staticCallback_removeVKnot,
00162         METH_VARARGS,
00163         "\n                             Reduces to M the multiplicity of the knot of index Index in the given\n                         parametric direction. If M is 0, the knot is removed.\n                         With a modification of this type, the table of poles is also modified.\n                                Two different algorithms are used systematically to compute the new\n                           poles of the surface. For each pole, the distance between the pole\n                            calculated using the first algorithm and the same pole calculated using\n                               the second algorithm, is checked. If this distance is less than Tolerance\n                             it ensures that the surface is not modified by more than Tolerance.\n                           Under these conditions, the function returns true; otherwise, it returns\n                              false.\n\n                              A low tolerance prevents modification of the surface. A high tolerance\n                                'smoothes' the surface.\n                               "
00164     },
00165     {"segment",
00166         (PyCFunction) staticCallback_segment,
00167         METH_VARARGS,
00168         "\n                                     Modifies this B-Spline surface by segmenting it between U1 and U2 in the\n                                      u parametric direction and between V1 and V2 in the v parametric direction.\n                                   Any of these values can be outside the bounds of this surface, but U2 must\n                                    be greater than U1 and V2 must be greater than V1.\n\n                                  All the data structure tables of this B-Spline surface are modified but the\n                                   knots located between U1 and U2 in the u parametric direction, and between\n                                    V1 and V2 in the v parametric direction are retained.\n                                 The degree of the surface in each parametric direction is not modified.\n                               "
00169     },
00170     {"setUKnot",
00171         (PyCFunction) staticCallback_setUKnot,
00172         METH_VARARGS,
00173         "\n                                     Modifies this B-Spline surface by assigning the value K to the knot of index\n                                  UIndex of the knots table corresponding to the u parametric direction.\n                                        This modification remains relatively local, since K must lie between the values\n                                       of the knots which frame the modified knot.\n\n                                 You can also increase the multiplicity of the modified knot to M. Note however\n                                        that it is not possible to decrease the multiplicity of a knot with this function.\n                            "
00174     },
00175     {"setVKnot",
00176         (PyCFunction) staticCallback_setVKnot,
00177         METH_VARARGS,
00178         "\n                                     Modifies this B-Spline surface by assigning the value K to the knot of index\n                                  VIndex of the knots table corresponding to the v parametric direction.\n                                        This modification remains relatively local, since K must lie between the values\n                                       of the knots which frame the modified knot.\n\n                                 You can also increase the multiplicity of the modified knot to M. Note however\n                                        that it is not possible to decrease the multiplicity of a knot with this function.\n                            "
00179     },
00180     {"getUKnot",
00181         (PyCFunction) staticCallback_getUKnot,
00182         METH_VARARGS,
00183         "\n                                     Returns, for this B-Spline surface, in the u parametric direction\n                                     the knot of index UIndex of the knots table.\n                          "
00184     },
00185     {"getVKnot",
00186         (PyCFunction) staticCallback_getVKnot,
00187         METH_VARARGS,
00188         "\n                                     Returns, for this B-Spline surface, in the v parametric direction\n                                     the knot of index VIndex of the knots table.\n                          "
00189     },
00190     {"setUKnots",
00191         (PyCFunction) staticCallback_setUKnots,
00192         METH_VARARGS,
00193         "\n                                     Changes all knots of this B-Spline surface in the u parametric\n                                        direction. The multiplicity of the knots is not modified.\n                             "
00194     },
00195     {"setVKnots",
00196         (PyCFunction) staticCallback_setVKnots,
00197         METH_VARARGS,
00198         "\n                                     Changes all knots of this B-Spline surface in the v parametric\n                                        direction. The multiplicity of the knots is not modified.\n                             "
00199     },
00200     {"getUKnots",
00201         (PyCFunction) staticCallback_getUKnots,
00202         METH_VARARGS,
00203         "\n                                     Returns, for this B-Spline surface, the knots table\n                                   in the u parametric direction\n                         "
00204     },
00205     {"getVKnots",
00206         (PyCFunction) staticCallback_getVKnots,
00207         METH_VARARGS,
00208         "\n                                     Returns, for this B-Spline surface, the knots table\n                                   in the v parametric direction\n                         "
00209     },
00210     {"setPole",
00211         (PyCFunction) staticCallback_setPole,
00212         METH_VARARGS,
00213         "\n                                     Modifies this B-Spline surface by assigning P to the pole of\n                                  index (UIndex, VIndex) in the poles table.\n                                    The second syntax allows you also to change the weight of the\n                                 modified pole. The weight is set to Weight. This syntax must\n                                  only be used for rational surfaces.\n                                   Modifies this B-Spline curve by assigning P to the pole of\n                                    index Index in the poles table.\n                               "
00214     },
00215     {"setPoleCol",
00216         (PyCFunction) staticCallback_setPoleCol,
00217         METH_VARARGS,
00218         "\n                                     Modifies this B-Spline surface by assigning values to all or part\n                                     of the column of poles of index VIndex, of this B-Spline surface.\n                                     You can also change the weights of the modified poles. The weights\n                                    are set to the corresponding values of CPoleWeights.\n                                  These syntaxes must only be used for rational surfaces.\n                               "
00219     },
00220     {"setPoleRow",
00221         (PyCFunction) staticCallback_setPoleRow,
00222         METH_VARARGS,
00223         "\n                                     Modifies this B-Spline surface by assigning values to all or part\n                                     of the row of poles of index VIndex, of this B-Spline surface.\n                                        You can also change the weights of the modified poles. The weights\n                                    are set to the corresponding values of CPoleWeights.\n                                  These syntaxes must only be used for rational surfaces.\n                               "
00224     },
00225     {"getPole",
00226         (PyCFunction) staticCallback_getPole,
00227         METH_VARARGS,
00228         "\n                                     Returns the pole of index (UIndex,VIndex) of this B-Spline surface.\n                           "
00229     },
00230     {"getPoles",
00231         (PyCFunction) staticCallback_getPoles,
00232         METH_VARARGS,
00233         "Returns the table of poles of this B-Spline surface."
00234     },
00235     {"setWeight",
00236         (PyCFunction) staticCallback_setWeight,
00237         METH_VARARGS,
00238         "\n                                     Modifies this B-Spline surface by assigning the value Weight to the weight\n                                    of the pole of index (UIndex, VIndex) in the poles tables of this B-Spline\n                                    surface.\n\n                                    This function must only be used for rational surfaces.\n                                "
00239     },
00240     {"setWeightCol",
00241         (PyCFunction) staticCallback_setWeightCol,
00242         METH_VARARGS,
00243         "\n                                     Modifies this B-Spline surface by assigning values to all or part of the\n                                      weights of the column of poles of index VIndex of this B-Spline surface.\n\n                                    The modified part of the column of weights is defined by the bounds\n                                   of the array CPoleWeights.\n\n                                  This function must only be used for rational surfaces.\n                                "
00244     },
00245     {"setWeightRow",
00246         (PyCFunction) staticCallback_setWeightRow,
00247         METH_VARARGS,
00248         "\n                                     Modifies this B-Spline surface by assigning values to all or part of the\n                                      weights of the row of poles of index UIndex of this B-Spline surface.\n\n                                       The modified part of the row of weights is defined by the bounds of the\n                                       array CPoleWeights.\n\n                                 This function must only be used for rational surfaces.\n                                "
00249     },
00250     {"getWeight",
00251         (PyCFunction) staticCallback_getWeight,
00252         METH_VARARGS,
00253         "\n                                     Return the weight of the pole of index (UIndex,VIndex)\n                                        in the poles table for this B-Spline surface.\n                         "
00254     },
00255     {"getWeights",
00256         (PyCFunction) staticCallback_getWeights,
00257         METH_VARARGS,
00258         "Returns the table of weights of the poles for this B-Spline surface."
00259     },
00260     {"getResolution",
00261         (PyCFunction) staticCallback_getResolution,
00262         METH_VARARGS,
00263         "\n                                     Computes two tolerance values for this B-Spline surface, based on the\n                                 given tolerance in 3D space Tolerance3D. The tolerances computed are:\n                                 -- UTolerance in the u parametric direction and\n                                       -- VTolerance in the v parametric direction.\n\n                                        If f(u,v) is the equation of this B-Spline surface, UTolerance and\n                                    VTolerance guarantee that:\n                                    |u1 - u0| < UTolerance\n                                        |v1 - v0| < VTolerance\n                                        ====> ||f(u1, v1) - f(u2, v2)|| < Tolerance3D\n                         "
00264     },
00265     {"movePoint",
00266         (PyCFunction) staticCallback_movePoint,
00267         METH_VARARGS,
00268         "\n                                     Moves the point of parameters (U, V) of this B-Spline surface to P.\n                                   UIndex1, UIndex2, VIndex1 and VIndex2 are the indexes in the poles\n                                    table of this B-Spline surface, of the first and last poles which\n                                     can be moved in each parametric direction.\n                                    The returned indexes UFirstIndex, ULastIndex, VFirstIndex and\n                                 VLastIndex are the indexes of the first and last poles effectively\n                                    modified in each parametric direction.\n                                        In the event of incompatibility between UIndex1, UIndex2, VIndex1,\n                                    VIndex2 and the values U and V:\n                                       -- no change is made to this B-Spline surface, and\n                                    -- UFirstIndex, ULastIndex, VFirstIndex and VLastIndex are set to\n                                        null.\n                              "
00269     },
00270     {"setUNotPeriodic",
00271         (PyCFunction) staticCallback_setUNotPeriodic,
00272         METH_VARARGS,
00273         "\n                                     Changes this B-Spline surface into a non-periodic one in the u parametric direction.\n                                  If this B-Spline surface is already non-periodic in the given parametric direction,\n                                   it is not modified.\n                                   If this B-Spline surface is periodic in the given parametric direction, the boundaries\n                                        of the surface are not given by the first and last rows (or columns) of poles (because\n                                        the multiplicity of the first knot and of the last knot in the given parametric direction\n                                     are not modified, nor are they equal to Degree+1, where Degree is the degree of this\n                                  B-Spline surface in the given parametric direction). Only the function Segment ensures\n                                        this property.\n\n                                      Note: the poles and knots tables are modified.\n                                "
00274     },
00275     {"setVNotPeriodic",
00276         (PyCFunction) staticCallback_setVNotPeriodic,
00277         METH_VARARGS,
00278         "\n                                     Changes this B-Spline surface into a non-periodic one in the v parametric direction.\n                                  If this B-Spline surface is already non-periodic in the given parametric direction,\n                                   it is not modified.\n                                   If this B-Spline surface is periodic in the given parametric direction, the boundaries\n                                        of the surface are not given by the first and last rows (or columns) of poles (because\n                                        the multiplicity of the first knot and of the last knot in the given parametric direction\n                                     are not modified, nor are they equal to Degree+1, where Degree is the degree of this\n                                  B-Spline surface in the given parametric direction). Only the function Segment ensures\n                                        this property.\n\n                                      Note: the poles and knots tables are modified.\n                                "
00279     },
00280     {"setUPeriodic",
00281         (PyCFunction) staticCallback_setUPeriodic,
00282         METH_VARARGS,
00283         "\n                                     Modifies this surface to be periodic in the u parametric direction.\n                                   To become periodic in a given parametric direction a surface must\n                                     be closed in that parametric direction, and the knot sequence relative\n                                        to that direction must be periodic.\n                                   To generate this periodic sequence of knots, the functions FirstUKnotIndex\n                                    and LastUKnotIndex are used to compute I1 and I2. These are the indexes,\n                                      in the knot array associated with the given parametric direction, of the\n                                      knots that correspond to the first and last parameters of this B-Spline\n                                       surface in the given parametric direction. Hence the period is:\n\n                                     Knots(I1) - Knots(I2)\n\n                                       As a result, the knots and poles tables are modified.\n                         "
00284     },
00285     {"setVPeriodic",
00286         (PyCFunction) staticCallback_setVPeriodic,
00287         METH_VARARGS,
00288         "\n                                     Modifies this surface to be periodic in the v parametric direction.\n                                   To become periodic in a given parametric direction a surface must\n                                     be closed in that parametric direction, and the knot sequence relative\n                                        to that direction must be periodic.\n                                   To generate this periodic sequence of knots, the functions FirstUKnotIndex\n                                    and LastUKnotIndex are used to compute I1 and I2. These are the indexes,\n                                      in the knot array associated with the given parametric direction, of the\n                                      knots that correspond to the first and last parameters of this B-Spline\n                                       surface in the given parametric direction. Hence the period is:\n\n                                     Knots(I1) - Knots(I2)\n\n                                       As a result, the knots and poles tables are modified.\n                         "
00289     },
00290     {"setUOrigin",
00291         (PyCFunction) staticCallback_setUOrigin,
00292         METH_VARARGS,
00293         "\n                                     Assigns the knot of index Index in the knots table\n                                    in the u parametric direction to be the origin of\n                                     this periodic B-Spline surface. As a consequence,\n                                     the knots and poles tables are modified.\n                              "
00294     },
00295     {"setVOrigin",
00296         (PyCFunction) staticCallback_setVOrigin,
00297         METH_VARARGS,
00298         "\n                                     Assigns the knot of index Index in the knots table\n                                    in the v parametric direction to be the origin of\n                                     this periodic B-Spline surface. As a consequence,\n                                     the knots and poles tables are modified.\n                              "
00299     },
00300     {"getUMultiplicity",
00301         (PyCFunction) staticCallback_getUMultiplicity,
00302         METH_VARARGS,
00303         "\n                                     Returns, for this B-Spline surface, the multiplicity of\n                                       the knot of index UIndex in the u parametric direction.\n                               "
00304     },
00305     {"getVMultiplicity",
00306         (PyCFunction) staticCallback_getVMultiplicity,
00307         METH_VARARGS,
00308         "\n                                     Returns, for this B-Spline surface, the multiplicity of\n                                       the knot of index VIndex in the v parametric direction.\n                               "
00309     },
00310     {"getUMultiplicities",
00311         (PyCFunction) staticCallback_getUMultiplicities,
00312         METH_VARARGS,
00313         "\n                                     Returns, for this B-Spline surface, the table of\n                                      multiplicities in the u parametric direction\n                          "
00314     },
00315     {"getVMultiplicities",
00316         (PyCFunction) staticCallback_getVMultiplicities,
00317         METH_VARARGS,
00318         "\n                                     Returns, for this B-Spline surface, the table of\n                                      multiplicities in the v parametric direction\n                          "
00319     },
00320     {"exchangeUV",
00321         (PyCFunction) staticCallback_exchangeUV,
00322         METH_VARARGS,
00323         "\n                                     Exchanges the u and v parametric directions on this B-Spline surface.\n                                 As a consequence:\n                                     -- the poles and weights tables are transposed,\n                                       -- the knots and multiplicities tables are exchanged,\n                                 -- degrees of continuity and rational, periodic and uniform\n                                      characteristics are exchanged and\n                                  -- the orientation of the surface is reversed.\n                                "
00324     },
00325     {"uIso",
00326         (PyCFunction) staticCallback_uIso,
00327         METH_VARARGS,
00328         "Builds the U isoparametric B-Spline curve of this B-Spline surface"
00329     },
00330     {"vIso",
00331         (PyCFunction) staticCallback_vIso,
00332         METH_VARARGS,
00333         "Builds the V isoparametric B-Spline curve of this B-Spline surface"
00334     },
00335     {"reparametrize",
00336         (PyCFunction) staticCallback_reparametrize,
00337         METH_VARARGS,
00338         "Returns a reparametrized copy of this surface"
00339     },
00340     {NULL, NULL, 0, NULL}               /* Sentinel */
00341 };
00342 
00343 
00344 
00346 PyGetSetDef BSplineSurfacePy::GetterSetter[] = {
00347     {"UDegree",
00348         (getter) staticCallback_getUDegree,
00349         (setter) staticCallback_setUDegree, 
00350         "\n                                     Returns the degree of this B-Spline surface in the u parametric direction.\n                            ",
00351         NULL
00352     },
00353     {"VDegree",
00354         (getter) staticCallback_getVDegree,
00355         (setter) staticCallback_setVDegree, 
00356         "\n                                     Returns the degree of this B-Spline surface in the v parametric direction.\n                            ",
00357         NULL
00358     },
00359     {"MaxDegree",
00360         (getter) staticCallback_getMaxDegree,
00361         (setter) staticCallback_setMaxDegree, 
00362         "\n                                     Returns the value of the maximum polynomial degree of any\n                                     B-Spline surface surface in either parametric directions.\n                                     This value is 25.\n                             ",
00363         NULL
00364     },
00365     {"NbUPoles",
00366         (getter) staticCallback_getNbUPoles,
00367         (setter) staticCallback_setNbUPoles, 
00368         "\n                                     Returns the number of poles of this B-Spline surface in the u parametric direction.\n                           ",
00369         NULL
00370     },
00371     {"NbVPoles",
00372         (getter) staticCallback_getNbVPoles,
00373         (setter) staticCallback_setNbVPoles, 
00374         "\n                                     Returns the number of poles of this B-Spline surface in the v parametric direction.\n                           ",
00375         NULL
00376     },
00377     {"NbUKnots",
00378         (getter) staticCallback_getNbUKnots,
00379         (setter) staticCallback_setNbUKnots, 
00380         "\n                                     Returns the number of knots of this B-Spline surface in the u parametric direction.\n                           ",
00381         NULL
00382     },
00383     {"NbVKnots",
00384         (getter) staticCallback_getNbVKnots,
00385         (setter) staticCallback_setNbVKnots, 
00386         "\n                                     Returns the number of knots of this B-Spline surface in the v parametric direction.\n                           ",
00387         NULL
00388     },
00389     {"FirstUKnotIndex",
00390         (getter) staticCallback_getFirstUKnotIndex,
00391         (setter) staticCallback_setFirstUKnotIndex, 
00392         "\n                                     Returns the index in the knot array associated with the u parametric direction,\n                                       which corresponds to the first parameter of this B-Spline surface in the specified\n                                    parametric direction.\n\n                                       The isoparametric curves corresponding to these values are the boundary curves of\n                                     this surface.\n\n                                       Note: The index does not correspond to the first knot of the surface in the specified\n                                 parametric direction unless the multiplicity of the first knot is equal to Degree + 1,\n                                        where Degree is the degree of this surface in the corresponding parametric direction.\n                         ",
00393         NULL
00394     },
00395     {"LastUKnotIndex",
00396         (getter) staticCallback_getLastUKnotIndex,
00397         (setter) staticCallback_setLastUKnotIndex, 
00398         "\n                                     Returns the index in the knot array associated with the u parametric direction,\n                                       which corresponds to the last parameter of this B-Spline surface in the specified\n                                     parametric direction.\n\n                                       The isoparametric curves corresponding to these values are the boundary curves of\n                                     this surface.\n\n                                       Note: The index does not correspond to the first knot of the surface in the specified\n                                 parametric direction unless the multiplicity of the last knot is equal to Degree + 1,\n                                 where Degree is the degree of this surface in the corresponding parametric direction.\n                         ",
00399         NULL
00400     },
00401     {"FirstVKnotIndex",
00402         (getter) staticCallback_getFirstVKnotIndex,
00403         (setter) staticCallback_setFirstVKnotIndex, 
00404         "\n                                     Returns the index in the knot array associated with the v parametric direction,\n                                       which corresponds to the first parameter of this B-Spline surface in the specified\n                                    parametric direction.\n\n                                       The isoparametric curves corresponding to these values are the boundary curves of\n                                     this surface.\n\n                                       Note: The index does not correspond to the first knot of the surface in the specified\n                                 parametric direction unless the multiplicity of the first knot is equal to Degree + 1,\n                                        where Degree is the degree of this surface in the corresponding parametric direction.\n                         ",
00405         NULL
00406     },
00407     {"LastVKnotIndex",
00408         (getter) staticCallback_getLastVKnotIndex,
00409         (setter) staticCallback_setLastVKnotIndex, 
00410         "\n                                     Returns the index in the knot array associated with the v parametric direction,\n                                       which corresponds to the last parameter of this B-Spline surface in the specified\n                                     parametric direction.\n\n                                       The isoparametric curves corresponding to these values are the boundary curves of\n                                     this surface.\n\n                                       Note: The index does not correspond to the first knot of the surface in the specified\n                                 parametric direction unless the multiplicity of the last knot is equal to Degree + 1,\n                                 where Degree is the degree of this surface in the corresponding parametric direction.\n                         ",
00411         NULL
00412     },
00413     {"UKnotSequence",
00414         (getter) staticCallback_getUKnotSequence,
00415         (setter) staticCallback_setUKnotSequence, 
00416         "\n                                             Returns the knots sequence of this B-Spline surface in\n                                                the u direction.\n                              ",
00417         NULL
00418     },
00419     {"VKnotSequence",
00420         (getter) staticCallback_getVKnotSequence,
00421         (setter) staticCallback_setVKnotSequence, 
00422         "\n                                     Returns the knots sequence of this B-Spline surface in\n                                        the v direction.\n                              ",
00423         NULL
00424     },
00425     {NULL, NULL, NULL, NULL, NULL}              /* Sentinel */
00426 };
00427 
00428 // bounds() callback and implementer
00429 // PyObject*  BSplineSurfacePy::bounds(PyObject *args){};
00430 // has to be implemented in BSplineSurfacePyImp.cpp
00431 PyObject * BSplineSurfacePy::staticCallback_bounds (PyObject *self, PyObject *args)
00432 {
00433     // test if twin object not allready deleted
00434     if (!((PyObjectBase*) self)->isValid()){
00435         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00436         return NULL;
00437     }
00438 
00439     // test if object is set Const
00440     if (((PyObjectBase*) self)->isConst()){
00441         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00442         return NULL;
00443     }
00444 
00445     try { // catches all exceptions coming up from c++ and generate a python exception
00446         PyObject* ret = ((BSplineSurfacePy*)self)->bounds(args);
00447         if (ret != 0)
00448             ((BSplineSurfacePy*)self)->startNotify();
00449         return ret;
00450     }
00451     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00452     {
00453         std::string str;
00454         str += "FreeCAD exception thrown (";
00455         str += e.what();
00456         str += ")";
00457         e.ReportException();
00458         PyErr_SetString(PyExc_Exception,str.c_str());
00459         return NULL;
00460     }
00461     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00462     {
00463         std::string str;
00464         str += "File system exception thrown (";
00465         //str += e.who();
00466         //str += ", ";
00467         str += e.what();
00468         str += ")\n";
00469         Base::Console().Error(str.c_str());
00470         PyErr_SetString(PyExc_Exception,str.c_str());
00471         return NULL;
00472     }
00473     catch(const Py::Exception&)
00474     {
00475         // The exception text is already set
00476         return NULL;
00477     }
00478     catch(const char* e) // catch simple string exceptions
00479     {
00480         Base::Console().Error(e);
00481         PyErr_SetString(PyExc_Exception,e);
00482         return NULL;
00483     }
00484     // in debug not all exceptions will be catched to get the attention of the developer!
00485 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00486     catch(const std::exception& e) // catch other c++ exceptions
00487     {
00488         std::string str;
00489         str += "FC++ exception thrown (";
00490         str += e.what();
00491         str += ")";
00492         Base::Console().Error(str.c_str());
00493         PyErr_SetString(PyExc_Exception,str.c_str());
00494         return NULL;
00495     }
00496     catch(...)  // catch the rest!
00497     {
00498         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00499         return NULL;
00500     }
00501 #endif
00502 }
00503 
00504 // isURational() callback and implementer
00505 // PyObject*  BSplineSurfacePy::isURational(PyObject *args){};
00506 // has to be implemented in BSplineSurfacePyImp.cpp
00507 PyObject * BSplineSurfacePy::staticCallback_isURational (PyObject *self, PyObject *args)
00508 {
00509     // test if twin object not allready deleted
00510     if (!((PyObjectBase*) self)->isValid()){
00511         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00512         return NULL;
00513     }
00514 
00515     // test if object is set Const
00516     if (((PyObjectBase*) self)->isConst()){
00517         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00518         return NULL;
00519     }
00520 
00521     try { // catches all exceptions coming up from c++ and generate a python exception
00522         PyObject* ret = ((BSplineSurfacePy*)self)->isURational(args);
00523         if (ret != 0)
00524             ((BSplineSurfacePy*)self)->startNotify();
00525         return ret;
00526     }
00527     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00528     {
00529         std::string str;
00530         str += "FreeCAD exception thrown (";
00531         str += e.what();
00532         str += ")";
00533         e.ReportException();
00534         PyErr_SetString(PyExc_Exception,str.c_str());
00535         return NULL;
00536     }
00537     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00538     {
00539         std::string str;
00540         str += "File system exception thrown (";
00541         //str += e.who();
00542         //str += ", ";
00543         str += e.what();
00544         str += ")\n";
00545         Base::Console().Error(str.c_str());
00546         PyErr_SetString(PyExc_Exception,str.c_str());
00547         return NULL;
00548     }
00549     catch(const Py::Exception&)
00550     {
00551         // The exception text is already set
00552         return NULL;
00553     }
00554     catch(const char* e) // catch simple string exceptions
00555     {
00556         Base::Console().Error(e);
00557         PyErr_SetString(PyExc_Exception,e);
00558         return NULL;
00559     }
00560     // in debug not all exceptions will be catched to get the attention of the developer!
00561 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00562     catch(const std::exception& e) // catch other c++ exceptions
00563     {
00564         std::string str;
00565         str += "FC++ exception thrown (";
00566         str += e.what();
00567         str += ")";
00568         Base::Console().Error(str.c_str());
00569         PyErr_SetString(PyExc_Exception,str.c_str());
00570         return NULL;
00571     }
00572     catch(...)  // catch the rest!
00573     {
00574         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00575         return NULL;
00576     }
00577 #endif
00578 }
00579 
00580 // isVRational() callback and implementer
00581 // PyObject*  BSplineSurfacePy::isVRational(PyObject *args){};
00582 // has to be implemented in BSplineSurfacePyImp.cpp
00583 PyObject * BSplineSurfacePy::staticCallback_isVRational (PyObject *self, PyObject *args)
00584 {
00585     // test if twin object not allready deleted
00586     if (!((PyObjectBase*) self)->isValid()){
00587         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00588         return NULL;
00589     }
00590 
00591     // test if object is set Const
00592     if (((PyObjectBase*) self)->isConst()){
00593         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00594         return NULL;
00595     }
00596 
00597     try { // catches all exceptions coming up from c++ and generate a python exception
00598         PyObject* ret = ((BSplineSurfacePy*)self)->isVRational(args);
00599         if (ret != 0)
00600             ((BSplineSurfacePy*)self)->startNotify();
00601         return ret;
00602     }
00603     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00604     {
00605         std::string str;
00606         str += "FreeCAD exception thrown (";
00607         str += e.what();
00608         str += ")";
00609         e.ReportException();
00610         PyErr_SetString(PyExc_Exception,str.c_str());
00611         return NULL;
00612     }
00613     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00614     {
00615         std::string str;
00616         str += "File system exception thrown (";
00617         //str += e.who();
00618         //str += ", ";
00619         str += e.what();
00620         str += ")\n";
00621         Base::Console().Error(str.c_str());
00622         PyErr_SetString(PyExc_Exception,str.c_str());
00623         return NULL;
00624     }
00625     catch(const Py::Exception&)
00626     {
00627         // The exception text is already set
00628         return NULL;
00629     }
00630     catch(const char* e) // catch simple string exceptions
00631     {
00632         Base::Console().Error(e);
00633         PyErr_SetString(PyExc_Exception,e);
00634         return NULL;
00635     }
00636     // in debug not all exceptions will be catched to get the attention of the developer!
00637 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00638     catch(const std::exception& e) // catch other c++ exceptions
00639     {
00640         std::string str;
00641         str += "FC++ exception thrown (";
00642         str += e.what();
00643         str += ")";
00644         Base::Console().Error(str.c_str());
00645         PyErr_SetString(PyExc_Exception,str.c_str());
00646         return NULL;
00647     }
00648     catch(...)  // catch the rest!
00649     {
00650         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00651         return NULL;
00652     }
00653 #endif
00654 }
00655 
00656 // isUPeriodic() callback and implementer
00657 // PyObject*  BSplineSurfacePy::isUPeriodic(PyObject *args){};
00658 // has to be implemented in BSplineSurfacePyImp.cpp
00659 PyObject * BSplineSurfacePy::staticCallback_isUPeriodic (PyObject *self, PyObject *args)
00660 {
00661     // test if twin object not allready deleted
00662     if (!((PyObjectBase*) self)->isValid()){
00663         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00664         return NULL;
00665     }
00666 
00667     // test if object is set Const
00668     if (((PyObjectBase*) self)->isConst()){
00669         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00670         return NULL;
00671     }
00672 
00673     try { // catches all exceptions coming up from c++ and generate a python exception
00674         PyObject* ret = ((BSplineSurfacePy*)self)->isUPeriodic(args);
00675         if (ret != 0)
00676             ((BSplineSurfacePy*)self)->startNotify();
00677         return ret;
00678     }
00679     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00680     {
00681         std::string str;
00682         str += "FreeCAD exception thrown (";
00683         str += e.what();
00684         str += ")";
00685         e.ReportException();
00686         PyErr_SetString(PyExc_Exception,str.c_str());
00687         return NULL;
00688     }
00689     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00690     {
00691         std::string str;
00692         str += "File system exception thrown (";
00693         //str += e.who();
00694         //str += ", ";
00695         str += e.what();
00696         str += ")\n";
00697         Base::Console().Error(str.c_str());
00698         PyErr_SetString(PyExc_Exception,str.c_str());
00699         return NULL;
00700     }
00701     catch(const Py::Exception&)
00702     {
00703         // The exception text is already set
00704         return NULL;
00705     }
00706     catch(const char* e) // catch simple string exceptions
00707     {
00708         Base::Console().Error(e);
00709         PyErr_SetString(PyExc_Exception,e);
00710         return NULL;
00711     }
00712     // in debug not all exceptions will be catched to get the attention of the developer!
00713 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00714     catch(const std::exception& e) // catch other c++ exceptions
00715     {
00716         std::string str;
00717         str += "FC++ exception thrown (";
00718         str += e.what();
00719         str += ")";
00720         Base::Console().Error(str.c_str());
00721         PyErr_SetString(PyExc_Exception,str.c_str());
00722         return NULL;
00723     }
00724     catch(...)  // catch the rest!
00725     {
00726         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00727         return NULL;
00728     }
00729 #endif
00730 }
00731 
00732 // isVPeriodic() callback and implementer
00733 // PyObject*  BSplineSurfacePy::isVPeriodic(PyObject *args){};
00734 // has to be implemented in BSplineSurfacePyImp.cpp
00735 PyObject * BSplineSurfacePy::staticCallback_isVPeriodic (PyObject *self, PyObject *args)
00736 {
00737     // test if twin object not allready deleted
00738     if (!((PyObjectBase*) self)->isValid()){
00739         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00740         return NULL;
00741     }
00742 
00743     // test if object is set Const
00744     if (((PyObjectBase*) self)->isConst()){
00745         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00746         return NULL;
00747     }
00748 
00749     try { // catches all exceptions coming up from c++ and generate a python exception
00750         PyObject* ret = ((BSplineSurfacePy*)self)->isVPeriodic(args);
00751         if (ret != 0)
00752             ((BSplineSurfacePy*)self)->startNotify();
00753         return ret;
00754     }
00755     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00756     {
00757         std::string str;
00758         str += "FreeCAD exception thrown (";
00759         str += e.what();
00760         str += ")";
00761         e.ReportException();
00762         PyErr_SetString(PyExc_Exception,str.c_str());
00763         return NULL;
00764     }
00765     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00766     {
00767         std::string str;
00768         str += "File system exception thrown (";
00769         //str += e.who();
00770         //str += ", ";
00771         str += e.what();
00772         str += ")\n";
00773         Base::Console().Error(str.c_str());
00774         PyErr_SetString(PyExc_Exception,str.c_str());
00775         return NULL;
00776     }
00777     catch(const Py::Exception&)
00778     {
00779         // The exception text is already set
00780         return NULL;
00781     }
00782     catch(const char* e) // catch simple string exceptions
00783     {
00784         Base::Console().Error(e);
00785         PyErr_SetString(PyExc_Exception,e);
00786         return NULL;
00787     }
00788     // in debug not all exceptions will be catched to get the attention of the developer!
00789 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00790     catch(const std::exception& e) // catch other c++ exceptions
00791     {
00792         std::string str;
00793         str += "FC++ exception thrown (";
00794         str += e.what();
00795         str += ")";
00796         Base::Console().Error(str.c_str());
00797         PyErr_SetString(PyExc_Exception,str.c_str());
00798         return NULL;
00799     }
00800     catch(...)  // catch the rest!
00801     {
00802         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00803         return NULL;
00804     }
00805 #endif
00806 }
00807 
00808 // isUClosed() callback and implementer
00809 // PyObject*  BSplineSurfacePy::isUClosed(PyObject *args){};
00810 // has to be implemented in BSplineSurfacePyImp.cpp
00811 PyObject * BSplineSurfacePy::staticCallback_isUClosed (PyObject *self, PyObject *args)
00812 {
00813     // test if twin object not allready deleted
00814     if (!((PyObjectBase*) self)->isValid()){
00815         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00816         return NULL;
00817     }
00818 
00819     // test if object is set Const
00820     if (((PyObjectBase*) self)->isConst()){
00821         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00822         return NULL;
00823     }
00824 
00825     try { // catches all exceptions coming up from c++ and generate a python exception
00826         PyObject* ret = ((BSplineSurfacePy*)self)->isUClosed(args);
00827         if (ret != 0)
00828             ((BSplineSurfacePy*)self)->startNotify();
00829         return ret;
00830     }
00831     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00832     {
00833         std::string str;
00834         str += "FreeCAD exception thrown (";
00835         str += e.what();
00836         str += ")";
00837         e.ReportException();
00838         PyErr_SetString(PyExc_Exception,str.c_str());
00839         return NULL;
00840     }
00841     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00842     {
00843         std::string str;
00844         str += "File system exception thrown (";
00845         //str += e.who();
00846         //str += ", ";
00847         str += e.what();
00848         str += ")\n";
00849         Base::Console().Error(str.c_str());
00850         PyErr_SetString(PyExc_Exception,str.c_str());
00851         return NULL;
00852     }
00853     catch(const Py::Exception&)
00854     {
00855         // The exception text is already set
00856         return NULL;
00857     }
00858     catch(const char* e) // catch simple string exceptions
00859     {
00860         Base::Console().Error(e);
00861         PyErr_SetString(PyExc_Exception,e);
00862         return NULL;
00863     }
00864     // in debug not all exceptions will be catched to get the attention of the developer!
00865 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00866     catch(const std::exception& e) // catch other c++ exceptions
00867     {
00868         std::string str;
00869         str += "FC++ exception thrown (";
00870         str += e.what();
00871         str += ")";
00872         Base::Console().Error(str.c_str());
00873         PyErr_SetString(PyExc_Exception,str.c_str());
00874         return NULL;
00875     }
00876     catch(...)  // catch the rest!
00877     {
00878         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00879         return NULL;
00880     }
00881 #endif
00882 }
00883 
00884 // isVClosed() callback and implementer
00885 // PyObject*  BSplineSurfacePy::isVClosed(PyObject *args){};
00886 // has to be implemented in BSplineSurfacePyImp.cpp
00887 PyObject * BSplineSurfacePy::staticCallback_isVClosed (PyObject *self, PyObject *args)
00888 {
00889     // test if twin object not allready deleted
00890     if (!((PyObjectBase*) self)->isValid()){
00891         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00892         return NULL;
00893     }
00894 
00895     // test if object is set Const
00896     if (((PyObjectBase*) self)->isConst()){
00897         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00898         return NULL;
00899     }
00900 
00901     try { // catches all exceptions coming up from c++ and generate a python exception
00902         PyObject* ret = ((BSplineSurfacePy*)self)->isVClosed(args);
00903         if (ret != 0)
00904             ((BSplineSurfacePy*)self)->startNotify();
00905         return ret;
00906     }
00907     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00908     {
00909         std::string str;
00910         str += "FreeCAD exception thrown (";
00911         str += e.what();
00912         str += ")";
00913         e.ReportException();
00914         PyErr_SetString(PyExc_Exception,str.c_str());
00915         return NULL;
00916     }
00917     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00918     {
00919         std::string str;
00920         str += "File system exception thrown (";
00921         //str += e.who();
00922         //str += ", ";
00923         str += e.what();
00924         str += ")\n";
00925         Base::Console().Error(str.c_str());
00926         PyErr_SetString(PyExc_Exception,str.c_str());
00927         return NULL;
00928     }
00929     catch(const Py::Exception&)
00930     {
00931         // The exception text is already set
00932         return NULL;
00933     }
00934     catch(const char* e) // catch simple string exceptions
00935     {
00936         Base::Console().Error(e);
00937         PyErr_SetString(PyExc_Exception,e);
00938         return NULL;
00939     }
00940     // in debug not all exceptions will be catched to get the attention of the developer!
00941 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
00942     catch(const std::exception& e) // catch other c++ exceptions
00943     {
00944         std::string str;
00945         str += "FC++ exception thrown (";
00946         str += e.what();
00947         str += ")";
00948         Base::Console().Error(str.c_str());
00949         PyErr_SetString(PyExc_Exception,str.c_str());
00950         return NULL;
00951     }
00952     catch(...)  // catch the rest!
00953     {
00954         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
00955         return NULL;
00956     }
00957 #endif
00958 }
00959 
00960 // increaseDegree() callback and implementer
00961 // PyObject*  BSplineSurfacePy::increaseDegree(PyObject *args){};
00962 // has to be implemented in BSplineSurfacePyImp.cpp
00963 PyObject * BSplineSurfacePy::staticCallback_increaseDegree (PyObject *self, PyObject *args)
00964 {
00965     // test if twin object not allready deleted
00966     if (!((PyObjectBase*) self)->isValid()){
00967         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
00968         return NULL;
00969     }
00970 
00971     // test if object is set Const
00972     if (((PyObjectBase*) self)->isConst()){
00973         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
00974         return NULL;
00975     }
00976 
00977     try { // catches all exceptions coming up from c++ and generate a python exception
00978         PyObject* ret = ((BSplineSurfacePy*)self)->increaseDegree(args);
00979         if (ret != 0)
00980             ((BSplineSurfacePy*)self)->startNotify();
00981         return ret;
00982     }
00983     catch(const Base::Exception& e) // catch the FreeCAD exceptions
00984     {
00985         std::string str;
00986         str += "FreeCAD exception thrown (";
00987         str += e.what();
00988         str += ")";
00989         e.ReportException();
00990         PyErr_SetString(PyExc_Exception,str.c_str());
00991         return NULL;
00992     }
00993     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
00994     {
00995         std::string str;
00996         str += "File system exception thrown (";
00997         //str += e.who();
00998         //str += ", ";
00999         str += e.what();
01000         str += ")\n";
01001         Base::Console().Error(str.c_str());
01002         PyErr_SetString(PyExc_Exception,str.c_str());
01003         return NULL;
01004     }
01005     catch(const Py::Exception&)
01006     {
01007         // The exception text is already set
01008         return NULL;
01009     }
01010     catch(const char* e) // catch simple string exceptions
01011     {
01012         Base::Console().Error(e);
01013         PyErr_SetString(PyExc_Exception,e);
01014         return NULL;
01015     }
01016     // in debug not all exceptions will be catched to get the attention of the developer!
01017 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01018     catch(const std::exception& e) // catch other c++ exceptions
01019     {
01020         std::string str;
01021         str += "FC++ exception thrown (";
01022         str += e.what();
01023         str += ")";
01024         Base::Console().Error(str.c_str());
01025         PyErr_SetString(PyExc_Exception,str.c_str());
01026         return NULL;
01027     }
01028     catch(...)  // catch the rest!
01029     {
01030         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01031         return NULL;
01032     }
01033 #endif
01034 }
01035 
01036 // increaseUMultiplicity() callback and implementer
01037 // PyObject*  BSplineSurfacePy::increaseUMultiplicity(PyObject *args){};
01038 // has to be implemented in BSplineSurfacePyImp.cpp
01039 PyObject * BSplineSurfacePy::staticCallback_increaseUMultiplicity (PyObject *self, PyObject *args)
01040 {
01041     // test if twin object not allready deleted
01042     if (!((PyObjectBase*) self)->isValid()){
01043         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01044         return NULL;
01045     }
01046 
01047     // test if object is set Const
01048     if (((PyObjectBase*) self)->isConst()){
01049         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01050         return NULL;
01051     }
01052 
01053     try { // catches all exceptions coming up from c++ and generate a python exception
01054         PyObject* ret = ((BSplineSurfacePy*)self)->increaseUMultiplicity(args);
01055         if (ret != 0)
01056             ((BSplineSurfacePy*)self)->startNotify();
01057         return ret;
01058     }
01059     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01060     {
01061         std::string str;
01062         str += "FreeCAD exception thrown (";
01063         str += e.what();
01064         str += ")";
01065         e.ReportException();
01066         PyErr_SetString(PyExc_Exception,str.c_str());
01067         return NULL;
01068     }
01069     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01070     {
01071         std::string str;
01072         str += "File system exception thrown (";
01073         //str += e.who();
01074         //str += ", ";
01075         str += e.what();
01076         str += ")\n";
01077         Base::Console().Error(str.c_str());
01078         PyErr_SetString(PyExc_Exception,str.c_str());
01079         return NULL;
01080     }
01081     catch(const Py::Exception&)
01082     {
01083         // The exception text is already set
01084         return NULL;
01085     }
01086     catch(const char* e) // catch simple string exceptions
01087     {
01088         Base::Console().Error(e);
01089         PyErr_SetString(PyExc_Exception,e);
01090         return NULL;
01091     }
01092     // in debug not all exceptions will be catched to get the attention of the developer!
01093 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01094     catch(const std::exception& e) // catch other c++ exceptions
01095     {
01096         std::string str;
01097         str += "FC++ exception thrown (";
01098         str += e.what();
01099         str += ")";
01100         Base::Console().Error(str.c_str());
01101         PyErr_SetString(PyExc_Exception,str.c_str());
01102         return NULL;
01103     }
01104     catch(...)  // catch the rest!
01105     {
01106         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01107         return NULL;
01108     }
01109 #endif
01110 }
01111 
01112 // increaseVMultiplicity() callback and implementer
01113 // PyObject*  BSplineSurfacePy::increaseVMultiplicity(PyObject *args){};
01114 // has to be implemented in BSplineSurfacePyImp.cpp
01115 PyObject * BSplineSurfacePy::staticCallback_increaseVMultiplicity (PyObject *self, PyObject *args)
01116 {
01117     // test if twin object not allready deleted
01118     if (!((PyObjectBase*) self)->isValid()){
01119         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01120         return NULL;
01121     }
01122 
01123     // test if object is set Const
01124     if (((PyObjectBase*) self)->isConst()){
01125         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01126         return NULL;
01127     }
01128 
01129     try { // catches all exceptions coming up from c++ and generate a python exception
01130         PyObject* ret = ((BSplineSurfacePy*)self)->increaseVMultiplicity(args);
01131         if (ret != 0)
01132             ((BSplineSurfacePy*)self)->startNotify();
01133         return ret;
01134     }
01135     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01136     {
01137         std::string str;
01138         str += "FreeCAD exception thrown (";
01139         str += e.what();
01140         str += ")";
01141         e.ReportException();
01142         PyErr_SetString(PyExc_Exception,str.c_str());
01143         return NULL;
01144     }
01145     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01146     {
01147         std::string str;
01148         str += "File system exception thrown (";
01149         //str += e.who();
01150         //str += ", ";
01151         str += e.what();
01152         str += ")\n";
01153         Base::Console().Error(str.c_str());
01154         PyErr_SetString(PyExc_Exception,str.c_str());
01155         return NULL;
01156     }
01157     catch(const Py::Exception&)
01158     {
01159         // The exception text is already set
01160         return NULL;
01161     }
01162     catch(const char* e) // catch simple string exceptions
01163     {
01164         Base::Console().Error(e);
01165         PyErr_SetString(PyExc_Exception,e);
01166         return NULL;
01167     }
01168     // in debug not all exceptions will be catched to get the attention of the developer!
01169 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01170     catch(const std::exception& e) // catch other c++ exceptions
01171     {
01172         std::string str;
01173         str += "FC++ exception thrown (";
01174         str += e.what();
01175         str += ")";
01176         Base::Console().Error(str.c_str());
01177         PyErr_SetString(PyExc_Exception,str.c_str());
01178         return NULL;
01179     }
01180     catch(...)  // catch the rest!
01181     {
01182         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01183         return NULL;
01184     }
01185 #endif
01186 }
01187 
01188 // incrementUMultiplicity() callback and implementer
01189 // PyObject*  BSplineSurfacePy::incrementUMultiplicity(PyObject *args){};
01190 // has to be implemented in BSplineSurfacePyImp.cpp
01191 PyObject * BSplineSurfacePy::staticCallback_incrementUMultiplicity (PyObject *self, PyObject *args)
01192 {
01193     // test if twin object not allready deleted
01194     if (!((PyObjectBase*) self)->isValid()){
01195         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01196         return NULL;
01197     }
01198 
01199     // test if object is set Const
01200     if (((PyObjectBase*) self)->isConst()){
01201         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01202         return NULL;
01203     }
01204 
01205     try { // catches all exceptions coming up from c++ and generate a python exception
01206         PyObject* ret = ((BSplineSurfacePy*)self)->incrementUMultiplicity(args);
01207         if (ret != 0)
01208             ((BSplineSurfacePy*)self)->startNotify();
01209         return ret;
01210     }
01211     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01212     {
01213         std::string str;
01214         str += "FreeCAD exception thrown (";
01215         str += e.what();
01216         str += ")";
01217         e.ReportException();
01218         PyErr_SetString(PyExc_Exception,str.c_str());
01219         return NULL;
01220     }
01221     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01222     {
01223         std::string str;
01224         str += "File system exception thrown (";
01225         //str += e.who();
01226         //str += ", ";
01227         str += e.what();
01228         str += ")\n";
01229         Base::Console().Error(str.c_str());
01230         PyErr_SetString(PyExc_Exception,str.c_str());
01231         return NULL;
01232     }
01233     catch(const Py::Exception&)
01234     {
01235         // The exception text is already set
01236         return NULL;
01237     }
01238     catch(const char* e) // catch simple string exceptions
01239     {
01240         Base::Console().Error(e);
01241         PyErr_SetString(PyExc_Exception,e);
01242         return NULL;
01243     }
01244     // in debug not all exceptions will be catched to get the attention of the developer!
01245 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01246     catch(const std::exception& e) // catch other c++ exceptions
01247     {
01248         std::string str;
01249         str += "FC++ exception thrown (";
01250         str += e.what();
01251         str += ")";
01252         Base::Console().Error(str.c_str());
01253         PyErr_SetString(PyExc_Exception,str.c_str());
01254         return NULL;
01255     }
01256     catch(...)  // catch the rest!
01257     {
01258         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01259         return NULL;
01260     }
01261 #endif
01262 }
01263 
01264 // incrementVMultiplicity() callback and implementer
01265 // PyObject*  BSplineSurfacePy::incrementVMultiplicity(PyObject *args){};
01266 // has to be implemented in BSplineSurfacePyImp.cpp
01267 PyObject * BSplineSurfacePy::staticCallback_incrementVMultiplicity (PyObject *self, PyObject *args)
01268 {
01269     // test if twin object not allready deleted
01270     if (!((PyObjectBase*) self)->isValid()){
01271         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01272         return NULL;
01273     }
01274 
01275     // test if object is set Const
01276     if (((PyObjectBase*) self)->isConst()){
01277         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01278         return NULL;
01279     }
01280 
01281     try { // catches all exceptions coming up from c++ and generate a python exception
01282         PyObject* ret = ((BSplineSurfacePy*)self)->incrementVMultiplicity(args);
01283         if (ret != 0)
01284             ((BSplineSurfacePy*)self)->startNotify();
01285         return ret;
01286     }
01287     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01288     {
01289         std::string str;
01290         str += "FreeCAD exception thrown (";
01291         str += e.what();
01292         str += ")";
01293         e.ReportException();
01294         PyErr_SetString(PyExc_Exception,str.c_str());
01295         return NULL;
01296     }
01297     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01298     {
01299         std::string str;
01300         str += "File system exception thrown (";
01301         //str += e.who();
01302         //str += ", ";
01303         str += e.what();
01304         str += ")\n";
01305         Base::Console().Error(str.c_str());
01306         PyErr_SetString(PyExc_Exception,str.c_str());
01307         return NULL;
01308     }
01309     catch(const Py::Exception&)
01310     {
01311         // The exception text is already set
01312         return NULL;
01313     }
01314     catch(const char* e) // catch simple string exceptions
01315     {
01316         Base::Console().Error(e);
01317         PyErr_SetString(PyExc_Exception,e);
01318         return NULL;
01319     }
01320     // in debug not all exceptions will be catched to get the attention of the developer!
01321 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01322     catch(const std::exception& e) // catch other c++ exceptions
01323     {
01324         std::string str;
01325         str += "FC++ exception thrown (";
01326         str += e.what();
01327         str += ")";
01328         Base::Console().Error(str.c_str());
01329         PyErr_SetString(PyExc_Exception,str.c_str());
01330         return NULL;
01331     }
01332     catch(...)  // catch the rest!
01333     {
01334         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01335         return NULL;
01336     }
01337 #endif
01338 }
01339 
01340 // insertUKnot() callback and implementer
01341 // PyObject*  BSplineSurfacePy::insertUKnot(PyObject *args){};
01342 // has to be implemented in BSplineSurfacePyImp.cpp
01343 PyObject * BSplineSurfacePy::staticCallback_insertUKnot (PyObject *self, PyObject *args)
01344 {
01345     // test if twin object not allready deleted
01346     if (!((PyObjectBase*) self)->isValid()){
01347         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01348         return NULL;
01349     }
01350 
01351     // test if object is set Const
01352     if (((PyObjectBase*) self)->isConst()){
01353         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01354         return NULL;
01355     }
01356 
01357     try { // catches all exceptions coming up from c++ and generate a python exception
01358         PyObject* ret = ((BSplineSurfacePy*)self)->insertUKnot(args);
01359         if (ret != 0)
01360             ((BSplineSurfacePy*)self)->startNotify();
01361         return ret;
01362     }
01363     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01364     {
01365         std::string str;
01366         str += "FreeCAD exception thrown (";
01367         str += e.what();
01368         str += ")";
01369         e.ReportException();
01370         PyErr_SetString(PyExc_Exception,str.c_str());
01371         return NULL;
01372     }
01373     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01374     {
01375         std::string str;
01376         str += "File system exception thrown (";
01377         //str += e.who();
01378         //str += ", ";
01379         str += e.what();
01380         str += ")\n";
01381         Base::Console().Error(str.c_str());
01382         PyErr_SetString(PyExc_Exception,str.c_str());
01383         return NULL;
01384     }
01385     catch(const Py::Exception&)
01386     {
01387         // The exception text is already set
01388         return NULL;
01389     }
01390     catch(const char* e) // catch simple string exceptions
01391     {
01392         Base::Console().Error(e);
01393         PyErr_SetString(PyExc_Exception,e);
01394         return NULL;
01395     }
01396     // in debug not all exceptions will be catched to get the attention of the developer!
01397 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01398     catch(const std::exception& e) // catch other c++ exceptions
01399     {
01400         std::string str;
01401         str += "FC++ exception thrown (";
01402         str += e.what();
01403         str += ")";
01404         Base::Console().Error(str.c_str());
01405         PyErr_SetString(PyExc_Exception,str.c_str());
01406         return NULL;
01407     }
01408     catch(...)  // catch the rest!
01409     {
01410         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01411         return NULL;
01412     }
01413 #endif
01414 }
01415 
01416 // insertUKnots() callback and implementer
01417 // PyObject*  BSplineSurfacePy::insertUKnots(PyObject *args){};
01418 // has to be implemented in BSplineSurfacePyImp.cpp
01419 PyObject * BSplineSurfacePy::staticCallback_insertUKnots (PyObject *self, PyObject *args)
01420 {
01421     // test if twin object not allready deleted
01422     if (!((PyObjectBase*) self)->isValid()){
01423         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01424         return NULL;
01425     }
01426 
01427     // test if object is set Const
01428     if (((PyObjectBase*) self)->isConst()){
01429         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01430         return NULL;
01431     }
01432 
01433     try { // catches all exceptions coming up from c++ and generate a python exception
01434         PyObject* ret = ((BSplineSurfacePy*)self)->insertUKnots(args);
01435         if (ret != 0)
01436             ((BSplineSurfacePy*)self)->startNotify();
01437         return ret;
01438     }
01439     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01440     {
01441         std::string str;
01442         str += "FreeCAD exception thrown (";
01443         str += e.what();
01444         str += ")";
01445         e.ReportException();
01446         PyErr_SetString(PyExc_Exception,str.c_str());
01447         return NULL;
01448     }
01449     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01450     {
01451         std::string str;
01452         str += "File system exception thrown (";
01453         //str += e.who();
01454         //str += ", ";
01455         str += e.what();
01456         str += ")\n";
01457         Base::Console().Error(str.c_str());
01458         PyErr_SetString(PyExc_Exception,str.c_str());
01459         return NULL;
01460     }
01461     catch(const Py::Exception&)
01462     {
01463         // The exception text is already set
01464         return NULL;
01465     }
01466     catch(const char* e) // catch simple string exceptions
01467     {
01468         Base::Console().Error(e);
01469         PyErr_SetString(PyExc_Exception,e);
01470         return NULL;
01471     }
01472     // in debug not all exceptions will be catched to get the attention of the developer!
01473 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01474     catch(const std::exception& e) // catch other c++ exceptions
01475     {
01476         std::string str;
01477         str += "FC++ exception thrown (";
01478         str += e.what();
01479         str += ")";
01480         Base::Console().Error(str.c_str());
01481         PyErr_SetString(PyExc_Exception,str.c_str());
01482         return NULL;
01483     }
01484     catch(...)  // catch the rest!
01485     {
01486         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01487         return NULL;
01488     }
01489 #endif
01490 }
01491 
01492 // insertVKnot() callback and implementer
01493 // PyObject*  BSplineSurfacePy::insertVKnot(PyObject *args){};
01494 // has to be implemented in BSplineSurfacePyImp.cpp
01495 PyObject * BSplineSurfacePy::staticCallback_insertVKnot (PyObject *self, PyObject *args)
01496 {
01497     // test if twin object not allready deleted
01498     if (!((PyObjectBase*) self)->isValid()){
01499         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01500         return NULL;
01501     }
01502 
01503     // test if object is set Const
01504     if (((PyObjectBase*) self)->isConst()){
01505         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01506         return NULL;
01507     }
01508 
01509     try { // catches all exceptions coming up from c++ and generate a python exception
01510         PyObject* ret = ((BSplineSurfacePy*)self)->insertVKnot(args);
01511         if (ret != 0)
01512             ((BSplineSurfacePy*)self)->startNotify();
01513         return ret;
01514     }
01515     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01516     {
01517         std::string str;
01518         str += "FreeCAD exception thrown (";
01519         str += e.what();
01520         str += ")";
01521         e.ReportException();
01522         PyErr_SetString(PyExc_Exception,str.c_str());
01523         return NULL;
01524     }
01525     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01526     {
01527         std::string str;
01528         str += "File system exception thrown (";
01529         //str += e.who();
01530         //str += ", ";
01531         str += e.what();
01532         str += ")\n";
01533         Base::Console().Error(str.c_str());
01534         PyErr_SetString(PyExc_Exception,str.c_str());
01535         return NULL;
01536     }
01537     catch(const Py::Exception&)
01538     {
01539         // The exception text is already set
01540         return NULL;
01541     }
01542     catch(const char* e) // catch simple string exceptions
01543     {
01544         Base::Console().Error(e);
01545         PyErr_SetString(PyExc_Exception,e);
01546         return NULL;
01547     }
01548     // in debug not all exceptions will be catched to get the attention of the developer!
01549 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01550     catch(const std::exception& e) // catch other c++ exceptions
01551     {
01552         std::string str;
01553         str += "FC++ exception thrown (";
01554         str += e.what();
01555         str += ")";
01556         Base::Console().Error(str.c_str());
01557         PyErr_SetString(PyExc_Exception,str.c_str());
01558         return NULL;
01559     }
01560     catch(...)  // catch the rest!
01561     {
01562         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01563         return NULL;
01564     }
01565 #endif
01566 }
01567 
01568 // insertVKnots() callback and implementer
01569 // PyObject*  BSplineSurfacePy::insertVKnots(PyObject *args){};
01570 // has to be implemented in BSplineSurfacePyImp.cpp
01571 PyObject * BSplineSurfacePy::staticCallback_insertVKnots (PyObject *self, PyObject *args)
01572 {
01573     // test if twin object not allready deleted
01574     if (!((PyObjectBase*) self)->isValid()){
01575         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01576         return NULL;
01577     }
01578 
01579     // test if object is set Const
01580     if (((PyObjectBase*) self)->isConst()){
01581         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01582         return NULL;
01583     }
01584 
01585     try { // catches all exceptions coming up from c++ and generate a python exception
01586         PyObject* ret = ((BSplineSurfacePy*)self)->insertVKnots(args);
01587         if (ret != 0)
01588             ((BSplineSurfacePy*)self)->startNotify();
01589         return ret;
01590     }
01591     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01592     {
01593         std::string str;
01594         str += "FreeCAD exception thrown (";
01595         str += e.what();
01596         str += ")";
01597         e.ReportException();
01598         PyErr_SetString(PyExc_Exception,str.c_str());
01599         return NULL;
01600     }
01601     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01602     {
01603         std::string str;
01604         str += "File system exception thrown (";
01605         //str += e.who();
01606         //str += ", ";
01607         str += e.what();
01608         str += ")\n";
01609         Base::Console().Error(str.c_str());
01610         PyErr_SetString(PyExc_Exception,str.c_str());
01611         return NULL;
01612     }
01613     catch(const Py::Exception&)
01614     {
01615         // The exception text is already set
01616         return NULL;
01617     }
01618     catch(const char* e) // catch simple string exceptions
01619     {
01620         Base::Console().Error(e);
01621         PyErr_SetString(PyExc_Exception,e);
01622         return NULL;
01623     }
01624     // in debug not all exceptions will be catched to get the attention of the developer!
01625 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01626     catch(const std::exception& e) // catch other c++ exceptions
01627     {
01628         std::string str;
01629         str += "FC++ exception thrown (";
01630         str += e.what();
01631         str += ")";
01632         Base::Console().Error(str.c_str());
01633         PyErr_SetString(PyExc_Exception,str.c_str());
01634         return NULL;
01635     }
01636     catch(...)  // catch the rest!
01637     {
01638         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01639         return NULL;
01640     }
01641 #endif
01642 }
01643 
01644 // removeUKnot() callback and implementer
01645 // PyObject*  BSplineSurfacePy::removeUKnot(PyObject *args){};
01646 // has to be implemented in BSplineSurfacePyImp.cpp
01647 PyObject * BSplineSurfacePy::staticCallback_removeUKnot (PyObject *self, PyObject *args)
01648 {
01649     // test if twin object not allready deleted
01650     if (!((PyObjectBase*) self)->isValid()){
01651         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01652         return NULL;
01653     }
01654 
01655     // test if object is set Const
01656     if (((PyObjectBase*) self)->isConst()){
01657         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01658         return NULL;
01659     }
01660 
01661     try { // catches all exceptions coming up from c++ and generate a python exception
01662         PyObject* ret = ((BSplineSurfacePy*)self)->removeUKnot(args);
01663         if (ret != 0)
01664             ((BSplineSurfacePy*)self)->startNotify();
01665         return ret;
01666     }
01667     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01668     {
01669         std::string str;
01670         str += "FreeCAD exception thrown (";
01671         str += e.what();
01672         str += ")";
01673         e.ReportException();
01674         PyErr_SetString(PyExc_Exception,str.c_str());
01675         return NULL;
01676     }
01677     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01678     {
01679         std::string str;
01680         str += "File system exception thrown (";
01681         //str += e.who();
01682         //str += ", ";
01683         str += e.what();
01684         str += ")\n";
01685         Base::Console().Error(str.c_str());
01686         PyErr_SetString(PyExc_Exception,str.c_str());
01687         return NULL;
01688     }
01689     catch(const Py::Exception&)
01690     {
01691         // The exception text is already set
01692         return NULL;
01693     }
01694     catch(const char* e) // catch simple string exceptions
01695     {
01696         Base::Console().Error(e);
01697         PyErr_SetString(PyExc_Exception,e);
01698         return NULL;
01699     }
01700     // in debug not all exceptions will be catched to get the attention of the developer!
01701 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01702     catch(const std::exception& e) // catch other c++ exceptions
01703     {
01704         std::string str;
01705         str += "FC++ exception thrown (";
01706         str += e.what();
01707         str += ")";
01708         Base::Console().Error(str.c_str());
01709         PyErr_SetString(PyExc_Exception,str.c_str());
01710         return NULL;
01711     }
01712     catch(...)  // catch the rest!
01713     {
01714         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01715         return NULL;
01716     }
01717 #endif
01718 }
01719 
01720 // removeVKnot() callback and implementer
01721 // PyObject*  BSplineSurfacePy::removeVKnot(PyObject *args){};
01722 // has to be implemented in BSplineSurfacePyImp.cpp
01723 PyObject * BSplineSurfacePy::staticCallback_removeVKnot (PyObject *self, PyObject *args)
01724 {
01725     // test if twin object not allready deleted
01726     if (!((PyObjectBase*) self)->isValid()){
01727         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01728         return NULL;
01729     }
01730 
01731     // test if object is set Const
01732     if (((PyObjectBase*) self)->isConst()){
01733         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01734         return NULL;
01735     }
01736 
01737     try { // catches all exceptions coming up from c++ and generate a python exception
01738         PyObject* ret = ((BSplineSurfacePy*)self)->removeVKnot(args);
01739         if (ret != 0)
01740             ((BSplineSurfacePy*)self)->startNotify();
01741         return ret;
01742     }
01743     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01744     {
01745         std::string str;
01746         str += "FreeCAD exception thrown (";
01747         str += e.what();
01748         str += ")";
01749         e.ReportException();
01750         PyErr_SetString(PyExc_Exception,str.c_str());
01751         return NULL;
01752     }
01753     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01754     {
01755         std::string str;
01756         str += "File system exception thrown (";
01757         //str += e.who();
01758         //str += ", ";
01759         str += e.what();
01760         str += ")\n";
01761         Base::Console().Error(str.c_str());
01762         PyErr_SetString(PyExc_Exception,str.c_str());
01763         return NULL;
01764     }
01765     catch(const Py::Exception&)
01766     {
01767         // The exception text is already set
01768         return NULL;
01769     }
01770     catch(const char* e) // catch simple string exceptions
01771     {
01772         Base::Console().Error(e);
01773         PyErr_SetString(PyExc_Exception,e);
01774         return NULL;
01775     }
01776     // in debug not all exceptions will be catched to get the attention of the developer!
01777 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01778     catch(const std::exception& e) // catch other c++ exceptions
01779     {
01780         std::string str;
01781         str += "FC++ exception thrown (";
01782         str += e.what();
01783         str += ")";
01784         Base::Console().Error(str.c_str());
01785         PyErr_SetString(PyExc_Exception,str.c_str());
01786         return NULL;
01787     }
01788     catch(...)  // catch the rest!
01789     {
01790         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01791         return NULL;
01792     }
01793 #endif
01794 }
01795 
01796 // segment() callback and implementer
01797 // PyObject*  BSplineSurfacePy::segment(PyObject *args){};
01798 // has to be implemented in BSplineSurfacePyImp.cpp
01799 PyObject * BSplineSurfacePy::staticCallback_segment (PyObject *self, PyObject *args)
01800 {
01801     // test if twin object not allready deleted
01802     if (!((PyObjectBase*) self)->isValid()){
01803         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01804         return NULL;
01805     }
01806 
01807     // test if object is set Const
01808     if (((PyObjectBase*) self)->isConst()){
01809         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01810         return NULL;
01811     }
01812 
01813     try { // catches all exceptions coming up from c++ and generate a python exception
01814         PyObject* ret = ((BSplineSurfacePy*)self)->segment(args);
01815         if (ret != 0)
01816             ((BSplineSurfacePy*)self)->startNotify();
01817         return ret;
01818     }
01819     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01820     {
01821         std::string str;
01822         str += "FreeCAD exception thrown (";
01823         str += e.what();
01824         str += ")";
01825         e.ReportException();
01826         PyErr_SetString(PyExc_Exception,str.c_str());
01827         return NULL;
01828     }
01829     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01830     {
01831         std::string str;
01832         str += "File system exception thrown (";
01833         //str += e.who();
01834         //str += ", ";
01835         str += e.what();
01836         str += ")\n";
01837         Base::Console().Error(str.c_str());
01838         PyErr_SetString(PyExc_Exception,str.c_str());
01839         return NULL;
01840     }
01841     catch(const Py::Exception&)
01842     {
01843         // The exception text is already set
01844         return NULL;
01845     }
01846     catch(const char* e) // catch simple string exceptions
01847     {
01848         Base::Console().Error(e);
01849         PyErr_SetString(PyExc_Exception,e);
01850         return NULL;
01851     }
01852     // in debug not all exceptions will be catched to get the attention of the developer!
01853 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01854     catch(const std::exception& e) // catch other c++ exceptions
01855     {
01856         std::string str;
01857         str += "FC++ exception thrown (";
01858         str += e.what();
01859         str += ")";
01860         Base::Console().Error(str.c_str());
01861         PyErr_SetString(PyExc_Exception,str.c_str());
01862         return NULL;
01863     }
01864     catch(...)  // catch the rest!
01865     {
01866         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01867         return NULL;
01868     }
01869 #endif
01870 }
01871 
01872 // setUKnot() callback and implementer
01873 // PyObject*  BSplineSurfacePy::setUKnot(PyObject *args){};
01874 // has to be implemented in BSplineSurfacePyImp.cpp
01875 PyObject * BSplineSurfacePy::staticCallback_setUKnot (PyObject *self, PyObject *args)
01876 {
01877     // test if twin object not allready deleted
01878     if (!((PyObjectBase*) self)->isValid()){
01879         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01880         return NULL;
01881     }
01882 
01883     // test if object is set Const
01884     if (((PyObjectBase*) self)->isConst()){
01885         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01886         return NULL;
01887     }
01888 
01889     try { // catches all exceptions coming up from c++ and generate a python exception
01890         PyObject* ret = ((BSplineSurfacePy*)self)->setUKnot(args);
01891         if (ret != 0)
01892             ((BSplineSurfacePy*)self)->startNotify();
01893         return ret;
01894     }
01895     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01896     {
01897         std::string str;
01898         str += "FreeCAD exception thrown (";
01899         str += e.what();
01900         str += ")";
01901         e.ReportException();
01902         PyErr_SetString(PyExc_Exception,str.c_str());
01903         return NULL;
01904     }
01905     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01906     {
01907         std::string str;
01908         str += "File system exception thrown (";
01909         //str += e.who();
01910         //str += ", ";
01911         str += e.what();
01912         str += ")\n";
01913         Base::Console().Error(str.c_str());
01914         PyErr_SetString(PyExc_Exception,str.c_str());
01915         return NULL;
01916     }
01917     catch(const Py::Exception&)
01918     {
01919         // The exception text is already set
01920         return NULL;
01921     }
01922     catch(const char* e) // catch simple string exceptions
01923     {
01924         Base::Console().Error(e);
01925         PyErr_SetString(PyExc_Exception,e);
01926         return NULL;
01927     }
01928     // in debug not all exceptions will be catched to get the attention of the developer!
01929 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
01930     catch(const std::exception& e) // catch other c++ exceptions
01931     {
01932         std::string str;
01933         str += "FC++ exception thrown (";
01934         str += e.what();
01935         str += ")";
01936         Base::Console().Error(str.c_str());
01937         PyErr_SetString(PyExc_Exception,str.c_str());
01938         return NULL;
01939     }
01940     catch(...)  // catch the rest!
01941     {
01942         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
01943         return NULL;
01944     }
01945 #endif
01946 }
01947 
01948 // setVKnot() callback and implementer
01949 // PyObject*  BSplineSurfacePy::setVKnot(PyObject *args){};
01950 // has to be implemented in BSplineSurfacePyImp.cpp
01951 PyObject * BSplineSurfacePy::staticCallback_setVKnot (PyObject *self, PyObject *args)
01952 {
01953     // test if twin object not allready deleted
01954     if (!((PyObjectBase*) self)->isValid()){
01955         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
01956         return NULL;
01957     }
01958 
01959     // test if object is set Const
01960     if (((PyObjectBase*) self)->isConst()){
01961         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
01962         return NULL;
01963     }
01964 
01965     try { // catches all exceptions coming up from c++ and generate a python exception
01966         PyObject* ret = ((BSplineSurfacePy*)self)->setVKnot(args);
01967         if (ret != 0)
01968             ((BSplineSurfacePy*)self)->startNotify();
01969         return ret;
01970     }
01971     catch(const Base::Exception& e) // catch the FreeCAD exceptions
01972     {
01973         std::string str;
01974         str += "FreeCAD exception thrown (";
01975         str += e.what();
01976         str += ")";
01977         e.ReportException();
01978         PyErr_SetString(PyExc_Exception,str.c_str());
01979         return NULL;
01980     }
01981     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
01982     {
01983         std::string str;
01984         str += "File system exception thrown (";
01985         //str += e.who();
01986         //str += ", ";
01987         str += e.what();
01988         str += ")\n";
01989         Base::Console().Error(str.c_str());
01990         PyErr_SetString(PyExc_Exception,str.c_str());
01991         return NULL;
01992     }
01993     catch(const Py::Exception&)
01994     {
01995         // The exception text is already set
01996         return NULL;
01997     }
01998     catch(const char* e) // catch simple string exceptions
01999     {
02000         Base::Console().Error(e);
02001         PyErr_SetString(PyExc_Exception,e);
02002         return NULL;
02003     }
02004     // in debug not all exceptions will be catched to get the attention of the developer!
02005 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02006     catch(const std::exception& e) // catch other c++ exceptions
02007     {
02008         std::string str;
02009         str += "FC++ exception thrown (";
02010         str += e.what();
02011         str += ")";
02012         Base::Console().Error(str.c_str());
02013         PyErr_SetString(PyExc_Exception,str.c_str());
02014         return NULL;
02015     }
02016     catch(...)  // catch the rest!
02017     {
02018         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02019         return NULL;
02020     }
02021 #endif
02022 }
02023 
02024 // getUKnot() callback and implementer
02025 // PyObject*  BSplineSurfacePy::getUKnot(PyObject *args){};
02026 // has to be implemented in BSplineSurfacePyImp.cpp
02027 PyObject * BSplineSurfacePy::staticCallback_getUKnot (PyObject *self, PyObject *args)
02028 {
02029     // test if twin object not allready deleted
02030     if (!((PyObjectBase*) self)->isValid()){
02031         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02032         return NULL;
02033     }
02034 
02035     // test if object is set Const
02036     if (((PyObjectBase*) self)->isConst()){
02037         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02038         return NULL;
02039     }
02040 
02041     try { // catches all exceptions coming up from c++ and generate a python exception
02042         PyObject* ret = ((BSplineSurfacePy*)self)->getUKnot(args);
02043         if (ret != 0)
02044             ((BSplineSurfacePy*)self)->startNotify();
02045         return ret;
02046     }
02047     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02048     {
02049         std::string str;
02050         str += "FreeCAD exception thrown (";
02051         str += e.what();
02052         str += ")";
02053         e.ReportException();
02054         PyErr_SetString(PyExc_Exception,str.c_str());
02055         return NULL;
02056     }
02057     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02058     {
02059         std::string str;
02060         str += "File system exception thrown (";
02061         //str += e.who();
02062         //str += ", ";
02063         str += e.what();
02064         str += ")\n";
02065         Base::Console().Error(str.c_str());
02066         PyErr_SetString(PyExc_Exception,str.c_str());
02067         return NULL;
02068     }
02069     catch(const Py::Exception&)
02070     {
02071         // The exception text is already set
02072         return NULL;
02073     }
02074     catch(const char* e) // catch simple string exceptions
02075     {
02076         Base::Console().Error(e);
02077         PyErr_SetString(PyExc_Exception,e);
02078         return NULL;
02079     }
02080     // in debug not all exceptions will be catched to get the attention of the developer!
02081 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02082     catch(const std::exception& e) // catch other c++ exceptions
02083     {
02084         std::string str;
02085         str += "FC++ exception thrown (";
02086         str += e.what();
02087         str += ")";
02088         Base::Console().Error(str.c_str());
02089         PyErr_SetString(PyExc_Exception,str.c_str());
02090         return NULL;
02091     }
02092     catch(...)  // catch the rest!
02093     {
02094         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02095         return NULL;
02096     }
02097 #endif
02098 }
02099 
02100 // getVKnot() callback and implementer
02101 // PyObject*  BSplineSurfacePy::getVKnot(PyObject *args){};
02102 // has to be implemented in BSplineSurfacePyImp.cpp
02103 PyObject * BSplineSurfacePy::staticCallback_getVKnot (PyObject *self, PyObject *args)
02104 {
02105     // test if twin object not allready deleted
02106     if (!((PyObjectBase*) self)->isValid()){
02107         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02108         return NULL;
02109     }
02110 
02111     // test if object is set Const
02112     if (((PyObjectBase*) self)->isConst()){
02113         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02114         return NULL;
02115     }
02116 
02117     try { // catches all exceptions coming up from c++ and generate a python exception
02118         PyObject* ret = ((BSplineSurfacePy*)self)->getVKnot(args);
02119         if (ret != 0)
02120             ((BSplineSurfacePy*)self)->startNotify();
02121         return ret;
02122     }
02123     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02124     {
02125         std::string str;
02126         str += "FreeCAD exception thrown (";
02127         str += e.what();
02128         str += ")";
02129         e.ReportException();
02130         PyErr_SetString(PyExc_Exception,str.c_str());
02131         return NULL;
02132     }
02133     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02134     {
02135         std::string str;
02136         str += "File system exception thrown (";
02137         //str += e.who();
02138         //str += ", ";
02139         str += e.what();
02140         str += ")\n";
02141         Base::Console().Error(str.c_str());
02142         PyErr_SetString(PyExc_Exception,str.c_str());
02143         return NULL;
02144     }
02145     catch(const Py::Exception&)
02146     {
02147         // The exception text is already set
02148         return NULL;
02149     }
02150     catch(const char* e) // catch simple string exceptions
02151     {
02152         Base::Console().Error(e);
02153         PyErr_SetString(PyExc_Exception,e);
02154         return NULL;
02155     }
02156     // in debug not all exceptions will be catched to get the attention of the developer!
02157 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02158     catch(const std::exception& e) // catch other c++ exceptions
02159     {
02160         std::string str;
02161         str += "FC++ exception thrown (";
02162         str += e.what();
02163         str += ")";
02164         Base::Console().Error(str.c_str());
02165         PyErr_SetString(PyExc_Exception,str.c_str());
02166         return NULL;
02167     }
02168     catch(...)  // catch the rest!
02169     {
02170         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02171         return NULL;
02172     }
02173 #endif
02174 }
02175 
02176 // setUKnots() callback and implementer
02177 // PyObject*  BSplineSurfacePy::setUKnots(PyObject *args){};
02178 // has to be implemented in BSplineSurfacePyImp.cpp
02179 PyObject * BSplineSurfacePy::staticCallback_setUKnots (PyObject *self, PyObject *args)
02180 {
02181     // test if twin object not allready deleted
02182     if (!((PyObjectBase*) self)->isValid()){
02183         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02184         return NULL;
02185     }
02186 
02187     // test if object is set Const
02188     if (((PyObjectBase*) self)->isConst()){
02189         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02190         return NULL;
02191     }
02192 
02193     try { // catches all exceptions coming up from c++ and generate a python exception
02194         PyObject* ret = ((BSplineSurfacePy*)self)->setUKnots(args);
02195         if (ret != 0)
02196             ((BSplineSurfacePy*)self)->startNotify();
02197         return ret;
02198     }
02199     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02200     {
02201         std::string str;
02202         str += "FreeCAD exception thrown (";
02203         str += e.what();
02204         str += ")";
02205         e.ReportException();
02206         PyErr_SetString(PyExc_Exception,str.c_str());
02207         return NULL;
02208     }
02209     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02210     {
02211         std::string str;
02212         str += "File system exception thrown (";
02213         //str += e.who();
02214         //str += ", ";
02215         str += e.what();
02216         str += ")\n";
02217         Base::Console().Error(str.c_str());
02218         PyErr_SetString(PyExc_Exception,str.c_str());
02219         return NULL;
02220     }
02221     catch(const Py::Exception&)
02222     {
02223         // The exception text is already set
02224         return NULL;
02225     }
02226     catch(const char* e) // catch simple string exceptions
02227     {
02228         Base::Console().Error(e);
02229         PyErr_SetString(PyExc_Exception,e);
02230         return NULL;
02231     }
02232     // in debug not all exceptions will be catched to get the attention of the developer!
02233 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02234     catch(const std::exception& e) // catch other c++ exceptions
02235     {
02236         std::string str;
02237         str += "FC++ exception thrown (";
02238         str += e.what();
02239         str += ")";
02240         Base::Console().Error(str.c_str());
02241         PyErr_SetString(PyExc_Exception,str.c_str());
02242         return NULL;
02243     }
02244     catch(...)  // catch the rest!
02245     {
02246         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02247         return NULL;
02248     }
02249 #endif
02250 }
02251 
02252 // setVKnots() callback and implementer
02253 // PyObject*  BSplineSurfacePy::setVKnots(PyObject *args){};
02254 // has to be implemented in BSplineSurfacePyImp.cpp
02255 PyObject * BSplineSurfacePy::staticCallback_setVKnots (PyObject *self, PyObject *args)
02256 {
02257     // test if twin object not allready deleted
02258     if (!((PyObjectBase*) self)->isValid()){
02259         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02260         return NULL;
02261     }
02262 
02263     // test if object is set Const
02264     if (((PyObjectBase*) self)->isConst()){
02265         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02266         return NULL;
02267     }
02268 
02269     try { // catches all exceptions coming up from c++ and generate a python exception
02270         PyObject* ret = ((BSplineSurfacePy*)self)->setVKnots(args);
02271         if (ret != 0)
02272             ((BSplineSurfacePy*)self)->startNotify();
02273         return ret;
02274     }
02275     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02276     {
02277         std::string str;
02278         str += "FreeCAD exception thrown (";
02279         str += e.what();
02280         str += ")";
02281         e.ReportException();
02282         PyErr_SetString(PyExc_Exception,str.c_str());
02283         return NULL;
02284     }
02285     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02286     {
02287         std::string str;
02288         str += "File system exception thrown (";
02289         //str += e.who();
02290         //str += ", ";
02291         str += e.what();
02292         str += ")\n";
02293         Base::Console().Error(str.c_str());
02294         PyErr_SetString(PyExc_Exception,str.c_str());
02295         return NULL;
02296     }
02297     catch(const Py::Exception&)
02298     {
02299         // The exception text is already set
02300         return NULL;
02301     }
02302     catch(const char* e) // catch simple string exceptions
02303     {
02304         Base::Console().Error(e);
02305         PyErr_SetString(PyExc_Exception,e);
02306         return NULL;
02307     }
02308     // in debug not all exceptions will be catched to get the attention of the developer!
02309 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02310     catch(const std::exception& e) // catch other c++ exceptions
02311     {
02312         std::string str;
02313         str += "FC++ exception thrown (";
02314         str += e.what();
02315         str += ")";
02316         Base::Console().Error(str.c_str());
02317         PyErr_SetString(PyExc_Exception,str.c_str());
02318         return NULL;
02319     }
02320     catch(...)  // catch the rest!
02321     {
02322         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02323         return NULL;
02324     }
02325 #endif
02326 }
02327 
02328 // getUKnots() callback and implementer
02329 // PyObject*  BSplineSurfacePy::getUKnots(PyObject *args){};
02330 // has to be implemented in BSplineSurfacePyImp.cpp
02331 PyObject * BSplineSurfacePy::staticCallback_getUKnots (PyObject *self, PyObject *args)
02332 {
02333     // test if twin object not allready deleted
02334     if (!((PyObjectBase*) self)->isValid()){
02335         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02336         return NULL;
02337     }
02338 
02339     // test if object is set Const
02340     if (((PyObjectBase*) self)->isConst()){
02341         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02342         return NULL;
02343     }
02344 
02345     try { // catches all exceptions coming up from c++ and generate a python exception
02346         PyObject* ret = ((BSplineSurfacePy*)self)->getUKnots(args);
02347         if (ret != 0)
02348             ((BSplineSurfacePy*)self)->startNotify();
02349         return ret;
02350     }
02351     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02352     {
02353         std::string str;
02354         str += "FreeCAD exception thrown (";
02355         str += e.what();
02356         str += ")";
02357         e.ReportException();
02358         PyErr_SetString(PyExc_Exception,str.c_str());
02359         return NULL;
02360     }
02361     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02362     {
02363         std::string str;
02364         str += "File system exception thrown (";
02365         //str += e.who();
02366         //str += ", ";
02367         str += e.what();
02368         str += ")\n";
02369         Base::Console().Error(str.c_str());
02370         PyErr_SetString(PyExc_Exception,str.c_str());
02371         return NULL;
02372     }
02373     catch(const Py::Exception&)
02374     {
02375         // The exception text is already set
02376         return NULL;
02377     }
02378     catch(const char* e) // catch simple string exceptions
02379     {
02380         Base::Console().Error(e);
02381         PyErr_SetString(PyExc_Exception,e);
02382         return NULL;
02383     }
02384     // in debug not all exceptions will be catched to get the attention of the developer!
02385 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02386     catch(const std::exception& e) // catch other c++ exceptions
02387     {
02388         std::string str;
02389         str += "FC++ exception thrown (";
02390         str += e.what();
02391         str += ")";
02392         Base::Console().Error(str.c_str());
02393         PyErr_SetString(PyExc_Exception,str.c_str());
02394         return NULL;
02395     }
02396     catch(...)  // catch the rest!
02397     {
02398         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02399         return NULL;
02400     }
02401 #endif
02402 }
02403 
02404 // getVKnots() callback and implementer
02405 // PyObject*  BSplineSurfacePy::getVKnots(PyObject *args){};
02406 // has to be implemented in BSplineSurfacePyImp.cpp
02407 PyObject * BSplineSurfacePy::staticCallback_getVKnots (PyObject *self, PyObject *args)
02408 {
02409     // test if twin object not allready deleted
02410     if (!((PyObjectBase*) self)->isValid()){
02411         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02412         return NULL;
02413     }
02414 
02415     // test if object is set Const
02416     if (((PyObjectBase*) self)->isConst()){
02417         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02418         return NULL;
02419     }
02420 
02421     try { // catches all exceptions coming up from c++ and generate a python exception
02422         PyObject* ret = ((BSplineSurfacePy*)self)->getVKnots(args);
02423         if (ret != 0)
02424             ((BSplineSurfacePy*)self)->startNotify();
02425         return ret;
02426     }
02427     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02428     {
02429         std::string str;
02430         str += "FreeCAD exception thrown (";
02431         str += e.what();
02432         str += ")";
02433         e.ReportException();
02434         PyErr_SetString(PyExc_Exception,str.c_str());
02435         return NULL;
02436     }
02437     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02438     {
02439         std::string str;
02440         str += "File system exception thrown (";
02441         //str += e.who();
02442         //str += ", ";
02443         str += e.what();
02444         str += ")\n";
02445         Base::Console().Error(str.c_str());
02446         PyErr_SetString(PyExc_Exception,str.c_str());
02447         return NULL;
02448     }
02449     catch(const Py::Exception&)
02450     {
02451         // The exception text is already set
02452         return NULL;
02453     }
02454     catch(const char* e) // catch simple string exceptions
02455     {
02456         Base::Console().Error(e);
02457         PyErr_SetString(PyExc_Exception,e);
02458         return NULL;
02459     }
02460     // in debug not all exceptions will be catched to get the attention of the developer!
02461 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02462     catch(const std::exception& e) // catch other c++ exceptions
02463     {
02464         std::string str;
02465         str += "FC++ exception thrown (";
02466         str += e.what();
02467         str += ")";
02468         Base::Console().Error(str.c_str());
02469         PyErr_SetString(PyExc_Exception,str.c_str());
02470         return NULL;
02471     }
02472     catch(...)  // catch the rest!
02473     {
02474         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02475         return NULL;
02476     }
02477 #endif
02478 }
02479 
02480 // setPole() callback and implementer
02481 // PyObject*  BSplineSurfacePy::setPole(PyObject *args){};
02482 // has to be implemented in BSplineSurfacePyImp.cpp
02483 PyObject * BSplineSurfacePy::staticCallback_setPole (PyObject *self, PyObject *args)
02484 {
02485     // test if twin object not allready deleted
02486     if (!((PyObjectBase*) self)->isValid()){
02487         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02488         return NULL;
02489     }
02490 
02491     // test if object is set Const
02492     if (((PyObjectBase*) self)->isConst()){
02493         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02494         return NULL;
02495     }
02496 
02497     try { // catches all exceptions coming up from c++ and generate a python exception
02498         PyObject* ret = ((BSplineSurfacePy*)self)->setPole(args);
02499         if (ret != 0)
02500             ((BSplineSurfacePy*)self)->startNotify();
02501         return ret;
02502     }
02503     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02504     {
02505         std::string str;
02506         str += "FreeCAD exception thrown (";
02507         str += e.what();
02508         str += ")";
02509         e.ReportException();
02510         PyErr_SetString(PyExc_Exception,str.c_str());
02511         return NULL;
02512     }
02513     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02514     {
02515         std::string str;
02516         str += "File system exception thrown (";
02517         //str += e.who();
02518         //str += ", ";
02519         str += e.what();
02520         str += ")\n";
02521         Base::Console().Error(str.c_str());
02522         PyErr_SetString(PyExc_Exception,str.c_str());
02523         return NULL;
02524     }
02525     catch(const Py::Exception&)
02526     {
02527         // The exception text is already set
02528         return NULL;
02529     }
02530     catch(const char* e) // catch simple string exceptions
02531     {
02532         Base::Console().Error(e);
02533         PyErr_SetString(PyExc_Exception,e);
02534         return NULL;
02535     }
02536     // in debug not all exceptions will be catched to get the attention of the developer!
02537 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02538     catch(const std::exception& e) // catch other c++ exceptions
02539     {
02540         std::string str;
02541         str += "FC++ exception thrown (";
02542         str += e.what();
02543         str += ")";
02544         Base::Console().Error(str.c_str());
02545         PyErr_SetString(PyExc_Exception,str.c_str());
02546         return NULL;
02547     }
02548     catch(...)  // catch the rest!
02549     {
02550         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02551         return NULL;
02552     }
02553 #endif
02554 }
02555 
02556 // setPoleCol() callback and implementer
02557 // PyObject*  BSplineSurfacePy::setPoleCol(PyObject *args){};
02558 // has to be implemented in BSplineSurfacePyImp.cpp
02559 PyObject * BSplineSurfacePy::staticCallback_setPoleCol (PyObject *self, PyObject *args)
02560 {
02561     // test if twin object not allready deleted
02562     if (!((PyObjectBase*) self)->isValid()){
02563         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02564         return NULL;
02565     }
02566 
02567     // test if object is set Const
02568     if (((PyObjectBase*) self)->isConst()){
02569         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02570         return NULL;
02571     }
02572 
02573     try { // catches all exceptions coming up from c++ and generate a python exception
02574         PyObject* ret = ((BSplineSurfacePy*)self)->setPoleCol(args);
02575         if (ret != 0)
02576             ((BSplineSurfacePy*)self)->startNotify();
02577         return ret;
02578     }
02579     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02580     {
02581         std::string str;
02582         str += "FreeCAD exception thrown (";
02583         str += e.what();
02584         str += ")";
02585         e.ReportException();
02586         PyErr_SetString(PyExc_Exception,str.c_str());
02587         return NULL;
02588     }
02589     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02590     {
02591         std::string str;
02592         str += "File system exception thrown (";
02593         //str += e.who();
02594         //str += ", ";
02595         str += e.what();
02596         str += ")\n";
02597         Base::Console().Error(str.c_str());
02598         PyErr_SetString(PyExc_Exception,str.c_str());
02599         return NULL;
02600     }
02601     catch(const Py::Exception&)
02602     {
02603         // The exception text is already set
02604         return NULL;
02605     }
02606     catch(const char* e) // catch simple string exceptions
02607     {
02608         Base::Console().Error(e);
02609         PyErr_SetString(PyExc_Exception,e);
02610         return NULL;
02611     }
02612     // in debug not all exceptions will be catched to get the attention of the developer!
02613 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02614     catch(const std::exception& e) // catch other c++ exceptions
02615     {
02616         std::string str;
02617         str += "FC++ exception thrown (";
02618         str += e.what();
02619         str += ")";
02620         Base::Console().Error(str.c_str());
02621         PyErr_SetString(PyExc_Exception,str.c_str());
02622         return NULL;
02623     }
02624     catch(...)  // catch the rest!
02625     {
02626         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02627         return NULL;
02628     }
02629 #endif
02630 }
02631 
02632 // setPoleRow() callback and implementer
02633 // PyObject*  BSplineSurfacePy::setPoleRow(PyObject *args){};
02634 // has to be implemented in BSplineSurfacePyImp.cpp
02635 PyObject * BSplineSurfacePy::staticCallback_setPoleRow (PyObject *self, PyObject *args)
02636 {
02637     // test if twin object not allready deleted
02638     if (!((PyObjectBase*) self)->isValid()){
02639         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02640         return NULL;
02641     }
02642 
02643     // test if object is set Const
02644     if (((PyObjectBase*) self)->isConst()){
02645         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02646         return NULL;
02647     }
02648 
02649     try { // catches all exceptions coming up from c++ and generate a python exception
02650         PyObject* ret = ((BSplineSurfacePy*)self)->setPoleRow(args);
02651         if (ret != 0)
02652             ((BSplineSurfacePy*)self)->startNotify();
02653         return ret;
02654     }
02655     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02656     {
02657         std::string str;
02658         str += "FreeCAD exception thrown (";
02659         str += e.what();
02660         str += ")";
02661         e.ReportException();
02662         PyErr_SetString(PyExc_Exception,str.c_str());
02663         return NULL;
02664     }
02665     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02666     {
02667         std::string str;
02668         str += "File system exception thrown (";
02669         //str += e.who();
02670         //str += ", ";
02671         str += e.what();
02672         str += ")\n";
02673         Base::Console().Error(str.c_str());
02674         PyErr_SetString(PyExc_Exception,str.c_str());
02675         return NULL;
02676     }
02677     catch(const Py::Exception&)
02678     {
02679         // The exception text is already set
02680         return NULL;
02681     }
02682     catch(const char* e) // catch simple string exceptions
02683     {
02684         Base::Console().Error(e);
02685         PyErr_SetString(PyExc_Exception,e);
02686         return NULL;
02687     }
02688     // in debug not all exceptions will be catched to get the attention of the developer!
02689 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02690     catch(const std::exception& e) // catch other c++ exceptions
02691     {
02692         std::string str;
02693         str += "FC++ exception thrown (";
02694         str += e.what();
02695         str += ")";
02696         Base::Console().Error(str.c_str());
02697         PyErr_SetString(PyExc_Exception,str.c_str());
02698         return NULL;
02699     }
02700     catch(...)  // catch the rest!
02701     {
02702         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02703         return NULL;
02704     }
02705 #endif
02706 }
02707 
02708 // getPole() callback and implementer
02709 // PyObject*  BSplineSurfacePy::getPole(PyObject *args){};
02710 // has to be implemented in BSplineSurfacePyImp.cpp
02711 PyObject * BSplineSurfacePy::staticCallback_getPole (PyObject *self, PyObject *args)
02712 {
02713     // test if twin object not allready deleted
02714     if (!((PyObjectBase*) self)->isValid()){
02715         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02716         return NULL;
02717     }
02718 
02719     // test if object is set Const
02720     if (((PyObjectBase*) self)->isConst()){
02721         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02722         return NULL;
02723     }
02724 
02725     try { // catches all exceptions coming up from c++ and generate a python exception
02726         PyObject* ret = ((BSplineSurfacePy*)self)->getPole(args);
02727         if (ret != 0)
02728             ((BSplineSurfacePy*)self)->startNotify();
02729         return ret;
02730     }
02731     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02732     {
02733         std::string str;
02734         str += "FreeCAD exception thrown (";
02735         str += e.what();
02736         str += ")";
02737         e.ReportException();
02738         PyErr_SetString(PyExc_Exception,str.c_str());
02739         return NULL;
02740     }
02741     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02742     {
02743         std::string str;
02744         str += "File system exception thrown (";
02745         //str += e.who();
02746         //str += ", ";
02747         str += e.what();
02748         str += ")\n";
02749         Base::Console().Error(str.c_str());
02750         PyErr_SetString(PyExc_Exception,str.c_str());
02751         return NULL;
02752     }
02753     catch(const Py::Exception&)
02754     {
02755         // The exception text is already set
02756         return NULL;
02757     }
02758     catch(const char* e) // catch simple string exceptions
02759     {
02760         Base::Console().Error(e);
02761         PyErr_SetString(PyExc_Exception,e);
02762         return NULL;
02763     }
02764     // in debug not all exceptions will be catched to get the attention of the developer!
02765 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02766     catch(const std::exception& e) // catch other c++ exceptions
02767     {
02768         std::string str;
02769         str += "FC++ exception thrown (";
02770         str += e.what();
02771         str += ")";
02772         Base::Console().Error(str.c_str());
02773         PyErr_SetString(PyExc_Exception,str.c_str());
02774         return NULL;
02775     }
02776     catch(...)  // catch the rest!
02777     {
02778         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02779         return NULL;
02780     }
02781 #endif
02782 }
02783 
02784 // getPoles() callback and implementer
02785 // PyObject*  BSplineSurfacePy::getPoles(PyObject *args){};
02786 // has to be implemented in BSplineSurfacePyImp.cpp
02787 PyObject * BSplineSurfacePy::staticCallback_getPoles (PyObject *self, PyObject *args)
02788 {
02789     // test if twin object not allready deleted
02790     if (!((PyObjectBase*) self)->isValid()){
02791         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02792         return NULL;
02793     }
02794 
02795     // test if object is set Const
02796     if (((PyObjectBase*) self)->isConst()){
02797         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02798         return NULL;
02799     }
02800 
02801     try { // catches all exceptions coming up from c++ and generate a python exception
02802         PyObject* ret = ((BSplineSurfacePy*)self)->getPoles(args);
02803         if (ret != 0)
02804             ((BSplineSurfacePy*)self)->startNotify();
02805         return ret;
02806     }
02807     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02808     {
02809         std::string str;
02810         str += "FreeCAD exception thrown (";
02811         str += e.what();
02812         str += ")";
02813         e.ReportException();
02814         PyErr_SetString(PyExc_Exception,str.c_str());
02815         return NULL;
02816     }
02817     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02818     {
02819         std::string str;
02820         str += "File system exception thrown (";
02821         //str += e.who();
02822         //str += ", ";
02823         str += e.what();
02824         str += ")\n";
02825         Base::Console().Error(str.c_str());
02826         PyErr_SetString(PyExc_Exception,str.c_str());
02827         return NULL;
02828     }
02829     catch(const Py::Exception&)
02830     {
02831         // The exception text is already set
02832         return NULL;
02833     }
02834     catch(const char* e) // catch simple string exceptions
02835     {
02836         Base::Console().Error(e);
02837         PyErr_SetString(PyExc_Exception,e);
02838         return NULL;
02839     }
02840     // in debug not all exceptions will be catched to get the attention of the developer!
02841 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02842     catch(const std::exception& e) // catch other c++ exceptions
02843     {
02844         std::string str;
02845         str += "FC++ exception thrown (";
02846         str += e.what();
02847         str += ")";
02848         Base::Console().Error(str.c_str());
02849         PyErr_SetString(PyExc_Exception,str.c_str());
02850         return NULL;
02851     }
02852     catch(...)  // catch the rest!
02853     {
02854         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02855         return NULL;
02856     }
02857 #endif
02858 }
02859 
02860 // setWeight() callback and implementer
02861 // PyObject*  BSplineSurfacePy::setWeight(PyObject *args){};
02862 // has to be implemented in BSplineSurfacePyImp.cpp
02863 PyObject * BSplineSurfacePy::staticCallback_setWeight (PyObject *self, PyObject *args)
02864 {
02865     // test if twin object not allready deleted
02866     if (!((PyObjectBase*) self)->isValid()){
02867         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02868         return NULL;
02869     }
02870 
02871     // test if object is set Const
02872     if (((PyObjectBase*) self)->isConst()){
02873         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02874         return NULL;
02875     }
02876 
02877     try { // catches all exceptions coming up from c++ and generate a python exception
02878         PyObject* ret = ((BSplineSurfacePy*)self)->setWeight(args);
02879         if (ret != 0)
02880             ((BSplineSurfacePy*)self)->startNotify();
02881         return ret;
02882     }
02883     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02884     {
02885         std::string str;
02886         str += "FreeCAD exception thrown (";
02887         str += e.what();
02888         str += ")";
02889         e.ReportException();
02890         PyErr_SetString(PyExc_Exception,str.c_str());
02891         return NULL;
02892     }
02893     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02894     {
02895         std::string str;
02896         str += "File system exception thrown (";
02897         //str += e.who();
02898         //str += ", ";
02899         str += e.what();
02900         str += ")\n";
02901         Base::Console().Error(str.c_str());
02902         PyErr_SetString(PyExc_Exception,str.c_str());
02903         return NULL;
02904     }
02905     catch(const Py::Exception&)
02906     {
02907         // The exception text is already set
02908         return NULL;
02909     }
02910     catch(const char* e) // catch simple string exceptions
02911     {
02912         Base::Console().Error(e);
02913         PyErr_SetString(PyExc_Exception,e);
02914         return NULL;
02915     }
02916     // in debug not all exceptions will be catched to get the attention of the developer!
02917 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02918     catch(const std::exception& e) // catch other c++ exceptions
02919     {
02920         std::string str;
02921         str += "FC++ exception thrown (";
02922         str += e.what();
02923         str += ")";
02924         Base::Console().Error(str.c_str());
02925         PyErr_SetString(PyExc_Exception,str.c_str());
02926         return NULL;
02927     }
02928     catch(...)  // catch the rest!
02929     {
02930         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
02931         return NULL;
02932     }
02933 #endif
02934 }
02935 
02936 // setWeightCol() callback and implementer
02937 // PyObject*  BSplineSurfacePy::setWeightCol(PyObject *args){};
02938 // has to be implemented in BSplineSurfacePyImp.cpp
02939 PyObject * BSplineSurfacePy::staticCallback_setWeightCol (PyObject *self, PyObject *args)
02940 {
02941     // test if twin object not allready deleted
02942     if (!((PyObjectBase*) self)->isValid()){
02943         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
02944         return NULL;
02945     }
02946 
02947     // test if object is set Const
02948     if (((PyObjectBase*) self)->isConst()){
02949         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
02950         return NULL;
02951     }
02952 
02953     try { // catches all exceptions coming up from c++ and generate a python exception
02954         PyObject* ret = ((BSplineSurfacePy*)self)->setWeightCol(args);
02955         if (ret != 0)
02956             ((BSplineSurfacePy*)self)->startNotify();
02957         return ret;
02958     }
02959     catch(const Base::Exception& e) // catch the FreeCAD exceptions
02960     {
02961         std::string str;
02962         str += "FreeCAD exception thrown (";
02963         str += e.what();
02964         str += ")";
02965         e.ReportException();
02966         PyErr_SetString(PyExc_Exception,str.c_str());
02967         return NULL;
02968     }
02969     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
02970     {
02971         std::string str;
02972         str += "File system exception thrown (";
02973         //str += e.who();
02974         //str += ", ";
02975         str += e.what();
02976         str += ")\n";
02977         Base::Console().Error(str.c_str());
02978         PyErr_SetString(PyExc_Exception,str.c_str());
02979         return NULL;
02980     }
02981     catch(const Py::Exception&)
02982     {
02983         // The exception text is already set
02984         return NULL;
02985     }
02986     catch(const char* e) // catch simple string exceptions
02987     {
02988         Base::Console().Error(e);
02989         PyErr_SetString(PyExc_Exception,e);
02990         return NULL;
02991     }
02992     // in debug not all exceptions will be catched to get the attention of the developer!
02993 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
02994     catch(const std::exception& e) // catch other c++ exceptions
02995     {
02996         std::string str;
02997         str += "FC++ exception thrown (";
02998         str += e.what();
02999         str += ")";
03000         Base::Console().Error(str.c_str());
03001         PyErr_SetString(PyExc_Exception,str.c_str());
03002         return NULL;
03003     }
03004     catch(...)  // catch the rest!
03005     {
03006         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03007         return NULL;
03008     }
03009 #endif
03010 }
03011 
03012 // setWeightRow() callback and implementer
03013 // PyObject*  BSplineSurfacePy::setWeightRow(PyObject *args){};
03014 // has to be implemented in BSplineSurfacePyImp.cpp
03015 PyObject * BSplineSurfacePy::staticCallback_setWeightRow (PyObject *self, PyObject *args)
03016 {
03017     // test if twin object not allready deleted
03018     if (!((PyObjectBase*) self)->isValid()){
03019         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03020         return NULL;
03021     }
03022 
03023     // test if object is set Const
03024     if (((PyObjectBase*) self)->isConst()){
03025         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03026         return NULL;
03027     }
03028 
03029     try { // catches all exceptions coming up from c++ and generate a python exception
03030         PyObject* ret = ((BSplineSurfacePy*)self)->setWeightRow(args);
03031         if (ret != 0)
03032             ((BSplineSurfacePy*)self)->startNotify();
03033         return ret;
03034     }
03035     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03036     {
03037         std::string str;
03038         str += "FreeCAD exception thrown (";
03039         str += e.what();
03040         str += ")";
03041         e.ReportException();
03042         PyErr_SetString(PyExc_Exception,str.c_str());
03043         return NULL;
03044     }
03045     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03046     {
03047         std::string str;
03048         str += "File system exception thrown (";
03049         //str += e.who();
03050         //str += ", ";
03051         str += e.what();
03052         str += ")\n";
03053         Base::Console().Error(str.c_str());
03054         PyErr_SetString(PyExc_Exception,str.c_str());
03055         return NULL;
03056     }
03057     catch(const Py::Exception&)
03058     {
03059         // The exception text is already set
03060         return NULL;
03061     }
03062     catch(const char* e) // catch simple string exceptions
03063     {
03064         Base::Console().Error(e);
03065         PyErr_SetString(PyExc_Exception,e);
03066         return NULL;
03067     }
03068     // in debug not all exceptions will be catched to get the attention of the developer!
03069 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03070     catch(const std::exception& e) // catch other c++ exceptions
03071     {
03072         std::string str;
03073         str += "FC++ exception thrown (";
03074         str += e.what();
03075         str += ")";
03076         Base::Console().Error(str.c_str());
03077         PyErr_SetString(PyExc_Exception,str.c_str());
03078         return NULL;
03079     }
03080     catch(...)  // catch the rest!
03081     {
03082         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03083         return NULL;
03084     }
03085 #endif
03086 }
03087 
03088 // getWeight() callback and implementer
03089 // PyObject*  BSplineSurfacePy::getWeight(PyObject *args){};
03090 // has to be implemented in BSplineSurfacePyImp.cpp
03091 PyObject * BSplineSurfacePy::staticCallback_getWeight (PyObject *self, PyObject *args)
03092 {
03093     // test if twin object not allready deleted
03094     if (!((PyObjectBase*) self)->isValid()){
03095         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03096         return NULL;
03097     }
03098 
03099     // test if object is set Const
03100     if (((PyObjectBase*) self)->isConst()){
03101         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03102         return NULL;
03103     }
03104 
03105     try { // catches all exceptions coming up from c++ and generate a python exception
03106         PyObject* ret = ((BSplineSurfacePy*)self)->getWeight(args);
03107         if (ret != 0)
03108             ((BSplineSurfacePy*)self)->startNotify();
03109         return ret;
03110     }
03111     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03112     {
03113         std::string str;
03114         str += "FreeCAD exception thrown (";
03115         str += e.what();
03116         str += ")";
03117         e.ReportException();
03118         PyErr_SetString(PyExc_Exception,str.c_str());
03119         return NULL;
03120     }
03121     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03122     {
03123         std::string str;
03124         str += "File system exception thrown (";
03125         //str += e.who();
03126         //str += ", ";
03127         str += e.what();
03128         str += ")\n";
03129         Base::Console().Error(str.c_str());
03130         PyErr_SetString(PyExc_Exception,str.c_str());
03131         return NULL;
03132     }
03133     catch(const Py::Exception&)
03134     {
03135         // The exception text is already set
03136         return NULL;
03137     }
03138     catch(const char* e) // catch simple string exceptions
03139     {
03140         Base::Console().Error(e);
03141         PyErr_SetString(PyExc_Exception,e);
03142         return NULL;
03143     }
03144     // in debug not all exceptions will be catched to get the attention of the developer!
03145 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03146     catch(const std::exception& e) // catch other c++ exceptions
03147     {
03148         std::string str;
03149         str += "FC++ exception thrown (";
03150         str += e.what();
03151         str += ")";
03152         Base::Console().Error(str.c_str());
03153         PyErr_SetString(PyExc_Exception,str.c_str());
03154         return NULL;
03155     }
03156     catch(...)  // catch the rest!
03157     {
03158         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03159         return NULL;
03160     }
03161 #endif
03162 }
03163 
03164 // getWeights() callback and implementer
03165 // PyObject*  BSplineSurfacePy::getWeights(PyObject *args){};
03166 // has to be implemented in BSplineSurfacePyImp.cpp
03167 PyObject * BSplineSurfacePy::staticCallback_getWeights (PyObject *self, PyObject *args)
03168 {
03169     // test if twin object not allready deleted
03170     if (!((PyObjectBase*) self)->isValid()){
03171         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03172         return NULL;
03173     }
03174 
03175     // test if object is set Const
03176     if (((PyObjectBase*) self)->isConst()){
03177         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03178         return NULL;
03179     }
03180 
03181     try { // catches all exceptions coming up from c++ and generate a python exception
03182         PyObject* ret = ((BSplineSurfacePy*)self)->getWeights(args);
03183         if (ret != 0)
03184             ((BSplineSurfacePy*)self)->startNotify();
03185         return ret;
03186     }
03187     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03188     {
03189         std::string str;
03190         str += "FreeCAD exception thrown (";
03191         str += e.what();
03192         str += ")";
03193         e.ReportException();
03194         PyErr_SetString(PyExc_Exception,str.c_str());
03195         return NULL;
03196     }
03197     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03198     {
03199         std::string str;
03200         str += "File system exception thrown (";
03201         //str += e.who();
03202         //str += ", ";
03203         str += e.what();
03204         str += ")\n";
03205         Base::Console().Error(str.c_str());
03206         PyErr_SetString(PyExc_Exception,str.c_str());
03207         return NULL;
03208     }
03209     catch(const Py::Exception&)
03210     {
03211         // The exception text is already set
03212         return NULL;
03213     }
03214     catch(const char* e) // catch simple string exceptions
03215     {
03216         Base::Console().Error(e);
03217         PyErr_SetString(PyExc_Exception,e);
03218         return NULL;
03219     }
03220     // in debug not all exceptions will be catched to get the attention of the developer!
03221 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03222     catch(const std::exception& e) // catch other c++ exceptions
03223     {
03224         std::string str;
03225         str += "FC++ exception thrown (";
03226         str += e.what();
03227         str += ")";
03228         Base::Console().Error(str.c_str());
03229         PyErr_SetString(PyExc_Exception,str.c_str());
03230         return NULL;
03231     }
03232     catch(...)  // catch the rest!
03233     {
03234         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03235         return NULL;
03236     }
03237 #endif
03238 }
03239 
03240 // getResolution() callback and implementer
03241 // PyObject*  BSplineSurfacePy::getResolution(PyObject *args){};
03242 // has to be implemented in BSplineSurfacePyImp.cpp
03243 PyObject * BSplineSurfacePy::staticCallback_getResolution (PyObject *self, PyObject *args)
03244 {
03245     // test if twin object not allready deleted
03246     if (!((PyObjectBase*) self)->isValid()){
03247         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03248         return NULL;
03249     }
03250 
03251 
03252     try { // catches all exceptions coming up from c++ and generate a python exception
03253         PyObject* ret = ((BSplineSurfacePy*)self)->getResolution(args);
03254         return ret;
03255     }
03256     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03257     {
03258         std::string str;
03259         str += "FreeCAD exception thrown (";
03260         str += e.what();
03261         str += ")";
03262         e.ReportException();
03263         PyErr_SetString(PyExc_Exception,str.c_str());
03264         return NULL;
03265     }
03266     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03267     {
03268         std::string str;
03269         str += "File system exception thrown (";
03270         //str += e.who();
03271         //str += ", ";
03272         str += e.what();
03273         str += ")\n";
03274         Base::Console().Error(str.c_str());
03275         PyErr_SetString(PyExc_Exception,str.c_str());
03276         return NULL;
03277     }
03278     catch(const Py::Exception&)
03279     {
03280         // The exception text is already set
03281         return NULL;
03282     }
03283     catch(const char* e) // catch simple string exceptions
03284     {
03285         Base::Console().Error(e);
03286         PyErr_SetString(PyExc_Exception,e);
03287         return NULL;
03288     }
03289     // in debug not all exceptions will be catched to get the attention of the developer!
03290 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03291     catch(const std::exception& e) // catch other c++ exceptions
03292     {
03293         std::string str;
03294         str += "FC++ exception thrown (";
03295         str += e.what();
03296         str += ")";
03297         Base::Console().Error(str.c_str());
03298         PyErr_SetString(PyExc_Exception,str.c_str());
03299         return NULL;
03300     }
03301     catch(...)  // catch the rest!
03302     {
03303         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03304         return NULL;
03305     }
03306 #endif
03307 }
03308 
03309 // movePoint() callback and implementer
03310 // PyObject*  BSplineSurfacePy::movePoint(PyObject *args){};
03311 // has to be implemented in BSplineSurfacePyImp.cpp
03312 PyObject * BSplineSurfacePy::staticCallback_movePoint (PyObject *self, PyObject *args)
03313 {
03314     // test if twin object not allready deleted
03315     if (!((PyObjectBase*) self)->isValid()){
03316         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03317         return NULL;
03318     }
03319 
03320     // test if object is set Const
03321     if (((PyObjectBase*) self)->isConst()){
03322         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03323         return NULL;
03324     }
03325 
03326     try { // catches all exceptions coming up from c++ and generate a python exception
03327         PyObject* ret = ((BSplineSurfacePy*)self)->movePoint(args);
03328         if (ret != 0)
03329             ((BSplineSurfacePy*)self)->startNotify();
03330         return ret;
03331     }
03332     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03333     {
03334         std::string str;
03335         str += "FreeCAD exception thrown (";
03336         str += e.what();
03337         str += ")";
03338         e.ReportException();
03339         PyErr_SetString(PyExc_Exception,str.c_str());
03340         return NULL;
03341     }
03342     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03343     {
03344         std::string str;
03345         str += "File system exception thrown (";
03346         //str += e.who();
03347         //str += ", ";
03348         str += e.what();
03349         str += ")\n";
03350         Base::Console().Error(str.c_str());
03351         PyErr_SetString(PyExc_Exception,str.c_str());
03352         return NULL;
03353     }
03354     catch(const Py::Exception&)
03355     {
03356         // The exception text is already set
03357         return NULL;
03358     }
03359     catch(const char* e) // catch simple string exceptions
03360     {
03361         Base::Console().Error(e);
03362         PyErr_SetString(PyExc_Exception,e);
03363         return NULL;
03364     }
03365     // in debug not all exceptions will be catched to get the attention of the developer!
03366 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03367     catch(const std::exception& e) // catch other c++ exceptions
03368     {
03369         std::string str;
03370         str += "FC++ exception thrown (";
03371         str += e.what();
03372         str += ")";
03373         Base::Console().Error(str.c_str());
03374         PyErr_SetString(PyExc_Exception,str.c_str());
03375         return NULL;
03376     }
03377     catch(...)  // catch the rest!
03378     {
03379         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03380         return NULL;
03381     }
03382 #endif
03383 }
03384 
03385 // setUNotPeriodic() callback and implementer
03386 // PyObject*  BSplineSurfacePy::setUNotPeriodic(PyObject *args){};
03387 // has to be implemented in BSplineSurfacePyImp.cpp
03388 PyObject * BSplineSurfacePy::staticCallback_setUNotPeriodic (PyObject *self, PyObject *args)
03389 {
03390     // test if twin object not allready deleted
03391     if (!((PyObjectBase*) self)->isValid()){
03392         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03393         return NULL;
03394     }
03395 
03396     // test if object is set Const
03397     if (((PyObjectBase*) self)->isConst()){
03398         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03399         return NULL;
03400     }
03401 
03402     try { // catches all exceptions coming up from c++ and generate a python exception
03403         PyObject* ret = ((BSplineSurfacePy*)self)->setUNotPeriodic(args);
03404         if (ret != 0)
03405             ((BSplineSurfacePy*)self)->startNotify();
03406         return ret;
03407     }
03408     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03409     {
03410         std::string str;
03411         str += "FreeCAD exception thrown (";
03412         str += e.what();
03413         str += ")";
03414         e.ReportException();
03415         PyErr_SetString(PyExc_Exception,str.c_str());
03416         return NULL;
03417     }
03418     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03419     {
03420         std::string str;
03421         str += "File system exception thrown (";
03422         //str += e.who();
03423         //str += ", ";
03424         str += e.what();
03425         str += ")\n";
03426         Base::Console().Error(str.c_str());
03427         PyErr_SetString(PyExc_Exception,str.c_str());
03428         return NULL;
03429     }
03430     catch(const Py::Exception&)
03431     {
03432         // The exception text is already set
03433         return NULL;
03434     }
03435     catch(const char* e) // catch simple string exceptions
03436     {
03437         Base::Console().Error(e);
03438         PyErr_SetString(PyExc_Exception,e);
03439         return NULL;
03440     }
03441     // in debug not all exceptions will be catched to get the attention of the developer!
03442 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03443     catch(const std::exception& e) // catch other c++ exceptions
03444     {
03445         std::string str;
03446         str += "FC++ exception thrown (";
03447         str += e.what();
03448         str += ")";
03449         Base::Console().Error(str.c_str());
03450         PyErr_SetString(PyExc_Exception,str.c_str());
03451         return NULL;
03452     }
03453     catch(...)  // catch the rest!
03454     {
03455         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03456         return NULL;
03457     }
03458 #endif
03459 }
03460 
03461 // setVNotPeriodic() callback and implementer
03462 // PyObject*  BSplineSurfacePy::setVNotPeriodic(PyObject *args){};
03463 // has to be implemented in BSplineSurfacePyImp.cpp
03464 PyObject * BSplineSurfacePy::staticCallback_setVNotPeriodic (PyObject *self, PyObject *args)
03465 {
03466     // test if twin object not allready deleted
03467     if (!((PyObjectBase*) self)->isValid()){
03468         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03469         return NULL;
03470     }
03471 
03472     // test if object is set Const
03473     if (((PyObjectBase*) self)->isConst()){
03474         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03475         return NULL;
03476     }
03477 
03478     try { // catches all exceptions coming up from c++ and generate a python exception
03479         PyObject* ret = ((BSplineSurfacePy*)self)->setVNotPeriodic(args);
03480         if (ret != 0)
03481             ((BSplineSurfacePy*)self)->startNotify();
03482         return ret;
03483     }
03484     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03485     {
03486         std::string str;
03487         str += "FreeCAD exception thrown (";
03488         str += e.what();
03489         str += ")";
03490         e.ReportException();
03491         PyErr_SetString(PyExc_Exception,str.c_str());
03492         return NULL;
03493     }
03494     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03495     {
03496         std::string str;
03497         str += "File system exception thrown (";
03498         //str += e.who();
03499         //str += ", ";
03500         str += e.what();
03501         str += ")\n";
03502         Base::Console().Error(str.c_str());
03503         PyErr_SetString(PyExc_Exception,str.c_str());
03504         return NULL;
03505     }
03506     catch(const Py::Exception&)
03507     {
03508         // The exception text is already set
03509         return NULL;
03510     }
03511     catch(const char* e) // catch simple string exceptions
03512     {
03513         Base::Console().Error(e);
03514         PyErr_SetString(PyExc_Exception,e);
03515         return NULL;
03516     }
03517     // in debug not all exceptions will be catched to get the attention of the developer!
03518 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03519     catch(const std::exception& e) // catch other c++ exceptions
03520     {
03521         std::string str;
03522         str += "FC++ exception thrown (";
03523         str += e.what();
03524         str += ")";
03525         Base::Console().Error(str.c_str());
03526         PyErr_SetString(PyExc_Exception,str.c_str());
03527         return NULL;
03528     }
03529     catch(...)  // catch the rest!
03530     {
03531         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03532         return NULL;
03533     }
03534 #endif
03535 }
03536 
03537 // setUPeriodic() callback and implementer
03538 // PyObject*  BSplineSurfacePy::setUPeriodic(PyObject *args){};
03539 // has to be implemented in BSplineSurfacePyImp.cpp
03540 PyObject * BSplineSurfacePy::staticCallback_setUPeriodic (PyObject *self, PyObject *args)
03541 {
03542     // test if twin object not allready deleted
03543     if (!((PyObjectBase*) self)->isValid()){
03544         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03545         return NULL;
03546     }
03547 
03548     // test if object is set Const
03549     if (((PyObjectBase*) self)->isConst()){
03550         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03551         return NULL;
03552     }
03553 
03554     try { // catches all exceptions coming up from c++ and generate a python exception
03555         PyObject* ret = ((BSplineSurfacePy*)self)->setUPeriodic(args);
03556         if (ret != 0)
03557             ((BSplineSurfacePy*)self)->startNotify();
03558         return ret;
03559     }
03560     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03561     {
03562         std::string str;
03563         str += "FreeCAD exception thrown (";
03564         str += e.what();
03565         str += ")";
03566         e.ReportException();
03567         PyErr_SetString(PyExc_Exception,str.c_str());
03568         return NULL;
03569     }
03570     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03571     {
03572         std::string str;
03573         str += "File system exception thrown (";
03574         //str += e.who();
03575         //str += ", ";
03576         str += e.what();
03577         str += ")\n";
03578         Base::Console().Error(str.c_str());
03579         PyErr_SetString(PyExc_Exception,str.c_str());
03580         return NULL;
03581     }
03582     catch(const Py::Exception&)
03583     {
03584         // The exception text is already set
03585         return NULL;
03586     }
03587     catch(const char* e) // catch simple string exceptions
03588     {
03589         Base::Console().Error(e);
03590         PyErr_SetString(PyExc_Exception,e);
03591         return NULL;
03592     }
03593     // in debug not all exceptions will be catched to get the attention of the developer!
03594 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03595     catch(const std::exception& e) // catch other c++ exceptions
03596     {
03597         std::string str;
03598         str += "FC++ exception thrown (";
03599         str += e.what();
03600         str += ")";
03601         Base::Console().Error(str.c_str());
03602         PyErr_SetString(PyExc_Exception,str.c_str());
03603         return NULL;
03604     }
03605     catch(...)  // catch the rest!
03606     {
03607         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03608         return NULL;
03609     }
03610 #endif
03611 }
03612 
03613 // setVPeriodic() callback and implementer
03614 // PyObject*  BSplineSurfacePy::setVPeriodic(PyObject *args){};
03615 // has to be implemented in BSplineSurfacePyImp.cpp
03616 PyObject * BSplineSurfacePy::staticCallback_setVPeriodic (PyObject *self, PyObject *args)
03617 {
03618     // test if twin object not allready deleted
03619     if (!((PyObjectBase*) self)->isValid()){
03620         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03621         return NULL;
03622     }
03623 
03624     // test if object is set Const
03625     if (((PyObjectBase*) self)->isConst()){
03626         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03627         return NULL;
03628     }
03629 
03630     try { // catches all exceptions coming up from c++ and generate a python exception
03631         PyObject* ret = ((BSplineSurfacePy*)self)->setVPeriodic(args);
03632         if (ret != 0)
03633             ((BSplineSurfacePy*)self)->startNotify();
03634         return ret;
03635     }
03636     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03637     {
03638         std::string str;
03639         str += "FreeCAD exception thrown (";
03640         str += e.what();
03641         str += ")";
03642         e.ReportException();
03643         PyErr_SetString(PyExc_Exception,str.c_str());
03644         return NULL;
03645     }
03646     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03647     {
03648         std::string str;
03649         str += "File system exception thrown (";
03650         //str += e.who();
03651         //str += ", ";
03652         str += e.what();
03653         str += ")\n";
03654         Base::Console().Error(str.c_str());
03655         PyErr_SetString(PyExc_Exception,str.c_str());
03656         return NULL;
03657     }
03658     catch(const Py::Exception&)
03659     {
03660         // The exception text is already set
03661         return NULL;
03662     }
03663     catch(const char* e) // catch simple string exceptions
03664     {
03665         Base::Console().Error(e);
03666         PyErr_SetString(PyExc_Exception,e);
03667         return NULL;
03668     }
03669     // in debug not all exceptions will be catched to get the attention of the developer!
03670 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03671     catch(const std::exception& e) // catch other c++ exceptions
03672     {
03673         std::string str;
03674         str += "FC++ exception thrown (";
03675         str += e.what();
03676         str += ")";
03677         Base::Console().Error(str.c_str());
03678         PyErr_SetString(PyExc_Exception,str.c_str());
03679         return NULL;
03680     }
03681     catch(...)  // catch the rest!
03682     {
03683         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03684         return NULL;
03685     }
03686 #endif
03687 }
03688 
03689 // setUOrigin() callback and implementer
03690 // PyObject*  BSplineSurfacePy::setUOrigin(PyObject *args){};
03691 // has to be implemented in BSplineSurfacePyImp.cpp
03692 PyObject * BSplineSurfacePy::staticCallback_setUOrigin (PyObject *self, PyObject *args)
03693 {
03694     // test if twin object not allready deleted
03695     if (!((PyObjectBase*) self)->isValid()){
03696         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03697         return NULL;
03698     }
03699 
03700     // test if object is set Const
03701     if (((PyObjectBase*) self)->isConst()){
03702         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03703         return NULL;
03704     }
03705 
03706     try { // catches all exceptions coming up from c++ and generate a python exception
03707         PyObject* ret = ((BSplineSurfacePy*)self)->setUOrigin(args);
03708         if (ret != 0)
03709             ((BSplineSurfacePy*)self)->startNotify();
03710         return ret;
03711     }
03712     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03713     {
03714         std::string str;
03715         str += "FreeCAD exception thrown (";
03716         str += e.what();
03717         str += ")";
03718         e.ReportException();
03719         PyErr_SetString(PyExc_Exception,str.c_str());
03720         return NULL;
03721     }
03722     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03723     {
03724         std::string str;
03725         str += "File system exception thrown (";
03726         //str += e.who();
03727         //str += ", ";
03728         str += e.what();
03729         str += ")\n";
03730         Base::Console().Error(str.c_str());
03731         PyErr_SetString(PyExc_Exception,str.c_str());
03732         return NULL;
03733     }
03734     catch(const Py::Exception&)
03735     {
03736         // The exception text is already set
03737         return NULL;
03738     }
03739     catch(const char* e) // catch simple string exceptions
03740     {
03741         Base::Console().Error(e);
03742         PyErr_SetString(PyExc_Exception,e);
03743         return NULL;
03744     }
03745     // in debug not all exceptions will be catched to get the attention of the developer!
03746 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03747     catch(const std::exception& e) // catch other c++ exceptions
03748     {
03749         std::string str;
03750         str += "FC++ exception thrown (";
03751         str += e.what();
03752         str += ")";
03753         Base::Console().Error(str.c_str());
03754         PyErr_SetString(PyExc_Exception,str.c_str());
03755         return NULL;
03756     }
03757     catch(...)  // catch the rest!
03758     {
03759         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03760         return NULL;
03761     }
03762 #endif
03763 }
03764 
03765 // setVOrigin() callback and implementer
03766 // PyObject*  BSplineSurfacePy::setVOrigin(PyObject *args){};
03767 // has to be implemented in BSplineSurfacePyImp.cpp
03768 PyObject * BSplineSurfacePy::staticCallback_setVOrigin (PyObject *self, PyObject *args)
03769 {
03770     // test if twin object not allready deleted
03771     if (!((PyObjectBase*) self)->isValid()){
03772         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03773         return NULL;
03774     }
03775 
03776     // test if object is set Const
03777     if (((PyObjectBase*) self)->isConst()){
03778         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03779         return NULL;
03780     }
03781 
03782     try { // catches all exceptions coming up from c++ and generate a python exception
03783         PyObject* ret = ((BSplineSurfacePy*)self)->setVOrigin(args);
03784         if (ret != 0)
03785             ((BSplineSurfacePy*)self)->startNotify();
03786         return ret;
03787     }
03788     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03789     {
03790         std::string str;
03791         str += "FreeCAD exception thrown (";
03792         str += e.what();
03793         str += ")";
03794         e.ReportException();
03795         PyErr_SetString(PyExc_Exception,str.c_str());
03796         return NULL;
03797     }
03798     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03799     {
03800         std::string str;
03801         str += "File system exception thrown (";
03802         //str += e.who();
03803         //str += ", ";
03804         str += e.what();
03805         str += ")\n";
03806         Base::Console().Error(str.c_str());
03807         PyErr_SetString(PyExc_Exception,str.c_str());
03808         return NULL;
03809     }
03810     catch(const Py::Exception&)
03811     {
03812         // The exception text is already set
03813         return NULL;
03814     }
03815     catch(const char* e) // catch simple string exceptions
03816     {
03817         Base::Console().Error(e);
03818         PyErr_SetString(PyExc_Exception,e);
03819         return NULL;
03820     }
03821     // in debug not all exceptions will be catched to get the attention of the developer!
03822 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03823     catch(const std::exception& e) // catch other c++ exceptions
03824     {
03825         std::string str;
03826         str += "FC++ exception thrown (";
03827         str += e.what();
03828         str += ")";
03829         Base::Console().Error(str.c_str());
03830         PyErr_SetString(PyExc_Exception,str.c_str());
03831         return NULL;
03832     }
03833     catch(...)  // catch the rest!
03834     {
03835         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03836         return NULL;
03837     }
03838 #endif
03839 }
03840 
03841 // getUMultiplicity() callback and implementer
03842 // PyObject*  BSplineSurfacePy::getUMultiplicity(PyObject *args){};
03843 // has to be implemented in BSplineSurfacePyImp.cpp
03844 PyObject * BSplineSurfacePy::staticCallback_getUMultiplicity (PyObject *self, PyObject *args)
03845 {
03846     // test if twin object not allready deleted
03847     if (!((PyObjectBase*) self)->isValid()){
03848         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03849         return NULL;
03850     }
03851 
03852     // test if object is set Const
03853     if (((PyObjectBase*) self)->isConst()){
03854         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03855         return NULL;
03856     }
03857 
03858     try { // catches all exceptions coming up from c++ and generate a python exception
03859         PyObject* ret = ((BSplineSurfacePy*)self)->getUMultiplicity(args);
03860         if (ret != 0)
03861             ((BSplineSurfacePy*)self)->startNotify();
03862         return ret;
03863     }
03864     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03865     {
03866         std::string str;
03867         str += "FreeCAD exception thrown (";
03868         str += e.what();
03869         str += ")";
03870         e.ReportException();
03871         PyErr_SetString(PyExc_Exception,str.c_str());
03872         return NULL;
03873     }
03874     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03875     {
03876         std::string str;
03877         str += "File system exception thrown (";
03878         //str += e.who();
03879         //str += ", ";
03880         str += e.what();
03881         str += ")\n";
03882         Base::Console().Error(str.c_str());
03883         PyErr_SetString(PyExc_Exception,str.c_str());
03884         return NULL;
03885     }
03886     catch(const Py::Exception&)
03887     {
03888         // The exception text is already set
03889         return NULL;
03890     }
03891     catch(const char* e) // catch simple string exceptions
03892     {
03893         Base::Console().Error(e);
03894         PyErr_SetString(PyExc_Exception,e);
03895         return NULL;
03896     }
03897     // in debug not all exceptions will be catched to get the attention of the developer!
03898 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03899     catch(const std::exception& e) // catch other c++ exceptions
03900     {
03901         std::string str;
03902         str += "FC++ exception thrown (";
03903         str += e.what();
03904         str += ")";
03905         Base::Console().Error(str.c_str());
03906         PyErr_SetString(PyExc_Exception,str.c_str());
03907         return NULL;
03908     }
03909     catch(...)  // catch the rest!
03910     {
03911         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03912         return NULL;
03913     }
03914 #endif
03915 }
03916 
03917 // getVMultiplicity() callback and implementer
03918 // PyObject*  BSplineSurfacePy::getVMultiplicity(PyObject *args){};
03919 // has to be implemented in BSplineSurfacePyImp.cpp
03920 PyObject * BSplineSurfacePy::staticCallback_getVMultiplicity (PyObject *self, PyObject *args)
03921 {
03922     // test if twin object not allready deleted
03923     if (!((PyObjectBase*) self)->isValid()){
03924         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
03925         return NULL;
03926     }
03927 
03928     // test if object is set Const
03929     if (((PyObjectBase*) self)->isConst()){
03930         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
03931         return NULL;
03932     }
03933 
03934     try { // catches all exceptions coming up from c++ and generate a python exception
03935         PyObject* ret = ((BSplineSurfacePy*)self)->getVMultiplicity(args);
03936         if (ret != 0)
03937             ((BSplineSurfacePy*)self)->startNotify();
03938         return ret;
03939     }
03940     catch(const Base::Exception& e) // catch the FreeCAD exceptions
03941     {
03942         std::string str;
03943         str += "FreeCAD exception thrown (";
03944         str += e.what();
03945         str += ")";
03946         e.ReportException();
03947         PyErr_SetString(PyExc_Exception,str.c_str());
03948         return NULL;
03949     }
03950     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
03951     {
03952         std::string str;
03953         str += "File system exception thrown (";
03954         //str += e.who();
03955         //str += ", ";
03956         str += e.what();
03957         str += ")\n";
03958         Base::Console().Error(str.c_str());
03959         PyErr_SetString(PyExc_Exception,str.c_str());
03960         return NULL;
03961     }
03962     catch(const Py::Exception&)
03963     {
03964         // The exception text is already set
03965         return NULL;
03966     }
03967     catch(const char* e) // catch simple string exceptions
03968     {
03969         Base::Console().Error(e);
03970         PyErr_SetString(PyExc_Exception,e);
03971         return NULL;
03972     }
03973     // in debug not all exceptions will be catched to get the attention of the developer!
03974 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
03975     catch(const std::exception& e) // catch other c++ exceptions
03976     {
03977         std::string str;
03978         str += "FC++ exception thrown (";
03979         str += e.what();
03980         str += ")";
03981         Base::Console().Error(str.c_str());
03982         PyErr_SetString(PyExc_Exception,str.c_str());
03983         return NULL;
03984     }
03985     catch(...)  // catch the rest!
03986     {
03987         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
03988         return NULL;
03989     }
03990 #endif
03991 }
03992 
03993 // getUMultiplicities() callback and implementer
03994 // PyObject*  BSplineSurfacePy::getUMultiplicities(PyObject *args){};
03995 // has to be implemented in BSplineSurfacePyImp.cpp
03996 PyObject * BSplineSurfacePy::staticCallback_getUMultiplicities (PyObject *self, PyObject *args)
03997 {
03998     // test if twin object not allready deleted
03999     if (!((PyObjectBase*) self)->isValid()){
04000         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04001         return NULL;
04002     }
04003 
04004     // test if object is set Const
04005     if (((PyObjectBase*) self)->isConst()){
04006         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
04007         return NULL;
04008     }
04009 
04010     try { // catches all exceptions coming up from c++ and generate a python exception
04011         PyObject* ret = ((BSplineSurfacePy*)self)->getUMultiplicities(args);
04012         if (ret != 0)
04013             ((BSplineSurfacePy*)self)->startNotify();
04014         return ret;
04015     }
04016     catch(const Base::Exception& e) // catch the FreeCAD exceptions
04017     {
04018         std::string str;
04019         str += "FreeCAD exception thrown (";
04020         str += e.what();
04021         str += ")";
04022         e.ReportException();
04023         PyErr_SetString(PyExc_Exception,str.c_str());
04024         return NULL;
04025     }
04026     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
04027     {
04028         std::string str;
04029         str += "File system exception thrown (";
04030         //str += e.who();
04031         //str += ", ";
04032         str += e.what();
04033         str += ")\n";
04034         Base::Console().Error(str.c_str());
04035         PyErr_SetString(PyExc_Exception,str.c_str());
04036         return NULL;
04037     }
04038     catch(const Py::Exception&)
04039     {
04040         // The exception text is already set
04041         return NULL;
04042     }
04043     catch(const char* e) // catch simple string exceptions
04044     {
04045         Base::Console().Error(e);
04046         PyErr_SetString(PyExc_Exception,e);
04047         return NULL;
04048     }
04049     // in debug not all exceptions will be catched to get the attention of the developer!
04050 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
04051     catch(const std::exception& e) // catch other c++ exceptions
04052     {
04053         std::string str;
04054         str += "FC++ exception thrown (";
04055         str += e.what();
04056         str += ")";
04057         Base::Console().Error(str.c_str());
04058         PyErr_SetString(PyExc_Exception,str.c_str());
04059         return NULL;
04060     }
04061     catch(...)  // catch the rest!
04062     {
04063         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
04064         return NULL;
04065     }
04066 #endif
04067 }
04068 
04069 // getVMultiplicities() callback and implementer
04070 // PyObject*  BSplineSurfacePy::getVMultiplicities(PyObject *args){};
04071 // has to be implemented in BSplineSurfacePyImp.cpp
04072 PyObject * BSplineSurfacePy::staticCallback_getVMultiplicities (PyObject *self, PyObject *args)
04073 {
04074     // test if twin object not allready deleted
04075     if (!((PyObjectBase*) self)->isValid()){
04076         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04077         return NULL;
04078     }
04079 
04080     // test if object is set Const
04081     if (((PyObjectBase*) self)->isConst()){
04082         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
04083         return NULL;
04084     }
04085 
04086     try { // catches all exceptions coming up from c++ and generate a python exception
04087         PyObject* ret = ((BSplineSurfacePy*)self)->getVMultiplicities(args);
04088         if (ret != 0)
04089             ((BSplineSurfacePy*)self)->startNotify();
04090         return ret;
04091     }
04092     catch(const Base::Exception& e) // catch the FreeCAD exceptions
04093     {
04094         std::string str;
04095         str += "FreeCAD exception thrown (";
04096         str += e.what();
04097         str += ")";
04098         e.ReportException();
04099         PyErr_SetString(PyExc_Exception,str.c_str());
04100         return NULL;
04101     }
04102     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
04103     {
04104         std::string str;
04105         str += "File system exception thrown (";
04106         //str += e.who();
04107         //str += ", ";
04108         str += e.what();
04109         str += ")\n";
04110         Base::Console().Error(str.c_str());
04111         PyErr_SetString(PyExc_Exception,str.c_str());
04112         return NULL;
04113     }
04114     catch(const Py::Exception&)
04115     {
04116         // The exception text is already set
04117         return NULL;
04118     }
04119     catch(const char* e) // catch simple string exceptions
04120     {
04121         Base::Console().Error(e);
04122         PyErr_SetString(PyExc_Exception,e);
04123         return NULL;
04124     }
04125     // in debug not all exceptions will be catched to get the attention of the developer!
04126 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
04127     catch(const std::exception& e) // catch other c++ exceptions
04128     {
04129         std::string str;
04130         str += "FC++ exception thrown (";
04131         str += e.what();
04132         str += ")";
04133         Base::Console().Error(str.c_str());
04134         PyErr_SetString(PyExc_Exception,str.c_str());
04135         return NULL;
04136     }
04137     catch(...)  // catch the rest!
04138     {
04139         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
04140         return NULL;
04141     }
04142 #endif
04143 }
04144 
04145 // exchangeUV() callback and implementer
04146 // PyObject*  BSplineSurfacePy::exchangeUV(PyObject *args){};
04147 // has to be implemented in BSplineSurfacePyImp.cpp
04148 PyObject * BSplineSurfacePy::staticCallback_exchangeUV (PyObject *self, PyObject *args)
04149 {
04150     // test if twin object not allready deleted
04151     if (!((PyObjectBase*) self)->isValid()){
04152         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04153         return NULL;
04154     }
04155 
04156     // test if object is set Const
04157     if (((PyObjectBase*) self)->isConst()){
04158         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
04159         return NULL;
04160     }
04161 
04162     try { // catches all exceptions coming up from c++ and generate a python exception
04163         PyObject* ret = ((BSplineSurfacePy*)self)->exchangeUV(args);
04164         if (ret != 0)
04165             ((BSplineSurfacePy*)self)->startNotify();
04166         return ret;
04167     }
04168     catch(const Base::Exception& e) // catch the FreeCAD exceptions
04169     {
04170         std::string str;
04171         str += "FreeCAD exception thrown (";
04172         str += e.what();
04173         str += ")";
04174         e.ReportException();
04175         PyErr_SetString(PyExc_Exception,str.c_str());
04176         return NULL;
04177     }
04178     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
04179     {
04180         std::string str;
04181         str += "File system exception thrown (";
04182         //str += e.who();
04183         //str += ", ";
04184         str += e.what();
04185         str += ")\n";
04186         Base::Console().Error(str.c_str());
04187         PyErr_SetString(PyExc_Exception,str.c_str());
04188         return NULL;
04189     }
04190     catch(const Py::Exception&)
04191     {
04192         // The exception text is already set
04193         return NULL;
04194     }
04195     catch(const char* e) // catch simple string exceptions
04196     {
04197         Base::Console().Error(e);
04198         PyErr_SetString(PyExc_Exception,e);
04199         return NULL;
04200     }
04201     // in debug not all exceptions will be catched to get the attention of the developer!
04202 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
04203     catch(const std::exception& e) // catch other c++ exceptions
04204     {
04205         std::string str;
04206         str += "FC++ exception thrown (";
04207         str += e.what();
04208         str += ")";
04209         Base::Console().Error(str.c_str());
04210         PyErr_SetString(PyExc_Exception,str.c_str());
04211         return NULL;
04212     }
04213     catch(...)  // catch the rest!
04214     {
04215         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
04216         return NULL;
04217     }
04218 #endif
04219 }
04220 
04221 // uIso() callback and implementer
04222 // PyObject*  BSplineSurfacePy::uIso(PyObject *args){};
04223 // has to be implemented in BSplineSurfacePyImp.cpp
04224 PyObject * BSplineSurfacePy::staticCallback_uIso (PyObject *self, PyObject *args)
04225 {
04226     // test if twin object not allready deleted
04227     if (!((PyObjectBase*) self)->isValid()){
04228         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04229         return NULL;
04230     }
04231 
04232     // test if object is set Const
04233     if (((PyObjectBase*) self)->isConst()){
04234         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
04235         return NULL;
04236     }
04237 
04238     try { // catches all exceptions coming up from c++ and generate a python exception
04239         PyObject* ret = ((BSplineSurfacePy*)self)->uIso(args);
04240         if (ret != 0)
04241             ((BSplineSurfacePy*)self)->startNotify();
04242         return ret;
04243     }
04244     catch(const Base::Exception& e) // catch the FreeCAD exceptions
04245     {
04246         std::string str;
04247         str += "FreeCAD exception thrown (";
04248         str += e.what();
04249         str += ")";
04250         e.ReportException();
04251         PyErr_SetString(PyExc_Exception,str.c_str());
04252         return NULL;
04253     }
04254     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
04255     {
04256         std::string str;
04257         str += "File system exception thrown (";
04258         //str += e.who();
04259         //str += ", ";
04260         str += e.what();
04261         str += ")\n";
04262         Base::Console().Error(str.c_str());
04263         PyErr_SetString(PyExc_Exception,str.c_str());
04264         return NULL;
04265     }
04266     catch(const Py::Exception&)
04267     {
04268         // The exception text is already set
04269         return NULL;
04270     }
04271     catch(const char* e) // catch simple string exceptions
04272     {
04273         Base::Console().Error(e);
04274         PyErr_SetString(PyExc_Exception,e);
04275         return NULL;
04276     }
04277     // in debug not all exceptions will be catched to get the attention of the developer!
04278 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
04279     catch(const std::exception& e) // catch other c++ exceptions
04280     {
04281         std::string str;
04282         str += "FC++ exception thrown (";
04283         str += e.what();
04284         str += ")";
04285         Base::Console().Error(str.c_str());
04286         PyErr_SetString(PyExc_Exception,str.c_str());
04287         return NULL;
04288     }
04289     catch(...)  // catch the rest!
04290     {
04291         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
04292         return NULL;
04293     }
04294 #endif
04295 }
04296 
04297 // vIso() callback and implementer
04298 // PyObject*  BSplineSurfacePy::vIso(PyObject *args){};
04299 // has to be implemented in BSplineSurfacePyImp.cpp
04300 PyObject * BSplineSurfacePy::staticCallback_vIso (PyObject *self, PyObject *args)
04301 {
04302     // test if twin object not allready deleted
04303     if (!((PyObjectBase*) self)->isValid()){
04304         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04305         return NULL;
04306     }
04307 
04308     // test if object is set Const
04309     if (((PyObjectBase*) self)->isConst()){
04310         PyErr_SetString(PyExc_ReferenceError, "This object is immutable, you can not set any attribute or call a non const method");
04311         return NULL;
04312     }
04313 
04314     try { // catches all exceptions coming up from c++ and generate a python exception
04315         PyObject* ret = ((BSplineSurfacePy*)self)->vIso(args);
04316         if (ret != 0)
04317             ((BSplineSurfacePy*)self)->startNotify();
04318         return ret;
04319     }
04320     catch(const Base::Exception& e) // catch the FreeCAD exceptions
04321     {
04322         std::string str;
04323         str += "FreeCAD exception thrown (";
04324         str += e.what();
04325         str += ")";
04326         e.ReportException();
04327         PyErr_SetString(PyExc_Exception,str.c_str());
04328         return NULL;
04329     }
04330     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
04331     {
04332         std::string str;
04333         str += "File system exception thrown (";
04334         //str += e.who();
04335         //str += ", ";
04336         str += e.what();
04337         str += ")\n";
04338         Base::Console().Error(str.c_str());
04339         PyErr_SetString(PyExc_Exception,str.c_str());
04340         return NULL;
04341     }
04342     catch(const Py::Exception&)
04343     {
04344         // The exception text is already set
04345         return NULL;
04346     }
04347     catch(const char* e) // catch simple string exceptions
04348     {
04349         Base::Console().Error(e);
04350         PyErr_SetString(PyExc_Exception,e);
04351         return NULL;
04352     }
04353     // in debug not all exceptions will be catched to get the attention of the developer!
04354 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
04355     catch(const std::exception& e) // catch other c++ exceptions
04356     {
04357         std::string str;
04358         str += "FC++ exception thrown (";
04359         str += e.what();
04360         str += ")";
04361         Base::Console().Error(str.c_str());
04362         PyErr_SetString(PyExc_Exception,str.c_str());
04363         return NULL;
04364     }
04365     catch(...)  // catch the rest!
04366     {
04367         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
04368         return NULL;
04369     }
04370 #endif
04371 }
04372 
04373 // reparametrize() callback and implementer
04374 // PyObject*  BSplineSurfacePy::reparametrize(PyObject *args){};
04375 // has to be implemented in BSplineSurfacePyImp.cpp
04376 PyObject * BSplineSurfacePy::staticCallback_reparametrize (PyObject *self, PyObject *args)
04377 {
04378     // test if twin object not allready deleted
04379     if (!((PyObjectBase*) self)->isValid()){
04380         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04381         return NULL;
04382     }
04383 
04384 
04385     try { // catches all exceptions coming up from c++ and generate a python exception
04386         PyObject* ret = ((BSplineSurfacePy*)self)->reparametrize(args);
04387         return ret;
04388     }
04389     catch(const Base::Exception& e) // catch the FreeCAD exceptions
04390     {
04391         std::string str;
04392         str += "FreeCAD exception thrown (";
04393         str += e.what();
04394         str += ")";
04395         e.ReportException();
04396         PyErr_SetString(PyExc_Exception,str.c_str());
04397         return NULL;
04398     }
04399     catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception
04400     {
04401         std::string str;
04402         str += "File system exception thrown (";
04403         //str += e.who();
04404         //str += ", ";
04405         str += e.what();
04406         str += ")\n";
04407         Base::Console().Error(str.c_str());
04408         PyErr_SetString(PyExc_Exception,str.c_str());
04409         return NULL;
04410     }
04411     catch(const Py::Exception&)
04412     {
04413         // The exception text is already set
04414         return NULL;
04415     }
04416     catch(const char* e) // catch simple string exceptions
04417     {
04418         Base::Console().Error(e);
04419         PyErr_SetString(PyExc_Exception,e);
04420         return NULL;
04421     }
04422     // in debug not all exceptions will be catched to get the attention of the developer!
04423 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
04424     catch(const std::exception& e) // catch other c++ exceptions
04425     {
04426         std::string str;
04427         str += "FC++ exception thrown (";
04428         str += e.what();
04429         str += ")";
04430         Base::Console().Error(str.c_str());
04431         PyErr_SetString(PyExc_Exception,str.c_str());
04432         return NULL;
04433     }
04434     catch(...)  // catch the rest!
04435     {
04436         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
04437         return NULL;
04438     }
04439 #endif
04440 }
04441 
04442 // UDegree() callback and implementer
04443 // PyObject*  BSplineSurfacePy::UDegree(PyObject *args){};
04444 // has to be implemented in BSplineSurfacePyImp.cpp
04445 PyObject * BSplineSurfacePy::staticCallback_getUDegree (PyObject *self, void * /*closure*/)
04446 {
04447     if (!((PyObjectBase*) self)->isValid()){
04448         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04449         return NULL;
04450     }
04451 
04452     try {
04453         return Py::new_reference_to(((BSplineSurfacePy*)self)->getUDegree());
04454     } catch (const Py::Exception&) {
04455         // The exception text is already set
04456         return NULL;
04457     } catch (...) {
04458         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'UDegree' of object 'GeomBSplineSurface'");
04459         return NULL;
04460     }
04461 }
04462 
04463 int BSplineSurfacePy::staticCallback_setUDegree (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04464 {
04465     if (!((PyObjectBase*) self)->isValid()){
04466         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04467         return -1;
04468     }
04469 
04470     PyErr_SetString(PyExc_AttributeError, "Attribute 'UDegree' of object 'GeomBSplineSurface' is read-only");
04471     return -1;
04472 }
04473 
04474 // VDegree() callback and implementer
04475 // PyObject*  BSplineSurfacePy::VDegree(PyObject *args){};
04476 // has to be implemented in BSplineSurfacePyImp.cpp
04477 PyObject * BSplineSurfacePy::staticCallback_getVDegree (PyObject *self, void * /*closure*/)
04478 {
04479     if (!((PyObjectBase*) self)->isValid()){
04480         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04481         return NULL;
04482     }
04483 
04484     try {
04485         return Py::new_reference_to(((BSplineSurfacePy*)self)->getVDegree());
04486     } catch (const Py::Exception&) {
04487         // The exception text is already set
04488         return NULL;
04489     } catch (...) {
04490         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'VDegree' of object 'GeomBSplineSurface'");
04491         return NULL;
04492     }
04493 }
04494 
04495 int BSplineSurfacePy::staticCallback_setVDegree (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04496 {
04497     if (!((PyObjectBase*) self)->isValid()){
04498         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04499         return -1;
04500     }
04501 
04502     PyErr_SetString(PyExc_AttributeError, "Attribute 'VDegree' of object 'GeomBSplineSurface' is read-only");
04503     return -1;
04504 }
04505 
04506 // MaxDegree() callback and implementer
04507 // PyObject*  BSplineSurfacePy::MaxDegree(PyObject *args){};
04508 // has to be implemented in BSplineSurfacePyImp.cpp
04509 PyObject * BSplineSurfacePy::staticCallback_getMaxDegree (PyObject *self, void * /*closure*/)
04510 {
04511     if (!((PyObjectBase*) self)->isValid()){
04512         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04513         return NULL;
04514     }
04515 
04516     try {
04517         return Py::new_reference_to(((BSplineSurfacePy*)self)->getMaxDegree());
04518     } catch (const Py::Exception&) {
04519         // The exception text is already set
04520         return NULL;
04521     } catch (...) {
04522         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'MaxDegree' of object 'GeomBSplineSurface'");
04523         return NULL;
04524     }
04525 }
04526 
04527 int BSplineSurfacePy::staticCallback_setMaxDegree (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04528 {
04529     if (!((PyObjectBase*) self)->isValid()){
04530         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04531         return -1;
04532     }
04533 
04534     PyErr_SetString(PyExc_AttributeError, "Attribute 'MaxDegree' of object 'GeomBSplineSurface' is read-only");
04535     return -1;
04536 }
04537 
04538 // NbUPoles() callback and implementer
04539 // PyObject*  BSplineSurfacePy::NbUPoles(PyObject *args){};
04540 // has to be implemented in BSplineSurfacePyImp.cpp
04541 PyObject * BSplineSurfacePy::staticCallback_getNbUPoles (PyObject *self, void * /*closure*/)
04542 {
04543     if (!((PyObjectBase*) self)->isValid()){
04544         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04545         return NULL;
04546     }
04547 
04548     try {
04549         return Py::new_reference_to(((BSplineSurfacePy*)self)->getNbUPoles());
04550     } catch (const Py::Exception&) {
04551         // The exception text is already set
04552         return NULL;
04553     } catch (...) {
04554         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'NbUPoles' of object 'GeomBSplineSurface'");
04555         return NULL;
04556     }
04557 }
04558 
04559 int BSplineSurfacePy::staticCallback_setNbUPoles (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04560 {
04561     if (!((PyObjectBase*) self)->isValid()){
04562         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04563         return -1;
04564     }
04565 
04566     PyErr_SetString(PyExc_AttributeError, "Attribute 'NbUPoles' of object 'GeomBSplineSurface' is read-only");
04567     return -1;
04568 }
04569 
04570 // NbVPoles() callback and implementer
04571 // PyObject*  BSplineSurfacePy::NbVPoles(PyObject *args){};
04572 // has to be implemented in BSplineSurfacePyImp.cpp
04573 PyObject * BSplineSurfacePy::staticCallback_getNbVPoles (PyObject *self, void * /*closure*/)
04574 {
04575     if (!((PyObjectBase*) self)->isValid()){
04576         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04577         return NULL;
04578     }
04579 
04580     try {
04581         return Py::new_reference_to(((BSplineSurfacePy*)self)->getNbVPoles());
04582     } catch (const Py::Exception&) {
04583         // The exception text is already set
04584         return NULL;
04585     } catch (...) {
04586         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'NbVPoles' of object 'GeomBSplineSurface'");
04587         return NULL;
04588     }
04589 }
04590 
04591 int BSplineSurfacePy::staticCallback_setNbVPoles (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04592 {
04593     if (!((PyObjectBase*) self)->isValid()){
04594         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04595         return -1;
04596     }
04597 
04598     PyErr_SetString(PyExc_AttributeError, "Attribute 'NbVPoles' of object 'GeomBSplineSurface' is read-only");
04599     return -1;
04600 }
04601 
04602 // NbUKnots() callback and implementer
04603 // PyObject*  BSplineSurfacePy::NbUKnots(PyObject *args){};
04604 // has to be implemented in BSplineSurfacePyImp.cpp
04605 PyObject * BSplineSurfacePy::staticCallback_getNbUKnots (PyObject *self, void * /*closure*/)
04606 {
04607     if (!((PyObjectBase*) self)->isValid()){
04608         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04609         return NULL;
04610     }
04611 
04612     try {
04613         return Py::new_reference_to(((BSplineSurfacePy*)self)->getNbUKnots());
04614     } catch (const Py::Exception&) {
04615         // The exception text is already set
04616         return NULL;
04617     } catch (...) {
04618         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'NbUKnots' of object 'GeomBSplineSurface'");
04619         return NULL;
04620     }
04621 }
04622 
04623 int BSplineSurfacePy::staticCallback_setNbUKnots (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04624 {
04625     if (!((PyObjectBase*) self)->isValid()){
04626         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04627         return -1;
04628     }
04629 
04630     PyErr_SetString(PyExc_AttributeError, "Attribute 'NbUKnots' of object 'GeomBSplineSurface' is read-only");
04631     return -1;
04632 }
04633 
04634 // NbVKnots() callback and implementer
04635 // PyObject*  BSplineSurfacePy::NbVKnots(PyObject *args){};
04636 // has to be implemented in BSplineSurfacePyImp.cpp
04637 PyObject * BSplineSurfacePy::staticCallback_getNbVKnots (PyObject *self, void * /*closure*/)
04638 {
04639     if (!((PyObjectBase*) self)->isValid()){
04640         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04641         return NULL;
04642     }
04643 
04644     try {
04645         return Py::new_reference_to(((BSplineSurfacePy*)self)->getNbVKnots());
04646     } catch (const Py::Exception&) {
04647         // The exception text is already set
04648         return NULL;
04649     } catch (...) {
04650         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'NbVKnots' of object 'GeomBSplineSurface'");
04651         return NULL;
04652     }
04653 }
04654 
04655 int BSplineSurfacePy::staticCallback_setNbVKnots (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04656 {
04657     if (!((PyObjectBase*) self)->isValid()){
04658         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04659         return -1;
04660     }
04661 
04662     PyErr_SetString(PyExc_AttributeError, "Attribute 'NbVKnots' of object 'GeomBSplineSurface' is read-only");
04663     return -1;
04664 }
04665 
04666 // FirstUKnotIndex() callback and implementer
04667 // PyObject*  BSplineSurfacePy::FirstUKnotIndex(PyObject *args){};
04668 // has to be implemented in BSplineSurfacePyImp.cpp
04669 PyObject * BSplineSurfacePy::staticCallback_getFirstUKnotIndex (PyObject *self, void * /*closure*/)
04670 {
04671     if (!((PyObjectBase*) self)->isValid()){
04672         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04673         return NULL;
04674     }
04675 
04676     try {
04677         return Py::new_reference_to(((BSplineSurfacePy*)self)->getFirstUKnotIndex());
04678     } catch (const Py::Exception&) {
04679         // The exception text is already set
04680         return NULL;
04681     } catch (...) {
04682         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'FirstUKnotIndex' of object 'GeomBSplineSurface'");
04683         return NULL;
04684     }
04685 }
04686 
04687 int BSplineSurfacePy::staticCallback_setFirstUKnotIndex (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04688 {
04689     if (!((PyObjectBase*) self)->isValid()){
04690         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04691         return -1;
04692     }
04693 
04694     PyErr_SetString(PyExc_AttributeError, "Attribute 'FirstUKnotIndex' of object 'GeomBSplineSurface' is read-only");
04695     return -1;
04696 }
04697 
04698 // LastUKnotIndex() callback and implementer
04699 // PyObject*  BSplineSurfacePy::LastUKnotIndex(PyObject *args){};
04700 // has to be implemented in BSplineSurfacePyImp.cpp
04701 PyObject * BSplineSurfacePy::staticCallback_getLastUKnotIndex (PyObject *self, void * /*closure*/)
04702 {
04703     if (!((PyObjectBase*) self)->isValid()){
04704         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04705         return NULL;
04706     }
04707 
04708     try {
04709         return Py::new_reference_to(((BSplineSurfacePy*)self)->getLastUKnotIndex());
04710     } catch (const Py::Exception&) {
04711         // The exception text is already set
04712         return NULL;
04713     } catch (...) {
04714         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'LastUKnotIndex' of object 'GeomBSplineSurface'");
04715         return NULL;
04716     }
04717 }
04718 
04719 int BSplineSurfacePy::staticCallback_setLastUKnotIndex (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04720 {
04721     if (!((PyObjectBase*) self)->isValid()){
04722         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04723         return -1;
04724     }
04725 
04726     PyErr_SetString(PyExc_AttributeError, "Attribute 'LastUKnotIndex' of object 'GeomBSplineSurface' is read-only");
04727     return -1;
04728 }
04729 
04730 // FirstVKnotIndex() callback and implementer
04731 // PyObject*  BSplineSurfacePy::FirstVKnotIndex(PyObject *args){};
04732 // has to be implemented in BSplineSurfacePyImp.cpp
04733 PyObject * BSplineSurfacePy::staticCallback_getFirstVKnotIndex (PyObject *self, void * /*closure*/)
04734 {
04735     if (!((PyObjectBase*) self)->isValid()){
04736         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04737         return NULL;
04738     }
04739 
04740     try {
04741         return Py::new_reference_to(((BSplineSurfacePy*)self)->getFirstVKnotIndex());
04742     } catch (const Py::Exception&) {
04743         // The exception text is already set
04744         return NULL;
04745     } catch (...) {
04746         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'FirstVKnotIndex' of object 'GeomBSplineSurface'");
04747         return NULL;
04748     }
04749 }
04750 
04751 int BSplineSurfacePy::staticCallback_setFirstVKnotIndex (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04752 {
04753     if (!((PyObjectBase*) self)->isValid()){
04754         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04755         return -1;
04756     }
04757 
04758     PyErr_SetString(PyExc_AttributeError, "Attribute 'FirstVKnotIndex' of object 'GeomBSplineSurface' is read-only");
04759     return -1;
04760 }
04761 
04762 // LastVKnotIndex() callback and implementer
04763 // PyObject*  BSplineSurfacePy::LastVKnotIndex(PyObject *args){};
04764 // has to be implemented in BSplineSurfacePyImp.cpp
04765 PyObject * BSplineSurfacePy::staticCallback_getLastVKnotIndex (PyObject *self, void * /*closure*/)
04766 {
04767     if (!((PyObjectBase*) self)->isValid()){
04768         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04769         return NULL;
04770     }
04771 
04772     try {
04773         return Py::new_reference_to(((BSplineSurfacePy*)self)->getLastVKnotIndex());
04774     } catch (const Py::Exception&) {
04775         // The exception text is already set
04776         return NULL;
04777     } catch (...) {
04778         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'LastVKnotIndex' of object 'GeomBSplineSurface'");
04779         return NULL;
04780     }
04781 }
04782 
04783 int BSplineSurfacePy::staticCallback_setLastVKnotIndex (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04784 {
04785     if (!((PyObjectBase*) self)->isValid()){
04786         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04787         return -1;
04788     }
04789 
04790     PyErr_SetString(PyExc_AttributeError, "Attribute 'LastVKnotIndex' of object 'GeomBSplineSurface' is read-only");
04791     return -1;
04792 }
04793 
04794 // UKnotSequence() callback and implementer
04795 // PyObject*  BSplineSurfacePy::UKnotSequence(PyObject *args){};
04796 // has to be implemented in BSplineSurfacePyImp.cpp
04797 PyObject * BSplineSurfacePy::staticCallback_getUKnotSequence (PyObject *self, void * /*closure*/)
04798 {
04799     if (!((PyObjectBase*) self)->isValid()){
04800         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04801         return NULL;
04802     }
04803 
04804     try {
04805         return Py::new_reference_to(((BSplineSurfacePy*)self)->getUKnotSequence());
04806     } catch (const Py::Exception&) {
04807         // The exception text is already set
04808         return NULL;
04809     } catch (...) {
04810         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'UKnotSequence' of object 'GeomBSplineSurface'");
04811         return NULL;
04812     }
04813 }
04814 
04815 int BSplineSurfacePy::staticCallback_setUKnotSequence (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04816 {
04817     if (!((PyObjectBase*) self)->isValid()){
04818         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04819         return -1;
04820     }
04821 
04822     PyErr_SetString(PyExc_AttributeError, "Attribute 'UKnotSequence' of object 'GeomBSplineSurface' is read-only");
04823     return -1;
04824 }
04825 
04826 // VKnotSequence() callback and implementer
04827 // PyObject*  BSplineSurfacePy::VKnotSequence(PyObject *args){};
04828 // has to be implemented in BSplineSurfacePyImp.cpp
04829 PyObject * BSplineSurfacePy::staticCallback_getVKnotSequence (PyObject *self, void * /*closure*/)
04830 {
04831     if (!((PyObjectBase*) self)->isValid()){
04832         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04833         return NULL;
04834     }
04835 
04836     try {
04837         return Py::new_reference_to(((BSplineSurfacePy*)self)->getVKnotSequence());
04838     } catch (const Py::Exception&) {
04839         // The exception text is already set
04840         return NULL;
04841     } catch (...) {
04842         PyErr_SetString(PyExc_Exception, "Unknown exception while reading attribute 'VKnotSequence' of object 'GeomBSplineSurface'");
04843         return NULL;
04844     }
04845 }
04846 
04847 int BSplineSurfacePy::staticCallback_setVKnotSequence (PyObject *self, PyObject * /*value*/, void * /*closure*/)
04848 {
04849     if (!((PyObjectBase*) self)->isValid()){
04850         PyErr_SetString(PyExc_ReferenceError, "This object is already deleted most likely through closing a document. This reference is no longer valid!");
04851         return -1;
04852     }
04853 
04854     PyErr_SetString(PyExc_AttributeError, "Attribute 'VKnotSequence' of object 'GeomBSplineSurface' is read-only");
04855     return -1;
04856 }
04857 
04858 
04859 
04860 //--------------------------------------------------------------------------
04861 // Parents structure
04862 //--------------------------------------------------------------------------
04863 PyParentObject BSplineSurfacePy::Parents[] = { PARENTSPartBSplineSurfacePy };
04864 
04865 //--------------------------------------------------------------------------
04866 // Constructor
04867 //--------------------------------------------------------------------------
04868 BSplineSurfacePy::BSplineSurfacePy(GeomBSplineSurface *pcObject, PyTypeObject *T)
04869     : GeometrySurfacePy(reinterpret_cast<GeometrySurfacePy::PointerType>(pcObject), T)
04870 {
04871 }
04872 
04873 
04874 //--------------------------------------------------------------------------
04875 // destructor
04876 //--------------------------------------------------------------------------
04877 BSplineSurfacePy::~BSplineSurfacePy()                                // Everything handled in parent
04878 {
04879 }
04880 
04881 //--------------------------------------------------------------------------
04882 // BSplineSurfacePy representation
04883 //--------------------------------------------------------------------------
04884 PyObject *BSplineSurfacePy::_repr(void)
04885 {
04886     return Py_BuildValue("s", representation().c_str());
04887 }
04888 
04889 //--------------------------------------------------------------------------
04890 // BSplineSurfacePy Attributes
04891 //--------------------------------------------------------------------------
04892 PyObject *BSplineSurfacePy::_getattr(char *attr)                                // __getattr__ function: note only need to handle new state
04893 {
04894     try {
04895         // getter method for special Attributes (e.g. dynamic ones)
04896         PyObject *r = getCustomAttributes(attr);
04897         if(r) return r;
04898     }
04899 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
04900     catch(const Base::Exception& e) // catch the FreeCAD exceptions
04901     {
04902         std::string str;
04903         str += "FreeCAD exception thrown (";
04904         str += e.what();
04905         str += ")";
04906         e.ReportException();
04907         PyErr_SetString(PyExc_Exception,str.c_str());
04908         return NULL;
04909     }
04910     catch(const std::exception& e) // catch other c++ exceptions
04911     {
04912         std::string str;
04913         str += "FC++ exception thrown (";
04914         str += e.what();
04915         str += ")";
04916         Base::Console().Error(str.c_str());
04917         PyErr_SetString(PyExc_Exception,str.c_str());
04918         return NULL;
04919     }
04920     catch(const Py::Exception&)
04921     {
04922         // The exception text is already set
04923         return NULL;
04924     }
04925     catch(...)  // catch the rest!
04926     {
04927         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
04928         return NULL;
04929     }
04930 #else  // DONT_CATCH_CXX_EXCEPTIONS  
04931     catch(const Base::Exception& e) // catch the FreeCAD exceptions
04932     {
04933         std::string str;
04934         str += "FreeCAD exception thrown (";
04935         str += e.what();
04936         str += ")";
04937         e.ReportException();
04938         PyErr_SetString(PyExc_Exception,str.c_str());
04939         return NULL;
04940     }
04941     catch(const Py::Exception&)
04942     {
04943         // The exception text is already set
04944         return NULL;
04945     }
04946 #endif  // DONT_CATCH_CXX_EXCEPTIONS
04947 
04948     PyObject *rvalue = Py_FindMethod(Methods, this, attr);
04949     if (rvalue == NULL)
04950     {
04951         PyErr_Clear();
04952         return GeometrySurfacePy::_getattr(attr);
04953     }
04954     else
04955     {
04956         return rvalue;
04957     }
04958 }
04959 
04960 int BSplineSurfacePy::_setattr(char *attr, PyObject *value)     // __setattr__ function: note only need to handle new state
04961 {
04962     try {
04963         // setter for  special Attributes (e.g. dynamic ones)
04964         int r = setCustomAttributes(attr, value);
04965         if(r==1) return 0;
04966     }
04967 #ifndef DONT_CATCH_CXX_EXCEPTIONS 
04968     catch(const Base::Exception& e) // catch the FreeCAD exceptions
04969     {
04970         std::string str;
04971         str += "FreeCAD exception thrown (";
04972         str += e.what();
04973         str += ")";
04974         e.ReportException();
04975         PyErr_SetString(PyExc_Exception,str.c_str());
04976         return -1;
04977     }
04978     catch(const std::exception& e) // catch other c++ exceptions
04979     {
04980         std::string str;
04981         str += "FC++ exception thrown (";
04982         str += e.what();
04983         str += ")";
04984         Base::Console().Error(str.c_str());
04985         PyErr_SetString(PyExc_Exception,str.c_str());
04986         return -1;
04987     }
04988     catch(const Py::Exception&)
04989     {
04990         // The exception text is already set
04991         return -1;
04992     }
04993     catch(...)  // catch the rest!
04994     {
04995         PyErr_SetString(PyExc_Exception,"Unknown C++ exception");
04996         return -1;
04997     }
04998 #else  // DONT_CATCH_CXX_EXCEPTIONS  
04999     catch(const Base::Exception& e) // catch the FreeCAD exceptions
05000     {
05001         std::string str;
05002         str += "FreeCAD exception thrown (";
05003         str += e.what();
05004         str += ")";
05005         e.ReportException();
05006         PyErr_SetString(PyExc_Exception,str.c_str());
05007         return -1;
05008     }
05009     catch(const Py::Exception&)
05010     {
05011         // The exception text is already set
05012         return -1;
05013     }
05014 #endif  // DONT_CATCH_CXX_EXCEPTIONS
05015 
05016     return GeometrySurfacePy::_setattr(attr, value);
05017 }
05018 
05019 GeomBSplineSurface *BSplineSurfacePy::getGeomBSplineSurfacePtr(void) const
05020 {
05021     return static_cast<GeomBSplineSurface *>(_pcTwinPointer);
05022 }
05023 
05024 #if 0
05025 /* From here on come the methods you have to implement, but NOT in this module. Implement in BSplineSurfacePyImp.cpp! This prototypes 
05026  * are just for convenience when you add a new method.
05027  */
05028 
05029 PyObject *BSplineSurfacePy::PyMake(struct _typeobject *, PyObject *, PyObject *)  // Python wrapper
05030 {
05031     // create a new instance of BSplineSurfacePy and the Twin object 
05032     return new BSplineSurfacePy(new GeomBSplineSurface);
05033 }
05034 
05035 // constructor method
05036 int BSplineSurfacePy::PyInit(PyObject* /*args*/, PyObject* /*kwd*/)
05037 {
05038     return 0;
05039 }
05040 
05041 // returns a string which represents the object e.g. when printed in python
05042 std::string BSplineSurfacePy::representation(void) const
05043 {
05044     return std::string("<GeomBSplineSurface object>");
05045 }
05046 
05047 PyObject* BSplineSurfacePy::bounds(PyObject *args)
05048 {
05049     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05050     return 0;
05051 }
05052 
05053 PyObject* BSplineSurfacePy::isURational(PyObject *args)
05054 {
05055     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05056     return 0;
05057 }
05058 
05059 PyObject* BSplineSurfacePy::isVRational(PyObject *args)
05060 {
05061     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05062     return 0;
05063 }
05064 
05065 PyObject* BSplineSurfacePy::isUPeriodic(PyObject *args)
05066 {
05067     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05068     return 0;
05069 }
05070 
05071 PyObject* BSplineSurfacePy::isVPeriodic(PyObject *args)
05072 {
05073     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05074     return 0;
05075 }
05076 
05077 PyObject* BSplineSurfacePy::isUClosed(PyObject *args)
05078 {
05079     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05080     return 0;
05081 }
05082 
05083 PyObject* BSplineSurfacePy::isVClosed(PyObject *args)
05084 {
05085     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05086     return 0;
05087 }
05088 
05089 PyObject* BSplineSurfacePy::increaseDegree(PyObject *args)
05090 {
05091     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05092     return 0;
05093 }
05094 
05095 PyObject* BSplineSurfacePy::increaseUMultiplicity(PyObject *args)
05096 {
05097     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05098     return 0;
05099 }
05100 
05101 PyObject* BSplineSurfacePy::increaseVMultiplicity(PyObject *args)
05102 {
05103     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05104     return 0;
05105 }
05106 
05107 PyObject* BSplineSurfacePy::incrementUMultiplicity(PyObject *args)
05108 {
05109     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05110     return 0;
05111 }
05112 
05113 PyObject* BSplineSurfacePy::incrementVMultiplicity(PyObject *args)
05114 {
05115     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05116     return 0;
05117 }
05118 
05119 PyObject* BSplineSurfacePy::insertUKnot(PyObject *args)
05120 {
05121     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05122     return 0;
05123 }
05124 
05125 PyObject* BSplineSurfacePy::insertUKnots(PyObject *args)
05126 {
05127     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05128     return 0;
05129 }
05130 
05131 PyObject* BSplineSurfacePy::insertVKnot(PyObject *args)
05132 {
05133     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05134     return 0;
05135 }
05136 
05137 PyObject* BSplineSurfacePy::insertVKnots(PyObject *args)
05138 {
05139     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05140     return 0;
05141 }
05142 
05143 PyObject* BSplineSurfacePy::removeUKnot(PyObject *args)
05144 {
05145     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05146     return 0;
05147 }
05148 
05149 PyObject* BSplineSurfacePy::removeVKnot(PyObject *args)
05150 {
05151     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05152     return 0;
05153 }
05154 
05155 PyObject* BSplineSurfacePy::segment(PyObject *args)
05156 {
05157     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05158     return 0;
05159 }
05160 
05161 PyObject* BSplineSurfacePy::setUKnot(PyObject *args)
05162 {
05163     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05164     return 0;
05165 }
05166 
05167 PyObject* BSplineSurfacePy::setVKnot(PyObject *args)
05168 {
05169     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05170     return 0;
05171 }
05172 
05173 PyObject* BSplineSurfacePy::getUKnot(PyObject *args)
05174 {
05175     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05176     return 0;
05177 }
05178 
05179 PyObject* BSplineSurfacePy::getVKnot(PyObject *args)
05180 {
05181     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05182     return 0;
05183 }
05184 
05185 PyObject* BSplineSurfacePy::setUKnots(PyObject *args)
05186 {
05187     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05188     return 0;
05189 }
05190 
05191 PyObject* BSplineSurfacePy::setVKnots(PyObject *args)
05192 {
05193     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05194     return 0;
05195 }
05196 
05197 PyObject* BSplineSurfacePy::getUKnots(PyObject *args)
05198 {
05199     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05200     return 0;
05201 }
05202 
05203 PyObject* BSplineSurfacePy::getVKnots(PyObject *args)
05204 {
05205     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05206     return 0;
05207 }
05208 
05209 PyObject* BSplineSurfacePy::setPole(PyObject *args)
05210 {
05211     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05212     return 0;
05213 }
05214 
05215 PyObject* BSplineSurfacePy::setPoleCol(PyObject *args)
05216 {
05217     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05218     return 0;
05219 }
05220 
05221 PyObject* BSplineSurfacePy::setPoleRow(PyObject *args)
05222 {
05223     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05224     return 0;
05225 }
05226 
05227 PyObject* BSplineSurfacePy::getPole(PyObject *args)
05228 {
05229     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05230     return 0;
05231 }
05232 
05233 PyObject* BSplineSurfacePy::getPoles(PyObject *args)
05234 {
05235     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05236     return 0;
05237 }
05238 
05239 PyObject* BSplineSurfacePy::setWeight(PyObject *args)
05240 {
05241     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05242     return 0;
05243 }
05244 
05245 PyObject* BSplineSurfacePy::setWeightCol(PyObject *args)
05246 {
05247     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05248     return 0;
05249 }
05250 
05251 PyObject* BSplineSurfacePy::setWeightRow(PyObject *args)
05252 {
05253     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05254     return 0;
05255 }
05256 
05257 PyObject* BSplineSurfacePy::getWeight(PyObject *args)
05258 {
05259     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05260     return 0;
05261 }
05262 
05263 PyObject* BSplineSurfacePy::getWeights(PyObject *args)
05264 {
05265     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05266     return 0;
05267 }
05268 
05269 PyObject* BSplineSurfacePy::getResolution(PyObject *args)
05270 {
05271     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05272     return 0;
05273 }
05274 
05275 PyObject* BSplineSurfacePy::movePoint(PyObject *args)
05276 {
05277     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05278     return 0;
05279 }
05280 
05281 PyObject* BSplineSurfacePy::setUNotPeriodic(PyObject *args)
05282 {
05283     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05284     return 0;
05285 }
05286 
05287 PyObject* BSplineSurfacePy::setVNotPeriodic(PyObject *args)
05288 {
05289     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05290     return 0;
05291 }
05292 
05293 PyObject* BSplineSurfacePy::setUPeriodic(PyObject *args)
05294 {
05295     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05296     return 0;
05297 }
05298 
05299 PyObject* BSplineSurfacePy::setVPeriodic(PyObject *args)
05300 {
05301     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05302     return 0;
05303 }
05304 
05305 PyObject* BSplineSurfacePy::setUOrigin(PyObject *args)
05306 {
05307     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05308     return 0;
05309 }
05310 
05311 PyObject* BSplineSurfacePy::setVOrigin(PyObject *args)
05312 {
05313     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05314     return 0;
05315 }
05316 
05317 PyObject* BSplineSurfacePy::getUMultiplicity(PyObject *args)
05318 {
05319     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05320     return 0;
05321 }
05322 
05323 PyObject* BSplineSurfacePy::getVMultiplicity(PyObject *args)
05324 {
05325     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05326     return 0;
05327 }
05328 
05329 PyObject* BSplineSurfacePy::getUMultiplicities(PyObject *args)
05330 {
05331     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05332     return 0;
05333 }
05334 
05335 PyObject* BSplineSurfacePy::getVMultiplicities(PyObject *args)
05336 {
05337     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05338     return 0;
05339 }
05340 
05341 PyObject* BSplineSurfacePy::exchangeUV(PyObject *args)
05342 {
05343     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05344     return 0;
05345 }
05346 
05347 PyObject* BSplineSurfacePy::uIso(PyObject *args)
05348 {
05349     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05350     return 0;
05351 }
05352 
05353 PyObject* BSplineSurfacePy::vIso(PyObject *args)
05354 {
05355     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05356     return 0;
05357 }
05358 
05359 PyObject* BSplineSurfacePy::reparametrize(PyObject *args)
05360 {
05361     PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented");
05362     return 0;
05363 }
05364 
05365 
05366 
05367 Py::Int BSplineSurfacePy::getUDegree(void) const
05368 {
05369     //return Py::Int();
05370     throw Py::AttributeError("Not yet implemented");
05371 }
05372 
05373 Py::Int BSplineSurfacePy::getVDegree(void) const
05374 {
05375     //return Py::Int();
05376     throw Py::AttributeError("Not yet implemented");
05377 }
05378 
05379 Py::Int BSplineSurfacePy::getMaxDegree(void) const
05380 {
05381     //return Py::Int();
05382     throw Py::AttributeError("Not yet implemented");
05383 }
05384 
05385 Py::Int BSplineSurfacePy::getNbUPoles(void) const
05386 {
05387     //return Py::Int();
05388     throw Py::AttributeError("Not yet implemented");
05389 }
05390 
05391 Py::Int BSplineSurfacePy::getNbVPoles(void) const
05392 {
05393     //return Py::Int();
05394     throw Py::AttributeError("Not yet implemented");
05395 }
05396 
05397 Py::Int BSplineSurfacePy::getNbUKnots(void) const
05398 {
05399     //return Py::Int();
05400     throw Py::AttributeError("Not yet implemented");
05401 }
05402 
05403 Py::Int BSplineSurfacePy::getNbVKnots(void) const
05404 {
05405     //return Py::Int();
05406     throw Py::AttributeError("Not yet implemented");
05407 }
05408 
05409 Py::Object BSplineSurfacePy::getFirstUKnotIndex(void) const
05410 {
05411     //return Py::Object();
05412     throw Py::AttributeError("Not yet implemented");
05413 }
05414 
05415 Py::Object BSplineSurfacePy::getLastUKnotIndex(void) const
05416 {
05417     //return Py::Object();
05418     throw Py::AttributeError("Not yet implemented");
05419 }
05420 
05421 Py::Object BSplineSurfacePy::getFirstVKnotIndex(void) const
05422 {
05423     //return Py::Object();
05424     throw Py::AttributeError("Not yet implemented");
05425 }
05426 
05427 Py::Object BSplineSurfacePy::getLastVKnotIndex(void) const
05428 {
05429     //return Py::Object();
05430     throw Py::AttributeError("Not yet implemented");
05431 }
05432 
05433 Py::List BSplineSurfacePy::getUKnotSequence(void) const
05434 {
05435     //return Py::List();
05436     throw Py::AttributeError("Not yet implemented");
05437 }
05438 
05439 Py::List BSplineSurfacePy::getVKnotSequence(void) const
05440 {
05441     //return Py::List();
05442     throw Py::AttributeError("Not yet implemented");
05443 }
05444 
05445 PyObject *BSplineSurfacePy::getCustomAttributes(const char* attr) const
05446 {
05447     return 0;
05448 }
05449 
05450 int BSplineSurfacePy::setCustomAttributes(const char* attr, PyObject *obj)
05451 {
05452     return 0; 
05453 }
05454 #endif
05455 
05456 
05457 

Generated on Wed Nov 23 18:59:59 2011 for FreeCAD by  doxygen 1.6.1