buildingSMART / NextGen-IFC

61 stars 4 forks source link

Simplifying relative positioning with IfcPositioningElement #79

Open pjanck opened 3 years ago

pjanck commented 3 years ago

Description of the proposal:

With the change of IfcObjectPlacement having a RelativePlacement attribute, the encoding of relative placement can be simplified greatly.

Currently, one needs to account for the IfcPositioningElement::ObjectPlacement when calculating the correct origin and rotations of the context in which a IfcGridPlacement or IfcLinearPlacement are defined. My proposal is to require the IfcObjectPlacement entity as referenced by IfcPositioningElement::ObjectPlacement to always be the ::RelativePlacement of every IfcObjectPlacement that is done within the context of said IfcPositioningElement.

Example:

Current way of obtaining the correct context of a IfcGridPlacement:

IfcGridPlacement 
--> ::PlacementLocation = IfcVirtualGridIntersection 
--> ::IntersectingAxes = IfcGridAxis 
--> ::PartOfU/V/W (INV) = IfcGrid 
--> ::ObjectPlacement = IfcObjectPlacement

Proposal:

IfcGridPlacement 
--> ::RelativePlacement = IfcObjectPlacement

Similar procedure applies to IfcLinearPlacement as well.

A very bad sketch of the schema needed to understand the example (MS Paint FTW): grafik

Action We need to document this in the IfcPositioningElement as well as IfcObjectPlacement descriptions, introducing an informal proposition: For context dependent positioning (like IfcGridPlacement and IfcLinearPlacement), the IfcObjectPlacement::RelativePlacement needs to be filled with the ::ObjectPlacement of the corresponding IfcPositioningElement. Or something in the likes.

Is this a proposal to 'add', 'remove' of 'change' entities in the schema: change

What do we win:

What do we lose:

Schema impact:

Instance model impact:

Backwards compatible:

Automatic migration possible:

SergejMuhic commented 3 years ago

A few points:

  1. Not an issue for Next-Gen as IFC4.2 introduced this.
  2. How exactly this will be done is being discussed in Infra/Rail tech meetings, so long before Next-Gen.
  3. Would lose the ability to relatively place grid and linear placements to each other. (probably a good thing)
  4. Seems to be an MVD issue rather than schema. Otherwise, it should be handled with where rules and not informal propositions.
pjanck commented 3 years ago

To your points:

  1. Goes with the next point.
  2. Even better if we get it with 4x3_rc2 already.
  3. I agree and see it as a good thing as well!
  4. I'm all for a WHERE rule - probably demanding that IfcGridPlacement and IfcLinearPlacement have their RelativePlacement attribute filled with an instance of ifcLocalPlacement - and then specifying in the informal proposition that it has to be the same as the corresponding IfcPositioningElement uses?
berlotti commented 3 years ago

Good suggestion to simplify relative positioning. IFC5 is an opportunity to improve and simplify lots of things. Relative positioning is very important as well to re-evaluate. With the conformance levels replacing MVDs in IFC5, it is even more important to make sure that this is as efficient and effective as possible. Focusing on WHERE rules alone is not a solution though, since the solution needs to work in other representations/languages as well.