IfcCircle

扫码查看

An IfcCircle is a curve consisting of a set of points having equal distance from the center.

NOTE  A circular arc segment is defined by using the IfcTrimmedCurve with BasisCurve being an IfcCircle.

and the circle is parameterized as

The parameterization range is 0 ≤ u ≤ 2π (0 ≤ u ≤ 360 degree).
In the placement coordinate system defined above, the circle is the equation C = 0, where

The positive sense of the circle at any point is in the tangent direction, T, to the curve at the point, where

XSD Specification

<xs:element name="IfcCircle" type="ifc:IfcCircle" substitutionGroup="ifc:IfcConic" nillable="true"/>
 <xs:complexType name="IfcCircle">
  <xs:complexContent>
   <xs:extension base="ifc:IfcConic">
    <xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
   </xs:extension>
  </xs:complexContent>
 </xs:complexType>

EXPRESS Specification

ENTITY IfcCircle
 SUBTYPE OF (IfcConic);
  Radius : IfcPositiveLengthMeasure;
END_ENTITY;
/* 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 IfcCircle<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 IfcCircle extends IfcConic implements ClassInterface
{
    private static final String[] nonInverseAttributes = new String[]{"IfcAxis2Placement","IfcPositiveLengthMeasure"};
    private java.util.ArrayList<CloneableObject> stepParameter = null;
    private java.util.HashSet<ObjectChangeListener> listenerList = null;
    protected int stepLineNumber;
    /** Radius is an DEMANDED attribute - may not be null**/
    protected IfcPositiveLengthMeasure Radius;
    /**
    * The default constructor.
    **/
    public IfcCircle(){}

    /**
    * Constructs a new IfcCircle object using the given parameters.
    *
    * @param Position DEMANDED parameter of type IfcAxis2Placement - may not be null.
    * @param Radius DEMANDED parameter of type IfcPositiveLengthMeasure - may not be null.
    **/
    public IfcCircle(IfcAxis2Placement Position, IfcPositiveLengthMeasure Radius)
    {
        this.Position = Position;
        this.Radius = Radius;
        resolveInverses();
    }

    /**
     * This method initializes the IfcCircle object using the given parameters.
    *
    * @param Position DEMANDED parameter of type IfcAxis2Placement - may not be null.
    * @param Radius DEMANDED parameter of type IfcPositiveLengthMeasure - may not be null.
    **/
    public void setParameters(IfcAxis2Placement Position, IfcPositiveLengthMeasure Radius)
    {
        this.Position = Position;
        this.Radius = Radius;
        resolveInverses();
    }

    /**
     * This method is used internally and should NOT be used for own purposes.
    **/
    void initialize(java.util.ArrayList<CloneableObject> parameters)
    {
        this.Position = (IfcAxis2Placement) parameters.get(0);
        this.Radius = (IfcPositiveLengthMeasure) parameters.get(1);
        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 IfcCircle.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("IFCCIRCLE(");
        if(getRedefinedDerivedAttributeTypes().contains("Position")) stepString = stepString.concat("*,");
        else{
        if(this.Position != null)        stepString = stepString.concat(((RootInterface)this.Position).getStepParameter(IfcAxis2Placement.class.isInterface())+",");
        else        stepString = stepString.concat("$,");
        }
        if(getRedefinedDerivedAttributeTypes().contains("Radius")) stepString = stepString.concat("*);");
        else{
        if(this.Radius != null)        stepString = stepString.concat(((RootInterface)this.Radius).getStepParameter(IfcPositiveLengthMeasure.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 Radius attribute to the given value.
    *
    * @param Radius OPTIONAL value to set
    **/
    public void setRadius(IfcPositiveLengthMeasure Radius)
    {
        this.Radius = Radius;
        fireChangeEvent();
    }

    /**
    * This method returns the value of the Radius attribute.
    *
    * @return the value of Radius
    /**/
    public IfcPositiveLengthMeasure getRadius()
    {
        return this.Radius;
    }

    /**
     * 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()
    {
        IfcCircle ifcCircle = new IfcCircle();
        if(this.Position != null)
            ifcCircle.setPosition((IfcAxis2Placement)this.Position.clone());
        if(this.Radius != null)
            ifcCircle.setRadius((IfcPositiveLengthMeasure)this.Radius.clone());
        return ifcCircle;
    }

    /**
     * This method copys the object as shallow copy (all referenced objects are remaining).
     *
     * @return the cloned object
    **/
    public Object shallowCopy()
    {
        IfcCircle ifcCircle = new IfcCircle();
        if(this.Position != null)
            ifcCircle.setPosition(this.Position);
        if(this.Radius != null)
            ifcCircle.setRadius(this.Radius);
        return ifcCircle;
    }

    /**
    * This method returns the objects standard description.
    *
    * @return the standard description
    **/
    public String toString()
    {
        return "#"+ this.getStepLineNumber() + " " + this.getClass().getSimpleName();
    }


}
02-12 04:17
查看更多