@ifc-lite/create 4.0.0 → 5.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 (325) hide show
  1. package/README.md +34 -0
  2. package/dist/in-store/align-boxes.d.ts +38 -0
  3. package/dist/in-store/align-boxes.d.ts.map +1 -0
  4. package/dist/in-store/align-boxes.js +97 -0
  5. package/dist/in-store/align-boxes.js.map +1 -0
  6. package/dist/in-store/anchor.d.ts.map +1 -1
  7. package/dist/in-store/anchor.js +13 -2
  8. package/dist/in-store/anchor.js.map +1 -1
  9. package/dist/in-store/beam.d.ts.map +1 -1
  10. package/dist/in-store/beam.js +3 -10
  11. package/dist/in-store/beam.js.map +1 -1
  12. package/dist/in-store/copy-array.d.ts +17 -0
  13. package/dist/in-store/copy-array.d.ts.map +1 -0
  14. package/dist/in-store/copy-array.js +47 -0
  15. package/dist/in-store/copy-array.js.map +1 -0
  16. package/dist/in-store/copy-batch.d.ts +27 -0
  17. package/dist/in-store/copy-batch.d.ts.map +1 -0
  18. package/dist/in-store/copy-batch.js +101 -0
  19. package/dist/in-store/copy-batch.js.map +1 -0
  20. package/dist/in-store/copy-dependent-walk.d.ts +27 -0
  21. package/dist/in-store/copy-dependent-walk.d.ts.map +1 -0
  22. package/dist/in-store/copy-dependent-walk.js +61 -0
  23. package/dist/in-store/copy-dependent-walk.js.map +1 -0
  24. package/dist/in-store/copy-frame.d.ts +4 -3
  25. package/dist/in-store/copy-frame.d.ts.map +1 -1
  26. package/dist/in-store/copy-frame.js +14 -1
  27. package/dist/in-store/copy-frame.js.map +1 -1
  28. package/dist/in-store/copy-product.d.ts +0 -20
  29. package/dist/in-store/copy-product.d.ts.map +1 -1
  30. package/dist/in-store/copy-product.js +35 -35
  31. package/dist/in-store/copy-product.js.map +1 -1
  32. package/dist/in-store/edit/effective-mutation-view.d.ts +6 -0
  33. package/dist/in-store/edit/effective-mutation-view.d.ts.map +1 -0
  34. package/dist/in-store/edit/effective-mutation-view.js +45 -0
  35. package/dist/in-store/edit/effective-mutation-view.js.map +1 -0
  36. package/dist/in-store/edit/effective-storey.d.ts +13 -0
  37. package/dist/in-store/edit/effective-storey.d.ts.map +1 -0
  38. package/dist/in-store/edit/effective-storey.js +36 -0
  39. package/dist/in-store/edit/effective-storey.js.map +1 -0
  40. package/dist/in-store/edit/effective-storeys.d.ts +9 -0
  41. package/dist/in-store/edit/effective-storeys.d.ts.map +1 -0
  42. package/dist/in-store/edit/effective-storeys.js +16 -0
  43. package/dist/in-store/edit/effective-storeys.js.map +1 -0
  44. package/dist/in-store/edit/hosted-opening-refit.d.ts +29 -0
  45. package/dist/in-store/edit/hosted-opening-refit.d.ts.map +1 -0
  46. package/dist/in-store/edit/hosted-opening-refit.js +168 -0
  47. package/dist/in-store/edit/hosted-opening-refit.js.map +1 -0
  48. package/dist/in-store/edit/length-unit-scale.d.ts +24 -0
  49. package/dist/in-store/edit/length-unit-scale.d.ts.map +1 -0
  50. package/dist/in-store/edit/length-unit-scale.js +37 -0
  51. package/dist/in-store/edit/length-unit-scale.js.map +1 -0
  52. package/dist/in-store/edit/linear-element-edit.d.ts +131 -0
  53. package/dist/in-store/edit/linear-element-edit.d.ts.map +1 -0
  54. package/dist/in-store/edit/linear-element-edit.js +259 -0
  55. package/dist/in-store/edit/linear-element-edit.js.map +1 -0
  56. package/dist/in-store/edit/metadata-clone-effective.d.ts +5 -0
  57. package/dist/in-store/edit/metadata-clone-effective.d.ts.map +1 -0
  58. package/dist/in-store/edit/metadata-clone-effective.js +47 -0
  59. package/dist/in-store/edit/metadata-clone-effective.js.map +1 -0
  60. package/dist/in-store/edit/metadata-clone.d.ts +40 -0
  61. package/dist/in-store/edit/metadata-clone.d.ts.map +1 -0
  62. package/dist/in-store/edit/metadata-clone.js +107 -0
  63. package/dist/in-store/edit/metadata-clone.js.map +1 -0
  64. package/dist/in-store/edit/placement-core.d.ts +140 -0
  65. package/dist/in-store/edit/placement-core.d.ts.map +1 -0
  66. package/dist/in-store/edit/placement-core.js +317 -0
  67. package/dist/in-store/edit/placement-core.js.map +1 -0
  68. package/dist/in-store/edit/polygon-clip.d.ts +58 -0
  69. package/dist/in-store/edit/polygon-clip.d.ts.map +1 -0
  70. package/dist/in-store/edit/polygon-clip.js +153 -0
  71. package/dist/in-store/edit/polygon-clip.js.map +1 -0
  72. package/dist/in-store/edit/read-profile.d.ts +6 -0
  73. package/dist/in-store/edit/read-profile.d.ts.map +1 -0
  74. package/dist/in-store/edit/read-profile.js +95 -0
  75. package/dist/in-store/edit/read-profile.js.map +1 -0
  76. package/dist/in-store/edit/slab-edit-frame.d.ts +40 -0
  77. package/dist/in-store/edit/slab-edit-frame.d.ts.map +1 -0
  78. package/dist/in-store/edit/slab-edit-frame.js +146 -0
  79. package/dist/in-store/edit/slab-edit-frame.js.map +1 -0
  80. package/dist/in-store/edit/slab-edit.d.ts +112 -0
  81. package/dist/in-store/edit/slab-edit.d.ts.map +1 -0
  82. package/dist/in-store/edit/slab-edit.js +275 -0
  83. package/dist/in-store/edit/slab-edit.js.map +1 -0
  84. package/dist/in-store/edit/slab-opening-carry.d.ts +10 -0
  85. package/dist/in-store/edit/slab-opening-carry.d.ts.map +1 -0
  86. package/dist/in-store/edit/slab-opening-carry.js +65 -0
  87. package/dist/in-store/edit/slab-opening-carry.js.map +1 -0
  88. package/dist/in-store/edit/split-guid.d.ts +29 -0
  89. package/dist/in-store/edit/split-guid.d.ts.map +1 -0
  90. package/dist/in-store/edit/split-guid.js +64 -0
  91. package/dist/in-store/edit/split-guid.js.map +1 -0
  92. package/dist/in-store/edit/split-target.d.ts +90 -0
  93. package/dist/in-store/edit/split-target.d.ts.map +1 -0
  94. package/dist/in-store/edit/split-target.js +116 -0
  95. package/dist/in-store/edit/split-target.js.map +1 -0
  96. package/dist/in-store/edit/target.d.ts +8 -0
  97. package/dist/in-store/edit/target.d.ts.map +1 -0
  98. package/dist/in-store/edit/target.js +5 -0
  99. package/dist/in-store/edit/target.js.map +1 -0
  100. package/dist/in-store/edit/trim-extend-geometry.d.ts +99 -0
  101. package/dist/in-store/edit/trim-extend-geometry.d.ts.map +1 -0
  102. package/dist/in-store/edit/trim-extend-geometry.js +105 -0
  103. package/dist/in-store/edit/trim-extend-geometry.js.map +1 -0
  104. package/dist/in-store/edit/wall-axis-edit.d.ts +16 -0
  105. package/dist/in-store/edit/wall-axis-edit.d.ts.map +1 -0
  106. package/dist/in-store/edit/wall-axis-edit.js +40 -0
  107. package/dist/in-store/edit/wall-axis-edit.js.map +1 -0
  108. package/dist/in-store/edit/wall-edit.d.ts +157 -0
  109. package/dist/in-store/edit/wall-edit.d.ts.map +1 -0
  110. package/dist/in-store/edit/wall-edit.js +276 -0
  111. package/dist/in-store/edit/wall-edit.js.map +1 -0
  112. package/dist/in-store/edit/wall-hosted-cuts.d.ts +35 -0
  113. package/dist/in-store/edit/wall-hosted-cuts.d.ts.map +1 -0
  114. package/dist/in-store/edit/wall-hosted-cuts.js +27 -0
  115. package/dist/in-store/edit/wall-hosted-cuts.js.map +1 -0
  116. package/dist/in-store/edit/wall-opening-reassign.d.ts +18 -0
  117. package/dist/in-store/edit/wall-opening-reassign.d.ts.map +1 -0
  118. package/dist/in-store/edit/wall-opening-reassign.js +50 -0
  119. package/dist/in-store/edit/wall-opening-reassign.js.map +1 -0
  120. package/dist/in-store/element-align.d.ts +13 -0
  121. package/dist/in-store/element-align.d.ts.map +1 -0
  122. package/dist/in-store/element-align.js +90 -0
  123. package/dist/in-store/element-align.js.map +1 -0
  124. package/dist/in-store/element-replacement.d.ts +26 -0
  125. package/dist/in-store/element-replacement.d.ts.map +1 -0
  126. package/dist/in-store/element-replacement.js +68 -0
  127. package/dist/in-store/element-replacement.js.map +1 -0
  128. package/dist/in-store/element-size-edit.d.ts +40 -0
  129. package/dist/in-store/element-size-edit.d.ts.map +1 -0
  130. package/dist/in-store/element-size-edit.js +103 -0
  131. package/dist/in-store/element-size-edit.js.map +1 -0
  132. package/dist/in-store/element-split-axis.d.ts +6 -0
  133. package/dist/in-store/element-split-axis.d.ts.map +1 -0
  134. package/dist/in-store/element-split-axis.js +87 -0
  135. package/dist/in-store/element-split-axis.js.map +1 -0
  136. package/dist/in-store/element-split-joined.d.ts +13 -0
  137. package/dist/in-store/element-split-joined.d.ts.map +1 -0
  138. package/dist/in-store/element-split-joined.js +74 -0
  139. package/dist/in-store/element-split-joined.js.map +1 -0
  140. package/dist/in-store/element-split-placement.d.ts +19 -0
  141. package/dist/in-store/element-split-placement.d.ts.map +1 -0
  142. package/dist/in-store/element-split-placement.js +48 -0
  143. package/dist/in-store/element-split-placement.js.map +1 -0
  144. package/dist/in-store/element-split-slab.d.ts +19 -0
  145. package/dist/in-store/element-split-slab.d.ts.map +1 -0
  146. package/dist/in-store/element-split-slab.js +86 -0
  147. package/dist/in-store/element-split-slab.js.map +1 -0
  148. package/dist/in-store/element-split.d.ts +49 -0
  149. package/dist/in-store/element-split.d.ts.map +1 -0
  150. package/dist/in-store/element-split.js +52 -0
  151. package/dist/in-store/element-split.js.map +1 -0
  152. package/dist/in-store/element-transform-edit.d.ts +33 -0
  153. package/dist/in-store/element-transform-edit.d.ts.map +1 -0
  154. package/dist/in-store/element-transform-edit.js +97 -0
  155. package/dist/in-store/element-transform-edit.js.map +1 -0
  156. package/dist/in-store/element-transform-frames.d.ts +58 -0
  157. package/dist/in-store/element-transform-frames.d.ts.map +1 -0
  158. package/dist/in-store/element-transform-frames.js +110 -0
  159. package/dist/in-store/element-transform-frames.js.map +1 -0
  160. package/dist/in-store/element-transform-joins.d.ts +4 -0
  161. package/dist/in-store/element-transform-joins.d.ts.map +1 -0
  162. package/dist/in-store/element-transform-joins.js +62 -0
  163. package/dist/in-store/element-transform-joins.js.map +1 -0
  164. package/dist/in-store/element-transform-plan.d.ts +38 -0
  165. package/dist/in-store/element-transform-plan.d.ts.map +1 -0
  166. package/dist/in-store/element-transform-plan.js +115 -0
  167. package/dist/in-store/element-transform-plan.js.map +1 -0
  168. package/dist/in-store/element-trim-extend.d.ts +25 -0
  169. package/dist/in-store/element-trim-extend.d.ts.map +1 -0
  170. package/dist/in-store/element-trim-extend.js +97 -0
  171. package/dist/in-store/element-trim-extend.js.map +1 -0
  172. package/dist/in-store/extract-grids.d.ts +7 -17
  173. package/dist/in-store/extract-grids.d.ts.map +1 -1
  174. package/dist/in-store/extract-grids.js +11 -2
  175. package/dist/in-store/extract-grids.js.map +1 -1
  176. package/dist/in-store/grid-column.d.ts +23 -0
  177. package/dist/in-store/grid-column.d.ts.map +1 -0
  178. package/dist/in-store/grid-column.js +73 -0
  179. package/dist/in-store/grid-column.js.map +1 -0
  180. package/dist/in-store/grid-intersection-read.d.ts +10 -0
  181. package/dist/in-store/grid-intersection-read.d.ts.map +1 -0
  182. package/dist/in-store/grid-intersection-read.js +45 -0
  183. package/dist/in-store/grid-intersection-read.js.map +1 -0
  184. package/dist/in-store/grid.d.ts +7 -1
  185. package/dist/in-store/grid.d.ts.map +1 -1
  186. package/dist/in-store/grid.js +12 -2
  187. package/dist/in-store/grid.js.map +1 -1
  188. package/dist/in-store/group-evidence.d.ts +49 -0
  189. package/dist/in-store/group-evidence.d.ts.map +1 -0
  190. package/dist/in-store/group-evidence.js +111 -0
  191. package/dist/in-store/group-evidence.js.map +1 -0
  192. package/dist/in-store/group-graph.d.ts +51 -0
  193. package/dist/in-store/group-graph.d.ts.map +1 -0
  194. package/dist/in-store/group-graph.js +213 -0
  195. package/dist/in-store/group-graph.js.map +1 -0
  196. package/dist/in-store/group.d.ts +34 -0
  197. package/dist/in-store/group.d.ts.map +1 -0
  198. package/dist/in-store/group.js +181 -0
  199. package/dist/in-store/group.js.map +1 -0
  200. package/dist/in-store/host-geometry-frame.d.ts +5 -1
  201. package/dist/in-store/host-geometry-frame.d.ts.map +1 -1
  202. package/dist/in-store/host-geometry-frame.js +46 -2
  203. package/dist/in-store/host-geometry-frame.js.map +1 -1
  204. package/dist/in-store/index.d.ts +7 -0
  205. package/dist/in-store/index.d.ts.map +1 -1
  206. package/dist/in-store/index.js +7 -0
  207. package/dist/in-store/index.js.map +1 -1
  208. package/dist/in-store/linear-profile-frame.d.ts +10 -0
  209. package/dist/in-store/linear-profile-frame.d.ts.map +1 -0
  210. package/dist/in-store/linear-profile-frame.js +17 -0
  211. package/dist/in-store/linear-profile-frame.js.map +1 -0
  212. package/dist/in-store/material.d.ts.map +1 -1
  213. package/dist/in-store/material.js +17 -6
  214. package/dist/in-store/material.js.map +1 -1
  215. package/dist/in-store/member.d.ts.map +1 -1
  216. package/dist/in-store/member.js +3 -7
  217. package/dist/in-store/member.js.map +1 -1
  218. package/dist/in-store/ordinary-element.d.ts +47 -0
  219. package/dist/in-store/ordinary-element.d.ts.map +1 -0
  220. package/dist/in-store/ordinary-element.js +38 -0
  221. package/dist/in-store/ordinary-element.js.map +1 -0
  222. package/dist/in-store/placement-frame.d.ts +6 -1
  223. package/dist/in-store/placement-frame.d.ts.map +1 -1
  224. package/dist/in-store/placement-frame.js +5 -1
  225. package/dist/in-store/placement-frame.js.map +1 -1
  226. package/dist/in-store/resolve-anchor.d.ts +3 -2
  227. package/dist/in-store/resolve-anchor.d.ts.map +1 -1
  228. package/dist/in-store/resolve-anchor.js +7 -5
  229. package/dist/in-store/resolve-anchor.js.map +1 -1
  230. package/dist/in-store/resolve-relations.d.ts +3 -1
  231. package/dist/in-store/resolve-relations.d.ts.map +1 -1
  232. package/dist/in-store/resolve-relations.js +8 -3
  233. package/dist/in-store/resolve-relations.js.map +1 -1
  234. package/dist/in-store/room-candidates.d.ts +58 -0
  235. package/dist/in-store/room-candidates.d.ts.map +1 -0
  236. package/dist/in-store/room-candidates.js +135 -0
  237. package/dist/in-store/room-candidates.js.map +1 -0
  238. package/dist/in-store/room-creation-plan.d.ts +16 -0
  239. package/dist/in-store/room-creation-plan.d.ts.map +1 -0
  240. package/dist/in-store/room-creation-plan.js +28 -0
  241. package/dist/in-store/room-creation-plan.js.map +1 -0
  242. package/dist/in-store/room-floor-height.d.ts +24 -0
  243. package/dist/in-store/room-floor-height.d.ts.map +1 -0
  244. package/dist/in-store/room-floor-height.js +32 -0
  245. package/dist/in-store/room-floor-height.js.map +1 -0
  246. package/dist/in-store/room-footprint-native.d.ts +19 -0
  247. package/dist/in-store/room-footprint-native.d.ts.map +1 -0
  248. package/dist/in-store/room-footprint-native.js +117 -0
  249. package/dist/in-store/room-footprint-native.js.map +1 -0
  250. package/dist/in-store/room-layout-cache.d.ts +23 -0
  251. package/dist/in-store/room-layout-cache.d.ts.map +1 -0
  252. package/dist/in-store/room-layout-cache.js +84 -0
  253. package/dist/in-store/room-layout-cache.js.map +1 -0
  254. package/dist/in-store/room-layout-core.d.ts +68 -0
  255. package/dist/in-store/room-layout-core.d.ts.map +1 -0
  256. package/dist/in-store/room-layout-core.js +153 -0
  257. package/dist/in-store/room-layout-core.js.map +1 -0
  258. package/dist/in-store/room-population.d.ts +5 -0
  259. package/dist/in-store/room-population.d.ts.map +1 -0
  260. package/dist/in-store/room-population.js +28 -0
  261. package/dist/in-store/room-population.js.map +1 -0
  262. package/dist/in-store/room-space-meshes.d.ts +15 -0
  263. package/dist/in-store/room-space-meshes.d.ts.map +1 -0
  264. package/dist/in-store/room-space-meshes.js +38 -0
  265. package/dist/in-store/room-space-meshes.js.map +1 -0
  266. package/dist/in-store/room-store.d.ts +55 -0
  267. package/dist/in-store/room-store.d.ts.map +1 -0
  268. package/dist/in-store/room-store.js +173 -0
  269. package/dist/in-store/room-store.js.map +1 -0
  270. package/dist/in-store/room-storey-elevation.d.ts +5 -0
  271. package/dist/in-store/room-storey-elevation.d.ts.map +1 -0
  272. package/dist/in-store/room-storey-elevation.js +42 -0
  273. package/dist/in-store/room-storey-elevation.js.map +1 -0
  274. package/dist/in-store/room-storey-frame.d.ts +47 -0
  275. package/dist/in-store/room-storey-frame.d.ts.map +1 -0
  276. package/dist/in-store/room-storey-frame.js +48 -0
  277. package/dist/in-store/room-storey-frame.js.map +1 -0
  278. package/dist/in-store/room-wall-rects.d.ts +117 -0
  279. package/dist/in-store/room-wall-rects.d.ts.map +1 -0
  280. package/dist/in-store/room-wall-rects.js +157 -0
  281. package/dist/in-store/room-wall-rects.js.map +1 -0
  282. package/dist/in-store/schema-attributes.d.ts +3 -3
  283. package/dist/in-store/schema-attributes.d.ts.map +1 -1
  284. package/dist/in-store/schema-attributes.js +9 -7
  285. package/dist/in-store/schema-attributes.js.map +1 -1
  286. package/dist/in-store/slab.d.ts.map +1 -1
  287. package/dist/in-store/slab.js +1 -4
  288. package/dist/in-store/slab.js.map +1 -1
  289. package/dist/in-store/stair-removal.d.ts +17 -0
  290. package/dist/in-store/stair-removal.d.ts.map +1 -0
  291. package/dist/in-store/stair-removal.js +134 -0
  292. package/dist/in-store/stair-removal.js.map +1 -0
  293. package/dist/in-store/storey-plan-frame.d.ts +2 -1
  294. package/dist/in-store/storey-plan-frame.d.ts.map +1 -1
  295. package/dist/in-store/storey-plan-frame.js +20 -11
  296. package/dist/in-store/storey-plan-frame.js.map +1 -1
  297. package/dist/in-store/storey-reassignment-plan.d.ts +53 -0
  298. package/dist/in-store/storey-reassignment-plan.d.ts.map +1 -0
  299. package/dist/in-store/storey-reassignment-plan.js +237 -0
  300. package/dist/in-store/storey-reassignment-plan.js.map +1 -0
  301. package/dist/in-store/storey-reassignment.d.ts +8 -0
  302. package/dist/in-store/storey-reassignment.d.ts.map +1 -0
  303. package/dist/in-store/storey-reassignment.js +52 -0
  304. package/dist/in-store/storey-reassignment.js.map +1 -0
  305. package/dist/in-store/trim-extend-plan.d.ts +27 -0
  306. package/dist/in-store/trim-extend-plan.d.ts.map +1 -0
  307. package/dist/in-store/trim-extend-plan.js +49 -0
  308. package/dist/in-store/trim-extend-plan.js.map +1 -0
  309. package/dist/in-store/wall-join-edit.d.ts +0 -17
  310. package/dist/in-store/wall-join-edit.d.ts.map +1 -1
  311. package/dist/in-store/wall-join-edit.js +41 -7
  312. package/dist/in-store/wall-join-edit.js.map +1 -1
  313. package/dist/in-store/wall-section-edit.d.ts +16 -0
  314. package/dist/in-store/wall-section-edit.d.ts.map +1 -0
  315. package/dist/in-store/wall-section-edit.js +75 -0
  316. package/dist/in-store/wall-section-edit.js.map +1 -0
  317. package/dist/in-store/wall-size-edit.d.ts +29 -0
  318. package/dist/in-store/wall-size-edit.d.ts.map +1 -0
  319. package/dist/in-store/wall-size-edit.js +65 -0
  320. package/dist/in-store/wall-size-edit.js.map +1 -0
  321. package/dist/index.d.ts +24 -0
  322. package/dist/index.d.ts.map +1 -1
  323. package/dist/index.js +23 -0
  324. package/dist/index.js.map +1 -1
  325. package/package.json +8 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-transform-joins.js","sourceRoot":"","sources":["../../src/in-store/element-transform-joins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { IfcDataStore } from '@ifc-lite/parser';
2
+ import type { MutablePropertyView } from '@ifc-lite/mutations';
3
+ import { type PlanFrame } from './element-transform-frames.js';
4
+ type Vec2 = [number, number];
5
+ export interface TransformRoot {
6
+ readonly expressId: number;
7
+ readonly storeyId: number;
8
+ /** The parent placement's frame in the storey frame (the identity under the storey). */
9
+ readonly parent: PlanFrame;
10
+ /** The element's placement origin in the storey frame, metres. */
11
+ readonly origin: Vec2;
12
+ /** Its own placement is upright (Z up), so it can be turned about Z. */
13
+ readonly upright: boolean;
14
+ }
15
+ export interface TransformRefusal {
16
+ readonly expressId: number;
17
+ readonly reason: 'noStorey' | 'noPlacement' | 'offStorey';
18
+ }
19
+ export interface TransformPlan {
20
+ readonly roots: readonly TransformRoot[];
21
+ /** Moved with a root through their placement chain; re-meshed, never written. */
22
+ readonly carried: readonly number[];
23
+ readonly refused: readonly TransformRefusal[];
24
+ }
25
+ export interface TransformPlanInput {
26
+ readonly dataStore: IfcDataStore;
27
+ readonly view: MutablePropertyView;
28
+ /** The selected elements (model-local express ids). */
29
+ readonly selected: readonly number[];
30
+ /** The storey an element sits on, or null. */
31
+ storeyOf(expressId: number): number | null;
32
+ }
33
+ export declare function planElementTransform(input: TransformPlanInput): TransformPlan;
34
+ /** Current native placement, independent of which other selected roots carry it.
35
+ * Evidence can pin a carried member without treating it as a separately moved root. */
36
+ export declare function readElementTransformPlacement(input: Pick<TransformPlanInput, 'dataStore' | 'view'>, expressId: number, storeyId: number | null): TransformRoot | TransformRefusal;
37
+ export {};
38
+ //# sourceMappingURL=element-transform-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-transform-plan.d.ts","sourceRoot":"","sources":["../../src/in-store/element-transform-plan.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAEiB,KAAK,SAAS,EACrC,MAAM,+BAA+B,CAAC;AAEvC,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;CAC3D;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC5C;AAuCD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CA4B7E;AAED;uFACuF;AACvF,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,MAAM,CAAC,EACrD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,aAAa,GAAG,gBAAgB,CAclC"}
@@ -0,0 +1,115 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * What a move or a turn of a selection writes (charter #6232, C2), worked
6
+ * out before anything is written.
7
+ *
8
+ * The moved set is the selection plus what it hosts: a host's openings and
9
+ * the fillings in them, a filling's opening (a window moves with the void it
10
+ * fills), through the same relationship walk the re-mesher uses
11
+ * (`expandAffectedSet`, overlay relationships included).
12
+ *
13
+ * Only the ROOTS of that set are written. An element whose placement hangs,
14
+ * however many hops up, from another moved element's placement already moves
15
+ * with it — an opening placed relative to its wall, a door relative to its
16
+ * opening — and writing it too would move it twice. A filling placed
17
+ * relative to the storey instead is a root and is written like the host.
18
+ *
19
+ * Each root carries its parent placement's frame in its storey's frame, and
20
+ * its own origin there, so a storey-frame move or turn can be written in the
21
+ * frame `translateEntity` / `rotateEntity` work in. A root whose chain does
22
+ * not reach its storey's placement is refused, never moved by a guess.
23
+ */
24
+ import { IfcTypeEnum, IfcTypeEnumFromString } from '@ifc-lite/data';
25
+ import { expandAffectedSet } from '@ifc-lite/export';
26
+ import { IDENTITY_FRAME, applyFrame, frameInStorey, objectPlacementOf, placementAncestors, placementOrigin, uprightFrame, } from './element-transform-frames.js';
27
+ /** The effective IFC class (UPPERCASE): retypes, overlay creations, then the source index — which also knows non-products. */
28
+ function typeOf(input, id) {
29
+ const { dataStore, view } = input;
30
+ const edited = view.getEntityTypeMutation(id)?.newType ?? view.getNewEntity(id)?.type;
31
+ if (edited)
32
+ return edited.toUpperCase();
33
+ // @raw-entity-enumeration-ok point lookup of one id's class; retypes and overlay creations are answered from the view above
34
+ const source = dataStore.entityIndex.byId.get(id)?.type;
35
+ return (source ?? dataStore.entities.getTypeName(id) ?? '').toUpperCase();
36
+ }
37
+ const isOpening = (type) => IfcTypeEnumFromString(type) === IfcTypeEnum.IfcOpeningElement;
38
+ /**
39
+ * The moved set: each selected element and what moves with it, mapped to the
40
+ * storey whose frame it is written in (the selected element's).
41
+ */
42
+ function movedSet(input) {
43
+ const moved = new Map();
44
+ for (const id of input.selected)
45
+ moved.set(id, input.storeyOf(id));
46
+ for (const id of input.selected) {
47
+ // A bare opening moves on its own: expanding it would take its host along.
48
+ if (isOpening(typeOf(input, id)))
49
+ continue;
50
+ for (const dependent of expandAffectedSet(input.dataStore, input.view, [id], 'hostsChanged')) {
51
+ // The walk also returns what is not placed (a material relationship the
52
+ // parser has no type name for): only placed products move.
53
+ if (!moved.has(dependent) && placementOf(input, dependent) !== null)
54
+ moved.set(dependent, moved.get(id) ?? null);
55
+ }
56
+ }
57
+ return moved;
58
+ }
59
+ /** A product's `ObjectPlacement` when it is an `IfcLocalPlacement`, else null. */
60
+ function placementOf(input, productId) {
61
+ const placement = objectPlacementOf(input, productId);
62
+ return placement !== null && typeOf(input, placement) === 'IFCLOCALPLACEMENT' ? placement : null;
63
+ }
64
+ export function planElementTransform(input) {
65
+ const reader = { dataStore: input.dataStore, view: input.view };
66
+ const moved = movedSet(input);
67
+ const placements = new Map();
68
+ for (const id of moved.keys()) {
69
+ const placement = placementOf(input, id);
70
+ if (placement !== null)
71
+ placements.set(placement, id);
72
+ }
73
+ const roots = [];
74
+ const carried = [];
75
+ const refused = [];
76
+ for (const [expressId, storeyId] of moved) {
77
+ const placement = placementOf(input, expressId);
78
+ if (placement === null) {
79
+ refused.push({ expressId, reason: 'noPlacement' });
80
+ continue;
81
+ }
82
+ const ancestors = placementAncestors(reader, placement);
83
+ if (ancestors.some((p) => placements.has(p))) {
84
+ carried.push(expressId);
85
+ continue;
86
+ }
87
+ const current = readElementTransformPlacement(input, expressId, storeyId);
88
+ if ('reason' in current)
89
+ refused.push(current);
90
+ else
91
+ roots.push(current);
92
+ }
93
+ return { roots, carried, refused };
94
+ }
95
+ /** Current native placement, independent of which other selected roots carry it.
96
+ * Evidence can pin a carried member without treating it as a separately moved root. */
97
+ export function readElementTransformPlacement(input, expressId, storeyId) {
98
+ const reader = input;
99
+ const placement = placementOf(input, expressId);
100
+ if (placement === null)
101
+ return { expressId, reason: 'noPlacement' };
102
+ if (storeyId === null)
103
+ return { expressId, reason: 'noStorey' };
104
+ const ancestors = placementAncestors(reader, placement);
105
+ const storeyPlacement = objectPlacementOf(reader, storeyId);
106
+ const parentId = ancestors[0] ?? null;
107
+ const parent = storeyPlacement === null || parentId === null
108
+ ? null
109
+ : parentId === storeyPlacement ? IDENTITY_FRAME : frameInStorey(reader, parentId, storeyPlacement);
110
+ const local = placementOrigin(reader, placement);
111
+ if (!parent || !local)
112
+ return { expressId, reason: 'offStorey' };
113
+ return { expressId, storeyId, parent, origin: applyFrame(parent, local), upright: uprightFrame(reader, placement) !== null };
114
+ }
115
+ //# sourceMappingURL=element-transform-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-transform-plan.js","sourceRoot":"","sources":["../../src/in-store/element-transform-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { IfcDataStore } from '@ifc-lite/parser';
2
+ import type { StoreEditor } from '@ifc-lite/mutations';
3
+ import type { ReachBoundary, ReachMode } from './edit/trim-extend-geometry.js';
4
+ export interface ElementTrimExtendParams {
5
+ readonly mode: ReachMode;
6
+ /** Storey-local plan click selecting which end is removed or extended. */
7
+ readonly click: [number, number];
8
+ /** Wall boundary is resolved live and joined; explicit lines cover slab
9
+ * edges and snap guides in the existing command's storey frame. */
10
+ readonly boundary: {
11
+ readonly wallId: number;
12
+ } | ReachBoundary;
13
+ }
14
+ export interface ElementTrimExtendResult {
15
+ readonly expressId: number;
16
+ readonly walls: number[];
17
+ readonly joined: boolean;
18
+ readonly op: ReachMode;
19
+ readonly end: 'start' | 'end';
20
+ readonly length: number;
21
+ }
22
+ /** #6232 D5: live planning, resize, hosted refit and boundary join commit as
23
+ * one atomic edit. No UI-only write path can diverge from this operation. */
24
+ export declare function trimExtendElementInStore(store: IfcDataStore, editor: StoreEditor, id: number, params: ElementTrimExtendParams): ElementTrimExtendResult;
25
+ //# sourceMappingURL=element-trim-extend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-trim-extend.d.ts","sourceRoot":"","sources":["../../src/in-store/element-trim-extend.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAWvD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;uEACmE;IACnE,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC;CAChE;AACD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;6EAC6E;AAC7E,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,GAAG,uBAAuB,CAgEvJ"}
@@ -0,0 +1,97 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { editOwnershipRefusal } from '@ifc-lite/export';
5
+ import { toNativeLength } from './anchor.js';
6
+ import { readWallJoinTarget } from './wall-join-read.js';
7
+ import { joinWallsInStore, resolveWallJoinAnchor } from './wall-join-edit.js';
8
+ import { reanchorHostedOpeningsInStore } from './hosted-placement-edit.js';
9
+ import { resizeWallInStore } from './wall-size-edit.js';
10
+ import { resolveLinearElementChain } from './edit/linear-element-edit.js';
11
+ import { getModelLengthUnitScale } from './edit/length-unit-scale.js';
12
+ import { effectiveStoreyId } from './edit/effective-storey.js';
13
+ import { readHostedCuts } from './edit/wall-hosted-cuts.js';
14
+ import { planTrimAxis } from './trim-extend-plan.js';
15
+ /** #6232 D5: live planning, resize, hosted refit and boundary join commit as
16
+ * one atomic edit. No UI-only write path can diverge from this operation. */
17
+ export function trimExtendElementInStore(store, editor, id, params) {
18
+ if (params.mode !== 'trim' && params.mode !== 'extend')
19
+ throw new Error('Trim/extend mode must be trim or extend');
20
+ if (params.click.length !== 2 || !params.click.every(Number.isFinite))
21
+ throw new Error('Trim/extend click must be finite');
22
+ return editor.runAtomic(draft => {
23
+ const view = draft.getMutationView(), scale = getModelLengthUnitScale(store);
24
+ const type = draft.getEntityType(id)?.toUpperCase();
25
+ const isWall = type === 'IFCWALL' || type === 'IFCWALLSTANDARDCASE';
26
+ if (!isWall && type !== 'IFCBEAM' && type !== 'IFCMEMBER')
27
+ throw new Error('Trim/extend requires a wall, beam or member');
28
+ const storeyId = effectiveStoreyId(store, view, id);
29
+ if (storeyId === undefined)
30
+ throw new Error('Trim/extend requires a live storey');
31
+ const read = isWall ? readWallJoinTarget(store, view, id, scale) : null;
32
+ const chain = isWall ? null : resolveLinearElementChain(store, view, draft, id, scale);
33
+ if ((isWall && !read) || (!isWall && !chain))
34
+ throw new Error('Trim/extend body cannot be read safely');
35
+ const axis = read ? (() => {
36
+ const { start, end } = read.wall, length = Math.hypot(end[0] - start[0], end[1] - start[1]);
37
+ return { p0: [start[0], start[1], read.location[2] * scale],
38
+ dir: [(end[0] - start[0]) / length, (end[1] - start[1]) / length, 0], length };
39
+ })() : { p0: chain.startCoordinates, dir: chain.axisDirection, length: chain.depth };
40
+ let boundary, boundaryWall = null;
41
+ if ('wallId' in params.boundary) {
42
+ if (isWall && (String(store.schemaVersion ?? 'IFC4').toUpperCase() === 'IFC5' || !store.source || store.source.byteLength === 0))
43
+ throw new Error('Wall joins are authored in IFC2X3, IFC4 and IFC4X3 models only');
44
+ const boundaryId = params.boundary.wallId;
45
+ if (boundaryId === id || effectiveStoreyId(store, view, boundaryId) !== storeyId)
46
+ throw new Error('Boundary wall must be distinct and in the same live storey');
47
+ const other = readWallJoinTarget(store, view, boundaryId, scale);
48
+ if (!other)
49
+ throw new Error('Boundary wall cannot be read safely');
50
+ boundaryWall = other.wall;
51
+ boundary = { a: other.wall.start, b: other.wall.end, tMin: 0, tMax: 1, reach: other.wall.thickness / 2 };
52
+ }
53
+ else {
54
+ boundary = params.boundary;
55
+ if (boundary.a.length !== 2 || boundary.b.length !== 2 || ![...boundary.a, ...boundary.b, boundary.reach].every(Number.isFinite)
56
+ || Number.isNaN(boundary.tMin) || Number.isNaN(boundary.tMax) || boundary.tMin > boundary.tMax || boundary.reach < 0)
57
+ throw new Error('Trim/extend boundary must be a valid finite plan line');
58
+ }
59
+ const hosted = read ? readHostedCuts(store, view, id) : null;
60
+ const plan = planTrimAxis({ kind: isWall ? 'wall' : 'beam', axis, wall: read }, boundary, params.mode, params.click, boundaryWall, hosted);
61
+ if (!plan.ok)
62
+ throw new Error(`Trim/extend refused: ${plan.reason}${plan.detail ? `: ${plan.detail}` : ''}`);
63
+ const walls = new Set([id]);
64
+ if (read) {
65
+ const result = resizeWallInStore({ dataStore: store, view, editor: draft }, id, plan.start, plan.stop);
66
+ if (!result.ok)
67
+ throw new Error(result.reason);
68
+ for (const wall of result.walls)
69
+ walls.add(wall);
70
+ const after = readWallJoinTarget(store, view, id, scale);
71
+ if (hosted.cuts.length > 0 && !after)
72
+ throw new Error('Changed wall body cannot be read safely');
73
+ if (after && hosted.cuts.length > 0) {
74
+ const [dx, dy] = axis.dir;
75
+ const mx = after.origin[0] - read.origin[0], my = after.origin[1] - read.origin[1];
76
+ const along = mx * dx + my * dy, across = -mx * dy + my * dx;
77
+ if (Math.abs(along) > 1e-9 || Math.abs(across) > 1e-9)
78
+ reanchorHostedOpeningsInStore(store, draft, id, [toNativeLength({ lengthUnitScale: scale }, along), toNativeLength({ lengthUnitScale: scale }, across), 0]);
79
+ }
80
+ if ('wallId' in params.boundary) {
81
+ joinWallsInStore(draft, store, resolveWallJoinAnchor(store, view), params.boundary.wallId, id);
82
+ walls.add(params.boundary.wallId);
83
+ }
84
+ }
85
+ else {
86
+ const writtenIds = [chain.extrudedSolidId, ...(plan.end === 'start' ? [chain.startPointId] : [])];
87
+ const ownership = editOwnershipRefusal(store, view, writtenIds, new Set([id]));
88
+ if (ownership)
89
+ throw new Error(ownership);
90
+ draft.setPositionalAttribute(chain.extrudedSolidId, 3, toNativeLength({ lengthUnitScale: scale }, plan.length));
91
+ if (plan.end === 'start')
92
+ draft.setPositionalAttribute(chain.startPointId, 0, plan.start.map(v => toNativeLength({ lengthUnitScale: scale }, v)));
93
+ }
94
+ return { expressId: id, walls: [...walls], joined: isWall && 'wallId' in params.boundary, op: plan.op, end: plan.end, length: plan.length };
95
+ });
96
+ }
97
+ //# sourceMappingURL=element-trim-extend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-trim-extend.js","sourceRoot":"","sources":["../../src/in-store/element-trim-extend.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,3 @@
1
- /**
2
- * The design-grid axes visible on a storey, in the storey's own frame
3
- * (metres): what a snap source needs to let walls, columns and curtain walls
4
- * land on grid lines and grid intersections (#6232).
5
- *
6
- * An IfcGrid is contained in a storey, or (very often) in the building or site
7
- * above it, so grids contained in any spatial ancestor of the storey count.
8
- * Both file grids and grids authored this session (`addGridToStore`) are read
9
- * through the same overlay-aware entity reader the wall extractor uses, so an
10
- * axis edited or deleted this session reads as it now is.
11
- *
12
- * Each axis curve is read as a straight segment: a two-point IfcPolyline (the
13
- * form `addGridToStore`, Revit and most exporters write), or an IfcTrimmedCurve
14
- * over an IfcLine trimmed by points or by parameters (ArchiCAD). Other curves
15
- * (arcs of a radial grid) are skipped and counted, never guessed at.
16
- * `IfcGridAxis.SameSense` is ignored, as everywhere else the grid is read.
17
- */
18
1
  import { type IfcDataStore } from '@ifc-lite/parser';
19
2
  import type { Vec2 } from './auto-space-detect.js';
20
3
  import { type OverlayWallReader } from './placement-frame.js';
@@ -36,6 +19,12 @@ export interface StoreyGridAxes {
36
19
  /** Axes with unreadable placement frames or unsupported curves: not offered. */
37
20
  skippedAxes: number;
38
21
  }
22
+ type Reader = (id: number) => {
23
+ type?: string;
24
+ attributes: readonly unknown[];
25
+ } | null;
26
+ /** The two ends of a straight axis curve in the grid's own frame (raw units), or null. */
27
+ export declare function readAxisEnds(read: Reader, curveId: number): [Vec2, Vec2] | null;
39
28
  /**
40
29
  * The grid axes that apply to `storeyId`, in storey-local metres. Empty (never
41
30
  * throwing) for a store without source bytes. An unplaced grid uses identity
@@ -43,4 +32,5 @@ export interface StoreyGridAxes {
43
32
  * otherwise its axes are counted in skippedAxes.
44
33
  */
45
34
  export declare function extractGridAxesForStorey(store: IfcDataStore, storeyId: number, overlay?: OverlayWallReader): StoreyGridAxes;
35
+ export {};
46
36
  //# sourceMappingURL=extract-grids.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract-grids.d.ts","sourceRoot":"","sources":["../../src/in-store/extract-grids.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAQ9B,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxB,wCAAwC;IACxC,CAAC,EAAE,IAAI,CAAC;IACR,CAAC,EAAE,IAAI,CAAC;CACT;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;CACrB;AAkGD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,cAAc,CAqEhB"}
1
+ {"version":3,"file":"extract-grids.d.ts","sourceRoot":"","sources":["../../src/in-store/extract-grids.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAQ9B,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxB,wCAAwC;IACxC,CAAC,EAAE,IAAI,CAAC;IACR,CAAC,EAAE,IAAI,CAAC;CACT;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC;AAuCvF,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAsD/E;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,cAAc,CA4EhB"}
@@ -18,6 +18,8 @@
18
18
  * (arcs of a radial grid) are skipped and counted, never guessed at.
19
19
  * `IfcGridAxis.SameSense` is ignored, as everywhere else the grid is read.
20
20
  */
21
+ import { MutablePropertyView } from '@ifc-lite/mutations';
22
+ import { AnchorEntityReader } from './resolve-anchor.js';
21
23
  import { EntityExtractor } from '@ifc-lite/parser';
22
24
  import { safeLengthUnitScale } from './length-unit-scale.js';
23
25
  import { num, pointOf } from './host-geometry-frame.js';
@@ -61,7 +63,7 @@ function pointAt(read, id, type = 'IFCCARTESIANPOINT') {
61
63
  return p ? [p[0], p[1]] : null;
62
64
  }
63
65
  /** The two ends of a straight axis curve in the grid's own frame (raw units), or null. */
64
- function readAxisEnds(read, curveId) {
66
+ export function readAxisEnds(read, curveId) {
65
67
  const curve = read(curveId);
66
68
  const type = curve?.type?.toUpperCase();
67
69
  if (!curve)
@@ -140,7 +142,14 @@ export function extractGridAxesForStorey(store, storeyId, overlay) {
140
142
  return out;
141
143
  const extractor = new EntityExtractor(store.source);
142
144
  const lookup = createOverlayLookup(overlay);
143
- const read = (id) => readEntity(store, extractor, overlay, id);
145
+ // #7304: native grid evidence and binding share effective named/positional records.
146
+ const nativeView = overlay instanceof MutablePropertyView ? overlay : undefined;
147
+ const effective = new AnchorEntityReader(store, nativeView);
148
+ // The public structural OverlayWallReader also accepts lightweight callers
149
+ // without named-edit methods. Preserve that existing positional-only contract.
150
+ const read = overlay && !nativeView
151
+ ? id => readEntity(store, extractor, overlay, id)
152
+ : id => effective.entity(id);
144
153
  const scale = store.source.byteLength > 0
145
154
  ? safeLengthUnitScale(store.source, store.entityIndex, 'extractGridAxesForStorey') ?? 1
146
155
  : 1;
@@ -1 +1 @@
1
- {"version":3,"file":"extract-grids.js","sourceRoot":"","sources":["../../src/in-store/extract-grids.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract-grids.js","sourceRoot":"","sources":["../../src/in-store/extract-grids.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /** A column bound to a real linear grid crossing (#6232). The canonical IFC
2
+ * intersection emitter also accepts radial curves; this snapping consumer
3
+ * intentionally requires readable, finite straight axes. */
4
+ import type { IfcDataStore } from '@ifc-lite/parser';
5
+ import type { StoreEditor } from '@ifc-lite/mutations';
6
+ import type { SpatialAnchor } from './anchor.js';
7
+ import { type ColumnBuildResult, type ColumnInStoreParams, type ProfiledColumnInStoreParams } from './column.js';
8
+ import { type GridPlacementResult } from './grid.js';
9
+ export interface GridColumnBinding {
10
+ /** Model-local IfcGrid expressId. */
11
+ GridId: number;
12
+ /** The two actual IfcGridAxis references retained by the snap. */
13
+ IntersectingAxes: readonly [number, number];
14
+ }
15
+ export interface GridColumnBuildResult extends ColumnBuildResult {
16
+ gridPlacement: GridPlacementResult;
17
+ }
18
+ /** Persist a column's current storey-local position and section heading as a
19
+ * local child of an IfcGridPlacement. Revalidates the live crossing before
20
+ * writing; stale/unsupported snaps and failed column parameters leave no
21
+ * helper entities. Heights and offsets are metres at this API boundary. */
22
+ export declare function addColumnOnGridToStore(editor: StoreEditor, sourceStore: IfcDataStore, anchor: SpatialAnchor, params: ColumnInStoreParams | ProfiledColumnInStoreParams, binding: GridColumnBinding): GridColumnBuildResult;
23
+ //# sourceMappingURL=grid-column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-column.d.ts","sourceRoot":"","sources":["../../src/in-store/grid-column.ts"],"names":[],"mappings":"AAIA;;4DAE4D;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAoB,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,KAAK,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAEnI,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAKhF,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,gBAAgB,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,aAAa,EAAE,mBAAmB,CAAC;CACpC;AAED;;;2EAG2E;AAC3E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,mBAAmB,GAAG,2BAA2B,EACzD,OAAO,EAAE,iBAAiB,GACzB,qBAAqB,CAyDvB"}
@@ -0,0 +1,73 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { addColumnToStore } from './column.js';
5
+ import { readAxisEnds } from './extract-grids.js';
6
+ import { gridIntersectionPlacement } from './grid.js';
7
+ import { assertGridIntersectionOwner } from './grid-intersection-read.js';
8
+ import { AnchorEntityReader } from './resolve-anchor.js';
9
+ import { applyFrame, placementRelativeTo, refId } from './host-geometry-frame.js';
10
+ /** Persist a column's current storey-local position and section heading as a
11
+ * local child of an IfcGridPlacement. Revalidates the live crossing before
12
+ * writing; stale/unsupported snaps and failed column parameters leave no
13
+ * helper entities. Heights and offsets are metres at this API boundary. */
14
+ export function addColumnOnGridToStore(editor, sourceStore, anchor, params, binding) {
15
+ const op = 'addColumnOnGridToStore';
16
+ return editor.runAtomic((draft) => {
17
+ const reader = new AnchorEntityReader(sourceStore, draft.getMutationView());
18
+ const owner = assertGridIntersectionOwner(draft, binding.IntersectingAxes, undefined, op, sourceStore);
19
+ if (owner.gridId !== binding.GridId || owner.placementId === null || anchor.storeyPlacementId === null) {
20
+ throw new Error(`${op}: the crossing must identify the owning grid and a resolvable storey frame`);
21
+ }
22
+ const frame = placementRelativeTo(reader, owner.placementId, anchor.storeyPlacementId);
23
+ if (!frame || Math.abs(frame.z[0]) > 1e-6 || Math.abs(frame.z[1]) > 1e-6 || frame.z[2] <= 0) {
24
+ throw new Error(`${op}: the grid must have a readable horizontal placement in the storey frame`);
25
+ }
26
+ const curves = binding.IntersectingAxes.map((id) => {
27
+ const curve = refId(reader.entity(id)?.attributes[1]);
28
+ return curve === null ? null : readAxisEnds((entityId) => reader.entity(entityId), curve);
29
+ });
30
+ const [p, q] = curves;
31
+ if (!p || !q)
32
+ throw new Error(`${op}: linear snapping requires readable straight grid curves`);
33
+ const r = [p[1][0] - p[0][0], p[1][1] - p[0][1]];
34
+ const s = [q[1][0] - q[0][0], q[1][1] - q[0][1]];
35
+ const determinant = r[0] * s[1] - r[1] * s[0];
36
+ const lengthProduct = Math.hypot(...r) * Math.hypot(...s);
37
+ if (!(lengthProduct > 0) || !Number.isFinite(lengthProduct) || !Number.isFinite(determinant)
38
+ || Math.abs(determinant) <= 1e-12 * lengthProduct) {
39
+ throw new Error(`${op}: linear snapping requires finite, non-zero, non-parallel grid axes`);
40
+ }
41
+ const delta = [q[0][0] - p[0][0], q[0][1] - p[0][1]];
42
+ const t = (delta[0] * s[1] - delta[1] * s[0]) / determinant;
43
+ const u = (delta[0] * r[1] - delta[1] * r[0]) / determinant;
44
+ if (![t, u].every((v) => Number.isFinite(v) && v >= -1e-6 && v <= 1 + 1e-6)) {
45
+ throw new Error(`${op}: the crossing must lie on both grid segments`);
46
+ }
47
+ const crossing = applyFrame(frame, [p[0][0] + t * r[0], p[0][1] + t * r[1], 0]);
48
+ const scale = anchor.lengthUnitScale ?? 1;
49
+ if (!(scale > 0) || !Number.isFinite(scale) || !crossing.every(Number.isFinite)
50
+ || !params.Position.every(Number.isFinite)
51
+ || Math.hypot(params.Position[0] - crossing[0] * scale, params.Position[1] - crossing[1] * scale) > 1e-6) {
52
+ throw new Error(`${op}: the snapped position no longer matches the live grid crossing`);
53
+ }
54
+ const heading = params.RefDirection ?? [1, 0, 0];
55
+ const localHeading = [
56
+ frame.x[0] * heading[0] + frame.x[1] * heading[1],
57
+ frame.y[0] * heading[0] + frame.y[1] * heading[1],
58
+ heading[2],
59
+ ];
60
+ // Default grid orientation is its local +X on every schema, including
61
+ // IFC2X3. Put section rotation and workplane height in a real local child.
62
+ const gridPlacement = gridIntersectionPlacement(draft, anchor, {
63
+ Axes: binding.IntersectingAxes, GridPlacementId: owner.placementId,
64
+ }, sourceStore);
65
+ const column = addColumnToStore(draft, { ...anchor, storeyPlacementId: gridPlacement.placementId }, {
66
+ ...params,
67
+ Position: [0, 0, params.Position[2] - crossing[2] * scale],
68
+ RefDirection: localHeading,
69
+ });
70
+ return { ...column, gridPlacement };
71
+ });
72
+ }
73
+ //# sourceMappingURL=grid-column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-column.js","sourceRoot":"","sources":["../../src/in-store/grid-column.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /** Effective same-grid/different-row validation for persisted IFC
2
+ * intersections (#6232), including source axes under manually built anchors.
3
+ * Generic IFC emission preserves valid curved and radial axes. */
4
+ import type { StoreEditor } from '@ifc-lite/mutations';
5
+ import type { IfcDataStore } from '@ifc-lite/parser';
6
+ export declare function assertGridIntersectionOwner(editor: StoreEditor, axes: readonly [number, number], placementId: number | undefined, op: string, sourceStore?: IfcDataStore): {
7
+ gridId: number;
8
+ placementId: number | null;
9
+ };
10
+ //# sourceMappingURL=grid-intersection-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-intersection-read.d.ts","sourceRoot":"","sources":["../../src/in-store/grid-intersection-read.ts"],"names":[],"mappings":"AAIA;;kEAEkE;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,EAAE,EAAE,MAAM,EACV,WAAW,CAAC,EAAE,YAAY,GACzB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAmChD"}