<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
	<PythonExport
		Father="GeometrySurfacePy"
		Name="BezierSurfacePy"
		Twin="GeomBezierSurface"
		TwinPointer="GeomBezierSurface"
		Include="Mod/Part/App/Geometry.h"
		Namespace="Part"
		FatherInclude="Mod/Part/App/GeometrySurfacePy.h"
		FatherNamespace="Part"
		Constructor="true">
		<Documentation>
			<Author Licence="LGPL" Name="Werner Mayer" EMail="wmayer@users.sourceforge.net" />
			<UserDocu>Describes a rational or non-rational Bezier surface
				-- A non-rational Bezier surface is defined by a table of poles (also known as control points).
				-- A rational Bezier surface is defined by a table of poles with varying associated weights.
			</UserDocu>
		</Documentation>
		<Attribute Name="UDegree" ReadOnly="true">
			<Documentation>
				<UserDocu>
					Returns the polynomial degree in u direction of this Bezier surface,
					which is equal to the number of poles minus 1.
				</UserDocu>
			</Documentation>
			<Parameter Name="UDegree" Type="Int"/>
		</Attribute>
		<Attribute Name="VDegree" ReadOnly="true">
			<Documentation>
				<UserDocu>
					Returns the polynomial degree in v direction of this Bezier surface,
					which is equal to the number of poles minus 1.
				</UserDocu>
			</Documentation>
			<Parameter Name="VDegree" Type="Int"/>
		</Attribute>
		<Attribute Name="MaxDegree" ReadOnly="true">
			<Documentation>
				<UserDocu>
					Returns the value of the maximum polynomial degree of any
					Bezier surface. This value is 25.
				</UserDocu>
			</Documentation>
			<Parameter Name="MaxDegree" Type="Int"/>
		</Attribute>
		<Attribute Name="NbUPoles" ReadOnly="true">
			<Documentation>
				<UserDocu>
					Returns the number of poles in u direction of this Bezier surface.
				</UserDocu>
			</Documentation>
			<Parameter Name="NbUPoles" Type="Int"/>
		</Attribute>
		<Attribute Name="NbVPoles" ReadOnly="true">
			<Documentation>
				<UserDocu>
					Returns the number of poles in v direction of this Bezier surface.
				</UserDocu>
			</Documentation>
			<Parameter Name="NbVPoles" Type="Int"/>
		</Attribute>
		<Methode Name="bounds">
			<Documentation>
				<UserDocu>
					Returns the parametric bounds (U1, U2, V1, V2) of this Bezier surface.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="isURational">
			<Documentation>
				<UserDocu>
					Returns false if the equation of this Bezier surface is polynomial
					(e.g. non-rational) in the u or v parametric direction.
					In other words, returns false if for each row of poles, the associated
					weights are identical
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="isVRational">
			<Documentation>
				<UserDocu>
					Returns false if the equation of this Bezier surface is polynomial
					(e.g. non-rational) in the u or v parametric direction.
					In other words, returns false if for each column of poles, the associated
					weights are identical
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="isUPeriodic">
			<Documentation>
				<UserDocu>Returns false.</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="isVPeriodic">
			<Documentation>
				<UserDocu>Returns false.</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="isUClosed">
			<Documentation>
				<UserDocu>
					Checks if this surface is closed in the u parametric direction.
					Returns true if, in the table of poles the first row and the last
					row are identical.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="isVClosed">
			<Documentation>
				<UserDocu>
					Checks if this surface is closed in the v parametric direction.
					Returns true if, in the table of poles the first column and the
					last column are identical.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="increase">
			<Documentation>
				<UserDocu>
					increase(Int=DegreeU,Int=DegreeV)
					Increases the degree of this Bezier surface in the two
					parametric directions.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="insertPoleColAfter">
			<Documentation>
				<UserDocu>
					Inserts into the table of poles of this surface, after the column
					of poles of index.
					If this Bezier surface is non-rational, it can become rational if
					the weights associated with the new poles are different from each
					other, or collectively different from the existing weights in the
					table.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="insertPoleRowAfter">
			<Documentation>
				<UserDocu>
					Inserts into the table of poles of this surface, after the row
					of poles of index.
					If this Bezier surface is non-rational, it can become rational if
					the weights associated with the new poles are different from each
					other, or collectively different from the existing weights in the
					table.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="insertPoleColBefore">
			<Documentation>
				<UserDocu>
					Inserts into the table of poles of this surface, before the column
					of poles of index.
					If this Bezier surface is non-rational, it can become rational if
					the weights associated with the new poles are different from each
					other, or collectively different from the existing weights in the
					table.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="insertPoleRowBefore">
			<Documentation>
				<UserDocu>
					Inserts into the table of poles of this surface, before the row
					of poles of index.
					If this Bezier surface is non-rational, it can become rational if
					the weights associated with the new poles are different from each
					other, or collectively different from the existing weights in the
					table.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="removePoleCol">
			<Documentation>
				<UserDocu>
					removePoleRow(int=VIndex)
					Removes the column of poles of index VIndex from the table of
					poles of this Bezier surface.
					If this Bezier curve is rational, it can become non-rational.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="removePoleRow">
			<Documentation>
				<UserDocu>
					removePoleRow(int=UIndex)
					Removes the row of poles of index UIndex from the table of
					poles of this Bezier surface.
					If this Bezier curve is rational, it can become non-rational.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="segment">
			<Documentation>
				<UserDocu>
					segment(double=U1,double=U2,double=V1,double=V2)
					Modifies this Bezier surface by segmenting it between U1 and U2
					in the u parametric direction, and between V1 and V2 in the v
					parametric direction.
					U1, U2, V1, and V2 can be outside the bounds of this surface.
					
					-- U1 and U2 isoparametric Bezier curves, segmented between
					   V1 and V2, become the two bounds of the surface in the v
					   parametric direction (0. and 1. u isoparametric curves).
					-- V1 and V2 isoparametric Bezier curves, segmented between
					   U1 and U2, become the two bounds of the surface in the u
					   parametric direction (0. and 1. v isoparametric curves).
					
					The poles and weights tables are modified, but the degree of
					this surface in the u and v parametric directions does not
					change.U1 can be greater than U2, and V1 can be greater than V2.
					In these cases, the corresponding parametric direction is inverted.
					The orientation of the surface is inverted if one (and only one)
					parametric direction is inverted.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="setPole">
			<Documentation>
				<UserDocu>Set a pole of the Bezier surface.</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="setPoleCol">
			<Documentation>
				<UserDocu>Set the column of poles of the Bezier surface.</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="setPoleRow">
			<Documentation>
				<UserDocu>Set the row of poles of the Bezier surface.</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="getPole">
			<Documentation>
				<UserDocu>Get a pole of index (UIndex,VIndex) of the Bezier surface.</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="getPoles">
			<Documentation>
				<UserDocu>Get all poles of the Bezier surface.</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="setWeight">
			<Documentation>
				<UserDocu>
					Set the weight of pole of the index (UIndex, VIndex)
					for the Bezier surface.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="setWeightCol">
			<Documentation>
				<UserDocu>
					Set the weights of the poles in the column of poles
					of index VIndex of the Bezier surface.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="setWeightRow">
			<Documentation>
				<UserDocu>
					Set the weights of the poles in the row of poles
					of index UIndex of the Bezier surface.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="getWeight">
			<Documentation>
				<UserDocu>
					Get a weight of the pole of index (UIndex,VIndex)
					of the Bezier surface.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="getWeights">
			<Documentation>
				<UserDocu>Get all weights of the Bezier surface.</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="getResolution" Const="true">
			<Documentation>
				<UserDocu>
					Computes two tolerance values for this Bezier surface, based on the
					given tolerance in 3D space Tolerance3D. The tolerances computed are:
					-- UTolerance in the u parametric direction and
					-- VTolerance in the v parametric direction.

					If f(u,v) is the equation of this Bezier surface, UTolerance and VTolerance
					guarantee that:
					|u1 - u0| &lt; UTolerance
					|v1 - v0| &lt; VTolerance
					====&gt; ||f(u1, v1) - f(u2, v2)|| &lt; Tolerance3D
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="exchangeUV">
			<Documentation>
				<UserDocu>
					Exchanges the u and v parametric directions on this Bezier surface.
					As a consequence:
					-- the poles and weights tables are transposed,
					-- degrees, rational characteristics and so on are exchanged between
					   the two parametric directions, and
					-- the orientation of the surface is reversed.
				</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="uIso">
			<Documentation>
				<UserDocu>Builds the U isoparametric Bezier curve of this Bezier surface</UserDocu>
			</Documentation>
		</Methode>
		<Methode Name="vIso">
			<Documentation>
				<UserDocu>Builds the V isoparametric Bezier curve of this Bezier surface</UserDocu>
			</Documentation>
		</Methode>
	</PythonExport>
</GenerateModel>
