Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplifying relative positioning with IfcPositioningElement #79

Open
pjanck opened this issue Dec 5, 2020 · 3 comments
Open

Simplifying relative positioning with IfcPositioningElement #79

pjanck opened this issue Dec 5, 2020 · 3 comments
Labels
enhancement New feature or request

Comments

@pjanck
Copy link

pjanck commented Dec 5, 2020

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:

  • simplified traversion of IFC structure to obtain correct relative placement
  • removal of inverses "pointing" from resource layer upwards

What do we lose:

  • backwards compatibility?

Schema impact:

  • removing PositioningElement inverse of IfcBoundedCurve
  • removing PartOf.. inverses of IfcGridAxis

Instance model impact:

  • none

Backwards compatible:

  • Yes: from the physical file perspective. (given that IfcObjectPlacement::RelativePlacement change is out-of-scope of this change)
  • No: for all implementers taking the inverses into account.

Automatic migration possible:

  • Yes (given that IfcObjectPlacement::RelativePlacement change is out-of-scope of this change).
@pjanck pjanck added the enhancement New feature or request label Dec 5, 2020
@SergejMuhic
Copy link

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
Copy link
Author

pjanck commented Dec 8, 2020

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
Copy link
Member

berlotti commented Dec 8, 2020

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants