industry foundation classes (ifc) · industry foundation classes (ifc) •intended to describe...
TRANSCRIPT
Industry Foundation Classes (IFC)
Industry Foundation Classes (IFC)
• Intended to describe building and construction industry data• Platform neutral and open file format specification• An object-based file format intended to facilitate
interoperability in the architecture, engineering and construction (AEC) industry• A commonly used collaboration format in BIM
based projects• An official International Standard ISO 16739-1:2018• Managed by BuildingSmart
Industry Foundation Classes (IFC)• IFC is a definition of a standard
format to describe a Building Information Model
• IFC defines how information should be provided/stored for all stages of a building projects lifecycle
• It goes right down to the properties of the individual object
• It can do from “very little” information to “everything”
• IfcDoor represents a door modelled in BIM software
• In IFC structure, it has many properties which can be defined and updated in BIM software
100Ks of lines about the BIM model. Impossible to read and understand.
Industry Foundation Classes (IFC)
Industry Foundation Classes (IFC)
Industry Foundation Classes (IFC)
• The information in IFC can be grouped in• Graphical 3D Model Information• Numerical and Textual Information
Industry Foundation Classes (IFC)
• Each building entity has a Global Unique Identification Number (GUID)• BIM applications store and query the specific
entities based on GUIDs
Views
• No application implements the whole IFC specification• Data exchange is achieved with subsets, called
views• Each IFC View Definition, or Model View Definition
(MVD) defines a subset of the IFC schema that is needed to satisfy one or many Exchange Requirements
Conceptual data model: EXPRESS
• IFC defines an EXPRESS based entity-relationship model consisting of several hundred entities organized into an object-based inheritance hierarchy• EXPRESS applies the general notions of conceptual
models• Classes (called Entities)• Attributes• Associations (called Relationships)• Generalization
• Examples of entities include• building elements such as IfcWall, • geometry such as IfcExtrudedAreaSolid,• basic constructs such as IfcCartesianPoint
Physical Models
• IFC defines multiple file formats that may be used • IFC-SPF (Step file) is a text format defined by ISO
10303-21, having file extension ".ifc"• each line typically consists of a single object record• it is the most widely used IFC format, (compact size yet
readable text)
• IFC-XML is an XML format defined by ISO 10303-28, having file extension ".ifcXML“:• this format is less common in practice
EXPRESS_G symbols
EXPRESS: Attribute and data type
• Attributes are defined as simple data types , e.g. integer, string, logical, boolean or more complex types as, e.g. other entities• A solid line shows a mandatory attribute, whereas a
dashed line shows an optional attribute
Select data type
• A data type select allows the possibility to choose exactly one of a defined variety of, e.g. other data types or entities
Relationship
• A relationship has cardinality and name• a relationship is shown as a solid or dashed thin line
which is terminated by a circular arrowhead• The direction of a relationship is towards the
arrowhead, which is important in that the name of the relationship must reflect its direction• A solid line indicates a mandatory relationship, whereas
a dashed line indicates optional relationship
Cardinality
• If a relationship has no cardinality, the cardinality is assumed to be exactly one
• C[m:n], where C is one of S(set), B(bag), L(list) or A(array)• A set is an unordered variable length collection of unique items• A bag is an unordered variable length collection of not necessarily
unique items • A list is an ordered variable length collection of not necessarily
unique items. There are possibilities to constraint the list to a list of unique items
• An array is a fixed size collection of not necessarily unique items which can be accessed by an index.
• If the cardinality is shown as a single number (n), then it is assumed to be S[n:n]• ? indicates ”unbounded”
Examples
Inverse Relationship
Generalization and specialization
• The relationship between a supertype and its subtypes is shown by using a series of thick lines, each one terminated at the subtype end with an open circle
Abstract Supertypes
• An abstract supertype is a supertype entity which cannot be instanced
Multiple Inheritance
EXPRESS - Textual form
SCHEMA Family;ENTITY PersonABSTRACT SUPERTYPE OF (ONEOF
(Male, Female));name: STRING;mother: OPTIONAL Female;father: OPTIONAL Male;
END_ENTITY;ENTITY FemaleSUBTYPE OF (Person);END_ENTITY;ENTITY MaleSUBTYPE of (Person);END_ENTITY;END_SCHEMA
Representation of a Building
Project P
Slab 1
Storey S
Building B
Site X
Wall 4
Wall 3
Wall 2
Wall 1
Opening 1
Opening 2
Window 2
Door 1
Space V
Window 1
Opening 3
Pset1
Pset2
Building Model Represented in IFC
Slab 1
Wall 2
Wall 1
Wall 3
Wall4
Space V
Project P
Slab 1
Storey S
Building B
Site X
Wall 4
Wall 3
Wall 2
Wall 1
Opening 1
Opening 2
Window 2
Door 1
Space V
Window 1
Opening 3
Pset1
Pset2
Building Model Representation in IFC
Slab 1
Wall 2
Wall 1
Wall 3
Wall4
Space V
From EXPRESS to IFC-SPF
• A step file has a header section and a data section• The DATA section contains application data according to
one specific express schema• The encoding of data follows some simple principles
• Every entity instance in the file has a unique name in the form "#1234"
• Instances of each entity data type are represented by writing the name of the entity in capital letters and then followed by the attribute values in the defined order within parenthesis
• Unset attribute values are given as "$“• The elements of aggregates (SET, BAG, LIST, ARRAY) are given
in parentheses, separated by ","
Example….#10 = FEMALE( ‘Sara’, ‘Rossi’, $, #20, (#30,#40), .NERO.,);#20 = DATE((5,25,66));#30 = PERSON(‘Giacomo’, ‘Rossi’, ‘Giac’, #50, ( ), .BIONDO.);#40 = PERSON(‘Elisa’, ‘Rossi’, ‘Lisa’, #60, ( ), .BIONDO., $);#50 = DATE((7,2,89));#60 = DATE((10,29,90));#70 = MALE( ‘Giorgio’, ‘Rossi’, $, #80, (#30,#40), .CASTANO.);#80 = DATE((6,10,65));#90 = MARRIED( #70, #10 );…
SCHEMA example;TYPE date = ARRAY [1:3] OF INTEGER; END_TYPE;TYPE hair_type = ENUMERATION OF (...);END_TYPE;ENTITY person
SUPERTYPE OF(ONEOF(female,male));first_name, last_name : STRING;nickname : OPTIONAL STRING;birthdate : date;children : SET[0:?] OF person;hair : hair_type;
...
Giorgio Rossi, born 6,10,65, has 2 children(Giacomo e Elisa), his hair is CASTANO
And is married with Sara Rossi …
IFC Schema at 4 levels
• General and abstract definitions• Global structure of the Project
• Site, building, storey, …
• Building elements• Wall, slab, roof, door, window, ...
• Geometry
Some fundamental concepts
• IfcActor represents people or organizations• IfcControl represents rules controlling time, cost, or
scope such as work orders • IfcGroup represents collections of objects for particular
purpose such as electrical circuits• IfcProduct represents occurrences in space such as
physical building elements and spatial locations• IfcProcess represents occurrences in time such as tasks,
events, and procedures• IfcResource represents usage of something with limited
availability such as materials, labor, and equipment
IfcRelationship
• IfcRelationship is the abstract generalization of relationships • Objectified relationships are the preferred way to handle
relationships among objects
• This allows one to keep relationship specific properties directly at the relationship and opens the possibility to handle relationship-specific behaviors
• There are 1-to-1 relationships and 1-to-many relationship• The two sides of the objectified relationship are named
• Relating+<name of relating object> and• Related+<name of related object>
• In case of the 1-to-many relationship, the related side of the relationship shall be an aggregate SET 1:N
Five fundamental IfcRelationship(s)
• IfcRelDecomposes/IfcRelAggregates captures a wholepart relationship having exclusive containment• Building and floors
• IfcRelAssigns captures assignment relationships where one object consumes the services of another object• Task assigned to a building element
• IfcRelConnects indicates connectivity between objects • A pipe connected to a sink
• IfcRelAssociates indicates external references for an object• An external IFC library file where an object is defined
• IfcRelDefines indicates an instanceof relationship• A pipe segment being of a particular type
IfcProduct
• IfcProduct is the base class for all physical objects and is subdivided into spatial elements, physical elements and other concepts
• Products may have associated materials, shape representations, and placement in space
• Spatial elements include IfcSite, IfcBuilding, IfcBuildingStorey, and IfcSpace
• Physical building elements include IfcWall, IfcBeam, IfcDoor, IfcWindow, IfcStair, etc.
• Distribution elements (HVAC, electrical, plumbing) have a concept of ports where elements may have specific connections for various services, and connected together using cables, pipes, or ducts to form a system
• Various connectivity relationships are used for building elements such as walls having openings filled by doors or windows
IfcProject
• IfcProject encapsulates an overall project and indicates the project name, description, default units, currency, coordinate system, and other contextual information• IfcProject is also the uppermost container class instance to
which all products (as instances of IfcProduct or more specifically IfcElement) need to relate directly or indirectly
• IfcProject establishes the representation context for the IfcRepresentation (and the subtype IfcShapeRepresentation)
• A valid IFC file must always include exactly one IfcProject instance, from which all other objects relate directly or indirectly• A project may include multiple buildings, multiple
participants, and/or multiple phases according to the particular use
Hierarchical organization
Geometric representation models
• Boundary Representation (B-rep): each geometry isrepresented by its boundary• Constructive Solid Geometry (CSG): creates a
complex object by using Boolean operators to combine simpler objects; • In Ifc the elementary objects are defined through:
• mathematical primitives• Swept areas• Revolved areas
B-rep Example
• B-Rep models represent a solid indirectly by a representation of its bounding surface
CSG Example (from Wikipedia)
Mathematical definition
Placement
• Placement may indicate position, vertical angle, and horizontal angle• IfcLocalPlacement indicates placement relative to an
enclosing element hierarchy• IfcGridPlacement indicates placement relative to a grid
with user-defined axes• Quantities may be defined for takeoff purposes such as
Gross Area, Gross Volume, Gross Weight, Net Weight, etc.• IFC defines various quantities specific to each element
type and the method of calculation according to geometry and relationships
IfcOpenShell-python
• An third-party library that helps to read and modify IFC Step files
• Free and open source
• Can be used to convert IFC files into explicit geometryinputs for CAD-like software
• Not documented but many operations can be derived from the IFC specification
http://standards.buildingsmart.org/IFC/RELEASE/IFC2x3/TC1/HTML/
Installation
• Not available on pip
• Download source files that match your Python setup http://ifcopenshell.org/python
• Copy the downloaded files into the Python site-package folder
• You can retrieve the folder path by running this script
import siteprint(site.getsitepackages())
Opening a file
import ifcopenshell
ifc_file = ifcopenshell.open("example1.ifc")
Main operations on file
• by_type(t): returns all the instances of type t
• by_guid(g): returns an instance with guid equals to g ifexists• remove(x): removes instance x
• create_entity(t, g): adds an entity of type t with guid g
• write(p): writes the data onto a new file with path p
Reading files
import ifcopenshell # import IfcOpenShell
ifc_file = ifcopenshell.open("example1.ifc") # Open a file
products = ifc_file.by_type('IfcProduct') # Retrivingentities by type
for product in products:print(product) # printing entities (as tuples)print(product.Name) # accessing and printing fields
p = ifc_file.by_guid('1Gu3YrB_f00eRYf82lGDVO') # Retrivingentities by guid
Modifying filesimport ifcopenshell # import IfcOpenShell
ifc_file = ifcopenshell.open("example1.ifc") # Open a file
a = ifc_file.by_guid('0BTBFw6f90Nfh9rP1dlXrc’)ifc_file.remove(a) # Remove an instance
walls = ifc_file.by_type("IfcWall") # Retriving all wallsi = 100
for wall in walls:walls.Name = "Wall%d" % (i,) # Change fieldi += 1
nguid = ifcopenshell.guid.new() # Create new GUIDwall = ifc_file.create_entity('IfcWall’, nguid) # Create new wallwall.Name = "Wall%d" % (i,) # Set field
ifc_file.write("test.ifc") # Write modifications to a new file
Questions?
Grazie !!!Giovanni and Luciano