Giter Club home page Giter Club logo

ifc4.3.x-sample-models's People

Contributors

andrej730 avatar aothms avatar jmirtsch avatar softwaremechanic avatar thbeu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ifc4.3.x-sample-models's Issues

structural-curve-member.ifc units

models/structural-analysis-model/structural-curve-member/structural-curve-member.ifc
#122
IfcDerivedUnit.WR1
(sizeof(elements) > 1 or (sizeof(elements) == 1 and elements[1].Exponent != 1))
Violated by:
    ((1 > 1 or (1 == 1 and 1 != 1)))
     +  where 1 = sizeof((#121=IfcDerivedUnitElement(#48,1),))
     +  and   1 = sizeof((#121=IfcDerivedUnitElement(#48,1),))
     +  and   1 = #121=IfcDerivedUnitElement(#48,1).Exponent
     +    where #121=IfcDerivedUnitElement(#48,1) = (#121=IfcDerivedUnitElement(#48,1),)[(1 - 1)]
On instance:
    #122=IfcDerivedUnit((#121),.MODULUSOFELASTICITYUNIT.,$,$)
#159
IfcDerivedUnit.WR1
(sizeof(elements) > 1 or (sizeof(elements) == 1 and elements[1].Exponent != 1))
Violated by:
    ((1 > 1 or (1 == 1 and 1 != 1)))
     +  where 1 = sizeof((#158=IfcDerivedUnitElement(#48,1),))
     +  and   1 = sizeof((#158=IfcDerivedUnitElement(#48,1),))
     +  and   1 = #158=IfcDerivedUnitElement(#48,1).Exponent
     +    where #158=IfcDerivedUnitElement(#48,1) = (#158=IfcDerivedUnitElement(#48,1),)[(1 - 1)]
On instance:
    #159=IfcDerivedUnit((#158),.SHEARMODULUSUNIT.,$,$)
Wrong number of attributes on instance with id #141 expected 4 got 3:
#141= IFCDERIVEDUNIT((#140),.MOMENTOFINERTIAUNIT.,$);
Wrong number of attributes on instance with id #144 expected 4 got 3:
#144= IFCDERIVEDUNIT((#142,#143),.PLANARFORCEUNIT.,$);
Wrong number of attributes on instance with id #149 expected 4 got 3:
#149= IFCDERIVEDUNIT((#147,#148),.ROTATIONALMASSUNIT.,$);
Wrong number of attributes on instance with id #153 expected 4 got 3:
#153= IFCDERIVEDUNIT((#150,#151,#152),.ROTATIONALSTIFFNESSUNIT.,$);
Wrong number of attributes on instance with id #155 expected 4 got 3:
#155= IFCDERIVEDUNIT((#154),.SECTIONAREAINTEGRALUNIT.,$);
Wrong number of attributes on instance with id #157 expected 4 got 3:
#157= IFCDERIVEDUNIT((#156),.SECTIONMODULUSUNIT.,$);
Wrong number of attributes on instance with id #159 expected 4 got 3:
#159= IFCDERIVEDUNIT((#158),.SHEARMODULUSUNIT.,$);
Wrong number of attributes on instance with id #98 expected 4 got 3:
#98= IFCDERIVEDUNIT((#96,#97),.LINEARFORCEUNIT.,$);
Wrong number of attributes on instance with id #102 expected 4 got 3:
#102= IFCDERIVEDUNIT((#99,#100,#101),.LINEARMOMENTUNIT.,$);
Wrong number of attributes on instance with id #105 expected 4 got 3:
#105= IFCDERIVEDUNIT((#103,#104),.LINEARSTIFFNESSUNIT.,$);
Wrong number of attributes on instance with id #114 expected 4 got 3:
#114= IFCDERIVEDUNIT((#112,#113),.MASSDENSITYUNIT.,$);
Wrong number of attributes on instance with id #120 expected 4 got 3:
#120= IFCDERIVEDUNIT((#118,#119),.MASSPERLENGTHUNIT.,$);
Wrong number of attributes on instance with id #122 expected 4 got 3:
#122= IFCDERIVEDUNIT((#121),.MODULUSOFELASTICITYUNIT.,$);

This model is originally authored by Constructivity. @jmirtsch Given the domain do you have some ideas on how this can be best addressed?

Mixing length and param value?

@evandroAlfieri @peterrdf I don't recall all details from the conversations. Sorry for the noise. Were there any objects against mixing Length and Param values in the curve segments parameters?

#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCNONNEGATIVELENGTHMEASURE(0.), IFCPARAMETERVALUE(450.000218741065), #84);

Invalid IFC files because of the empty description in header's FILE_DESCRIPTION

Hi! Noticed some files below have empty description in FILE_DESCRIPTION entity.

image

From the specifications it seems that description cannot be empty for IFC to be valid - it should be a list containing atleast 1 string. Therefore it might produce errors opening example files in some IFC viewers (noticed the issue opening the file using BlenderBIM).

image

Example files:
https://github.com/buildingSMART/IFC4.3.x-sample-models/blob/main//models/tessellated-shape-with-style/tessellation-with-blob-texture/tessellation-with-blob-texture.ifc
https://github.com/buildingSMART/IFC4.3.x-sample-models/blob/main//models/tessellated-shape-with-style/tessellation-with-image-texture/tessellation-with-image-texture.ifc
https://github.com/buildingSMART/IFC4.3.x-sample-models/blob/main//models/tessellated-shape-with-style/tessellation-with-pixel-texture/tessellation-with-pixel-texture.ifc

Have unique IfcGloballyUniqueId within the model suite

The set IFC object identifiers are not unique within the model suite (since the files are likely manually crafted). It would be preferable if these identifers are unique such that importing applications can handle more than one IFC file simultaneously.

Possible errors in the linear-placement-of-signal.ifc example

I'm not sure if there are problems with the linear-placement-of-signal.ifc example or a lack of understanding of IfcSegmentedReferenceCurve and cant on my part. It may be both. I make this post to begin the discussion.

Issue 1 - Clothoid constant for linear transitions

Here is a plot of cant values based on the business logic defined in the IfcAlignmentCantSegment entitites.
image

There are clearly regions where the cant is increasing, constant, then decreasing. The geometry of the first transition is defined by

#2605 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #2609, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(39.9999999999926), #2610);
#2610 = IFCCLOTHOID(#2613, 39.9999999999926);

The cant is then constant then decreases back to zero. The decreasing cant geometry is defined by

#2627 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #2631, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(39.9999999999925), #2632);
#2632 = IFCCLOTHOID(#2635, 39.9999999999925);

In both cases, the clothoid constant has a positive value. I think the second clothoid constant should have a negative value. Such is the case for the ACCA sleeper linear placement example from buildingSMART/ifc-gherkin-rules#213 (comment).

#2681 = IFCCURVESEGMENT(.CONTINUOUS., #2687, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(49.999993741124), #2691);
#2691 = IFCCLOTHOID(#2692, 70.7106692672674);

#2709 = IFCCURVESEGMENT(.CONTINUOUS., #2715, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #2719);
#2719 = IFCCLOTHOID(#2720, -565.685424949238);

Issue 2 - Point of rotation

From the graph above based on the business logic, the point of rotation is at the mid-point between the rails. For the first curve, the right rail goes up and the left rail goes down equal amounts meaning the (1/2)Cant value from Figure 8.9.3.62.A is equal to zero. However, this figure implies the point of rotation is at one of the rails.

My understanding of cant is that the IfcSegmentedReferenceCurve.CurveSegment.ParentCurve provides the geometric definition for both the superelevation and the cross-slope (Axis direction) between rail heads along the length of the segment.

From IfcSegmentedReferenceCurve

The superelevation rate of change is directly proportionate to the curve segment parent curve curvature gradient equation (IfcCurveSegment.ParentCurve) in the linear parameter space of the base curve.

The superelevation is the difference in elevation between the IfcGradientCurve and the IfcSegmentedReferenceCurve. All of the IfcCurveSegment for this IfcSegmentedReferenceCurve have Position with z=0.0 which suggests there is no superelevation at the start of each segment. For segments with IfcLine parent curves, the superelvation remains 0.0 over the length of the segment. However, for segments with IfcClothoid parent curve, the cant should increase (or decrease if negative constants are used) over the length of the segment. This is not consistent with the rotation at the mid-point between the rails.

Here is the plot the elevations for the IfcSegmentReferenceCurve using IfcOpenShell based on my understanding of IfcSegmentedReferenceCurve. There are linearly increasing elevations wherever the parent curve is IfcClothoid.

image

Additionally, from IfcSegmentedReferenceCurve

If no deviation in the position of the curve segment to the base curve axis is specified, the axes (Axis and RefDirection) directions of IfcAxis2Placement are interpolated between the initial curve segment placement and the placement of the subsequent curve segment.

For all of the segments, deviation is specified as 0.0 so I take that to be "no deviation". In this case, the Axis and RefDirection are to be interpolated in an unspecified way. The parent curve provides that interpolation regardless of the curve segment position as discussed at the end of buildingSMART/IFC4.x-IF#145 (comment).

It seems that there are cases when the IfcSegmentedReferenceCurve.IfcCurveSegment.Parent curve defines

  1. Superelevation and cross slope along the segment
  2. Superelevation only along the segment
  3. Cross slope only along the segment

The ACCA sleeper example seems to be Case 1. The linear-placement-of-signal example seems to be Case 3. Case 2 seems to occur only if "no deviation in the position of the curve segment to the base curve axis is specified".

How are these three cases distinguished using only the geometric representation?

@civilx64 @evandroAlfieri @michelangelo-acca @peterrdf @aothms

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.