@ifc-lite/create 2.8.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/README.md +7 -0
  2. package/dist/ifc-creator-alignment-referents.d.ts +35 -0
  3. package/dist/ifc-creator-alignment-referents.d.ts.map +1 -0
  4. package/dist/ifc-creator-alignment-referents.js +89 -0
  5. package/dist/ifc-creator-alignment-referents.js.map +1 -0
  6. package/dist/ifc-creator-alignment-vertical.d.ts +40 -0
  7. package/dist/ifc-creator-alignment-vertical.d.ts.map +1 -0
  8. package/dist/ifc-creator-alignment-vertical.js +182 -0
  9. package/dist/ifc-creator-alignment-vertical.js.map +1 -0
  10. package/dist/ifc-creator-alignment.d.ts +45 -0
  11. package/dist/ifc-creator-alignment.d.ts.map +1 -0
  12. package/dist/ifc-creator-alignment.js +173 -0
  13. package/dist/ifc-creator-alignment.js.map +1 -0
  14. package/dist/ifc-creator-header.d.ts +2 -0
  15. package/dist/ifc-creator-header.d.ts.map +1 -0
  16. package/dist/ifc-creator-header.js +22 -0
  17. package/dist/ifc-creator-header.js.map +1 -0
  18. package/dist/ifc-creator-math.d.ts +37 -5
  19. package/dist/ifc-creator-math.d.ts.map +1 -1
  20. package/dist/ifc-creator-math.js +93 -4
  21. package/dist/ifc-creator-math.js.map +1 -1
  22. package/dist/ifc-creator-relationships.d.ts +43 -0
  23. package/dist/ifc-creator-relationships.d.ts.map +1 -0
  24. package/dist/ifc-creator-relationships.js +38 -0
  25. package/dist/ifc-creator-relationships.js.map +1 -0
  26. package/dist/ifc-creator-styles.d.ts +22 -0
  27. package/dist/ifc-creator-styles.d.ts.map +1 -0
  28. package/dist/ifc-creator-styles.js +50 -0
  29. package/dist/ifc-creator-styles.js.map +1 -0
  30. package/dist/ifc-creator-terrain.d.ts +170 -0
  31. package/dist/ifc-creator-terrain.d.ts.map +1 -0
  32. package/dist/ifc-creator-terrain.js +180 -0
  33. package/dist/ifc-creator-terrain.js.map +1 -0
  34. package/dist/ifc-creator.d.ts +21 -7
  35. package/dist/ifc-creator.d.ts.map +1 -1
  36. package/dist/ifc-creator.js +93 -97
  37. package/dist/ifc-creator.js.map +1 -1
  38. package/dist/in-store/_emit-helpers.d.ts +2 -1
  39. package/dist/in-store/_emit-helpers.d.ts.map +1 -1
  40. package/dist/in-store/_emit-helpers.js +7 -7
  41. package/dist/in-store/_emit-helpers.js.map +1 -1
  42. package/dist/in-store/anchor.d.ts +2 -0
  43. package/dist/in-store/anchor.d.ts.map +1 -1
  44. package/dist/in-store/anchor.js.map +1 -1
  45. package/dist/in-store/apply-style.d.ts +3 -6
  46. package/dist/in-store/apply-style.d.ts.map +1 -1
  47. package/dist/in-store/apply-style.js +3 -77
  48. package/dist/in-store/apply-style.js.map +1 -1
  49. package/dist/in-store/column.d.ts.map +1 -1
  50. package/dist/in-store/column.js +2 -0
  51. package/dist/in-store/column.js.map +1 -1
  52. package/dist/in-store/door.d.ts.map +1 -1
  53. package/dist/in-store/door.js +2 -0
  54. package/dist/in-store/door.js.map +1 -1
  55. package/dist/in-store/extract-walls.d.ts +1 -1
  56. package/dist/in-store/extract-walls.d.ts.map +1 -1
  57. package/dist/in-store/extract-walls.js +37 -55
  58. package/dist/in-store/extract-walls.js.map +1 -1
  59. package/dist/in-store/generate-spaces-all.d.ts +6 -2
  60. package/dist/in-store/generate-spaces-all.d.ts.map +1 -1
  61. package/dist/in-store/generate-spaces-all.js +33 -9
  62. package/dist/in-store/generate-spaces-all.js.map +1 -1
  63. package/dist/in-store/generate-spaces.js +1 -1
  64. package/dist/in-store/generate-spaces.js.map +1 -1
  65. package/dist/in-store/placement-frame.d.ts +8 -0
  66. package/dist/in-store/placement-frame.d.ts.map +1 -1
  67. package/dist/in-store/placement-frame.js.map +1 -1
  68. package/dist/in-store/plate.d.ts.map +1 -1
  69. package/dist/in-store/plate.js +4 -0
  70. package/dist/in-store/plate.js.map +1 -1
  71. package/dist/in-store/resolve-anchor.d.ts +4 -2
  72. package/dist/in-store/resolve-anchor.d.ts.map +1 -1
  73. package/dist/in-store/resolve-anchor.js +79 -92
  74. package/dist/in-store/resolve-anchor.js.map +1 -1
  75. package/dist/in-store/resolve-source.d.ts +2 -1
  76. package/dist/in-store/resolve-source.d.ts.map +1 -1
  77. package/dist/in-store/resolve-source.js +49 -49
  78. package/dist/in-store/resolve-source.js.map +1 -1
  79. package/dist/in-store/roof.d.ts.map +1 -1
  80. package/dist/in-store/roof.js +4 -0
  81. package/dist/in-store/roof.js.map +1 -1
  82. package/dist/in-store/slab.d.ts.map +1 -1
  83. package/dist/in-store/slab.js +4 -0
  84. package/dist/in-store/slab.js.map +1 -1
  85. package/dist/in-store/space.d.ts.map +1 -1
  86. package/dist/in-store/space.js +4 -0
  87. package/dist/in-store/space.js.map +1 -1
  88. package/dist/in-store/spatial-children.d.ts +52 -0
  89. package/dist/in-store/spatial-children.d.ts.map +1 -0
  90. package/dist/in-store/spatial-children.js +112 -0
  91. package/dist/in-store/spatial-children.js.map +1 -0
  92. package/dist/in-store/spatial-zone.d.ts.map +1 -1
  93. package/dist/in-store/spatial-zone.js +5 -5
  94. package/dist/in-store/spatial-zone.js.map +1 -1
  95. package/dist/in-store/style-entity-reader.d.ts +14 -0
  96. package/dist/in-store/style-entity-reader.d.ts.map +1 -0
  97. package/dist/in-store/style-entity-reader.js +58 -0
  98. package/dist/in-store/style-entity-reader.js.map +1 -0
  99. package/dist/in-store/wall.d.ts.map +1 -1
  100. package/dist/in-store/wall.js +4 -14
  101. package/dist/in-store/wall.js.map +1 -1
  102. package/dist/in-store/window.d.ts.map +1 -1
  103. package/dist/in-store/window.js +2 -0
  104. package/dist/in-store/window.js.map +1 -1
  105. package/dist/index.d.ts +12 -1
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +5 -0
  108. package/dist/index.js.map +1 -1
  109. package/dist/landxml/alignment-mapping.d.ts +98 -0
  110. package/dist/landxml/alignment-mapping.d.ts.map +1 -0
  111. package/dist/landxml/alignment-mapping.js +282 -0
  112. package/dist/landxml/alignment-mapping.js.map +1 -0
  113. package/dist/landxml/alignment-record.d.ts +18 -0
  114. package/dist/landxml/alignment-record.d.ts.map +1 -0
  115. package/dist/landxml/alignment-record.js +63 -0
  116. package/dist/landxml/alignment-record.js.map +1 -0
  117. package/dist/landxml/coordinate-plausibility.d.ts +54 -0
  118. package/dist/landxml/coordinate-plausibility.d.ts.map +1 -0
  119. package/dist/landxml/coordinate-plausibility.js +59 -0
  120. package/dist/landxml/coordinate-plausibility.js.map +1 -0
  121. package/dist/landxml/landxml-to-ifc.d.ts +45 -0
  122. package/dist/landxml/landxml-to-ifc.d.ts.map +1 -0
  123. package/dist/landxml/landxml-to-ifc.js +203 -0
  124. package/dist/landxml/landxml-to-ifc.js.map +1 -0
  125. package/dist/landxml/profile-geometry.d.ts +50 -0
  126. package/dist/landxml/profile-geometry.d.ts.map +1 -0
  127. package/dist/landxml/profile-geometry.js +221 -0
  128. package/dist/landxml/profile-geometry.js.map +1 -0
  129. package/dist/landxml/profile-mapping.d.ts +36 -0
  130. package/dist/landxml/profile-mapping.d.ts.map +1 -0
  131. package/dist/landxml/profile-mapping.js +181 -0
  132. package/dist/landxml/profile-mapping.js.map +1 -0
  133. package/dist/landxml/profile-record.d.ts +46 -0
  134. package/dist/landxml/profile-record.d.ts.map +1 -0
  135. package/dist/landxml/profile-record.js +38 -0
  136. package/dist/landxml/profile-record.js.map +1 -0
  137. package/dist/landxml/refusals.d.ts +45 -0
  138. package/dist/landxml/refusals.d.ts.map +1 -0
  139. package/dist/landxml/refusals.js +141 -0
  140. package/dist/landxml/refusals.js.map +1 -0
  141. package/dist/landxml/result-types.d.ts +78 -0
  142. package/dist/landxml/result-types.d.ts.map +1 -0
  143. package/dist/landxml/result-types.js +5 -0
  144. package/dist/landxml/result-types.js.map +1 -0
  145. package/dist/landxml/source-types.d.ts +169 -0
  146. package/dist/landxml/source-types.d.ts.map +1 -0
  147. package/dist/landxml/source-types.js +5 -0
  148. package/dist/landxml/source-types.js.map +1 -0
  149. package/dist/landxml/station-equations.d.ts +69 -0
  150. package/dist/landxml/station-equations.d.ts.map +1 -0
  151. package/dist/landxml/station-equations.js +140 -0
  152. package/dist/landxml/station-equations.js.map +1 -0
  153. package/dist/landxml/writers.d.ts +33 -0
  154. package/dist/landxml/writers.d.ts.map +1 -0
  155. package/dist/landxml/writers.js +160 -0
  156. package/dist/landxml/writers.js.map +1 -0
  157. package/dist/types.d.ts +13 -2
  158. package/dist/types.d.ts.map +1 -1
  159. package/package.json +6 -6
@@ -20,6 +20,8 @@ export interface SpatialAnchor {
20
20
  bodyContextId: number;
21
21
  /** IfcGeometricRepresentationSubContext for 'Axis' (or its IfcGeometricRepresentationContext fallback). */
22
22
  axisContextId: number;
23
+ /** Root 3D IfcGeometricRepresentationContext, when resolved; optional for anchors constructed by callers. */
24
+ rootContextId?: number | null;
23
25
  /** The target IfcBuildingStorey expressId. */
24
26
  storeyId: number;
25
27
  /** The IfcLocalPlacement that the storey itself sits on. New element placements are chained from this. */
@@ -1 +1 @@
1
- {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../src/in-store/anchor.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2GAA2G;IAC3G,aAAa,EAAE,MAAM,CAAC;IACtB,2GAA2G;IAC3G,aAAa,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,0GAA0G;IAC1G,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIrG;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIvG;AAED,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAEpG;AAED,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAEpH"}
1
+ {"version":3,"file":"anchor.d.ts","sourceRoot":"","sources":["../../src/in-store/anchor.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2GAA2G;IAC3G,aAAa,EAAE,MAAM,CAAC;IACtB,2GAA2G;IAC3G,aAAa,EAAE,MAAM,CAAC;IACtB,6GAA6G;IAC7G,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,0GAA0G;IAC1G,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIrG;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIvG;AAED,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAEpG;AAED,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAEpH"}
@@ -1 +1 @@
1
- {"version":3,"file":"anchor.js","sourceRoot":"","sources":["../../src/in-store/anchor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA0D/D;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,MAA8C,EAAE,MAAc;IAC3F,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAClF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA8C,EAAE,MAAc;IAC7F,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAClF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAChD,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,CAA4B;IAChF,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,CAAoC;IACxF,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC"}
1
+ {"version":3,"file":"anchor.js","sourceRoot":"","sources":["../../src/in-store/anchor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA4D/D;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,MAA8C,EAAE,MAAc;IAC3F,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAClF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA8C,EAAE,MAAc;IAC7F,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAClF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAChD,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,CAA4B;IAChF,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,CAAoC;IACxF,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC"}
@@ -11,8 +11,9 @@
11
11
  * without parser internals, the same arrangement as `resolve-source.ts`.
12
12
  */
13
13
  import { type IfcDataStore } from '@ifc-lite/parser';
14
- import type { IfcAttributeValue, StoreEditor } from '@ifc-lite/mutations';
14
+ import type { StoreEditor } from '@ifc-lite/mutations';
15
15
  import { type SurfaceStyleColor } from './_emit-helpers.js';
16
+ import { type StyleEntity } from './style-entity-reader.js';
16
17
  export type { SurfaceStyleColor };
17
18
  export interface StyleBatch {
18
19
  /** Products to colour, by expressId. */
@@ -109,10 +110,6 @@ export interface ApplyStyleResult {
109
110
  */
110
111
  keptExistingItemIds: number[];
111
112
  }
112
- interface RawEntity {
113
- type: string;
114
- attributes: IfcAttributeValue[];
115
- }
116
113
  /**
117
114
  * The geometry a product is drawn from.
118
115
  *
@@ -126,7 +123,7 @@ interface RawEntity {
126
123
  * `extract-walls.ts` and one in `@ifc-lite/export`'s LOD generator, and none of
127
124
  * them follows mapped items. This is the complete one.
128
125
  */
129
- export declare function collectLeafRepresentationItems(read: (id: number) => RawEntity | null, representationId: number, options?: {
126
+ export declare function collectLeafRepresentationItems(read: (id: number) => StyleEntity | null, representationId: number, options?: {
130
127
  followMappedItems?: boolean;
131
128
  }): Set<number>;
132
129
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"apply-style.d.ts","sourceRoot":"","sources":["../../src/in-store/apply-style.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAmD,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtG,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,wBAAwB;IACxB,KAAK,EAAE,iBAAiB,CAAC;IACzB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mEAAmE;IACnE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,6EAA6E;IAC7E,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC;;;;;;;;;;OAUG;IACH,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC;;;OAGG;IACH,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AA0DD;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,SAAS,GAAG,IAAI,EACtC,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5C,GAAG,CAAC,MAAM,CAAC,CA8Bb;AAsDD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,EAAE,CA+FpB"}
1
+ {"version":3,"file":"apply-style.d.ts","sourceRoot":"","sources":["../../src/in-store/apply-style.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAgE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE1H,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,wBAAwB;IACxB,KAAK,EAAE,iBAAiB,CAAC;IACzB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mEAAmE;IACnE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,6EAA6E;IAC7E,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC;;;;;;;;;;OAUG;IACH,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC;;;OAGG;IACH,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AA+BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,EACxC,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5C,GAAG,CAAC,MAAM,CAAC,CA8Bb;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,EAAE,CA+FpB"}
@@ -13,35 +13,9 @@
13
13
  * Lives beside the other in-store builders so the backend layer can reach it
14
14
  * without parser internals, the same arrangement as `resolve-source.ts`.
15
15
  */
16
- import { EntityExtractor, getAttributeNamesAcrossSchemas } from '@ifc-lite/parser';
16
+ import { getAttributeNamesAcrossSchemas } from '@ifc-lite/parser';
17
17
  import { emitSurfaceStyle } from './_emit-helpers.js';
18
- /**
19
- * A STEP reference as an expressId.
20
- *
21
- * Source-parsed entities carry refs as numbers; overlay-created ones carry the
22
- * `'#123'` strings `StoreEditor.addEntity` takes. Both reach this module, so
23
- * both forms have to resolve.
24
- */
25
- function asRef(value) {
26
- if (typeof value === 'number')
27
- return value;
28
- if (typeof value === 'string' && value.startsWith('#')) {
29
- const id = Number(value.slice(1));
30
- return Number.isInteger(id) ? id : null;
31
- }
32
- return null;
33
- }
34
- function refList(value) {
35
- if (!Array.isArray(value))
36
- return [];
37
- const out = [];
38
- for (const item of value) {
39
- const id = asRef(item);
40
- if (id !== null)
41
- out.push(id);
42
- }
43
- return out;
44
- }
18
+ import { asRef, createStyleEntityReader, indexExistingStyles, refList } from './style-entity-reader.js';
45
19
  /**
46
20
  * Depth limit for the representation walk. Real nesting is three levels (shape
47
21
  * -> representation -> item, plus one hop through a mapped representation);
@@ -53,7 +27,6 @@ const SHAPE_REPRESENTATIONS_INDEX = 2; // IfcProductDefinitionShape.Representati
53
27
  const REPRESENTATION_ITEMS_INDEX = 3; // IfcShapeRepresentation.Items
54
28
  const MAPPED_ITEM_SOURCE_INDEX = 0; // IfcMappedItem.MappingSource
55
29
  const MAPPED_REPRESENTATION_INDEX = 1; // IfcRepresentationMap.MappedRepresentation
56
- const STYLED_ITEM_TARGET_INDEX = 0; // IfcStyledItem.Item
57
30
  /**
58
31
  * Index of a named attribute on a class, resolved against the bundled schema
59
32
  * union rather than hardcoded.
@@ -116,53 +89,6 @@ export function collectLeafRepresentationItems(read, representationId, options =
116
89
  walk(representationId, 0);
117
90
  return out;
118
91
  }
119
- /**
120
- * Read an entity by expressId, source buffer first and overlay second.
121
- *
122
- * `StoreEditor.addEntity` does not insert into `store.entityIndex`, so a
123
- * source-only reader cannot see anything created in the same session: styling a
124
- * wall from `bim.store.addWall` reported it as geometry-less and wrote an
125
- * orphan style. Mirrors `readEntity` in `extract-walls.ts`.
126
- */
127
- function createReader(store, editor) {
128
- const extractor = new EntityExtractor(store.source);
129
- return (id) => {
130
- const ref = store.entityIndex.byId.get(id);
131
- if (ref && ref.byteLength > 0 && ref.byteOffset >= 0) {
132
- const entity = extractor.extractEntity(ref);
133
- if (entity)
134
- return { type: entity.type, attributes: entity.attributes ?? [] };
135
- }
136
- const created = editor.getNewEntity(id);
137
- return created ? { type: created.type, attributes: created.attributes ?? [] } : null;
138
- };
139
- }
140
- /**
141
- * Every representation item that already carries an `IfcStyledItem`, keyed by
142
- * the item it styles.
143
- *
144
- * Built once per call and then maintained as styled items are added and
145
- * removed. Rebuilding it per batch was both the dominant cost of a
146
- * colour-by-class pass (87 ms per batch on a 92k-styled-item model) and a
147
- * correctness gap: a second batch could not see the first batch's styled items,
148
- * so overlapping geometry ended up with two of them.
149
- */
150
- function indexExistingStyles(store, editor, read) {
151
- const styledBy = new Map();
152
- for (const id of store.entityIndex.byType.get('IFCSTYLEDITEM') ?? []) {
153
- const target = asRef(read(id)?.attributes[STYLED_ITEM_TARGET_INDEX]);
154
- if (target !== null)
155
- styledBy.set(target, id);
156
- }
157
- for (const created of editor.getNewEntities()) {
158
- if (created.type.toUpperCase() !== 'IFCSTYLEDITEM')
159
- continue;
160
- const target = asRef(created.attributes?.[STYLED_ITEM_TARGET_INDEX]);
161
- if (target !== null)
162
- styledBy.set(target, created.expressId);
163
- }
164
- return styledBy;
165
- }
166
92
  /**
167
93
  * Give every representation item behind each batch's products one
168
94
  * `IfcSurfaceStyle`.
@@ -176,7 +102,7 @@ export function applyStylesInStore(editor, store, batches, options = {}) {
176
102
  const replaceExisting = options.replaceExisting ?? true;
177
103
  const followMapped = options.followMappedItems ?? true;
178
104
  const schema = options.schema ?? store.schemaVersion;
179
- const read = createReader(store, editor);
105
+ const read = createStyleEntityReader(store, editor);
180
106
  const styledBy = indexExistingStyles(store, editor, read);
181
107
  const results = batches.map(batch => {
182
108
  const items = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"apply-style.js","sourceRoot":"","sources":["../../src/in-store/apply-style.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-style.js","sourceRoot":"","sources":["../../src/in-store/apply-style.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../src/in-store/column.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAkC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjF,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,mBAAmB,GAC1B,iBAAiB,CAuGnB"}
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../src/in-store/column.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAkC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjF,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,mBAAmB,GAC1B,iBAAiB,CAwGnB"}
@@ -15,6 +15,7 @@
15
15
  * Pure: no I/O, no parser access — operates entirely through the editor.
16
16
  */
17
17
  import { generateIfcGuid } from '@ifc-lite/encoding';
18
+ import { assertFinitePoint3 } from '../ifc-creator-math.js';
18
19
  import { toNativeLength, toNativePoint3 } from './anchor.js';
19
20
  import { assertPositiveFinite, ownerHistoryRef, productGuid } from './_emit-helpers.js';
20
21
  /**
@@ -27,6 +28,7 @@ import { assertPositiveFinite, ownerHistoryRef, productGuid } from './_emit-help
27
28
  */
28
29
  export function addColumnToStore(editor, anchor, params) {
29
30
  const { ownerHistoryId, bodyContextId, storeyId, storeyPlacementId } = anchor;
31
+ assertFinitePoint3({ Position: params.Position }, 'addColumnToStore');
30
32
  assertPositiveFinite([params.Width, params.Depth, params.Height], 'addColumnToStore: Width, Depth, and Height must be finite positive numbers');
31
33
  // Params are metres; convert dimensioned fields to the file's native
32
34
  // length unit before emit (see SpatialAnchor.lengthUnitScale).
@@ -1 +1 @@
1
- {"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/in-store/column.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column.js","sourceRoot":"","sources":["../../src/in-store/column.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"door.d.ts","sourceRoot":"","sources":["../../src/in-store/door.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAkC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAuCjF,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,CAAC;IAC7E,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,iBAAiB,GACxB,eAAe,CAgDjB"}
1
+ {"version":3,"file":"door.d.ts","sourceRoot":"","sources":["../../src/in-store/door.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAkC,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAuCjF,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,CAAC;IAC7E,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,iBAAiB,GACxB,eAAe,CAiDjB"}
@@ -1,6 +1,7 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { assertFinitePoint3 } from '../ifc-creator-math.js';
4
5
  import { toNativeLength, toNativePoint3 } from './anchor.js';
5
6
  import { assertPositiveFinite, emitBodyRepresentation, emitExtrudedSolid, emitLocalPlacement, emitRectangleProfile, emitRelContainedInSpatialStructure, ifcElementHeader, } from './_emit-helpers.js';
6
7
  /**
@@ -31,6 +32,7 @@ const DOOR_OPERATION_ENUM = new Set([
31
32
  'NOTDEFINED',
32
33
  ]);
33
34
  export function addDoorToStore(editor, anchor, params) {
35
+ assertFinitePoint3({ Position: params.Position }, 'addDoorToStore');
34
36
  assertPositiveFinite([params.Width, params.Height], 'addDoorToStore: Width and Height must be positive');
35
37
  assertPositiveFinite([params.FrameThickness ?? 0.05], 'addDoorToStore: FrameThickness must be positive');
36
38
  // Params are metres; convert dimensioned fields (incl. the OverallWidth/
@@ -1 +1 @@
1
- {"version":3,"file":"door.js","sourceRoot":"","sources":["../../src/in-store/door.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAiB/D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAsB,MAAM,aAAa,CAAC;AACjF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,kCAAkC,EAClC,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,mBAAmB;IACnB,oBAAoB;IACpB,0BAA0B;IAC1B,wCAAwC;IACxC,yCAAyC;IACzC,mBAAmB;IACnB,oBAAoB;IACpB,0BAA0B;IAC1B,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;IACrB,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;IACrB,WAAW;IACX,WAAW;IACX,kBAAkB;IAClB,mBAAmB;IACnB,aAAa;IACb,YAAY;CACb,CAAC,CAAC;AAiCH,MAAM,UAAU,cAAc,CAC5B,MAAmB,EACnB,MAAqB,EACrB,MAAyB;IAEzB,oBAAoB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,mDAAmD,CAAC,CAAC;IACzG,oBAAoB,CAClB,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,EAC/B,iDAAiD,CAClD,CAAC;IACF,yEAAyE;IACzE,sEAAsE;IACtE,wDAAwD;IACxD,MAAM,GAAG;QACP,GAAG,MAAM;QACT,QAAQ,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;QACjD,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;QAC3C,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QAC7C,cAAc,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;KACtE,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,cAAwB,CAAC;IAElD,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1F,iEAAiE;IACjE,gEAAgE;IAChE,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAErG,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,QAAQ,CAAC;IACxD,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACtH,uEAAuE;IACvE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,mEAAmE;QACnE,iEAAiE;QACjE,sDAAsD;QACtD,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,IAAI,mBAAmB,CAAC;QAC9D,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;QAC9D,MAAM,WAAW,GAAG,aAAa,KAAK,aAAa;YACjD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAwB,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACrE,CAAC,CAAC,IAAI,CAAC;QACT,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,IAAI,YAAY,GAAG,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,KAAgD,CAAC,CAAC,SAAS,CAAC;IACvG,MAAM,cAAc,GAAG,kCAAkC,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAErI,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AACjG,CAAC"}
1
+ {"version":3,"file":"door.js","sourceRoot":"","sources":["../../src/in-store/door.ts"],"names":[],"mappings":"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"}
@@ -91,7 +91,7 @@ export declare function extractWallSegmentsForStorey(store: IfcDataStore, storey
91
91
  * call site (`generateSpaces` in `generate-spaces-all.ts`) rather than
92
92
  * emitting mis-scaled polygons.
93
93
  */
94
- export declare function existingSpaceFootprintsByStorey(store: IfcDataStore): Map<number, Vec2[][]>;
94
+ export declare function existingSpaceFootprintsByStorey(store: IfcDataStore, overlay?: OverlayWallReader): Map<number, Vec2[][]>;
95
95
  /**
96
96
  * Robust IFC type-name for an entity read from source. The columnar entity
97
97
  * table only indexes products/named entities, so `getTypeName` returns
@@ -1 +1 @@
1
- {"version":3,"file":"extract-walls.d.ts","sourceRoot":"","sources":["../../src/in-store/extract-walls.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAQL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,GACd,mBAAmB,GACnB,0BAA0B,GAC1B,yBAAyB,GACzB,kBAAkB,GAClB,aAAa,CAAC;AAElB,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,wDAAwD;IACxD,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;;OAKG;IACH,eAAe,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IACxC,uDAAuD;IACvD,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAqBD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,OAAO,GAAE,0BAA+B,GACvC,oBAAoB,CA+FtB;AAgGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAkC1F;AA0dD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAIR"}
1
+ {"version":3,"file":"extract-walls.d.ts","sourceRoot":"","sources":["../../src/in-store/extract-walls.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAQL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAS9B,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAElC,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,GACd,mBAAmB,GACnB,0BAA0B,GAC1B,yBAAyB,GACzB,kBAAkB,GAClB,aAAa,CAAC;AAElB,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,wDAAwD;IACxD,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;;OAKG;IACH,eAAe,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IACxC,uDAAuD;IACvD,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAqBD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,OAAO,GAAE,0BAA+B,GACvC,oBAAoB,CA0GtB;AAiGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAqCvB;AAubD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACzB,QAAQ,EAAE,MAAM,GACf,MAAM,CAIR"}
@@ -31,6 +31,7 @@
31
31
  import { EntityExtractor, extractMaterialsOnDemand, } from '@ifc-lite/parser';
32
32
  import { safeLengthUnitScale } from './length-unit-scale.js';
33
33
  import { AXIS_EPS, applyFrame, frameInStoreyFrame, numericAttr, readEntity, readVec3, storeyPlacementChain, } from './placement-frame.js';
34
+ import { buildRelatingChildrenIndex, createOverlayLookup, effectiveMemberType, effectiveStoreyIds, } from './spatial-children.js';
34
35
  /**
35
36
  * Element types treated as "wall-like" dividers by default. Extends
36
37
  * the obvious walls with curtain walls (often the only divider on a
@@ -83,13 +84,17 @@ export function extractWallSegmentsForStorey(store, storeyExpressId, overlay, op
83
84
  dividerTypes.add(t.toLowerCase());
84
85
  }
85
86
  const extractor = new EntityExtractor(store.source);
86
- const dividerIds = collectDividerIdsOnStorey(store, extractor, storeyExpressId, dividerTypes, log);
87
+ const lookup = createOverlayLookup(overlay);
88
+ const dividerIds = collectDividerIdsOnStorey(store, extractor, lookup, storeyExpressId, dividerTypes, log);
87
89
  log(`storey #${storeyExpressId}: ${dividerIds.length} contained divider element(s)`);
88
90
  // Segments are emitted in the STOREY frame, so composition of each
89
91
  // element's PlacementRelTo chain stops as soon as it reaches the storey's
90
92
  // own placement chain. See `frameInStoreyFrame`.
91
93
  const storeyChain = storeyPlacementChain(store, extractor, overlay, storeyExpressId);
92
94
  for (const id of dividerIds) {
95
+ // Created dividers have no source bytes; the overlay loop below reads them.
96
+ if (lookup.createdType(id) !== undefined)
97
+ continue;
93
98
  const result = extractWallAxisFromSource(store, extractor, id, storeyChain, log);
94
99
  if (result.segment) {
95
100
  segments.push(scaleSegment(result.segment, lengthUnitScale));
@@ -102,8 +107,16 @@ export function extractWallSegmentsForStorey(store, storeyExpressId, overlay, op
102
107
  }
103
108
  let overlayCount = 0;
104
109
  if (overlay) {
110
+ // Only the created dividers the spatial walk found on THIS storey: it
111
+ // indexes overlay-created IfcRelContainedInSpatialStructure too, and every
112
+ // authoring path writes one. Taking all of getNewEntities() made a wall
113
+ // authored on one storey a room boundary on every storey (#5642).
114
+ const onStorey = new Set(dividerIds);
105
115
  for (const ent of overlay.getNewEntities()) {
106
- if (!dividerTypes.has(ent.type.toLowerCase()))
116
+ if (!onStorey.has(ent.expressId))
117
+ continue;
118
+ // Effective class: a created wall retyped away is not a divider (#5249).
119
+ if (!dividerTypes.has((lookup.retypeOf(ent.expressId) ?? ent.type).toLowerCase()))
107
120
  continue;
108
121
  overlayCount++;
109
122
  const result = extractWallAxisFromOverlay(store, extractor, overlay, ent, storeyChain, log);
@@ -137,7 +150,8 @@ export function extractWallSegmentsForStorey(store, storeyExpressId, overlay, op
137
150
  contributingWallIds: contributing,
138
151
  wallThicknesses,
139
152
  skipped,
140
- considered: dividerIds.length + overlayCount,
153
+ // dividerIds already holds the created dividers on this storey (#5642).
154
+ considered: dividerIds.length,
141
155
  lengthUnitScale,
142
156
  };
143
157
  }
@@ -167,7 +181,7 @@ function scaleSegment(seg, scale) {
167
181
  function isDividerType(type, dividerTypes) {
168
182
  return dividerTypes.has(type.toLowerCase());
169
183
  }
170
- function collectDividerIdsOnStorey(store, extractor, storeyId, dividerTypes, log) {
184
+ function collectDividerIdsOnStorey(store, extractor, lookup, storeyId, dividerTypes, log) {
171
185
  const ids = [];
172
186
  const seen = new Set();
173
187
  if (!store.source)
@@ -177,12 +191,12 @@ function collectDividerIdsOnStorey(store, extractor, storeyId, dividerTypes, log
177
191
  // call walked every IfcRelAggregates / IfcRelContainedInSpatialStructure
178
192
  // entity in the file looking for one with the right relating id —
179
193
  // O(R·N) total in the number of rels and parents visited.
180
- const aggregateChildren = buildRelatingChildrenIndex(store, extractor, 'IFCRELAGGREGATES', 4, 5);
181
- const containmentChildren = buildRelatingChildrenIndex(store, extractor, 'IFCRELCONTAINEDINSPATIALSTRUCTURE', 5, 4);
194
+ const aggregateChildren = buildRelatingChildrenIndex(store, extractor, lookup, 'IFCRELAGGREGATES', 4, 5);
195
+ const containmentChildren = buildRelatingChildrenIndex(store, extractor, lookup, 'IFCRELCONTAINEDINSPATIALSTRUCTURE', 5, 4);
182
196
  const visitMember = (memberId) => {
183
197
  if (seen.has(memberId))
184
198
  return;
185
- const memberType = store.entities.getTypeName(memberId);
199
+ const memberType = effectiveMemberType(store, lookup, memberId);
186
200
  if (memberType && isDividerType(memberType, dividerTypes)) {
187
201
  seen.add(memberId);
188
202
  ids.push(memberId);
@@ -247,7 +261,7 @@ function collectDividerIdsOnStorey(store, extractor, storeyId, dividerTypes, log
247
261
  * call site (`generateSpaces` in `generate-spaces-all.ts`) rather than
248
262
  * emitting mis-scaled polygons.
249
263
  */
250
- export function existingSpaceFootprintsByStorey(store) {
264
+ export function existingSpaceFootprintsByStorey(store, overlay) {
251
265
  const out = new Map();
252
266
  if (!store.source)
253
267
  return out;
@@ -255,34 +269,36 @@ export function existingSpaceFootprintsByStorey(store) {
255
269
  const scale = safeLengthUnitScale(store.source, store.entityIndex, 'existingSpaceFootprintsByStorey');
256
270
  if (scale === null)
257
271
  return out;
258
- const aggregated = buildRelatingChildrenIndex(store, extractor, 'IFCRELAGGREGATES', 4, 5);
259
- const contained = buildRelatingChildrenIndex(store, extractor, 'IFCRELCONTAINEDINSPATIALSTRUCTURE', 5, 4);
260
- for (const st of store.getEntitiesByType('IfcBuildingStorey')) {
272
+ // Spaces baked earlier this session count as existing (#5249).
273
+ const lookup = createOverlayLookup(overlay);
274
+ const aggregated = buildRelatingChildrenIndex(store, extractor, lookup, 'IFCRELAGGREGATES', 4, 5);
275
+ const contained = buildRelatingChildrenIndex(store, extractor, lookup, 'IFCRELCONTAINEDINSPATIALSTRUCTURE', 5, 4);
276
+ for (const storeyId of effectiveStoreyIds(store, lookup)) {
277
+ const st = { expressId: storeyId };
261
278
  const kids = [...(aggregated.get(st.expressId) ?? []), ...(contained.get(st.expressId) ?? [])];
262
279
  // Same frame as the extracted wall segments — storey-local — so the
263
280
  // overlap test in generate-spaces compares like with like.
264
- const storeyChain = storeyPlacementChain(store, extractor, undefined, st.expressId);
281
+ const storeyChain = storeyPlacementChain(store, extractor, overlay, st.expressId);
265
282
  const footprints = [];
266
283
  for (const id of kids) {
267
- if ((store.entities.getTypeName(id) ?? '').toUpperCase() !== 'IFCSPACE')
284
+ if ((effectiveMemberType(store, lookup, id) ?? '').toUpperCase() !== 'IFCSPACE')
268
285
  continue;
269
- const ref = store.entityIndex.byId.get(id);
270
- if (!ref)
271
- continue;
272
- const ent = extractor.extractEntity(ref);
286
+ const ent = readEntity(store, extractor, overlay, id);
273
287
  if (!ent)
274
288
  continue;
275
289
  const placementId = numericAttr(ent.attributes[5]); // ObjectPlacement
276
290
  const representationId = numericAttr(ent.attributes[6]); // Representation
277
291
  if (placementId === null || representationId === null)
278
292
  continue;
279
- const frame = frameInStoreyFrame(store, extractor, undefined, placementId, storeyChain);
280
- const localPts = gatherBodyFootprintPoints(store, extractor, undefined, representationId);
293
+ const frame = frameInStoreyFrame(store, extractor, overlay, placementId, storeyChain);
294
+ const localPts = gatherBodyFootprintPoints(store, extractor, overlay, representationId);
281
295
  if (!frame || !localPts || localPts.length < 3)
282
296
  continue;
297
+ // An authored (baked) space is written in metres; a parsed one is native.
298
+ const k = lookup.createdType(id) !== undefined ? 1 : scale;
283
299
  footprints.push(localPts.map((p) => {
284
300
  const w = applyFrame(frame, p);
285
- return [w[0] * scale, w[1] * scale];
301
+ return [w[0] * k, w[1] * k];
286
302
  }));
287
303
  }
288
304
  if (footprints.length)
@@ -290,42 +306,8 @@ export function existingSpaceFootprintsByStorey(store) {
290
306
  }
291
307
  return out;
292
308
  }
293
- /**
294
- * Index every relationship of `relType` by its "relating" attribute, so a
295
- * lookup of "what's anchored to id X" becomes O(1) instead of an O(R)
296
- * scan of every relationship.
297
- */
298
- function buildRelatingChildrenIndex(store, extractor, relType, relatingIdx, relatedIdx) {
299
- const out = new Map();
300
- const relIds = store.entityIndex.byType.get(relType);
301
- if (!relIds)
302
- return out;
303
- for (const relId of relIds) {
304
- const ref = store.entityIndex.byId.get(relId);
305
- if (!ref)
306
- continue;
307
- const rel = extractor.extractEntity(ref);
308
- if (!rel)
309
- continue;
310
- const relating = rel.attributes[relatingIdx];
311
- if (typeof relating !== 'number')
312
- continue;
313
- const related = rel.attributes[relatedIdx];
314
- if (!Array.isArray(related))
315
- continue;
316
- let bucket = out.get(relating);
317
- if (!bucket) {
318
- bucket = [];
319
- out.set(relating, bucket);
320
- }
321
- for (const child of related) {
322
- if (typeof child === 'number')
323
- bucket.push(child);
324
- }
325
- }
326
- return out;
327
- }
328
309
  function extractWallAxisFromSource(store, extractor, wallId, storeyChain, log) {
310
+ // @raw-entity-enumeration-ok point read of one source divider; deleted ones were dropped by the effective spatial walk and created ones are read by the overlay loop
329
311
  const ref = store.entityIndex.byId.get(wallId);
330
312
  if (!ref) {
331
313
  log(`wall #${wallId}: missing entity ref`);