The IfcAxis2Placement3D provides location and orientations to place items in a three-dimensional space. The attribute Axis defines the Z direction, RefDirection the X direction. The Y direction is derived.
If the attribute values for Axis and RefDirection are not given, the placement defaults to P[1] (x-axis) as [1.,0.,0.], P[2] (y-axis) as [0.,1.,0.] and P[3] (z-axis) as [0.,0.,1.].


/* Generated By: IFC Tools Project EXPRESS TO JAVA COMPILER: Do not edit this file!! */
package ifc2x3javatoolbox.ifc2x3tc1;
/**
* This is a default implementation of the entity IfcAxis2Placement3D<br><br>
*<br><br>
* Copyright: CC BY-NC-SA 3.0 DE (cc) 2013 Eike Tauscher and Michael Theiler<br><br>
* The whole package including this class is licensed under<br>
* <a rel='license' href='http://creativecommons.org/licenses/by-nc-sa/3.0/de/deed.en/'>
* Creative Commons Attribution-Non-Commercial-Share Alike 3.0 Germany</a>.<br><br>
* If you are using the package or parts of it in any commercial way, a commercial license is required.
* Visit <a href='http://www.ifctoolsproject.com'>http://www.ifctoolsproject.com</a> for more information
* or contact us directly: <a href='mailto:info@ifctoolsproject.com'>info@ifctoolsproject.com</a><br>
*/
public class IfcAxis2Placement3D extends IfcPlacement implements IfcAxis2Placement, ClassInterface
{
private static final String[] nonInverseAttributes = new String[]{"IfcCartesianPoint","IfcDirection","IfcDirection"};
private java.util.ArrayList<CloneableObject> stepParameter = null;
private java.util.HashSet<ObjectChangeListener> listenerList = null;
protected int stepLineNumber;
/** Axis is an OPTIONAL attribute**/
protected IfcDirection Axis;
/** RefDirection is an OPTIONAL attribute**/
protected IfcDirection RefDirection;
/**
* The default constructor.
**/
public IfcAxis2Placement3D(){}
/**
* Constructs a new IfcAxis2Placement3D object using the given parameters.
*
* @param Location DEMANDED parameter of type IfcCartesianPoint - may not be null.
* @param Axis OPTIONAL parameter of type IfcDirection
* @param RefDirection OPTIONAL parameter of type IfcDirection
**/
public IfcAxis2Placement3D(IfcCartesianPoint Location, IfcDirection Axis, IfcDirection RefDirection)
{
this.Location = Location;
this.Axis = Axis;
this.RefDirection = RefDirection;
resolveInverses();
}
/**
* This method initializes the IfcAxis2Placement3D object using the given parameters.
*
* @param Location DEMANDED parameter of type IfcCartesianPoint - may not be null.
* @param Axis OPTIONAL parameter of type IfcDirection
* @param RefDirection OPTIONAL parameter of type IfcDirection
**/
public void setParameters(IfcCartesianPoint Location, IfcDirection Axis, IfcDirection RefDirection)
{
this.Location = Location;
this.Axis = Axis;
this.RefDirection = RefDirection;
resolveInverses();
}
/**
* This method is used internally and should NOT be used for own purposes.
**/
void initialize(java.util.ArrayList<CloneableObject> parameters)
{
this.Location = (IfcCartesianPoint) parameters.get(0);
this.Axis = (IfcDirection) parameters.get(1);
this.RefDirection = (IfcDirection) parameters.get(2);
resolveInverses();
}
/**
* This method is used internally and should NOT be used for own purposes.
**/
void destruct()
{
super.destruct();
listenerList = null;
}
private void resolveInverses()
{
}
/**
* This method is used internally and should NOT be used for own purposes.
**/
String[] getNonInverseAttributeTypes()
{
return IfcAxis2Placement3D.nonInverseAttributes; }
/**
* This method is used internally and should NOT be used for own purposes.
**/
private java.util.HashSet<String> getRedefinedDerivedAttributeTypes()
{
java.util.HashSet<String> redefinedDerivedAttributes = new java.util.HashSet<String>();
return redefinedDerivedAttributes; }
/**
* This method returns the object IFC STEP representation. This method is called by the IfcModel object to write IFC STEP files.
*
* @return the IFC STEP representation of this object
**/
public String getStepLine()
{
String stepString = new String("#"+this.stepLineNumber+"= ");
stepString = stepString.concat("IFCAXIS2PLACEMENT3D(");
if(getRedefinedDerivedAttributeTypes().contains("Location")) stepString = stepString.concat("*,");
else{
if(this.Location != null) stepString = stepString.concat(((RootInterface)this.Location).getStepParameter(IfcCartesianPoint.class.isInterface())+",");
else stepString = stepString.concat("$,");
}
if(getRedefinedDerivedAttributeTypes().contains("Axis")) stepString = stepString.concat("*,");
else{
if(this.Axis != null) stepString = stepString.concat(((RootInterface)this.Axis).getStepParameter(IfcDirection.class.isInterface())+",");
else stepString = stepString.concat("$,");
}
if(getRedefinedDerivedAttributeTypes().contains("RefDirection")) stepString = stepString.concat("*);");
else{
if(this.RefDirection != null) stepString = stepString.concat(((RootInterface)this.RefDirection).getStepParameter(IfcDirection.class.isInterface())+");");
else stepString = stepString.concat("$);");
}
return stepString;
}
/**
* This method is used internally and should NOT be used for own purposes.
**/
public String getStepParameter(boolean isSelectType)
{
return "#" + this.stepLineNumber;
}
/**
* This method returns the line number within a IFC STEP representation. This method is called from other objects, where this one is referenced.
*
* @return the STEP line number
**/
public int getStepLineNumber()
{
return this.stepLineNumber;
}
/**
* This method is used internally and should NOT be used for own purposes.
**/
void setStepLineNumber(int number)
{
this.stepLineNumber = number;
}
/**
* This method sets the Axis attribute to the given value.
*
* @param Axis DEMANDED value to set - may not be null
**/
public void setAxis(IfcDirection Axis)
{
this.Axis = Axis;
fireChangeEvent();
}
/**
* This method returns the value of the Axis attribute.
*
* @return the value of Axis
/**/
public IfcDirection getAxis()
{
return this.Axis;
}
/**
* This method sets the RefDirection attribute to the given value.
*
* @param RefDirection DEMANDED value to set - may not be null
**/
public void setRefDirection(IfcDirection RefDirection)
{
this.RefDirection = RefDirection;
fireChangeEvent();
}
/**
* This method returns the value of the RefDirection attribute.
*
* @return the value of RefDirection
/**/
public IfcDirection getRefDirection()
{
return this.RefDirection;
}
/**
* This method is used internally and should NOT be used for own purposes.
**/
void setStepParameter(java.util.ArrayList<CloneableObject> parameter)
{
this.stepParameter = parameter;
}
/**
* This method is used internally and should NOT be used for own purposes.
**/
java.util.ArrayList<CloneableObject> getStepParameter()
{
return this.stepParameter;
}
/**
* This method registers an ObjectChangeListener to this object. An event is fired whenever one of its values was changed.
*
*@param listener the listener to register
**/
public void addObjectChangeListener(ObjectChangeListener listener)
{
if (listenerList == null) listenerList = new java.util.HashSet<ObjectChangeListener>(1,1);
listenerList.add(listener);
}
/**
* This method unregisters an ObjectChangeListener from this object.
*
*@param listener the listener to unregister
**/
public void removeObjectChangeListener(ObjectChangeListener listener)
{
if (listenerList == null) return;
listenerList.remove(listener);
if (listenerList.size()==0) listenerList = null;
}
/**
* This method removes all currently registered ObjectChangeListeners from this object.
**/
public void removeAllObjectChangeListeners()
{
listenerList = null;
}
protected void fireChangeEvent()
{
if(listenerList == null) return;
for(ObjectChangeListener listener : listenerList)
listener.ifcModelObjectChange(this);
}
/**
* This method clones the object (deep cloning).
*
* @return the cloned object
**/
public Object clone()
{
IfcAxis2Placement3D ifcAxis2Placement3D = new IfcAxis2Placement3D();
if(this.Location != null)
ifcAxis2Placement3D.setLocation((IfcCartesianPoint)this.Location.clone());
if(this.Axis != null)
ifcAxis2Placement3D.setAxis((IfcDirection)this.Axis.clone());
if(this.RefDirection != null)
ifcAxis2Placement3D.setRefDirection((IfcDirection)this.RefDirection.clone());
return ifcAxis2Placement3D;
}
/**
* This method copys the object as shallow copy (all referenced objects are remaining).
*
* @return the cloned object
**/
public Object shallowCopy()
{
IfcAxis2Placement3D ifcAxis2Placement3D = new IfcAxis2Placement3D();
if(this.Location != null)
ifcAxis2Placement3D.setLocation(this.Location);
if(this.Axis != null)
ifcAxis2Placement3D.setAxis(this.Axis);
if(this.RefDirection != null)
ifcAxis2Placement3D.setRefDirection(this.RefDirection);
return ifcAxis2Placement3D;
}
/**
* This method returns the objects standard description.
*
* @return the standard description
**/
public String toString()
{
return "#"+ this.getStepLineNumber() + " " + this.getClass().getSimpleName();
}
}