<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
  <PythonExport 
      Father="PyObjectBase" 
      Name="BoundBoxPy" 
      Twin="BoundBox" 
      TwinPointer="BoundBox3d" 
      Include="Base/BoundBox.h" 
      FatherInclude="Base/PyObjectBase.h" 
      Namespace="Base" 
      Constructor="true"
      Delete="true" 
      FatherNamespace="Base">
    <Documentation>
      <Author Licence="LGPL" Name="Juergen Riegel" EMail="FreeCAD@juergen-riegel.net" />
      <DeveloperDocu>This is the BoundBox export class</DeveloperDocu>
      <UserDocu>Bound box class
A bounding box is an orthographic cube which is a way to describe outer boundaries.
You get a bounding box from a lot of 3D types. It is often used to check if a 3D
entity lies in the range of another object. Checking for boundig interference first
can save a lot of computing time!

Constructor:
App.BoundBox([Xmin,Ymin,Zmin,Xmax,Ymax,Zmax])
App.BoundBox(Tuple, Tuple)
App.BoundBox(Vector, Vector)
App.BoundBox(BoundBox)
	  </UserDocu>
    </Documentation>
    <Methode Name="add">
      <Documentation>
        <UserDocu>method add(BoundBox)
Add (enlarge) the given BoundBox</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="isIntersection">
      <Documentation>
        <UserDocu>method isIntersection(Vector|BoundBox|Vector Base, Vector Dir)
Checks if the given object intersects with the BoundBox. That can be:
- A Vector (Point)
- Another BoundBox
- A line, specified by Base and Dir
		</UserDocu>
      </Documentation>
	</Methode>
	<Methode Name="enlarge">
		<Documentation>
			<UserDocu>method enlarge(Float)
Enlarge the BoundBox by the given value in each direction.
A negative value shrinks the box.</UserDocu>
		</Documentation>
	</Methode>

	  <Methode Name="getIntersectionPoint">
		  <Documentation>
			  <UserDocu>method Vector getIntersectionPoint(Vector Base, Vector Dir, [float epsilon=0.0001])
Calculate the intersection point of a line with the BoundBox
The Base point must lie inside the bounding box, if not an
exception is thrown.
			  </UserDocu>
		  </Documentation>
	  </Methode>
	  <Methode Name="move">
		  <Documentation>
			  <UserDocu> method getIntersectionPoint(Vector)
Move the BoundBox by the given vector
			  </UserDocu>
		  </Documentation>
	  </Methode>
	  <Methode Name="isCutPlane">
      <Documentation>
        <UserDocu>method bool isCutPlane(Vector Base, Vector Normal)
Check if the plane specified by Base and Normal intersects (cuts) the BoundBox</UserDocu>
      </Documentation>
    </Methode>
		<Methode Name="isInside">
			<Documentation>
				<UserDocu>
					method bool isInside(Vector Base|BoundBox box)
Check if the point or bounding box is inside this bounding box
				</UserDocu>
			</Documentation>
		</Methode>
		<Attribute Name="Center" ReadOnly="true">
		  <Documentation>
			  <UserDocu>Center point of the bounding box</UserDocu>
		  </Documentation>
		  <Parameter Name="Center" Type="Object" />
	  </Attribute>
	  <Attribute Name="XMax" ReadOnly="false">
		  <Documentation>
			  <UserDocu>The maximum x boundary position</UserDocu>
		  </Documentation>
		  <Parameter Name="XMax" Type="Float" />
	  </Attribute>
	  <Attribute Name="YMax" ReadOnly="false">
		  <Documentation>
			  <UserDocu>The maximum y boundary position</UserDocu>
		  </Documentation>
		  <Parameter Name="YMax" Type="Float" />
	  </Attribute>
	  <Attribute Name="ZMax" ReadOnly="false">
		  <Documentation>
			  <UserDocu>The maximum z boundary position</UserDocu>
		  </Documentation>
		  <Parameter Name="ZMax" Type="Float" />
	  </Attribute>
	  <Attribute Name="XMin" ReadOnly="false">
		  <Documentation>
			  <UserDocu>The minimum x boundary position</UserDocu>
		  </Documentation>
		  <Parameter Name="XMin" Type="Float" />
	  </Attribute>
	  <Attribute Name="YMin" ReadOnly="false">
		  <Documentation>
			  <UserDocu>The minimum y boundary position</UserDocu>
		  </Documentation>
		  <Parameter Name="YMin" Type="Float" />
	  </Attribute>
	  <Attribute Name="ZMin" ReadOnly="false">
		  <Documentation>
			  <UserDocu>The minimum z boundary position</UserDocu>
		  </Documentation>
		  <Parameter Name="ZMin" Type="Float" />
	  </Attribute>
	  <Attribute Name="XLength" ReadOnly="true">
		  <Documentation>
			  <UserDocu>Length of the BoundBox in x direction</UserDocu>
		  </Documentation>
		  <Parameter Name="XLength" Type="Float" />
	  </Attribute>
	  <Attribute Name="YLength" ReadOnly="true">
		  <Documentation>
			  <UserDocu>Length of the BoundBox in y direction</UserDocu>
		  </Documentation>
		  <Parameter Name="YLength" Type="Float" />
	  </Attribute>
	  <Attribute Name="ZLength" ReadOnly="true">
		  <Documentation>
			  <UserDocu>Length of the BoundBox in z direction</UserDocu>
		  </Documentation>
		  <Parameter Name="ZLength" Type="Float" />
	  </Attribute>
 	  <Attribute Name="DiagonalLength" ReadOnly="true">
		  <Documentation>
			  <UserDocu>Diagonal length of the BoundBox</UserDocu>
		  </Documentation>
		  <Parameter Name="DiagonalLength" Type="Float" />
	  </Attribute>
  </PythonExport>
</GenerateModel>
