Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
ba3349f
feat: blob-backed ShapeStore + lazy ShapeProxy for imported shape geo…
Krande Jul 3, 2026
124198a
feat: lazy blob-backed STEP import (ShapeStore default-on) + native-f…
Krande Jul 3, 2026
647c681
feat: lazy ShapeProxy blob fast path + consumer compatibility
Krande Jul 3, 2026
db75a90
feat: lazy shape store for IFC import (native-parametric products)
Krande Jul 3, 2026
42d1941
fix: ShapeProxy counts as Shape in get_all_physical_objects by_type f…
Krande Jul 3, 2026
aa58d3e
feat: boolean operations flow through the NGEOM stream path
Krande Jul 3, 2026
167efca
perf: slots=True on all ada.geom dataclasses
Krande Jul 3, 2026
e8c2b8e
feat: native IFC blob path — IfcNgeomStream feeds the lazy shape store
Krande Jul 3, 2026
e439a88
fix: AdacppBackend.build accepts ConnectedFaceSet and FaceSurface roots
Krande Jul 3, 2026
a5289ad
fix: audit regressions — curve shapes through the lazy store + hydrat…
Krande Jul 4, 2026
7997610
perf: move ClosedShell promotion out of the streaming reader hot loop
Krande Jul 4, 2026
ebf798a
chore: use generic model descriptions in comments
Krande Jul 4, 2026
8f11db4
feat: audit profiling toggle also enables the adacpp C++ pipeline pro…
Krande Jul 4, 2026
4f1e960
feat: C++ pipeline profiles in the audit Metrics panel
Krande Jul 4, 2026
318afae
feat: state filter dropdown in the admin audit log
Krande Jul 4, 2026
267954d
feat: corpus tree file management, upload destination prompt, and Del…
Krande Jul 5, 2026
aca7377
fix: kebab menus and folder picker hidden behind the floating admin p…
Krande Jul 5, 2026
a01a9aa
feat: move/delete/copy progress status bar and editable corpus name/d…
Krande Jul 5, 2026
c8bab5e
feat: corpus uploads skip existing keys and offer a failed-uploads re…
Krande Jul 5, 2026
429c6ce
feat: shift+click range selection in the shared file tree view
Krande Jul 5, 2026
c6bde1b
fix: resolve all 54 corpus audit failures on the buildingSMART IFC sa…
Krande Jul 5, 2026
de23c72
fix: count auto-validation parity cells into the audit run total upfront
Krande Jul 5, 2026
b29eb92
fix: resolve the 16 residual audit failures (ifc re-export + parity l…
Krande Jul 5, 2026
268a821
fix: wireframe STEP round-trip, typed-import fall-through, and the em…
Krande Jul 5, 2026
3d13874
perf: drop the per-call np.vectorize construction in round_array
Krande Jul 5, 2026
197eca9
perf: count parity elements from the tessellation stream, not an asse…
Krande Jul 6, 2026
d0fa554
perf: vectorize FEM shell -> Plate conversion over element arrays
Krande Jul 6, 2026
dae907e
perf: batch the fused FEM-plate stream through the vectorized constru…
Krande Jul 6, 2026
87a1fcf
feat: wire the SURFACE/PANEL merge strategies into the face source
Krande Jul 6, 2026
3a16d58
fix: carry UV p-curves through the streaming IFC B-rep emitter + non-…
Krande Jul 6, 2026
c4ea22f
feat: browse + visualise corpus files from the main storage panel (ad…
Krande Jul 6, 2026
f7f6807
feat: open a cell's cached product in the viewer from the audit grid
Krande Jul 6, 2026
f30e381
feat: gallery mode — prev/next HUD cycling the current scope's files
Krande Jul 6, 2026
4de1cf2
test: guard revolved-beam arc smoothness + relax tessellation-density…
Krande Jul 6, 2026
51e13fb
fix: SAT/STEP shapes render black + gallery doesn't auto-load initial…
Krande Jul 6, 2026
3bcda4e
fix: NGEOM revolve angle units + axis frame (beam splattered around w…
Krande Jul 6, 2026
27101c4
feat: tighten NGEOM stream tessellation to 10deg corpus-wide + revolv…
Krande Jul 6, 2026
bddad0d
fix: IFC beams with rotated ObjectPlacement rendered along the wrong …
Krande Jul 6, 2026
f8af80b
fix: apply the placement transpose fix to IfcShape/product reads too
Krande Jul 6, 2026
bc4d9f0
feat(frontend): auto fit-to-view toggle + gallery arrow keys + desele…
Krande Jul 6, 2026
06386ef
feat: gallery Re-convert button — throwaway conversion into a separat…
Krande Jul 6, 2026
47e7458
test: guard extruded-beam winding via the NGEOM libtess2 production path
Krande Jul 6, 2026
2725df7
fix: IfcPolygonalFaceSet shapes rendered no geometry (solid_geom reje…
Krande Jul 6, 2026
05b4247
feat: I-profile fillet support — round the web/flange junctions from …
Krande Jul 6, 2026
8c6682b
fix: IFC beam cardinal points ignored (no-parent placement path dropp…
Krande Jul 7, 2026
b6bb629
fix: NGEOM profile fillets chorded — sample ArcLine segments (flanges…
Krande Jul 7, 2026
74d684e
fix: exclude _reconvert/ (and _overlays/) blobs from audit runs
Krande Jul 7, 2026
ee0e777
test: pin angular_deg=20 in the libtess2 parity gate
Krande Jul 7, 2026
d3b127c
refactor: make Placement rotation convention self-consistent
Krande Jul 7, 2026
a0cd9e4
fix: bake a generic Shape's placement into solid_geom (rotated shapes…
Krande Jul 7, 2026
d6a0dbd
feat: render IFC4x3 alignment reference curves natively (was zero geo…
Krande Jul 7, 2026
5341f9b
fix: keep loose curve/geometric-set bodies through the STEP round-trip
Krande Jul 7, 2026
aece0f0
fix: alignment curve shapes crashed glb/obj/stl conversion (audit reg…
Krande Jul 7, 2026
3765b2f
feat: adjustable tessellation density — fixed global angle OR adaptiv…
Krande Jul 7, 2026
b71dbe6
feat: enable adaptive tessellation density by default for STEP->GLB
Krande Jul 7, 2026
c9b6a0a
fix: parity over-counted curve-bearing STEP files with an exploded solid
Krande Jul 7, 2026
ea77c2d
feat: adaptive tessellation density by default for STEP->OBJ/STL too
Krande Jul 7, 2026
4dfd201
feat: native IfcSectionedSolidHorizontal reader (was OCC-kernel face …
Krande Jul 7, 2026
cc54439
feat: native IfcMappedItem reader (the #1 corpus kernel fallback)
Krande Jul 7, 2026
a606fde
fix: apply absolute (PlacementRelTo=None) IFC ObjectPlacement to shapes
Krande Jul 7, 2026
502c22f
feat: native IfcFaceBasedSurfaceModel reader + face-set placement baking
Krande Jul 7, 2026
86881af
feat: transparently open gzip-compressed IFC files
Krande Jul 7, 2026
ff003fa
feat(viewer): gallery walk types (geoms/tree) + mesh stats panel
Krande Jul 7, 2026
7b54642
refactor(viewer): fold gallery "tree" walk into the geoms order dropdown
Krande Jul 7, 2026
ee64a2d
fix: IfcRoundedRectangleProfileDef rounding + multi-point IfcLineInde…
Krande Jul 7, 2026
8d43163
feat(viewer): click the gallery HUD name to copy it to clipboard
Krande Jul 7, 2026
69ff644
fix: skip ACIS record header when parsing plane-surface / straight-curve
Krande Jul 7, 2026
509edf9
feat: per-cell audit rerun + sum-of-cells run runtime
Krande Jul 8, 2026
5b981fb
feat: audit runtime toggle (cells vs wall) + mobile-collapsible new-r…
Krande Jul 8, 2026
df5565f
fix: a rerun adds only its own delta to wall-clock, not the whole idl…
Krande Jul 8, 2026
6ae5ef9
fix: faceted-brep (IfcFace) inner bounds cut holes, not caps
Krande Jul 8, 2026
181f7cc
feat: audit quality flags — libtess2->OCC fallback + distorted triangles
Krande Jul 8, 2026
99b2b96
fix: faceted breps render natively via libtess2 (dispatch + inferred …
Krande Jul 8, 2026
1e4bcaa
feat: stack audit toast above mobile gallery bar + hide toggle in aud…
Krande Jul 8, 2026
e643a4e
fix: gallery walk crash when switching scopes (stale/disposed mesh refs)
Krande Jul 8, 2026
07f0219
fix: ExtrudedAreaSolid with fillet arcs no longer falls back to OCC (…
Krande Jul 8, 2026
87d3caa
feat: PolygonalFaceSet renders natively via NGEOM (no OCC fallback)
Krande Jul 8, 2026
01429f9
revert: PolygonalFaceSet native encoder (flattened non-planar faces)
Krande Jul 8, 2026
3648d50
feat: PolygonalFaceSet renders natively (3D fan-triangulation, no OCC…
Krande Jul 8, 2026
3d76ad1
feat: SweptDiskSolid renders natively (swept circular profile, no OCC…
Krande Jul 8, 2026
7f0a1e1
feat: IfcAdvancedBrep renders natively (closed shell of advanced faces)
Krande Jul 8, 2026
1855b3c
feat: IfcMappedItem non-rigid + multi-instance render natively (mesh-…
Krande Jul 8, 2026
b81aa8c
feat: CompositeCurve profiles + FaceBasedSurfaceModel render natively
Krande Jul 8, 2026
91c610b
feat: "distorted" gallery walk + crows-nest spike metric
Krande Jul 8, 2026
d25c607
feat: fold Mesh stats under Properties + add a display toggle
Krande Jul 8, 2026
0b367b0
fix: adaptive tessellation coarsening on the streaming STEP->GLB path…
Krande Jul 8, 2026
b857759
fix: multi-item IfcMappedItem face sets render natively (no OCC fallb…
Krande Jul 9, 2026
dc0e982
fix: worker without a DB pool no longer crashes every job (timeout_s …
Krande Jul 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# SCM syntax highlighting
pixi.lock linguist-language=YAML linguist-generated=true
files/ifc_files/beam-standard-case-gz.ifc binary
70 changes: 70 additions & 0 deletions files/ifc_files/bath-csg-solid.ifc
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [NotAssigned]'),'2;1');
FILE_NAME(
/* name */ 'bath-csg-solid.ifc',
/* time_stamp */ '2016-02-04T08:47:55',
/* author */ ('redacted'),
/* organization */ ('redacted'),
/* preprocessor_version */ 'redacted',
/* originating_system */ 'redacted - redacted - 3.14159',
/* authorization */ 'None');

FILE_SCHEMA (('IFC4X3_ADD2'));
ENDSEC;

DATA;
/* general entities required for all IFC data sets, defining the context for the exchange */
#1= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#3,$);
#2= IFCCARTESIANPOINT((0.0,0.0,0.0));
#3= IFCAXIS2PLACEMENT3D(#2,$,$);
#4= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#1,$,.MODEL_VIEW.,$);
#5= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#1,$,.MODEL_VIEW.,$);
/* defines the default building (as required as the minimum spatial element) */
#50= IFCBUILDING('39t4Pu3nTC4ekXYRIHJB9W',#56,'IfcBuilding',$,$,$,$,$,$,$,$,$);
#51= IFCPERSONANDORGANIZATION(#52,#53,$);
#52= IFCPERSON('redacted','redacted',$,$,$,$,$,$);
#53= IFCORGANIZATION($,'redacted',$,$,$);
#54= IFCAPPLICATION(#55,'redacted','redacted','redacted');
#55= IFCORGANIZATION($,'redacted',$,$,$);
#56= IFCOWNERHISTORY(#51,#54,$,.ADDED.,1454575675,$,$,1454575675);
#57= IFCRELCONTAINEDINSPATIALSTRUCTURE('3Sa3dTJGn0H8TQIGiuGQd5',#56,'Building','Building Container for Elements',(#225),#50);
#58= IFCAXIS2PLACEMENT3D(#2,$,$);
#100= IFCPROJECT('0$WU4A9R19$vKWO$AdOnKA',#56,'IfcProject',$,$,$,$,(#1),#101);
#101= IFCUNITASSIGNMENT((#102,#103,#104));
#102= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
#103= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#104= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);
#105= IFCRELAGGREGATES('091a6ewbvCMQ2Vyiqspa7a',#56,'Project Container','Project Container for Buildings',#100,(#50));
#200= IFCBLOCK(#201,2000.0,800.0,800.0);
#201= IFCAXIS2PLACEMENT3D(#2,$,$);
#202= IFCROUNDEDRECTANGLEPROFILEDEF(.AREA.,'VoidProfile',$,1800.0,600.0,200.0);
#203= IFCAXIS2PLACEMENT3D(#204,$,$);
#204= IFCCARTESIANPOINT((1000.0,400.0,100.0));
#205= IFCDIRECTION((0.0,0.0,1.0));
#206= IFCEXTRUDEDAREASOLID(#202,#203,#205,700.0);
#207= IFCBOOLEANRESULT(.DIFFERENCE.,#200,#206);
#208= IFCCSGSOLID(#207);
#209= IFCREPRESENTATIONMAP(#210,#211);
#210= IFCAXIS2PLACEMENT3D(#2,$,$);
#211= IFCSHAPEREPRESENTATION(#5,'Body','SolidModel',(#208));
#212= IFCMATERIAL('Ceramic',$,$);
#213= IFCRELASSOCIATESMATERIAL('0Pkhszwjv1qRMYyCFg9fjB',#56,'MatAssoc','Material Associates',(#214),#212);
#214= IFCSANITARYTERMINALTYPE('1HarmwaPv3OeJSXpaoPKpg',#56,'Bath',$,$,$,(#209),$,$,.BATH.);
#215= IFCRELDEFINESBYTYPE('1lO$X3e3j9lfVMhNy4MzKB',#56,$,$,(#225),#214);
#216= IFCRELDECLARES('1acQrDhur9399Xqs2jQs4t',#56,$,$,#100,(#214));
#217= IFCDIRECTION((1.0,0.0,0.0));
#218= IFCDIRECTION((0.0,1.0,0.0));
#219= IFCCARTESIANPOINT((0.0,0.0,0.0));
#220= IFCCARTESIANTRANSFORMATIONOPERATOR3D(#217,#218,#219,1.0,#221);
#221= IFCDIRECTION((0.0,0.0,1.0));
#222= IFCMAPPEDITEM(#209,#220);
#223= IFCSHAPEREPRESENTATION(#5,'Body','MappedRepresentation',(#222));
#224= IFCPRODUCTDEFINITIONSHAPE($,$,(#223));
#225= IFCSANITARYTERMINAL('3$$o7C03j0KQeLnoj018fc',#56,$,$,$,#227,#224,$,$);
#226= IFCAXIS2PLACEMENT3D(#2,$,$);
#227= IFCLOCALPLACEMENT($,#226);
ENDSEC;

END-ISO-10303-21;

50 changes: 50 additions & 0 deletions files/ifc_files/beam-extruded-solid.ifc
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [NotAssigned]'),'2;1');
FILE_NAME(
/* name */ 'beam-extruded-solid.ifc',
/* time_stamp */ '2016-02-04T08:11:04',
/* author */ ('redacted'),
/* organization */ ('redacted'),
/* preprocessor_version */ 'redacted',
/* originating_system */ 'redacted - redacted - 3.14159',
/* authorization */ 'None');

FILE_SCHEMA (('IFC4X3_ADD2'));
ENDSEC;

DATA;
/* general entities required for all IFC data sets, defining the context for the exchange */
#1= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#3,$);
#2= IFCCARTESIANPOINT((0.0,0.0,0.0));
#3= IFCAXIS2PLACEMENT3D(#2,$,$);
#4= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#1,$,.MODEL_VIEW.,$);
#5= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#1,$,.MODEL_VIEW.,$);
/* defines the default building (as required as the minimum spatial element) */
#50= IFCBUILDING('39t4Pu3nTC4ekXYRIHJB9W',$,'IfcBuilding',$,$,$,$,$,$,$,$,$);
#51= IFCRELCONTAINEDINSPATIALSTRUCTURE('3Sa3dTJGn0H8TQIGiuGQd5',$,'Building','Building Container for Elements',(#211),#50);
#52= IFCAXIS2PLACEMENT3D(#2,$,$);
#100= IFCPROJECT('0$WU4A9R19$vKWO$AdOnKA',$,'IfcProject',$,$,$,$,(#1),#101);
#101= IFCUNITASSIGNMENT((#102,#103,#104));
#102= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
#103= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#104= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);
#105= IFCRELAGGREGATES('091a6ewbvCMQ2Vyiqspa7a',$,'Project Container','Project Container for Buildings',#100,(#50));
#200= IFCCARTESIANPOINTLIST2D(((2.8,-79.5),(2.8,79.5),(6.31471899999999,87.985281),(14.8,91.5),(50.0,91.5),(50.0,100.0),(-50.0,100.0),(-50.0,91.5),(-14.8,91.5),(-6.31471899999997,87.985281),(-2.79999999999999,79.5),(-2.8,-79.5),(-6.31471899999999,-87.985281),(-14.8,-91.5),(-50.0,-91.5),(-50.0,-100.0),(50.0,-100.0),(50.0,-91.5),(14.8,-91.5),(6.31471899999997,-87.985281)),$);
#201= IFCINDEXEDPOLYCURVE(#200,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCLINEINDEX((4,5,6,7,8,9)),IFCARCINDEX((9,10,11)),IFCLINEINDEX((11,12)),IFCARCINDEX((12,13,14)),IFCLINEINDEX((14,15,16,17,18,19)),IFCARCINDEX((19,20,1))),.F.);
#202= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'IPE200',#201);
#203= IFCCARTESIANPOINT((0.0,0.0,0.0));
#204= IFCDIRECTION((0.0,1.0,0.0));
#205= IFCDIRECTION((1.0,0.0,0.0));
#206= IFCAXIS2PLACEMENT3D(#203,#204,#205);
#207= IFCDIRECTION((0.0,0.0,1.0));
#208= IFCEXTRUDEDAREASOLID(#202,#206,#207,1000.0);
#209= IFCSHAPEREPRESENTATION(#5,'Body','SweptSolid',(#208));
#210= IFCPRODUCTDEFINITIONSHAPE($,$,(#209));
#211= IFCBEAM('0EF5_zZRv0pQPddeofU3KT',$,'ExampleBeamName','ExampleBeamDescription',$,#213,#210,'Tag',$);
#212= IFCAXIS2PLACEMENT3D(#2,$,$);
#213= IFCLOCALPLACEMENT($,#212);
ENDSEC;

END-ISO-10303-21;

Binary file added files/ifc_files/beam-standard-case-gz.ifc
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
ISO-10303-21;
HEADER;

FILE_DESCRIPTION(('ViewDefinition [ReferenceView]'),'2;1');
FILE_NAME('column-straight-rectangle-tessellation.ifc','2014-07-08T19:20:14',('redacted'),(''),'redacted','redacted - redacted - 3.14159','');
FILE_SCHEMA(('IFC4X3_ADD2'));
ENDSEC;

DATA;

/* set the default units - and the units used for geometric representations */
/* here imperial units (inch) are used */
/* ---------------------------------------------------------------------------------------------- */
#12= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#13= IFCMEASUREWITHUNIT(IFCLENGTHMEASURE(0.0254),#12);
#14= IFCDIMENSIONALEXPONENTS(1,0,0,0,0,0,0);
#15= IFCCONVERSIONBASEDUNIT(#14,.LENGTHUNIT.,'inch',#13);
#36= IFCUNITASSIGNMENT((#15));

/* set the context of the IFC4 exchange file */
/* name, units and geometric representation context */
/* note: IfcOwnerHistory is not in scope of the IFC4 reference view */
/* ---------------------------------------------------------------------------------------------- */
#37= IFCPROJECT('0CxDbxzA1B4eLeOw9eIjQx',$,'Project',$,$,$,$,(#40),#36);

/* set the representation context for 3D body, and 2D axis representation */
/* no north direction and no geo-spatial coordinates are provided */
/* ---------------------------------------------------------------------------------------------- */
#38= IFCCARTESIANPOINT((0.,0.,0.));
#39= IFCAXIS2PLACEMENT3D(#38,$,$);
#40= IFCGEOMETRICREPRESENTATIONCONTEXT('3D','Model',3,1.0E-05,#39,$);
#41= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#40,$,.MODEL_VIEW.,$);

/* defines the default site (as required as the minimum spatial element) */
/* ---------------------------------------------------------------------------------------------- */
#44= IFCSITE('0M0akNk9f3hOH9u2awmtre',$,'Site #1',$,$,#67,$,$,.ELEMENT.,$,$,$,$,$);
#45= IFCRELAGGREGATES('2y_abP04108BvIhy2WfsHm',$,$,$,#37,(#44));
#67= IFCLOCALPLACEMENT($,#69);
#68= IFCCARTESIANPOINT((0.,0.,0.));
#69= IFCAXIS2PLACEMENT3D(#68,$,$);

/* defines the column with rectangular cross section as a model element */
/* using tessellated geometry */
/* ---------------------------------------------------------------------------------------------- */
#71= IFCCOLUMN('2WUGYBphrFv8aLIFJCmiIk',$,'Column #1',$,$,#121,#111,$,.COLUMN.);
#111= IFCPRODUCTDEFINITIONSHAPE($,$,(#154));
#116= IFCRELCONTAINEDINSPATIALSTRUCTURE('0F1oUoJsr5ZwxKAxiD1Vep',$,$,$,(#71),#44);
#119= IFCDIRECTION((0.,0.,1.));
#120= IFCDIRECTION((1.,0.,0.));
#121= IFCLOCALPLACEMENT(#67,#126);
#125= IFCCARTESIANPOINT((432.,288.,48.));
#126= IFCAXIS2PLACEMENT3D(#125,#119,#120);
#154= IFCSHAPEREPRESENTATION(#41,'Body','Tessellation',(#288));

/* the triangulated tessellation also includes the normals per face and vertex */
/* in this case, the vertex list and the normal list are corresponding lists, */
/* hence no separate normal index has to be provided at IfcTriangulatedFaceSet */
/* it generated longer lists, but is in line with many graphic APIs using a single buffer list */
/* ---------------------------------------------------------------------------------------------- */
#287= IFCCARTESIANPOINTLIST3D(((-4.,4.,0.),(-4.,-4.,0.),(4.,-4.,0.),(4.,4.,0.),(-4.,4.,120.),(-4.,-4.,120.),(4.,-4.,120.),(4.,4.,120.),(-4.,4.,0.),(-4.,-4.,0.),(-4.,-4.,120.),(-4.,4.,120.),(-4.,-4.,0.),(4.,-4.,0.),(4.,-4.,120.),(-4.,-4.,120.),(4.,-4.,0.),(4.,4.,0.),(4.,4.,120.),(4.,-4.,120.),(4.,4.,0.),(-4.,4.,0.),(-4.,4.,120.),(4.,4.,120.)),$);
#288= IFCTRIANGULATEDFACESET(#287,((0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.)),.T.,((1,3,2),(1,4,3),(5,6,7),(5,7,8),(9,10,11),(9,11,12),(13,14,15),(13,15,16),(17,18,19),(17,19,20),(21,22,23),(21,23,24)),$);
ENDSEC;

END-ISO-10303-21;
155 changes: 155 additions & 0 deletions files/ifc_files/bs_samples/curve-parameters-in-degrees.ifc
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [NotAssigned]'),'2;1');
FILE_NAME(
/* name */ 'curve-parameters-in-degrees.ifc',
/* time_stamp */ '2017-06-28T23:09:53',
/* author */ ('redacted'),
/* organization */ ('redacted'),
/* preprocessor_version */ 'redacted',
/* originating_system */ 'redacted - redacted - 3.14159',
/* authorization */ 'None');

FILE_SCHEMA (('IFC4X3_ADD2'));
ENDSEC;

DATA;
#10= IFCCARTESIANPOINT((0.0,0.0,0.0));
#11= IFCAXIS2PLACEMENT3D(#10,$,$);
#12= IFCLOCALPLACEMENT($,#11);
/* defines the default building (as required as the minimum spatial element) */
/* These profile curves are intentionally expressed in a more complicated manner than necessary to test parameterization */
#13= IFCBUILDING('39t4Pu3nTC4ekXYRIHJB9W',$,'IfcBuilding',$,$,#12,$,$,$,$,$,#18);
#14= IFCRELCONTAINEDINSPATIALSTRUCTURE('3Sa3dTJGn0H8TQIGiuGQd5',$,'Building','Building Container for Elements',(#77,#131,#180),#13);
#15= IFCCARTESIANPOINT((0.0,0.0,0.0));
#16= IFCAXIS2PLACEMENT3D(#15,$,$);
#18= IFCPOSTALADDRESS($,$,$,$,('Unknown'),$,'Unknown',$,'Unknown','Unknown');
/* general entities required for all IFC data sets, defining the context for the exchange */
#20= IFCPROJECT('0$WU4A9R19$vKWO$AdOnKA',$,'IfcProject',$,$,$,$,(#31),#21);
#21= IFCUNITASSIGNMENT((#22,#23,#24,#27,#29));
#22= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
#23= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#24= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
#25= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#26= IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.0174532925199433),#25);
#27= IFCCONVERSIONBASEDUNIT(#28,.PLANEANGLEUNIT.,'DEGREE',#26);
#28= IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);
#29= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);
#30= IFCRELAGGREGATES('091a6ewbvCMQ2Vyiqspa7a',$,'Project Container','Project Container for Buildings',#20,(#13));
#31= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#33,#34);
#32= IFCCARTESIANPOINT((0.0,0.0,0.0));
#33= IFCAXIS2PLACEMENT3D(#32,$,$);
#34= IFCDIRECTION((0.0,1.0));
#35= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#31,$,.MODEL_VIEW.,$);
/* Example data for CurveParametersDegrees */
#50= IFCMATERIAL('Steel',$,$);
#52= IFCCARTESIANPOINT((-1000.0,1000.0));
#53= IFCDIRECTION((0.70710678,-0.70710678));
#54= IFCVECTOR(#53,1414.2135623731);
#55= IFCLINE(#52,#54);
#56= IFCTRIMMEDCURVE(#55,(IFCPARAMETERVALUE(0.292893218813453)),(IFCPARAMETERVALUE(1.70710678118655)),.T.,.PARAMETER.);
#57= IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#56);
#58= IFCCARTESIANPOINT((0.0,0.0));
#59= IFCAXIS2PLACEMENT2D(#58,$);
#60= IFCCIRCLE(#59,1000.0);
#61= IFCTRIMMEDCURVE(#60,(IFCPARAMETERVALUE(315.0)),(IFCPARAMETERVALUE(135.0)),.T.,.PARAMETER.);
#62= IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#61);
#63= IFCCOMPOSITECURVE((#57,#62),.U.);
#64= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'SemiCircle',#63);
#65= IFCMATERIALPROFILE('SemiCircle',$,#50,#64,$,$);
#67= IFCMATERIALPROFILESET('SemiCircle',$,(#65),$);
#68= IFCRELASSOCIATESMATERIAL('1gdVo5TjPETPZlW8HSRupM',$,'MatAssoc','Material Associates',(#69),#67);
#69= IFCCOLUMNTYPE('24mq0gwVr7bgEMXPmo$TrF',$,'SemiCircle',$,$,$,$,$,$,.COLUMN.);
#70= IFCRELDEFINESBYTYPE('0devdSRyf3uBEQbSqWTDjo',$,'NameNotAssigned',$,(#77),#69);
#71= IFCRELDECLARES('1Cjr05W9T0fx0M3_mdVqMd',$,$,$,#20,(#69,#124,#173));
#72= IFCMATERIALPROFILESETUSAGE(#67,5,$);
#73= IFCRELASSOCIATESMATERIAL('35z8gDFbb6gvrCOz$24tUJ',$,'MatAssoc','Material Associates',(#77),#72);
#74= IFCCARTESIANPOINT((0.0,0.0,0.0));
#75= IFCAXIS2PLACEMENT3D(#74,$,$);
#76= IFCLOCALPLACEMENT(#12,#75);
#77= IFCCOLUMN('0RGc8lepr7BRF_EtHrWJ45',$,'SemiCircle',$,$,#76,#85,$,$);
#78= IFCCARTESIANPOINT((0.0,0.0,2000.0));
#79= IFCPOLYLINE((#15,#78));
#80= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#31,$,.MODEL_VIEW.,$);
#81= IFCSHAPEREPRESENTATION(#80,'Axis','Curve3D',(#79));
#82= IFCEXTRUDEDAREASOLID(#64,$,#83,2000.0);
#83= IFCDIRECTION((0.0,0.0,1.0));
#84= IFCSHAPEREPRESENTATION(#35,'Body','SweptSolid',(#82));
#85= IFCPRODUCTDEFINITIONSHAPE($,$,(#81,#84));
#100= IFCCARTESIANPOINT((0.0,1000.0));
#101= IFCAXIS2PLACEMENT2D(#100,#102);
#102= IFCDIRECTION((-1.0,0.0));
#103= IFCCIRCLE(#101,1732.05081);
#104= IFCTRIMMEDCURVE(#103,(IFCPARAMETERVALUE(60.0)),(IFCPARAMETERVALUE(120.0)),.T.,.PARAMETER.);
#105= IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#104);
#106= IFCCARTESIANPOINT((-866.0254,-500.0));
#107= IFCAXIS2PLACEMENT2D(#106,#108);
#108= IFCDIRECTION((0.0,-1.0));
#109= IFCCIRCLE(#107,1732.05081);
#110= IFCTRIMMEDCURVE(#109,(IFCPARAMETERVALUE(90.0)),(IFCPARAMETERVALUE(150.0)),.T.,.PARAMETER.);
#111= IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#110);
#112= IFCCARTESIANPOINT((866.0254,-500.0));
#113= IFCAXIS2PLACEMENT2D(#112,#114);
#114= IFCDIRECTION((0.0,1.0));
#115= IFCCIRCLE(#113,1732.05081);
#116= IFCTRIMMEDCURVE(#115,(IFCPARAMETERVALUE(30.0)),(IFCPARAMETERVALUE(90.0)),.T.,.PARAMETER.);
#117= IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#116);
#118= IFCCOMPOSITECURVE((#105,#111,#117),.U.);
#119= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'CurviLinearTriangle',#118);
#120= IFCMATERIALPROFILE('CurviLinearTriangle',$,#50,#119,$,$);
#122= IFCMATERIALPROFILESET('CurviLinearTriangle',$,(#120),$);
#123= IFCRELASSOCIATESMATERIAL('1qSyS$HSb8TRu4PVnIUzZM',$,'MatAssoc','Material Associates',(#124),#122);
#124= IFCCOLUMNTYPE('0JgmY6eGLC9AwX_nMFf5CT',$,'CurviLinearTriangle',$,$,$,$,$,$,.COLUMN.);
#125= IFCRELDEFINESBYTYPE('1N1PpBCJLB4QMrIjidnGaj',$,'NameNotAssigned',$,(#131),#124);
#126= IFCMATERIALPROFILESETUSAGE(#122,5,$);
#127= IFCRELASSOCIATESMATERIAL('00Bah4pIPCa9jB2F34kUX_',$,'MatAssoc','Material Associates',(#131),#126);
#128= IFCCARTESIANPOINT((2500.0,0.0,0.0));
#129= IFCAXIS2PLACEMENT3D(#128,$,$);
#130= IFCLOCALPLACEMENT(#12,#129);
#131= IFCCOLUMN('3vcm8ZmFfDwhpgzzT7EP8n',$,'CurviLinearTriangle',$,$,#130,#137,$,$);
#132= IFCCARTESIANPOINT((0.0,0.0,2000.0));
#133= IFCPOLYLINE((#15,#132));
#134= IFCSHAPEREPRESENTATION(#80,'Axis','Curve3D',(#133));
#135= IFCEXTRUDEDAREASOLID(#119,$,#83,2000.0);
#136= IFCSHAPEREPRESENTATION(#35,'Body','SweptSolid',(#135));
#137= IFCPRODUCTDEFINITIONSHAPE($,$,(#134,#136));
#150= IFCCARTESIANPOINT((0.0,0.0));
#151= IFCAXIS2PLACEMENT2D(#150,$);
#152= IFCELLIPSE(#151,1000.0,500.0);
#153= IFCTRIMMEDCURVE(#152,(IFCPARAMETERVALUE(0.0)),(IFCPARAMETERVALUE(45.0)),.T.,.PARAMETER.);
#154= IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#153);
#155= IFCCARTESIANPOINT((0.0,0.0));
#156= IFCDIRECTION((0.89442719,0.4472136));
#157= IFCVECTOR(#156,1.0);
#158= IFCLINE(#155,#157);
#159= IFCTRIMMEDCURVE(#158,(IFCPARAMETERVALUE(0.0)),(IFCPARAMETERVALUE(790.569415042095)),.F.,.PARAMETER.);
#160= IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#159);
#161= IFCCARTESIANPOINT((0.0,0.0));
#162= IFCDIRECTION((1.0,0.0));
#163= IFCVECTOR(#162,1.0);
#164= IFCLINE(#161,#163);
#165= IFCTRIMMEDCURVE(#164,(IFCPARAMETERVALUE(0.0)),(IFCPARAMETERVALUE(1000.0)),.T.,.PARAMETER.);
#166= IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#165);
#167= IFCCOMPOSITECURVE((#154,#160,#166),.U.);
#168= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'PartialEllipse',#167);
#169= IFCMATERIALPROFILE('PartialEllipse',$,#50,#168,$,$);
#171= IFCMATERIALPROFILESET('PartialEllipse',$,(#169),$);
#172= IFCRELASSOCIATESMATERIAL('2V$PMUw5f3PgVGq_LG8lb7',$,'MatAssoc','Material Associates',(#173),#171);
#173= IFCCOLUMNTYPE('32anvmJgjFPOL650_UAlfM',$,'PartialEllipse',$,$,$,$,$,$,.COLUMN.);
#174= IFCRELDEFINESBYTYPE('1YdxXK2rrC6RnMj56iAUZG',$,'NameNotAssigned',$,(#180),#173);
#175= IFCMATERIALPROFILESETUSAGE(#171,5,$);
#176= IFCRELASSOCIATESMATERIAL('1k_RZ6rAPBe92Lvj8VqnvM',$,'MatAssoc','Material Associates',(#180),#175);
#177= IFCCARTESIANPOINT((5000.0,0.0,0.0));
#178= IFCAXIS2PLACEMENT3D(#177,$,$);
#179= IFCLOCALPLACEMENT(#12,#178);
#180= IFCCOLUMN('0gw7Zq2jn3b91J9aZCStsR',$,'PartialEllipse',$,$,#179,#186,$,$);
#181= IFCCARTESIANPOINT((0.0,0.0,2000.0));
#182= IFCPOLYLINE((#15,#181));
#183= IFCSHAPEREPRESENTATION(#80,'Axis','Curve3D',(#182));
#184= IFCEXTRUDEDAREASOLID(#168,$,#83,2000.0);
#185= IFCSHAPEREPRESENTATION(#35,'Body','SweptSolid',(#184));
#186= IFCPRODUCTDEFINITIONSHAPE($,$,(#183,#185));
ENDSEC;

END-ISO-10303-21;

Loading
Loading