industry foundation classes (ifc) · industry foundation classes (ifc) •intended to describe...

44
Industry Foundation Classes (IFC)

Upload: others

Post on 13-Aug-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

Industry Foundation Classes (IFC)

Page 2: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 3: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 4: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

100Ks of lines about the BIM model. Impossible to read and understand.

Industry Foundation Classes (IFC)

Page 5: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

Industry Foundation Classes (IFC)

Page 6: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

Industry Foundation Classes (IFC)

• The information in IFC can be grouped in• Graphical 3D Model Information• Numerical and Textual Information

Page 7: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 8: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 9: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 10: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 11: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

EXPRESS_G symbols

Page 12: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 13: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 14: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 15: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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”

Page 16: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

Examples

Page 17: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

Inverse Relationship

Page 18: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 19: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

Abstract Supertypes

• An abstract supertype is a supertype entity which cannot be instanced

Page 20: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

Multiple Inheritance

Page 21: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 22: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 23: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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 ","

Page 24: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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 …

Page 25: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 26: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 27: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 28: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 29: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 30: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification
Page 31: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 32: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

Hierarchical organization

Page 33: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 34: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

B-rep Example

• B-Rep models represent a solid indirectly by a representation of its bounding surface

Page 35: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

CSG Example (from Wikipedia)

Mathematical definition

Page 36: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 37: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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/

Page 38: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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())

Page 39: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

Opening a file

import ifcopenshell

ifc_file = ifcopenshell.open("example1.ifc")

Page 40: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 41: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 42: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

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

Page 43: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

Questions?

Page 44: Industry Foundation Classes (IFC) · Industry Foundation Classes (IFC) •Intended to describe building and construction industry data •Platform neutral and open file format specification

Grazie !!!Giovanni and Luciano