// ********** The Root Element *********** Entity BIMProject; Entity Object; Name: String; //Name of entity END_Entity; // ********** The 4 SpatialStructure Classes *********** Entity BIMSite; Entity Object; Name: String; //Name of entity PSet: PSet; //Property Set of this Object Entity Product; Placement: Placement; //Placement of this entity Representation: Representation; //Representation of this entity Entity SpatialStructure; [List of any other SpatialStructure Entity]; //a list of any SpatialStructure can be appended here [List of any other BldgElement Entity]; //a list of any BldgElement can be appended here Entity BIMSite; END_Entity; Entity BIMBldg; Entity Object; Name: String; //Name of entity PSet: PSet; //Property Set of this Object Entity Product; Placement: Placement; //Placement of this entity Entity SpatialStructure; [List of any other SpatialStructure Entity]; //a list of any SpatialStructure can be appended here [List of any other BldgElement Entity]; //a list of any BldgElement can be appended here Entity BIMBldg; END_Entity; Entity BIMFloor; Entity Object; Name: String; //Name of entity PSet: PSet; //Property Set of this Object Entity Product; Placement : Placement; //Placement of this entity Note: the Placement of BIMFloor can only have a Z value - all other values are zero Representation: Representation; //Representation of this entity Entity SpatialStructure; [List of any other SpatialStructure Entity]; //a list of any SpatialStructure can be appended here [List of any other BldgElement Entity]; //a list of any BldgElement can be appended here Entity BIMFloor; FloorIndex: uint; //Floor Index FloorHeight: double; //Floor to Floor Height END_Entity; Entity BIMSpace; Entity Object; Name: String; //Name of entity PSet: PSet; //Property Set of this Object Entity Product; Placement : Placement; //Placement of this entity Representation: Representation; //Representation of this entity Entity SpatialStructure; [List of any other SpatialStructure Entity]; //a list of any SpatialStructure can be appended here [List of any other BldgElement Entity]; //a list of any BldgElement can be appended here Entity BIMSpace; CATName:String //Name of the Category Name of a space entry , must present here in this version, can be set as empty string CATCode:String //Code of the Category Name of a space entry , must present here in this version, can be set as empty string END_Entity; //*********** End of the 4 Spatial Structure Classes **************/ //**************** BldgElement Class**********************/ Entity BIMSlab; Entity Object; Name: String; //Name of entity PSet: PSet; //Property Set of this Object Entity Product; Placement : Placement; //Placement of this entity Representation: Representation; //Representation of this entity Entity BldgElement; Entity BIMSlab; END_Entity; Entity BIMFurn; Entity Object; Name: String; //Name of entity PSet: PSet; //Property Set of this Object Entity Product; Placement : Placement; //Placement of this entity Representation: Representation; //Representation of this entity Entity BldgElement; Entity BIMFurn; END_Entity; //**************** End of the BldgElement Class ****************/ //*********** PSet related Class*********************/ Entity PSet Entity PSet; [List of PSetAttrib: PSetAttrib ]; //A List of PSetAttrib, the list can be a mix of simple Attribute : Attrib and complex Attribute: ComplexAttrib EndEntity; Entity Attrib; Entity PSetAttrib; Entity Attrib; Name: String; //Name of this PSet Attribute Value: String; //Value of this PSet Attribute EndEntity; Entity ComplexAttrib; Entity PSetAttrib; Entity ComplexAttrib; Name: String; //Name of this ComplexAttrib Attribue [List of PSetAttrib: PSetAttrib ]; //A List of PSetAttrib, the list can be a mix of simple Attribute : Attrib and complex Attribute: ComplexAttrib EndEntity; //Note that ComplexAttrib is for Array type of Pset Attribute, usage example is as follow: For One dimension array, the XML is set like this: Note that the "Name" of should match with the name of the parameter of the Space/Object. For each of the inside this , the "Name" of will be the row number, and the will be its value. So the above example will push parameters to an Array param called "testArray_1D" like this: testArray_1D[1]="D" testArray_1D[2]="E" testArray_1D[3]="F" For Two dimensional array, the XML is set like this: Note that the "Name" of first should match with the name of the parameter of the Space/Object. In the next level of , its "Name" will be the Column number of the array. Then for each of the inside this , the "Name" of will be the row number, and the will be its value. So the above example will push parameters to an Array param called "testArray_2D" like this: testArray_2D[1][1]="1" testArray_2D[2][1]="3" testArray_2D[3][1]="5" testArray_2D[1][2]="2" testArray_2D[2][2]="4" testArray_2D[3][2]="6" //************ End of PSet related class************/ //*********** Geometry Structure Class **************/ Entity Placement; Entity Placement; Rotation:double; //Rotation Angle, in radian MirrorY:Boolean; //Is it being mirror in Y Axis , this is only used for furnishing element and is irrelevant with the SpatialStructure classes x: double; //x coordinate of the placement; y: double; //y coordinate of the placement; z: double; //z coordinate of the placement; END_Entity; Entity ExtrudedAreaSolid; Entity Representation; Entity ExtrudedAreaSolid; Depth: double ; // Depth of the extrusion [List of CurveProfile]; // 1st CurveProfile is the outter profile of this extrusion| Addition CurveProfile is the inner profile (holes) of this extrusion END_Entity; Entity CurveProfile; Entity Representaion; Entity CurveProfile; [List of Points]; [List of Arcs]; EndEntity; Entity Points; Entity Representation; Entity Points; [List of x: double; //X coordinates of Point y: double; //Y coordinates of Point ] //Build the Points Entity list like x1,y1,;x2,y2;x3,y3 etc EndEntity; Entity Arcs; Entity Representation; Entity Arcs; [List of Start Point Index: uint; //Starting Point index of this Arc centerX:double; X coordinate of the center of this arc centerY:double; Y coordinate of the center of this arc bIsAntiClockwise:boolean; is this arc Anticlockwise, 0=false (clockwise), 1=true (anitclockwise) EndEntity; //*********** End of Geometry Structure class **************/