ifc4.3.x-sample-models's People
ifc4.3.x-sample-models's Issues
reinforcing-assembly.ifc IfcBuildingElementProxy - IfcReinforcingBarType association
@jmirtsch in sample model reinforcing-assembly.ifc is there any reason why you instantiated IfcBuildingElementProxy, should they just be IfcReinforcingBar?
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?
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.
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).
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.
Remove all names from example files
As per ISO guidelines we should remove all personal identifiable information from the models.
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.
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.
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
- Superelevation and cross slope along the segment
- Superelevation only along the segment
- 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
tessellation-with-pixel-texture - IfcPixelTexture pixel binary data alpha position
In IfcPixelTexture example opacity seems to be positioned at the highest byte - e.g. first pixel is 0FF000000
(FF
alpha, white color with 100% alpha) but from IfcPixelTexture specs it seems that opacity should be at the lowest byte (e.g. 0x0000FF80
- 80
alpha, blue color with 50% alpha).
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.