Home| IFCDocs|

What are Extensions?

Extensions are modules or classes methods written in Ruby.
They extend the basic functionality of IFC classes and the server

IfcPlanarExtent


IfcCircleHollowProfileDef

method: area
method: perimeter
method: xyz_array *
method: to_svg
method: svg(scale=1,transformation="")

IfcTrapeziumProfileDef


IFC

method:getObjectByLineID(id)
Return an IFC object by its STEP ID

method:IFC_CLASS_NAME.nonInverseAttributes
Return a list of IFC class basic attributes

IFCCOLUMN.nonInverseAttributes: -->>>
"|globalId |ownerHistory |name |description |objectType |objectPlacement |representation |tag"

method:IFCObject.to_xml (obj)
Serialize any IFC object as XML

Example: "#61185".to_obj.to_xml -->>>

<IFCCOLUMN>
<line_id>61185</line_id>
<globalId>'0APvzagRfDa8S2CxmCLJFH'</globalId>
<ownerHistory>#13</ownerHistory>
<name>'St\S\|tze-001'</name>
<description>''</description>
<objectType>$</objectType>
<objectPlacement>#61239</objectPlacement>
<representation>#61228</representation>
<tag>$</tag>
</IFCCOLUMN>

method:IFCObject.to_csv(obj)
Serialize any IFC object as Comma-Separated Values (CSV)

method:IFCObject.to_html (obj)
Serialize any IFC object as row in HTML table

method:IFC_CLASS_NAME.list(cols="")
Return a list of all IFC class instances, the parameter 'cols' can be used to define a set of custom data fields to be reported

method:IFCObject.as_link
Return HTML hyperlink to any IFC object instance

method:IFC_CLASS_NAME.where (cond,output)
Return a hash of user defined output applied on IFCCLASS object's instances which meet the 'cond' expression, 'all' or true can be used to retrive all instances, 'cond' can be any valid Ruby expression applied on each object instance, the 'o' is used as place holder for object instances
IFCWINDOW.where("all","o.area > 2.00")


IfcOpenShell

method: to_dae(objectPlacement=nil,*args)
convert the geometry data of this BoundingBox object to COLLADA format


IfcQuantityLength

method: to_row
method: to_xml(obj)
method: attach_to_obj(obj)

IfcLine

method: xyz_array(value=1)
method: xyz_min_max(value=1)

IfcAxis2Placement3D

method: x_axis
method: z_axis
method: xyz
method: matrix
method: matrix2d

IfcGrid


IfcClassification

method: classificationForObjects *
method: hasReferences *
method: contains *

IfcAsymmetricIShapeProfileDef

method: to_svg
method: svg(scale=1,transformation="")

IfcTask


IfcPropertyEnumeration


IfcSlab


IfcVertexPoint

method: to_dae
method: to_dae_geometry(mesh_id="")
method: to_dae_node(ifclocalplacemenet=nil)

IfcRelConnectsPortToElement

method: count()
method: add(instance_id)
method: count_by_class

IfcRelDefinesByType

method: attach_to_obj

IfcRelVoidsElement

method: count()
method: add(instance_id)
method: count_by_class

IfcDraughtingPreDefinedColour

method: to_html_div
method: to_RGB
method: to_RGB_HEX

IfcBuildingElementType_classes

method: attach_to_obj(obj)
method: attach_to_obj(obj)

IfcPropertyEnumeratedValue

method: to_row
method: to_xml(obj)
method: attach_to_obj(obj)

IfcCircleProfileDef

method: area
method: perimeter
method: xyz_array
method: xy_array
method: to_svg
method: svg(scale=1,transformation="")

IfcPropertySetTemplate

method: propertyTemplates_html
method: propertyTemplates

IfcTypeProduct

method: attach_to_obj(obj)

This method links the "Type" properties with the associated objects(through IfcRelDefinesByType) as new attributes to be used in reports and quires as fellow:


IfcArbitraryProfileDefWithVoids

method: area
method: xyz_array

IfcWindowPanelProperties

method: property_details

IfcPolyline

method: to_a
method: xyz_array
method: xy_array
method: xy_min_max
method: to_xml1(obj=self)
method: to_xml(obj=self)
method: to_svg(scale=1)
method: svg(scale=1,transformation="")
method: area
method: perimeter
method: contains_point?(point)
method: outside_bounding_box?(point)
method: to_dae(placement=nil, *args)
method: to_dae_geometry(mesh_id="")
method: to_dae_node(placement=nil)
method: add_point(id)
method: self.new_from_points_array(xy_array=[])

IfcZShapeProfileDef


IfcCartesianPoint

method: to_xml( o=self)
method: to_xyz
method: xyz
method: min_max
return a list of Xmin,Xmax,Ymin,Ymax,Zmin,Zmax of all IfcCartesianPoint instances


IfcElementQuantity

method: to_details(str="")
method: property_names_values_hash
method: property_details
method: property_details_xml
method: to_details_xml(str="")
method: attach_to_obj(obj)
method: names_values_hash(str="")

IfcLocalPlacement

method: location

IfcRelAggregates


IfcObjectDefinition

method: hasAssignments
method: isNestedBy #
method: hasContext
method: decomposes
method: hasAssociations

IfcFillAreaStyle

method: validate_rules
method: fillStyles_colour

IfcQuantityArea

method: to_row
method: to_xml(obj)
method: attach_to_obj(obj)

IfcLibraryReference


IfcPropertyBoundedValue


IfcExtrudedAreaSolid

method: area
method: perimeter
method: diameter
method: area_side
method: volume
method: height
method: to_dae(objectPlacement=nil,*args)
method: xyz_min_max(location=[0,0,0])
method: to_dae_geometry(mesh_id = "")
method: to_dae_node(ifclocalplacement=nil)
method: svg(scale=1,transformation="")
method: to_svg

IfcRelConnectsPorts

method: count()
method: add(instance_id)
method: count_by_class

IfcRectangleProfileDef

method: area
method: xyz_array
method: perimeter
method: svg(scale=1,transformation="")

IfcFace

method: to_mesh
method: get_normal
method: to_dae(objectPlacement=nil,*args)
method: to_dae_geometry(mesh_id="")
method: to_dae_node(ifclocalplacemenet=nil)
method: area

IfcDoorPanelProperties

method: property_details
method: attach_to_obj(obj)

IfcShapeRepresentation

method: preview
method: to_dae_geometry(mesh_id="")
method: to_dae_node(local=nil)
method: to_dae(objectPlacement=nil,*args)
method: volume

property_window_extension

method: format_property(obj,att)
method: property_table(obj=self)

IfcFacetedBrep

method: to_dae(objectPlacement=nil,*args)
method: to_mesh
method: to_dae_geometry(mesh_id="")
method: to_dae_node(local=nil)
method: area

IfcRelDefinesByProperties

method: to_xml(obj=self)
method: cache *
method: attach

IfcRectangleHollowProfileDef

method: #area *
method: perimeter

IfcRelFillsElement

method: count()
method: add(instance_id)
method: count_by_class

IfcTrimmedCurve

method: xyz_array

IfcRelSequence

method: count()
method: add(instance_id)
method: count_by_class

IfcDistributionFlowElement

method: hasControlElements *

IfcMaterialList

method: getMaterials
method: attach_to_obj(obj)
This method links the names and count of the material objects which are associated to objects through the relation IfcRelAssociatesMaterial as a new attributes .
The new attributes to be used in reports or filters called:


IfcProduct

method: referencedBy
method: area
method: to_dae(placement=nil,*args)
method: volume
method: area_side
method: location

IfcEdge

method: length
method: to_dae
method: to_dae_geometry(mesh_id="")
method: to_dae_node(ifclocalplacemenet=nil)
method: to_xml( o=self)

IfcDimensionalExponents

method: unitExponent

IfcColourRgb

method: to_RGB
method: to_RGB_HEX
method: to_html_div

IfcDerivedProfileDef


IfcRelAssociatesClassification

method: attach_to_obj

IfcRelDecomposes

method: attach_to_obj

IfcSurfaceStyleRendering

method: surfaceColour_html
method: effect
method: material

IfcUShapeProfileDef


IfcSite

method: to_PSF21

IfcOpeningElement

method: area

IfcConnectedFaceSet

method: to_dae(objectPlacement=nil, *args)
method: to_dae_geometry(mesh_id="")
method: to_dae_node(placement=nil)

IfcScheduleTimeControl

method: detail

IfcDateTime

method: date_time

IfcElement

method: get_inverse_attributes *
method: fillsVoids1
method: hasStructuralMember1 *
method: connectedTo1
return information (class, globalId, name) about the elements which are connected to this element through IfcRelConnectsEelement relationship

Example: List all connected IfcBuildingElements in the IFC model: __4D_IFC2x4.ifc

method: hasCoverings1
method: referencedInStructures1
List the spatial structure elements(site, building, buildingStorey, space) in which this IfcElement object is referenced (through IfcRelReferencedInSpatialStructure), but not primarily contained

method: hasPorts1 *
method: hasOpenings1
method: providesBoundaries1
return a table of spaces objects of space boundaries which are defined through IfcRelSpaceBoundary relation for this IfcElement instance

Example: List space boundaries of slabs and walls in the IFC model :AC10-Institute-Var-1.ifc

method: connectedFrom1
return information (class, globalId, name) about the elements which are connected with this element through IfcRelConnectsEelement relationship

method: containedInStructure1
return the parent object(container) of this element

TODO: hasProjections,isConnectionRealization

IfcPropertySingleValue

method: to_row
method: valid_name(obj=self)
method: valid_value(obj=self)
method: to_xml(obj=self)
method: to_xml_full(obj=self)
method: #to_csv(obj=self)
method: attach_to_obj(obj)

IfcAxis2Placement2D

method: xy
method: x
method: y
method: matrix
method: matrix2d

IfcRelAssignsTasks

method: saveTimeForTask

IfcWindowLiningProperties

method: property_details

IfcConversionBasedUnit


IfcMaterialLayerSetUsage

method: attach_to_obj(obj)
This method links the names, count and total thickness of the material layers (IfcMaterialLayerSetUsage) which are associated to objects through the relation IfcRelAssociatesMaterial as a new attributes .
The new attributes to be used in reports or filters called:


IfcRelationship

method: count()
method: add(instance_id)
method: count_by_class

IfcStyledItem


IfcDoorLiningProperties

method: property_details
method: attach_to_obj(obj)

IfcSurfaceStyle

method: to_dae_material

IfcRelAssociatesMaterial

method: attach_to_obj
This method will be called automatically if this extension is loaded (the class IfcRelAssociatesMaterial is selected and the caching is disabled)
It links the material properties with the associated objects as new attributes to be used in reports and quires as fellow:


method: qto
This method can be used to create a QuantityTakeOff report.

Beside selecting IfcRelAssociatesMaterial class we have to select the IfcRelDefinedByProperties,IfcRelDefinesByType classes as well.
The fellowing attributes will be used for calculations:


IfcPropertySet

method: property_details
method: properties
Return an alphabitic sorted array of property names defined insinde the PropertySet object

method: hasProperty?(property)
Check if the PropertySet has a single Property with the name 'property', returns false or true

method: hasPropertyWithValue?(property,val)
Check if the PropertySet has a single Property with the name 'property' and the value 'value', returns false or true

method: property_value(name="")
method: property_details_xml
method: to_xml(obj=self)
method: property_names_values
method: property_names_values_hash
method: attach_to_obj(obj)

IfcQuantityWeight

method: to_row
method: to_xml(obj)
method: attach_to_obj(obj)

IfcBoundingBox

method: to_dae(objectPlacement=nil,*args)
convert the geometry data of IfcBoundingBox object to COLLADA format

method: corner_xyz
method: x_min
method: x_max
method: y_min
method: y_max
method: z_min
method: z_max
method: volume
return the volume of the BoundingBox object

method: center *

IfcProfileDef

method: hasExternalReference *
method: hasProperties *

IfcQuantityTime

method: to_row
method: to_xml(obj)
method: attach_to_obj(obj)

IfcMappedItem

method: area
method: volume
method: area_side
method: height
method: to_dae(objectPlacement=nil)
method: to_dae_geometry(mesh_id="")
method: to_dae_node(local=nil)
method: check_transformation

IfcIShapeProfileDef

method: area
method: perimeter
method: xyz_array *
method: xy_array *
method: to_svg
method: svg(scale=1,transformation="")

IfcResource

method: resourceOf *

IfcOwnerHistory

method: creationDate

IfcConstraint

method: hasExternalReferences *
method: propertiesForConstraint *

IfcGeometricCurveSet

method: to_dae(objectPlacement=nil,*args)
method: to_dae_geometry(mesh_id="")
method: to_dae_node(local=nil)
method: svg(scale=1,transformation="")

IfcCompositeCurve

method: xyz_array

IfcQuantityCount

method: to_row
method: to_xml(obj)
method: attach_to_obj(obj)

IfcRepresentationMap

method: to_dae
method: to_dae_geometry(mesh_id=nil)
method: to_dae_node(local=nil)

IfcMeasureWithUnit


IfcExternalReference

method: externalReferenceForResources

IfcProductRepresentation

method: to_dae(objectPlacement=nil,*args)

IfcMaterial

method: attach_to_obj(obj)
This method links the name of the material object to the associated objects through the relation IfcRelAssociatesMaterial as a new attribute .
The new attribute to be used in reports or filters called:


IfcWindowStyle

method: property_details

IfcPolyLoop

method: get_normal_default
method: get_normal
method: to_xml(obj=self)
method: to_svg
method: to_xy_xml
method: perimeter
method: to_mesh
method: to_dae(objectPlacement=nil)
method: to_dae_geometry(mesh_id="")
method: to_dae_node(placement=nil)
method: area
method: dx_dy_dz
method: xyz_min
method: xyz_max
method: is_circle?(precision=0.01)
method: inXY?

IfcEllipseProfileDef

method: area
method: perimeter

IfcTShapeProfileDef


IfcQuantityVolume

method: to_row
method: to_xml(obj)
method: attach_to_obj(obj)

IfcDoor

method: area

IfcCompositeProfileDef


IfcRepresentation

method: ofProductRepresentation
method: layerAssignments
method: representationMap
method: area
method: area_side
method: volume
method: height
method: to_svg
method: to_dae(objectPlacement=nil,*args)

IfcDirection

method: get_normal

IfcProductDefinitionShape

method: to_dae(objectPlacement=nil,*args)
method: to_dae_geometry(mesh_id="")
method: to_dae_node(local=nil)
method: volume

IfcGridAxis

method: to_dae
method: svg(scale=1,transformation="")

IfcAlignment2DHorizontalSegment

method: to_svg
method: polarToCartesian(centerX, centerY, radius, angleInDegrees)

IfcClosedShell

method: area
method: to_dae(placement=nil, *args)
method: to_dae_geometry(mesh_id="")
method: to_dae_node(placement=nil)

IfcSpatialStructureElement

method: containsElements
method: containsElements_count

IfcComplexProperty

method: to_row
method: to_table

IfcPropertyTableValue

method: to_row *

IfcMirroredProfileDef


IfcFaceBound

method: get_normal
method: to_mesh
method: to_dae(objectPlacement=nil,*args)
method: to_dae_geometry(mesh_id="")
method: to_dae_node(localplacement=nil)
method: area

IfcExternalSpatialElement

method: boundedBy

IfcDoorStyle

method: property_details

IfcCircle

method: area
method: perimeter
method: xyz_array
method: to_svg
method: svg(scale=1,transformation="")

IfcFaceOuterBound

method: to_dae(objectPlacement=nil)
method: to_dae_geometry(mesh_id="")
method: to_dae_node(local=nil)
method: to_mesh
method: area

IfcRelAssigns


IfcArbitraryOpenProfileDef

method: perimeter
method: xyz_array
method: xy_array
method: to_svg

IfcRelContainedInSpatialStructure

method: attach_to_obj
method: count()
method: add(instance_id)
method: count_by_class

IfcObject

method: isDefinedBy

IfcMaterialLayerSet

method: materials_list
method: materials_thickness_list

IfcWindow

method: area

IfcClassificationReference

method: attach_to_obj(obj)
method: classificationRefForObjects *
method: hasReferences *

IfcPropertyDefinition

method: to_details(str="")
method: to_details_xml(str="")
method: property_names_values
method: valid_name(obj=self)
method: names_values(str="")
method: names_values_hash(str="")

IfcCompositeCurveSegment

method: xyz_array
method: usingCurves *

IfcPhysicalQuantity


IfcRepresentationItem

method: layerAssignment
method: styledByItem *

IfcRoundedRectangleProfileDef

method: area
method: perimeter

IfcCartesianPointList

method: size
method: coordArray

IfcArbitraryClosedProfileDef

method: area
method: diameter
method: perimeter
method: to_svg
method: svg(scale=1,transformation="")
method: xyz_array
method: xy_array

IfcCShapeProfileDef


IfcBuildingElement

method: hasCoverings *

IfcSimplePropertyTemplate


IfcLShapeProfileDef



Project website: https://github.com/ifcwebserver|http://code.google.com/p/ifcwebserver | Blog