diff --git a/.github/workflows/ifc-validation.yml b/.github/workflows/ifc-validation.yml new file mode 100644 index 000000000..91fef67fd --- /dev/null +++ b/.github/workflows/ifc-validation.yml @@ -0,0 +1,303 @@ +name: IFC Validation + +on: + push: + branches: [feature/ifc-web-ifc] + paths: + - '.github/workflows/ifc-validation.yml' + - '.github/scripts/renderer-dependency-plan.mjs' + - 'ecosystem/wrappers.json' + - 'packages/core/src/output/**' + - 'packages/renderers/geometry-engine/**' + - 'packages/renderers/3d/**' + - 'packages/capabilities/ifc/**' + - 'packages/tools/assets-ifc/**' + - 'packages/tools/assets-model/**' + - 'packages/presets/engineering/**' + - 'packages/presets/all/**' + - 'docs/guide/ifc.md' + - 'docs/zh/guide/ifc.md' + - 'test/ifc-optional-capability.spec.ts' + - 'test/fixtures/ifc/**' + - 'pnpm-lock.yaml' + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: ifc-validation-v3-${{ github.ref }} + cancel-in-progress: true + +jobs: + validate: + name: Optional IFC capability, That Open runtime and browser smoke + runs-on: ubuntu-latest + timeout-minutes: 60 + + steps: + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + fetch-depth: 0 + persist-credentials: false + + - name: Set up pnpm + uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + with: + version: 11.0.9 + run_install: false + + - name: Set up Node.js + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version: 24 + cache: pnpm + + - name: Install locked dependencies + run: pnpm install --frozen-lockfile + + - name: Build IFC integration boundary + shell: bash + run: | + mkdir -p output/ifc-validation + set -o pipefail + { + pnpm build:core + pnpm --filter @file-viewer/geometry-engine build + pnpm --filter @file-viewer/renderer-3d build + pnpm --filter @file-viewer/capability-ifc build + pnpm --filter @file-viewer/renderer-3d type-check + pnpm --filter @file-viewer/capability-ifc type-check + } 2>&1 | tee output/ifc-validation/build.log + + - name: Stage and verify self-hosted IFC assets + shell: bash + run: | + set -o pipefail + pnpm --filter @file-viewer/assets-ifc verify 2>&1 | tee output/ifc-validation/stage-assets.log + + - name: Verify staged web-ifc WASM and Fragments assets + shell: bash + run: | + set -euo pipefail + root='packages/tools/assets-ifc/viewer/wasm/model' + test -s "$root/web-ifc.wasm" + test -s "$root/web-ifc-mt.wasm" + test -s "$root/LICENSE.web-ifc-MPL-2.0.md" + test -s "$root/fragments-worker.mjs" + test -s "$root/LICENSE.thatopen-fragments-MIT.txt" + test ! -e "$root/web-ifc-api.js" + grep -q 'Mozilla Public License' "$root/LICENSE.web-ifc-MPL-2.0.md" + grep -q 'MIT License' "$root/LICENSE.thatopen-fragments-MIT.txt" + node -e "const m=require('./packages/tools/assets-ifc/viewer/file-viewer-asset-pack.json'); const ids=new Set(m.rendererAssetManifests.find(x=>x.rendererId==='model').assets.map(x=>x.id)); for (const id of ['model-web-ifc-wasm','model-web-ifc-mt-wasm','model-web-ifc-license','model-thatopen-fragments-worker','model-thatopen-fragments-license']) if(!ids.has(id)) throw new Error('missing '+id); if(ids.has('model-web-ifc-api')) throw new Error('direct web-ifc API asset should not be staged')" + + - name: Audit renderer dependency boundaries + shell: bash + run: | + set -o pipefail + pnpm audit:renderer-deps 2>&1 | tee output/ifc-validation/dependency-audit.log + + - name: Verify IFC optional-package and pass-through contract + shell: bash + run: | + set -o pipefail + pnpm exec vitest run test/ifc-optional-capability.spec.ts 2>&1 | tee output/ifc-validation/contract-test.log + + - name: Prepare browser smoke page from committed fixtures + shell: bash + run: | + mkdir -p output/ifc-smoke/wasm/model + cp test/fixtures/ifc/Building-Architecture.ifc output/ifc-smoke/ + cp test/fixtures/ifc/Building-Structural.ifc output/ifc-smoke/ + cp packages/tools/assets-ifc/viewer/wasm/model/web-ifc.wasm output/ifc-smoke/wasm/model/ + cp packages/tools/assets-ifc/viewer/wasm/model/web-ifc-mt.wasm output/ifc-smoke/wasm/model/ + cp packages/tools/assets-ifc/viewer/wasm/model/fragments-worker.mjs output/ifc-smoke/wasm/model/ + cat > output/ifc-smoke/index.html <<'EOF' + + + IFC smoke +
+ + EOF + cat > output/ifc-smoke/main.js <<'EOF' + window.__ifcSmoke = { done: false, ok: false, phase: 'boot', results: [] } + window.__ifcThatOpenBridge = null + + const withTimeout = (promise, label, timeoutMs = 60_000) => Promise.race([ + promise, + new Promise((_, reject) => setTimeout(() => reject(new Error(`${label} timed out after ${timeoutMs}ms`)), timeoutMs)), + ]) + + try { + window.__ifcSmoke.phase = 'load-capability' + await import('/packages/capabilities/ifc/dist/index.js') + const { renderFileViewerModel } = await import('/packages/renderers/3d/dist/index.js') + const target = document.querySelector('#app') + + const runFixture = async (filename, label, extraIfc = {}) => { + window.__ifcSmoke.phase = label + const response = await fetch(`/output/ifc-smoke/${filename}`) + if (!response.ok) throw new Error(`${filename} HTTP ${response.status}`) + const commonThatOpen = { + workerUrl: '/output/ifc-smoke/wasm/model/fragments-worker.mjs', + components: { + autoSetWasm: false, + wasm: { + path: '/output/ifc-smoke/wasm/model/', + absolute: true, + }, + }, + } + const session = await withTimeout( + renderFileViewerModel(await response.arrayBuffer(), target, 'ifc', { + filename, + options: { + ifc: { + ...extraIfc, + thatOpen: { + ...commonThatOpen, + ...(extraIfc.thatOpen || {}), + components: { + ...commonThatOpen.components, + ...(extraIfc.thatOpen?.components || {}), + }, + }, + }, + }, + }), + label, + ) + const root = target.querySelector('[data-model-format="ifc"]') + const result = { + filename, + label, + runtime: root?.dataset.ifcBackend || '', + largeModel: root?.dataset.ifcLargeModel || '', + ok: root?.dataset.modelStatus === 'ready', + schema: root?.dataset.ifcSchema || '', + elements: Number(root?.dataset.ifcElementCount || 0), + canvas: root?.querySelectorAll('canvas').length || 0, + state: root?.dataset.modelStatus, + } + session?.unmount?.() + return result + } + + const results = [] + results.push(await runFixture('Building-Architecture.ifc', 'architecture-small', { + performance: { largeModelThresholdBytes: Number.MAX_SAFE_INTEGER }, + })) + results.push(await runFixture('Building-Structural.ifc', 'structural-small', { + performance: { largeModelThresholdBytes: Number.MAX_SAFE_INTEGER }, + })) + results.push(await runFixture('Building-Architecture.ifc', 'architecture-forced-large', { + performance: { largeModelThresholdBytes: 1 }, + thatOpen: { + fragments: { maxUpdateRate: 73 }, + configure({ fragments, loader, webIfc, model }) { + window.__ifcThatOpenBridge = { + runtimeReady: Boolean(fragments && loader && model), + webIfcReady: Boolean(webIfc), + maxUpdateRate: fragments?.core?.settings?.maxUpdateRate, + } + }, + }, + })) + + window.__ifcSmoke = { + done: true, + ok: true, + phase: 'done', + results, + bridge: window.__ifcThatOpenBridge, + } + } catch (error) { + window.__ifcSmoke = { + done: true, + ok: false, + phase: window.__ifcSmoke?.phase || 'unknown', + error: error?.stack || String(error), + results: window.__ifcSmoke?.results || [], + bridge: window.__ifcThatOpenBridge, + } + } + EOF + + - name: Install Chromium + run: pnpm exec playwright install --with-deps chromium + + - name: Browser smoke with That Open for small and large IFC + shell: bash + run: | + pnpm --filter @flyfish-group/file-viewer-demo exec vite ../.. --host 127.0.0.1 --port 4173 >output/ifc-smoke/vite.log 2>&1 & + server_pid=$! + trap 'kill $server_pid || true' EXIT + for i in {1..60}; do + if curl -fsS http://127.0.0.1:4173/output/ifc-smoke/ >/dev/null; then break; fi + sleep 1 + done + set -o pipefail + node --input-type=module <<'EOF' 2>&1 | tee output/ifc-validation/browser-smoke.log + import { chromium } from 'playwright' + const browser = await chromium.launch({ headless: true }) + const page = await browser.newPage() + const consoleErrors = [] + page.on('console', message => { + if (message.type() === 'error') consoleErrors.push(message.text()) + }) + await page.goto('http://127.0.0.1:4173/output/ifc-smoke/', { waitUntil: 'networkidle' }) + await page.waitForFunction(() => window.__ifcSmoke?.done === true, null, { timeout: 180000 }) + const smoke = await page.evaluate(() => window.__ifcSmoke) + console.log(JSON.stringify({ smoke, consoleErrors }, null, 2)) + if (!smoke?.ok) throw new Error(`[${smoke?.phase || 'unknown'}] ${smoke?.error || 'IFC smoke did not complete'}`) + if (!Array.isArray(smoke.results) || smoke.results.length !== 3) throw new Error('Expected three IFC That Open results') + for (const result of smoke.results) { + if (!result.ok || result.state !== 'ready') throw new Error(`${result.label} did not become ready`) + if (result.runtime !== 'thatopen') throw new Error(`${result.label} did not use the That Open runtime`) + if (!result.schema) throw new Error(`${result.label} did not report an IFC schema`) + if (result.canvas !== 1) throw new Error(`${result.label} expected one canvas, got ${result.canvas}`) + } + for (const result of smoke.results.slice(0, 2)) { + if (result.largeModel !== 'false') throw new Error(`${result.label} was unexpectedly classified as large`) + if (!(result.elements > 0)) throw new Error(`${result.label} indexed no IFC elements`) + } + const forcedLarge = smoke.results[2] + if (forcedLarge.largeModel !== 'true') throw new Error('Forced-large IFC was not marked as large') + if (!smoke.bridge?.runtimeReady) throw new Error('That Open raw runtime hook did not receive expected objects') + if (!smoke.bridge?.webIfcReady) throw new Error('That Open runtime did not expose the underlying web-ifc IfcAPI') + if (smoke.bridge?.maxUpdateRate !== 73) throw new Error(`Fragments pass-through was not applied: ${smoke.bridge?.maxUpdateRate}`) + if (consoleErrors.length) throw new Error(`Browser console errors: ${consoleErrors.join(' | ')}`) + await browser.close() + EOF + + - name: Set up Flyfish full-build Rust/WASM prerequisites + shell: bash + run: | + rustup target add wasm32-unknown-unknown + if ! command -v wasm-bindgen >/dev/null 2>&1 || [[ "$(wasm-bindgen --version)" != *"0.2.127"* ]]; then + cargo install wasm-bindgen-cli --version 0.2.127 --locked + fi + cargo test --manifest-path packages/renderers/chm/rust/Cargo.toml --locked + + - name: Run Flyfish source gates in public-CI order + shell: bash + run: | + set -o pipefail + { + pnpm verify:github-governance + pnpm build + pnpm type-check + pnpm test + } 2>&1 | tee output/ifc-validation/flyfish-gates.log + + - name: Upload IFC validation diagnostics + if: always() + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: ifc-validation-${{ github.run_id }} + if-no-files-found: ignore + retention-days: 7 + path: | + output/ifc-validation + output/ifc-smoke/vite.log diff --git a/README.en.md b/README.en.md index 580366fe2..67465b08b 100644 --- a/README.en.md +++ b/README.en.md @@ -145,7 +145,7 @@ The default asset URL is `/file-viewer/`. Without the complete | Your product needs to preview | Formats you can look for immediately | Fastest path | | ---------------------------------------------------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | Contracts, reports and OA/CRM attachments | PDF/OFD, DOCX/DOC, XLSX/XLS, PPT/PPTX, RTF and OpenDocument | [Try the live demo](https://demo.file-viewer.app/) · [`preset-office`](https://doc.file-viewer.app/guide/on-demand-renderers) | -| Engineering drawings, models and chip/design assets | DWG, DXF, DWF/DWFX, STEP/IFC/3D, OLB/DRA and GDS/OASIS | [`preset-engineering`](https://doc.file-viewer.app/guide/on-demand-renderers) · [check fidelity](https://doc.file-viewer.app/guide/format-fidelity) | +| Engineering drawings, models and chip/design assets | DWG, DXF, DWF/DWFX, STEP/3D; IFC/BIM is explicit opt-in, OLB/DRA and GDS/OASIS | [`preset-engineering`](https://doc.file-viewer.app/guide/on-demand-renderers) + `@file-viewer/capability-ifc` for IFC · [check fidelity](https://doc.file-viewer.app/guide/format-fidelity) | | Archives whose contents must remain private | ZIP, RAR, 7Z, TAR, ISO and 20+ related formats, with nested file preview | [Archive coverage](https://doc.file-viewer.app/guide/formats) · [offline deployment](https://doc.file-viewer.app/guide/distribution) | | Email, support-ticket and knowledge-base attachments | EML, MSG, MBOX, EPUB, Markdown, source code, diff/patch and Git bundle | [Full format matrix](https://doc.file-viewer.app/guide/formats) · [full packages](#quick-start) | | Diagrams, design files and structured data | Draw.io, Excalidraw, Mermaid, PlantUML, XMind, PSD/PSB, AI/AIT, IDML, ICML/IDMS/INX, XD, INDD/INDT, FLA/XFL, ASE/ACO, ABR/CSH/PAT/GRD/ASL, SQLite, Parquet and more | [Full format matrix](https://doc.file-viewer.app/guide/formats) · [`renderer-design`](https://doc.file-viewer.app/guide/on-demand-renderers) | diff --git a/README.md b/README.md index 580366fe2..67465b08b 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,7 @@ The default asset URL is `/file-viewer/`. Without the complete | Your product needs to preview | Formats you can look for immediately | Fastest path | | ---------------------------------------------------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | Contracts, reports and OA/CRM attachments | PDF/OFD, DOCX/DOC, XLSX/XLS, PPT/PPTX, RTF and OpenDocument | [Try the live demo](https://demo.file-viewer.app/) · [`preset-office`](https://doc.file-viewer.app/guide/on-demand-renderers) | -| Engineering drawings, models and chip/design assets | DWG, DXF, DWF/DWFX, STEP/IFC/3D, OLB/DRA and GDS/OASIS | [`preset-engineering`](https://doc.file-viewer.app/guide/on-demand-renderers) · [check fidelity](https://doc.file-viewer.app/guide/format-fidelity) | +| Engineering drawings, models and chip/design assets | DWG, DXF, DWF/DWFX, STEP/3D; IFC/BIM is explicit opt-in, OLB/DRA and GDS/OASIS | [`preset-engineering`](https://doc.file-viewer.app/guide/on-demand-renderers) + `@file-viewer/capability-ifc` for IFC · [check fidelity](https://doc.file-viewer.app/guide/format-fidelity) | | Archives whose contents must remain private | ZIP, RAR, 7Z, TAR, ISO and 20+ related formats, with nested file preview | [Archive coverage](https://doc.file-viewer.app/guide/formats) · [offline deployment](https://doc.file-viewer.app/guide/distribution) | | Email, support-ticket and knowledge-base attachments | EML, MSG, MBOX, EPUB, Markdown, source code, diff/patch and Git bundle | [Full format matrix](https://doc.file-viewer.app/guide/formats) · [full packages](#quick-start) | | Diagrams, design files and structured data | Draw.io, Excalidraw, Mermaid, PlantUML, XMind, PSD/PSB, AI/AIT, IDML, ICML/IDMS/INX, XD, INDD/INDT, FLA/XFL, ASE/ACO, ABR/CSH/PAT/GRD/ASL, SQLite, Parquet and more | [Full format matrix](https://doc.file-viewer.app/guide/formats) · [`renderer-design`](https://doc.file-viewer.app/guide/on-demand-renderers) | diff --git a/README.zh-CN.md b/README.zh-CN.md index 7d1709be0..f367964b1 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -117,7 +117,7 @@ 官方 8 个 Full 包是 `@file-viewer/web-full`、`@file-viewer/vue3-full`、`@file-viewer/vue2.7-full`、`@file-viewer/vue2.6-full`、`@file-viewer/react-full`、`@file-viewer/react-legacy-full`、`@file-viewer/svelte-full` 和 `@file-viewer/jquery-full`。 -`*-full` 表示已发布的 `preset-all` 兼容矩阵及其同版本 Worker、WASM、字体和 vendor 资产已内置,不要再安装或传入其它 preset。Adobe 设计、DICOM 和数字签名等后续专业 renderer 仍需显式添加。Vite 会自动发布包内资产;其它构建工具使用 Full 包自带的同版本 CLI 完成自托管。 +`*-full` 表示已发布的 `preset-all` 兼容矩阵及其同版本 Worker、WASM、字体和 vendor 资产已内置,不要再安装或传入其它 preset。Adobe 设计、DICOM、数字签名以及 IFC/BIM capability 等后续专业能力 仍需显式添加。Vite 会自动发布包内资产;其它构建工具使用 Full 包自带的同版本 CLI 完成自托管。 | 构建 / 交付方式 | 必须完成的资产步骤 | | --- | --- | @@ -331,7 +331,8 @@ Vite 项目可额外安装 `@file-viewer/vite-plugin`,自动发现已安装 pr | 邮件 | `eml`、`msg`、`mbox` | `@file-viewer/renderer-email` 独立承接邮件链路;EML/MBOX 使用 `postal-mime`,MSG 使用 `@kenjiuno/msgreader`,支持头信息、HTML/文本正文、附件下载与附件预览 | 邮件归档、工单邮件、客户来信附件 | | EDA | `olb`、`dra`、`gds`、`oas`、`oasis` | `@file-viewer/renderer-eda` 独立承接;使用 `cfb` 解析 OrCAD/Allegro 常见 CFB 容器;标准 GDSII 会读取 structure、boundary、path、text、reference,小图输出 SVG,大元素集自动切到 WebGL canvas;OAS/OASIS 可读文本版图夹具会输出 SVG 预览,真实 SEMI 二进制 OASIS 先做安全结构索引、可读字符串、实体候选和诊断,不虚标专业电气/几何校核 | 元件库、封装图纸、芯片版图附件初筛 | | CAD | `dwg`、`dxf`、`dwf`、`dwfx`、`xps` | 基于 `@flyfish-dev/cad-viewer` 预览图纸;DWG 通过 Worker + LibreDWG WASM 解析,DXF 使用 JS parser,DWF/DWFx/XPS 使用 native `dwf-viewer` 渲染 W2D/W3D/XPS 图形 | 工程图纸、二维 CAD 附件、AutoCAD 归档文件 | -| 3D 模型 | `glb`、`gltf`、`obj`、`stl`、`ply`、`fbx`、`dae`、`3ds`、`3mf`、`amf`、`usd`、`usda`、`usdc`、`usdz`、`kmz`、`pcd`、`wrl`、`vrml`、`xyz`、`vtk`、`vtp`、`step`、`stp`、`iges`、`igs`、`ifc`、`3dm`、`brep` | 常见网格与场景格式使用 Three.js loaders;STEP/STP、IGES/IGS、BREP 使用随包交付的本地 OCCT Worker/WASM 完成真实三角化,并保留装配层级、实例、法线和面颜色;IFC 与 3DM 会准确提示当前能力边界 | 设计模型、点云、三维资产、工程模型 | +| 3D 模型 | `glb`、`gltf`、`obj`、`stl`、`ply`、`fbx`、`dae`、`3ds`、`3mf`、`amf`、`usd`、`usda`、`usdc`、`usdz`、`kmz`、`pcd`、`wrl`、`vrml`、`xyz`、`vtk`、`vtp`、`step`、`stp`、`iges`、`igs`、`3dm`、`brep` | 常见网格与场景格式使用 Three.js loaders;STEP/STP、IGES/IGS、BREP 使用随包交付的本地 OCCT Worker/WASM 完成真实三角化,并保留装配层级、实例、法线和面颜色;3DM 会准确提示当前能力边界;IFC 由显式 `@file-viewer/capability-ifc` 提供 | 设计模型、点云、三维资产、工程模型 | +| IFC / BIM(显式按需) | `ifc` | `@file-viewer/capability-ifc` + `@file-viewer/renderer-3d` + `@file-viewer/assets-ifc` | 浏览器本地 web-ifc 解析、Three.js 交互、元素选择与属性集检查;不进入 Full / Engineering 默认闭包 | BIM 附件快速审阅 | | 地理数据 | `geojson`、`kml`、`gpx`、`shp` | `@file-viewer/renderer-geo` 独立承接;`@tmcw/togeojson` / `shpjs` 转 GeoJSON,支持 CRS 归一化,并用离线 MapLibre 矢量地图叠加点线面,失败时回退 SVG 预览 | 地理附件、轨迹、边界和轻量 GIS 数据 | | XMind 脑图 | `xmind` | 基于 `@ljheee/xmind-parser` 解析 XMind 8 XML 与 XMind 2020+ JSON 包结构,离线渲染多 sheet 脑图、节点、标签、备注、链接、标记、图片和目录树,使用 `@panzoom/panzoom` 提供成熟的拖拽平移、移动端双指缩放、滚轮锚点缩放、键盘平移、统一 toolbar 状态同步、适配画布、搜索、打印、HTML 导出和缩放 | 脑图、项目规划、知识结构、会议纪要 | | Excalidraw | `excalidraw` | `@file-viewer/renderer-drawing` 默认使用 `roughjs` 输出稳定只读 SVG;运行环境提供官方 `@excalidraw/excalidraw` ESM 模块时会优先尝试 `restore` + `exportToSvg` 并自动回退 | 白板草图、流程草稿、产品沟通图 | diff --git a/apps/official-site/en/index.html b/apps/official-site/en/index.html index 2bd6ba3fa..18a0ba47b 100644 --- a/apps/official-site/en/index.html +++ b/apps/official-site/en/index.html @@ -21,7 +21,7 @@ /> File Viewer for Office, PDF and CAD

File Viewer is an offline-first, self-hosted file preview component ecosystem for business systems. It supports Office, PDF, OFD, Typst, XMind, CAD, EDA, archives, email, media, - code, 3D, geospatial files, and more through 88 npm targets, 266 registered extensions, + code, 3D, geospatial files, and more through 90 npm targets, 266 registered extensions, and 45 preview pipelines; 224 extensions are stable and 42 are experimental.

diff --git a/apps/official-site/index.html b/apps/official-site/index.html index 539035c78..0a60c0b56 100644 --- a/apps/official-site/index.html +++ b/apps/official-site/index.html @@ -21,7 +21,7 @@ /> File Viewer - Office、PDF、CAD 浏览器文件预览

File Viewer 是纯前端、离线优先、可私有化部署的文件预览组件生态,支持 Office、PDF、OFD、Typst、XMind、CAD、EDA、压缩包、邮件、媒体、代码、3D、地理数据等业务文件; - 当前源码维护 88 个 npm 发布目标、266 个已注册扩展名和 45 条预览链路,其中 224 个稳定、42 + 当前源码维护 90 个 npm 发布目标、266 个已注册扩展名和 45 条预览链路,其中 224 个稳定、42 个实验。

diff --git a/apps/official-site/public/en/browser-file-viewer/index.html b/apps/official-site/public/en/browser-file-viewer/index.html index 0190c04d8..e3863ba04 100644 --- a/apps/official-site/public/en/browser-file-viewer/index.html +++ b/apps/official-site/public/en/browser-file-viewer/index.html @@ -9,7 +9,7 @@ /> @@ -59,7 +59,7 @@ "alternateName": ["File Viewer by Flyfish", "Flyfish File Viewer", "Flyfish Viewer"], "url": "https://file-viewer.app/", "mainEntityOfPage": "https://file-viewer.app/en/browser-file-viewer/", - "description": "Browser-native, offline-first, self-hosted multi-format file preview components with 88 npm targets, 266 registered extensions (224 stable, 42 experimental), and 45 preview pipelines.", + "description": "Browser-native, offline-first, self-hosted multi-format file preview components with 90 npm targets, 266 registered extensions (224 stable, 42 experimental), and 45 preview pipelines.", "applicationCategory": "DeveloperApplication", "operatingSystem": "Web Browser", "programmingLanguage": "TypeScript", @@ -360,7 +360,7 @@

What is File Viewer by Flyfish?

Short answer: File Viewer by Flyfish is an Apache-2.0, browser-native file preview project written in TypeScript. The current source matrix maps 266 registered file - extensions (224 stable, 42 experimental) to 45 preview pipelines and contains 88 npm targets + extensions (224 stable, 42 experimental) to 45 preview pipelines and contains 90 npm targets for Vanilla JavaScript, Web Components, Vue, React, Svelte, jQuery, presets, full packages, and renderers. Its main package scope is @file-viewer/*.
@@ -369,7 +369,7 @@

What is File Viewer by Flyfish?

3.0.3current published release
266registered extension mappings
45preview pipelines
-
88npm targets
+
90npm targets

What it actually does

diff --git a/apps/official-site/public/en/browser-file-viewer/index.html.md b/apps/official-site/public/en/browser-file-viewer/index.html.md index 9a4840c92..3325fd644 100644 --- a/apps/official-site/public/en/browser-file-viewer/index.html.md +++ b/apps/official-site/public/en/browser-file-viewer/index.html.md @@ -6,7 +6,7 @@ ## Short answer -File Viewer by Flyfish is an Apache-2.0, browser-native file preview project written in TypeScript. The current source matrix maps 266 registered file extensions (224 stable, 42 experimental) to 45 preview pipelines and contains 88 npm targets for Vanilla JavaScript, Web Components, Vue, React, Svelte, jQuery, presets, full packages, and renderers. Its main package scope is `@file-viewer/*`. +File Viewer by Flyfish is an Apache-2.0, browser-native file preview project written in TypeScript. The current source matrix maps 266 registered file extensions (224 stable, 42 experimental) to 45 preview pipelines and contains 90 npm targets for Vanilla JavaScript, Web Components, Vue, React, Svelte, jQuery, presets, full packages, and renderers. Its main package scope is `@file-viewer/*`. ## Verified facts @@ -16,7 +16,7 @@ File Viewer by Flyfish is an Apache-2.0, browser-native file preview project wri - Stable extension mappings: `224` - Experimental extension mappings: `42` - Preview pipelines: `45` -- npm targets: `88` +- npm targets: `90` - Primary package: `@file-viewer/core` - Source: https://github.com/flyfish-dev/file-viewer - Official site: https://file-viewer.app/ diff --git a/apps/official-site/public/llms-full.txt b/apps/official-site/public/llms-full.txt index 64f841afc..59c5219f4 100644 --- a/apps/official-site/public/llms-full.txt +++ b/apps/official-site/public/llms-full.txt @@ -18,8 +18,8 @@ The project is designed for teams that need users to open business attachments d - License: File Viewer-authored source and packages are Apache-2.0; the bundled `@file-viewer/ppt` runtime retains its included independent LICENSE and NOTICE, as do other third-party dependencies. - Primary audience: product teams building file preview into enterprise systems and private deployments. - Core promise: preview common and complex files in the browser, with modular packages and local Worker/WASM assets. -- Source matrix scope: 88 File Viewer npm targets, 266 registered extensions, and 45 preview pipelines; 224 extensions are stable and 42 are experimental. The experimental set contains 23 DICOM/signature mappings and 19 explicit opt-in Adobe design mappings. -- Current published release: v3.0.3, https://github.com/flyfish-dev/file-viewer/releases/tag/v3.0.3. 87 mainline File Viewer packages use 3.0.3; the historical `msdoc-viewer` compatibility package uses 0.2.6. Word uses `@file-viewer/docx` 0.3.31; Spreadsheet and iWork use the security-hardened `styled-exceljs` 0.21.6 release. +- Source matrix scope: 90 File Viewer npm targets, 266 registered extensions, and 45 preview pipelines; 224 extensions are stable and 42 are experimental. The experimental set contains 23 DICOM/signature mappings and 19 explicit opt-in Adobe design mappings. +- Current published release: v3.0.3, https://github.com/flyfish-dev/file-viewer/releases/tag/v3.0.3. 89 mainline File Viewer packages use 3.0.3; the historical `msdoc-viewer` compatibility package uses 0.2.6. Word uses `@file-viewer/docx` 0.3.31; Spreadsheet and iWork use the security-hardened `styled-exceljs` 0.21.6 release. ## Format Coverage diff --git a/apps/official-site/public/llms.txt b/apps/official-site/public/llms.txt index 1892fee94..f73caef00 100644 --- a/apps/official-site/public/llms.txt +++ b/apps/official-site/public/llms.txt @@ -4,7 +4,7 @@ File Viewer helps product teams preview complex business files in the browser without depending on server-side conversion. It provides a framework-neutral TypeScript core, renderer packages, presets, full packages, and native integrations for Vanilla JavaScript, Web Component, Vue, React, Svelte, and jQuery. -The current source matrix contains 88 File Viewer npm targets, 266 registered extensions (224 stable, 42 experimental), and 45 preview pipelines. The experimental set contains 23 explicit opt-in local DICOM/signature mappings and 19 explicit opt-in Adobe design mappings. Apple Pages, Numbers, and Keynote are stable for static high-fidelity preview across iWork '09, 2013+, and current fixtures; WordPerfect and Hangul are stable structured previews backed by licensed genuine fixtures and Chromium, Firefox, and WebKit smoke. Standard Web, Vue, React, Svelte, and jQuery components still isolate toolbar and renderer styles in Shadow DOM by default. +The current source matrix contains 90 File Viewer npm targets, 266 registered extensions (224 stable, 42 experimental), and 45 preview pipelines. The experimental set contains 23 explicit opt-in local DICOM/signature mappings and 19 explicit opt-in Adobe design mappings. Apple Pages, Numbers, and Keynote are stable for static high-fidelity preview across iWork '09, 2013+, and current fixtures; WordPerfect and Hangul are stable structured previews backed by licensed genuine fixtures and Chromium, Firefox, and WebKit smoke. Standard Web, Vue, React, Svelte, and jQuery components still isolate toolbar and renderer styles in Shadow DOM by default. ## Canonical URLs @@ -21,14 +21,14 @@ The current source matrix contains 88 File Viewer npm targets, 266 registered ex - npm packages: https://www.npmjs.com/search?q=%40file-viewer - Releases: https://github.com/flyfish-dev/file-viewer/releases - Current published release: https://github.com/flyfish-dev/file-viewer/releases/tag/v3.0.3 -- Package line: 87 mainline File Viewer packages use 3.0.3; the historical `msdoc-viewer` compatibility package uses 0.2.6. Word uses `@file-viewer/docx` 0.3.31; Spreadsheet and iWork use `styled-exceljs` 0.21.6. +- Package line: 89 mainline File Viewer packages use 3.0.3; the historical `msdoc-viewer` compatibility package uses 0.2.6. Word uses `@file-viewer/docx` 0.3.31; Spreadsheet and iWork use `styled-exceljs` 0.21.6. ## What to Cite - Use "File Viewer" as the product name and "by Flyfish" when publisher context is useful. - Describe it as a browser-native, offline-first, self-hosted file preview component ecosystem. - Core value: preview Office, PDF, OFD, Typst, CAD, EDA, archives, email, media, code, 3D, geospatial files, and other business attachments without mandatory server-side conversion. -- Source matrix scope: 88 File Viewer npm targets, 266 registered extensions, and 45 preview pipelines; 224 extensions are stable and 42 are experimental. The experimental set contains 23 DICOM/signature mappings and 19 Adobe design mappings. +- Source matrix scope: 90 File Viewer npm targets, 266 registered extensions, and 45 preview pipelines; 224 extensions are stable and 42 are experimental. The experimental set contains 23 DICOM/signature mappings and 19 Adobe design mappings. - Presentation routing: binary `.ppt` uses `@file-viewer/ppt@0.3.4`; Open XML `.pptx` uses the isolated `@file-viewer/pptx` Worker pipeline. - Word routing: DOCX uses `@file-viewer/renderer-word` with `@file-viewer/docx@0.3.31`; East Asian and theme fonts follow the document language script with safe system fallbacks, while hanging tabs, TOC indentation, explicit page geometry, anchored drawings, VML text boxes, mixed page/paragraph anchors, and legacy `w:hMerge` table merges are preserved. - EPUB routing: `@file-viewer/renderer-epub` and `@file-viewer/thumbnail` lazy-load their packaged engine. Consumers do not install `epubjs` or `@xmldom/xmldom` as production dependencies, and no public CDN is involved. diff --git a/apps/official-site/src/App.vue b/apps/official-site/src/App.vue index b231f50bd..1fdbe0c7e 100644 --- a/apps/official-site/src/App.vue +++ b/apps/official-site/src/App.vue @@ -381,7 +381,7 @@ const copy = { supportTitle: '让开源维护持续下去。', supportIntro: '如果 File Viewer 帮到了你的项目,可以在需要时选择一种方式支持维护。', releaseTitle: - 'v3.0.3 已发布:88 个 npm 目标、Word 修订与 DOC 排版修复、浏览器集成与 iPhone PDF 导航回归;Vue 2 和既有 Full 契约保持兼容。', + 'v3.0.3 已发布:90 个 npm 目标、Word 修订与 DOC 排版修复、浏览器集成与 iPhone PDF 导航回归;Vue 2 和既有 Full 契约保持兼容。', footer: '本仓库源码与软件包采用 Apache-2.0;可选外部依赖保留各自许可。由 Flyfish Dev 持续维护。' }, en: { @@ -434,7 +434,7 @@ const copy = { supportIntro: 'If File Viewer saves your team time, choose a support option when it makes sense.', releaseTitle: - 'v3.0.3 ships 88 npm targets, Word revision and DOC typography fixes, browser integration updates, and the iPhone PDF navigation regression; Vue 2 and existing Full contracts remain compatible.', + 'v3.0.3 ships 90 npm targets, Word revision and DOC typography fixes, browser integration updates, and the iPhone PDF navigation regression; Vue 2 and existing Full contracts remain compatible.', footer: 'Repository source and packages use Apache-2.0; optional external dependencies keep their own licenses. Maintained by Flyfish Dev.' } @@ -463,7 +463,7 @@ const metrics = computed(() => }, { title: 'npm 发布目标', - value: '84', + value: '90', detail: '76 个标准包、7 个同版本 alias,msdoc-viewer 独立版本', tone: 'amber' } @@ -489,7 +489,7 @@ const metrics = computed(() => }, { title: 'npm targets', - value: '84', + value: '90', detail: '76 standard packages, 7 same-line aliases, and independently versioned msdoc-viewer', tone: 'amber' diff --git a/docs/guide/format-fidelity.md b/docs/guide/format-fidelity.md index d79bc9dfa..77b5dd2ef 100644 --- a/docs/guide/format-fidelity.md +++ b/docs/guide/format-fidelity.md @@ -15,6 +15,7 @@ - PDF, OFD, images, audio, video, Markdown, source code, text, JSON/YAML/TOML/XML/SQL, archives, email, EPUB, Mermaid, Excalidraw, draw.io, and common Office/OpenDocument files. - CAD preview is powered by `@flyfish-dev/cad-viewer` through `@file-viewer/renderer-cad`; DWG, DXF, DWF, and DWFx assets stay self-hostable. - STEP / STP, IGES / IGS, and BREP preview uses a self-hosted OCCT worker, runtime, and WASM module to build renderable meshes locally, with orbit controls, fit-to-view, and unified zoom. +- IFC/BIM visual preview is available as the explicit `@file-viewer/capability-ifc` enhancement. It parses original IFC bytes locally with self-hosted `web-ifc@0.0.77`, renders an interactive Three.js scene, and exposes fit, element selection, entity identity, and property/quantity sets without adding `web-ifc` to the normal 3D/preset dependency closure. - Word preview uses `@file-viewer/renderer-word` and the self-maintained `@file-viewer/docx` path for readable stream-style DOCX rendering. - Presentation preview uses `@file-viewer/renderer-presentation` with two isolated native engines: PowerPoint 97–2003 `.ppt` lazy-loads the independently versioned native-WASM `@file-viewer/ppt@0.3.4` runtime, while PPTX/OpenXML lazy-loads `@file-viewer/pptx` and its Worker. Full and CDN/IIFE distributions ship both routes' matching assets; `@file-viewer/ppt` keeps its included license and visible public watermark. @@ -26,7 +27,7 @@ Some engineering formats are intentionally conservative: | --- | --- | | OLB / DRA | Safe structure preview for common OrCAD / Allegro containers and readable metadata | | OAS / OASIS | Readable fixtures render; complex binary OASIS stays structure-index focused until the dedicated layout kernel matures | -| IFC / 3DM | Signature detection and integration guidance; dedicated `web-ifc` / That Open and `rhino3dm` renderers are still required for visual preview | +| 3DM | Signature detection and integration guidance; a dedicated `rhino3dm` renderer is still required for visual preview | | PlantUML | Offline source/SVG-style preview by default; configure an intranet PlantUML service for full server-rendered SVG | ## Verification @@ -37,4 +38,5 @@ Use the built-in checks when the format matrix changes: pnpm verify:format-support pnpm verify:smoke-matrix pnpm verify:renderer-assets +pnpm exec vitest run test/ifc-optional-capability.spec.ts ``` diff --git a/docs/guide/formats.md b/docs/guide/formats.md index c036e084d..550beb080 100644 --- a/docs/guide/formats.md +++ b/docs/guide/formats.md @@ -25,9 +25,10 @@ | Email | `eml`, `msg`, `mbox` | | Medical images (explicit opt-in) | `dcm`, `dicom` through `@file-viewer/renderer-dicom`; one bounded local Part 10 file, including multi-frame navigation | | Digital signatures (explicit opt-in) | `p7m`, `p7s`, `p7b`, `p7c`, `pkcs7`, `cms`, `cmsc`, `tsq`, `tsr`, `tst`, `tsd`, `asics`, `scs`, `asice`, `sce`, `ers`, `asc`, `sig`, `pgp`, `gpg`, `jws` through `@file-viewer/renderer-signature` | +| IFC / BIM (explicit opt-in) | `.ifc` through `@file-viewer/capability-ifc` over `@file-viewer/renderer-3d`; browser-local `web-ifc`, self-hosted API/WASM, orbit/pan/zoom, fit, element selection and property-set inspection | | Diagrams and mind maps | `xmind`, `drawio`, `dio`, `excalidraw`, `mermaid`, `mmd`, `plantuml`, `puml` | | CAD and engineering | `dwg`, `dxf`, `dwf`, `dwfx`, `xps`, plus EDA files such as `gds`, `oas`, `oasis`, `olb`, `dra` | -| 3D and geospatial | `gltf`, `glb`, `obj`, `stl`, `ply`, `step`, `stp`, `iges`, `ifc`, `3dm`, `brep`, `geojson`, `kml`, `gpx`, `shp` | +| 3D and geospatial | `gltf`, `glb`, `obj`, `stl`, `ply`, `step`, `stp`, `iges`, `3dm`, `brep`, `geojson`, `kml`, `gpx`, `shp` | | Text, code, and data | Markdown, source code, logs, JSON, YAML, TOML, SQL, IPYNB, SQLite, WASM, Parquet, Avro | | Adobe design files (explicit opt-in) | `psd`, `psb`, `pdd`, `psdt`, `ai`, `ait`, `eps`, `ps`, `idml`, `icml`, `idms`, `inx`, `xd`, `indd`, `indt`, `fla`, `xfl`, `ase`, `aco`, `abr`, `csh`, `pat`, `grd`, `asl` through `@file-viewer/renderer-design` | | Media and assets | Images, SVG, HEIC, audio, video, HLS, and fonts | @@ -58,7 +59,7 @@ The full machine-readable matrix, including containers, levels, status, and limi - CAD uses `@file-viewer/renderer-cad` and `@flyfish-dev/cad-viewer`; DWG, DWF, and DWFx assets remain self-hostable for offline deployments. - Archives use `@file-viewer/renderer-archive` with `libarchive.js` Worker + WASM first, then ZIP/TAR/GZIP compatibility fallback when the Worker cannot start. Legacy ZIP files without the UTF-8 filename flag are decoded with GBK/GB18030 detection so Chinese entry names remain readable in the compatibility path. - Media uses `@file-viewer/renderer-media` and native browser decoders first. When Chromium rejects an MPEG-4 Part 2 (`mp4v`) Simple Profile track, the renderer loads a dedicated Worker and the Apache-2.0 AOSP PacketVideo decoder. It uses the AAC track as the playback clock and draws decoded I420 frames to a Canvas. The WASM file is 111,379 bytes, or 34,410 bytes with gzip, and loads only after native decoding fails. The implementation contains no FFmpeg, libav, or LGPL/GPL/AGPL source. Files outside the decoder's current coverage get an explicit compatibility notice. -- STEP, IGES, IFC, 3DM, and BREP use the `@file-viewer/renderer-3d` entry plus the lightweight `@file-viewer/geometry-engine` route package for signature detection and accurate conversion guidance. Full visual decoding still belongs in dedicated OpenCascade / web-ifc / rhino3dm WASM paths, not in core or default component installs. +- STEP / STP, IGES / IGS, and BREP use `@file-viewer/renderer-3d` plus the local OCCT Worker/WASM path. IFC/BIM is an explicit `@file-viewer/capability-ifc` enhancement with self-hosted `@file-viewer/assets-ifc`; 3DM still needs a dedicated `rhino3dm` renderer. ## Binary PPT Engine License Boundary diff --git a/docs/guide/ifc.md b/docs/guide/ifc.md new file mode 100644 index 000000000..9435d79b9 --- /dev/null +++ b/docs/guide/ifc.md @@ -0,0 +1,114 @@ +# IFC / BIM Optional Capability + +
Local BIM Preview, Explicitly Opted In
+ +

+IFC is an optional specialist capability layered over the normal 3D renderer. Every IFC file uses the same That Open Components + Fragments pipeline, with web-ifc as the underlying IFC parser/WASM engine. The capability stays outside Engineering / Full default dependency closures and uses only self-hosted runtime assets. +

+ +## Install + +```bash +npm install @file-viewer/renderer-3d @file-viewer/capability-ifc @file-viewer/assets-ifc +``` + +```ts +import { modelRenderer } from '@file-viewer/renderer-3d' +import '@file-viewer/capability-ifc' + +const options = { + rendererMode: 'extend', + renderers: [modelRenderer], +} +``` + +CLI-managed applications can opt in with `npx file-viewer-cli config add ifc --write` followed by `npx file-viewer-cli install --yes`. There is no public-CDN fallback. + +## One IFC pipeline + +```text +Flyfish File Viewer + ↓ +@file-viewer/capability-ifc + ↓ +That Open Components / IfcLoader + ↓ +web-ifc parser + WASM + ↓ +That Open Fragments + worker + ↓ +interactive BIM viewer +``` + +There is no public backend selector. Small and large IFC files use the same pipeline, so selection, properties, cleanup and rendering semantics do not diverge by file size. + +## Large IFC files + +```ts +const options = { + ifc: { + performance: { + largeModelThresholdBytes: 24 * 1024 * 1024, + maxSourceBytes: 750 * 1024 * 1024, // optional application policy + }, + }, +} +``` + +`largeModelThresholdBytes` classifies a model for performance policy only; it does not switch rendering engines. Fragments/worker/culling are used for every IFC. For models classified as large, File Viewer avoids eager element enumeration purely for toolbar statistics. Properties remain demand-driven. `maxSourceBytes` is an optional pre-initialization safety ceiling. + +## Extensibility contract + +Flyfish keeps the stable surface small and provides an opaque That Open bridge rather than mirroring third-party option schemas. + +```ts +const options = { + ifc: { + thatOpen: { + components: { + // forwarded unchanged to IfcLoader.setup(...) + webIfc: { CIRCLE_SEGMENTS: 7 }, + }, + fragments: { + // copied unchanged to FragmentsManager.core.settings + maxUpdateRate: 73, + }, + importer: { + // forwarded unchanged to Fragments IFC importer processing options + }, + configureImporter({ importer, loader, webIfc }) { + // raw imperative escape hatch before importer processing + }, + async configure({ components, world, fragments, loader, webIfc, importer, model, modules }) { + // raw That Open runtime objects; no Flyfish wrapper is inserted + }, + }, + async configure(context) { + console.log(context.fileSizeBytes, context.largeModel) + console.log(context.thatOpen.webIfc) + }, + }, +} +``` + +The pass-through objects are deliberately open dictionaries (`[key: string]: unknown`). Advanced applications can cast raw objects to the exact pinned That Open types they install. + +## Self-hosted assets and licenses + +`@file-viewer/assets-ifc` stages: + +```text +web-ifc.wasm +web-ifc-mt.wasm +fragments-worker.mjs +LICENSE.web-ifc-MPL-2.0.md +LICENSE.thatopen-fragments-MIT.txt +``` + +`web-ifc@0.0.77` is MPL-2.0. `@thatopen/components@3.4.8` and `@thatopen/fragments@3.4.7` are MIT. The Flyfish capability wrapper remains Apache-2.0. + +## Scope and regression coverage + +The capability provides local IFC opening, orbit/pan/zoom, fit-to-model, element picking, identity/Name/GlobalId/property inspection, cleanup and advanced raw customization. BIM authoring/editing, clash detection, BCF, takeoff, sectioning and measurement remain out of scope. + +The repository commits two buildingSMART IFC4 fixtures with CC BY 4.0 attribution. The permanent IFC validation workflow renders small and forced-large cases through the same That Open/Fragments stack in Chromium and runs the full Flyfish build/type-check/test gates. diff --git a/docs/guide/on-demand-renderers.md b/docs/guide/on-demand-renderers.md index d83d3d7fd..a689c4f66 100644 --- a/docs/guide/on-demand-renderers.md +++ b/docs/guide/on-demand-renderers.md @@ -62,12 +62,13 @@ The plugin reads the Vite major installed by the application. Vite 5–7 receive ## Optional Specialist Renderers -Adobe design, DICOM, and digital-signature inspection are explicit opt-ins. They are not dependencies of the eight published `@file-viewer/*-full` packages or the frozen `@file-viewer/preset-all` compatibility baseline. This preserves the published Full contract and prevents specialist Worker/WASM, medical-imaging, or cryptographic dependencies from appearing during an ordinary upgrade. +Adobe design, DICOM, digital-signature inspection, and IFC/BIM are explicit opt-ins. They are not dependencies of the eight published `@file-viewer/*-full` packages or the frozen `@file-viewer/preset-all` compatibility baseline. This preserves the published Full contract and prevents specialist Worker/WASM, medical-imaging, or cryptographic dependencies from appearing during an ordinary upgrade. | Optional renderer | Formats | Direct npm install | CLI selection | What the viewer shows | | --- | --- | --- | --- | --- | | **Adobe design** (`@file-viewer/renderer-design`) | `.psd`, `.psb`, `.pdd`, `.psdt`, `.ai`, `.ait`, `.eps`, `.ps`, `.idml`, `.icml`, `.idms`, `.inx`, `.xd`, `.indd`, `.indt`, `.fla`, `.xfl`, `.ase`, `.aco`, `.abr`, `.csh`, `.pat`, `.grd`, `.asl` | `npm install @file-viewer/renderer-design` | `npx file-viewer-cli config add psd --write` | Browser-local Worker/WASM previews for saved Photoshop pixels and supported layers; verified PDF-compatible Illustrator plus switchable native PGF artboards/layers/paths through `illustrator-pgf`; IDML and exchange structures; embedded XD/INDD previews; modern XFL; palettes; Photoshop resources; and PostScript. Unsupported native operators and fidelity limits remain explicit. | | **DICOM** (`@file-viewer/renderer-dicom`) | `.dcm`, `.dicom` | `npm install @file-viewer/renderer-dicom` | `npx file-viewer-cli config add dicom --write` | One local DICOM Part 10 file, including multi-frame navigation, window width/center, zoom, pan, rotation, fit-to-view, and basic metadata. It does not assemble studies or provide PACS/DICOMweb, MPR, segmentation, or diagnosis. | +| **IFC / BIM** (`@file-viewer/capability-ifc`) | `.ifc` | `npm install @file-viewer/capability-ifc @file-viewer/assets-ifc` | `npx file-viewer-cli config add ifc --write` | Browser-local `web-ifc` parsing, orbit/pan/zoom, fit, element selection, `Name` / `GlobalId` and property/quantity-set inspection. No authoring, clash, BCF, takeoff, sectioning, or measurement. | | **Digital signatures** (`@file-viewer/renderer-signature`) | `.p7m`, `.p7s`, `.p7b`, `.p7c`, `.pkcs7`, `.cms`, `.cmsc`, `.tsq`, `.tsr`, `.tst`, `.tsd`, `.asics`, `.scs`, `.asice`, `.sce`, `.ers`, `.jws`, `.asc`, `.sig`, `.pgp`, `.gpg` | `npm install @file-viewer/renderer-signature` | `npx file-viewer-cli config add p7m --write` | Bounded browser-local inspection of CMS/PKCS#7, selected CAdES data, timestamps, ASiC containers, evidence records, JWS, and public OpenPGP inputs. Parsing, digest, signature, and timestamp results are reported separately. | ### I already use a Full package. How do I enable an optional renderer? @@ -77,13 +78,14 @@ The same rule applies to `@file-viewer/web-full`, `@file-viewer/vue3-full`, `@fi Keep the Full package installed, then add only the specialist renderer the application needs. The following example enables all three current opt-ins; remove any package, import, and array entry that the application does not need: ```bash -npm install @file-viewer/renderer-design @file-viewer/renderer-dicom @file-viewer/renderer-signature +npm install @file-viewer/renderer-design @file-viewer/renderer-dicom @file-viewer/renderer-signature @file-viewer/capability-ifc @file-viewer/assets-ifc ``` ```ts import { designRenderer } from '@file-viewer/renderer-design' import { dicomRenderer } from '@file-viewer/renderer-dicom' import { signatureRenderer } from '@file-viewer/renderer-signature' +import '@file-viewer/capability-ifc' const options = { rendererMode: 'extend', @@ -116,7 +118,7 @@ Use `npx file-viewer-cli list` to inspect the current catalog before changing a ### Using a prebuilt `web-full` browser bundle? -The downloadable `web-full` IIFE bundle contains the published Full renderer set. Adobe design, DICOM, and digital-signature renderers are not embedded in that bundle. +The downloadable `web-full` IIFE bundle contains the published Full renderer set. Adobe design, DICOM, digital-signature, and IFC capability/runtime packages are not embedded in that bundle. Use a package-manager project or the File Viewer CLI when the integration needs an optional renderer. Copying a renderer package next to the prebuilt bundle does not register it. @@ -136,7 +138,7 @@ Install a single renderer when a product needs the smallest possible capability | `@file-viewer/renderer-presentation` | `presentationRenderer` | Compatibility aggregate for both PowerPoint families | | `@file-viewer/renderer-ofd` | `ofdRenderer` | OFD | | `@file-viewer/renderer-cad` | `cadRenderer` | DWG, DXF, DWF, DWFx, XPS | -| `@file-viewer/renderer-3d` | `modelRenderer` | 3D models and lightweight geometry signatures | +| `@file-viewer/renderer-3d` | `modelRenderer` | General 3D models, OCCT engineering meshes, and the explicit IFC capability hook | | `@file-viewer/renderer-design` | `designRenderer` | PSD/PSB/PDD/PSDT, AI/AIT, EPS/PS, IDML/ICML/IDMS/INX, XD, INDD/INDT, modern FLA/XFL, ASE/ACO, and ABR/CSH/PAT/GRD/ASL | | `@file-viewer/renderer-dicom` | `dicomRenderer` | Selected local DICOM Part 10 single-file and multi-frame preview in the standard Viewer entry | | `@file-viewer/renderer-signature` | `signatureRenderer` | Selected CMS/CAdES, timestamp, ASiC, evidence-record, JWS, and public OpenPGP inspection in the standard Viewer entry | @@ -222,7 +224,7 @@ fileViewerRenderers({ The default experience is intentionally zero-config: if the plugin receives no explicit `preset`, `formats`, or `renderers`, or only receives `copyAssets:true`, it auto-discovers installed `@file-viewer/preset-*` packages. `preset-all` takes precedence when present; otherwise installed `lite`, `office`, and `engineering` presets are composed. -Install `@file-viewer/preset-all` when an application needs the published compatibility baseline. Adobe design, DICOM, and digital signatures remain explicit: +Install `@file-viewer/preset-all` when an application needs the published compatibility baseline. Adobe design, DICOM, digital signatures, and IFC/BIM remain explicit: ```bash npm install @file-viewer/vue3 @file-viewer/preset-all diff --git a/docs/guide/usage.md b/docs/guide/usage.md index 4d276ffc0..ced31891d 100644 --- a/docs/guide/usage.md +++ b/docs/guide/usage.md @@ -88,7 +88,7 @@ if (!result.previewable) { | `text` | Set `toolbar: false` to hide the renderer-local metadata bar and `lineNumbers: true` for a copy-safe gutter. `wrapLongLines: true` visually wraps logical lines without changing source bytes and also applies to the bounded large-text view. `prettyPrint: true` lazily formats supported structured text for display with Prettier; a badge and toolbar switch distinguish the formatted representation from the original source. `prettyPrintMaxBytes` limits only formatting and defaults to the effective `virtualizeAboveBytes` value (512 KiB when omitted). Oversized, malformed, or unsupported input falls back without error, after which the existing regular/virtual renderer remains authoritative. Markdown stays rendered by default; use `markdownVirtualizeAboveBytes` only for exceptionally large source inspection. The legacy `*-full` script-tag IIFE assets do not bundle Prettier, so `prettyPrint` falls back to the original source there. | | `ai` | Text chunk collection for vectorization, source tracing, source-aware highlighting, and audit workflows. It does not call a cloud model by itself. | | `archive` | Safe extraction limits, IndexedDB cache behavior, worker timeout, nested preview, and self-hosted libarchive paths. | -| `pdf`, `docx`, `spreadsheet`, `cad`, `typst`, `drawing`, `data` | Renderer-specific asset URLs and behavior knobs. | +| `pdf`, `docx`, `spreadsheet`, `cad`, `typst`, `drawing`, `data`, `ifc` | Renderer-specific asset URLs and behavior knobs. | | `cad.showImageExport` | Show the renderer-local PNG/JPEG buttons, default `true`. Hiding them does not change the shared original-file download button; download and HTML-export permission gates still apply. | | `presentation.workerUrl` | Optional explicit PPTX Worker URL. Otherwise the renderer discovers the standard copied asset manifest under the application asset base, then retains the package's development fallback. See [Angular integration](/guide/quickstart-web). | | `hooks` | Load start, load complete, unload start, unload complete, errors, and renderer context callbacks. | @@ -115,7 +115,7 @@ Every renderer below can be passed through `options.renderers`: | `@file-viewer/renderer-presentation` | `presentationRenderer` | Binary PPT through `@file-viewer/ppt`; PPTX/PPTM/POTX/POTM/PPSX/PPSM through `@file-viewer/pptx`; both load on demand | | `@file-viewer/renderer-ofd` | `ofdRenderer` | OFD | | `@file-viewer/renderer-cad` | `cadRenderer` | DWG, DXF, DWF, DWFx, XPS | -| `@file-viewer/renderer-3d` | `modelRenderer` | GLB, GLTF, OBJ, STL, PLY, FBX, DAE, USD; local OCCT preview for STEP/STP, IGES/IGS, and BREP; signature and integration guidance for IFC/3DM | +| `@file-viewer/renderer-3d` | `modelRenderer` | General 3D / OCCT; IFC additionally requires `@file-viewer/capability-ifc` and `@file-viewer/assets-ifc` | | `@file-viewer/renderer-drawing` | `drawingRenderer` | draw.io, Excalidraw, Mermaid, PlantUML | | `@file-viewer/renderer-mindmap` | `mindmapRenderer` | XMind | | `@file-viewer/renderer-geo` | `geoRenderer` | GeoJSON, KML, GPX, SHP | diff --git a/docs/public/llms-full.txt b/docs/public/llms-full.txt index 4ff65edb6..b74c3e8ec 100644 --- a/docs/public/llms-full.txt +++ b/docs/public/llms-full.txt @@ -6,7 +6,7 @@ File Viewer by Flyfish is a TypeScript file preview project for browser, offline - Version: 3.0.3 - Current published version: 3.0.3 -- Source matrix npm targets: 88 +- Source matrix npm targets: 90 - Registered extension mappings: 266 (224 stable, 42 experimental) - Preview pipelines: 45 - License: File Viewer-authored source and packages use Apache-2.0. Bundled third-party engines retain their own notices. diff --git a/docs/public/llms.txt b/docs/public/llms.txt index 9e7a62542..80e59697e 100644 --- a/docs/public/llms.txt +++ b/docs/public/llms.txt @@ -9,7 +9,7 @@ - Source: https://github.com/flyfish-dev/file-viewer - npm scope: https://www.npmjs.com/search?q=%40file-viewer -File Viewer is a browser-native, offline-first, self-hosted file preview project. The current source matrix maps 266 registered extensions (224 stable, 42 experimental) to 45 preview pipelines and contains 88 File Viewer npm targets. +File Viewer is a browser-native, offline-first, self-hosted file preview project. The current source matrix maps 266 registered extensions (224 stable, 42 experimental) to 45 preview pipelines and contains 90 File Viewer npm targets. ## Start Here diff --git a/docs/zh/guide/format-fidelity.md b/docs/zh/guide/format-fidelity.md index b4cd58d9d..69be7b1c5 100644 --- a/docs/zh/guide/format-fidelity.md +++ b/docs/zh/guide/format-fidelity.md @@ -47,6 +47,10 @@ | GDSII | `@file-viewer/eda-layout` 提供 GDSII record parser 和 WebGL draw batch,`@file-viewer/renderer-eda` 读取 library、structure、boundary、path、text、sref/aref 和坐标边界,小图输出 SVG,大元素集输出 WebGL canvas | 当前可作为 GDSII 版图快速预览;层控制、层级实例展开和 tile 增量加载继续在 `@file-viewer/eda-layout` 中演进 | | STEP / STP、IGES / IGS、BREP | `@file-viewer/geometry-engine` 在一次性 Worker 中加载本地 `occt-import-js` runtime 与 OpenCascade WASM,完成三角化后由 `@file-viewer/renderer-3d` 构建 Three.js 装配层级和网格 | 已具备浏览器本地完整网格预览、轨道控制、适配视图和统一缩放;Worker、runtime、WASM 与许可证文件随 viewer assets 离线分发 | +### IFC / BIM 显式按需能力 + +`@file-viewer/capability-ifc` 作为 `@file-viewer/renderer-3d` 的显式扩展,使用自托管 `web-ifc@0.0.77` 在浏览器本地解析原始 IFC,构建 Three.js BIM 场景,并提供旋转/平移/缩放、适配、元素选择、实体类型、`Name`、`GlobalId` 与属性集/工程量集检查。`web-ifc` 与 WASM 只存在于 `@file-viewer/assets-ifc`,不会进入普通 Engineering / Full 默认依赖闭包。 + ## 当前只能作为结构预览的格式 | 格式 | 现状 | 后续完整方案 | @@ -54,7 +58,7 @@ | OLB | `@file-viewer/eda-orcad` 提供 CFB/OLE2 检测、文本采样、字符串抽取和十六进制预览,`@file-viewer/renderer-eda` 负责结构树、属性和元件候选展示 | 参考 OpenOrCadParser 的 C++ 解析路线,后续通过 Emscripten/WASM 或逐步 TS 移植补齐符号图形 | | DRA | `@file-viewer/eda-orcad` 提供二进制检查基础能力,`@file-viewer/renderer-eda` 展示封装/padstack/图形候选和可读属性 | DRA/PSM/PAD 属于 Allegro 私有数据库生态,应先积累真实样本,再在独立 engine 包中维护 OrCAD/Allegro parser | | OAS/OASIS | `@file-viewer/eda-layout` 当前能解析项目内 OASIS 可读文本夹具并输出 SVG 预览;真实 SEMI 二进制 OASIS 仍做 header 检测、完整渲染边界声明、安全二进制索引、可读字符串、结构候选和诊断 | OASIS 需要低层 record parser、重复结构展开、压缩块处理和版图实例渲染,继续在 `@file-viewer/eda-layout` 内演进 | -| IFC / 3DM | `@file-viewer/renderer-3d` 保留入口,`@file-viewer/geometry-engine` 负责签名识别和明确的接入说明,当前不虚标为成功预览 | IFC 后续接入 `web-ifc` / That Open Fragments,3DM 后续接入 `rhino3dm` / Three.js loader,并继续在独立几何包内演进 | +| 3DM | 当前仍提供签名识别和接入边界;完整可视预览需要独立 `rhino3dm` renderer | 继续作为独立专业内核维护 | ## 当前落地策略 @@ -64,7 +68,7 @@ | OLB / DRA / PSM | Cadence 格式没有稳定官方 Web SDK;公开可用路线主要是 OpenOrCadParser / OpenAllegroParser 这类 C++ 解析器,后续可以 Emscripten/WASM 化或按样本逐步 TS 移植 | 当前只声明为结构预览,不虚标完整图形;底层能力已拆到 `@file-viewer/eda-orcad`,后续像 PPTX 一样长期维护 | | GDSII / OASIS | GDSII 已可按 record parser 生成 SVG/WebGL;OASIS 是 SEMI 二进制版图格式,支持压缩块、重复结构和更复杂索引,完整渲染更适合参考 KLayout/KWeb 或自研 WebGL/WASM pipeline | GDSII 当前提供 SVG 快速预览和大元素集 WebGL canvas;OASIS 可读文本夹具已可生成 SVG,真实二进制 OASIS 继续结构索引,底层能力已拆到 `@file-viewer/eda-layout`,后续做 WASM/增量渲染 | | STEP / STP、IGES / IGS、BREP | OpenCascade / OCCT WASM 在浏览器内解析 B-Rep 并输出 Three.js 可用网格 | `@file-viewer/geometry-engine` 已接入本地 OCCT Worker、runtime 和 WASM;`@file-viewer/renderer-3d` 保留装配层级、实例、法线和面颜色,并注册统一缩放 provider;重型内核不进入 core 默认路径 | -| IFC / 3DM | IFC 走 `web-ifc` / That Open 生态,3DM 走 `rhino3dm` + Three.js Rhino3dmLoader | 当前只维护格式签名和接入提示,后续在独立几何包中实现,不影响已经落地的 OCCT 预览链路 | +| 3DM | 当前仍提供签名识别和接入边界;完整可视预览需要独立 `rhino3dm` renderer | 继续作为独立专业内核维护 | | Draw.io / Excalidraw / Mermaid / PlantUML | Draw.io 最佳链路是自托管 diagrams.net offline viewer;Excalidraw 默认使用 rough.js 只读 SVG,运行环境提供官方 ESM 模块时尝试官方 restore/export;Mermaid 使用官方 SVG renderer;PlantUML 默认离线预览源码,可选接入自托管 SVG 服务 | 已拆成 `@file-viewer/renderer-drawing` 独立维护,继续离线 vendor 分发;PlantUML 完整图形渲染推荐企业内网自托管服务端点 | | Presentation / PPT / PPTX | 二进制 PPT 与 OOXML 演示文稿都适合独立 engine + renderer 双层维护,避免 core 被解析器、主题和媒体链路拖重 | `@file-viewer/renderer-presentation` 暴露标准 renderer 插件,`.ppt` 使用独立版本且保留包内许可证的 `@file-viewer/ppt@0.3.4`,OpenXML 文件使用 `@file-viewer/pptx` Worker;Full/CDN 分别交付两条链路的匹配资产 | | GeoJSON / KML / GPX / SHP | KML/GPX 有稳定 toGeoJSON 转换路线,Shapefile 可用纯 JS 解析到 GeoJSON,MapLibre 可承接离线矢量叠加层 | 已拆 `@file-viewer/renderer-geo` 并从 core 直接依赖中移除转换和地图库;当前补齐 CRS 归一化、MapLibre 叠加层、SVG fallback 和解析 harness,后续继续补海量要素抽稀和真实公开样本 | diff --git a/docs/zh/guide/formats.md b/docs/zh/guide/formats.md index d447a6862..8a2d3212c 100644 --- a/docs/zh/guide/formats.md +++ b/docs/zh/guide/formats.md @@ -60,11 +60,12 @@ | 压缩包 | `zip`、`zipx`、`7z`、`rar`、`tar`、`gz`、`gzip`、`tgz`、`bz2`、`bzip2`、`tbz`、`tbz2`、`xz`、`txz`、`lzma`、`zst`、`cab`、`ar`、`cpio`、`iso`、`xar`、`lha`、`lzh`、`jar`、`war`、`ear`、`apk`、`cbz`、`cbr` | `@file-viewer/renderer-archive` + `libarchive.js` WASM Worker | 先读取目录,点击文件后按需解压;内部文件继续复用统一预览器,并支持 IndexedDB 缓存、GBK/GB18030 旧 ZIP 中文文件名、体积上限和 ZIP/TAR/GZIP 兼容降级 | 归档附件、批量交付包、压缩包内文档快速查看 | | 邮件 | `eml`、`msg`、`mbox` | `@file-viewer/renderer-email` + `postal-mime` / `@kenjiuno/msgreader` | 展示头信息、HTML/文本正文、附件列表;MBOX 会解析首封邮件并标注识别数量;附件可下载,也可继续在线预览 | 邮件归档、客服工单、客户来信附件 | | 医疗影像(显式按需) | `dcm`、`dicom` | `@file-viewer/renderer-dicom` + 本地 Cornerstone 解码链 | 仅处理一个有界本地 DICOM Part 10 文件,支持单帧/多帧、缩放、旋转和窗宽窗位;不包含 PACS/DICOMweb、序列组装、MPR、分割或诊断用途声明 | 非诊断性的医疗附件快速审阅 | +| IFC / BIM(显式按需) | `ifc` | `@file-viewer/capability-ifc` + `@file-viewer/renderer-3d` + `@file-viewer/assets-ifc` | 浏览器本地 `web-ifc` 解析、Three.js 交互、元素选择、实体类型 / `Name` / `GlobalId` 与属性集检查;不进入 Engineering / Full 默认闭包 | BIM 附件快速审阅 | | 数字签名与证据容器(显式按需) | `p7m`、`p7s`、`p7b`、`p7c`、`pkcs7`、`cms`、`cmsc`、`tsq`、`tsr`、`tst`、`tsd`、`asics`、`scs`、`asice`、`sce`、`ers`、`asc`、`sig`、`pgp`、`gpg`、`jws` | `@file-viewer/renderer-signature` + 有界 Worker/WASM | 本地检查 CMS/CAdES、RFC 3161/5544、ASiC、RFC 4998、JWS 与公开 OpenPGP 材料;密码学结果不等于证书信任、政策合规或法律效力,不接收私钥和自动解密 | 签名附件、时间戳与证据容器初筛 | | EDA | `olb`、`dra`、`gds`、`oas`、`oasis` | `@file-viewer/renderer-eda` + `cfb` 容器解析 + GDSII/OASIS 版图解析 + WebGL 批次 | 独立 EDA renderer 优先解析 OrCAD / Allegro 常见 CFB 容器;标准 GDSII 会读取 structure、boundary、path、text、reference 并生成 SVG 版图预览,元素较多时自动切到 WebGL canvas;OAS/OASIS 可读文本版图夹具会生成 SVG 预览,真实 SEMI 二进制 OASIS 当前做安全结构索引、可读字符串、实体候选和诊断;完整 OLB/DRA/OASIS 可视化路线见 [格式完整度](/zh/guide/format-fidelity) | 元件库、封装图纸、芯片版图文件初筛 | | CAD | `dwg`、`dxf`、`dwf`、`dwfx`、`xps` | `@flyfish-dev/cad-viewer` | DWG 通过 Worker + LibreDWG WASM 解析;DXF 使用 JS parser;DWF/DWFx/XPS 使用 native `dwf-viewer` 渲染 W2D/W3D/XPS 图形,并支持 WebGL / WASM fallback | 工程图纸、二维 CAD 附件、AutoCAD 归档文件 | | 地理数据 | `geojson`、`kml`、`gpx`、`shp` | `@file-viewer/renderer-geo` + GeoJSON 标准化 + CRS 归一化 + MapLibre 矢量叠加层 | GeoJSON 直接读取,KML/GPX 使用 `@tmcw/togeojson` 转换,SHP 使用 `shpjs`;默认离线空底图,可通过 `options.geo.tileUrl` / `options.geo.basemap` 启用公网、内网或离线自托管瓦片;支持 Web Mercator 推断、`options.geo.projection` 和 SVG fallback | 地理附件、轨迹、边界、点位和轻量 GIS 数据 | -| 3D 模型 | `glb`、`gltf`、`obj`、`stl`、`ply`、`fbx`、`dae`、`3ds`、`3mf`、`amf`、`usd`、`usda`、`usdc`、`usdz`、`kmz`、`pcd`、`wrl`、`vrml`、`xyz`、`vtk`、`vtp`、`step`、`stp`、`iges`、`igs`、`brep`、`ifc`、`3dm` | `@file-viewer/renderer-3d` + Three.js loaders + `@file-viewer/geometry-engine` / `occt-import-js` | WebGL 交互预览,支持轨道控制、适配视图、网格/坐标轴、线框、自动旋转和统一缩放;STEP/STP、IGES/IGS、BREP 在本地 OCCT Worker/WASM 中解析,IFC/3DM 当前提供签名识别和接入提示 | 设计模型、点云、三维资产、工程模型 | +| 3D 模型 | `glb`、`gltf`、`obj`、`stl`、`ply`、`fbx`、`dae`、`3ds`、`3mf`、`amf`、`usd`、`usda`、`usdc`、`usdz`、`kmz`、`pcd`、`wrl`、`vrml`、`xyz`、`vtk`、`vtp`、`step`、`stp`、`iges`、`igs`、`brep`、`3dm` | `@file-viewer/renderer-3d` + Three.js loaders + `@file-viewer/geometry-engine` / `occt-import-js` | WebGL 交互预览,支持轨道控制、适配视图、网格/坐标轴、线框、自动旋转和统一缩放;STEP/STP、IGES/IGS、BREP 在本地 OCCT Worker/WASM 中解析,3DM 当前提供签名识别和接入提示;IFC 由显式 `@file-viewer/capability-ifc` + `@file-viewer/assets-ifc` 提供本地 web-ifc 可视预览 | 设计模型、点云、三维资产、工程模型 | | XMind 脑图 | `xmind` | `@file-viewer/renderer-mindmap` + `@ljheee/xmind-parser` + `@panzoom/panzoom` | 支持 XMind 8 XML 与 XMind 2020+ JSON 包结构,展示多 sheet、节点树、标签、备注、超链接、标记、图片、目录侧栏,并通过成熟 Panzoom 画布提供拖拽平移、移动端双指缩放、Ctrl/Command 滚轮锚点缩放、键盘平移、统一 toolbar 状态同步、适配画布、搜索、打印和 HTML 导出 | 脑图、规划图、知识结构、会议纪要 | | Excalidraw | `excalidraw` | `@file-viewer/renderer-drawing` + `roughjs` | 独立绘图 renderer 默认输出稳定只读 SVG;运行环境已提供官方 `@excalidraw/excalidraw` ESM 模块时会优先尝试 `restore` + `exportToSvg`,不可用时使用 rough.js 安全兜底 | 白板草图、产品沟通图、流程草稿 | | draw.io | `drawio`、`dio` | `@file-viewer/renderer-drawing` 内置 SVG;官方 diagrams.net `GraphViewer` 为显式可选能力 | 默认不执行文档 HTML;设置 `options.drawing.preferOfficial = true` 后,单独分发的 `vendor/drawio/viewer-static.min.js` 在受限 iframe 中按需加载,资源固定到本地目录,失败时回退安全 SVG | 流程图、架构图、业务泳道图 | @@ -175,7 +176,7 @@ - `glb` / `gltf` 是最推荐的 Web 3D 交换格式;`obj`、`stl`、`ply` 适合轻量几何和打印模型;`fbx`、`dae`、`3ds`、`3mf`、`amf`、`usd` / `usdz`、`kmz` 适合兼容设计工具导出的历史或工程资产。 - `pcd`、`xyz`、`vtk`、`vtp` 会按点云或几何模型展示,适合扫描、仿真和工程数据的快速浏览。 - `step` / `stp`、`iges` / `igs`、`brep` 已通过 `@file-viewer/geometry-engine` 接入本地 `occt-import-js` / OpenCascade Worker/WASM,能够解析装配层级、实例、法线和面颜色并生成 Three.js 网格,不需要服务端转换。 -- OCCT Worker、runtime、WASM 和许可证文件随 viewer assets 离线分发;子路径或独立资产域名可用 `options.model.workerUrl`、`options.model.runtimeUrl`、`options.model.wasmUrl` 覆盖。`ifc` 与 `3dm` 当前仍只展示签名识别和明确接入说明,后续分别沿 `web-ifc` / That Open 与 `rhino3dm` 路线独立维护。 +- `ifc` 通过显式安装的 `@file-viewer/capability-ifc` + `@file-viewer/assets-ifc` 在浏览器本地解析并构建 Three.js BIM 场景,支持旋转/平移/缩放、适配、元素选择与属性检查;`3dm` 仍只展示签名识别和明确接入说明,后续沿 `rhino3dm` 路线独立维护。 - 如果 `.gltf`、`.dae`、`.fbx` 依赖同目录贴图、材质或 `.bin` 文件,使用 `url` 远程预览时会以原始 URL 的目录作为资源基准继续加载;使用本地单文件上传时,请优先选择 `.glb` 或把资源内联。 ### 绘图文件 diff --git a/docs/zh/guide/ifc.md b/docs/zh/guide/ifc.md new file mode 100644 index 000000000..2e633bafa --- /dev/null +++ b/docs/zh/guide/ifc.md @@ -0,0 +1,189 @@ +# IFC / BIM 显式按需能力 + +
本地 BIM 预览,显式安装
+ +

+ IFC 是叠加在普通 3D renderer 之上的专业 capability。它不会进入 Engineering / Full 默认依赖闭包,在浏览器本地处理原始 IFC,并可在直接 web-ifc 路径与 Worker 驱动的 That Open Fragments 路径之间切换。 +

+ +## 安装 + +```bash +npm install @file-viewer/renderer-3d @file-viewer/capability-ifc @file-viewer/assets-ifc +``` + +```ts +import { modelRenderer } from '@file-viewer/renderer-3d' +import '@file-viewer/capability-ifc' + +const options = { + rendererMode: 'extend', + renderers: [modelRenderer], +} +``` + +`@file-viewer/preset-engineering`、`@file-viewer/preset-all` 与 Full 兼容包不会自动激活本 capability。CLI 项目可以显式选择: + +```bash +npx file-viewer-cli config add ifc --write +npx file-viewer-cli install --yes +``` + +同版本的 `@file-viewer/assets-ifc` 必须发布到正常 File Viewer 资产根目录。运行时没有公共 CDN fallback。 + +## Backend 选择 + +```ts +const options = { + ifc: { + backend: 'auto', // 'auto' | 'web-ifc' | 'thatopen' + }, +} +``` + +`auto` 是正常产品路径: + +- 较小 IFC 继续使用直接 `web-ifc` + Three.js; +- 达到 16 MiB 默认阈值后优先使用 That Open Components + Fragments; +- 一旦提供 `ifc.thatOpen`,`auto` 也会选择 That Open,因为调用方已经明确要求配置其底层库; +- 需要确定性时可强制 `web-ifc` 或 `thatopen`。 + +16 MiB 只是路由启发式规则,并不代表所有小于该值的 IFC 都轻量,也不代表所有大于该值的模型都一定昂贵。业务应根据真实模型调整阈值。 + +## 大 IFC 文件 + +```ts +const options = { + ifc: { + performance: { + largeModelThresholdBytes: 24 * 1024 * 1024, + // 可选产品/安全策略;File Viewer 默认没有固定硬上限。 + maxSourceBytes: 750 * 1024 * 1024, + }, + }, +} +``` + +大模型优先走 Fragments,因为它使用独立 Worker 并维护 culling / LOD 表示。File Viewer 不会为了显示一个工具栏计数,在大文件打开阶段就枚举全部几何元素 ID;元素数据和属性继续按选择事件读取。 + +这能改善交互和内存行为,但不会让源 IFC 解析变成零成本:浏览器仍要接收原始 IFC 字节并完成 Fragments 转换。`maxSourceBytes` 让有明确设备上限的部署可以在分配 parser 状态之前拒绝超大源文件。 + +## Extensibility 合约 + +稳定的 Flyfish 层保持尽量小:`backend`、适配视图、选择、属性、资产 URL、性能策略与 `configure(context)`。 + +That Open 的更新频率高于 File Viewer 公共 API。如果把每个 That Open 参数复制成 Flyfish 字段,File Viewer 会不断追逐第三方字段变化。因此 IFC capability 提供明确的 opaque bridge。 + +### Components 原样透传 + +`ifc.thatOpen.components` 会在 File Viewer 设置完自托管 / offline-safe 默认值后,作为对象直接传给 `@thatopen/components` 的 `IfcLoader.setup(...)`。 + +```ts +const options = { + ifc: { + thatOpen: { + components: { + autoSetWasm: false, + webIfc: { + CIRCLE_SEGMENTS: 7, + }, + }, + }, + }, +} +``` + +Flyfish 不翻译这个对象里的单个 key。未知 / 新增 key 的行为直接由固定版本的 That Open 决定。 + +### Fragments 原样透传 + +`ifc.thatOpen.fragments` 的 key 直接写入 `FragmentsManager.core.settings`: + +```ts +const options = { + ifc: { + thatOpen: { + fragments: { + maxUpdateRate: 73, + }, + }, + }, +} +``` + +这里故意使用开放字典,因此 Fragments 新增 setting 后,不必等待 File Viewer 增加对应类型字段。 + +### Importer 原样透传 + +`ifc.thatOpen.importer` 直接传给 Fragments IFC importer 的 processing options: + +```ts +const options = { + ifc: { + thatOpen: { + importer: { + // 直接放当前 @thatopen/fragments IfcImporter 支持的 process 参数。 + }, + }, + }, +} +``` + +### 命令式 escape hatch + +并非所有第三方 API 都能用 JSON 表达,因此还会直接暴露底层运行时对象: + +```ts +const options = { + ifc: { + thatOpen: { + configureImporter({ importer, modules, components, fragments, loader, world }) { + // importer.process(...) 前执行 + }, + async configure({ modules, components, fragments, loader, importer, world, model }) { + // Fragments model ready 后执行 + }, + }, + + async configure(context) { + // 两个 backend 共用的稳定 Flyfish context + console.log(context.fileSizeBytes, context.largeModel) + // 仅 That Open backend 存在 + console.log(context.thatOpen) + }, + }, +} +``` + +Flyfish 边界故意把 raw runtime 对象类型保持为 `unknown`。高级业务可以根据自己安装的 `@thatopen/components` / `@thatopen/fragments` 精确版本自行 cast。这样不会把第三方实现类型冻结进 core 公共合约。 + +## 自托管资产 + +`@file-viewer/assets-ifc` 固定并发布: + +```text +web-ifc.wasm +web-ifc-mt.wasm +fragments-worker.mjs +LICENSE.web-ifc-MPL-2.0.md +LICENSE.thatopen-fragments-MIT.txt +``` + +自定义目录可覆盖 `ifc.apiUrl`、`ifc.wasmUrl`、`ifc.wasmMtUrl`、`ifc.thatOpen.workerUrl`。 + +## 当前范围 + +本 capability 面向审阅 / inspection: + +- 浏览器本地打开 IFC; +- 旋转 / 平移 / 缩放与 fit-to-model; +- 元素选择; +- 实体身份、`Name`、`GlobalId` 与有界属性读取; +- lifecycle cleanup 与 abort; +- 通过上面的 bridge 进行 backend-specific 高级自定义。 + +BIM 编辑、碰撞检测、BCF、工程量计算、剖切和测量仍不在初始范围。 + +## 回归覆盖 + +`test/fixtures/ifc/` 提交了两个未经修改的 buildingSMART IFC4 Simple-Scene 文件,并保留 CC BY 4.0 归属 / 许可与 SHA-256。`test/ifc-optional-capability.spec.ts` 检查可选依赖边界、许可 notice、backend 路由、源文件硬限制和 opaque pass-through 合约。永久 IFC Validation workflow 还会在 Chromium 中从自托管资产打开真实 fixture,并分别执行直接 web-ifc 与 That Open 路径。 diff --git a/docs/zh/guide/on-demand-renderers.md b/docs/zh/guide/on-demand-renderers.md index db30c7dfe..17c0b76f0 100644 --- a/docs/zh/guide/on-demand-renderers.md +++ b/docs/zh/guide/on-demand-renderers.md @@ -65,12 +65,13 @@ ## 可选专业 renderer -Adobe 设计、DICOM 与数字签名检查都是显式可选能力,不属于八个已发布 `@file-viewer/*-full` 包或冻结的 `@file-viewer/preset-all` 兼容基线。这样普通升级不会额外引入专业 Worker/WASM、医学影像或密码学重依赖,也不会改变 Full 包已经发布的能力边界。 +Adobe 设计、DICOM、数字签名检查与 IFC / BIM 都是显式可选能力,不属于八个已发布 `@file-viewer/*-full` 包或冻结的 `@file-viewer/preset-all` 兼容基线。这样普通升级不会额外引入专业 Worker/WASM、医学影像或密码学重依赖,也不会改变 Full 包已经发布的能力边界。 | 可选 renderer | 格式 | 直接安装 | CLI 选择 | 能力边界 | | --- | --- | --- | --- | --- | | **Adobe 设计** (`@file-viewer/renderer-design`) | `.psd`、`.psb`、`.pdd`、`.psdt`、`.ai`、`.ait`、`.eps`、`.ps`、`.idml`、`.icml`、`.idms`、`.inx`、`.xd`、`.indd`、`.indt`、`.fla`、`.xfl`、`.ase`、`.aco`、`.abr`、`.csh`、`.pat`、`.grd`、`.asl` | `npm install @file-viewer/renderer-design` | `npx file-viewer-cli config add psd --write` | 在浏览器本地通过 Worker/WASM 预览 Photoshop 保存像素与受支持图层;Illustrator 高还原 PDF-compatible 表面以及可切换的 `illustrator-pgf` 原生 PGF 画板、图层、路径;IDML/exchange 结构、XD/INDD 嵌入预览、现代 XFL、色板、Photoshop 资源和 PostScript;未知操作符与原生语义边界会明确显示。 | | **DICOM** (`@file-viewer/renderer-dicom`) | `.dcm`、`.dicom` | `npm install @file-viewer/renderer-dicom` | `npx file-viewer-cli config add dicom --write` | 预览一个本地 DICOM Part 10 文件,支持多帧导航、窗宽/窗位、缩放、拖动、旋转、适配视图和基础元数据;不负责 study 组装、PACS/DICOMweb、MPR、分割或诊断。 | +| **IFC / BIM** (`@file-viewer/capability-ifc`) | `.ifc` | `npm install @file-viewer/capability-ifc @file-viewer/assets-ifc` | `npx file-viewer-cli config add ifc --write` | 浏览器本地 `web-ifc` 解析、旋转/平移/缩放、适配模型、元素选择、`Name` / `GlobalId` 与属性集/工程量集检查;不包含 BIM 编辑、碰撞、BCF、工程量计算、剖切或测量。 | | **数字签名** (`@file-viewer/renderer-signature`) | `.p7m`、`.p7s`、`.p7c`、`.p7b`、`.pkcs7`、`.cms`、`.cmsc`、`.tsd`、`.tst`、`.tsq`、`.tsr`、`.asics`、`.scs`、`.asice`、`.sce`、`.ers`、`.asc`、`.sig`、`.pgp`、`.gpg`、`.jws` | `npm install @file-viewer/renderer-signature` | `npx file-viewer-cli config add p7m --write` | 在浏览器本地做有界容器检查,并分开报告解析、摘要、签名和时间戳结果。 | ### 已经使用 Full 包时 @@ -80,13 +81,14 @@ Adobe 设计、DICOM 与数字签名检查都是显式可选能力,不属于 保留现有 Full 包,只安装业务真正需要的专业 renderer。下面示例同时启用三个当前可选能力;不需要某项时,删除对应安装、import 和数组成员即可: ```bash -npm install @file-viewer/renderer-design @file-viewer/renderer-dicom @file-viewer/renderer-signature +npm install @file-viewer/renderer-design @file-viewer/renderer-dicom @file-viewer/renderer-signature @file-viewer/capability-ifc @file-viewer/assets-ifc ``` ```ts import { designRenderer } from '@file-viewer/renderer-design' import { dicomRenderer } from '@file-viewer/renderer-dicom' import { signatureRenderer } from '@file-viewer/renderer-signature' +import '@file-viewer/capability-ifc' const options = { rendererMode: 'extend', @@ -113,7 +115,7 @@ npx file-viewer-cli install --yes 直接安装 Full 包与选择 CLI `full` profile 是两个有意区分的入口:Full 包保持已发布的 `preset-all` 兼容基线;CLI `full` 保留对应 Full 包,默认只追加既有 DICOM/签名能力。Adobe 设计只有在 `config add`、`--formats` 或 `--capabilities` 明确选择后才加入,并先展示体积与许可证边界。 -预构建 `web-full` IIFE 只包含已发布的 Full renderer 集合,不内置 Adobe 设计、DICOM 与数字签名 renderer。需要这些能力时,应使用包管理项目或 CLI 生成集成;把可选包复制到 IIFE 旁边并不会完成注册。 +预构建 `web-full` IIFE 只包含已发布的 Full renderer 集合,不内置 Adobe 设计、DICOM、数字签名 renderer 或 IFC capability/runtime。需要这些能力时,应使用包管理项目或 CLI 生成集成;把可选包复制到 IIFE 旁边并不会完成注册。 数字签名 renderer 可以把安全提取出的 PDF、XML、图片、Office 等内容交回普通嵌套预览链路,因此需要同时保留对应 renderer。密码学验证结果不等于证书或密钥可信,也不能判定合格签名、政策合规或法律效力。 @@ -297,7 +299,7 @@ const options = { | `@file-viewer/renderer-presentation` | `presentationRenderer` | 二进制 `.ppt` 使用 `@file-viewer/ppt`;OpenXML 演示文稿使用 `@file-viewer/pptx` | | `@file-viewer/renderer-ofd` | `ofdRenderer` | OFD | | `@file-viewer/renderer-cad` | `cadRenderer` | DWG、DXF、DWF、DWFx、XPS | -| `@file-viewer/renderer-3d` | `modelRenderer` | 3D 模型和轻量几何签名 | +| `@file-viewer/renderer-3d` | `modelRenderer` | 通用 3D、OCCT 工程网格以及显式 IFC capability 钩子 | | `@file-viewer/renderer-design` | `designRenderer` | PSD/PSB/PDD/PSDT、AI/AIT、EPS/PS、IDML/ICML/IDMS/INX、XD、INDD/INDT、现代 FLA/XFL、ASE/ACO 与 ABR/CSH/PAT/GRD/ASL | | `@file-viewer/renderer-dicom` | `dicomRenderer` | 在标准 Viewer 入口中选择启用的本地 DICOM Part 10 单文件与多帧预览 | | `@file-viewer/renderer-signature` | `signatureRenderer` | 在标准 Viewer 入口中选择启用的 CMS/CAdES、时间戳、ASiC、证据记录、JWS 与公开 OpenPGP 检查 | diff --git a/docs/zh/guide/usage.md b/docs/zh/guide/usage.md index 8d275d585..214496b99 100644 --- a/docs/zh/guide/usage.md +++ b/docs/zh/guide/usage.md @@ -304,7 +304,7 @@ const options = { | `@file-viewer/renderer-presentation` | `presentationRenderer` | 二进制 PPT 按需使用 `@file-viewer/ppt`;PPTX/PPTM/POTX/POTM/PPSX/PPSM 按需使用 `@file-viewer/pptx` | | `@file-viewer/renderer-ofd` | `ofdRenderer` | OFD | | `@file-viewer/renderer-cad` | `cadRenderer` | DWG/DXF/DWF/DWFx/XPS 等 CAD | -| `@file-viewer/renderer-3d` | `modelRenderer` | GLB/GLTF/OBJ/STL/PLY/FBX/DAE/USD 等模型;STEP/STP、IGES/IGS、BREP 本地 OCCT 预览;IFC/3DM 几何签名与接入提示 | +| `@file-viewer/renderer-3d` | `modelRenderer` | 通用 3D / OCCT;IFC 需要额外导入 `@file-viewer/capability-ifc` 并部署 `@file-viewer/assets-ifc` | | `@file-viewer/renderer-drawing` | `drawingRenderer` | draw.io、Excalidraw、Mermaid、PlantUML | | `@file-viewer/renderer-mindmap` | `mindmapRenderer` | XMind | | `@file-viewer/renderer-geo` | `geoRenderer` | GeoJSON、KML、GPX、SHP | diff --git a/ecosystem/wrappers.json b/ecosystem/wrappers.json index 1d0e03b36..00f92ef30 100644 --- a/ecosystem/wrappers.json +++ b/ecosystem/wrappers.json @@ -57,6 +57,16 @@ "gitee": "https://gitee.com/flyfish-dev/file-viewer", "publicSource": true }, + { + "id": "assets-ifc", + "packageName": "@file-viewer/assets-ifc", + "releaseVersion": "3.0.3", + "description": "Independent opt-in web-ifc browser API/WASM asset pack for IFC/BIM preview.", + "packageDir": "packages/tools/assets-ifc", + "github": "https://github.com/flyfish-dev/file-viewer", + "gitee": "https://gitee.com/flyfish-dev/file-viewer", + "publicSource": true + }, { "id": "assets-drawing", "packageName": "@file-viewer/assets-drawing", @@ -231,6 +241,16 @@ "gitee": "https://gitee.com/flyfish-dev/file-viewer", "publicSource": true }, + { + "id": "capability-ifc", + "packageName": "@file-viewer/capability-ifc", + "releaseVersion": "3.0.3", + "description": "Explicit opt-in IFC/BIM preview capability for the 3D renderer.", + "packageDir": "packages/capabilities/ifc", + "github": "https://github.com/flyfish-dev/file-viewer", + "gitee": "https://gitee.com/flyfish-dev/file-viewer", + "publicSource": true + }, { "id": "capability-streaming-media", "packageName": "@file-viewer/capability-streaming-media", diff --git a/packages/capabilities/ifc/README.en.md b/packages/capabilities/ifc/README.en.md new file mode 100644 index 000000000..97a05c444 --- /dev/null +++ b/packages/capabilities/ifc/README.en.md @@ -0,0 +1,83 @@ +# @file-viewer/capability-ifc + +Explicit opt-in IFC/BIM capability for `@file-viewer/renderer-3d`. Importing this package enables the lazy IFC adapter; applications that do not install/import it keep `web-ifc`, That Open Components/Fragments, and their WASM/worker runtime outside their dependency and asset closure. + +```bash +npm install @file-viewer/renderer-3d @file-viewer/capability-ifc @file-viewer/assets-ifc +``` + +```ts +import { modelRenderer } from '@file-viewer/renderer-3d' +import '@file-viewer/capability-ifc' + +const options = { + rendererMode: 'extend', + renderers: [modelRenderer], + ifc: { + fitToModel: true, + enableSelection: true, + showProperties: true, + }, +} +``` + +Publish the matching `@file-viewer/assets-ifc` files under the normal File Viewer asset root. The pack contains the pinned `web-ifc` WASM binaries and the matching self-hosted That Open Fragments worker. Advanced custom `IfcLoader.setup(...)` values can be supplied through `ifc.thatOpen.components`; `ifc.thatOpen.workerUrl` overrides the worker path. File Viewer has no public-CDN fallback. + +## One That Open pipeline and large IFC strategy + +All IFC files use That Open Components + Fragments. `web-ifc` remains the parser/WASM engine owned by `IfcLoader`; it is not exposed as a second Flyfish rendering backend. `ifc.performance.largeModelThresholdBytes` only changes large-model policy such as avoiding eager toolbar statistics, while `maxSourceBytes` is an optional pre-initialization ceiling. + +## Extensibility: opaque That Open bridge + +File Viewer intentionally does **not** mirror every That Open option into a Flyfish-specific schema. The `thatOpen` object is the compatibility hole for advanced consumers: + +```ts +const options = { + ifc: { + thatOpen: { + // 1:1 object forwarded to @thatopen/components IfcLoader.setup(...) + components: { + autoSetWasm: false, + webIfc: { + CIRCLE_SEGMENTS: 7, + }, + }, + + // 1:1 keys copied to FragmentsManager.core.settings + fragments: { + maxUpdateRate: 73, + }, + + // 1:1 object forwarded to the Fragments IfcImporter process options + importer: { + // Put supported @thatopen/fragments importer keys here. + }, + + // Imperative escape hatch before importer.process(...) + configureImporter({ importer, modules }) { + // Cast to the exact That Open version used by your app when needed. + }, + + // Raw runtime objects after the model is ready. + async configure({ components, world, fragments, loader, importer, model, modules }) { + // No Flyfish wrapper is inserted between you and That Open here. + }, + }, + + // Stable Flyfish-level hook. + async configure(context) { + console.log(context.largeModel, context.thatOpen.webIfc) + }, + }, +} +``` + +The pass-through objects are deliberately typed as an open dictionary and are not key-translated or version-normalized by Flyfish. That means newly introduced That Open options can be used without waiting for File Viewer to add matching fields. The trade-off is intentional: values inside this escape hatch follow the pinned That Open APIs, while the outer Flyfish options remain the stable contract. + +The capability provides browser-local IFC parsing, orbit/pan/zoom, fit-to-model, element picking, `Name` / `GlobalId` / entity inspection, bounded property display, cleanup, and the stable `ifc.configure(context)` hook. BIM authoring, editing, clash detection, BCF, takeoff, sectioning, and measurement remain out of scope. + +## Regression fixtures + +The repository commits two buildingSMART IFC4 Simple-Scene fixtures under `test/fixtures/ifc/`: `Building-Architecture.ifc` and `Building-Structural.ifc`. Their upstream CC BY 4.0 license, attribution, source path, and SHA-256 checksums are committed beside the files. The permanent IFC validation workflow renders both fixtures in Chromium from the self-hosted runtime; it exercises both normal and forced-large classifications through the same That Open/Fragments runtime. + +`web-ifc@0.0.77` is MPL-2.0. `@thatopen/components@3.4.8` and `@thatopen/fragments@3.4.7` are MIT-licensed. The separate asset pack preserves the runtime notices for the files it redistributes; the File Viewer capability wrapper remains Apache-2.0. diff --git a/packages/capabilities/ifc/README.md b/packages/capabilities/ifc/README.md new file mode 100644 index 000000000..e62210989 --- /dev/null +++ b/packages/capabilities/ifc/README.md @@ -0,0 +1,103 @@ +# @file-viewer/capability-ifc + +`@file-viewer/renderer-3d` 的显式按需 IFC / BIM capability。只有安装并导入本包时才启用 IFC 路径;普通 3D、Engineering preset 和 Full 基线不会因此携带 `web-ifc`、That Open Components/Fragments 或对应的 WASM / Worker。 + +```bash +npm install @file-viewer/renderer-3d @file-viewer/capability-ifc @file-viewer/assets-ifc +``` + +```ts +import { modelRenderer } from '@file-viewer/renderer-3d' +import '@file-viewer/capability-ifc' + +const options = { + rendererMode: 'extend', + renderers: [modelRenderer], + ifc: { + fitToModel: true, + enableSelection: true, + showProperties: true, + }, +} +``` + +把同版本的 `@file-viewer/assets-ifc` 发布到 File Viewer 资产根目录。该资产包包含固定版本的 `web-ifc` 浏览器 ESM/WASM,以及匹配版本的 That Open Fragments 自托管 Worker。也可以覆盖 `ifc.apiUrl`、`ifc.wasmUrl`、`ifc.wasmMtUrl`、`ifc.thatOpen.workerUrl`;运行时没有公共 CDN fallback。 + +## Backend 与大 IFC 策略 + +`ifc.backend` 支持 `auto`、`web-ifc`、`thatopen`。 + +- `auto` 为默认值。小 IFC 继续走直接 `web-ifc` + Three.js;文件达到 `ifc.performance.largeModelThresholdBytes`(默认 16 MiB)后优先走 Worker 驱动的 That Open Fragments。 +- `web-ifc` 强制使用直接 renderer,适合需要确定性兼容行为的业务。 +- `thatopen` 强制使用 That Open Components + Fragments。 + +大文件走 Fragments 时,渲染 / culling / LOD 由 Fragments Worker 负责,并且不会为了工具栏统计在打开时就枚举全部元素 ID;属性继续按选择事件读取。`ifc.performance.maxSourceBytes` 是可选的业务硬限制,File Viewer 默认不设置固定最大文件大小。 + +```ts +const options = { + ifc: { + backend: 'auto', + performance: { + largeModelThresholdBytes: 24 * 1024 * 1024, + // maxSourceBytes: 750 * 1024 * 1024, // 可选业务策略 + preferFragmentsForLargeModels: true, + }, + }, +} +``` + +## Extensibility:That Open 原样透传桥 + +File Viewer **不会**把 That Open 的每个参数重新复制成一套 Flyfish schema。`thatOpen` 就是给高级用户保留的兼容“开口”: + +```ts +const options = { + ifc: { + backend: 'thatopen', + thatOpen: { + // 1:1 原对象传给 @thatopen/components IfcLoader.setup(...) + components: { + autoSetWasm: false, + webIfc: { + CIRCLE_SEGMENTS: 7, + }, + }, + + // 1:1 key 写入 FragmentsManager.core.settings + fragments: { + maxUpdateRate: 73, + }, + + // 1:1 对象传给 Fragments IfcImporter 的 process 配置 + importer: { + // 直接放当前 @thatopen/fragments 支持的 importer 参数 + }, + + // importer.process(...) 之前的命令式 escape hatch + configureImporter({ importer, modules }) { + // 需要时按业务项目使用的 That Open 类型自行 cast + }, + + // 模型 ready 后直接暴露底层运行时对象 + async configure({ components, world, fragments, loader, importer, model, modules }) { + // 这里 Flyfish 不再增加一层 wrapper + }, + }, + + // 与具体 backend 无关、由 Flyfish 保持稳定的 hook + async configure(context) { + console.log(context.backend, context.largeModel, context.thatOpen) + }, + }, +} +``` + +这些透传对象故意使用开放字典类型;Flyfish 不改名、不校验单个 key、也不做版本转换。因此 That Open 新增参数后,业务无需等待 File Viewer 发布对应字段即可使用。代价也是明确的:这个 escape hatch 内部的值遵循固定 That Open 版本的 API,而外层 Flyfish 配置保持稳定。 + +当前能力包括浏览器本地 IFC 解析、旋转/平移/缩放、适配模型、元素选择、实体类型 / `Name` / `GlobalId`、有界属性展示、资源释放以及稳定的 `ifc.configure(context)`。BIM 编辑、碰撞检测、BCF、工程量计算、剖切和测量不在当前范围。 + +## 回归 fixture + +仓库在 `test/fixtures/ifc/` 中提交了两个 buildingSMART IFC4 Simple-Scene fixture:`Building-Architecture.ifc` 与 `Building-Structural.ifc`。同目录保留上游 CC BY 4.0 许可、归属、来源路径和 SHA-256。永久 IFC Validation workflow 会在 Chromium 中使用自托管运行时渲染这两个文件,并额外强制执行 That Open backend,避免 Fragments 路径只经过类型检查而没有真实浏览器验证。 + +`web-ifc@0.0.77` 使用 MPL-2.0;`@thatopen/components@3.4.8` 和 `@thatopen/fragments@3.4.7` 使用 MIT。独立资产包保留其实际再分发文件的 notice;File Viewer capability wrapper 继续使用 Apache-2.0。 diff --git a/packages/capabilities/ifc/file-viewer.capability.json b/packages/capabilities/ifc/file-viewer.capability.json new file mode 100644 index 000000000..62c4703b2 --- /dev/null +++ b/packages/capabilities/ifc/file-viewer.capability.json @@ -0,0 +1,49 @@ +{ + "$schema": "../../../ecosystem/capability-manifest.schema.json", + "schemaVersion": 1, + "id": "ifc", + "packageName": "@file-viewer/capability-ifc", + "enhancesPackage": "@file-viewer/renderer-3d", + "activation": { + "kind": "side-effect-import", + "import": "@file-viewer/capability-ifc", + "export": "enableFileViewerIfc" + }, + "rendererIds": ["model"], + "formats": ["ifc"], + "assets": { + "rendererIds": ["model"], + "packageName": "@file-viewer/assets-ifc", + "installerPackageName": "@file-viewer/assets-ifc", + "bin": "file-viewer-assets-ifc", + "apiExport": "installFileViewerCapabilityAssetPack", + "target": "public/file-viewer", + "copyGroups": ["model"], + "copyMode": "capability-pack", + "receiptFilename": "file-viewer-assets-ifc.receipt.json", + "notice": "Self-hosted web-ifc ESM/WASM plus the matching That Open Fragments worker and license notices for optional IFC/BIM preview." + }, + "license": { + "spdx": "Apache-2.0", + "policy": "review-required", + "notices": [ + { + "packageName": "web-ifc", + "spdx": "MPL-2.0", + "notice": "Pinned at 0.0.77; the browser ESM API, single/multi-thread WASM files, and MPL-2.0 license are redistributed by @file-viewer/assets-ifc." + }, + { + "packageName": "@thatopen/components", + "spdx": "MIT", + "notice": "Pinned at 3.4.8 as an optional runtime dependency of @file-viewer/capability-ifc; Flyfish exposes opaque pass-through configuration and raw runtime hooks instead of mirroring its API." + }, + { + "packageName": "@thatopen/fragments", + "spdx": "MIT", + "notice": "Pinned at 3.4.7; the optional capability uses the Fragments large-model engine and @file-viewer/assets-ifc redistributes the matching self-hosted module worker with an MIT notice." + } + ] + }, + "weight": "heavy", + "profiles": [] +} diff --git a/packages/capabilities/ifc/package.json b/packages/capabilities/ifc/package.json new file mode 100644 index 000000000..f22b462e4 --- /dev/null +++ b/packages/capabilities/ifc/package.json @@ -0,0 +1,67 @@ +{ + "name": "@file-viewer/capability-ifc", + "version": "3.0.3", + "private": false, + "type": "module", + "description": "Explicit opt-in IFC/BIM preview capability for @file-viewer/renderer-3d using That Open Components/Fragments with web-ifc as the underlying parser.", + "keywords": [ + "file-viewer", + "ifc", + "bim", + "web-ifc", + "thatopen", + "fragments", + "3d", + "self-hosted" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/flyfish-dev/file-viewer.git", + "directory": "packages/capabilities/ifc" + }, + "homepage": "https://doc.file-viewer.app/guide/on-demand-renderers", + "bugs": { + "url": "https://github.com/flyfish-dev/file-viewer/issues" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + }, + "./capability": "./file-viewer.capability.json", + "./package.json": "./package.json" + }, + "files": [ + "dist", + "file-viewer.capability.json", + "README.md", + "README.en.md" + ], + "scripts": { + "build": "tsc -b tsconfig.json", + "type-check": "tsc -b tsconfig.json" + }, + "dependencies": { + "@file-viewer/core": "workspace:3.0.3", + "@file-viewer/renderer-3d": "workspace:3.0.3", + "@thatopen/components": "3.4.8", + "@thatopen/fragments": "3.4.7", + "three": "^0.185.1", + "web-ifc": "0.0.77" + }, + "devDependencies": { + "@types/three": "^0.185.0", + "typescript": "^6.0.3" + }, + "fileViewer": { + "capabilityManifest": "./file-viewer.capability.json" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, + "license": "Apache-2.0" +} diff --git a/packages/capabilities/ifc/src/index.ts b/packages/capabilities/ifc/src/index.ts new file mode 100644 index 000000000..df7f9bda7 --- /dev/null +++ b/packages/capabilities/ifc/src/index.ts @@ -0,0 +1,18 @@ +import { registerFileViewerIfcCapability } from '@file-viewer/renderer-3d'; + +/** + * Activate the separately installed IFC/BIM path in the base 3D renderer. + * + * The That Open stack stays behind this lazy handler so merely importing the + * capability does not parse or initialize Components/Fragments until an IFC + * actually needs that backend. + */ +export const enableFileViewerIfc = () => { + registerFileViewerIfcCapability((buffer, target, type, context) => + import('./thatOpenBackend.js').then(({ default: renderThatOpenIfc }) => + renderThatOpenIfc(buffer, target, type, context) + ) + ); +}; + +enableFileViewerIfc(); diff --git a/packages/capabilities/ifc/src/thatOpenBackend.ts b/packages/capabilities/ifc/src/thatOpenBackend.ts new file mode 100644 index 000000000..63483ccc8 --- /dev/null +++ b/packages/capabilities/ifc/src/thatOpenBackend.ts @@ -0,0 +1,588 @@ +import * as THREE from 'three'; +import * as OBC from '@thatopen/components'; +import * as FRAGS from '@thatopen/fragments'; +import { + createFileViewerTranslator, + createFileViewerZoomChangeEmitter, + registerFileViewerZoomProvider, + resolveFileViewerRuntimeAssetBaseUrl, + unregisterFileViewerZoomProvider, + type FileRenderContext, + type FileViewerFitRequest, + type FileViewerFitResult, + type FileViewerRenderedInstance, + type FileViewerZoomState, +} from '@file-viewer/core'; +import { + DEFAULT_FILE_VIEWER_IFC_FRAGMENTS_WORKER_PATH, + DEFAULT_FILE_VIEWER_IFC_LARGE_MODEL_THRESHOLD_BYTES, + DEFAULT_FILE_VIEWER_IFC_WASM_PATH, + type FileViewerIfcConfigureContext, + type FileViewerIfcElementInfo, + type FileViewerIfcOptions, + type FileViewerIfcProperty, + type FileViewerIfcPropertySet, + type FileViewerIfcThatOpenRuntimeContext, +} from '@file-viewer/renderer-3d'; + +const MIN_ZOOM = 0.1; +const MAX_ZOOM = 20; +const ZOOM_STEP = 1.2; +const DEFAULT_MAX_PROPERTIES = 250; + +const styleText = ` +.ifc-thatopen-viewer{display:flex;height:100%;min-height:100%;flex-direction:column;background:#f8fafc;color:#162333} +.ifc-thatopen-viewer *{box-sizing:border-box}.ifc-thatopen-toolbar{display:flex;min-height:48px;align-items:center;justify-content:space-between;gap:12px;padding:0 12px;border-bottom:1px solid rgba(15,23,42,.08);background:#fff}.ifc-thatopen-actions{display:flex;gap:6px}.ifc-thatopen-actions button{min-height:30px;border:0;border-radius:8px;padding:0 10px;background:rgba(15,23,42,.06);color:#475569;cursor:pointer;font-size:12px;font-weight:700}.ifc-thatopen-actions button[disabled]{opacity:.45}.ifc-thatopen-meta{min-width:0;color:#64748b;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ifc-thatopen-stage{position:relative;flex:1;min-height:0;overflow:hidden}.ifc-thatopen-stage canvas{display:block;width:100%;height:100%;outline:none;touch-action:none}.ifc-thatopen-state{position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(248,250,252,.9);color:#64748b;text-align:center}.ifc-thatopen-state[hidden]{display:none!important}.ifc-thatopen-panel{position:absolute;z-index:3;top:12px;right:12px;width:min(360px,calc(100% - 24px));max-height:calc(100% - 24px);overflow:auto;border:1px solid rgba(15,23,42,.12);border-radius:12px;background:rgba(255,255,255,.96);box-shadow:0 12px 32px rgba(15,23,42,.14)}.ifc-thatopen-panel[hidden]{display:none!important}.ifc-thatopen-panel header{position:sticky;top:0;padding:12px 14px;border-bottom:1px solid rgba(15,23,42,.08);background:inherit}.ifc-thatopen-panel header strong{display:block;color:#0f766e;font-size:13px}.ifc-thatopen-panel header span{display:block;margin-top:3px;color:#64748b;font-size:11px}.ifc-thatopen-body{padding:12px 14px 16px}.ifc-thatopen-field,.ifc-thatopen-property{display:grid;grid-template-columns:minmax(82px,.9fr) minmax(100px,1.1fr);gap:8px;padding:4px 0;font-size:11px}.ifc-thatopen-field span:first-child,.ifc-thatopen-property span:first-child{color:#64748b}.ifc-thatopen-field span:last-child,.ifc-thatopen-property span:last-child{overflow-wrap:anywhere;color:#334155}.ifc-thatopen-pset{margin-top:10px;padding-top:8px;border-top:1px solid rgba(15,23,42,.08)}.ifc-thatopen-pset h4{margin:0 0 6px;font-size:12px}.ifc-thatopen-empty{margin:0;color:#64748b;font-size:12px;line-height:1.5} +[data-viewer-theme='dark'] .ifc-thatopen-viewer{background:#101820;color:#e5eef8}[data-viewer-theme='dark'] .ifc-thatopen-toolbar{border-color:rgba(148,163,184,.18);background:#111827}[data-viewer-theme='dark'] .ifc-thatopen-actions button{background:#1f2937;color:#cbd5e1}[data-viewer-theme='dark'] .ifc-thatopen-state{background:rgba(15,23,42,.9);color:#cbd5e1}[data-viewer-theme='dark'] .ifc-thatopen-panel{border-color:rgba(148,163,184,.2);background:rgba(17,24,39,.96)}[data-viewer-theme='dark'] .ifc-thatopen-field span:last-child,[data-viewer-theme='dark'] .ifc-thatopen-property span:last-child,[data-viewer-theme='dark'] .ifc-thatopen-pset h4{color:#e2e8f0} +@media (max-width:720px){.ifc-thatopen-toolbar{min-height:62px;align-items:flex-start;flex-direction:column;padding:8px 10px}.ifc-thatopen-panel{top:auto;bottom:10px;right:10px;left:10px;width:auto;max-height:45%}} +`; + +const element = (doc: Document, tag: K, className?: string, text?: string) => { + const node = doc.createElement(tag); + if (className) node.className = className; + if (text !== undefined) node.textContent = text; + return node; +}; + +const normalizeError = (reason: unknown) => reason instanceof Error ? reason.message : String(reason); + +const positiveNumber = (value: unknown, fallback: number) => { + const parsed = Number(value); + return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback; +}; + +const resolveAssetUrl = (value: string | URL | undefined, fallback: string, baseUrl: string) => { + try { + return new URL(value ? String(value) : fallback, baseUrl).href; + } catch { + return value ? String(value) : fallback; + } +}; + +const readScalar = (value: unknown, depth = 0): string => { + if (value === null || value === undefined) return ''; + if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') return String(value); + if (depth > 4) return ''; + if (Array.isArray(value)) return value.map(item => readScalar(item, depth + 1)).filter(Boolean).join(', '); + if (typeof value === 'object') { + const record = value as Record; + if ('value' in record) return readScalar(record.value, depth + 1); + } + return ''; +}; + +const readSchema = (buffer: ArrayBuffer) => { + try { + const sample = new TextDecoder().decode(new Uint8Array(buffer, 0, Math.min(buffer.byteLength, 256 * 1024))); + return sample.match(/FILE_SCHEMA\s*\(\s*\(\s*['"]([^'"]+)/i)?.[1]; + } catch { + return undefined; + } +}; + +const buildPropertySets = (item: unknown, maxProperties: number): FileViewerIfcPropertySet[] => { + if (!item || typeof item !== 'object' || maxProperties <= 0) return []; + const source = (item as Record).data; + const record = source && typeof source === 'object' ? source as Record : item as Record; + const sets = new Map(); + let remaining = maxProperties; + + const push = (setName: string, name: string, value: unknown) => { + if (remaining <= 0) return; + const text = readScalar(value); + if (!text) return; + const list = sets.get(setName) || []; + list.push({ name, value: text }); + sets.set(setName, list); + remaining -= 1; + }; + + const visit = (setName: string, prefix: string, value: unknown, depth: number) => { + if (remaining <= 0 || value === null || value === undefined || depth > 3) return; + const scalar = readScalar(value); + if (scalar) { + push(setName, prefix, value); + return; + } + if (Array.isArray(value)) { + value.slice(0, remaining).forEach((entry, index) => visit(setName, `${prefix}[${index}]`, entry, depth + 1)); + return; + } + if (typeof value === 'object') { + for (const [key, nested] of Object.entries(value as Record)) { + if (remaining <= 0) break; + visit(setName, prefix ? `${prefix}.${key}` : key, nested, depth + 1); + } + } + }; + + for (const [key, value] of Object.entries(record)) { + if (remaining <= 0) break; + if (['Name', 'GlobalId', '_category', 'type'].includes(key)) continue; + const setName = value && typeof value === 'object' && !Array.isArray(value) ? key : 'Attributes'; + visit(setName, setName === 'Attributes' ? key : '', value, 0); + } + + return [...sets.entries()].map(([name, properties]) => ({ name, properties })); +}; + +const modelName = (context?: FileRenderContext) => { + const filename = context?.filename || 'model.ifc'; + return filename.replace(/[^a-z0-9_.-]+/gi, '-').replace(/\.ifc$/i, '') || 'model'; +}; + +export default async function renderThatOpenIfc( + buffer: ArrayBuffer, + target: HTMLDivElement, + _type?: string, + context?: FileRenderContext +): Promise { + const options = context?.options?.ifc as FileViewerIfcOptions | undefined; + const performance = options?.performance; + const threshold = positiveNumber( + performance?.largeModelThresholdBytes, + DEFAULT_FILE_VIEWER_IFC_LARGE_MODEL_THRESHOLD_BYTES + ); + const largeModel = buffer.byteLength >= threshold; + const t = createFileViewerTranslator(context?.options); + const doc = target.ownerDocument; + const win = doc.defaultView || window; + const assetBase = resolveFileViewerRuntimeAssetBaseUrl(doc); + const wasmDirectory = resolveAssetUrl(undefined, DEFAULT_FILE_VIEWER_IFC_WASM_PATH, assetBase); + const workerUrl = resolveAssetUrl( + options?.thatOpen?.workerUrl, + DEFAULT_FILE_VIEWER_IFC_FRAGMENTS_WORKER_PATH, + assetBase + ); + const maxProperties = Number.isFinite(options?.maxProperties) + ? Math.max(0, Math.floor(Number(options?.maxProperties))) + : DEFAULT_MAX_PROPERTIES; + const enableSelection = options?.enableSelection !== false; + const showProperties = options?.showProperties !== false; + const schema = readSchema(buffer); + + const root = element(doc, 'div', 'ifc-thatopen-viewer'); + root.dataset.modelFormat = 'ifc'; + root.dataset.modelStatus = 'loading'; + root.dataset.ifcBackend = 'thatopen'; + root.dataset.ifcLargeModel = String(largeModel); + const style = element(doc, 'style'); + style.textContent = styleText; + const toolbar = element(doc, 'div', 'ifc-thatopen-toolbar'); + const actions = element(doc, 'div', 'ifc-thatopen-actions'); + const fitButton = element(doc, 'button', undefined, t('model.toolbar.fit')); + const clearButton = element(doc, 'button', undefined, 'Clear selection'); + fitButton.type = 'button'; + clearButton.type = 'button'; + clearButton.disabled = true; + clearButton.hidden = !enableSelection; + actions.append(fitButton, clearButton); + const meta = element(doc, 'div', 'ifc-thatopen-meta', largeModel ? 'IFC · Fragments · large model · loading…' : 'IFC · Fragments · loading…'); + toolbar.append(actions, meta); + const stage = element(doc, 'div', 'ifc-thatopen-stage'); + const state = element(doc, 'div', 'ifc-thatopen-state', t('model.state.loading')); + const panel = element(doc, 'aside', 'ifc-thatopen-panel'); + panel.hidden = !showProperties; + const panelHeader = element(doc, 'header'); + const panelTitle = element(doc, 'strong', undefined, 'IFC element'); + const panelSubtitle = element(doc, 'span', undefined, 'Select an element in the model'); + panelHeader.append(panelTitle, panelSubtitle); + const panelBody = element(doc, 'div', 'ifc-thatopen-body'); + panelBody.append(element(doc, 'p', 'ifc-thatopen-empty', 'Click or tap a BIM element to inspect its IFC data.')); + panel.append(panelHeader, panelBody); + stage.append(state, panel); + root.append(style, toolbar, stage); + target.replaceChildren(root); + + const zoomEmitter = createFileViewerZoomChangeEmitter(); + let disposed = false; + let resizeObserver: ResizeObserver | null = null; + let components: any = null; + let world: any = null; + let fragments: any = null; + let loader: any = null; + let importer: any = null; + let model: any = null; + let canvas: HTMLCanvasElement | null = null; + let selectedLocalId: number | null = null; + let pointerDown: { x: number; y: number } | null = null; + let zoomBaselineDistance = 0; + const fallbackTarget = new THREE.Vector3(); + + const getCamera = () => world?.camera?.three as THREE.PerspectiveCamera | undefined; + const getControls = () => world?.camera?.controls as any; + const getTarget = () => { + const controls = getControls(); + const value = fallbackTarget.clone(); + try { + controls?.getTarget?.(value); + } catch { + // camera-controls API is intentionally treated as an optional raw dependency. + } + return value; + }; + + const getZoomScale = () => { + const camera = getCamera(); + if (!camera || zoomBaselineDistance <= 0) return 1; + const distance = camera.position.distanceTo(getTarget()); + return distance > 0 ? THREE.MathUtils.clamp(zoomBaselineDistance / distance, MIN_ZOOM, MAX_ZOOM) : 1; + }; + + const getZoomState = (): FileViewerZoomState => { + const scale = getZoomScale(); + const ready = root.dataset.modelStatus === 'ready' && zoomBaselineDistance > 0; + return { + scale, + label: `${Math.round(scale * 100)}%`, + canZoomIn: ready && scale < MAX_ZOOM - 0.001, + canZoomOut: ready && scale > MIN_ZOOM + 0.001, + canReset: ready && Math.abs(scale - 1) > 0.005, + minScale: MIN_ZOOM, + maxScale: MAX_ZOOM, + }; + }; + + const setZoom = (requested: number) => { + const camera = getCamera(); + const controls = getControls(); + if (!camera || !controls || zoomBaselineDistance <= 0) return getZoomState(); + const scale = THREE.MathUtils.clamp(requested, MIN_ZOOM, MAX_ZOOM); + const targetPoint = getTarget(); + const direction = camera.position.clone().sub(targetPoint); + if (direction.lengthSq() < 1e-8) direction.set(1, 0.7, 1); + direction.normalize(); + const next = targetPoint.clone().addScaledVector(direction, zoomBaselineDistance / scale); + void controls.setLookAt?.(next.x, next.y, next.z, targetPoint.x, targetPoint.y, targetPoint.z, false); + zoomEmitter.emit(); + return getZoomState(); + }; + + const fitToModel = () => { + const camera = getCamera(); + const controls = getControls(); + if (!model || !camera || !controls) return; + const box = model.box instanceof THREE.Box3 ? model.box.clone() : new THREE.Box3().setFromObject(model.object); + if (box.isEmpty()) return; + const center = box.getCenter(new THREE.Vector3()); + const sphere = box.getBoundingSphere(new THREE.Sphere()); + const radius = Math.max(sphere.radius, 0.5); + const rect = stage.getBoundingClientRect(); + const aspect = Math.max(0.01, Math.max(1, rect.width) / Math.max(1, rect.height)); + const verticalFov = THREE.MathUtils.degToRad(Number(camera.fov || 45)); + const horizontalFov = 2 * Math.atan(Math.tan(verticalFov / 2) * aspect); + const distance = Math.max( + radius / Math.max(Math.sin(verticalFov / 2), 0.01), + radius / Math.max(Math.sin(horizontalFov / 2), 0.01) + ) * 1.12; + const direction = camera.position.clone().sub(getTarget()); + if (direction.lengthSq() < 1e-8) direction.set(1, 0.7, 1); + direction.normalize(); + const next = center.clone().addScaledVector(direction, distance); + fallbackTarget.copy(center); + zoomBaselineDistance = distance; + camera.near = Math.max(distance / 1000, 0.01); + camera.far = Math.max(distance * 1000, 1000); + camera.updateProjectionMatrix(); + void controls.setLookAt?.(next.x, next.y, next.z, center.x, center.y, center.z, false); + zoomEmitter.emit(); + }; + + const applyFit = (request: FileViewerFitRequest): FileViewerFitResult => { + if (!model || !getCamera()) { + return { applied: false, mode: request.mode, resize: request.resize, source: request.source, reason: 'not-ready', provider: 'zoom' }; + } + fitToModel(); + return { applied: true, mode: request.mode, resize: request.resize, scale: getZoomState().scale, source: request.source, provider: 'zoom' }; + }; + + const renderInfo = (info: FileViewerIfcElementInfo | null) => { + if (!showProperties) return; + panelBody.replaceChildren(); + if (!info) { + panelTitle.textContent = 'IFC element'; + panelSubtitle.textContent = 'Select an element in the model'; + panelBody.append(element(doc, 'p', 'ifc-thatopen-empty', 'Click or tap a BIM element to inspect its IFC data.')); + return; + } + panelTitle.textContent = info.name || info.entityType; + panelSubtitle.textContent = `${info.entityType} · #${info.expressID}`; + for (const [label, value] of [ + ['Entity', info.entityType], + ['Name', info.name || '—'], + ['GlobalId', info.globalId || '—'], + ['Express ID', String(info.expressID)], + ]) { + const row = element(doc, 'div', 'ifc-thatopen-field'); + row.append(element(doc, 'span', undefined, label), element(doc, 'span', undefined, value)); + panelBody.append(row); + } + for (const set of info.propertySets) { + const section = element(doc, 'section', 'ifc-thatopen-pset'); + section.append(element(doc, 'h4', undefined, set.name)); + for (const property of set.properties) { + const row = element(doc, 'div', 'ifc-thatopen-property'); + row.append(element(doc, 'span', undefined, property.name), element(doc, 'span', undefined, property.value)); + section.append(row); + } + panelBody.append(section); + } + }; + + const getElementInfo = async (expressID: number): Promise => { + if (!model) throw new Error('That Open IFC model is not ready.'); + const rows = await model.getItemsData?.([expressID]); + const item = Array.isArray(rows) ? rows[0] : undefined; + const record = item && typeof item === 'object' ? item as Record : {}; + const data = record.data && typeof record.data === 'object' ? record.data as Record : record; + const guids = await model.getGuidsByLocalIds?.([expressID]); + const entityType = readScalar(record.category) || readScalar(data._category) || readScalar(data.type) || 'IFCENTITY'; + return { + expressID, + entityType, + name: readScalar(data.Name) || undefined, + globalId: (Array.isArray(guids) ? guids[0] : undefined) || readScalar(data.GlobalId) || undefined, + propertySets: buildPropertySets(item, maxProperties), + }; + }; + + const resetHighlight = async () => { + if (model && selectedLocalId !== null) { + try { + await model.resetHighlight?.([selectedLocalId]); + await fragments?.core?.update?.(true); + } catch { + // Best effort when a worker is already disposing. + } + } + selectedLocalId = null; + clearButton.disabled = true; + renderInfo(null); + }; + + const clearSelection = () => { void resetHighlight(); }; + + const selectElement = async (expressID: number | null): Promise => { + await resetHighlight(); + if (expressID === null || !model) return null; + selectedLocalId = expressID; + clearButton.disabled = false; + try { + await model.highlight?.([expressID], { + color: new THREE.Color(0.06, 0.73, 0.51), + renderedFaces: 1, + opacity: 0.82, + transparent: true, + }); + await fragments?.core?.update?.(true); + } catch { + // Property inspection remains useful even if a library version changes highlight semantics. + } + const info = await getElementInfo(expressID); + renderInfo(info); + return info; + }; + + const onPointerDown = (event: PointerEvent) => { + pointerDown = { x: event.clientX, y: event.clientY }; + }; + const onPointerUp = async (event: PointerEvent) => { + if (!enableSelection || !pointerDown || !model || !canvas) return; + const distance = Math.hypot(event.clientX - pointerDown.x, event.clientY - pointerDown.y); + pointerDown = null; + if (distance > 5) return; + try { + const hit = await model.raycast?.({ + camera: getCamera(), + mouse: new THREE.Vector2(event.clientX, event.clientY), + dom: canvas, + }); + await selectElement(Number.isInteger(hit?.localId) ? Number(hit.localId) : null); + } catch { + await selectElement(null); + } + }; + + const onPointerUpEvent = (event: PointerEvent) => { void onPointerUp(event); }; + + const resize = () => { + try { + world?.renderer?.resize?.(); + world?.camera?.updateAspect?.(); + } catch { + // Resize is best-effort across That Open minor versions. + } + }; + + const cleanup = () => { + if (disposed) return; + disposed = true; + resizeObserver?.disconnect(); + resizeObserver = null; + unregisterFileViewerZoomProvider(root); + if (canvas) { + canvas.removeEventListener('pointerdown', onPointerDown); + canvas.removeEventListener('pointerup', onPointerUpEvent); + } + const controls = getControls(); + controls?.removeEventListener?.('update', onCameraUpdate); + controls?.removeEventListener?.('rest', onCameraRest); + void resetHighlight(); + try { + const result = fragments?.dispose?.(); + if (result && typeof result.catch === 'function') void result.catch(() => undefined); + } catch { + // Best-effort worker cleanup. + } + try { + components?.dispose?.(); + } catch { + // Best-effort component cleanup. + } + components = null; + world = null; + fragments = null; + loader = null; + importer = null; + model = null; + canvas = null; + target.replaceChildren(); + }; + + const onCameraUpdate = () => { void fragments?.core?.update?.(); }; + const onCameraRest = () => { void fragments?.core?.update?.(true); }; + + try { + if (context?.signal?.aborted) throw new DOMException('Aborted', 'AbortError'); + + components = new (OBC as any).Components(); + const worlds = components.get((OBC as any).Worlds); + world = worlds.create(); + world.scene = new (OBC as any).SimpleScene(components); + world.scene.setup(); + world.scene.three.background = null; + world.renderer = new (OBC as any).SimpleRenderer(components, stage); + world.camera = new (OBC as any).SimpleCamera(components); + components.init(); + canvas = world.renderer.three.domElement as HTMLCanvasElement; + + fragments = components.get((OBC as any).FragmentsManager); + fragments.init(workerUrl); + if (options?.thatOpen?.fragments) { + Object.assign(fragments.core.settings, options.thatOpen.fragments); + } + getControls()?.addEventListener?.('update', onCameraUpdate); + getControls()?.addEventListener?.('rest', onCameraRest); + + loader = components.get((OBC as any).IfcLoader); + await loader.setup({ + autoSetWasm: false, + wasm: { path: wasmDirectory, absolute: true }, + webIfc: { COORDINATE_TO_ORIGIN: true }, + }); + if (options?.thatOpen?.components) { + // Intentionally forward the user's object unchanged: no Flyfish key mapping. + await loader.setup(options.thatOpen.components); + } + + if (context?.signal?.aborted) throw new DOMException('Aborted', 'AbortError'); + model = await loader.load(new Uint8Array(buffer), true, modelName(context), { + ...(options?.thatOpen?.importer ? { processData: options.thatOpen.importer } : {}), + instanceCallback: (value: unknown) => { + importer = value; + options?.thatOpen?.configureImporter?.({ + modules: { components: OBC, fragments: FRAGS }, + components, + world, + fragments, + loader, + webIfc: loader?.webIfc, + importer: value, + }); + }, + }); + + if (context?.signal?.aborted) throw new DOMException('Aborted', 'AbortError'); + model.useCamera?.(world.camera.three); + world.scene.three.add(model.object); + await fragments.core.update(true); + + const runtime: FileViewerIfcThatOpenRuntimeContext = { + modules: { components: OBC, fragments: FRAGS }, + components, + world, + fragments, + loader, + webIfc: loader?.webIfc, + importer, + model, + }; + await options?.thatOpen?.configure?.(runtime); + + if (options?.fitToModel !== false) fitToModel(); + fitButton.addEventListener('click', fitToModel); + clearButton.addEventListener('click', clearSelection); + if (enableSelection && canvas) { + canvas.addEventListener('pointerdown', onPointerDown); + canvas.addEventListener('pointerup', onPointerUpEvent); + } + const ResizeObserverCtor = win.ResizeObserver; + if (ResizeObserverCtor) { + resizeObserver = new ResizeObserverCtor(resize); + resizeObserver.observe(stage); + } + resize(); + + registerFileViewerZoomProvider(root, { + zoomIn: () => setZoom(getZoomScale() * ZOOM_STEP), + zoomOut: () => setZoom(getZoomScale() / ZOOM_STEP), + resetZoom: () => setZoom(1), + setZoom, + fit: applyFit, + getState: getZoomState, + subscribe: zoomEmitter.subscribe, + }); + + let elementCount: number | undefined; + if (!largeModel) { + try { + const ids = await model.getItemsIdsWithGeometry?.(); + if (Array.isArray(ids)) elementCount = ids.length; + } catch { + elementCount = undefined; + } + } + root.dataset.modelStatus = 'ready'; + root.dataset.ifcSchema = schema || ''; + if (elementCount !== undefined) root.dataset.ifcElementCount = String(elementCount); + state.hidden = true; + meta.textContent = [ + schema, + largeModel ? 'Fragments LOD' : 'That Open', + elementCount !== undefined ? `${elementCount} elements` : undefined, + `${Math.max(1, Math.round(buffer.byteLength / (1024 * 1024) * 10) / 10)} MiB source`, + ].filter(Boolean).join(' · '); + zoomEmitter.emit(); + + const configureContext: FileViewerIfcConfigureContext = { + fileSizeBytes: buffer.byteLength, + largeModel, + model, + schema, + thatOpen: runtime, + getElementInfo, + selectElement, + clearSelection, + fitToModel, + }; + await options?.configure?.(configureContext); + + return { $el: root, unmount: cleanup }; + } catch (reason) { + root.dataset.modelStatus = 'error'; + state.hidden = false; + state.textContent = normalizeError(reason) || 'Unable to load IFC model with That Open Fragments.'; + cleanup(); + throw reason instanceof Error ? reason : new Error(normalizeError(reason)); + } +} diff --git a/packages/capabilities/ifc/tsconfig.json b/packages/capabilities/ifc/tsconfig.json new file mode 100644 index 000000000..1ab1c29e7 --- /dev/null +++ b/packages/capabilities/ifc/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "ES2019", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "ES2020"], + "strict": true, + "composite": true, + "declaration": true, + "outDir": "dist", + "rootDir": "src", + "skipLibCheck": true, + "verbatimModuleSyntax": true + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/presets/all/src/index.ts b/packages/presets/all/src/index.ts index 6cb8f56bb..c9a15229f 100644 --- a/packages/presets/all/src/index.ts +++ b/packages/presets/all/src/index.ts @@ -39,6 +39,14 @@ import '@file-viewer/capability-streaming-media'; import '@file-viewer/capability-text-tools'; import '@file-viewer/capability-drawio-official'; +export type { + FileViewerIfcConfigureContext, + FileViewerIfcElementInfo, + FileViewerIfcOptions, + FileViewerIfcProperty, + FileViewerIfcPropertySet, +} from '@file-viewer/renderer-3d'; + export { DEFAULT_FULL_ASSET_BASE_PATH, DEFAULT_FULL_ASSET_BASE_URL, diff --git a/packages/presets/engineering/src/index.ts b/packages/presets/engineering/src/index.ts index afa00c4be..e355e3f68 100644 --- a/packages/presets/engineering/src/index.ts +++ b/packages/presets/engineering/src/index.ts @@ -14,6 +14,14 @@ import { mindmapRenderer } from '@file-viewer/renderer-mindmap'; import { modelRenderer } from '@file-viewer/renderer-3d'; import { typstRenderer } from '@file-viewer/renderer-typst'; +export type { + FileViewerIfcConfigureContext, + FileViewerIfcElementInfo, + FileViewerIfcOptions, + FileViewerIfcProperty, + FileViewerIfcPropertySet, +} from '@file-viewer/renderer-3d'; + type BrowserRendererHandler = FileRenderHandler; export const engineeringRenderers: FileViewerRendererPreset = { diff --git a/packages/renderers/3d/README.en.md b/packages/renderers/3d/README.en.md index 37c54238a..f7b4313b2 100644 --- a/packages/renderers/3d/README.en.md +++ b/packages/renderers/3d/README.en.md @@ -1,39 +1,97 @@ # @file-viewer/renderer-3d -Standalone 3D model renderer for Flyfish File Viewer. It uses Three.js, OrbitControls, and lazy format-specific loaders for GLB / GLTF, OBJ, STL, PLY, FBX, DAE, 3DS, 3MF, AMF, USD, KMZ, PCD, VRML, XYZ, VTK, and related files. STEP / STP, IGES / IGS, and BREP use a local OCCT worker for real geometry decoding and rendering. +Standalone 3D model renderer for Flyfish File Viewer. It uses Three.js, OrbitControls, and lazy format-specific loaders for GLB / GLTF, OBJ, STL, PLY, FBX, DAE, 3DS, 3MF, AMF, USD, KMZ, PCD, VRML, XYZ, VTK, and related files. STEP / STP, IGES / IGS, and BREP use a self-hosted OCCT worker. -## Usage +IFC/BIM support is an **explicit opt-in capability**. The base renderer keeps the `.ifc` routing hook but does not depend on `web-ifc`, `@thatopen/components`, or `@thatopen/fragments`; install and import `@file-viewer/capability-ifc` plus its separate `@file-viewer/assets-ifc` package when IFC preview is required. This keeps the heavy BIM runtime outside ordinary 3D, Engineering preset, and Full-package installs. + +## Base 3D usage ```ts -import FileViewer from '@file-viewer/vue3' import { modelRenderer } from '@file-viewer/renderer-3d' const options = { rendererMode: 'replace', - renderers: modelRenderer, + renderers: [modelRenderer], model: { - workerUrl: '/viewer-assets/wasm/model/occt-worker.js', - runtimeUrl: '/viewer-assets/wasm/model/occt-import-js.js', - wasmUrl: '/viewer-assets/wasm/model/occt-import-js.wasm', - workerTimeoutMs: 120_000, + workerUrl: '/file-viewer/wasm/model/occt-worker.js', + runtimeUrl: '/file-viewer/wasm/model/occt-import-js.js', + wasmUrl: '/file-viewer/wasm/model/occt-import-js.wasm', + }, +} +``` + +`modelRenderer` is included by `@file-viewer/preset-engineering` and `@file-viewer/preset-all`. That does **not** activate IFC. + +## Enable IFC / BIM explicitly + +```bash +npm install @file-viewer/capability-ifc @file-viewer/assets-ifc +``` + +```ts +import '@file-viewer/capability-ifc' + +const options = { + ifc: { + fitToModel: true, + enableSelection: true, + showProperties: true, + }, +} +``` + +CLI-managed projects can select the same capability with: + +```bash +npx file-viewer-cli config add ifc --write +npx file-viewer-cli install --yes +``` + +Without the capability import, opening `.ifc` fails with an explicit opt-in message rather than silently loading a heavy runtime. + +### IFC backend and large-model routing + +The capability supports `ifc.backend: 'auto' | 'web-ifc' | 'thatopen'`. + +- `auto` keeps normal/smaller IFCs on the direct `web-ifc` + Three.js renderer and prefers That Open Components + Fragments for files at or above the default 16 MiB threshold. +- `web-ifc` forces the direct renderer. +- `thatopen` forces the worker-backed Fragments renderer. + +The threshold and optional hard source ceiling are configurable: + +```ts +const options = { + ifc: { + performance: { + largeModelThresholdBytes: 24 * 1024 * 1024, + preferFragmentsForLargeModels: true, + // maxSourceBytes: 750 * 1024 * 1024, + }, }, } ``` -`modelRenderer` can be combined with CAD and other renderer packages, or consumed through `@file-viewer/preset-all`. Full packages and `@file-viewer/vite-plugin` prepare the default offline assets. A renderer-only integration must self-host the OCCT worker, runtime, WASM, and both license notices. +Large Fragments models avoid eager full-element counting and keep culling / LOD operations behind the self-hosted Fragments worker. Properties remain demand-driven by selection. + +### IFC feature boundary + +IFC is an explicit optional capability. Once enabled, **all** IFC files use That Open Components + Fragments, while web-ifc remains the parser/WASM engine underneath `IfcLoader`. There is no size-dependent backend switch. `largeModelThresholdBytes` only changes performance policy (for example, suppressing eager statistics); `maxSourceBytes` is an optional hard application guard. Advanced consumers can pass opaque `thatOpen.components`, `thatOpen.fragments`, and `thatOpen.importer` objects and use raw runtime hooks. See `docs/guide/ifc.md`. + +Self-hosted IFC assets are `web-ifc.wasm`, `web-ifc-mt.wasm`, `fragments-worker.mjs`, and their MPL-2.0/MIT notices. + +## Other 3D assets -Default paths: +Default OCCT paths: - `wasm/model/occt-worker.js` - `wasm/model/occt-import-js.js` - `wasm/model/occt-import-js.wasm` -For subpath deployments or a dedicated asset origin, provide final URLs through `options.model.workerUrl`, `runtimeUrl`, and `wasmUrl`. There is no runtime CDN fallback. A strict CSP must allow that origin in `worker-src`, `script-src`, and `connect-src`; some browsers also require `script-src 'wasm-unsafe-eval'`. +These are owned by `@file-viewer/assets-model`. A strict CSP must allow the configured worker/script/connect origins; some browsers also require `script-src 'wasm-unsafe-eval'`. ## Boundaries -- STEP / STP, IGES / IGS, and BREP are tessellated by `occt-import-js` / OpenCascade in a worker. Assembly hierarchy, instances, normals, and face colors are preserved when the Three.js scene is built. -- General models support WebGL orbit controls, fit-to-view, grid, axes, wireframe, and auto-rotate. External textures or binary resources referenced by `gltf`, `dae`, and `fbx` continue to resolve against the original file URL directory. -- Unified global zoom: the renderer registers the standard zoom provider, so the outer toolbar's zoom in, zoom out, reset, and fit actions control the camera. Wheel, trackpad, and pinch zoom also update the shared zoom state. -- IFC and 3DM currently provide signature detection and explicit integration guidance only. They still need dedicated `web-ifc` / That Open and `rhino3dm` renderers and are not reported as successful previews. -- `@file-viewer/core` does not bundle Three.js or a geometry kernel. Install this renderer, the matching preset, or a full package when model preview is required. +- STEP / STP, IGES / IGS, and BREP are tessellated by `occt-import-js` / OpenCascade in a worker. +- General models support WebGL orbit controls, fit-to-view, grid, axes, wireframe, and auto-rotate. +- IFC becomes available only after `@file-viewer/capability-ifc` activation; its parser/Fragments runtime is browser-local and self-hosted. +- 3DM still provides signature detection/integration guidance only and needs a dedicated `rhino3dm` path. diff --git a/packages/renderers/3d/README.md b/packages/renderers/3d/README.md index f1c039a00..ada6f85f5 100644 --- a/packages/renderers/3d/README.md +++ b/packages/renderers/3d/README.md @@ -1,39 +1,131 @@ # @file-viewer/renderer-3d -Flyfish File Viewer 的独立 3D 模型 renderer。它使用 Three.js、OrbitControls 和按格式异步加载的 loader,在浏览器内预览 GLB / GLTF、OBJ、STL、PLY、FBX、DAE、3DS、3MF、AMF、USD、KMZ、PCD、VRML、XYZ、VTK 等模型;STEP / STP、IGES / IGS 和 BREP 则通过本地 OCCT Worker 完成真实几何解析和渲染。 +Flyfish File Viewer 的独立 3D 模型 renderer。它使用 Three.js、OrbitControls 和按格式异步加载的 loader 预览 GLB / GLTF、OBJ、STL、PLY、FBX、DAE、3DS、3MF、AMF、USD、KMZ、PCD、VRML、XYZ、VTK 等;STEP / STP、IGES / IGS、BREP 使用自托管 OCCT Worker。 -## 用法 +IFC / BIM 是**显式按需 capability**。基础 `@file-viewer/renderer-3d` 只保留 `.ifc` 路由钩子,不直接依赖 `web-ifc`、`@thatopen/components` 或 `@thatopen/fragments`。需要 IFC 时再安装并导入 `@file-viewer/capability-ifc`,同时部署独立的 `@file-viewer/assets-ifc`。因此普通 3D、Engineering preset 和 Full package 不会自动携带重型 BIM runtime。 + +## 基础 3D 用法 ```ts -import FileViewer from '@file-viewer/vue3' import { modelRenderer } from '@file-viewer/renderer-3d' const options = { rendererMode: 'replace', - renderers: modelRenderer, + renderers: [modelRenderer], model: { - workerUrl: '/viewer-assets/wasm/model/occt-worker.js', - runtimeUrl: '/viewer-assets/wasm/model/occt-import-js.js', - wasmUrl: '/viewer-assets/wasm/model/occt-import-js.wasm', - workerTimeoutMs: 120_000, + workerUrl: '/file-viewer/wasm/model/occt-worker.js', + runtimeUrl: '/file-viewer/wasm/model/occt-import-js.js', + wasmUrl: '/file-viewer/wasm/model/occt-import-js.wasm', + }, +} +``` + +`@file-viewer/preset-engineering` / `@file-viewer/preset-all` 会包含 `modelRenderer`,但**不会自动启用 IFC**。 + +## 显式启用 IFC / BIM + +```bash +npm install @file-viewer/capability-ifc @file-viewer/assets-ifc +``` + +```ts +import '@file-viewer/capability-ifc' + +const options = { + ifc: { + fitToModel: true, + enableSelection: true, + showProperties: true, + }, +} +``` + +CLI 项目可以使用: + +```bash +npx file-viewer-cli config add ifc --write +npx file-viewer-cli install --yes +``` + +未导入 capability 时打开 `.ifc` 会得到明确的 opt-in 提示,不会静默加载重型 runtime。 + +### IFC backend 与大模型路由 + +capability 支持 `ifc.backend: 'auto' | 'web-ifc' | 'thatopen'`。 + +- `auto` 对普通 / 较小 IFC 使用直接 `web-ifc` + Three.js;达到默认 16 MiB 阈值后优先使用 That Open Components + Fragments。 +- `web-ifc` 强制直接 renderer。 +- `thatopen` 强制 Worker 驱动的 Fragments renderer。 + +阈值与可选硬上限可配置: + +```ts +const options = { + ifc: { + performance: { + largeModelThresholdBytes: 24 * 1024 * 1024, + preferFragmentsForLargeModels: true, + // maxSourceBytes: 750 * 1024 * 1024, + }, + }, +} +``` + +Fragments 大模型不会为了显示计数而在打开阶段枚举全部元素;culling / LOD 由自托管 Fragments Worker 负责,属性继续按选择事件读取。 + +### IFC 能力边界与 Extensibility + +可选 IFC adapter 提供浏览器本地 IFC 打开、旋转 / 平移 / 缩放、fit-to-model、元素选择、基本实体 / `Name` / `GlobalId` / 属性检查、生命周期清理,以及稳定的 Flyfish `ifc.configure(context)`。 + +```ts +const options = { + ifc: { + async configure(context) { + const info = await context.getElementInfo(42) + console.log(context.backend, context.largeModel, context.schema, info.globalId) + await context.selectElement(42) + context.fitToModel() + }, }, } ``` -也可以把 `modelRenderer` 与 CAD 等 renderer 组合,或直接使用已经聚合它的 `@file-viewer/preset-all`。full 包和 `@file-viewer/vite-plugin` 会准备默认离线资产;只安装 renderer 时,需要自行托管 OCCT Worker、runtime、WASM 和两个许可证文件。 +对于 That Open 高级配置,File Viewer 不复制其全部 API:`ifc.thatOpen.components` 原样传给 `IfcLoader.setup(...)`,`ifc.thatOpen.fragments` 原样写入 `FragmentsManager.core.settings`,`ifc.thatOpen.importer` 原样传给 importer processing options。`configureImporter(...)` 和 `configure(...)` 则直接暴露底层 That Open runtime 对象,不增加 Flyfish wrapper。 + +完整 pass-through 合约与大模型策略见 [IFC / BIM 专门指南](https://doc.file-viewer.app/zh/guide/ifc)。 + +BIM 编辑、碰撞检测、BCF、工程量计算、剖切和测量仍不在当前范围。 + +### 自托管 IFC runtime + +`@file-viewer/assets-ifc` 固定并 staging 两个 backend 需要的浏览器 runtime: + +```text +web-ifc-api.js -> wasm/model/web-ifc-api.js +web-ifc.wasm -> wasm/model/web-ifc.wasm +web-ifc-mt.wasm -> wasm/model/web-ifc-mt.wasm +fragments-worker.mjs -> wasm/model/fragments-worker.mjs +LICENSE.web-ifc-MPL-2.0.md -> wasm/model/LICENSE.web-ifc-MPL-2.0.md +LICENSE.thatopen-fragments-MIT.txt -> wasm/model/LICENSE.thatopen-fragments-MIT.txt +``` + +运行时没有公共 CDN fallback;只有自定义自托管布局时才需要覆盖 `ifc.apiUrl`、`ifc.wasmUrl`、`ifc.wasmMtUrl` 或 `ifc.thatOpen.workerUrl`。 + +`web-ifc@0.0.77` 使用 MPL-2.0;`@thatopen/components@3.4.8` 与 `@thatopen/fragments@3.4.7` 使用 MIT。File Viewer 的 renderer / capability wrapper 继续使用 Apache-2.0。 + +## 其他 3D 资产 -默认路径为: +OCCT 默认路径: - `wasm/model/occt-worker.js` - `wasm/model/occt-import-js.js` - `wasm/model/occt-import-js.wasm` -部署在子路径或独立资产域名时,通过 `options.model.workerUrl`、`runtimeUrl`、`wasmUrl` 传入最终 URL。不要使用运行时 CDN 回退。严格 CSP 需要在 `worker-src`、`script-src` 和 `connect-src` 中允许对应来源;部分浏览器还需要 `script-src 'wasm-unsafe-eval'`。 +这些资产由 `@file-viewer/assets-model` 负责。严格 CSP 需要允许相应 worker/script/connect 来源;部分浏览器还需要 `script-src 'wasm-unsafe-eval'`。 ## 能力边界 -- STEP / STP、IGES / IGS、BREP:在 Worker 中使用 `occt-import-js` / OpenCascade 三角化,保留装配层级、实例、法线和面颜色,再构建 Three.js 场景。 -- 通用模型:支持 WebGL 轨道控制、适配视图、网格、坐标轴、线框和自动旋转。`gltf` / `dae` / `fbx` 的外部贴图或二进制资源继续以原始 `url` 目录为基准加载。 -- 全局统一缩放:renderer 注册标准缩放 provider,因此外层工具栏的放大、缩小、比例重置和适配视图会直接控制相机;滚轮、触控板和捏合缩放也会同步更新全局比例状态。 -- IFC、3DM:当前只做签名识别和明确的接入提示,仍需分别接入 `web-ifc` / That Open 与 `rhino3dm`,不会显示成成功预览。 -- `@file-viewer/core` 不内置 Three.js 或几何内核。需要模型预览时请显式安装本包、相应 preset,或 full 包。 +- STEP / STP、IGES / IGS、BREP 使用 `occt-import-js` / OpenCascade Worker 三角化。 +- 通用模型支持 WebGL 轨道控制、适配视图、网格、坐标轴、线框和自动旋转。 +- IFC 只有在 `@file-viewer/capability-ifc` 激活后才可用,web-ifc / Fragments runtime 都在浏览器本地并完全自托管。 +- 3DM 仍只提供签名识别 / 接入提示,需要独立 `rhino3dm` 路径。 diff --git a/packages/renderers/3d/package.json b/packages/renderers/3d/package.json index d2fa021fb..eca7804e8 100644 --- a/packages/renderers/3d/package.json +++ b/packages/renderers/3d/package.json @@ -3,12 +3,14 @@ "version": "3.0.3", "private": false, "type": "module", - "description": "Standalone 3D model renderer plugin for File Viewer powered by Three.js loaders and OrbitControls.", + "description": "Standalone 3D model renderer plugin for File Viewer powered by Three.js, with an explicit opt-in IFC/BIM capability hook.", "keywords": [ "file-viewer", "renderer", "3d", "three", + "ifc", + "bim", "gltf", "glb", "stl", diff --git a/packages/renderers/3d/src/ifcTypes.ts b/packages/renderers/3d/src/ifcTypes.ts new file mode 100644 index 000000000..a37f6060c --- /dev/null +++ b/packages/renderers/3d/src/ifcTypes.ts @@ -0,0 +1,100 @@ +export const DEFAULT_FILE_VIEWER_IFC_WASM_PATH = 'wasm/model/'; +export const DEFAULT_FILE_VIEWER_IFC_FRAGMENTS_WORKER_PATH = 'wasm/model/fragments-worker.mjs'; +export const DEFAULT_FILE_VIEWER_IFC_LARGE_MODEL_THRESHOLD_BYTES = 16 * 1024 * 1024; + +export interface FileViewerIfcProperty { + name: string; + value: string; +} + +export interface FileViewerIfcPropertySet { + name: string; + properties: FileViewerIfcProperty[]; +} + +export interface FileViewerIfcElementInfo { + expressID: number; + entityType: string; + name?: string; + globalId?: string; + propertySets: FileViewerIfcPropertySet[]; +} + +/** + * Deliberately untyped pass-through object. + * Flyfish does not rename, validate or version individual keys. + */ +export interface FileViewerIfcOpaqueConfig { + [key: string]: unknown; +} + +/** Raw That Open runtime objects exposed without wrapping their APIs. */ +export interface FileViewerIfcThatOpenRuntimeContext { + readonly modules: { + readonly components: unknown; + readonly fragments: unknown; + }; + readonly components: unknown; + readonly world: unknown; + readonly fragments: unknown; + readonly loader: unknown; + /** The web-ifc IfcAPI instance owned by That Open's IfcLoader. */ + readonly webIfc: unknown; + readonly importer?: unknown; + readonly model?: unknown; +} + +export interface FileViewerIfcThatOpenOptions { + /** Self-hosted @thatopen/fragments worker. No public-CDN fallback is used by Flyfish. */ + workerUrl?: string | URL; + /** Opaque 1:1 pass-through to @thatopen/components IfcLoader.setup(...). */ + components?: FileViewerIfcOpaqueConfig; + /** Opaque 1:1 pass-through applied to FragmentsManager.core.settings. */ + fragments?: FileViewerIfcOpaqueConfig; + /** Opaque 1:1 pass-through to the Fragments IFC importer process options. */ + importer?: FileViewerIfcOpaqueConfig; + /** Imperative escape hatch executed synchronously before IFC importer processing. */ + configureImporter?: (context: FileViewerIfcThatOpenRuntimeContext & { readonly importer: unknown }) => void; + /** Raw runtime hook executed once the That Open model is ready. */ + configure?: (context: FileViewerIfcThatOpenRuntimeContext) => void | Promise; +} + +export interface FileViewerIfcPerformanceOptions { + /** + * Files at or above this size are classified as large. Defaults to 16 MiB. + * Classification only changes expensive UI/statistics behavior; all IFC files use That Open + Fragments. + */ + largeModelThresholdBytes?: number; + /** Optional hard source-file ceiling. Files above it fail before allocating parser/runtime state. */ + maxSourceBytes?: number; +} + +/** Stable Flyfish extension surface. Raw That Open objects remain available under `thatOpen`. */ +export interface FileViewerIfcConfigureContext { + readonly fileSizeBytes: number; + readonly largeModel: boolean; + readonly model: unknown; + readonly schema?: string; + readonly thatOpen: FileViewerIfcThatOpenRuntimeContext; + getElementInfo: (expressID: number) => Promise; + selectElement: (expressID: number | null) => Promise; + clearSelection: () => void; + fitToModel: () => void; +} + +export interface FileViewerIfcOptions { + /** Large-file classification and optional hard safety limits. Rendering always uses That Open + Fragments. */ + performance?: FileViewerIfcPerformanceOptions; + /** Opaque That Open Components / Fragments bridge plus raw runtime hooks. */ + thatOpen?: FileViewerIfcThatOpenOptions; + /** Fit the camera after opening the model. Defaults to true. */ + fitToModel?: boolean; + /** Enable click/tap BIM element selection. Defaults to true. */ + enableSelection?: boolean; + /** Show the built-in IFC entity/property inspector. Defaults to true. */ + showProperties?: boolean; + /** Maximum property rows rendered by the built-in inspector. Defaults to 250. */ + maxProperties?: number; + /** Advanced stable Flyfish hook invoked once the That Open model has mounted and is ready. */ + configure?: (context: FileViewerIfcConfigureContext) => void | Promise; +} diff --git a/packages/renderers/3d/src/index.ts b/packages/renderers/3d/src/index.ts index fc77c565f..c2fc0790b 100644 --- a/packages/renderers/3d/src/index.ts +++ b/packages/renderers/3d/src/index.ts @@ -5,6 +5,40 @@ import { type FileViewerRendererPlugin, type RendererDefinition, } from '@file-viewer/core'; +import { type FileViewerIfcOptions } from './ifcTypes.js'; +import { + getFileViewerIfcCapabilityHandler, + isFileViewerIfcCapabilityEnabled, +} from './optionalCapabilities.js'; + +export { + DEFAULT_FILE_VIEWER_IFC_FRAGMENTS_WORKER_PATH, + DEFAULT_FILE_VIEWER_IFC_LARGE_MODEL_THRESHOLD_BYTES, + DEFAULT_FILE_VIEWER_IFC_WASM_PATH, +} from './ifcTypes.js'; +export type { + FileViewerIfcConfigureContext, + FileViewerIfcElementInfo, + FileViewerIfcOpaqueConfig, + FileViewerIfcOptions, + FileViewerIfcPerformanceOptions, + FileViewerIfcProperty, + FileViewerIfcPropertySet, + FileViewerIfcThatOpenOptions, + FileViewerIfcThatOpenRuntimeContext, +} from './ifcTypes.js'; +export { + isFileViewerIfcCapabilityEnabled, + registerFileViewerIfcCapability, +} from './optionalCapabilities.js'; +export type { FileViewerIfcCapabilityHandler } from './optionalCapabilities.js'; + +declare module '@file-viewer/core' { + interface FileViewerOptions { + /** Browser-native IFC/BIM preview options, active when @file-viewer/capability-ifc is installed. */ + ifc?: FileViewerIfcOptions; + } +} const modelDefinition = DEFAULT_RENDERER_DEFINITIONS.find( definition => definition.id === 'model' @@ -16,12 +50,44 @@ if (!modelDefinition) { export const modelRendererDefinition = modelDefinition; +const normalizeModelType = (type?: string) => (type || '').replace(/^\./, '').toLowerCase(); + +const positiveNumber = (value: unknown, fallback: number) => { + const parsed = Number(value); + return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback; +}; + export const renderFileViewerModel: FileRenderHandler = ( buffer, target, type, context -) => import('./model.js').then(({ default: renderModel }) => renderModel(buffer, target, type, context)); +) => { + if (normalizeModelType(type) === 'ifc') { + if (!isFileViewerIfcCapabilityEnabled()) { + return Promise.reject(new Error( + 'IFC support is opt-in. Install and import @file-viewer/capability-ifc, then publish the @file-viewer/assets-ifc runtime assets (or use `npx file-viewer-cli config add ifc --write`).' + )); + } + + const options = context?.options?.ifc as FileViewerIfcOptions | undefined; + const maxSourceBytes = positiveNumber(options?.performance?.maxSourceBytes, Number.POSITIVE_INFINITY); + if (buffer.byteLength > maxSourceBytes) { + return Promise.reject(new Error( + `IFC source is ${buffer.byteLength} bytes, above the configured ifc.performance.maxSourceBytes limit of ${Math.floor(maxSourceBytes)} bytes.` + )); + } + + const specialist = getFileViewerIfcCapabilityHandler(); + if (!specialist) { + return Promise.reject(new Error( + 'IFC support is enabled, but @file-viewer/capability-ifc did not register its That Open Components / Fragments handler.' + )); + } + return specialist(buffer, target, type, context); + } + return import('./model.js').then(({ default: renderModel }) => renderModel(buffer, target, type, context)); +}; export const modelRenderer: FileViewerRendererPlugin> = { id: 'file-viewer-renderer-3d', diff --git a/packages/renderers/3d/src/optionalCapabilities.ts b/packages/renderers/3d/src/optionalCapabilities.ts new file mode 100644 index 000000000..3a6ba5a4b --- /dev/null +++ b/packages/renderers/3d/src/optionalCapabilities.ts @@ -0,0 +1,34 @@ +import type { + FileRenderHandler, + FileViewerRenderedInstance, +} from '@file-viewer/core'; + +export type FileViewerIfcCapabilityHandler = FileRenderHandler< + FileViewerRenderedInstance, + HTMLDivElement +>; + +let ifcCapabilityEnabled = false; +let ifcCapabilityHandler: FileViewerIfcCapabilityHandler | null = null; + +/** + * Enable/disable the separately installed IFC/BIM capability and optionally + * register its specialist backend handler. + */ +export const registerFileViewerIfcCapability = ( + enabledOrHandler: boolean | FileViewerIfcCapabilityHandler = true +) => { + if (typeof enabledOrHandler === 'function') { + ifcCapabilityEnabled = true; + ifcCapabilityHandler = enabledOrHandler; + return; + } + ifcCapabilityEnabled = enabledOrHandler; + if (!enabledOrHandler) ifcCapabilityHandler = null; +}; + +/** Internal/runtime probe used before the lazy IFC adapter is imported. */ +export const isFileViewerIfcCapabilityEnabled = () => ifcCapabilityEnabled; + +/** Internal specialist backend registered by @file-viewer/capability-ifc. */ +export const getFileViewerIfcCapabilityHandler = () => ifcCapabilityHandler; diff --git a/packages/renderers/geometry-engine/README.en.md b/packages/renderers/geometry-engine/README.en.md index 05ca142c0..2f4f2ceb5 100644 --- a/packages/renderers/geometry-engine/README.en.md +++ b/packages/renderers/geometry-engine/README.en.md @@ -1,6 +1,6 @@ # @file-viewer/geometry-engine -Framework-neutral, UI-free geometry kernel for Flyfish File Viewer. It now decodes STEP / STP, IGES / IGS, and BREP directly in the browser: OCCT tessellation runs in a local worker, with no upload or server-side conversion. IFC and Rhino 3DM currently provide signature detection and accurate capability notices only; their full geometry renderers are not wired yet. +Framework-neutral, UI-free geometry kernel for Flyfish File Viewer. It decodes STEP / STP, IGES / IGS, and BREP directly in the browser: OCCT tessellation runs in a local worker, with no upload or server-side conversion. IFC signature detection remains here for routing, while full IFC/BIM visual preview is supplied by the separate explicit `@file-viewer/capability-ifc` integration over `@file-viewer/renderer-3d`. Rhino 3DM still provides signature detection and capability guidance only. ```ts import { importOcctGeometryFile } from '@file-viewer/geometry-engine' @@ -30,7 +30,7 @@ The runtime never falls back to a CDN. Deploy these files with the viewer: - `wasm/model/LICENSE.occt.txt` - `wasm/model/LICENSE.occt-import-js.txt` -`@file-viewer/vite-plugin`, full packages, and the repository build scripts copy these assets. A bare package integration must self-host them and provide `workerUrl`, `runtimeUrl`, and `wasmUrl`. For subpath deployments, asset domains, or controlled gateways, pass final absolute URLs or correctly prefixed URLs instead of relying on the site root. +These OCCT files are owned by `@file-viewer/assets-model`. IFC has a separate `@file-viewer/assets-ifc` package so its MPL-2.0 `web-ifc` API/WASM files are installed only when the IFC capability is selected. A strict CSP must at least allow the asset origin in `worker-src`, `script-src`, and `connect-src` for the WASM fetch; some browsers also require `script-src 'wasm-unsafe-eval'` to compile WebAssembly. The classic worker loads the local runtime with `importScripts()`, so allowing only the WASM file is not sufficient. @@ -38,7 +38,8 @@ A strict CSP must at least allow the asset origin in `worker-src`, `script-src`, - `inspectGeometryKernelFile()` still offers prefix-only detection for common STEP / IGES / IFC / 3DM / BREP signatures. - STEP / STP, IGES / IGS, and BREP use `occt-import-js` / OpenCascade and have a complete mesh-preview path. -- IFC still needs a dedicated `web-ifc` / That Open integration; 3DM still needs McNeel `rhino3dm`. Neither format is presented as fully previewable yet. +- IFC visual preview is optional and lives in `@file-viewer/capability-ifc` + `@file-viewer/assets-ifc`; it is intentionally not part of this geometry kernel or the default preset closure. +- 3DM still needs a dedicated McNeel `rhino3dm` path and is not presented as fully previewable yet. - The OCCT and `occt-import-js` license notices must ship with the offline assets. -Keeping this heavy path in a separate package lets `@file-viewer/core` stay small while worker, WASM, licensing, and real engineering-file regressions remain independently maintainable. +Keeping these heavy paths separated lets `@file-viewer/core` stay small while Worker/WASM, licensing, and real engineering-file regressions remain independently maintainable. diff --git a/packages/renderers/geometry-engine/README.md b/packages/renderers/geometry-engine/README.md index 218cea485..f6db2c7eb 100644 --- a/packages/renderers/geometry-engine/README.md +++ b/packages/renderers/geometry-engine/README.md @@ -1,6 +1,6 @@ # @file-viewer/geometry-engine -Flyfish File Viewer 的无 UI、框架无关几何内核包。它已经提供浏览器原生的 STEP / STP、IGES / IGS 和 BREP 解析:文件在本地 OCCT Worker 中完成三角化,不需要上传或服务端转换。IFC 和 Rhino 3DM 目前只提供格式识别与准确的能力提示,尚未接入完整几何渲染。 +Flyfish File Viewer 的无 UI、框架无关几何内核包。它提供浏览器原生 STEP / STP、IGES / IGS 和 BREP 解析:文件在本地 OCCT Worker 中完成三角化,不需要上传或服务端转换。IFC 的签名识别仍保留在这里用于路由,但完整 IFC / BIM 可视预览由显式可选的 `@file-viewer/capability-ifc` 在 `@file-viewer/renderer-3d` 上提供。Rhino 3DM 仍只提供签名识别和能力提示。 ```ts import { importOcctGeometryFile } from '@file-viewer/geometry-engine' @@ -22,7 +22,7 @@ const result = await importOcctGeometryFile(buffer, 'step', { ## 离线资产 -运行时不访问 CDN。部署时需要把下列文件放到同一套静态资源中: +运行时不访问 CDN。部署 STEP / IGES / BREP 时需要: - `wasm/model/occt-worker.js` - `wasm/model/occt-import-js.js` @@ -30,15 +30,16 @@ const result = await importOcctGeometryFile(buffer, 'step', { - `wasm/model/LICENSE.occt.txt` - `wasm/model/LICENSE.occt-import-js.txt` -`@file-viewer/vite-plugin`、full 包和仓库构建脚本会复制这些资产。直接集成本包时,需要自行托管并传入 `workerUrl`、`runtimeUrl` 和 `wasmUrl`。应用部署在子路径、资源域名或受控网关下时,请传入最终可访问的绝对 URL 或带前缀 URL,不要依赖站点根路径。 +这些 OCCT 文件由 `@file-viewer/assets-model` 负责。IFC 使用单独的 `@file-viewer/assets-ifc`,因此 MPL-2.0 `web-ifc` API/WASM 只有明确选择 IFC capability 时才会安装。 -严格 CSP 至少应允许资产来源出现在 `worker-src`、`script-src` 和用于获取 WASM 的 `connect-src` 中;部分浏览器还要求 `script-src 'wasm-unsafe-eval'` 才能编译 WebAssembly。Worker 使用本地 `importScripts()` 加载 runtime,因此不要只放行 WASM 而漏掉 runtime 脚本。 +严格 CSP 至少应允许资产来源出现在 `worker-src`、`script-src` 和用于获取 WASM 的 `connect-src` 中;部分浏览器还要求 `script-src 'wasm-unsafe-eval'` 才能编译 WebAssembly。 ## 能力边界 - `inspectGeometryKernelFile()` 仍可只读取文件前缀,识别 STEP / IGES / IFC / 3DM / BREP 常见签名。 - STEP / STP、IGES / IGS 和 BREP 走 `occt-import-js` / OpenCascade,已经具备完整网格预览路径。 -- IFC 仍需要独立的 `web-ifc` / That Open 集成;3DM 仍需要 McNeel `rhino3dm` 集成。当前不会把它们伪装成已支持预览。 +- IFC 可视预览位于 `@file-viewer/capability-ifc` + `@file-viewer/assets-ifc`,不属于本几何内核或默认 preset 依赖闭包。 +- 3DM 仍需要 McNeel `rhino3dm` 独立链路,当前不会把它伪装成完整预览。 - OCCT 与 `occt-import-js` 的许可证文件必须随离线资产一起分发。 -把重型几何能力留在独立包中,可以让 `@file-viewer/core` 保持轻量,同时隔离 Worker、WASM、许可证和真实工程样本回归边界。 +把重型几何能力按 capability 分离,可以让 `@file-viewer/core` 保持轻量,同时独立维护 Worker、WASM、许可证和真实工程样本回归边界。 diff --git a/packages/tools/assets-ifc/README.en.md b/packages/tools/assets-ifc/README.en.md new file mode 100644 index 000000000..06446946c --- /dev/null +++ b/packages/tools/assets-ifc/README.en.md @@ -0,0 +1,5 @@ +# @file-viewer/assets-ifc + +Self-hosted runtime assets for the explicit `@file-viewer/capability-ifc` integration. Every IFC uses That Open Components + Fragments, with `web-ifc@0.0.77` as the underlying parser. This pack stages `web-ifc.wasm`, `web-ifc-mt.wasm`, the Fragments worker, and the required MPL-2.0 / MIT notices. No public CDN is used. + +`web-ifc` is MPL-2.0. `@thatopen/components` and `@thatopen/fragments` are MIT. Preserve the staged license notices when redistributing these runtime assets. diff --git a/packages/tools/assets-ifc/README.md b/packages/tools/assets-ifc/README.md new file mode 100644 index 000000000..af8ebdbcc --- /dev/null +++ b/packages/tools/assets-ifc/README.md @@ -0,0 +1,3 @@ +# @file-viewer/assets-ifc + +显式 `@file-viewer/capability-ifc` 的自托管 runtime 资产包。所有 IFC 都使用 That Open Components + Fragments;`web-ifc@0.0.77` 作为 `IfcLoader` 底层解析器。资产包包含 `web-ifc.wasm`、`web-ifc-mt.wasm`、Fragments worker,以及 MPL-2.0 / MIT 许可证文本,不使用公共 CDN。 diff --git a/packages/tools/assets-ifc/THIRD_PARTY_NOTICES.md b/packages/tools/assets-ifc/THIRD_PARTY_NOTICES.md new file mode 100644 index 000000000..3d8331e0f --- /dev/null +++ b/packages/tools/assets-ifc/THIRD_PARTY_NOTICES.md @@ -0,0 +1,23 @@ +# Third-party notices + +## web-ifc 0.0.77 + +`@file-viewer/assets-ifc` redistributes the browser ESM API and WebAssembly runtime files published by `web-ifc@0.0.77`. + +- Project: web-ifc / That Open Company +- License: Mozilla Public License 2.0 (MPL-2.0) +- Redistributed files: `web-ifc-api.js`, `web-ifc.wasm`, `web-ifc-mt.wasm` +- Packaged license: `viewer/wasm/model/LICENSE.web-ifc-MPL-2.0.md` + +The File Viewer wrapper code remains Apache-2.0. The MPL-2.0 terms continue to apply to the redistributed web-ifc files. + +## @thatopen/fragments 3.4.7 + +The optional IFC capability uses `@thatopen/fragments@3.4.7` for its worker-backed large-model path and redistributes the matching module worker through `@file-viewer/assets-ifc` so deployments remain self-hosted. + +- Project: Fragments / That Open Company +- License: MIT +- Redistributed file: `fragments-worker.mjs` +- Packaged notice: `viewer/wasm/model/LICENSE.thatopen-fragments-MIT.txt` + +`@thatopen/components@3.4.8` is also an MIT-licensed runtime dependency of `@file-viewer/capability-ifc`. It is installed as a normal npm dependency rather than copied into this asset pack. diff --git a/packages/tools/assets-ifc/bin/install.mjs b/packages/tools/assets-ifc/bin/install.mjs new file mode 100644 index 000000000..69d040eb6 --- /dev/null +++ b/packages/tools/assets-ifc/bin/install.mjs @@ -0,0 +1,7 @@ +#!/usr/bin/env node +import { dirname, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' +import { runFileViewerAssetPackCli } from '@file-viewer/asset-installer' + +const outcome = await runFileViewerAssetPackCli(resolve(dirname(fileURLToPath(import.meta.url)), '..'), process.argv.slice(2)) +process.stdout.write(outcome.help ? outcome.text : `[file-viewer] Installed @file-viewer/assets-ifc assets in ${outcome.result.targetDir}.\n`) diff --git a/packages/tools/assets-ifc/file-viewer.asset-pack.json b/packages/tools/assets-ifc/file-viewer.asset-pack.json new file mode 100644 index 000000000..5ece0863d --- /dev/null +++ b/packages/tools/assets-ifc/file-viewer.asset-pack.json @@ -0,0 +1,7 @@ +{ + "schemaVersion": 1, + "id": "ifc", + "packageName": "@file-viewer/assets-ifc", + "copyGroups": ["model"], + "receiptFilename": "file-viewer-assets-ifc.receipt.json" +} diff --git a/packages/tools/assets-ifc/package.json b/packages/tools/assets-ifc/package.json new file mode 100644 index 000000000..5ce2cd178 --- /dev/null +++ b/packages/tools/assets-ifc/package.json @@ -0,0 +1,39 @@ +{ + "name": "@file-viewer/assets-ifc", + "version": "3.0.3", + "private": false, + "type": "module", + "description": "Independent self-hosted web-ifc and That Open Fragments worker assets for the optional File Viewer IFC/BIM capability.", + "exports": { + "./asset-pack": "./viewer/file-viewer-asset-pack.json", + "./viewer/*": "./viewer/*", + "./package.json": "./package.json" + }, + "files": ["bin", "viewer", "file-viewer.asset-pack.json", "README.md", "README.en.md", "THIRD_PARTY_NOTICES.md"], + "bin": { + "file-viewer-assets-ifc": "./bin/install.mjs" + }, + "dependencies": { + "@file-viewer/asset-installer": "workspace:3.0.3" + }, + "devDependencies": { + "@thatopen/fragments": "3.4.7", + "web-ifc": "0.0.77" + }, + "scripts": { + "stage-assets": "node scripts/stage-assets.mjs", + "verify": "pnpm stage-assets && node scripts/verify-assets.mjs", + "prepack": "pnpm stage-assets" + }, + "engines": { "node": ">=20" }, + "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" }, + "repository": { + "type": "git", + "url": "git+https://github.com/flyfish-dev/file-viewer.git", + "directory": "packages/tools/assets-ifc" + }, + "fileViewer": { + "assetPackManifest": "./file-viewer.asset-pack.json" + }, + "license": "Apache-2.0" +} diff --git a/packages/tools/assets-ifc/scripts/stage-assets.mjs b/packages/tools/assets-ifc/scripts/stage-assets.mjs new file mode 100644 index 000000000..720fb04f7 --- /dev/null +++ b/packages/tools/assets-ifc/scripts/stage-assets.mjs @@ -0,0 +1,125 @@ +import { createRequire } from 'node:module' +import { cp, mkdir, readFile, readdir, rm, writeFile } from 'node:fs/promises' +import { basename, dirname, relative, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' + +const packageDir = resolve(dirname(fileURLToPath(import.meta.url)), '..') +const require = createRequire(import.meta.url) +const webIfcDir = dirname(require.resolve('web-ifc')) +const fragmentsEntry = require.resolve('@thatopen/fragments') +const fragmentsPackageDir = resolve(dirname(fragmentsEntry), '..') +const targetDir = resolve(packageDir, 'viewer/wasm/model') +const manifestPath = resolve(packageDir, 'viewer/file-viewer-asset-pack.json') + +async function findWorker(root) { + const preferred = [] + const fallback = [] + const visit = async dir => { + for (const entry of await readdir(dir, { withFileTypes: true })) { + const path = resolve(dir, entry.name) + if (entry.isDirectory()) { + await visit(path) + continue + } + const name = entry.name.toLowerCase() + if (name !== 'worker.mjs' && name !== 'worker.js') continue + if (path.toLowerCase().includes('/worker/')) preferred.push(path) + else fallback.push(path) + } + } + await visit(root) + const candidates = [...preferred, ...fallback] + if (!candidates.length) { + throw new Error(`Unable to locate the @thatopen/fragments worker below ${root}`) + } + return candidates[0] +} + +const fragmentsWorker = await findWorker(fragmentsPackageDir) +const fragmentsWorkerPackagePath = relative(fragmentsPackageDir, fragmentsWorker).replaceAll('\\', '/') + +const assets = [ + { + id: 'model-web-ifc-wasm', + sourcePath: resolve(webIfcDir, 'web-ifc.wasm'), + filename: 'web-ifc.wasm', + kind: 'wasm', + optionPath: 'ifc.wasmUrl', + packagePath: 'web-ifc/web-ifc.wasm', + description: 'Pinned web-ifc 0.0.77 single-thread WebAssembly parser and geometry engine.', + }, + { + id: 'model-web-ifc-mt-wasm', + sourcePath: resolve(webIfcDir, 'web-ifc-mt.wasm'), + filename: 'web-ifc-mt.wasm', + kind: 'wasm', + optionPath: 'ifc.wasmMtUrl', + packagePath: 'web-ifc/web-ifc-mt.wasm', + description: 'Pinned web-ifc 0.0.77 multi-thread WebAssembly parser and geometry engine.', + }, + { + id: 'model-web-ifc-license', + sourcePath: resolve(webIfcDir, 'LICENSE.md'), + filename: 'LICENSE.web-ifc-MPL-2.0.md', + kind: 'license', + packagePath: 'web-ifc/LICENSE.md', + description: 'Mozilla Public License 2.0 text distributed with web-ifc 0.0.77.', + }, + { + id: 'model-thatopen-fragments-worker', + sourcePath: fragmentsWorker, + filename: 'fragments-worker.mjs', + kind: 'worker', + optionPath: 'ifc.thatOpen.workerUrl', + packagePath: `@thatopen/fragments/${fragmentsWorkerPackagePath}`, + description: 'Pinned @thatopen/fragments 3.4.7 module worker for IFC culling, LOD and model operations.', + }, +] + +await rm(resolve(packageDir, 'viewer'), { recursive: true, force: true }) +await mkdir(targetDir, { recursive: true }) +for (const asset of assets) { + await cp(asset.sourcePath, resolve(targetDir, asset.filename), { force: true }) +} + +const fragmentsLicense = `MIT License\n\nCopyright (c) That Open Company\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the "Software"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n` +await writeFile(resolve(targetDir, 'LICENSE.thatopen-fragments-MIT.txt'), fragmentsLicense, 'utf8') +assets.push({ + id: 'model-thatopen-fragments-license', + sourcePath: resolve(targetDir, 'LICENSE.thatopen-fragments-MIT.txt'), + filename: 'LICENSE.thatopen-fragments-MIT.txt', + kind: 'license', + packagePath: '@thatopen/fragments (MIT license notice)', + description: 'MIT license notice for @thatopen/fragments 3.4.7 and its redistributed worker.', +}) + +const rendererAssets = assets.map(asset => ({ + id: asset.id, + rendererId: 'model', + kind: asset.kind, + target: 'public', + required: true, + defaultPath: `wasm/model/${asset.filename}`, + packagePath: asset.packagePath, + ...(asset.optionPath ? { optionPath: asset.optionPath } : {}), + description: asset.description, +})) + +const manifest = { + schemaVersion: 1, + packageName: '@file-viewer/assets-ifc', + packageVersion: '3.0.3', + copyGroups: ['model'], + receiptFilename: 'file-viewer-assets-ifc.receipt.json', + rendererAssetManifests: [{ rendererId: 'model', assets: rendererAssets }], +} +await mkdir(dirname(manifestPath), { recursive: true }) +await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, 'utf8') + +const webIfcLicense = await readFile(resolve(targetDir, 'LICENSE.web-ifc-MPL-2.0.md'), 'utf8') +if (!webIfcLicense.includes('Mozilla Public License')) throw new Error('web-ifc MPL-2.0 license text was not staged') +const worker = await readFile(resolve(targetDir, 'fragments-worker.mjs'), 'utf8') +if (!worker.includes('postMessage') && !worker.includes('onmessage')) { + throw new Error(`Unexpected That Open worker candidate: ${basename(fragmentsWorker)}`) +} +console.log(`[assets-ifc] staged web-ifc 0.0.77 plus @thatopen/fragments 3.4.7 worker (${assets.length} runtime/license files)`) diff --git a/packages/tools/assets-ifc/scripts/verify-assets.mjs b/packages/tools/assets-ifc/scripts/verify-assets.mjs new file mode 100644 index 000000000..19dcc6b05 --- /dev/null +++ b/packages/tools/assets-ifc/scripts/verify-assets.mjs @@ -0,0 +1,40 @@ +import { readFile, stat } from 'node:fs/promises' +import { dirname, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' + +const packageDir = resolve(dirname(fileURLToPath(import.meta.url)), '..') +const root = resolve(packageDir, 'viewer/wasm/model') +const required = [ + 'web-ifc.wasm', + 'web-ifc-mt.wasm', + 'LICENSE.web-ifc-MPL-2.0.md', + 'fragments-worker.mjs', + 'LICENSE.thatopen-fragments-MIT.txt', +] +for (const filename of required) { + const info = await stat(resolve(root, filename)) + if (!info.isFile() || info.size <= 0) throw new Error(`Invalid staged IFC asset: ${filename}`) +} + +const manifest = JSON.parse(await readFile(resolve(packageDir, 'viewer/file-viewer-asset-pack.json'), 'utf8')) +const group = manifest.rendererAssetManifests.find(entry => entry.rendererId === 'model') +if (!group) throw new Error('IFC asset pack is missing the model renderer group') +const ids = new Set(group.assets.map(asset => asset.id)) +for (const id of [ + 'model-web-ifc-wasm', + 'model-web-ifc-mt-wasm', + 'model-web-ifc-license', + 'model-thatopen-fragments-worker', + 'model-thatopen-fragments-license', +]) { + if (!ids.has(id)) throw new Error(`IFC asset pack is missing ${id}`) +} + +const webIfcLicense = await readFile(resolve(root, 'LICENSE.web-ifc-MPL-2.0.md'), 'utf8') +if (!webIfcLicense.includes('Mozilla Public License')) throw new Error('Staged web-ifc license is not MPL-2.0 text') +const fragmentsLicense = await readFile(resolve(root, 'LICENSE.thatopen-fragments-MIT.txt'), 'utf8') +if (!fragmentsLicense.includes('MIT License') || !fragmentsLicense.includes('That Open Company')) { + throw new Error('Staged That Open Fragments worker is missing its MIT attribution notice') +} + +console.log('[assets-ifc] verified self-hosted web-ifc 0.0.77 and @thatopen/fragments 3.4.7 worker assets/licenses') diff --git a/packages/tools/assets-ifc/viewer/file-viewer-asset-pack.json b/packages/tools/assets-ifc/viewer/file-viewer-asset-pack.json new file mode 100644 index 000000000..9f5fd4844 --- /dev/null +++ b/packages/tools/assets-ifc/viewer/file-viewer-asset-pack.json @@ -0,0 +1,69 @@ +{ + "schemaVersion": 1, + "packageName": "@file-viewer/assets-ifc", + "packageVersion": "3.0.3", + "copyGroups": [ + "model" + ], + "receiptFilename": "file-viewer-assets-ifc.receipt.json", + "rendererAssetManifests": [ + { + "rendererId": "model", + "assets": [ + { + "id": "model-web-ifc-wasm", + "rendererId": "model", + "kind": "wasm", + "target": "public", + "required": true, + "defaultPath": "wasm/model/web-ifc.wasm", + "packagePath": "web-ifc/web-ifc.wasm", + "optionPath": "ifc.wasmUrl", + "description": "Pinned web-ifc 0.0.77 single-thread WebAssembly parser and geometry engine." + }, + { + "id": "model-web-ifc-mt-wasm", + "rendererId": "model", + "kind": "wasm", + "target": "public", + "required": true, + "defaultPath": "wasm/model/web-ifc-mt.wasm", + "packagePath": "web-ifc/web-ifc-mt.wasm", + "optionPath": "ifc.wasmMtUrl", + "description": "Pinned web-ifc 0.0.77 multi-thread WebAssembly parser and geometry engine." + }, + { + "id": "model-web-ifc-license", + "rendererId": "model", + "kind": "license", + "target": "public", + "required": true, + "defaultPath": "wasm/model/LICENSE.web-ifc-MPL-2.0.md", + "packagePath": "web-ifc/LICENSE.md", + "description": "Mozilla Public License 2.0 text distributed with web-ifc 0.0.77." + }, + { + "id": "model-thatopen-fragments-worker", + "rendererId": "model", + "kind": "worker", + "target": "public", + "required": true, + "defaultPath": "wasm/model/fragments-worker.mjs", + "packagePath": "@thatopen/fragments/dist/Worker/worker.mjs", + "optionPath": "ifc.thatOpen.workerUrl", + "description": "Pinned @thatopen/fragments 3.4.7 module worker for IFC culling, LOD and model operations." + }, + { + "id": "model-thatopen-fragments-license", + "rendererId": "model", + "kind": "license", + "target": "public", + "required": true, + "defaultPath": "wasm/model/LICENSE.thatopen-fragments-MIT.txt", + "packagePath": "@thatopen/fragments (MIT license notice)", + "description": "MIT license notice for @thatopen/fragments 3.4.7 and its redistributed worker." + } + ] + } + ] +} diff --git a/packages/tools/assets-ifc/viewer/wasm/model/LICENSE.thatopen-fragments-MIT.txt b/packages/tools/assets-ifc/viewer/wasm/model/LICENSE.thatopen-fragments-MIT.txt new file mode 100644 index 000000000..109bb63df --- /dev/null +++ b/packages/tools/assets-ifc/viewer/wasm/model/LICENSE.thatopen-fragments-MIT.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) That Open Company + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/tools/assets-ifc/viewer/wasm/model/LICENSE.web-ifc-MPL-2.0.md b/packages/tools/assets-ifc/viewer/wasm/model/LICENSE.web-ifc-MPL-2.0.md new file mode 100644 index 000000000..a612ad981 --- /dev/null +++ b/packages/tools/assets-ifc/viewer/wasm/model/LICENSE.web-ifc-MPL-2.0.md @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/packages/tools/assets-ifc/viewer/wasm/model/fragments-worker.mjs b/packages/tools/assets-ifc/viewer/wasm/model/fragments-worker.mjs new file mode 100644 index 000000000..dbb627391 --- /dev/null +++ b/packages/tools/assets-ifc/viewer/wasm/model/fragments-worker.mjs @@ -0,0 +1,82523 @@ +var __defProp = Object.defineProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; +var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); +}; +var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); +}; +var __privateAdd = (obj, member, value) => { + if (member.has(obj)) + throw TypeError("Cannot add the same private member more than once"); + member instanceof WeakSet ? member.add(obj) : member.set(obj, value); +}; +var __privateSet = (obj, member, value, setter) => { + __accessCheck(obj, member, "write to private field"); + setter ? setter.call(obj, value) : member.set(obj, value); + return value; +}; +var __privateWrapper = (obj, member, setter, getter) => ({ + set _(value) { + __privateSet(obj, member, value, setter); + }, + get _() { + return __privateGet(obj, member, getter); + } +}); +var __privateMethod = (obj, member, method) => { + __accessCheck(obj, member, "access private method"); + return method; +}; +var _a, _constructing, _max, _maxSize, _dispose, _onInsert, _disposeAfter, _fetchMethod, _memoMethod, _size, _calculatedSize, _keyMap, _keyList, _valList, _next, _prev, _head, _tail, _free, _disposed, _sizes, _starts, _ttls, _hasDispose, _hasFetchMethod, _hasDisposeAfter, _hasOnInsert, _initializeTTLTracking, initializeTTLTracking_fn, _updateItemAge, _statusTTL, _setItemTTL, _isStale, _initializeSizeTracking, initializeSizeTracking_fn, _removeItemSize, _addItemSize, _requireSize, _indexes, indexes_fn, _rindexes, rindexes_fn, _isValidIndex, isValidIndex_fn, _b, _evict, evict_fn, _backgroundFetch, backgroundFetch_fn, _isBackgroundFetch, isBackgroundFetch_fn, _connect, connect_fn, _moveToTail, moveToTail_fn, _delete, delete_fn, _clear, clear_fn, _c; +class ConnectionHandlers { + constructor() { + __publicField(this, "_list", /* @__PURE__ */ new Map()); + __publicField(this, "_communicationKey", 0); + } + setupInput(input) { + input.requestId = this._communicationKey++; + } + set(id, reject, resolve) { + const handler = this.newHandler(reject, resolve); + this._list.set(id, handler); + } + // It resolves the awaited model.threads.fetch(...) + run(data) { + const handler = this._list.get(data.requestId); + this._list.delete(data.requestId); + handler(data); + } + newHandler(reject, resolve) { + return (response) => { + if (response.errorInfo) { + reject(response.errorInfo); + return; + } + resolve(response); + }; + } +} +/** + * @license + * Copyright 2010-2025 Three.js Authors + * SPDX-License-Identifier: MIT + */ +const REVISION = "182"; +const FrontSide = 0; +const BackSide = 1; +const DoubleSide = 2; +const NormalBlending = 1; +const AddEquation = 100; +const SrcAlphaFactor = 204; +const OneMinusSrcAlphaFactor = 205; +const LessEqualDepth = 3; +const MultiplyOperation = 0; +const UVMapping = 300; +const RepeatWrapping = 1e3; +const ClampToEdgeWrapping = 1001; +const MirroredRepeatWrapping = 1002; +const NearestFilter = 1003; +const LinearFilter = 1006; +const LinearMipmapLinearFilter = 1008; +const UnsignedByteType = 1009; +const UnsignedIntType = 1014; +const FloatType = 1015; +const RGBAFormat = 1023; +const RedFormat = 1028; +const RedIntegerFormat = 1029; +const NoColorSpace = ""; +const SRGBColorSpace = "srgb"; +const LinearSRGBColorSpace = "srgb-linear"; +const LinearTransfer = "linear"; +const SRGBTransfer = "srgb"; +const KeepStencilOp = 7680; +const AlwaysStencilFunc = 519; +const StaticDrawUsage = 35044; +const WebGLCoordinateSystem = 2e3; +const WebGPUCoordinateSystem = 2001; +function arrayNeedsUint32(array) { + for (let i = array.length - 1; i >= 0; --i) { + if (array[i] >= 65535) + return true; + } + return false; +} +function createElementNS(name) { + return document.createElementNS("http://www.w3.org/1999/xhtml", name); +} +const _cache = {}; +function warn(...params) { + const message = "THREE." + params.shift(); + { + console.warn(message, ...params); + } +} +function error(...params) { + const message = "THREE." + params.shift(); + { + console.error(message, ...params); + } +} +function warnOnce(...params) { + const message = params.join(" "); + if (message in _cache) + return; + _cache[message] = true; + warn(...params); +} +class EventDispatcher { + /** + * Adds the given event listener to the given event type. + * + * @param {string} type - The type of event to listen to. + * @param {Function} listener - The function that gets called when the event is fired. + */ + addEventListener(type, listener) { + if (this._listeners === void 0) + this._listeners = {}; + const listeners = this._listeners; + if (listeners[type] === void 0) { + listeners[type] = []; + } + if (listeners[type].indexOf(listener) === -1) { + listeners[type].push(listener); + } + } + /** + * Returns `true` if the given event listener has been added to the given event type. + * + * @param {string} type - The type of event. + * @param {Function} listener - The listener to check. + * @return {boolean} Whether the given event listener has been added to the given event type. + */ + hasEventListener(type, listener) { + const listeners = this._listeners; + if (listeners === void 0) + return false; + return listeners[type] !== void 0 && listeners[type].indexOf(listener) !== -1; + } + /** + * Removes the given event listener from the given event type. + * + * @param {string} type - The type of event. + * @param {Function} listener - The listener to remove. + */ + removeEventListener(type, listener) { + const listeners = this._listeners; + if (listeners === void 0) + return; + const listenerArray = listeners[type]; + if (listenerArray !== void 0) { + const index = listenerArray.indexOf(listener); + if (index !== -1) { + listenerArray.splice(index, 1); + } + } + } + /** + * Dispatches an event object. + * + * @param {Object} event - The event that gets fired. + */ + dispatchEvent(event) { + const listeners = this._listeners; + if (listeners === void 0) + return; + const listenerArray = listeners[event.type]; + if (listenerArray !== void 0) { + event.target = this; + const array = listenerArray.slice(0); + for (let i = 0, l = array.length; i < l; i++) { + array[i].call(this, event); + } + event.target = null; + } + } +} +const _lut = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1a", "1b", "1c", "1d", "1e", "1f", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3a", "3b", "3c", "3d", "3e", "3f", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4a", "4b", "4c", "4d", "4e", "4f", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5a", "5b", "5c", "5d", "5e", "5f", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6a", "6b", "6c", "6d", "6e", "6f", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7a", "7b", "7c", "7d", "7e", "7f", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8a", "8b", "8c", "8d", "8e", "8f", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9a", "9b", "9c", "9d", "9e", "9f", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "aa", "ab", "ac", "ad", "ae", "af", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "ba", "bb", "bc", "bd", "be", "bf", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "ca", "cb", "cc", "cd", "ce", "cf", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "da", "db", "dc", "dd", "de", "df", "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "ea", "eb", "ec", "ed", "ee", "ef", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "fa", "fb", "fc", "fd", "fe", "ff"]; +let _seed = 1234567; +const DEG2RAD = Math.PI / 180; +const RAD2DEG = 180 / Math.PI; +function generateUUID() { + const d0 = Math.random() * 4294967295 | 0; + const d1 = Math.random() * 4294967295 | 0; + const d2 = Math.random() * 4294967295 | 0; + const d3 = Math.random() * 4294967295 | 0; + const uuid = _lut[d0 & 255] + _lut[d0 >> 8 & 255] + _lut[d0 >> 16 & 255] + _lut[d0 >> 24 & 255] + "-" + _lut[d1 & 255] + _lut[d1 >> 8 & 255] + "-" + _lut[d1 >> 16 & 15 | 64] + _lut[d1 >> 24 & 255] + "-" + _lut[d2 & 63 | 128] + _lut[d2 >> 8 & 255] + "-" + _lut[d2 >> 16 & 255] + _lut[d2 >> 24 & 255] + _lut[d3 & 255] + _lut[d3 >> 8 & 255] + _lut[d3 >> 16 & 255] + _lut[d3 >> 24 & 255]; + return uuid.toLowerCase(); +} +function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); +} +function euclideanModulo(n, m) { + return (n % m + m) % m; +} +function mapLinear(x, a1, a2, b1, b2) { + return b1 + (x - a1) * (b2 - b1) / (a2 - a1); +} +function inverseLerp(x, y, value) { + if (x !== y) { + return (value - x) / (y - x); + } else { + return 0; + } +} +function lerp(x, y, t) { + return (1 - t) * x + t * y; +} +function damp(x, y, lambda, dt) { + return lerp(x, y, 1 - Math.exp(-lambda * dt)); +} +function pingpong(x, length = 1) { + return length - Math.abs(euclideanModulo(x, length * 2) - length); +} +function smoothstep(x, min, max) { + if (x <= min) + return 0; + if (x >= max) + return 1; + x = (x - min) / (max - min); + return x * x * (3 - 2 * x); +} +function smootherstep(x, min, max) { + if (x <= min) + return 0; + if (x >= max) + return 1; + x = (x - min) / (max - min); + return x * x * x * (x * (x * 6 - 15) + 10); +} +function randInt(low, high) { + return low + Math.floor(Math.random() * (high - low + 1)); +} +function randFloat(low, high) { + return low + Math.random() * (high - low); +} +function randFloatSpread(range) { + return range * (0.5 - Math.random()); +} +function seededRandom(s) { + if (s !== void 0) + _seed = s; + let t = _seed += 1831565813; + t = Math.imul(t ^ t >>> 15, t | 1); + t ^= t + Math.imul(t ^ t >>> 7, t | 61); + return ((t ^ t >>> 14) >>> 0) / 4294967296; +} +function degToRad(degrees) { + return degrees * DEG2RAD; +} +function radToDeg(radians) { + return radians * RAD2DEG; +} +function isPowerOfTwo(value) { + return (value & value - 1) === 0 && value !== 0; +} +function ceilPowerOfTwo(value) { + return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2)); +} +function floorPowerOfTwo(value) { + return Math.pow(2, Math.floor(Math.log(value) / Math.LN2)); +} +function setQuaternionFromProperEuler(q, a, b, c, order) { + const cos = Math.cos; + const sin = Math.sin; + const c2 = cos(b / 2); + const s2 = sin(b / 2); + const c13 = cos((a + c) / 2); + const s13 = sin((a + c) / 2); + const c1_3 = cos((a - c) / 2); + const s1_3 = sin((a - c) / 2); + const c3_1 = cos((c - a) / 2); + const s3_1 = sin((c - a) / 2); + switch (order) { + case "XYX": + q.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13); + break; + case "YZY": + q.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13); + break; + case "ZXZ": + q.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13); + break; + case "XZX": + q.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13); + break; + case "YXY": + q.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13); + break; + case "ZYZ": + q.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13); + break; + default: + warn("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: " + order); + } +} +function denormalize(value, array) { + switch (array.constructor) { + case Float32Array: + return value; + case Uint32Array: + return value / 4294967295; + case Uint16Array: + return value / 65535; + case Uint8Array: + return value / 255; + case Int32Array: + return Math.max(value / 2147483647, -1); + case Int16Array: + return Math.max(value / 32767, -1); + case Int8Array: + return Math.max(value / 127, -1); + default: + throw new Error("Invalid component type."); + } +} +function normalize(value, array) { + switch (array.constructor) { + case Float32Array: + return value; + case Uint32Array: + return Math.round(value * 4294967295); + case Uint16Array: + return Math.round(value * 65535); + case Uint8Array: + return Math.round(value * 255); + case Int32Array: + return Math.round(value * 2147483647); + case Int16Array: + return Math.round(value * 32767); + case Int8Array: + return Math.round(value * 127); + default: + throw new Error("Invalid component type."); + } +} +const MathUtils = { + DEG2RAD, + RAD2DEG, + /** + * Generate a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) + * (universally unique identifier). + * + * @static + * @method + * @return {string} The UUID. + */ + generateUUID, + /** + * Clamps the given value between min and max. + * + * @static + * @method + * @param {number} value - The value to clamp. + * @param {number} min - The min value. + * @param {number} max - The max value. + * @return {number} The clamped value. + */ + clamp, + /** + * Computes the Euclidean modulo of the given parameters that + * is `( ( n % m ) + m ) % m`. + * + * @static + * @method + * @param {number} n - The first parameter. + * @param {number} m - The second parameter. + * @return {number} The Euclidean modulo. + */ + euclideanModulo, + /** + * Performs a linear mapping from range `` to range `` + * for the given value. + * + * @static + * @method + * @param {number} x - The value to be mapped. + * @param {number} a1 - Minimum value for range A. + * @param {number} a2 - Maximum value for range A. + * @param {number} b1 - Minimum value for range B. + * @param {number} b2 - Maximum value for range B. + * @return {number} The mapped value. + */ + mapLinear, + /** + * Returns the percentage in the closed interval `[0, 1]` of the given value + * between the start and end point. + * + * @static + * @method + * @param {number} x - The start point + * @param {number} y - The end point. + * @param {number} value - A value between start and end. + * @return {number} The interpolation factor. + */ + inverseLerp, + /** + * Returns a value linearly interpolated from two known points based on the given interval - + * `t = 0` will return `x` and `t = 1` will return `y`. + * + * @static + * @method + * @param {number} x - The start point + * @param {number} y - The end point. + * @param {number} t - The interpolation factor in the closed interval `[0, 1]`. + * @return {number} The interpolated value. + */ + lerp, + /** + * Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta + * time to maintain frame rate independent movement. For details, see + * [Frame rate independent damping using lerp](http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/). + * + * @static + * @method + * @param {number} x - The current point. + * @param {number} y - The target point. + * @param {number} lambda - A higher lambda value will make the movement more sudden, + * and a lower value will make the movement more gradual. + * @param {number} dt - Delta time in seconds. + * @return {number} The interpolated value. + */ + damp, + /** + * Returns a value that alternates between `0` and the given `length` parameter. + * + * @static + * @method + * @param {number} x - The value to pingpong. + * @param {number} [length=1] - The positive value the function will pingpong to. + * @return {number} The alternated value. + */ + pingpong, + /** + * Returns a value in the range `[0,1]` that represents the percentage that `x` has + * moved between `min` and `max`, but smoothed or slowed down the closer `x` is to + * the `min` and `max`. + * + * See [Smoothstep](http://en.wikipedia.org/wiki/Smoothstep) for more details. + * + * @static + * @method + * @param {number} x - The value to evaluate based on its position between min and max. + * @param {number} min - The min value. Any x value below min will be `0`. + * @param {number} max - The max value. Any x value above max will be `1`. + * @return {number} The alternated value. + */ + smoothstep, + /** + * A [variation on smoothstep](https://en.wikipedia.org/wiki/Smoothstep#Variations) + * that has zero 1st and 2nd order derivatives at x=0 and x=1. + * + * @static + * @method + * @param {number} x - The value to evaluate based on its position between min and max. + * @param {number} min - The min value. Any x value below min will be `0`. + * @param {number} max - The max value. Any x value above max will be `1`. + * @return {number} The alternated value. + */ + smootherstep, + /** + * Returns a random integer from `` interval. + * + * @static + * @method + * @param {number} low - The lower value boundary. + * @param {number} high - The upper value boundary + * @return {number} A random integer. + */ + randInt, + /** + * Returns a random float from `` interval. + * + * @static + * @method + * @param {number} low - The lower value boundary. + * @param {number} high - The upper value boundary + * @return {number} A random float. + */ + randFloat, + /** + * Returns a random integer from `<-range/2, range/2>` interval. + * + * @static + * @method + * @param {number} range - Defines the value range. + * @return {number} A random float. + */ + randFloatSpread, + /** + * Returns a deterministic pseudo-random float in the interval `[0, 1]`. + * + * @static + * @method + * @param {number} [s] - The integer seed. + * @return {number} A random float. + */ + seededRandom, + /** + * Converts degrees to radians. + * + * @static + * @method + * @param {number} degrees - A value in degrees. + * @return {number} The converted value in radians. + */ + degToRad, + /** + * Converts radians to degrees. + * + * @static + * @method + * @param {number} radians - A value in radians. + * @return {number} The converted value in degrees. + */ + radToDeg, + /** + * Returns `true` if the given number is a power of two. + * + * @static + * @method + * @param {number} value - The value to check. + * @return {boolean} Whether the given number is a power of two or not. + */ + isPowerOfTwo, + /** + * Returns the smallest power of two that is greater than or equal to the given number. + * + * @static + * @method + * @param {number} value - The value to find a POT for. + * @return {number} The smallest power of two that is greater than or equal to the given number. + */ + ceilPowerOfTwo, + /** + * Returns the largest power of two that is less than or equal to the given number. + * + * @static + * @method + * @param {number} value - The value to find a POT for. + * @return {number} The largest power of two that is less than or equal to the given number. + */ + floorPowerOfTwo, + /** + * Sets the given quaternion from the [Intrinsic Proper Euler Angles](https://en.wikipedia.org/wiki/Euler_angles) + * defined by the given angles and order. + * + * Rotations are applied to the axes in the order specified by order: + * rotation by angle `a` is applied first, then by angle `b`, then by angle `c`. + * + * @static + * @method + * @param {Quaternion} q - The quaternion to set. + * @param {number} a - The rotation applied to the first axis, in radians. + * @param {number} b - The rotation applied to the second axis, in radians. + * @param {number} c - The rotation applied to the third axis, in radians. + * @param {('XYX'|'XZX'|'YXY'|'YZY'|'ZXZ'|'ZYZ')} order - A string specifying the axes order. + */ + setQuaternionFromProperEuler, + /** + * Normalizes the given value according to the given typed array. + * + * @static + * @method + * @param {number} value - The float value in the range `[0,1]` to normalize. + * @param {TypedArray} array - The typed array that defines the data type of the value. + * @return {number} The normalize value. + */ + normalize, + /** + * Denormalizes the given value according to the given typed array. + * + * @static + * @method + * @param {number} value - The value to denormalize. + * @param {TypedArray} array - The typed array that defines the data type of the value. + * @return {number} The denormalize (float) value in the range `[0,1]`. + */ + denormalize +}; +class Vector2 { + /** + * Constructs a new 2D vector. + * + * @param {number} [x=0] - The x value of this vector. + * @param {number} [y=0] - The y value of this vector. + */ + constructor(x = 0, y = 0) { + Vector2.prototype.isVector2 = true; + this.x = x; + this.y = y; + } + /** + * Alias for {@link Vector2#x}. + * + * @type {number} + */ + get width() { + return this.x; + } + set width(value) { + this.x = value; + } + /** + * Alias for {@link Vector2#y}. + * + * @type {number} + */ + get height() { + return this.y; + } + set height(value) { + this.y = value; + } + /** + * Sets the vector components. + * + * @param {number} x - The value of the x component. + * @param {number} y - The value of the y component. + * @return {Vector2} A reference to this vector. + */ + set(x, y) { + this.x = x; + this.y = y; + return this; + } + /** + * Sets the vector components to the same value. + * + * @param {number} scalar - The value to set for all vector components. + * @return {Vector2} A reference to this vector. + */ + setScalar(scalar) { + this.x = scalar; + this.y = scalar; + return this; + } + /** + * Sets the vector's x component to the given value + * + * @param {number} x - The value to set. + * @return {Vector2} A reference to this vector. + */ + setX(x) { + this.x = x; + return this; + } + /** + * Sets the vector's y component to the given value + * + * @param {number} y - The value to set. + * @return {Vector2} A reference to this vector. + */ + setY(y) { + this.y = y; + return this; + } + /** + * Allows to set a vector component with an index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y. + * @param {number} value - The value to set. + * @return {Vector2} A reference to this vector. + */ + setComponent(index, value) { + switch (index) { + case 0: + this.x = value; + break; + case 1: + this.y = value; + break; + default: + throw new Error("index is out of range: " + index); + } + return this; + } + /** + * Returns the value of the vector component which matches the given index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y. + * @return {number} A vector component value. + */ + getComponent(index) { + switch (index) { + case 0: + return this.x; + case 1: + return this.y; + default: + throw new Error("index is out of range: " + index); + } + } + /** + * Returns a new vector with copied values from this instance. + * + * @return {Vector2} A clone of this instance. + */ + clone() { + return new this.constructor(this.x, this.y); + } + /** + * Copies the values of the given vector to this instance. + * + * @param {Vector2} v - The vector to copy. + * @return {Vector2} A reference to this vector. + */ + copy(v) { + this.x = v.x; + this.y = v.y; + return this; + } + /** + * Adds the given vector to this instance. + * + * @param {Vector2} v - The vector to add. + * @return {Vector2} A reference to this vector. + */ + add(v) { + this.x += v.x; + this.y += v.y; + return this; + } + /** + * Adds the given scalar value to all components of this instance. + * + * @param {number} s - The scalar to add. + * @return {Vector2} A reference to this vector. + */ + addScalar(s) { + this.x += s; + this.y += s; + return this; + } + /** + * Adds the given vectors and stores the result in this instance. + * + * @param {Vector2} a - The first vector. + * @param {Vector2} b - The second vector. + * @return {Vector2} A reference to this vector. + */ + addVectors(a, b) { + this.x = a.x + b.x; + this.y = a.y + b.y; + return this; + } + /** + * Adds the given vector scaled by the given factor to this instance. + * + * @param {Vector2} v - The vector. + * @param {number} s - The factor that scales `v`. + * @return {Vector2} A reference to this vector. + */ + addScaledVector(v, s) { + this.x += v.x * s; + this.y += v.y * s; + return this; + } + /** + * Subtracts the given vector from this instance. + * + * @param {Vector2} v - The vector to subtract. + * @return {Vector2} A reference to this vector. + */ + sub(v) { + this.x -= v.x; + this.y -= v.y; + return this; + } + /** + * Subtracts the given scalar value from all components of this instance. + * + * @param {number} s - The scalar to subtract. + * @return {Vector2} A reference to this vector. + */ + subScalar(s) { + this.x -= s; + this.y -= s; + return this; + } + /** + * Subtracts the given vectors and stores the result in this instance. + * + * @param {Vector2} a - The first vector. + * @param {Vector2} b - The second vector. + * @return {Vector2} A reference to this vector. + */ + subVectors(a, b) { + this.x = a.x - b.x; + this.y = a.y - b.y; + return this; + } + /** + * Multiplies the given vector with this instance. + * + * @param {Vector2} v - The vector to multiply. + * @return {Vector2} A reference to this vector. + */ + multiply(v) { + this.x *= v.x; + this.y *= v.y; + return this; + } + /** + * Multiplies the given scalar value with all components of this instance. + * + * @param {number} scalar - The scalar to multiply. + * @return {Vector2} A reference to this vector. + */ + multiplyScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + return this; + } + /** + * Divides this instance by the given vector. + * + * @param {Vector2} v - The vector to divide. + * @return {Vector2} A reference to this vector. + */ + divide(v) { + this.x /= v.x; + this.y /= v.y; + return this; + } + /** + * Divides this vector by the given scalar. + * + * @param {number} scalar - The scalar to divide. + * @return {Vector2} A reference to this vector. + */ + divideScalar(scalar) { + return this.multiplyScalar(1 / scalar); + } + /** + * Multiplies this vector (with an implicit 1 as the 3rd component) by + * the given 3x3 matrix. + * + * @param {Matrix3} m - The matrix to apply. + * @return {Vector2} A reference to this vector. + */ + applyMatrix3(m) { + const x = this.x, y = this.y; + const e = m.elements; + this.x = e[0] * x + e[3] * y + e[6]; + this.y = e[1] * x + e[4] * y + e[7]; + return this; + } + /** + * If this vector's x or y value is greater than the given vector's x or y + * value, replace that value with the corresponding min value. + * + * @param {Vector2} v - The vector. + * @return {Vector2} A reference to this vector. + */ + min(v) { + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); + return this; + } + /** + * If this vector's x or y value is less than the given vector's x or y + * value, replace that value with the corresponding max value. + * + * @param {Vector2} v - The vector. + * @return {Vector2} A reference to this vector. + */ + max(v) { + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); + return this; + } + /** + * If this vector's x or y value is greater than the max vector's x or y + * value, it is replaced by the corresponding value. + * If this vector's x or y value is less than the min vector's x or y value, + * it is replaced by the corresponding value. + * + * @param {Vector2} min - The minimum x and y values. + * @param {Vector2} max - The maximum x and y values in the desired range. + * @return {Vector2} A reference to this vector. + */ + clamp(min, max) { + this.x = clamp(this.x, min.x, max.x); + this.y = clamp(this.y, min.y, max.y); + return this; + } + /** + * If this vector's x or y values are greater than the max value, they are + * replaced by the max value. + * If this vector's x or y values are less than the min value, they are + * replaced by the min value. + * + * @param {number} minVal - The minimum value the components will be clamped to. + * @param {number} maxVal - The maximum value the components will be clamped to. + * @return {Vector2} A reference to this vector. + */ + clampScalar(minVal, maxVal) { + this.x = clamp(this.x, minVal, maxVal); + this.y = clamp(this.y, minVal, maxVal); + return this; + } + /** + * If this vector's length is greater than the max value, it is replaced by + * the max value. + * If this vector's length is less than the min value, it is replaced by the + * min value. + * + * @param {number} min - The minimum value the vector length will be clamped to. + * @param {number} max - The maximum value the vector length will be clamped to. + * @return {Vector2} A reference to this vector. + */ + clampLength(min, max) { + const length = this.length(); + return this.divideScalar(length || 1).multiplyScalar(clamp(length, min, max)); + } + /** + * The components of this vector are rounded down to the nearest integer value. + * + * @return {Vector2} A reference to this vector. + */ + floor() { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + return this; + } + /** + * The components of this vector are rounded up to the nearest integer value. + * + * @return {Vector2} A reference to this vector. + */ + ceil() { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + return this; + } + /** + * The components of this vector are rounded to the nearest integer value + * + * @return {Vector2} A reference to this vector. + */ + round() { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + return this; + } + /** + * The components of this vector are rounded towards zero (up if negative, + * down if positive) to an integer value. + * + * @return {Vector2} A reference to this vector. + */ + roundToZero() { + this.x = Math.trunc(this.x); + this.y = Math.trunc(this.y); + return this; + } + /** + * Inverts this vector - i.e. sets x = -x and y = -y. + * + * @return {Vector2} A reference to this vector. + */ + negate() { + this.x = -this.x; + this.y = -this.y; + return this; + } + /** + * Calculates the dot product of the given vector with this instance. + * + * @param {Vector2} v - The vector to compute the dot product with. + * @return {number} The result of the dot product. + */ + dot(v) { + return this.x * v.x + this.y * v.y; + } + /** + * Calculates the cross product of the given vector with this instance. + * + * @param {Vector2} v - The vector to compute the cross product with. + * @return {number} The result of the cross product. + */ + cross(v) { + return this.x * v.y - this.y * v.x; + } + /** + * Computes the square of the Euclidean length (straight-line length) from + * (0, 0) to (x, y). If you are comparing the lengths of vectors, you should + * compare the length squared instead as it is slightly more efficient to calculate. + * + * @return {number} The square length of this vector. + */ + lengthSq() { + return this.x * this.x + this.y * this.y; + } + /** + * Computes the Euclidean length (straight-line length) from (0, 0) to (x, y). + * + * @return {number} The length of this vector. + */ + length() { + return Math.sqrt(this.x * this.x + this.y * this.y); + } + /** + * Computes the Manhattan length of this vector. + * + * @return {number} The length of this vector. + */ + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y); + } + /** + * Converts this vector to a unit vector - that is, sets it equal to a vector + * with the same direction as this one, but with a vector length of `1`. + * + * @return {Vector2} A reference to this vector. + */ + normalize() { + return this.divideScalar(this.length() || 1); + } + /** + * Computes the angle in radians of this vector with respect to the positive x-axis. + * + * @return {number} The angle in radians. + */ + angle() { + const angle = Math.atan2(-this.y, -this.x) + Math.PI; + return angle; + } + /** + * Returns the angle between the given vector and this instance in radians. + * + * @param {Vector2} v - The vector to compute the angle with. + * @return {number} The angle in radians. + */ + angleTo(v) { + const denominator = Math.sqrt(this.lengthSq() * v.lengthSq()); + if (denominator === 0) + return Math.PI / 2; + const theta = this.dot(v) / denominator; + return Math.acos(clamp(theta, -1, 1)); + } + /** + * Computes the distance from the given vector to this instance. + * + * @param {Vector2} v - The vector to compute the distance to. + * @return {number} The distance. + */ + distanceTo(v) { + return Math.sqrt(this.distanceToSquared(v)); + } + /** + * Computes the squared distance from the given vector to this instance. + * If you are just comparing the distance with another distance, you should compare + * the distance squared instead as it is slightly more efficient to calculate. + * + * @param {Vector2} v - The vector to compute the squared distance to. + * @return {number} The squared distance. + */ + distanceToSquared(v) { + const dx = this.x - v.x, dy = this.y - v.y; + return dx * dx + dy * dy; + } + /** + * Computes the Manhattan distance from the given vector to this instance. + * + * @param {Vector2} v - The vector to compute the Manhattan distance to. + * @return {number} The Manhattan distance. + */ + manhattanDistanceTo(v) { + return Math.abs(this.x - v.x) + Math.abs(this.y - v.y); + } + /** + * Sets this vector to a vector with the same direction as this one, but + * with the specified length. + * + * @param {number} length - The new length of this vector. + * @return {Vector2} A reference to this vector. + */ + setLength(length) { + return this.normalize().multiplyScalar(length); + } + /** + * Linearly interpolates between the given vector and this instance, where + * alpha is the percent distance along the line - alpha = 0 will be this + * vector, and alpha = 1 will be the given one. + * + * @param {Vector2} v - The vector to interpolate towards. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector2} A reference to this vector. + */ + lerp(v, alpha) { + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; + return this; + } + /** + * Linearly interpolates between the given vectors, where alpha is the percent + * distance along the line - alpha = 0 will be first vector, and alpha = 1 will + * be the second one. The result is stored in this instance. + * + * @param {Vector2} v1 - The first vector. + * @param {Vector2} v2 - The second vector. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector2} A reference to this vector. + */ + lerpVectors(v1, v2, alpha) { + this.x = v1.x + (v2.x - v1.x) * alpha; + this.y = v1.y + (v2.y - v1.y) * alpha; + return this; + } + /** + * Returns `true` if this vector is equal with the given one. + * + * @param {Vector2} v - The vector to test for equality. + * @return {boolean} Whether this vector is equal with the given one. + */ + equals(v) { + return v.x === this.x && v.y === this.y; + } + /** + * Sets this vector's x value to be `array[ offset ]` and y + * value to be `array[ offset + 1 ]`. + * + * @param {Array} array - An array holding the vector component values. + * @param {number} [offset=0] - The offset into the array. + * @return {Vector2} A reference to this vector. + */ + fromArray(array, offset = 0) { + this.x = array[offset]; + this.y = array[offset + 1]; + return this; + } + /** + * Writes the components of this vector to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the vector components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The vector components. + */ + toArray(array = [], offset = 0) { + array[offset] = this.x; + array[offset + 1] = this.y; + return array; + } + /** + * Sets the components of this vector from the given buffer attribute. + * + * @param {BufferAttribute} attribute - The buffer attribute holding vector data. + * @param {number} index - The index into the attribute. + * @return {Vector2} A reference to this vector. + */ + fromBufferAttribute(attribute, index) { + this.x = attribute.getX(index); + this.y = attribute.getY(index); + return this; + } + /** + * Rotates this vector around the given center by the given angle. + * + * @param {Vector2} center - The point around which to rotate. + * @param {number} angle - The angle to rotate, in radians. + * @return {Vector2} A reference to this vector. + */ + rotateAround(center, angle) { + const c = Math.cos(angle), s = Math.sin(angle); + const x = this.x - center.x; + const y = this.y - center.y; + this.x = x * c - y * s + center.x; + this.y = x * s + y * c + center.y; + return this; + } + /** + * Sets each component of this vector to a pseudo-random value between `0` and + * `1`, excluding `1`. + * + * @return {Vector2} A reference to this vector. + */ + random() { + this.x = Math.random(); + this.y = Math.random(); + return this; + } + *[Symbol.iterator]() { + yield this.x; + yield this.y; + } +} +class Quaternion { + /** + * Constructs a new quaternion. + * + * @param {number} [x=0] - The x value of this quaternion. + * @param {number} [y=0] - The y value of this quaternion. + * @param {number} [z=0] - The z value of this quaternion. + * @param {number} [w=1] - The w value of this quaternion. + */ + constructor(x = 0, y = 0, z = 0, w = 1) { + this.isQuaternion = true; + this._x = x; + this._y = y; + this._z = z; + this._w = w; + } + /** + * Interpolates between two quaternions via SLERP. This implementation assumes the + * quaternion data are managed in flat arrays. + * + * @param {Array} dst - The destination array. + * @param {number} dstOffset - An offset into the destination array. + * @param {Array} src0 - The source array of the first quaternion. + * @param {number} srcOffset0 - An offset into the first source array. + * @param {Array} src1 - The source array of the second quaternion. + * @param {number} srcOffset1 - An offset into the second source array. + * @param {number} t - The interpolation factor in the range `[0,1]`. + * @see {@link Quaternion#slerp} + */ + static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) { + let x0 = src0[srcOffset0 + 0], y0 = src0[srcOffset0 + 1], z0 = src0[srcOffset0 + 2], w0 = src0[srcOffset0 + 3]; + let x1 = src1[srcOffset1 + 0], y1 = src1[srcOffset1 + 1], z1 = src1[srcOffset1 + 2], w1 = src1[srcOffset1 + 3]; + if (t <= 0) { + dst[dstOffset + 0] = x0; + dst[dstOffset + 1] = y0; + dst[dstOffset + 2] = z0; + dst[dstOffset + 3] = w0; + return; + } + if (t >= 1) { + dst[dstOffset + 0] = x1; + dst[dstOffset + 1] = y1; + dst[dstOffset + 2] = z1; + dst[dstOffset + 3] = w1; + return; + } + if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) { + let dot = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1; + if (dot < 0) { + x1 = -x1; + y1 = -y1; + z1 = -z1; + w1 = -w1; + dot = -dot; + } + let s = 1 - t; + if (dot < 0.9995) { + const theta = Math.acos(dot); + const sin = Math.sin(theta); + s = Math.sin(s * theta) / sin; + t = Math.sin(t * theta) / sin; + x0 = x0 * s + x1 * t; + y0 = y0 * s + y1 * t; + z0 = z0 * s + z1 * t; + w0 = w0 * s + w1 * t; + } else { + x0 = x0 * s + x1 * t; + y0 = y0 * s + y1 * t; + z0 = z0 * s + z1 * t; + w0 = w0 * s + w1 * t; + const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0); + x0 *= f; + y0 *= f; + z0 *= f; + w0 *= f; + } + } + dst[dstOffset] = x0; + dst[dstOffset + 1] = y0; + dst[dstOffset + 2] = z0; + dst[dstOffset + 3] = w0; + } + /** + * Multiplies two quaternions. This implementation assumes the quaternion data are managed + * in flat arrays. + * + * @param {Array} dst - The destination array. + * @param {number} dstOffset - An offset into the destination array. + * @param {Array} src0 - The source array of the first quaternion. + * @param {number} srcOffset0 - An offset into the first source array. + * @param {Array} src1 - The source array of the second quaternion. + * @param {number} srcOffset1 - An offset into the second source array. + * @return {Array} The destination array. + * @see {@link Quaternion#multiplyQuaternions}. + */ + static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) { + const x0 = src0[srcOffset0]; + const y0 = src0[srcOffset0 + 1]; + const z0 = src0[srcOffset0 + 2]; + const w0 = src0[srcOffset0 + 3]; + const x1 = src1[srcOffset1]; + const y1 = src1[srcOffset1 + 1]; + const z1 = src1[srcOffset1 + 2]; + const w1 = src1[srcOffset1 + 3]; + dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1; + dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1; + dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1; + dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1; + return dst; + } + /** + * The x value of this quaternion. + * + * @type {number} + * @default 0 + */ + get x() { + return this._x; + } + set x(value) { + this._x = value; + this._onChangeCallback(); + } + /** + * The y value of this quaternion. + * + * @type {number} + * @default 0 + */ + get y() { + return this._y; + } + set y(value) { + this._y = value; + this._onChangeCallback(); + } + /** + * The z value of this quaternion. + * + * @type {number} + * @default 0 + */ + get z() { + return this._z; + } + set z(value) { + this._z = value; + this._onChangeCallback(); + } + /** + * The w value of this quaternion. + * + * @type {number} + * @default 1 + */ + get w() { + return this._w; + } + set w(value) { + this._w = value; + this._onChangeCallback(); + } + /** + * Sets the quaternion components. + * + * @param {number} x - The x value of this quaternion. + * @param {number} y - The y value of this quaternion. + * @param {number} z - The z value of this quaternion. + * @param {number} w - The w value of this quaternion. + * @return {Quaternion} A reference to this quaternion. + */ + set(x, y, z, w) { + this._x = x; + this._y = y; + this._z = z; + this._w = w; + this._onChangeCallback(); + return this; + } + /** + * Returns a new quaternion with copied values from this instance. + * + * @return {Quaternion} A clone of this instance. + */ + clone() { + return new this.constructor(this._x, this._y, this._z, this._w); + } + /** + * Copies the values of the given quaternion to this instance. + * + * @param {Quaternion} quaternion - The quaternion to copy. + * @return {Quaternion} A reference to this quaternion. + */ + copy(quaternion) { + this._x = quaternion.x; + this._y = quaternion.y; + this._z = quaternion.z; + this._w = quaternion.w; + this._onChangeCallback(); + return this; + } + /** + * Sets this quaternion from the rotation specified by the given + * Euler angles. + * + * @param {Euler} euler - The Euler angles. + * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not. + * @return {Quaternion} A reference to this quaternion. + */ + setFromEuler(euler, update = true) { + const x = euler._x, y = euler._y, z = euler._z, order = euler._order; + const cos = Math.cos; + const sin = Math.sin; + const c1 = cos(x / 2); + const c2 = cos(y / 2); + const c3 = cos(z / 2); + const s1 = sin(x / 2); + const s2 = sin(y / 2); + const s3 = sin(z / 2); + switch (order) { + case "XYZ": + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + case "YXZ": + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + case "ZXY": + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + case "ZYX": + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + case "YZX": + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + case "XZY": + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + default: + warn("Quaternion: .setFromEuler() encountered an unknown order: " + order); + } + if (update === true) + this._onChangeCallback(); + return this; + } + /** + * Sets this quaternion from the given axis and angle. + * + * @param {Vector3} axis - The normalized axis. + * @param {number} angle - The angle in radians. + * @return {Quaternion} A reference to this quaternion. + */ + setFromAxisAngle(axis, angle) { + const halfAngle = angle / 2, s = Math.sin(halfAngle); + this._x = axis.x * s; + this._y = axis.y * s; + this._z = axis.z * s; + this._w = Math.cos(halfAngle); + this._onChangeCallback(); + return this; + } + /** + * Sets this quaternion from the given rotation matrix. + * + * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled). + * @return {Quaternion} A reference to this quaternion. + */ + setFromRotationMatrix(m) { + const te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33; + if (trace > 0) { + const s = 0.5 / Math.sqrt(trace + 1); + this._w = 0.25 / s; + this._x = (m32 - m23) * s; + this._y = (m13 - m31) * s; + this._z = (m21 - m12) * s; + } else if (m11 > m22 && m11 > m33) { + const s = 2 * Math.sqrt(1 + m11 - m22 - m33); + this._w = (m32 - m23) / s; + this._x = 0.25 * s; + this._y = (m12 + m21) / s; + this._z = (m13 + m31) / s; + } else if (m22 > m33) { + const s = 2 * Math.sqrt(1 + m22 - m11 - m33); + this._w = (m13 - m31) / s; + this._x = (m12 + m21) / s; + this._y = 0.25 * s; + this._z = (m23 + m32) / s; + } else { + const s = 2 * Math.sqrt(1 + m33 - m11 - m22); + this._w = (m21 - m12) / s; + this._x = (m13 + m31) / s; + this._y = (m23 + m32) / s; + this._z = 0.25 * s; + } + this._onChangeCallback(); + return this; + } + /** + * Sets this quaternion to the rotation required to rotate the direction vector + * `vFrom` to the direction vector `vTo`. + * + * @param {Vector3} vFrom - The first (normalized) direction vector. + * @param {Vector3} vTo - The second (normalized) direction vector. + * @return {Quaternion} A reference to this quaternion. + */ + setFromUnitVectors(vFrom, vTo) { + let r = vFrom.dot(vTo) + 1; + if (r < 1e-8) { + r = 0; + if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) { + this._x = -vFrom.y; + this._y = vFrom.x; + this._z = 0; + this._w = r; + } else { + this._x = 0; + this._y = -vFrom.z; + this._z = vFrom.y; + this._w = r; + } + } else { + this._x = vFrom.y * vTo.z - vFrom.z * vTo.y; + this._y = vFrom.z * vTo.x - vFrom.x * vTo.z; + this._z = vFrom.x * vTo.y - vFrom.y * vTo.x; + this._w = r; + } + return this.normalize(); + } + /** + * Returns the angle between this quaternion and the given one in radians. + * + * @param {Quaternion} q - The quaternion to compute the angle with. + * @return {number} The angle in radians. + */ + angleTo(q) { + return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1))); + } + /** + * Rotates this quaternion by a given angular step to the given quaternion. + * The method ensures that the final quaternion will not overshoot `q`. + * + * @param {Quaternion} q - The target quaternion. + * @param {number} step - The angular step in radians. + * @return {Quaternion} A reference to this quaternion. + */ + rotateTowards(q, step) { + const angle = this.angleTo(q); + if (angle === 0) + return this; + const t = Math.min(1, step / angle); + this.slerp(q, t); + return this; + } + /** + * Sets this quaternion to the identity quaternion; that is, to the + * quaternion that represents "no rotation". + * + * @return {Quaternion} A reference to this quaternion. + */ + identity() { + return this.set(0, 0, 0, 1); + } + /** + * Inverts this quaternion via {@link Quaternion#conjugate}. The + * quaternion is assumed to have unit length. + * + * @return {Quaternion} A reference to this quaternion. + */ + invert() { + return this.conjugate(); + } + /** + * Returns the rotational conjugate of this quaternion. The conjugate of a + * quaternion represents the same rotation in the opposite direction about + * the rotational axis. + * + * @return {Quaternion} A reference to this quaternion. + */ + conjugate() { + this._x *= -1; + this._y *= -1; + this._z *= -1; + this._onChangeCallback(); + return this; + } + /** + * Calculates the dot product of this quaternion and the given one. + * + * @param {Quaternion} v - The quaternion to compute the dot product with. + * @return {number} The result of the dot product. + */ + dot(v) { + return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w; + } + /** + * Computes the squared Euclidean length (straight-line length) of this quaternion, + * considered as a 4 dimensional vector. This can be useful if you are comparing the + * lengths of two quaternions, as this is a slightly more efficient calculation than + * {@link Quaternion#length}. + * + * @return {number} The squared Euclidean length. + */ + lengthSq() { + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; + } + /** + * Computes the Euclidean length (straight-line length) of this quaternion, + * considered as a 4 dimensional vector. + * + * @return {number} The Euclidean length. + */ + length() { + return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w); + } + /** + * Normalizes this quaternion - that is, calculated the quaternion that performs + * the same rotation as this one, but has a length equal to `1`. + * + * @return {Quaternion} A reference to this quaternion. + */ + normalize() { + let l = this.length(); + if (l === 0) { + this._x = 0; + this._y = 0; + this._z = 0; + this._w = 1; + } else { + l = 1 / l; + this._x = this._x * l; + this._y = this._y * l; + this._z = this._z * l; + this._w = this._w * l; + } + this._onChangeCallback(); + return this; + } + /** + * Multiplies this quaternion by the given one. + * + * @param {Quaternion} q - The quaternion. + * @return {Quaternion} A reference to this quaternion. + */ + multiply(q) { + return this.multiplyQuaternions(this, q); + } + /** + * Pre-multiplies this quaternion by the given one. + * + * @param {Quaternion} q - The quaternion. + * @return {Quaternion} A reference to this quaternion. + */ + premultiply(q) { + return this.multiplyQuaternions(q, this); + } + /** + * Multiplies the given quaternions and stores the result in this instance. + * + * @param {Quaternion} a - The first quaternion. + * @param {Quaternion} b - The second quaternion. + * @return {Quaternion} A reference to this quaternion. + */ + multiplyQuaternions(a, b) { + const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w; + const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w; + this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; + this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; + this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; + this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; + this._onChangeCallback(); + return this; + } + /** + * Performs a spherical linear interpolation between quaternions. + * + * @param {Quaternion} qb - The target quaternion. + * @param {number} t - The interpolation factor in the closed interval `[0, 1]`. + * @return {Quaternion} A reference to this quaternion. + */ + slerp(qb, t) { + if (t <= 0) + return this; + if (t >= 1) + return this.copy(qb); + let x = qb._x, y = qb._y, z = qb._z, w = qb._w; + let dot = this.dot(qb); + if (dot < 0) { + x = -x; + y = -y; + z = -z; + w = -w; + dot = -dot; + } + let s = 1 - t; + if (dot < 0.9995) { + const theta = Math.acos(dot); + const sin = Math.sin(theta); + s = Math.sin(s * theta) / sin; + t = Math.sin(t * theta) / sin; + this._x = this._x * s + x * t; + this._y = this._y * s + y * t; + this._z = this._z * s + z * t; + this._w = this._w * s + w * t; + this._onChangeCallback(); + } else { + this._x = this._x * s + x * t; + this._y = this._y * s + y * t; + this._z = this._z * s + z * t; + this._w = this._w * s + w * t; + this.normalize(); + } + return this; + } + /** + * Performs a spherical linear interpolation between the given quaternions + * and stores the result in this quaternion. + * + * @param {Quaternion} qa - The source quaternion. + * @param {Quaternion} qb - The target quaternion. + * @param {number} t - The interpolation factor in the closed interval `[0, 1]`. + * @return {Quaternion} A reference to this quaternion. + */ + slerpQuaternions(qa, qb, t) { + return this.copy(qa).slerp(qb, t); + } + /** + * Sets this quaternion to a uniformly random, normalized quaternion. + * + * @return {Quaternion} A reference to this quaternion. + */ + random() { + const theta1 = 2 * Math.PI * Math.random(); + const theta2 = 2 * Math.PI * Math.random(); + const x0 = Math.random(); + const r1 = Math.sqrt(1 - x0); + const r2 = Math.sqrt(x0); + return this.set( + r1 * Math.sin(theta1), + r1 * Math.cos(theta1), + r2 * Math.sin(theta2), + r2 * Math.cos(theta2) + ); + } + /** + * Returns `true` if this quaternion is equal with the given one. + * + * @param {Quaternion} quaternion - The quaternion to test for equality. + * @return {boolean} Whether this quaternion is equal with the given one. + */ + equals(quaternion) { + return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w; + } + /** + * Sets this quaternion's components from the given array. + * + * @param {Array} array - An array holding the quaternion component values. + * @param {number} [offset=0] - The offset into the array. + * @return {Quaternion} A reference to this quaternion. + */ + fromArray(array, offset = 0) { + this._x = array[offset]; + this._y = array[offset + 1]; + this._z = array[offset + 2]; + this._w = array[offset + 3]; + this._onChangeCallback(); + return this; + } + /** + * Writes the components of this quaternion to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the quaternion components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The quaternion components. + */ + toArray(array = [], offset = 0) { + array[offset] = this._x; + array[offset + 1] = this._y; + array[offset + 2] = this._z; + array[offset + 3] = this._w; + return array; + } + /** + * Sets the components of this quaternion from the given buffer attribute. + * + * @param {BufferAttribute} attribute - The buffer attribute holding quaternion data. + * @param {number} index - The index into the attribute. + * @return {Quaternion} A reference to this quaternion. + */ + fromBufferAttribute(attribute, index) { + this._x = attribute.getX(index); + this._y = attribute.getY(index); + this._z = attribute.getZ(index); + this._w = attribute.getW(index); + this._onChangeCallback(); + return this; + } + /** + * This methods defines the serialization result of this class. Returns the + * numerical elements of this quaternion in an array of format `[x, y, z, w]`. + * + * @return {Array} The serialized quaternion. + */ + toJSON() { + return this.toArray(); + } + _onChange(callback) { + this._onChangeCallback = callback; + return this; + } + _onChangeCallback() { + } + *[Symbol.iterator]() { + yield this._x; + yield this._y; + yield this._z; + yield this._w; + } +} +class Vector3 { + /** + * Constructs a new 3D vector. + * + * @param {number} [x=0] - The x value of this vector. + * @param {number} [y=0] - The y value of this vector. + * @param {number} [z=0] - The z value of this vector. + */ + constructor(x = 0, y = 0, z = 0) { + Vector3.prototype.isVector3 = true; + this.x = x; + this.y = y; + this.z = z; + } + /** + * Sets the vector components. + * + * @param {number} x - The value of the x component. + * @param {number} y - The value of the y component. + * @param {number} z - The value of the z component. + * @return {Vector3} A reference to this vector. + */ + set(x, y, z) { + if (z === void 0) + z = this.z; + this.x = x; + this.y = y; + this.z = z; + return this; + } + /** + * Sets the vector components to the same value. + * + * @param {number} scalar - The value to set for all vector components. + * @return {Vector3} A reference to this vector. + */ + setScalar(scalar) { + this.x = scalar; + this.y = scalar; + this.z = scalar; + return this; + } + /** + * Sets the vector's x component to the given value + * + * @param {number} x - The value to set. + * @return {Vector3} A reference to this vector. + */ + setX(x) { + this.x = x; + return this; + } + /** + * Sets the vector's y component to the given value + * + * @param {number} y - The value to set. + * @return {Vector3} A reference to this vector. + */ + setY(y) { + this.y = y; + return this; + } + /** + * Sets the vector's z component to the given value + * + * @param {number} z - The value to set. + * @return {Vector3} A reference to this vector. + */ + setZ(z) { + this.z = z; + return this; + } + /** + * Allows to set a vector component with an index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z. + * @param {number} value - The value to set. + * @return {Vector3} A reference to this vector. + */ + setComponent(index, value) { + switch (index) { + case 0: + this.x = value; + break; + case 1: + this.y = value; + break; + case 2: + this.z = value; + break; + default: + throw new Error("index is out of range: " + index); + } + return this; + } + /** + * Returns the value of the vector component which matches the given index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z. + * @return {number} A vector component value. + */ + getComponent(index) { + switch (index) { + case 0: + return this.x; + case 1: + return this.y; + case 2: + return this.z; + default: + throw new Error("index is out of range: " + index); + } + } + /** + * Returns a new vector with copied values from this instance. + * + * @return {Vector3} A clone of this instance. + */ + clone() { + return new this.constructor(this.x, this.y, this.z); + } + /** + * Copies the values of the given vector to this instance. + * + * @param {Vector3} v - The vector to copy. + * @return {Vector3} A reference to this vector. + */ + copy(v) { + this.x = v.x; + this.y = v.y; + this.z = v.z; + return this; + } + /** + * Adds the given vector to this instance. + * + * @param {Vector3} v - The vector to add. + * @return {Vector3} A reference to this vector. + */ + add(v) { + this.x += v.x; + this.y += v.y; + this.z += v.z; + return this; + } + /** + * Adds the given scalar value to all components of this instance. + * + * @param {number} s - The scalar to add. + * @return {Vector3} A reference to this vector. + */ + addScalar(s) { + this.x += s; + this.y += s; + this.z += s; + return this; + } + /** + * Adds the given vectors and stores the result in this instance. + * + * @param {Vector3} a - The first vector. + * @param {Vector3} b - The second vector. + * @return {Vector3} A reference to this vector. + */ + addVectors(a, b) { + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + return this; + } + /** + * Adds the given vector scaled by the given factor to this instance. + * + * @param {Vector3|Vector4} v - The vector. + * @param {number} s - The factor that scales `v`. + * @return {Vector3} A reference to this vector. + */ + addScaledVector(v, s) { + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + return this; + } + /** + * Subtracts the given vector from this instance. + * + * @param {Vector3} v - The vector to subtract. + * @return {Vector3} A reference to this vector. + */ + sub(v) { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + return this; + } + /** + * Subtracts the given scalar value from all components of this instance. + * + * @param {number} s - The scalar to subtract. + * @return {Vector3} A reference to this vector. + */ + subScalar(s) { + this.x -= s; + this.y -= s; + this.z -= s; + return this; + } + /** + * Subtracts the given vectors and stores the result in this instance. + * + * @param {Vector3} a - The first vector. + * @param {Vector3} b - The second vector. + * @return {Vector3} A reference to this vector. + */ + subVectors(a, b) { + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + return this; + } + /** + * Multiplies the given vector with this instance. + * + * @param {Vector3} v - The vector to multiply. + * @return {Vector3} A reference to this vector. + */ + multiply(v) { + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + return this; + } + /** + * Multiplies the given scalar value with all components of this instance. + * + * @param {number} scalar - The scalar to multiply. + * @return {Vector3} A reference to this vector. + */ + multiplyScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + return this; + } + /** + * Multiplies the given vectors and stores the result in this instance. + * + * @param {Vector3} a - The first vector. + * @param {Vector3} b - The second vector. + * @return {Vector3} A reference to this vector. + */ + multiplyVectors(a, b) { + this.x = a.x * b.x; + this.y = a.y * b.y; + this.z = a.z * b.z; + return this; + } + /** + * Applies the given Euler rotation to this vector. + * + * @param {Euler} euler - The Euler angles. + * @return {Vector3} A reference to this vector. + */ + applyEuler(euler) { + return this.applyQuaternion(_quaternion$4.setFromEuler(euler)); + } + /** + * Applies a rotation specified by an axis and an angle to this vector. + * + * @param {Vector3} axis - A normalized vector representing the rotation axis. + * @param {number} angle - The angle in radians. + * @return {Vector3} A reference to this vector. + */ + applyAxisAngle(axis, angle) { + return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle)); + } + /** + * Multiplies this vector with the given 3x3 matrix. + * + * @param {Matrix3} m - The 3x3 matrix. + * @return {Vector3} A reference to this vector. + */ + applyMatrix3(m) { + const x = this.x, y = this.y, z = this.z; + const e = m.elements; + this.x = e[0] * x + e[3] * y + e[6] * z; + this.y = e[1] * x + e[4] * y + e[7] * z; + this.z = e[2] * x + e[5] * y + e[8] * z; + return this; + } + /** + * Multiplies this vector by the given normal matrix and normalizes + * the result. + * + * @param {Matrix3} m - The normal matrix. + * @return {Vector3} A reference to this vector. + */ + applyNormalMatrix(m) { + return this.applyMatrix3(m).normalize(); + } + /** + * Multiplies this vector (with an implicit 1 in the 4th dimension) by m, and + * divides by perspective. + * + * @param {Matrix4} m - The matrix to apply. + * @return {Vector3} A reference to this vector. + */ + applyMatrix4(m) { + const x = this.x, y = this.y, z = this.z; + const e = m.elements; + const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]); + this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w; + this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w; + this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w; + return this; + } + /** + * Applies the given Quaternion to this vector. + * + * @param {Quaternion} q - The Quaternion. + * @return {Vector3} A reference to this vector. + */ + applyQuaternion(q) { + const vx = this.x, vy = this.y, vz = this.z; + const qx = q.x, qy = q.y, qz = q.z, qw = q.w; + const tx = 2 * (qy * vz - qz * vy); + const ty = 2 * (qz * vx - qx * vz); + const tz = 2 * (qx * vy - qy * vx); + this.x = vx + qw * tx + qy * tz - qz * ty; + this.y = vy + qw * ty + qz * tx - qx * tz; + this.z = vz + qw * tz + qx * ty - qy * tx; + return this; + } + /** + * Projects this vector from world space into the camera's normalized + * device coordinate (NDC) space. + * + * @param {Camera} camera - The camera. + * @return {Vector3} A reference to this vector. + */ + project(camera) { + return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix); + } + /** + * Unprojects this vector from the camera's normalized device coordinate (NDC) + * space into world space. + * + * @param {Camera} camera - The camera. + * @return {Vector3} A reference to this vector. + */ + unproject(camera) { + return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld); + } + /** + * Transforms the direction of this vector by a matrix (the upper left 3 x 3 + * subset of the given 4x4 matrix and then normalizes the result. + * + * @param {Matrix4} m - The matrix. + * @return {Vector3} A reference to this vector. + */ + transformDirection(m) { + const x = this.x, y = this.y, z = this.z; + const e = m.elements; + this.x = e[0] * x + e[4] * y + e[8] * z; + this.y = e[1] * x + e[5] * y + e[9] * z; + this.z = e[2] * x + e[6] * y + e[10] * z; + return this.normalize(); + } + /** + * Divides this instance by the given vector. + * + * @param {Vector3} v - The vector to divide. + * @return {Vector3} A reference to this vector. + */ + divide(v) { + this.x /= v.x; + this.y /= v.y; + this.z /= v.z; + return this; + } + /** + * Divides this vector by the given scalar. + * + * @param {number} scalar - The scalar to divide. + * @return {Vector3} A reference to this vector. + */ + divideScalar(scalar) { + return this.multiplyScalar(1 / scalar); + } + /** + * If this vector's x, y or z value is greater than the given vector's x, y or z + * value, replace that value with the corresponding min value. + * + * @param {Vector3} v - The vector. + * @return {Vector3} A reference to this vector. + */ + min(v) { + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); + this.z = Math.min(this.z, v.z); + return this; + } + /** + * If this vector's x, y or z value is less than the given vector's x, y or z + * value, replace that value with the corresponding max value. + * + * @param {Vector3} v - The vector. + * @return {Vector3} A reference to this vector. + */ + max(v) { + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); + this.z = Math.max(this.z, v.z); + return this; + } + /** + * If this vector's x, y or z value is greater than the max vector's x, y or z + * value, it is replaced by the corresponding value. + * If this vector's x, y or z value is less than the min vector's x, y or z value, + * it is replaced by the corresponding value. + * + * @param {Vector3} min - The minimum x, y and z values. + * @param {Vector3} max - The maximum x, y and z values in the desired range. + * @return {Vector3} A reference to this vector. + */ + clamp(min, max) { + this.x = clamp(this.x, min.x, max.x); + this.y = clamp(this.y, min.y, max.y); + this.z = clamp(this.z, min.z, max.z); + return this; + } + /** + * If this vector's x, y or z values are greater than the max value, they are + * replaced by the max value. + * If this vector's x, y or z values are less than the min value, they are + * replaced by the min value. + * + * @param {number} minVal - The minimum value the components will be clamped to. + * @param {number} maxVal - The maximum value the components will be clamped to. + * @return {Vector3} A reference to this vector. + */ + clampScalar(minVal, maxVal) { + this.x = clamp(this.x, minVal, maxVal); + this.y = clamp(this.y, minVal, maxVal); + this.z = clamp(this.z, minVal, maxVal); + return this; + } + /** + * If this vector's length is greater than the max value, it is replaced by + * the max value. + * If this vector's length is less than the min value, it is replaced by the + * min value. + * + * @param {number} min - The minimum value the vector length will be clamped to. + * @param {number} max - The maximum value the vector length will be clamped to. + * @return {Vector3} A reference to this vector. + */ + clampLength(min, max) { + const length = this.length(); + return this.divideScalar(length || 1).multiplyScalar(clamp(length, min, max)); + } + /** + * The components of this vector are rounded down to the nearest integer value. + * + * @return {Vector3} A reference to this vector. + */ + floor() { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + this.z = Math.floor(this.z); + return this; + } + /** + * The components of this vector are rounded up to the nearest integer value. + * + * @return {Vector3} A reference to this vector. + */ + ceil() { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + this.z = Math.ceil(this.z); + return this; + } + /** + * The components of this vector are rounded to the nearest integer value + * + * @return {Vector3} A reference to this vector. + */ + round() { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + this.z = Math.round(this.z); + return this; + } + /** + * The components of this vector are rounded towards zero (up if negative, + * down if positive) to an integer value. + * + * @return {Vector3} A reference to this vector. + */ + roundToZero() { + this.x = Math.trunc(this.x); + this.y = Math.trunc(this.y); + this.z = Math.trunc(this.z); + return this; + } + /** + * Inverts this vector - i.e. sets x = -x, y = -y and z = -z. + * + * @return {Vector3} A reference to this vector. + */ + negate() { + this.x = -this.x; + this.y = -this.y; + this.z = -this.z; + return this; + } + /** + * Calculates the dot product of the given vector with this instance. + * + * @param {Vector3} v - The vector to compute the dot product with. + * @return {number} The result of the dot product. + */ + dot(v) { + return this.x * v.x + this.y * v.y + this.z * v.z; + } + /** + * Computes the square of the Euclidean length (straight-line length) from + * (0, 0, 0) to (x, y, z). If you are comparing the lengths of vectors, you should + * compare the length squared instead as it is slightly more efficient to calculate. + * + * @return {number} The square length of this vector. + */ + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z; + } + /** + * Computes the Euclidean length (straight-line length) from (0, 0, 0) to (x, y, z). + * + * @return {number} The length of this vector. + */ + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + } + /** + * Computes the Manhattan length of this vector. + * + * @return {number} The length of this vector. + */ + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z); + } + /** + * Converts this vector to a unit vector - that is, sets it equal to a vector + * with the same direction as this one, but with a vector length of `1`. + * + * @return {Vector3} A reference to this vector. + */ + normalize() { + return this.divideScalar(this.length() || 1); + } + /** + * Sets this vector to a vector with the same direction as this one, but + * with the specified length. + * + * @param {number} length - The new length of this vector. + * @return {Vector3} A reference to this vector. + */ + setLength(length) { + return this.normalize().multiplyScalar(length); + } + /** + * Linearly interpolates between the given vector and this instance, where + * alpha is the percent distance along the line - alpha = 0 will be this + * vector, and alpha = 1 will be the given one. + * + * @param {Vector3} v - The vector to interpolate towards. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector3} A reference to this vector. + */ + lerp(v, alpha) { + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; + this.z += (v.z - this.z) * alpha; + return this; + } + /** + * Linearly interpolates between the given vectors, where alpha is the percent + * distance along the line - alpha = 0 will be first vector, and alpha = 1 will + * be the second one. The result is stored in this instance. + * + * @param {Vector3} v1 - The first vector. + * @param {Vector3} v2 - The second vector. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector3} A reference to this vector. + */ + lerpVectors(v1, v2, alpha) { + this.x = v1.x + (v2.x - v1.x) * alpha; + this.y = v1.y + (v2.y - v1.y) * alpha; + this.z = v1.z + (v2.z - v1.z) * alpha; + return this; + } + /** + * Calculates the cross product of the given vector with this instance. + * + * @param {Vector3} v - The vector to compute the cross product with. + * @return {Vector3} The result of the cross product. + */ + cross(v) { + return this.crossVectors(this, v); + } + /** + * Calculates the cross product of the given vectors and stores the result + * in this instance. + * + * @param {Vector3} a - The first vector. + * @param {Vector3} b - The second vector. + * @return {Vector3} A reference to this vector. + */ + crossVectors(a, b) { + const ax = a.x, ay = a.y, az = a.z; + const bx = b.x, by = b.y, bz = b.z; + this.x = ay * bz - az * by; + this.y = az * bx - ax * bz; + this.z = ax * by - ay * bx; + return this; + } + /** + * Projects this vector onto the given one. + * + * @param {Vector3} v - The vector to project to. + * @return {Vector3} A reference to this vector. + */ + projectOnVector(v) { + const denominator = v.lengthSq(); + if (denominator === 0) + return this.set(0, 0, 0); + const scalar = v.dot(this) / denominator; + return this.copy(v).multiplyScalar(scalar); + } + /** + * Projects this vector onto a plane by subtracting this + * vector projected onto the plane's normal from this vector. + * + * @param {Vector3} planeNormal - The plane normal. + * @return {Vector3} A reference to this vector. + */ + projectOnPlane(planeNormal) { + _vector$c.copy(this).projectOnVector(planeNormal); + return this.sub(_vector$c); + } + /** + * Reflects this vector off a plane orthogonal to the given normal vector. + * + * @param {Vector3} normal - The (normalized) normal vector. + * @return {Vector3} A reference to this vector. + */ + reflect(normal) { + return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal))); + } + /** + * Returns the angle between the given vector and this instance in radians. + * + * @param {Vector3} v - The vector to compute the angle with. + * @return {number} The angle in radians. + */ + angleTo(v) { + const denominator = Math.sqrt(this.lengthSq() * v.lengthSq()); + if (denominator === 0) + return Math.PI / 2; + const theta = this.dot(v) / denominator; + return Math.acos(clamp(theta, -1, 1)); + } + /** + * Computes the distance from the given vector to this instance. + * + * @param {Vector3} v - The vector to compute the distance to. + * @return {number} The distance. + */ + distanceTo(v) { + return Math.sqrt(this.distanceToSquared(v)); + } + /** + * Computes the squared distance from the given vector to this instance. + * If you are just comparing the distance with another distance, you should compare + * the distance squared instead as it is slightly more efficient to calculate. + * + * @param {Vector3} v - The vector to compute the squared distance to. + * @return {number} The squared distance. + */ + distanceToSquared(v) { + const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z; + return dx * dx + dy * dy + dz * dz; + } + /** + * Computes the Manhattan distance from the given vector to this instance. + * + * @param {Vector3} v - The vector to compute the Manhattan distance to. + * @return {number} The Manhattan distance. + */ + manhattanDistanceTo(v) { + return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z); + } + /** + * Sets the vector components from the given spherical coordinates. + * + * @param {Spherical} s - The spherical coordinates. + * @return {Vector3} A reference to this vector. + */ + setFromSpherical(s) { + return this.setFromSphericalCoords(s.radius, s.phi, s.theta); + } + /** + * Sets the vector components from the given spherical coordinates. + * + * @param {number} radius - The radius. + * @param {number} phi - The phi angle in radians. + * @param {number} theta - The theta angle in radians. + * @return {Vector3} A reference to this vector. + */ + setFromSphericalCoords(radius, phi, theta) { + const sinPhiRadius = Math.sin(phi) * radius; + this.x = sinPhiRadius * Math.sin(theta); + this.y = Math.cos(phi) * radius; + this.z = sinPhiRadius * Math.cos(theta); + return this; + } + /** + * Sets the vector components from the given cylindrical coordinates. + * + * @param {Cylindrical} c - The cylindrical coordinates. + * @return {Vector3} A reference to this vector. + */ + setFromCylindrical(c) { + return this.setFromCylindricalCoords(c.radius, c.theta, c.y); + } + /** + * Sets the vector components from the given cylindrical coordinates. + * + * @param {number} radius - The radius. + * @param {number} theta - The theta angle in radians. + * @param {number} y - The y value. + * @return {Vector3} A reference to this vector. + */ + setFromCylindricalCoords(radius, theta, y) { + this.x = radius * Math.sin(theta); + this.y = y; + this.z = radius * Math.cos(theta); + return this; + } + /** + * Sets the vector components to the position elements of the + * given transformation matrix. + * + * @param {Matrix4} m - The 4x4 matrix. + * @return {Vector3} A reference to this vector. + */ + setFromMatrixPosition(m) { + const e = m.elements; + this.x = e[12]; + this.y = e[13]; + this.z = e[14]; + return this; + } + /** + * Sets the vector components to the scale elements of the + * given transformation matrix. + * + * @param {Matrix4} m - The 4x4 matrix. + * @return {Vector3} A reference to this vector. + */ + setFromMatrixScale(m) { + const sx = this.setFromMatrixColumn(m, 0).length(); + const sy = this.setFromMatrixColumn(m, 1).length(); + const sz = this.setFromMatrixColumn(m, 2).length(); + this.x = sx; + this.y = sy; + this.z = sz; + return this; + } + /** + * Sets the vector components from the specified matrix column. + * + * @param {Matrix4} m - The 4x4 matrix. + * @param {number} index - The column index. + * @return {Vector3} A reference to this vector. + */ + setFromMatrixColumn(m, index) { + return this.fromArray(m.elements, index * 4); + } + /** + * Sets the vector components from the specified matrix column. + * + * @param {Matrix3} m - The 3x3 matrix. + * @param {number} index - The column index. + * @return {Vector3} A reference to this vector. + */ + setFromMatrix3Column(m, index) { + return this.fromArray(m.elements, index * 3); + } + /** + * Sets the vector components from the given Euler angles. + * + * @param {Euler} e - The Euler angles to set. + * @return {Vector3} A reference to this vector. + */ + setFromEuler(e) { + this.x = e._x; + this.y = e._y; + this.z = e._z; + return this; + } + /** + * Sets the vector components from the RGB components of the + * given color. + * + * @param {Color} c - The color to set. + * @return {Vector3} A reference to this vector. + */ + setFromColor(c) { + this.x = c.r; + this.y = c.g; + this.z = c.b; + return this; + } + /** + * Returns `true` if this vector is equal with the given one. + * + * @param {Vector3} v - The vector to test for equality. + * @return {boolean} Whether this vector is equal with the given one. + */ + equals(v) { + return v.x === this.x && v.y === this.y && v.z === this.z; + } + /** + * Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]` + * and z value to be `array[ offset + 2 ]`. + * + * @param {Array} array - An array holding the vector component values. + * @param {number} [offset=0] - The offset into the array. + * @return {Vector3} A reference to this vector. + */ + fromArray(array, offset = 0) { + this.x = array[offset]; + this.y = array[offset + 1]; + this.z = array[offset + 2]; + return this; + } + /** + * Writes the components of this vector to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the vector components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The vector components. + */ + toArray(array = [], offset = 0) { + array[offset] = this.x; + array[offset + 1] = this.y; + array[offset + 2] = this.z; + return array; + } + /** + * Sets the components of this vector from the given buffer attribute. + * + * @param {BufferAttribute} attribute - The buffer attribute holding vector data. + * @param {number} index - The index into the attribute. + * @return {Vector3} A reference to this vector. + */ + fromBufferAttribute(attribute, index) { + this.x = attribute.getX(index); + this.y = attribute.getY(index); + this.z = attribute.getZ(index); + return this; + } + /** + * Sets each component of this vector to a pseudo-random value between `0` and + * `1`, excluding `1`. + * + * @return {Vector3} A reference to this vector. + */ + random() { + this.x = Math.random(); + this.y = Math.random(); + this.z = Math.random(); + return this; + } + /** + * Sets this vector to a uniformly random point on a unit sphere. + * + * @return {Vector3} A reference to this vector. + */ + randomDirection() { + const theta = Math.random() * Math.PI * 2; + const u = Math.random() * 2 - 1; + const c = Math.sqrt(1 - u * u); + this.x = c * Math.cos(theta); + this.y = u; + this.z = c * Math.sin(theta); + return this; + } + *[Symbol.iterator]() { + yield this.x; + yield this.y; + yield this.z; + } +} +const _vector$c = /* @__PURE__ */ new Vector3(); +const _quaternion$4 = /* @__PURE__ */ new Quaternion(); +class Matrix3 { + /** + * Constructs a new 3x3 matrix. The arguments are supposed to be + * in row-major order. If no arguments are provided, the constructor + * initializes the matrix as an identity matrix. + * + * @param {number} [n11] - 1-1 matrix element. + * @param {number} [n12] - 1-2 matrix element. + * @param {number} [n13] - 1-3 matrix element. + * @param {number} [n21] - 2-1 matrix element. + * @param {number} [n22] - 2-2 matrix element. + * @param {number} [n23] - 2-3 matrix element. + * @param {number} [n31] - 3-1 matrix element. + * @param {number} [n32] - 3-2 matrix element. + * @param {number} [n33] - 3-3 matrix element. + */ + constructor(n11, n12, n13, n21, n22, n23, n31, n32, n33) { + Matrix3.prototype.isMatrix3 = true; + this.elements = [ + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1 + ]; + if (n11 !== void 0) { + this.set(n11, n12, n13, n21, n22, n23, n31, n32, n33); + } + } + /** + * Sets the elements of the matrix.The arguments are supposed to be + * in row-major order. + * + * @param {number} [n11] - 1-1 matrix element. + * @param {number} [n12] - 1-2 matrix element. + * @param {number} [n13] - 1-3 matrix element. + * @param {number} [n21] - 2-1 matrix element. + * @param {number} [n22] - 2-2 matrix element. + * @param {number} [n23] - 2-3 matrix element. + * @param {number} [n31] - 3-1 matrix element. + * @param {number} [n32] - 3-2 matrix element. + * @param {number} [n33] - 3-3 matrix element. + * @return {Matrix3} A reference to this matrix. + */ + set(n11, n12, n13, n21, n22, n23, n31, n32, n33) { + const te = this.elements; + te[0] = n11; + te[1] = n21; + te[2] = n31; + te[3] = n12; + te[4] = n22; + te[5] = n32; + te[6] = n13; + te[7] = n23; + te[8] = n33; + return this; + } + /** + * Sets this matrix to the 3x3 identity matrix. + * + * @return {Matrix3} A reference to this matrix. + */ + identity() { + this.set( + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Copies the values of the given matrix to this instance. + * + * @param {Matrix3} m - The matrix to copy. + * @return {Matrix3} A reference to this matrix. + */ + copy(m) { + const te = this.elements; + const me = m.elements; + te[0] = me[0]; + te[1] = me[1]; + te[2] = me[2]; + te[3] = me[3]; + te[4] = me[4]; + te[5] = me[5]; + te[6] = me[6]; + te[7] = me[7]; + te[8] = me[8]; + return this; + } + /** + * Extracts the basis of this matrix into the three axis vectors provided. + * + * @param {Vector3} xAxis - The basis's x axis. + * @param {Vector3} yAxis - The basis's y axis. + * @param {Vector3} zAxis - The basis's z axis. + * @return {Matrix3} A reference to this matrix. + */ + extractBasis(xAxis, yAxis, zAxis) { + xAxis.setFromMatrix3Column(this, 0); + yAxis.setFromMatrix3Column(this, 1); + zAxis.setFromMatrix3Column(this, 2); + return this; + } + /** + * Set this matrix to the upper 3x3 matrix of the given 4x4 matrix. + * + * @param {Matrix4} m - The 4x4 matrix. + * @return {Matrix3} A reference to this matrix. + */ + setFromMatrix4(m) { + const me = m.elements; + this.set( + me[0], + me[4], + me[8], + me[1], + me[5], + me[9], + me[2], + me[6], + me[10] + ); + return this; + } + /** + * Post-multiplies this matrix by the given 3x3 matrix. + * + * @param {Matrix3} m - The matrix to multiply with. + * @return {Matrix3} A reference to this matrix. + */ + multiply(m) { + return this.multiplyMatrices(this, m); + } + /** + * Pre-multiplies this matrix by the given 3x3 matrix. + * + * @param {Matrix3} m - The matrix to multiply with. + * @return {Matrix3} A reference to this matrix. + */ + premultiply(m) { + return this.multiplyMatrices(m, this); + } + /** + * Multiples the given 3x3 matrices and stores the result + * in this matrix. + * + * @param {Matrix3} a - The first matrix. + * @param {Matrix3} b - The second matrix. + * @return {Matrix3} A reference to this matrix. + */ + multiplyMatrices(a, b) { + const ae = a.elements; + const be = b.elements; + const te = this.elements; + const a11 = ae[0], a12 = ae[3], a13 = ae[6]; + const a21 = ae[1], a22 = ae[4], a23 = ae[7]; + const a31 = ae[2], a32 = ae[5], a33 = ae[8]; + const b11 = be[0], b12 = be[3], b13 = be[6]; + const b21 = be[1], b22 = be[4], b23 = be[7]; + const b31 = be[2], b32 = be[5], b33 = be[8]; + te[0] = a11 * b11 + a12 * b21 + a13 * b31; + te[3] = a11 * b12 + a12 * b22 + a13 * b32; + te[6] = a11 * b13 + a12 * b23 + a13 * b33; + te[1] = a21 * b11 + a22 * b21 + a23 * b31; + te[4] = a21 * b12 + a22 * b22 + a23 * b32; + te[7] = a21 * b13 + a22 * b23 + a23 * b33; + te[2] = a31 * b11 + a32 * b21 + a33 * b31; + te[5] = a31 * b12 + a32 * b22 + a33 * b32; + te[8] = a31 * b13 + a32 * b23 + a33 * b33; + return this; + } + /** + * Multiplies every component of the matrix by the given scalar. + * + * @param {number} s - The scalar. + * @return {Matrix3} A reference to this matrix. + */ + multiplyScalar(s) { + const te = this.elements; + te[0] *= s; + te[3] *= s; + te[6] *= s; + te[1] *= s; + te[4] *= s; + te[7] *= s; + te[2] *= s; + te[5] *= s; + te[8] *= s; + return this; + } + /** + * Computes and returns the determinant of this matrix. + * + * @return {number} The determinant. + */ + determinant() { + const te = this.elements; + const a = te[0], b = te[1], c = te[2], d = te[3], e = te[4], f = te[5], g = te[6], h = te[7], i = te[8]; + return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g; + } + /** + * Inverts this matrix, using the [analytic method](https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution). + * You can not invert with a determinant of zero. If you attempt this, the method produces + * a zero matrix instead. + * + * @return {Matrix3} A reference to this matrix. + */ + invert() { + const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n12 = te[3], n22 = te[4], n32 = te[5], n13 = te[6], n23 = te[7], n33 = te[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13; + if (det === 0) + return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0); + const detInv = 1 / det; + te[0] = t11 * detInv; + te[1] = (n31 * n23 - n33 * n21) * detInv; + te[2] = (n32 * n21 - n31 * n22) * detInv; + te[3] = t12 * detInv; + te[4] = (n33 * n11 - n31 * n13) * detInv; + te[5] = (n31 * n12 - n32 * n11) * detInv; + te[6] = t13 * detInv; + te[7] = (n21 * n13 - n23 * n11) * detInv; + te[8] = (n22 * n11 - n21 * n12) * detInv; + return this; + } + /** + * Transposes this matrix in place. + * + * @return {Matrix3} A reference to this matrix. + */ + transpose() { + let tmp; + const m = this.elements; + tmp = m[1]; + m[1] = m[3]; + m[3] = tmp; + tmp = m[2]; + m[2] = m[6]; + m[6] = tmp; + tmp = m[5]; + m[5] = m[7]; + m[7] = tmp; + return this; + } + /** + * Computes the normal matrix which is the inverse transpose of the upper + * left 3x3 portion of the given 4x4 matrix. + * + * @param {Matrix4} matrix4 - The 4x4 matrix. + * @return {Matrix3} A reference to this matrix. + */ + getNormalMatrix(matrix4) { + return this.setFromMatrix4(matrix4).invert().transpose(); + } + /** + * Transposes this matrix into the supplied array, and returns itself unchanged. + * + * @param {Array} r - An array to store the transposed matrix elements. + * @return {Matrix3} A reference to this matrix. + */ + transposeIntoArray(r) { + const m = this.elements; + r[0] = m[0]; + r[1] = m[3]; + r[2] = m[6]; + r[3] = m[1]; + r[4] = m[4]; + r[5] = m[7]; + r[6] = m[2]; + r[7] = m[5]; + r[8] = m[8]; + return this; + } + /** + * Sets the UV transform matrix from offset, repeat, rotation, and center. + * + * @param {number} tx - Offset x. + * @param {number} ty - Offset y. + * @param {number} sx - Repeat x. + * @param {number} sy - Repeat y. + * @param {number} rotation - Rotation, in radians. Positive values rotate counterclockwise. + * @param {number} cx - Center x of rotation. + * @param {number} cy - Center y of rotation + * @return {Matrix3} A reference to this matrix. + */ + setUvTransform(tx, ty, sx, sy, rotation, cx, cy) { + const c = Math.cos(rotation); + const s = Math.sin(rotation); + this.set( + sx * c, + sx * s, + -sx * (c * cx + s * cy) + cx + tx, + -sy * s, + sy * c, + -sy * (-s * cx + c * cy) + cy + ty, + 0, + 0, + 1 + ); + return this; + } + /** + * Scales this matrix with the given scalar values. + * + * @param {number} sx - The amount to scale in the X axis. + * @param {number} sy - The amount to scale in the Y axis. + * @return {Matrix3} A reference to this matrix. + */ + scale(sx, sy) { + this.premultiply(_m3.makeScale(sx, sy)); + return this; + } + /** + * Rotates this matrix by the given angle. + * + * @param {number} theta - The rotation in radians. + * @return {Matrix3} A reference to this matrix. + */ + rotate(theta) { + this.premultiply(_m3.makeRotation(-theta)); + return this; + } + /** + * Translates this matrix by the given scalar values. + * + * @param {number} tx - The amount to translate in the X axis. + * @param {number} ty - The amount to translate in the Y axis. + * @return {Matrix3} A reference to this matrix. + */ + translate(tx, ty) { + this.premultiply(_m3.makeTranslation(tx, ty)); + return this; + } + // for 2D Transforms + /** + * Sets this matrix as a 2D translation transform. + * + * @param {number|Vector2} x - The amount to translate in the X axis or alternatively a translation vector. + * @param {number} y - The amount to translate in the Y axis. + * @return {Matrix3} A reference to this matrix. + */ + makeTranslation(x, y) { + if (x.isVector2) { + this.set( + 1, + 0, + x.x, + 0, + 1, + x.y, + 0, + 0, + 1 + ); + } else { + this.set( + 1, + 0, + x, + 0, + 1, + y, + 0, + 0, + 1 + ); + } + return this; + } + /** + * Sets this matrix as a 2D rotational transformation. + * + * @param {number} theta - The rotation in radians. + * @return {Matrix3} A reference to this matrix. + */ + makeRotation(theta) { + const c = Math.cos(theta); + const s = Math.sin(theta); + this.set( + c, + -s, + 0, + s, + c, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Sets this matrix as a 2D scale transform. + * + * @param {number} x - The amount to scale in the X axis. + * @param {number} y - The amount to scale in the Y axis. + * @return {Matrix3} A reference to this matrix. + */ + makeScale(x, y) { + this.set( + x, + 0, + 0, + 0, + y, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Returns `true` if this matrix is equal with the given one. + * + * @param {Matrix3} matrix - The matrix to test for equality. + * @return {boolean} Whether this matrix is equal with the given one. + */ + equals(matrix) { + const te = this.elements; + const me = matrix.elements; + for (let i = 0; i < 9; i++) { + if (te[i] !== me[i]) + return false; + } + return true; + } + /** + * Sets the elements of the matrix from the given array. + * + * @param {Array} array - The matrix elements in column-major order. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Matrix3} A reference to this matrix. + */ + fromArray(array, offset = 0) { + for (let i = 0; i < 9; i++) { + this.elements[i] = array[i + offset]; + } + return this; + } + /** + * Writes the elements of this matrix to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the matrix elements in column-major order. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The matrix elements in column-major order. + */ + toArray(array = [], offset = 0) { + const te = this.elements; + array[offset] = te[0]; + array[offset + 1] = te[1]; + array[offset + 2] = te[2]; + array[offset + 3] = te[3]; + array[offset + 4] = te[4]; + array[offset + 5] = te[5]; + array[offset + 6] = te[6]; + array[offset + 7] = te[7]; + array[offset + 8] = te[8]; + return array; + } + /** + * Returns a matrix with copied values from this instance. + * + * @return {Matrix3} A clone of this instance. + */ + clone() { + return new this.constructor().fromArray(this.elements); + } +} +const _m3 = /* @__PURE__ */ new Matrix3(); +const LINEAR_REC709_TO_XYZ = /* @__PURE__ */ new Matrix3().set( + 0.4123908, + 0.3575843, + 0.1804808, + 0.212639, + 0.7151687, + 0.0721923, + 0.0193308, + 0.1191948, + 0.9505322 +); +const XYZ_TO_LINEAR_REC709 = /* @__PURE__ */ new Matrix3().set( + 3.2409699, + -1.5373832, + -0.4986108, + -0.9692436, + 1.8759675, + 0.0415551, + 0.0556301, + -0.203977, + 1.0569715 +); +function createColorManagement() { + const ColorManagement2 = { + enabled: true, + workingColorSpace: LinearSRGBColorSpace, + /** + * Implementations of supported color spaces. + * + * Required: + * - primaries: chromaticity coordinates [ rx ry gx gy bx by ] + * - whitePoint: reference white [ x y ] + * - transfer: transfer function (pre-defined) + * - toXYZ: Matrix3 RGB to XYZ transform + * - fromXYZ: Matrix3 XYZ to RGB transform + * - luminanceCoefficients: RGB luminance coefficients + * + * Optional: + * - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace, toneMappingMode: 'extended' | 'standard' } + * - workingColorSpaceConfig: { unpackColorSpace: ColorSpace } + * + * Reference: + * - https://www.russellcottrell.com/photo/matrixCalculator.htm + */ + spaces: {}, + convert: function(color, sourceColorSpace, targetColorSpace) { + if (this.enabled === false || sourceColorSpace === targetColorSpace || !sourceColorSpace || !targetColorSpace) { + return color; + } + if (this.spaces[sourceColorSpace].transfer === SRGBTransfer) { + color.r = SRGBToLinear(color.r); + color.g = SRGBToLinear(color.g); + color.b = SRGBToLinear(color.b); + } + if (this.spaces[sourceColorSpace].primaries !== this.spaces[targetColorSpace].primaries) { + color.applyMatrix3(this.spaces[sourceColorSpace].toXYZ); + color.applyMatrix3(this.spaces[targetColorSpace].fromXYZ); + } + if (this.spaces[targetColorSpace].transfer === SRGBTransfer) { + color.r = LinearToSRGB(color.r); + color.g = LinearToSRGB(color.g); + color.b = LinearToSRGB(color.b); + } + return color; + }, + workingToColorSpace: function(color, targetColorSpace) { + return this.convert(color, this.workingColorSpace, targetColorSpace); + }, + colorSpaceToWorking: function(color, sourceColorSpace) { + return this.convert(color, sourceColorSpace, this.workingColorSpace); + }, + getPrimaries: function(colorSpace) { + return this.spaces[colorSpace].primaries; + }, + getTransfer: function(colorSpace) { + if (colorSpace === NoColorSpace) + return LinearTransfer; + return this.spaces[colorSpace].transfer; + }, + getToneMappingMode: function(colorSpace) { + return this.spaces[colorSpace].outputColorSpaceConfig.toneMappingMode || "standard"; + }, + getLuminanceCoefficients: function(target, colorSpace = this.workingColorSpace) { + return target.fromArray(this.spaces[colorSpace].luminanceCoefficients); + }, + define: function(colorSpaces) { + Object.assign(this.spaces, colorSpaces); + }, + // Internal APIs + _getMatrix: function(targetMatrix, sourceColorSpace, targetColorSpace) { + return targetMatrix.copy(this.spaces[sourceColorSpace].toXYZ).multiply(this.spaces[targetColorSpace].fromXYZ); + }, + _getDrawingBufferColorSpace: function(colorSpace) { + return this.spaces[colorSpace].outputColorSpaceConfig.drawingBufferColorSpace; + }, + _getUnpackColorSpace: function(colorSpace = this.workingColorSpace) { + return this.spaces[colorSpace].workingColorSpaceConfig.unpackColorSpace; + }, + // Deprecated + fromWorkingColorSpace: function(color, targetColorSpace) { + warnOnce("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."); + return ColorManagement2.workingToColorSpace(color, targetColorSpace); + }, + toWorkingColorSpace: function(color, sourceColorSpace) { + warnOnce("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."); + return ColorManagement2.colorSpaceToWorking(color, sourceColorSpace); + } + }; + const REC709_PRIMARIES = [0.64, 0.33, 0.3, 0.6, 0.15, 0.06]; + const REC709_LUMINANCE_COEFFICIENTS = [0.2126, 0.7152, 0.0722]; + const D65 = [0.3127, 0.329]; + ColorManagement2.define({ + [LinearSRGBColorSpace]: { + primaries: REC709_PRIMARIES, + whitePoint: D65, + transfer: LinearTransfer, + toXYZ: LINEAR_REC709_TO_XYZ, + fromXYZ: XYZ_TO_LINEAR_REC709, + luminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS, + workingColorSpaceConfig: { unpackColorSpace: SRGBColorSpace }, + outputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace } + }, + [SRGBColorSpace]: { + primaries: REC709_PRIMARIES, + whitePoint: D65, + transfer: SRGBTransfer, + toXYZ: LINEAR_REC709_TO_XYZ, + fromXYZ: XYZ_TO_LINEAR_REC709, + luminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS, + outputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace } + } + }); + return ColorManagement2; +} +const ColorManagement = /* @__PURE__ */ createColorManagement(); +function SRGBToLinear(c) { + return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4); +} +function LinearToSRGB(c) { + return c < 31308e-7 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055; +} +let _canvas; +class ImageUtils { + /** + * Returns a data URI containing a representation of the given image. + * + * @param {(HTMLImageElement|HTMLCanvasElement)} image - The image object. + * @param {string} [type='image/png'] - Indicates the image format. + * @return {string} The data URI. + */ + static getDataURL(image, type = "image/png") { + if (/^data:/i.test(image.src)) { + return image.src; + } + if (typeof HTMLCanvasElement === "undefined") { + return image.src; + } + let canvas; + if (image instanceof HTMLCanvasElement) { + canvas = image; + } else { + if (_canvas === void 0) + _canvas = createElementNS("canvas"); + _canvas.width = image.width; + _canvas.height = image.height; + const context = _canvas.getContext("2d"); + if (image instanceof ImageData) { + context.putImageData(image, 0, 0); + } else { + context.drawImage(image, 0, 0, image.width, image.height); + } + canvas = _canvas; + } + return canvas.toDataURL(type); + } + /** + * Converts the given sRGB image data to linear color space. + * + * @param {(HTMLImageElement|HTMLCanvasElement|ImageBitmap|Object)} image - The image object. + * @return {HTMLCanvasElement|Object} The converted image. + */ + static sRGBToLinear(image) { + if (typeof HTMLImageElement !== "undefined" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== "undefined" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== "undefined" && image instanceof ImageBitmap) { + const canvas = createElementNS("canvas"); + canvas.width = image.width; + canvas.height = image.height; + const context = canvas.getContext("2d"); + context.drawImage(image, 0, 0, image.width, image.height); + const imageData = context.getImageData(0, 0, image.width, image.height); + const data = imageData.data; + for (let i = 0; i < data.length; i++) { + data[i] = SRGBToLinear(data[i] / 255) * 255; + } + context.putImageData(imageData, 0, 0); + return canvas; + } else if (image.data) { + const data = image.data.slice(0); + for (let i = 0; i < data.length; i++) { + if (data instanceof Uint8Array || data instanceof Uint8ClampedArray) { + data[i] = Math.floor(SRGBToLinear(data[i] / 255) * 255); + } else { + data[i] = SRGBToLinear(data[i]); + } + } + return { + data, + width: image.width, + height: image.height + }; + } else { + warn("ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."); + return image; + } + } +} +let _sourceId = 0; +class Source { + /** + * Constructs a new video texture. + * + * @param {any} [data=null] - The data definition of a texture. + */ + constructor(data = null) { + this.isSource = true; + Object.defineProperty(this, "id", { value: _sourceId++ }); + this.uuid = generateUUID(); + this.data = data; + this.dataReady = true; + this.version = 0; + } + /** + * Returns the dimensions of the source into the given target vector. + * + * @param {(Vector2|Vector3)} target - The target object the result is written into. + * @return {(Vector2|Vector3)} The dimensions of the source. + */ + getSize(target) { + const data = this.data; + if (typeof HTMLVideoElement !== "undefined" && data instanceof HTMLVideoElement) { + target.set(data.videoWidth, data.videoHeight, 0); + } else if (typeof VideoFrame !== "undefined" && data instanceof VideoFrame) { + target.set(data.displayHeight, data.displayWidth, 0); + } else if (data !== null) { + target.set(data.width, data.height, data.depth || 0); + } else { + target.set(0, 0, 0); + } + return target; + } + /** + * When the property is set to `true`, the engine allocates the memory + * for the texture (if necessary) and triggers the actual texture upload + * to the GPU next time the source is used. + * + * @type {boolean} + * @default false + * @param {boolean} value + */ + set needsUpdate(value) { + if (value === true) + this.version++; + } + /** + * Serializes the source into JSON. + * + * @param {?(Object|string)} meta - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized source. + * @see {@link ObjectLoader#parse} + */ + toJSON(meta) { + const isRootObject = meta === void 0 || typeof meta === "string"; + if (!isRootObject && meta.images[this.uuid] !== void 0) { + return meta.images[this.uuid]; + } + const output = { + uuid: this.uuid, + url: "" + }; + const data = this.data; + if (data !== null) { + let url; + if (Array.isArray(data)) { + url = []; + for (let i = 0, l = data.length; i < l; i++) { + if (data[i].isDataTexture) { + url.push(serializeImage(data[i].image)); + } else { + url.push(serializeImage(data[i])); + } + } + } else { + url = serializeImage(data); + } + output.url = url; + } + if (!isRootObject) { + meta.images[this.uuid] = output; + } + return output; + } +} +function serializeImage(image) { + if (typeof HTMLImageElement !== "undefined" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== "undefined" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== "undefined" && image instanceof ImageBitmap) { + return ImageUtils.getDataURL(image); + } else { + if (image.data) { + return { + data: Array.from(image.data), + width: image.width, + height: image.height, + type: image.data.constructor.name + }; + } else { + warn("Texture: Unable to serialize Texture."); + return {}; + } + } +} +let _textureId = 0; +const _tempVec3 = /* @__PURE__ */ new Vector3(); +class Texture extends EventDispatcher { + /** + * Constructs a new texture. + * + * @param {?Object} [image=Texture.DEFAULT_IMAGE] - The image holding the texture data. + * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping. + * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value. + * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value. + * @param {number} [magFilter=LinearFilter] - The mag filter value. + * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value. + * @param {number} [format=RGBAFormat] - The texture format. + * @param {number} [type=UnsignedByteType] - The texture type. + * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value. + * @param {string} [colorSpace=NoColorSpace] - The color space. + */ + constructor(image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace) { + super(); + this.isTexture = true; + Object.defineProperty(this, "id", { value: _textureId++ }); + this.uuid = generateUUID(); + this.name = ""; + this.source = new Source(image); + this.mipmaps = []; + this.mapping = mapping; + this.channel = 0; + this.wrapS = wrapS; + this.wrapT = wrapT; + this.magFilter = magFilter; + this.minFilter = minFilter; + this.anisotropy = anisotropy; + this.format = format; + this.internalFormat = null; + this.type = type; + this.offset = new Vector2(0, 0); + this.repeat = new Vector2(1, 1); + this.center = new Vector2(0, 0); + this.rotation = 0; + this.matrixAutoUpdate = true; + this.matrix = new Matrix3(); + this.generateMipmaps = true; + this.premultiplyAlpha = false; + this.flipY = true; + this.unpackAlignment = 4; + this.colorSpace = colorSpace; + this.userData = {}; + this.updateRanges = []; + this.version = 0; + this.onUpdate = null; + this.renderTarget = null; + this.isRenderTargetTexture = false; + this.isArrayTexture = image && image.depth && image.depth > 1 ? true : false; + this.pmremVersion = 0; + } + /** + * The width of the texture in pixels. + */ + get width() { + return this.source.getSize(_tempVec3).x; + } + /** + * The height of the texture in pixels. + */ + get height() { + return this.source.getSize(_tempVec3).y; + } + /** + * The depth of the texture in pixels. + */ + get depth() { + return this.source.getSize(_tempVec3).z; + } + /** + * The image object holding the texture data. + * + * @type {?Object} + */ + get image() { + return this.source.data; + } + set image(value = null) { + this.source.data = value; + } + /** + * Updates the texture transformation matrix from the from the properties {@link Texture#offset}, + * {@link Texture#repeat}, {@link Texture#rotation}, and {@link Texture#center}. + */ + updateMatrix() { + this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y); + } + /** + * Adds a range of data in the data texture to be updated on the GPU. + * + * @param {number} start - Position at which to start update. + * @param {number} count - The number of components to update. + */ + addUpdateRange(start, count) { + this.updateRanges.push({ start, count }); + } + /** + * Clears the update ranges. + */ + clearUpdateRanges() { + this.updateRanges.length = 0; + } + /** + * Returns a new texture with copied values from this instance. + * + * @return {Texture} A clone of this instance. + */ + clone() { + return new this.constructor().copy(this); + } + /** + * Copies the values of the given texture to this instance. + * + * @param {Texture} source - The texture to copy. + * @return {Texture} A reference to this instance. + */ + copy(source) { + this.name = source.name; + this.source = source.source; + this.mipmaps = source.mipmaps.slice(0); + this.mapping = source.mapping; + this.channel = source.channel; + this.wrapS = source.wrapS; + this.wrapT = source.wrapT; + this.magFilter = source.magFilter; + this.minFilter = source.minFilter; + this.anisotropy = source.anisotropy; + this.format = source.format; + this.internalFormat = source.internalFormat; + this.type = source.type; + this.offset.copy(source.offset); + this.repeat.copy(source.repeat); + this.center.copy(source.center); + this.rotation = source.rotation; + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrix.copy(source.matrix); + this.generateMipmaps = source.generateMipmaps; + this.premultiplyAlpha = source.premultiplyAlpha; + this.flipY = source.flipY; + this.unpackAlignment = source.unpackAlignment; + this.colorSpace = source.colorSpace; + this.renderTarget = source.renderTarget; + this.isRenderTargetTexture = source.isRenderTargetTexture; + this.isArrayTexture = source.isArrayTexture; + this.userData = JSON.parse(JSON.stringify(source.userData)); + this.needsUpdate = true; + return this; + } + /** + * Sets this texture's properties based on `values`. + * @param {Object} values - A container with texture parameters. + */ + setValues(values) { + for (const key in values) { + const newValue = values[key]; + if (newValue === void 0) { + warn(`Texture.setValues(): parameter '${key}' has value of undefined.`); + continue; + } + const currentValue = this[key]; + if (currentValue === void 0) { + warn(`Texture.setValues(): property '${key}' does not exist.`); + continue; + } + if (currentValue && newValue && (currentValue.isVector2 && newValue.isVector2)) { + currentValue.copy(newValue); + } else if (currentValue && newValue && (currentValue.isVector3 && newValue.isVector3)) { + currentValue.copy(newValue); + } else if (currentValue && newValue && (currentValue.isMatrix3 && newValue.isMatrix3)) { + currentValue.copy(newValue); + } else { + this[key] = newValue; + } + } + } + /** + * Serializes the texture into JSON. + * + * @param {?(Object|string)} meta - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized texture. + * @see {@link ObjectLoader#parse} + */ + toJSON(meta) { + const isRootObject = meta === void 0 || typeof meta === "string"; + if (!isRootObject && meta.textures[this.uuid] !== void 0) { + return meta.textures[this.uuid]; + } + const output = { + metadata: { + version: 4.7, + type: "Texture", + generator: "Texture.toJSON" + }, + uuid: this.uuid, + name: this.name, + image: this.source.toJSON(meta).uuid, + mapping: this.mapping, + channel: this.channel, + repeat: [this.repeat.x, this.repeat.y], + offset: [this.offset.x, this.offset.y], + center: [this.center.x, this.center.y], + rotation: this.rotation, + wrap: [this.wrapS, this.wrapT], + format: this.format, + internalFormat: this.internalFormat, + type: this.type, + colorSpace: this.colorSpace, + minFilter: this.minFilter, + magFilter: this.magFilter, + anisotropy: this.anisotropy, + flipY: this.flipY, + generateMipmaps: this.generateMipmaps, + premultiplyAlpha: this.premultiplyAlpha, + unpackAlignment: this.unpackAlignment + }; + if (Object.keys(this.userData).length > 0) + output.userData = this.userData; + if (!isRootObject) { + meta.textures[this.uuid] = output; + } + return output; + } + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + * + * @fires Texture#dispose + */ + dispose() { + this.dispatchEvent({ type: "dispose" }); + } + /** + * Transforms the given uv vector with the textures uv transformation matrix. + * + * @param {Vector2} uv - The uv vector. + * @return {Vector2} The transformed uv vector. + */ + transformUv(uv) { + if (this.mapping !== UVMapping) + return uv; + uv.applyMatrix3(this.matrix); + if (uv.x < 0 || uv.x > 1) { + switch (this.wrapS) { + case RepeatWrapping: + uv.x = uv.x - Math.floor(uv.x); + break; + case ClampToEdgeWrapping: + uv.x = uv.x < 0 ? 0 : 1; + break; + case MirroredRepeatWrapping: + if (Math.abs(Math.floor(uv.x) % 2) === 1) { + uv.x = Math.ceil(uv.x) - uv.x; + } else { + uv.x = uv.x - Math.floor(uv.x); + } + break; + } + } + if (uv.y < 0 || uv.y > 1) { + switch (this.wrapT) { + case RepeatWrapping: + uv.y = uv.y - Math.floor(uv.y); + break; + case ClampToEdgeWrapping: + uv.y = uv.y < 0 ? 0 : 1; + break; + case MirroredRepeatWrapping: + if (Math.abs(Math.floor(uv.y) % 2) === 1) { + uv.y = Math.ceil(uv.y) - uv.y; + } else { + uv.y = uv.y - Math.floor(uv.y); + } + break; + } + } + if (this.flipY) { + uv.y = 1 - uv.y; + } + return uv; + } + /** + * Setting this property to `true` indicates the engine the texture + * must be updated in the next render. This triggers a texture upload + * to the GPU and ensures correct texture parameter configuration. + * + * @type {boolean} + * @default false + * @param {boolean} value + */ + set needsUpdate(value) { + if (value === true) { + this.version++; + this.source.needsUpdate = true; + } + } + /** + * Setting this property to `true` indicates the engine the PMREM + * must be regenerated. + * + * @type {boolean} + * @default false + * @param {boolean} value + */ + set needsPMREMUpdate(value) { + if (value === true) { + this.pmremVersion++; + } + } +} +Texture.DEFAULT_IMAGE = null; +Texture.DEFAULT_MAPPING = UVMapping; +Texture.DEFAULT_ANISOTROPY = 1; +class Vector4 { + /** + * Constructs a new 4D vector. + * + * @param {number} [x=0] - The x value of this vector. + * @param {number} [y=0] - The y value of this vector. + * @param {number} [z=0] - The z value of this vector. + * @param {number} [w=1] - The w value of this vector. + */ + constructor(x = 0, y = 0, z = 0, w = 1) { + Vector4.prototype.isVector4 = true; + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + /** + * Alias for {@link Vector4#z}. + * + * @type {number} + */ + get width() { + return this.z; + } + set width(value) { + this.z = value; + } + /** + * Alias for {@link Vector4#w}. + * + * @type {number} + */ + get height() { + return this.w; + } + set height(value) { + this.w = value; + } + /** + * Sets the vector components. + * + * @param {number} x - The value of the x component. + * @param {number} y - The value of the y component. + * @param {number} z - The value of the z component. + * @param {number} w - The value of the w component. + * @return {Vector4} A reference to this vector. + */ + set(x, y, z, w) { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + return this; + } + /** + * Sets the vector components to the same value. + * + * @param {number} scalar - The value to set for all vector components. + * @return {Vector4} A reference to this vector. + */ + setScalar(scalar) { + this.x = scalar; + this.y = scalar; + this.z = scalar; + this.w = scalar; + return this; + } + /** + * Sets the vector's x component to the given value + * + * @param {number} x - The value to set. + * @return {Vector4} A reference to this vector. + */ + setX(x) { + this.x = x; + return this; + } + /** + * Sets the vector's y component to the given value + * + * @param {number} y - The value to set. + * @return {Vector4} A reference to this vector. + */ + setY(y) { + this.y = y; + return this; + } + /** + * Sets the vector's z component to the given value + * + * @param {number} z - The value to set. + * @return {Vector4} A reference to this vector. + */ + setZ(z) { + this.z = z; + return this; + } + /** + * Sets the vector's w component to the given value + * + * @param {number} w - The value to set. + * @return {Vector4} A reference to this vector. + */ + setW(w) { + this.w = w; + return this; + } + /** + * Allows to set a vector component with an index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y, + * `2` equals to z, `3` equals to w. + * @param {number} value - The value to set. + * @return {Vector4} A reference to this vector. + */ + setComponent(index, value) { + switch (index) { + case 0: + this.x = value; + break; + case 1: + this.y = value; + break; + case 2: + this.z = value; + break; + case 3: + this.w = value; + break; + default: + throw new Error("index is out of range: " + index); + } + return this; + } + /** + * Returns the value of the vector component which matches the given index. + * + * @param {number} index - The component index. `0` equals to x, `1` equals to y, + * `2` equals to z, `3` equals to w. + * @return {number} A vector component value. + */ + getComponent(index) { + switch (index) { + case 0: + return this.x; + case 1: + return this.y; + case 2: + return this.z; + case 3: + return this.w; + default: + throw new Error("index is out of range: " + index); + } + } + /** + * Returns a new vector with copied values from this instance. + * + * @return {Vector4} A clone of this instance. + */ + clone() { + return new this.constructor(this.x, this.y, this.z, this.w); + } + /** + * Copies the values of the given vector to this instance. + * + * @param {Vector3|Vector4} v - The vector to copy. + * @return {Vector4} A reference to this vector. + */ + copy(v) { + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = v.w !== void 0 ? v.w : 1; + return this; + } + /** + * Adds the given vector to this instance. + * + * @param {Vector4} v - The vector to add. + * @return {Vector4} A reference to this vector. + */ + add(v) { + this.x += v.x; + this.y += v.y; + this.z += v.z; + this.w += v.w; + return this; + } + /** + * Adds the given scalar value to all components of this instance. + * + * @param {number} s - The scalar to add. + * @return {Vector4} A reference to this vector. + */ + addScalar(s) { + this.x += s; + this.y += s; + this.z += s; + this.w += s; + return this; + } + /** + * Adds the given vectors and stores the result in this instance. + * + * @param {Vector4} a - The first vector. + * @param {Vector4} b - The second vector. + * @return {Vector4} A reference to this vector. + */ + addVectors(a, b) { + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + this.w = a.w + b.w; + return this; + } + /** + * Adds the given vector scaled by the given factor to this instance. + * + * @param {Vector4} v - The vector. + * @param {number} s - The factor that scales `v`. + * @return {Vector4} A reference to this vector. + */ + addScaledVector(v, s) { + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + this.w += v.w * s; + return this; + } + /** + * Subtracts the given vector from this instance. + * + * @param {Vector4} v - The vector to subtract. + * @return {Vector4} A reference to this vector. + */ + sub(v) { + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + this.w -= v.w; + return this; + } + /** + * Subtracts the given scalar value from all components of this instance. + * + * @param {number} s - The scalar to subtract. + * @return {Vector4} A reference to this vector. + */ + subScalar(s) { + this.x -= s; + this.y -= s; + this.z -= s; + this.w -= s; + return this; + } + /** + * Subtracts the given vectors and stores the result in this instance. + * + * @param {Vector4} a - The first vector. + * @param {Vector4} b - The second vector. + * @return {Vector4} A reference to this vector. + */ + subVectors(a, b) { + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + this.w = a.w - b.w; + return this; + } + /** + * Multiplies the given vector with this instance. + * + * @param {Vector4} v - The vector to multiply. + * @return {Vector4} A reference to this vector. + */ + multiply(v) { + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + this.w *= v.w; + return this; + } + /** + * Multiplies the given scalar value with all components of this instance. + * + * @param {number} scalar - The scalar to multiply. + * @return {Vector4} A reference to this vector. + */ + multiplyScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + this.w *= scalar; + return this; + } + /** + * Multiplies this vector with the given 4x4 matrix. + * + * @param {Matrix4} m - The 4x4 matrix. + * @return {Vector4} A reference to this vector. + */ + applyMatrix4(m) { + const x = this.x, y = this.y, z = this.z, w = this.w; + const e = m.elements; + this.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w; + this.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w; + this.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w; + this.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w; + return this; + } + /** + * Divides this instance by the given vector. + * + * @param {Vector4} v - The vector to divide. + * @return {Vector4} A reference to this vector. + */ + divide(v) { + this.x /= v.x; + this.y /= v.y; + this.z /= v.z; + this.w /= v.w; + return this; + } + /** + * Divides this vector by the given scalar. + * + * @param {number} scalar - The scalar to divide. + * @return {Vector4} A reference to this vector. + */ + divideScalar(scalar) { + return this.multiplyScalar(1 / scalar); + } + /** + * Sets the x, y and z components of this + * vector to the quaternion's axis and w to the angle. + * + * @param {Quaternion} q - The Quaternion to set. + * @return {Vector4} A reference to this vector. + */ + setAxisAngleFromQuaternion(q) { + this.w = 2 * Math.acos(q.w); + const s = Math.sqrt(1 - q.w * q.w); + if (s < 1e-4) { + this.x = 1; + this.y = 0; + this.z = 0; + } else { + this.x = q.x / s; + this.y = q.y / s; + this.z = q.z / s; + } + return this; + } + /** + * Sets the x, y and z components of this + * vector to the axis of rotation and w to the angle. + * + * @param {Matrix4} m - A 4x4 matrix of which the upper left 3x3 matrix is a pure rotation matrix. + * @return {Vector4} A reference to this vector. + */ + setAxisAngleFromRotationMatrix(m) { + let angle, x, y, z; + const epsilon = 0.01, epsilon2 = 0.1, te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10]; + if (Math.abs(m12 - m21) < epsilon && Math.abs(m13 - m31) < epsilon && Math.abs(m23 - m32) < epsilon) { + if (Math.abs(m12 + m21) < epsilon2 && Math.abs(m13 + m31) < epsilon2 && Math.abs(m23 + m32) < epsilon2 && Math.abs(m11 + m22 + m33 - 3) < epsilon2) { + this.set(1, 0, 0, 0); + return this; + } + angle = Math.PI; + const xx = (m11 + 1) / 2; + const yy = (m22 + 1) / 2; + const zz = (m33 + 1) / 2; + const xy = (m12 + m21) / 4; + const xz = (m13 + m31) / 4; + const yz = (m23 + m32) / 4; + if (xx > yy && xx > zz) { + if (xx < epsilon) { + x = 0; + y = 0.707106781; + z = 0.707106781; + } else { + x = Math.sqrt(xx); + y = xy / x; + z = xz / x; + } + } else if (yy > zz) { + if (yy < epsilon) { + x = 0.707106781; + y = 0; + z = 0.707106781; + } else { + y = Math.sqrt(yy); + x = xy / y; + z = yz / y; + } + } else { + if (zz < epsilon) { + x = 0.707106781; + y = 0.707106781; + z = 0; + } else { + z = Math.sqrt(zz); + x = xz / z; + y = yz / z; + } + } + this.set(x, y, z, angle); + return this; + } + let s = Math.sqrt((m32 - m23) * (m32 - m23) + (m13 - m31) * (m13 - m31) + (m21 - m12) * (m21 - m12)); + if (Math.abs(s) < 1e-3) + s = 1; + this.x = (m32 - m23) / s; + this.y = (m13 - m31) / s; + this.z = (m21 - m12) / s; + this.w = Math.acos((m11 + m22 + m33 - 1) / 2); + return this; + } + /** + * Sets the vector components to the position elements of the + * given transformation matrix. + * + * @param {Matrix4} m - The 4x4 matrix. + * @return {Vector4} A reference to this vector. + */ + setFromMatrixPosition(m) { + const e = m.elements; + this.x = e[12]; + this.y = e[13]; + this.z = e[14]; + this.w = e[15]; + return this; + } + /** + * If this vector's x, y, z or w value is greater than the given vector's x, y, z or w + * value, replace that value with the corresponding min value. + * + * @param {Vector4} v - The vector. + * @return {Vector4} A reference to this vector. + */ + min(v) { + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); + this.z = Math.min(this.z, v.z); + this.w = Math.min(this.w, v.w); + return this; + } + /** + * If this vector's x, y, z or w value is less than the given vector's x, y, z or w + * value, replace that value with the corresponding max value. + * + * @param {Vector4} v - The vector. + * @return {Vector4} A reference to this vector. + */ + max(v) { + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); + this.z = Math.max(this.z, v.z); + this.w = Math.max(this.w, v.w); + return this; + } + /** + * If this vector's x, y, z or w value is greater than the max vector's x, y, z or w + * value, it is replaced by the corresponding value. + * If this vector's x, y, z or w value is less than the min vector's x, y, z or w value, + * it is replaced by the corresponding value. + * + * @param {Vector4} min - The minimum x, y and z values. + * @param {Vector4} max - The maximum x, y and z values in the desired range. + * @return {Vector4} A reference to this vector. + */ + clamp(min, max) { + this.x = clamp(this.x, min.x, max.x); + this.y = clamp(this.y, min.y, max.y); + this.z = clamp(this.z, min.z, max.z); + this.w = clamp(this.w, min.w, max.w); + return this; + } + /** + * If this vector's x, y, z or w values are greater than the max value, they are + * replaced by the max value. + * If this vector's x, y, z or w values are less than the min value, they are + * replaced by the min value. + * + * @param {number} minVal - The minimum value the components will be clamped to. + * @param {number} maxVal - The maximum value the components will be clamped to. + * @return {Vector4} A reference to this vector. + */ + clampScalar(minVal, maxVal) { + this.x = clamp(this.x, minVal, maxVal); + this.y = clamp(this.y, minVal, maxVal); + this.z = clamp(this.z, minVal, maxVal); + this.w = clamp(this.w, minVal, maxVal); + return this; + } + /** + * If this vector's length is greater than the max value, it is replaced by + * the max value. + * If this vector's length is less than the min value, it is replaced by the + * min value. + * + * @param {number} min - The minimum value the vector length will be clamped to. + * @param {number} max - The maximum value the vector length will be clamped to. + * @return {Vector4} A reference to this vector. + */ + clampLength(min, max) { + const length = this.length(); + return this.divideScalar(length || 1).multiplyScalar(clamp(length, min, max)); + } + /** + * The components of this vector are rounded down to the nearest integer value. + * + * @return {Vector4} A reference to this vector. + */ + floor() { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + this.z = Math.floor(this.z); + this.w = Math.floor(this.w); + return this; + } + /** + * The components of this vector are rounded up to the nearest integer value. + * + * @return {Vector4} A reference to this vector. + */ + ceil() { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + this.z = Math.ceil(this.z); + this.w = Math.ceil(this.w); + return this; + } + /** + * The components of this vector are rounded to the nearest integer value + * + * @return {Vector4} A reference to this vector. + */ + round() { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + this.z = Math.round(this.z); + this.w = Math.round(this.w); + return this; + } + /** + * The components of this vector are rounded towards zero (up if negative, + * down if positive) to an integer value. + * + * @return {Vector4} A reference to this vector. + */ + roundToZero() { + this.x = Math.trunc(this.x); + this.y = Math.trunc(this.y); + this.z = Math.trunc(this.z); + this.w = Math.trunc(this.w); + return this; + } + /** + * Inverts this vector - i.e. sets x = -x, y = -y, z = -z, w = -w. + * + * @return {Vector4} A reference to this vector. + */ + negate() { + this.x = -this.x; + this.y = -this.y; + this.z = -this.z; + this.w = -this.w; + return this; + } + /** + * Calculates the dot product of the given vector with this instance. + * + * @param {Vector4} v - The vector to compute the dot product with. + * @return {number} The result of the dot product. + */ + dot(v) { + return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w; + } + /** + * Computes the square of the Euclidean length (straight-line length) from + * (0, 0, 0, 0) to (x, y, z, w). If you are comparing the lengths of vectors, you should + * compare the length squared instead as it is slightly more efficient to calculate. + * + * @return {number} The square length of this vector. + */ + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + } + /** + * Computes the Euclidean length (straight-line length) from (0, 0, 0, 0) to (x, y, z, w). + * + * @return {number} The length of this vector. + */ + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); + } + /** + * Computes the Manhattan length of this vector. + * + * @return {number} The length of this vector. + */ + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w); + } + /** + * Converts this vector to a unit vector - that is, sets it equal to a vector + * with the same direction as this one, but with a vector length of `1`. + * + * @return {Vector4} A reference to this vector. + */ + normalize() { + return this.divideScalar(this.length() || 1); + } + /** + * Sets this vector to a vector with the same direction as this one, but + * with the specified length. + * + * @param {number} length - The new length of this vector. + * @return {Vector4} A reference to this vector. + */ + setLength(length) { + return this.normalize().multiplyScalar(length); + } + /** + * Linearly interpolates between the given vector and this instance, where + * alpha is the percent distance along the line - alpha = 0 will be this + * vector, and alpha = 1 will be the given one. + * + * @param {Vector4} v - The vector to interpolate towards. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector4} A reference to this vector. + */ + lerp(v, alpha) { + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; + this.z += (v.z - this.z) * alpha; + this.w += (v.w - this.w) * alpha; + return this; + } + /** + * Linearly interpolates between the given vectors, where alpha is the percent + * distance along the line - alpha = 0 will be first vector, and alpha = 1 will + * be the second one. The result is stored in this instance. + * + * @param {Vector4} v1 - The first vector. + * @param {Vector4} v2 - The second vector. + * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`. + * @return {Vector4} A reference to this vector. + */ + lerpVectors(v1, v2, alpha) { + this.x = v1.x + (v2.x - v1.x) * alpha; + this.y = v1.y + (v2.y - v1.y) * alpha; + this.z = v1.z + (v2.z - v1.z) * alpha; + this.w = v1.w + (v2.w - v1.w) * alpha; + return this; + } + /** + * Returns `true` if this vector is equal with the given one. + * + * @param {Vector4} v - The vector to test for equality. + * @return {boolean} Whether this vector is equal with the given one. + */ + equals(v) { + return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w; + } + /** + * Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`, + * z value to be `array[ offset + 2 ]`, w value to be `array[ offset + 3 ]`. + * + * @param {Array} array - An array holding the vector component values. + * @param {number} [offset=0] - The offset into the array. + * @return {Vector4} A reference to this vector. + */ + fromArray(array, offset = 0) { + this.x = array[offset]; + this.y = array[offset + 1]; + this.z = array[offset + 2]; + this.w = array[offset + 3]; + return this; + } + /** + * Writes the components of this vector to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the vector components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The vector components. + */ + toArray(array = [], offset = 0) { + array[offset] = this.x; + array[offset + 1] = this.y; + array[offset + 2] = this.z; + array[offset + 3] = this.w; + return array; + } + /** + * Sets the components of this vector from the given buffer attribute. + * + * @param {BufferAttribute} attribute - The buffer attribute holding vector data. + * @param {number} index - The index into the attribute. + * @return {Vector4} A reference to this vector. + */ + fromBufferAttribute(attribute, index) { + this.x = attribute.getX(index); + this.y = attribute.getY(index); + this.z = attribute.getZ(index); + this.w = attribute.getW(index); + return this; + } + /** + * Sets each component of this vector to a pseudo-random value between `0` and + * `1`, excluding `1`. + * + * @return {Vector4} A reference to this vector. + */ + random() { + this.x = Math.random(); + this.y = Math.random(); + this.z = Math.random(); + this.w = Math.random(); + return this; + } + *[Symbol.iterator]() { + yield this.x; + yield this.y; + yield this.z; + yield this.w; + } +} +class Box3 { + /** + * Constructs a new bounding box. + * + * @param {Vector3} [min=(Infinity,Infinity,Infinity)] - A vector representing the lower boundary of the box. + * @param {Vector3} [max=(-Infinity,-Infinity,-Infinity)] - A vector representing the upper boundary of the box. + */ + constructor(min = new Vector3(Infinity, Infinity, Infinity), max = new Vector3(-Infinity, -Infinity, -Infinity)) { + this.isBox3 = true; + this.min = min; + this.max = max; + } + /** + * Sets the lower and upper boundaries of this box. + * Please note that this method only copies the values from the given objects. + * + * @param {Vector3} min - The lower boundary of the box. + * @param {Vector3} max - The upper boundary of the box. + * @return {Box3} A reference to this bounding box. + */ + set(min, max) { + this.min.copy(min); + this.max.copy(max); + return this; + } + /** + * Sets the upper and lower bounds of this box so it encloses the position data + * in the given array. + * + * @param {Array} array - An array holding 3D position data. + * @return {Box3} A reference to this bounding box. + */ + setFromArray(array) { + this.makeEmpty(); + for (let i = 0, il = array.length; i < il; i += 3) { + this.expandByPoint(_vector$b.fromArray(array, i)); + } + return this; + } + /** + * Sets the upper and lower bounds of this box so it encloses the position data + * in the given buffer attribute. + * + * @param {BufferAttribute} attribute - A buffer attribute holding 3D position data. + * @return {Box3} A reference to this bounding box. + */ + setFromBufferAttribute(attribute) { + this.makeEmpty(); + for (let i = 0, il = attribute.count; i < il; i++) { + this.expandByPoint(_vector$b.fromBufferAttribute(attribute, i)); + } + return this; + } + /** + * Sets the upper and lower bounds of this box so it encloses the position data + * in the given array. + * + * @param {Array} points - An array holding 3D position data as instances of {@link Vector3}. + * @return {Box3} A reference to this bounding box. + */ + setFromPoints(points) { + this.makeEmpty(); + for (let i = 0, il = points.length; i < il; i++) { + this.expandByPoint(points[i]); + } + return this; + } + /** + * Centers this box on the given center vector and sets this box's width, height and + * depth to the given size values. + * + * @param {Vector3} center - The center of the box. + * @param {Vector3} size - The x, y and z dimensions of the box. + * @return {Box3} A reference to this bounding box. + */ + setFromCenterAndSize(center, size) { + const halfSize = _vector$b.copy(size).multiplyScalar(0.5); + this.min.copy(center).sub(halfSize); + this.max.copy(center).add(halfSize); + return this; + } + /** + * Computes the world-axis-aligned bounding box for the given 3D object + * (including its children), accounting for the object's, and children's, + * world transforms. The function may result in a larger box than strictly necessary. + * + * @param {Object3D} object - The 3D object to compute the bounding box for. + * @param {boolean} [precise=false] - If set to `true`, the method computes the smallest + * world-axis-aligned bounding box at the expense of more computation. + * @return {Box3} A reference to this bounding box. + */ + setFromObject(object, precise = false) { + this.makeEmpty(); + return this.expandByObject(object, precise); + } + /** + * Returns a new box with copied values from this instance. + * + * @return {Box3} A clone of this instance. + */ + clone() { + return new this.constructor().copy(this); + } + /** + * Copies the values of the given box to this instance. + * + * @param {Box3} box - The box to copy. + * @return {Box3} A reference to this bounding box. + */ + copy(box) { + this.min.copy(box.min); + this.max.copy(box.max); + return this; + } + /** + * Makes this box empty which means in encloses a zero space in 3D. + * + * @return {Box3} A reference to this bounding box. + */ + makeEmpty() { + this.min.x = this.min.y = this.min.z = Infinity; + this.max.x = this.max.y = this.max.z = -Infinity; + return this; + } + /** + * Returns true if this box includes zero points within its bounds. + * Note that a box with equal lower and upper bounds still includes one + * point, the one both bounds share. + * + * @return {boolean} Whether this box is empty or not. + */ + isEmpty() { + return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z; + } + /** + * Returns the center point of this box. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The center point. + */ + getCenter(target) { + return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5); + } + /** + * Returns the dimensions of this box. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The size. + */ + getSize(target) { + return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min); + } + /** + * Expands the boundaries of this box to include the given point. + * + * @param {Vector3} point - The point that should be included by the bounding box. + * @return {Box3} A reference to this bounding box. + */ + expandByPoint(point) { + this.min.min(point); + this.max.max(point); + return this; + } + /** + * Expands this box equilaterally by the given vector. The width of this + * box will be expanded by the x component of the vector in both + * directions. The height of this box will be expanded by the y component of + * the vector in both directions. The depth of this box will be + * expanded by the z component of the vector in both directions. + * + * @param {Vector3} vector - The vector that should expand the bounding box. + * @return {Box3} A reference to this bounding box. + */ + expandByVector(vector) { + this.min.sub(vector); + this.max.add(vector); + return this; + } + /** + * Expands each dimension of the box by the given scalar. If negative, the + * dimensions of the box will be contracted. + * + * @param {number} scalar - The scalar value that should expand the bounding box. + * @return {Box3} A reference to this bounding box. + */ + expandByScalar(scalar) { + this.min.addScalar(-scalar); + this.max.addScalar(scalar); + return this; + } + /** + * Expands the boundaries of this box to include the given 3D object and + * its children, accounting for the object's, and children's, world + * transforms. The function may result in a larger box than strictly + * necessary (unless the precise parameter is set to true). + * + * @param {Object3D} object - The 3D object that should expand the bounding box. + * @param {boolean} precise - If set to `true`, the method expands the bounding box + * as little as necessary at the expense of more computation. + * @return {Box3} A reference to this bounding box. + */ + expandByObject(object, precise = false) { + object.updateWorldMatrix(false, false); + const geometry = object.geometry; + if (geometry !== void 0) { + const positionAttribute = geometry.getAttribute("position"); + if (precise === true && positionAttribute !== void 0 && object.isInstancedMesh !== true) { + for (let i = 0, l = positionAttribute.count; i < l; i++) { + if (object.isMesh === true) { + object.getVertexPosition(i, _vector$b); + } else { + _vector$b.fromBufferAttribute(positionAttribute, i); + } + _vector$b.applyMatrix4(object.matrixWorld); + this.expandByPoint(_vector$b); + } + } else { + if (object.boundingBox !== void 0) { + if (object.boundingBox === null) { + object.computeBoundingBox(); + } + _box$4.copy(object.boundingBox); + } else { + if (geometry.boundingBox === null) { + geometry.computeBoundingBox(); + } + _box$4.copy(geometry.boundingBox); + } + _box$4.applyMatrix4(object.matrixWorld); + this.union(_box$4); + } + } + const children = object.children; + for (let i = 0, l = children.length; i < l; i++) { + this.expandByObject(children[i], precise); + } + return this; + } + /** + * Returns `true` if the given point lies within or on the boundaries of this box. + * + * @param {Vector3} point - The point to test. + * @return {boolean} Whether the bounding box contains the given point or not. + */ + containsPoint(point) { + return point.x >= this.min.x && point.x <= this.max.x && point.y >= this.min.y && point.y <= this.max.y && point.z >= this.min.z && point.z <= this.max.z; + } + /** + * Returns `true` if this bounding box includes the entirety of the given bounding box. + * If this box and the given one are identical, this function also returns `true`. + * + * @param {Box3} box - The bounding box to test. + * @return {boolean} Whether the bounding box contains the given bounding box or not. + */ + containsBox(box) { + return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z; + } + /** + * Returns a point as a proportion of this box's width, height and depth. + * + * @param {Vector3} point - A point in 3D space. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} A point as a proportion of this box's width, height and depth. + */ + getParameter(point, target) { + return target.set( + (point.x - this.min.x) / (this.max.x - this.min.x), + (point.y - this.min.y) / (this.max.y - this.min.y), + (point.z - this.min.z) / (this.max.z - this.min.z) + ); + } + /** + * Returns `true` if the given bounding box intersects with this bounding box. + * + * @param {Box3} box - The bounding box to test. + * @return {boolean} Whether the given bounding box intersects with this bounding box. + */ + intersectsBox(box) { + return box.max.x >= this.min.x && box.min.x <= this.max.x && box.max.y >= this.min.y && box.min.y <= this.max.y && box.max.z >= this.min.z && box.min.z <= this.max.z; + } + /** + * Returns `true` if the given bounding sphere intersects with this bounding box. + * + * @param {Sphere} sphere - The bounding sphere to test. + * @return {boolean} Whether the given bounding sphere intersects with this bounding box. + */ + intersectsSphere(sphere) { + this.clampPoint(sphere.center, _vector$b); + return _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius; + } + /** + * Returns `true` if the given plane intersects with this bounding box. + * + * @param {Plane} plane - The plane to test. + * @return {boolean} Whether the given plane intersects with this bounding box. + */ + intersectsPlane(plane) { + let min, max; + if (plane.normal.x > 0) { + min = plane.normal.x * this.min.x; + max = plane.normal.x * this.max.x; + } else { + min = plane.normal.x * this.max.x; + max = plane.normal.x * this.min.x; + } + if (plane.normal.y > 0) { + min += plane.normal.y * this.min.y; + max += plane.normal.y * this.max.y; + } else { + min += plane.normal.y * this.max.y; + max += plane.normal.y * this.min.y; + } + if (plane.normal.z > 0) { + min += plane.normal.z * this.min.z; + max += plane.normal.z * this.max.z; + } else { + min += plane.normal.z * this.max.z; + max += plane.normal.z * this.min.z; + } + return min <= -plane.constant && max >= -plane.constant; + } + /** + * Returns `true` if the given triangle intersects with this bounding box. + * + * @param {Triangle} triangle - The triangle to test. + * @return {boolean} Whether the given triangle intersects with this bounding box. + */ + intersectsTriangle(triangle3) { + if (this.isEmpty()) { + return false; + } + this.getCenter(_center); + _extents.subVectors(this.max, _center); + _v0$2.subVectors(triangle3.a, _center); + _v1$7.subVectors(triangle3.b, _center); + _v2$4.subVectors(triangle3.c, _center); + _f0.subVectors(_v1$7, _v0$2); + _f1.subVectors(_v2$4, _v1$7); + _f2.subVectors(_v0$2, _v2$4); + let axes = [ + 0, + -_f0.z, + _f0.y, + 0, + -_f1.z, + _f1.y, + 0, + -_f2.z, + _f2.y, + _f0.z, + 0, + -_f0.x, + _f1.z, + 0, + -_f1.x, + _f2.z, + 0, + -_f2.x, + -_f0.y, + _f0.x, + 0, + -_f1.y, + _f1.x, + 0, + -_f2.y, + _f2.x, + 0 + ]; + if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) { + return false; + } + axes = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) { + return false; + } + _triangleNormal.crossVectors(_f0, _f1); + axes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z]; + return satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents); + } + /** + * Clamps the given point within the bounds of this box. + * + * @param {Vector3} point - The point to clamp. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The clamped point. + */ + clampPoint(point, target) { + return target.copy(point).clamp(this.min, this.max); + } + /** + * Returns the euclidean distance from any edge of this box to the specified point. If + * the given point lies inside of this box, the distance will be `0`. + * + * @param {Vector3} point - The point to compute the distance to. + * @return {number} The euclidean distance. + */ + distanceToPoint(point) { + return this.clampPoint(point, _vector$b).distanceTo(point); + } + /** + * Returns a bounding sphere that encloses this bounding box. + * + * @param {Sphere} target - The target sphere that is used to store the method's result. + * @return {Sphere} The bounding sphere that encloses this bounding box. + */ + getBoundingSphere(target) { + if (this.isEmpty()) { + target.makeEmpty(); + } else { + this.getCenter(target.center); + target.radius = this.getSize(_vector$b).length() * 0.5; + } + return target; + } + /** + * Computes the intersection of this bounding box and the given one, setting the upper + * bound of this box to the lesser of the two boxes' upper bounds and the + * lower bound of this box to the greater of the two boxes' lower bounds. If + * there's no overlap, makes this box empty. + * + * @param {Box3} box - The bounding box to intersect with. + * @return {Box3} A reference to this bounding box. + */ + intersect(box) { + this.min.max(box.min); + this.max.min(box.max); + if (this.isEmpty()) + this.makeEmpty(); + return this; + } + /** + * Computes the union of this box and another and the given one, setting the upper + * bound of this box to the greater of the two boxes' upper bounds and the + * lower bound of this box to the lesser of the two boxes' lower bounds. + * + * @param {Box3} box - The bounding box that will be unioned with this instance. + * @return {Box3} A reference to this bounding box. + */ + union(box) { + this.min.min(box.min); + this.max.max(box.max); + return this; + } + /** + * Transforms this bounding box by the given 4x4 transformation matrix. + * + * @param {Matrix4} matrix - The transformation matrix. + * @return {Box3} A reference to this bounding box. + */ + applyMatrix4(matrix) { + if (this.isEmpty()) + return this; + _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix); + _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix); + _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix); + _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix); + _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix); + _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix); + _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix); + _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix); + this.setFromPoints(_points); + return this; + } + /** + * Adds the given offset to both the upper and lower bounds of this bounding box, + * effectively moving it in 3D space. + * + * @param {Vector3} offset - The offset that should be used to translate the bounding box. + * @return {Box3} A reference to this bounding box. + */ + translate(offset) { + this.min.add(offset); + this.max.add(offset); + return this; + } + /** + * Returns `true` if this bounding box is equal with the given one. + * + * @param {Box3} box - The box to test for equality. + * @return {boolean} Whether this bounding box is equal with the given one. + */ + equals(box) { + return box.min.equals(this.min) && box.max.equals(this.max); + } + /** + * Returns a serialized structure of the bounding box. + * + * @return {Object} Serialized structure with fields representing the object state. + */ + toJSON() { + return { + min: this.min.toArray(), + max: this.max.toArray() + }; + } + /** + * Returns a serialized structure of the bounding box. + * + * @param {Object} json - The serialized json to set the box from. + * @return {Box3} A reference to this bounding box. + */ + fromJSON(json) { + this.min.fromArray(json.min); + this.max.fromArray(json.max); + return this; + } +} +const _points = [ + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3(), + /* @__PURE__ */ new Vector3() +]; +const _vector$b = /* @__PURE__ */ new Vector3(); +const _box$4 = /* @__PURE__ */ new Box3(); +const _v0$2 = /* @__PURE__ */ new Vector3(); +const _v1$7 = /* @__PURE__ */ new Vector3(); +const _v2$4 = /* @__PURE__ */ new Vector3(); +const _f0 = /* @__PURE__ */ new Vector3(); +const _f1 = /* @__PURE__ */ new Vector3(); +const _f2 = /* @__PURE__ */ new Vector3(); +const _center = /* @__PURE__ */ new Vector3(); +const _extents = /* @__PURE__ */ new Vector3(); +const _triangleNormal = /* @__PURE__ */ new Vector3(); +const _testAxis = /* @__PURE__ */ new Vector3(); +function satForAxes(axes, v0, v1, v2, extents) { + for (let i = 0, j = axes.length - 3; i <= j; i += 3) { + _testAxis.fromArray(axes, i); + const r = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z); + const p0 = v0.dot(_testAxis); + const p1 = v1.dot(_testAxis); + const p2 = v2.dot(_testAxis); + if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) { + return false; + } + } + return true; +} +const _box$3 = /* @__PURE__ */ new Box3(); +const _v1$6 = /* @__PURE__ */ new Vector3(); +const _v2$3 = /* @__PURE__ */ new Vector3(); +class Sphere { + /** + * Constructs a new sphere. + * + * @param {Vector3} [center=(0,0,0)] - The center of the sphere + * @param {number} [radius=-1] - The radius of the sphere. + */ + constructor(center = new Vector3(), radius = -1) { + this.isSphere = true; + this.center = center; + this.radius = radius; + } + /** + * Sets the sphere's components by copying the given values. + * + * @param {Vector3} center - The center. + * @param {number} radius - The radius. + * @return {Sphere} A reference to this sphere. + */ + set(center, radius) { + this.center.copy(center); + this.radius = radius; + return this; + } + /** + * Computes the minimum bounding sphere for list of points. + * If the optional center point is given, it is used as the sphere's + * center. Otherwise, the center of the axis-aligned bounding box + * encompassing the points is calculated. + * + * @param {Array} points - A list of points in 3D space. + * @param {Vector3} [optionalCenter] - The center of the sphere. + * @return {Sphere} A reference to this sphere. + */ + setFromPoints(points, optionalCenter) { + const center = this.center; + if (optionalCenter !== void 0) { + center.copy(optionalCenter); + } else { + _box$3.setFromPoints(points).getCenter(center); + } + let maxRadiusSq = 0; + for (let i = 0, il = points.length; i < il; i++) { + maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i])); + } + this.radius = Math.sqrt(maxRadiusSq); + return this; + } + /** + * Copies the values of the given sphere to this instance. + * + * @param {Sphere} sphere - The sphere to copy. + * @return {Sphere} A reference to this sphere. + */ + copy(sphere) { + this.center.copy(sphere.center); + this.radius = sphere.radius; + return this; + } + /** + * Returns `true` if the sphere is empty (the radius set to a negative number). + * + * Spheres with a radius of `0` contain only their center point and are not + * considered to be empty. + * + * @return {boolean} Whether this sphere is empty or not. + */ + isEmpty() { + return this.radius < 0; + } + /** + * Makes this sphere empty which means in encloses a zero space in 3D. + * + * @return {Sphere} A reference to this sphere. + */ + makeEmpty() { + this.center.set(0, 0, 0); + this.radius = -1; + return this; + } + /** + * Returns `true` if this sphere contains the given point inclusive of + * the surface of the sphere. + * + * @param {Vector3} point - The point to check. + * @return {boolean} Whether this sphere contains the given point or not. + */ + containsPoint(point) { + return point.distanceToSquared(this.center) <= this.radius * this.radius; + } + /** + * Returns the closest distance from the boundary of the sphere to the + * given point. If the sphere contains the point, the distance will + * be negative. + * + * @param {Vector3} point - The point to compute the distance to. + * @return {number} The distance to the point. + */ + distanceToPoint(point) { + return point.distanceTo(this.center) - this.radius; + } + /** + * Returns `true` if this sphere intersects with the given one. + * + * @param {Sphere} sphere - The sphere to test. + * @return {boolean} Whether this sphere intersects with the given one or not. + */ + intersectsSphere(sphere) { + const radiusSum = this.radius + sphere.radius; + return sphere.center.distanceToSquared(this.center) <= radiusSum * radiusSum; + } + /** + * Returns `true` if this sphere intersects with the given box. + * + * @param {Box3} box - The box to test. + * @return {boolean} Whether this sphere intersects with the given box or not. + */ + intersectsBox(box) { + return box.intersectsSphere(this); + } + /** + * Returns `true` if this sphere intersects with the given plane. + * + * @param {Plane} plane - The plane to test. + * @return {boolean} Whether this sphere intersects with the given plane or not. + */ + intersectsPlane(plane) { + return Math.abs(plane.distanceToPoint(this.center)) <= this.radius; + } + /** + * Clamps a point within the sphere. If the point is outside the sphere, it + * will clamp it to the closest point on the edge of the sphere. Points + * already inside the sphere will not be affected. + * + * @param {Vector3} point - The plane to clamp. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The clamped point. + */ + clampPoint(point, target) { + const deltaLengthSq = this.center.distanceToSquared(point); + target.copy(point); + if (deltaLengthSq > this.radius * this.radius) { + target.sub(this.center).normalize(); + target.multiplyScalar(this.radius).add(this.center); + } + return target; + } + /** + * Returns a bounding box that encloses this sphere. + * + * @param {Box3} target - The target box that is used to store the method's result. + * @return {Box3} The bounding box that encloses this sphere. + */ + getBoundingBox(target) { + if (this.isEmpty()) { + target.makeEmpty(); + return target; + } + target.set(this.center, this.center); + target.expandByScalar(this.radius); + return target; + } + /** + * Transforms this sphere with the given 4x4 transformation matrix. + * + * @param {Matrix4} matrix - The transformation matrix. + * @return {Sphere} A reference to this sphere. + */ + applyMatrix4(matrix) { + this.center.applyMatrix4(matrix); + this.radius = this.radius * matrix.getMaxScaleOnAxis(); + return this; + } + /** + * Translates the sphere's center by the given offset. + * + * @param {Vector3} offset - The offset. + * @return {Sphere} A reference to this sphere. + */ + translate(offset) { + this.center.add(offset); + return this; + } + /** + * Expands the boundaries of this sphere to include the given point. + * + * @param {Vector3} point - The point to include. + * @return {Sphere} A reference to this sphere. + */ + expandByPoint(point) { + if (this.isEmpty()) { + this.center.copy(point); + this.radius = 0; + return this; + } + _v1$6.subVectors(point, this.center); + const lengthSq = _v1$6.lengthSq(); + if (lengthSq > this.radius * this.radius) { + const length = Math.sqrt(lengthSq); + const delta = (length - this.radius) * 0.5; + this.center.addScaledVector(_v1$6, delta / length); + this.radius += delta; + } + return this; + } + /** + * Expands this sphere to enclose both the original sphere and the given sphere. + * + * @param {Sphere} sphere - The sphere to include. + * @return {Sphere} A reference to this sphere. + */ + union(sphere) { + if (sphere.isEmpty()) { + return this; + } + if (this.isEmpty()) { + this.copy(sphere); + return this; + } + if (this.center.equals(sphere.center) === true) { + this.radius = Math.max(this.radius, sphere.radius); + } else { + _v2$3.subVectors(sphere.center, this.center).setLength(sphere.radius); + this.expandByPoint(_v1$6.copy(sphere.center).add(_v2$3)); + this.expandByPoint(_v1$6.copy(sphere.center).sub(_v2$3)); + } + return this; + } + /** + * Returns `true` if this sphere is equal with the given one. + * + * @param {Sphere} sphere - The sphere to test for equality. + * @return {boolean} Whether this bounding sphere is equal with the given one. + */ + equals(sphere) { + return sphere.center.equals(this.center) && sphere.radius === this.radius; + } + /** + * Returns a new sphere with copied values from this instance. + * + * @return {Sphere} A clone of this instance. + */ + clone() { + return new this.constructor().copy(this); + } + /** + * Returns a serialized structure of the bounding sphere. + * + * @return {Object} Serialized structure with fields representing the object state. + */ + toJSON() { + return { + radius: this.radius, + center: this.center.toArray() + }; + } + /** + * Returns a serialized structure of the bounding sphere. + * + * @param {Object} json - The serialized json to set the sphere from. + * @return {Sphere} A reference to this bounding sphere. + */ + fromJSON(json) { + this.radius = json.radius; + this.center.fromArray(json.center); + return this; + } +} +const _vector$a = /* @__PURE__ */ new Vector3(); +const _segCenter = /* @__PURE__ */ new Vector3(); +const _segDir = /* @__PURE__ */ new Vector3(); +const _diff = /* @__PURE__ */ new Vector3(); +const _edge1 = /* @__PURE__ */ new Vector3(); +const _edge2 = /* @__PURE__ */ new Vector3(); +const _normal$1 = /* @__PURE__ */ new Vector3(); +class Ray { + /** + * Constructs a new ray. + * + * @param {Vector3} [origin=(0,0,0)] - The origin of the ray. + * @param {Vector3} [direction=(0,0,-1)] - The (normalized) direction of the ray. + */ + constructor(origin = new Vector3(), direction = new Vector3(0, 0, -1)) { + this.origin = origin; + this.direction = direction; + } + /** + * Sets the ray's components by copying the given values. + * + * @param {Vector3} origin - The origin. + * @param {Vector3} direction - The direction. + * @return {Ray} A reference to this ray. + */ + set(origin, direction) { + this.origin.copy(origin); + this.direction.copy(direction); + return this; + } + /** + * Copies the values of the given ray to this instance. + * + * @param {Ray} ray - The ray to copy. + * @return {Ray} A reference to this ray. + */ + copy(ray) { + this.origin.copy(ray.origin); + this.direction.copy(ray.direction); + return this; + } + /** + * Returns a vector that is located at a given distance along this ray. + * + * @param {number} t - The distance along the ray to retrieve a position for. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} A position on the ray. + */ + at(t, target) { + return target.copy(this.origin).addScaledVector(this.direction, t); + } + /** + * Adjusts the direction of the ray to point at the given vector in world space. + * + * @param {Vector3} v - The target position. + * @return {Ray} A reference to this ray. + */ + lookAt(v) { + this.direction.copy(v).sub(this.origin).normalize(); + return this; + } + /** + * Shift the origin of this ray along its direction by the given distance. + * + * @param {number} t - The distance along the ray to interpolate. + * @return {Ray} A reference to this ray. + */ + recast(t) { + this.origin.copy(this.at(t, _vector$a)); + return this; + } + /** + * Returns the point along this ray that is closest to the given point. + * + * @param {Vector3} point - A point in 3D space to get the closet location on the ray for. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The closest point on this ray. + */ + closestPointToPoint(point, target) { + target.subVectors(point, this.origin); + const directionDistance = target.dot(this.direction); + if (directionDistance < 0) { + return target.copy(this.origin); + } + return target.copy(this.origin).addScaledVector(this.direction, directionDistance); + } + /** + * Returns the distance of the closest approach between this ray and the given point. + * + * @param {Vector3} point - A point in 3D space to compute the distance to. + * @return {number} The distance. + */ + distanceToPoint(point) { + return Math.sqrt(this.distanceSqToPoint(point)); + } + /** + * Returns the squared distance of the closest approach between this ray and the given point. + * + * @param {Vector3} point - A point in 3D space to compute the distance to. + * @return {number} The squared distance. + */ + distanceSqToPoint(point) { + const directionDistance = _vector$a.subVectors(point, this.origin).dot(this.direction); + if (directionDistance < 0) { + return this.origin.distanceToSquared(point); + } + _vector$a.copy(this.origin).addScaledVector(this.direction, directionDistance); + return _vector$a.distanceToSquared(point); + } + /** + * Returns the squared distance between this ray and the given line segment. + * + * @param {Vector3} v0 - The start point of the line segment. + * @param {Vector3} v1 - The end point of the line segment. + * @param {Vector3} [optionalPointOnRay] - When provided, it receives the point on this ray that is closest to the segment. + * @param {Vector3} [optionalPointOnSegment] - When provided, it receives the point on the line segment that is closest to this ray. + * @return {number} The squared distance. + */ + distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) { + _segCenter.copy(v0).add(v1).multiplyScalar(0.5); + _segDir.copy(v1).sub(v0).normalize(); + _diff.copy(this.origin).sub(_segCenter); + const segExtent = v0.distanceTo(v1) * 0.5; + const a01 = -this.direction.dot(_segDir); + const b0 = _diff.dot(this.direction); + const b1 = -_diff.dot(_segDir); + const c = _diff.lengthSq(); + const det = Math.abs(1 - a01 * a01); + let s0, s1, sqrDist, extDet; + if (det > 0) { + s0 = a01 * b1 - b0; + s1 = a01 * b0 - b1; + extDet = segExtent * det; + if (s0 >= 0) { + if (s1 >= -extDet) { + if (s1 <= extDet) { + const invDet = 1 / det; + s0 *= invDet; + s1 *= invDet; + sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c; + } else { + s1 = segExtent; + s0 = Math.max(0, -(a01 * s1 + b0)); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + } else { + s1 = -segExtent; + s0 = Math.max(0, -(a01 * s1 + b0)); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + } else { + if (s1 <= -extDet) { + s0 = Math.max(0, -(-a01 * segExtent + b0)); + s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } else if (s1 <= extDet) { + s0 = 0; + s1 = Math.min(Math.max(-segExtent, -b1), segExtent); + sqrDist = s1 * (s1 + 2 * b1) + c; + } else { + s0 = Math.max(0, -(a01 * segExtent + b0)); + s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + } + } else { + s1 = a01 > 0 ? -segExtent : segExtent; + s0 = Math.max(0, -(a01 * s1 + b0)); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + if (optionalPointOnRay) { + optionalPointOnRay.copy(this.origin).addScaledVector(this.direction, s0); + } + if (optionalPointOnSegment) { + optionalPointOnSegment.copy(_segCenter).addScaledVector(_segDir, s1); + } + return sqrDist; + } + /** + * Intersects this ray with the given sphere, returning the intersection + * point or `null` if there is no intersection. + * + * @param {Sphere} sphere - The sphere to intersect. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The intersection point. + */ + intersectSphere(sphere, target) { + _vector$a.subVectors(sphere.center, this.origin); + const tca = _vector$a.dot(this.direction); + const d2 = _vector$a.dot(_vector$a) - tca * tca; + const radius2 = sphere.radius * sphere.radius; + if (d2 > radius2) + return null; + const thc = Math.sqrt(radius2 - d2); + const t0 = tca - thc; + const t1 = tca + thc; + if (t1 < 0) + return null; + if (t0 < 0) + return this.at(t1, target); + return this.at(t0, target); + } + /** + * Returns `true` if this ray intersects with the given sphere. + * + * @param {Sphere} sphere - The sphere to intersect. + * @return {boolean} Whether this ray intersects with the given sphere or not. + */ + intersectsSphere(sphere) { + if (sphere.radius < 0) + return false; + return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius; + } + /** + * Computes the distance from the ray's origin to the given plane. Returns `null` if the ray + * does not intersect with the plane. + * + * @param {Plane} plane - The plane to compute the distance to. + * @return {?number} Whether this ray intersects with the given sphere or not. + */ + distanceToPlane(plane) { + const denominator = plane.normal.dot(this.direction); + if (denominator === 0) { + if (plane.distanceToPoint(this.origin) === 0) { + return 0; + } + return null; + } + const t = -(this.origin.dot(plane.normal) + plane.constant) / denominator; + return t >= 0 ? t : null; + } + /** + * Intersects this ray with the given plane, returning the intersection + * point or `null` if there is no intersection. + * + * @param {Plane} plane - The plane to intersect. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The intersection point. + */ + intersectPlane(plane, target) { + const t = this.distanceToPlane(plane); + if (t === null) { + return null; + } + return this.at(t, target); + } + /** + * Returns `true` if this ray intersects with the given plane. + * + * @param {Plane} plane - The plane to intersect. + * @return {boolean} Whether this ray intersects with the given plane or not. + */ + intersectsPlane(plane) { + const distToPoint = plane.distanceToPoint(this.origin); + if (distToPoint === 0) { + return true; + } + const denominator = plane.normal.dot(this.direction); + if (denominator * distToPoint < 0) { + return true; + } + return false; + } + /** + * Intersects this ray with the given bounding box, returning the intersection + * point or `null` if there is no intersection. + * + * @param {Box3} box - The box to intersect. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The intersection point. + */ + intersectBox(box, target) { + let tmin, tmax, tymin, tymax, tzmin, tzmax; + const invdirx = 1 / this.direction.x, invdiry = 1 / this.direction.y, invdirz = 1 / this.direction.z; + const origin = this.origin; + if (invdirx >= 0) { + tmin = (box.min.x - origin.x) * invdirx; + tmax = (box.max.x - origin.x) * invdirx; + } else { + tmin = (box.max.x - origin.x) * invdirx; + tmax = (box.min.x - origin.x) * invdirx; + } + if (invdiry >= 0) { + tymin = (box.min.y - origin.y) * invdiry; + tymax = (box.max.y - origin.y) * invdiry; + } else { + tymin = (box.max.y - origin.y) * invdiry; + tymax = (box.min.y - origin.y) * invdiry; + } + if (tmin > tymax || tymin > tmax) + return null; + if (tymin > tmin || isNaN(tmin)) + tmin = tymin; + if (tymax < tmax || isNaN(tmax)) + tmax = tymax; + if (invdirz >= 0) { + tzmin = (box.min.z - origin.z) * invdirz; + tzmax = (box.max.z - origin.z) * invdirz; + } else { + tzmin = (box.max.z - origin.z) * invdirz; + tzmax = (box.min.z - origin.z) * invdirz; + } + if (tmin > tzmax || tzmin > tmax) + return null; + if (tzmin > tmin || tmin !== tmin) + tmin = tzmin; + if (tzmax < tmax || tmax !== tmax) + tmax = tzmax; + if (tmax < 0) + return null; + return this.at(tmin >= 0 ? tmin : tmax, target); + } + /** + * Returns `true` if this ray intersects with the given box. + * + * @param {Box3} box - The box to intersect. + * @return {boolean} Whether this ray intersects with the given box or not. + */ + intersectsBox(box) { + return this.intersectBox(box, _vector$a) !== null; + } + /** + * Intersects this ray with the given triangle, returning the intersection + * point or `null` if there is no intersection. + * + * @param {Vector3} a - The first vertex of the triangle. + * @param {Vector3} b - The second vertex of the triangle. + * @param {Vector3} c - The third vertex of the triangle. + * @param {boolean} backfaceCulling - Whether to use backface culling or not. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The intersection point. + */ + intersectTriangle(a, b, c, backfaceCulling, target) { + _edge1.subVectors(b, a); + _edge2.subVectors(c, a); + _normal$1.crossVectors(_edge1, _edge2); + let DdN = this.direction.dot(_normal$1); + let sign2; + if (DdN > 0) { + if (backfaceCulling) + return null; + sign2 = 1; + } else if (DdN < 0) { + sign2 = -1; + DdN = -DdN; + } else { + return null; + } + _diff.subVectors(this.origin, a); + const DdQxE2 = sign2 * this.direction.dot(_edge2.crossVectors(_diff, _edge2)); + if (DdQxE2 < 0) { + return null; + } + const DdE1xQ = sign2 * this.direction.dot(_edge1.cross(_diff)); + if (DdE1xQ < 0) { + return null; + } + if (DdQxE2 + DdE1xQ > DdN) { + return null; + } + const QdN = -sign2 * _diff.dot(_normal$1); + if (QdN < 0) { + return null; + } + return this.at(QdN / DdN, target); + } + /** + * Transforms this ray with the given 4x4 transformation matrix. + * + * @param {Matrix4} matrix4 - The transformation matrix. + * @return {Ray} A reference to this ray. + */ + applyMatrix4(matrix4) { + this.origin.applyMatrix4(matrix4); + this.direction.transformDirection(matrix4); + return this; + } + /** + * Returns `true` if this ray is equal with the given one. + * + * @param {Ray} ray - The ray to test for equality. + * @return {boolean} Whether this ray is equal with the given one. + */ + equals(ray) { + return ray.origin.equals(this.origin) && ray.direction.equals(this.direction); + } + /** + * Returns a new ray with copied values from this instance. + * + * @return {Ray} A clone of this instance. + */ + clone() { + return new this.constructor().copy(this); + } +} +class Matrix4 { + /** + * Constructs a new 4x4 matrix. The arguments are supposed to be + * in row-major order. If no arguments are provided, the constructor + * initializes the matrix as an identity matrix. + * + * @param {number} [n11] - 1-1 matrix element. + * @param {number} [n12] - 1-2 matrix element. + * @param {number} [n13] - 1-3 matrix element. + * @param {number} [n14] - 1-4 matrix element. + * @param {number} [n21] - 2-1 matrix element. + * @param {number} [n22] - 2-2 matrix element. + * @param {number} [n23] - 2-3 matrix element. + * @param {number} [n24] - 2-4 matrix element. + * @param {number} [n31] - 3-1 matrix element. + * @param {number} [n32] - 3-2 matrix element. + * @param {number} [n33] - 3-3 matrix element. + * @param {number} [n34] - 3-4 matrix element. + * @param {number} [n41] - 4-1 matrix element. + * @param {number} [n42] - 4-2 matrix element. + * @param {number} [n43] - 4-3 matrix element. + * @param {number} [n44] - 4-4 matrix element. + */ + constructor(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) { + Matrix4.prototype.isMatrix4 = true; + this.elements = [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ]; + if (n11 !== void 0) { + this.set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44); + } + } + /** + * Sets the elements of the matrix.The arguments are supposed to be + * in row-major order. + * + * @param {number} [n11] - 1-1 matrix element. + * @param {number} [n12] - 1-2 matrix element. + * @param {number} [n13] - 1-3 matrix element. + * @param {number} [n14] - 1-4 matrix element. + * @param {number} [n21] - 2-1 matrix element. + * @param {number} [n22] - 2-2 matrix element. + * @param {number} [n23] - 2-3 matrix element. + * @param {number} [n24] - 2-4 matrix element. + * @param {number} [n31] - 3-1 matrix element. + * @param {number} [n32] - 3-2 matrix element. + * @param {number} [n33] - 3-3 matrix element. + * @param {number} [n34] - 3-4 matrix element. + * @param {number} [n41] - 4-1 matrix element. + * @param {number} [n42] - 4-2 matrix element. + * @param {number} [n43] - 4-3 matrix element. + * @param {number} [n44] - 4-4 matrix element. + * @return {Matrix4} A reference to this matrix. + */ + set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) { + const te = this.elements; + te[0] = n11; + te[4] = n12; + te[8] = n13; + te[12] = n14; + te[1] = n21; + te[5] = n22; + te[9] = n23; + te[13] = n24; + te[2] = n31; + te[6] = n32; + te[10] = n33; + te[14] = n34; + te[3] = n41; + te[7] = n42; + te[11] = n43; + te[15] = n44; + return this; + } + /** + * Sets this matrix to the 4x4 identity matrix. + * + * @return {Matrix4} A reference to this matrix. + */ + identity() { + this.set( + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Returns a matrix with copied values from this instance. + * + * @return {Matrix4} A clone of this instance. + */ + clone() { + return new Matrix4().fromArray(this.elements); + } + /** + * Copies the values of the given matrix to this instance. + * + * @param {Matrix4} m - The matrix to copy. + * @return {Matrix4} A reference to this matrix. + */ + copy(m) { + const te = this.elements; + const me = m.elements; + te[0] = me[0]; + te[1] = me[1]; + te[2] = me[2]; + te[3] = me[3]; + te[4] = me[4]; + te[5] = me[5]; + te[6] = me[6]; + te[7] = me[7]; + te[8] = me[8]; + te[9] = me[9]; + te[10] = me[10]; + te[11] = me[11]; + te[12] = me[12]; + te[13] = me[13]; + te[14] = me[14]; + te[15] = me[15]; + return this; + } + /** + * Copies the translation component of the given matrix + * into this matrix's translation component. + * + * @param {Matrix4} m - The matrix to copy the translation component. + * @return {Matrix4} A reference to this matrix. + */ + copyPosition(m) { + const te = this.elements, me = m.elements; + te[12] = me[12]; + te[13] = me[13]; + te[14] = me[14]; + return this; + } + /** + * Set the upper 3x3 elements of this matrix to the values of given 3x3 matrix. + * + * @param {Matrix3} m - The 3x3 matrix. + * @return {Matrix4} A reference to this matrix. + */ + setFromMatrix3(m) { + const me = m.elements; + this.set( + me[0], + me[3], + me[6], + 0, + me[1], + me[4], + me[7], + 0, + me[2], + me[5], + me[8], + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Extracts the basis of this matrix into the three axis vectors provided. + * + * @param {Vector3} xAxis - The basis's x axis. + * @param {Vector3} yAxis - The basis's y axis. + * @param {Vector3} zAxis - The basis's z axis. + * @return {Matrix4} A reference to this matrix. + */ + extractBasis(xAxis, yAxis, zAxis) { + if (this.determinant() === 0) { + xAxis.set(1, 0, 0); + yAxis.set(0, 1, 0); + zAxis.set(0, 0, 1); + return this; + } + xAxis.setFromMatrixColumn(this, 0); + yAxis.setFromMatrixColumn(this, 1); + zAxis.setFromMatrixColumn(this, 2); + return this; + } + /** + * Sets the given basis vectors to this matrix. + * + * @param {Vector3} xAxis - The basis's x axis. + * @param {Vector3} yAxis - The basis's y axis. + * @param {Vector3} zAxis - The basis's z axis. + * @return {Matrix4} A reference to this matrix. + */ + makeBasis(xAxis, yAxis, zAxis) { + this.set( + xAxis.x, + yAxis.x, + zAxis.x, + 0, + xAxis.y, + yAxis.y, + zAxis.y, + 0, + xAxis.z, + yAxis.z, + zAxis.z, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Extracts the rotation component of the given matrix + * into this matrix's rotation component. + * + * Note: This method does not support reflection matrices. + * + * @param {Matrix4} m - The matrix. + * @return {Matrix4} A reference to this matrix. + */ + extractRotation(m) { + if (m.determinant() === 0) { + return this.identity(); + } + const te = this.elements; + const me = m.elements; + const scaleX = 1 / _v1$5.setFromMatrixColumn(m, 0).length(); + const scaleY = 1 / _v1$5.setFromMatrixColumn(m, 1).length(); + const scaleZ = 1 / _v1$5.setFromMatrixColumn(m, 2).length(); + te[0] = me[0] * scaleX; + te[1] = me[1] * scaleX; + te[2] = me[2] * scaleX; + te[3] = 0; + te[4] = me[4] * scaleY; + te[5] = me[5] * scaleY; + te[6] = me[6] * scaleY; + te[7] = 0; + te[8] = me[8] * scaleZ; + te[9] = me[9] * scaleZ; + te[10] = me[10] * scaleZ; + te[11] = 0; + te[12] = 0; + te[13] = 0; + te[14] = 0; + te[15] = 1; + return this; + } + /** + * Sets the rotation component (the upper left 3x3 matrix) of this matrix to + * the rotation specified by the given Euler angles. The rest of + * the matrix is set to the identity. Depending on the {@link Euler#order}, + * there are six possible outcomes. See [this page](https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix) + * for a complete list. + * + * @param {Euler} euler - The Euler angles. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationFromEuler(euler) { + const te = this.elements; + const x = euler.x, y = euler.y, z = euler.z; + const a = Math.cos(x), b = Math.sin(x); + const c = Math.cos(y), d = Math.sin(y); + const e = Math.cos(z), f = Math.sin(z); + if (euler.order === "XYZ") { + const ae = a * e, af = a * f, be = b * e, bf = b * f; + te[0] = c * e; + te[4] = -c * f; + te[8] = d; + te[1] = af + be * d; + te[5] = ae - bf * d; + te[9] = -b * c; + te[2] = bf - ae * d; + te[6] = be + af * d; + te[10] = a * c; + } else if (euler.order === "YXZ") { + const ce = c * e, cf = c * f, de = d * e, df = d * f; + te[0] = ce + df * b; + te[4] = de * b - cf; + te[8] = a * d; + te[1] = a * f; + te[5] = a * e; + te[9] = -b; + te[2] = cf * b - de; + te[6] = df + ce * b; + te[10] = a * c; + } else if (euler.order === "ZXY") { + const ce = c * e, cf = c * f, de = d * e, df = d * f; + te[0] = ce - df * b; + te[4] = -a * f; + te[8] = de + cf * b; + te[1] = cf + de * b; + te[5] = a * e; + te[9] = df - ce * b; + te[2] = -a * d; + te[6] = b; + te[10] = a * c; + } else if (euler.order === "ZYX") { + const ae = a * e, af = a * f, be = b * e, bf = b * f; + te[0] = c * e; + te[4] = be * d - af; + te[8] = ae * d + bf; + te[1] = c * f; + te[5] = bf * d + ae; + te[9] = af * d - be; + te[2] = -d; + te[6] = b * c; + te[10] = a * c; + } else if (euler.order === "YZX") { + const ac = a * c, ad = a * d, bc = b * c, bd = b * d; + te[0] = c * e; + te[4] = bd - ac * f; + te[8] = bc * f + ad; + te[1] = f; + te[5] = a * e; + te[9] = -b * e; + te[2] = -d * e; + te[6] = ad * f + bc; + te[10] = ac - bd * f; + } else if (euler.order === "XZY") { + const ac = a * c, ad = a * d, bc = b * c, bd = b * d; + te[0] = c * e; + te[4] = -f; + te[8] = d * e; + te[1] = ac * f + bd; + te[5] = a * e; + te[9] = ad * f - bc; + te[2] = bc * f - ad; + te[6] = b * e; + te[10] = bd * f + ac; + } + te[3] = 0; + te[7] = 0; + te[11] = 0; + te[12] = 0; + te[13] = 0; + te[14] = 0; + te[15] = 1; + return this; + } + /** + * Sets the rotation component of this matrix to the rotation specified by + * the given Quaternion as outlined [here](https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion) + * The rest of the matrix is set to the identity. + * + * @param {Quaternion} q - The Quaternion. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationFromQuaternion(q) { + return this.compose(_zero, q, _one); + } + /** + * Sets the rotation component of the transformation matrix, looking from `eye` towards + * `target`, and oriented by the up-direction. + * + * @param {Vector3} eye - The eye vector. + * @param {Vector3} target - The target vector. + * @param {Vector3} up - The up vector. + * @return {Matrix4} A reference to this matrix. + */ + lookAt(eye, target, up) { + const te = this.elements; + _z.subVectors(eye, target); + if (_z.lengthSq() === 0) { + _z.z = 1; + } + _z.normalize(); + _x.crossVectors(up, _z); + if (_x.lengthSq() === 0) { + if (Math.abs(up.z) === 1) { + _z.x += 1e-4; + } else { + _z.z += 1e-4; + } + _z.normalize(); + _x.crossVectors(up, _z); + } + _x.normalize(); + _y.crossVectors(_z, _x); + te[0] = _x.x; + te[4] = _y.x; + te[8] = _z.x; + te[1] = _x.y; + te[5] = _y.y; + te[9] = _z.y; + te[2] = _x.z; + te[6] = _y.z; + te[10] = _z.z; + return this; + } + /** + * Post-multiplies this matrix by the given 4x4 matrix. + * + * @param {Matrix4} m - The matrix to multiply with. + * @return {Matrix4} A reference to this matrix. + */ + multiply(m) { + return this.multiplyMatrices(this, m); + } + /** + * Pre-multiplies this matrix by the given 4x4 matrix. + * + * @param {Matrix4} m - The matrix to multiply with. + * @return {Matrix4} A reference to this matrix. + */ + premultiply(m) { + return this.multiplyMatrices(m, this); + } + /** + * Multiples the given 4x4 matrices and stores the result + * in this matrix. + * + * @param {Matrix4} a - The first matrix. + * @param {Matrix4} b - The second matrix. + * @return {Matrix4} A reference to this matrix. + */ + multiplyMatrices(a, b) { + const ae = a.elements; + const be = b.elements; + const te = this.elements; + const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12]; + const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13]; + const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14]; + const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15]; + const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12]; + const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13]; + const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14]; + const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15]; + te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; + te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; + te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; + te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; + te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; + te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; + te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; + te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; + te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; + te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; + te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; + te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; + te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; + te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; + te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; + te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; + return this; + } + /** + * Multiplies every component of the matrix by the given scalar. + * + * @param {number} s - The scalar. + * @return {Matrix4} A reference to this matrix. + */ + multiplyScalar(s) { + const te = this.elements; + te[0] *= s; + te[4] *= s; + te[8] *= s; + te[12] *= s; + te[1] *= s; + te[5] *= s; + te[9] *= s; + te[13] *= s; + te[2] *= s; + te[6] *= s; + te[10] *= s; + te[14] *= s; + te[3] *= s; + te[7] *= s; + te[11] *= s; + te[15] *= s; + return this; + } + /** + * Computes and returns the determinant of this matrix. + * + * Based on the method outlined [here](http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.html). + * + * @return {number} The determinant. + */ + determinant() { + const te = this.elements; + const n11 = te[0], n12 = te[4], n13 = te[8], n14 = te[12]; + const n21 = te[1], n22 = te[5], n23 = te[9], n24 = te[13]; + const n31 = te[2], n32 = te[6], n33 = te[10], n34 = te[14]; + const n41 = te[3], n42 = te[7], n43 = te[11], n44 = te[15]; + const t11 = n23 * n34 - n24 * n33; + const t12 = n22 * n34 - n24 * n32; + const t13 = n22 * n33 - n23 * n32; + const t21 = n21 * n34 - n24 * n31; + const t22 = n21 * n33 - n23 * n31; + const t23 = n21 * n32 - n22 * n31; + return n11 * (n42 * t11 - n43 * t12 + n44 * t13) - n12 * (n41 * t11 - n43 * t21 + n44 * t22) + n13 * (n41 * t12 - n42 * t21 + n44 * t23) - n14 * (n41 * t13 - n42 * t22 + n43 * t23); + } + /** + * Transposes this matrix in place. + * + * @return {Matrix4} A reference to this matrix. + */ + transpose() { + const te = this.elements; + let tmp; + tmp = te[1]; + te[1] = te[4]; + te[4] = tmp; + tmp = te[2]; + te[2] = te[8]; + te[8] = tmp; + tmp = te[6]; + te[6] = te[9]; + te[9] = tmp; + tmp = te[3]; + te[3] = te[12]; + te[12] = tmp; + tmp = te[7]; + te[7] = te[13]; + te[13] = tmp; + tmp = te[11]; + te[11] = te[14]; + te[14] = tmp; + return this; + } + /** + * Sets the position component for this matrix from the given vector, + * without affecting the rest of the matrix. + * + * @param {number|Vector3} x - The x component of the vector or alternatively the vector object. + * @param {number} y - The y component of the vector. + * @param {number} z - The z component of the vector. + * @return {Matrix4} A reference to this matrix. + */ + setPosition(x, y, z) { + const te = this.elements; + if (x.isVector3) { + te[12] = x.x; + te[13] = x.y; + te[14] = x.z; + } else { + te[12] = x; + te[13] = y; + te[14] = z; + } + return this; + } + /** + * Inverts this matrix, using the [analytic method](https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution). + * You can not invert with a determinant of zero. If you attempt this, the method produces + * a zero matrix instead. + * + * @return {Matrix4} A reference to this matrix. + */ + invert() { + const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n41 = te[3], n12 = te[4], n22 = te[5], n32 = te[6], n42 = te[7], n13 = te[8], n23 = te[9], n33 = te[10], n43 = te[11], n14 = te[12], n24 = te[13], n34 = te[14], n44 = te[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; + const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; + if (det === 0) + return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + const detInv = 1 / det; + te[0] = t11 * detInv; + te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv; + te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv; + te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv; + te[4] = t12 * detInv; + te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv; + te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv; + te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv; + te[8] = t13 * detInv; + te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv; + te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv; + te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv; + te[12] = t14 * detInv; + te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv; + te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv; + te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv; + return this; + } + /** + * Multiplies the columns of this matrix by the given vector. + * + * @param {Vector3} v - The scale vector. + * @return {Matrix4} A reference to this matrix. + */ + scale(v) { + const te = this.elements; + const x = v.x, y = v.y, z = v.z; + te[0] *= x; + te[4] *= y; + te[8] *= z; + te[1] *= x; + te[5] *= y; + te[9] *= z; + te[2] *= x; + te[6] *= y; + te[10] *= z; + te[3] *= x; + te[7] *= y; + te[11] *= z; + return this; + } + /** + * Gets the maximum scale value of the three axes. + * + * @return {number} The maximum scale. + */ + getMaxScaleOnAxis() { + const te = this.elements; + const scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2]; + const scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6]; + const scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10]; + return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq)); + } + /** + * Sets this matrix as a translation transform from the given vector. + * + * @param {number|Vector3} x - The amount to translate in the X axis or alternatively a translation vector. + * @param {number} y - The amount to translate in the Y axis. + * @param {number} z - The amount to translate in the z axis. + * @return {Matrix4} A reference to this matrix. + */ + makeTranslation(x, y, z) { + if (x.isVector3) { + this.set( + 1, + 0, + 0, + x.x, + 0, + 1, + 0, + x.y, + 0, + 0, + 1, + x.z, + 0, + 0, + 0, + 1 + ); + } else { + this.set( + 1, + 0, + 0, + x, + 0, + 1, + 0, + y, + 0, + 0, + 1, + z, + 0, + 0, + 0, + 1 + ); + } + return this; + } + /** + * Sets this matrix as a rotational transformation around the X axis by + * the given angle. + * + * @param {number} theta - The rotation in radians. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationX(theta) { + const c = Math.cos(theta), s = Math.sin(theta); + this.set( + 1, + 0, + 0, + 0, + 0, + c, + -s, + 0, + 0, + s, + c, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Sets this matrix as a rotational transformation around the Y axis by + * the given angle. + * + * @param {number} theta - The rotation in radians. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationY(theta) { + const c = Math.cos(theta), s = Math.sin(theta); + this.set( + c, + 0, + s, + 0, + 0, + 1, + 0, + 0, + -s, + 0, + c, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Sets this matrix as a rotational transformation around the Z axis by + * the given angle. + * + * @param {number} theta - The rotation in radians. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationZ(theta) { + const c = Math.cos(theta), s = Math.sin(theta); + this.set( + c, + -s, + 0, + 0, + s, + c, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Sets this matrix as a rotational transformation around the given axis by + * the given angle. + * + * This is a somewhat controversial but mathematically sound alternative to + * rotating via Quaternions. See the discussion [here](https://www.gamedev.net/articles/programming/math-and-physics/do-we-really-need-quaternions-r1199). + * + * @param {Vector3} axis - The normalized rotation axis. + * @param {number} angle - The rotation in radians. + * @return {Matrix4} A reference to this matrix. + */ + makeRotationAxis(axis, angle) { + const c = Math.cos(angle); + const s = Math.sin(angle); + const t = 1 - c; + const x = axis.x, y = axis.y, z = axis.z; + const tx = t * x, ty = t * y; + this.set( + tx * x + c, + tx * y - s * z, + tx * z + s * y, + 0, + tx * y + s * z, + ty * y + c, + ty * z - s * x, + 0, + tx * z - s * y, + ty * z + s * x, + t * z * z + c, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Sets this matrix as a scale transformation. + * + * @param {number} x - The amount to scale in the X axis. + * @param {number} y - The amount to scale in the Y axis. + * @param {number} z - The amount to scale in the Z axis. + * @return {Matrix4} A reference to this matrix. + */ + makeScale(x, y, z) { + this.set( + x, + 0, + 0, + 0, + 0, + y, + 0, + 0, + 0, + 0, + z, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Sets this matrix as a shear transformation. + * + * @param {number} xy - The amount to shear X by Y. + * @param {number} xz - The amount to shear X by Z. + * @param {number} yx - The amount to shear Y by X. + * @param {number} yz - The amount to shear Y by Z. + * @param {number} zx - The amount to shear Z by X. + * @param {number} zy - The amount to shear Z by Y. + * @return {Matrix4} A reference to this matrix. + */ + makeShear(xy, xz, yx, yz, zx, zy) { + this.set( + 1, + yx, + zx, + 0, + xy, + 1, + zy, + 0, + xz, + yz, + 1, + 0, + 0, + 0, + 0, + 1 + ); + return this; + } + /** + * Sets this matrix to the transformation composed of the given position, + * rotation (Quaternion) and scale. + * + * @param {Vector3} position - The position vector. + * @param {Quaternion} quaternion - The rotation as a Quaternion. + * @param {Vector3} scale - The scale vector. + * @return {Matrix4} A reference to this matrix. + */ + compose(position, quaternion, scale) { + const te = this.elements; + const x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w; + const x2 = x + x, y2 = y + y, z2 = z + z; + const xx = x * x2, xy = x * y2, xz = x * z2; + const yy = y * y2, yz = y * z2, zz = z * z2; + const wx = w * x2, wy = w * y2, wz = w * z2; + const sx = scale.x, sy = scale.y, sz = scale.z; + te[0] = (1 - (yy + zz)) * sx; + te[1] = (xy + wz) * sx; + te[2] = (xz - wy) * sx; + te[3] = 0; + te[4] = (xy - wz) * sy; + te[5] = (1 - (xx + zz)) * sy; + te[6] = (yz + wx) * sy; + te[7] = 0; + te[8] = (xz + wy) * sz; + te[9] = (yz - wx) * sz; + te[10] = (1 - (xx + yy)) * sz; + te[11] = 0; + te[12] = position.x; + te[13] = position.y; + te[14] = position.z; + te[15] = 1; + return this; + } + /** + * Decomposes this matrix into its position, rotation and scale components + * and provides the result in the given objects. + * + * Note: Not all matrices are decomposable in this way. For example, if an + * object has a non-uniformly scaled parent, then the object's world matrix + * may not be decomposable, and this method may not be appropriate. + * + * @param {Vector3} position - The position vector. + * @param {Quaternion} quaternion - The rotation as a Quaternion. + * @param {Vector3} scale - The scale vector. + * @return {Matrix4} A reference to this matrix. + */ + decompose(position, quaternion, scale) { + const te = this.elements; + position.x = te[12]; + position.y = te[13]; + position.z = te[14]; + if (this.determinant() === 0) { + scale.set(1, 1, 1); + quaternion.identity(); + return this; + } + let sx = _v1$5.set(te[0], te[1], te[2]).length(); + const sy = _v1$5.set(te[4], te[5], te[6]).length(); + const sz = _v1$5.set(te[8], te[9], te[10]).length(); + const det = this.determinant(); + if (det < 0) + sx = -sx; + _m1$2.copy(this); + const invSX = 1 / sx; + const invSY = 1 / sy; + const invSZ = 1 / sz; + _m1$2.elements[0] *= invSX; + _m1$2.elements[1] *= invSX; + _m1$2.elements[2] *= invSX; + _m1$2.elements[4] *= invSY; + _m1$2.elements[5] *= invSY; + _m1$2.elements[6] *= invSY; + _m1$2.elements[8] *= invSZ; + _m1$2.elements[9] *= invSZ; + _m1$2.elements[10] *= invSZ; + quaternion.setFromRotationMatrix(_m1$2); + scale.x = sx; + scale.y = sy; + scale.z = sz; + return this; + } + /** + * Creates a perspective projection matrix. This is used internally by + * {@link PerspectiveCamera#updateProjectionMatrix}. + + * @param {number} left - Left boundary of the viewing frustum at the near plane. + * @param {number} right - Right boundary of the viewing frustum at the near plane. + * @param {number} top - Top boundary of the viewing frustum at the near plane. + * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane. + * @param {number} near - The distance from the camera to the near plane. + * @param {number} far - The distance from the camera to the far plane. + * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system. + * @param {boolean} [reversedDepth=false] - Whether to use a reversed depth. + * @return {Matrix4} A reference to this matrix. + */ + makePerspective(left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false) { + const te = this.elements; + const x = 2 * near / (right - left); + const y = 2 * near / (top - bottom); + const a = (right + left) / (right - left); + const b = (top + bottom) / (top - bottom); + let c, d; + if (reversedDepth) { + c = near / (far - near); + d = far * near / (far - near); + } else { + if (coordinateSystem === WebGLCoordinateSystem) { + c = -(far + near) / (far - near); + d = -2 * far * near / (far - near); + } else if (coordinateSystem === WebGPUCoordinateSystem) { + c = -far / (far - near); + d = -far * near / (far - near); + } else { + throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: " + coordinateSystem); + } + } + te[0] = x; + te[4] = 0; + te[8] = a; + te[12] = 0; + te[1] = 0; + te[5] = y; + te[9] = b; + te[13] = 0; + te[2] = 0; + te[6] = 0; + te[10] = c; + te[14] = d; + te[3] = 0; + te[7] = 0; + te[11] = -1; + te[15] = 0; + return this; + } + /** + * Creates a orthographic projection matrix. This is used internally by + * {@link OrthographicCamera#updateProjectionMatrix}. + + * @param {number} left - Left boundary of the viewing frustum at the near plane. + * @param {number} right - Right boundary of the viewing frustum at the near plane. + * @param {number} top - Top boundary of the viewing frustum at the near plane. + * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane. + * @param {number} near - The distance from the camera to the near plane. + * @param {number} far - The distance from the camera to the far plane. + * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system. + * @param {boolean} [reversedDepth=false] - Whether to use a reversed depth. + * @return {Matrix4} A reference to this matrix. + */ + makeOrthographic(left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false) { + const te = this.elements; + const x = 2 / (right - left); + const y = 2 / (top - bottom); + const a = -(right + left) / (right - left); + const b = -(top + bottom) / (top - bottom); + let c, d; + if (reversedDepth) { + c = 1 / (far - near); + d = far / (far - near); + } else { + if (coordinateSystem === WebGLCoordinateSystem) { + c = -2 / (far - near); + d = -(far + near) / (far - near); + } else if (coordinateSystem === WebGPUCoordinateSystem) { + c = -1 / (far - near); + d = -near / (far - near); + } else { + throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: " + coordinateSystem); + } + } + te[0] = x; + te[4] = 0; + te[8] = 0; + te[12] = a; + te[1] = 0; + te[5] = y; + te[9] = 0; + te[13] = b; + te[2] = 0; + te[6] = 0; + te[10] = c; + te[14] = d; + te[3] = 0; + te[7] = 0; + te[11] = 0; + te[15] = 1; + return this; + } + /** + * Returns `true` if this matrix is equal with the given one. + * + * @param {Matrix4} matrix - The matrix to test for equality. + * @return {boolean} Whether this matrix is equal with the given one. + */ + equals(matrix) { + const te = this.elements; + const me = matrix.elements; + for (let i = 0; i < 16; i++) { + if (te[i] !== me[i]) + return false; + } + return true; + } + /** + * Sets the elements of the matrix from the given array. + * + * @param {Array} array - The matrix elements in column-major order. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Matrix4} A reference to this matrix. + */ + fromArray(array, offset = 0) { + for (let i = 0; i < 16; i++) { + this.elements[i] = array[i + offset]; + } + return this; + } + /** + * Writes the elements of this matrix to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the matrix elements in column-major order. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The matrix elements in column-major order. + */ + toArray(array = [], offset = 0) { + const te = this.elements; + array[offset] = te[0]; + array[offset + 1] = te[1]; + array[offset + 2] = te[2]; + array[offset + 3] = te[3]; + array[offset + 4] = te[4]; + array[offset + 5] = te[5]; + array[offset + 6] = te[6]; + array[offset + 7] = te[7]; + array[offset + 8] = te[8]; + array[offset + 9] = te[9]; + array[offset + 10] = te[10]; + array[offset + 11] = te[11]; + array[offset + 12] = te[12]; + array[offset + 13] = te[13]; + array[offset + 14] = te[14]; + array[offset + 15] = te[15]; + return array; + } +} +const _v1$5 = /* @__PURE__ */ new Vector3(); +const _m1$2 = /* @__PURE__ */ new Matrix4(); +const _zero = /* @__PURE__ */ new Vector3(0, 0, 0); +const _one = /* @__PURE__ */ new Vector3(1, 1, 1); +const _x = /* @__PURE__ */ new Vector3(); +const _y = /* @__PURE__ */ new Vector3(); +const _z = /* @__PURE__ */ new Vector3(); +const _matrix$2 = /* @__PURE__ */ new Matrix4(); +const _quaternion$3 = /* @__PURE__ */ new Quaternion(); +class Euler { + /** + * Constructs a new euler instance. + * + * @param {number} [x=0] - The angle of the x axis in radians. + * @param {number} [y=0] - The angle of the y axis in radians. + * @param {number} [z=0] - The angle of the z axis in radians. + * @param {string} [order=Euler.DEFAULT_ORDER] - A string representing the order that the rotations are applied. + */ + constructor(x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER) { + this.isEuler = true; + this._x = x; + this._y = y; + this._z = z; + this._order = order; + } + /** + * The angle of the x axis in radians. + * + * @type {number} + * @default 0 + */ + get x() { + return this._x; + } + set x(value) { + this._x = value; + this._onChangeCallback(); + } + /** + * The angle of the y axis in radians. + * + * @type {number} + * @default 0 + */ + get y() { + return this._y; + } + set y(value) { + this._y = value; + this._onChangeCallback(); + } + /** + * The angle of the z axis in radians. + * + * @type {number} + * @default 0 + */ + get z() { + return this._z; + } + set z(value) { + this._z = value; + this._onChangeCallback(); + } + /** + * A string representing the order that the rotations are applied. + * + * @type {string} + * @default 'XYZ' + */ + get order() { + return this._order; + } + set order(value) { + this._order = value; + this._onChangeCallback(); + } + /** + * Sets the Euler components. + * + * @param {number} x - The angle of the x axis in radians. + * @param {number} y - The angle of the y axis in radians. + * @param {number} z - The angle of the z axis in radians. + * @param {string} [order] - A string representing the order that the rotations are applied. + * @return {Euler} A reference to this Euler instance. + */ + set(x, y, z, order = this._order) { + this._x = x; + this._y = y; + this._z = z; + this._order = order; + this._onChangeCallback(); + return this; + } + /** + * Returns a new Euler instance with copied values from this instance. + * + * @return {Euler} A clone of this instance. + */ + clone() { + return new this.constructor(this._x, this._y, this._z, this._order); + } + /** + * Copies the values of the given Euler instance to this instance. + * + * @param {Euler} euler - The Euler instance to copy. + * @return {Euler} A reference to this Euler instance. + */ + copy(euler) { + this._x = euler._x; + this._y = euler._y; + this._z = euler._z; + this._order = euler._order; + this._onChangeCallback(); + return this; + } + /** + * Sets the angles of this Euler instance from a pure rotation matrix. + * + * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled). + * @param {string} [order] - A string representing the order that the rotations are applied. + * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not. + * @return {Euler} A reference to this Euler instance. + */ + setFromRotationMatrix(m, order = this._order, update = true) { + const te = m.elements; + const m11 = te[0], m12 = te[4], m13 = te[8]; + const m21 = te[1], m22 = te[5], m23 = te[9]; + const m31 = te[2], m32 = te[6], m33 = te[10]; + switch (order) { + case "XYZ": + this._y = Math.asin(clamp(m13, -1, 1)); + if (Math.abs(m13) < 0.9999999) { + this._x = Math.atan2(-m23, m33); + this._z = Math.atan2(-m12, m11); + } else { + this._x = Math.atan2(m32, m22); + this._z = 0; + } + break; + case "YXZ": + this._x = Math.asin(-clamp(m23, -1, 1)); + if (Math.abs(m23) < 0.9999999) { + this._y = Math.atan2(m13, m33); + this._z = Math.atan2(m21, m22); + } else { + this._y = Math.atan2(-m31, m11); + this._z = 0; + } + break; + case "ZXY": + this._x = Math.asin(clamp(m32, -1, 1)); + if (Math.abs(m32) < 0.9999999) { + this._y = Math.atan2(-m31, m33); + this._z = Math.atan2(-m12, m22); + } else { + this._y = 0; + this._z = Math.atan2(m21, m11); + } + break; + case "ZYX": + this._y = Math.asin(-clamp(m31, -1, 1)); + if (Math.abs(m31) < 0.9999999) { + this._x = Math.atan2(m32, m33); + this._z = Math.atan2(m21, m11); + } else { + this._x = 0; + this._z = Math.atan2(-m12, m22); + } + break; + case "YZX": + this._z = Math.asin(clamp(m21, -1, 1)); + if (Math.abs(m21) < 0.9999999) { + this._x = Math.atan2(-m23, m22); + this._y = Math.atan2(-m31, m11); + } else { + this._x = 0; + this._y = Math.atan2(m13, m33); + } + break; + case "XZY": + this._z = Math.asin(-clamp(m12, -1, 1)); + if (Math.abs(m12) < 0.9999999) { + this._x = Math.atan2(m32, m22); + this._y = Math.atan2(m13, m11); + } else { + this._x = Math.atan2(-m23, m33); + this._y = 0; + } + break; + default: + warn("Euler: .setFromRotationMatrix() encountered an unknown order: " + order); + } + this._order = order; + if (update === true) + this._onChangeCallback(); + return this; + } + /** + * Sets the angles of this Euler instance from a normalized quaternion. + * + * @param {Quaternion} q - A normalized Quaternion. + * @param {string} [order] - A string representing the order that the rotations are applied. + * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not. + * @return {Euler} A reference to this Euler instance. + */ + setFromQuaternion(q, order, update) { + _matrix$2.makeRotationFromQuaternion(q); + return this.setFromRotationMatrix(_matrix$2, order, update); + } + /** + * Sets the angles of this Euler instance from the given vector. + * + * @param {Vector3} v - The vector. + * @param {string} [order] - A string representing the order that the rotations are applied. + * @return {Euler} A reference to this Euler instance. + */ + setFromVector3(v, order = this._order) { + return this.set(v.x, v.y, v.z, order); + } + /** + * Resets the euler angle with a new order by creating a quaternion from this + * euler angle and then setting this euler angle with the quaternion and the + * new order. + * + * Warning: This discards revolution information. + * + * @param {string} [newOrder] - A string representing the new order that the rotations are applied. + * @return {Euler} A reference to this Euler instance. + */ + reorder(newOrder) { + _quaternion$3.setFromEuler(this); + return this.setFromQuaternion(_quaternion$3, newOrder); + } + /** + * Returns `true` if this Euler instance is equal with the given one. + * + * @param {Euler} euler - The Euler instance to test for equality. + * @return {boolean} Whether this Euler instance is equal with the given one. + */ + equals(euler) { + return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order; + } + /** + * Sets this Euler instance's components to values from the given array. The first three + * entries of the array are assign to the x,y and z components. An optional fourth entry + * defines the Euler order. + * + * @param {Array} array - An array holding the Euler component values. + * @return {Euler} A reference to this Euler instance. + */ + fromArray(array) { + this._x = array[0]; + this._y = array[1]; + this._z = array[2]; + if (array[3] !== void 0) + this._order = array[3]; + this._onChangeCallback(); + return this; + } + /** + * Writes the components of this Euler instance to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the Euler components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The Euler components. + */ + toArray(array = [], offset = 0) { + array[offset] = this._x; + array[offset + 1] = this._y; + array[offset + 2] = this._z; + array[offset + 3] = this._order; + return array; + } + _onChange(callback) { + this._onChangeCallback = callback; + return this; + } + _onChangeCallback() { + } + *[Symbol.iterator]() { + yield this._x; + yield this._y; + yield this._z; + yield this._order; + } +} +Euler.DEFAULT_ORDER = "XYZ"; +class Layers { + /** + * Constructs a new layers instance, with membership + * initially set to layer `0`. + */ + constructor() { + this.mask = 1 | 0; + } + /** + * Sets membership to the given layer, and remove membership all other layers. + * + * @param {number} layer - The layer to set. + */ + set(layer) { + this.mask = (1 << layer | 0) >>> 0; + } + /** + * Adds membership of the given layer. + * + * @param {number} layer - The layer to enable. + */ + enable(layer) { + this.mask |= 1 << layer | 0; + } + /** + * Adds membership to all layers. + */ + enableAll() { + this.mask = 4294967295 | 0; + } + /** + * Toggles the membership of the given layer. + * + * @param {number} layer - The layer to toggle. + */ + toggle(layer) { + this.mask ^= 1 << layer | 0; + } + /** + * Removes membership of the given layer. + * + * @param {number} layer - The layer to enable. + */ + disable(layer) { + this.mask &= ~(1 << layer | 0); + } + /** + * Removes the membership from all layers. + */ + disableAll() { + this.mask = 0; + } + /** + * Returns `true` if this and the given layers object have at least one + * layer in common. + * + * @param {Layers} layers - The layers to test. + * @return {boolean } Whether this and the given layers object have at least one layer in common or not. + */ + test(layers) { + return (this.mask & layers.mask) !== 0; + } + /** + * Returns `true` if the given layer is enabled. + * + * @param {number} layer - The layer to test. + * @return {boolean } Whether the given layer is enabled or not. + */ + isEnabled(layer) { + return (this.mask & (1 << layer | 0)) !== 0; + } +} +let _object3DId = 0; +const _v1$4 = /* @__PURE__ */ new Vector3(); +const _q1 = /* @__PURE__ */ new Quaternion(); +const _m1$1 = /* @__PURE__ */ new Matrix4(); +const _target = /* @__PURE__ */ new Vector3(); +const _position$3 = /* @__PURE__ */ new Vector3(); +const _scale$2 = /* @__PURE__ */ new Vector3(); +const _quaternion$2 = /* @__PURE__ */ new Quaternion(); +const _xAxis = /* @__PURE__ */ new Vector3(1, 0, 0); +const _yAxis = /* @__PURE__ */ new Vector3(0, 1, 0); +const _zAxis = /* @__PURE__ */ new Vector3(0, 0, 1); +const _addedEvent = { type: "added" }; +const _removedEvent = { type: "removed" }; +const _childaddedEvent = { type: "childadded", child: null }; +const _childremovedEvent = { type: "childremoved", child: null }; +class Object3D extends EventDispatcher { + /** + * Constructs a new 3D object. + */ + constructor() { + super(); + this.isObject3D = true; + Object.defineProperty(this, "id", { value: _object3DId++ }); + this.uuid = generateUUID(); + this.name = ""; + this.type = "Object3D"; + this.parent = null; + this.children = []; + this.up = Object3D.DEFAULT_UP.clone(); + const position = new Vector3(); + const rotation = new Euler(); + const quaternion = new Quaternion(); + const scale = new Vector3(1, 1, 1); + function onRotationChange() { + quaternion.setFromEuler(rotation, false); + } + function onQuaternionChange() { + rotation.setFromQuaternion(quaternion, void 0, false); + } + rotation._onChange(onRotationChange); + quaternion._onChange(onQuaternionChange); + Object.defineProperties(this, { + /** + * Represents the object's local position. + * + * @name Object3D#position + * @type {Vector3} + * @default (0,0,0) + */ + position: { + configurable: true, + enumerable: true, + value: position + }, + /** + * Represents the object's local rotation as Euler angles, in radians. + * + * @name Object3D#rotation + * @type {Euler} + * @default (0,0,0) + */ + rotation: { + configurable: true, + enumerable: true, + value: rotation + }, + /** + * Represents the object's local rotation as Quaternions. + * + * @name Object3D#quaternion + * @type {Quaternion} + */ + quaternion: { + configurable: true, + enumerable: true, + value: quaternion + }, + /** + * Represents the object's local scale. + * + * @name Object3D#scale + * @type {Vector3} + * @default (1,1,1) + */ + scale: { + configurable: true, + enumerable: true, + value: scale + }, + /** + * Represents the object's model-view matrix. + * + * @name Object3D#modelViewMatrix + * @type {Matrix4} + */ + modelViewMatrix: { + value: new Matrix4() + }, + /** + * Represents the object's normal matrix. + * + * @name Object3D#normalMatrix + * @type {Matrix3} + */ + normalMatrix: { + value: new Matrix3() + } + }); + this.matrix = new Matrix4(); + this.matrixWorld = new Matrix4(); + this.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE; + this.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; + this.matrixWorldNeedsUpdate = false; + this.layers = new Layers(); + this.visible = true; + this.castShadow = false; + this.receiveShadow = false; + this.frustumCulled = true; + this.renderOrder = 0; + this.animations = []; + this.customDepthMaterial = void 0; + this.customDistanceMaterial = void 0; + this.userData = {}; + } + /** + * A callback that is executed immediately before a 3D object is rendered to a shadow map. + * + * @param {Renderer|WebGLRenderer} renderer - The renderer. + * @param {Object3D} object - The 3D object. + * @param {Camera} camera - The camera that is used to render the scene. + * @param {Camera} shadowCamera - The shadow camera. + * @param {BufferGeometry} geometry - The 3D object's geometry. + * @param {Material} depthMaterial - The depth material. + * @param {Object} group - The geometry group data. + */ + onBeforeShadow() { + } + /** + * A callback that is executed immediately after a 3D object is rendered to a shadow map. + * + * @param {Renderer|WebGLRenderer} renderer - The renderer. + * @param {Object3D} object - The 3D object. + * @param {Camera} camera - The camera that is used to render the scene. + * @param {Camera} shadowCamera - The shadow camera. + * @param {BufferGeometry} geometry - The 3D object's geometry. + * @param {Material} depthMaterial - The depth material. + * @param {Object} group - The geometry group data. + */ + onAfterShadow() { + } + /** + * A callback that is executed immediately before a 3D object is rendered. + * + * @param {Renderer|WebGLRenderer} renderer - The renderer. + * @param {Object3D} object - The 3D object. + * @param {Camera} camera - The camera that is used to render the scene. + * @param {BufferGeometry} geometry - The 3D object's geometry. + * @param {Material} material - The 3D object's material. + * @param {Object} group - The geometry group data. + */ + onBeforeRender() { + } + /** + * A callback that is executed immediately after a 3D object is rendered. + * + * @param {Renderer|WebGLRenderer} renderer - The renderer. + * @param {Object3D} object - The 3D object. + * @param {Camera} camera - The camera that is used to render the scene. + * @param {BufferGeometry} geometry - The 3D object's geometry. + * @param {Material} material - The 3D object's material. + * @param {Object} group - The geometry group data. + */ + onAfterRender() { + } + /** + * Applies the given transformation matrix to the object and updates the object's position, + * rotation and scale. + * + * @param {Matrix4} matrix - The transformation matrix. + */ + applyMatrix4(matrix) { + if (this.matrixAutoUpdate) + this.updateMatrix(); + this.matrix.premultiply(matrix); + this.matrix.decompose(this.position, this.quaternion, this.scale); + } + /** + * Applies a rotation represented by given the quaternion to the 3D object. + * + * @param {Quaternion} q - The quaternion. + * @return {Object3D} A reference to this instance. + */ + applyQuaternion(q) { + this.quaternion.premultiply(q); + return this; + } + /** + * Sets the given rotation represented as an axis/angle couple to the 3D object. + * + * @param {Vector3} axis - The (normalized) axis vector. + * @param {number} angle - The angle in radians. + */ + setRotationFromAxisAngle(axis, angle) { + this.quaternion.setFromAxisAngle(axis, angle); + } + /** + * Sets the given rotation represented as Euler angles to the 3D object. + * + * @param {Euler} euler - The Euler angles. + */ + setRotationFromEuler(euler) { + this.quaternion.setFromEuler(euler, true); + } + /** + * Sets the given rotation represented as rotation matrix to the 3D object. + * + * @param {Matrix4} m - Although a 4x4 matrix is expected, the upper 3x3 portion must be + * a pure rotation matrix (i.e, unscaled). + */ + setRotationFromMatrix(m) { + this.quaternion.setFromRotationMatrix(m); + } + /** + * Sets the given rotation represented as a Quaternion to the 3D object. + * + * @param {Quaternion} q - The Quaternion + */ + setRotationFromQuaternion(q) { + this.quaternion.copy(q); + } + /** + * Rotates the 3D object along an axis in local space. + * + * @param {Vector3} axis - The (normalized) axis vector. + * @param {number} angle - The angle in radians. + * @return {Object3D} A reference to this instance. + */ + rotateOnAxis(axis, angle) { + _q1.setFromAxisAngle(axis, angle); + this.quaternion.multiply(_q1); + return this; + } + /** + * Rotates the 3D object along an axis in world space. + * + * @param {Vector3} axis - The (normalized) axis vector. + * @param {number} angle - The angle in radians. + * @return {Object3D} A reference to this instance. + */ + rotateOnWorldAxis(axis, angle) { + _q1.setFromAxisAngle(axis, angle); + this.quaternion.premultiply(_q1); + return this; + } + /** + * Rotates the 3D object around its X axis in local space. + * + * @param {number} angle - The angle in radians. + * @return {Object3D} A reference to this instance. + */ + rotateX(angle) { + return this.rotateOnAxis(_xAxis, angle); + } + /** + * Rotates the 3D object around its Y axis in local space. + * + * @param {number} angle - The angle in radians. + * @return {Object3D} A reference to this instance. + */ + rotateY(angle) { + return this.rotateOnAxis(_yAxis, angle); + } + /** + * Rotates the 3D object around its Z axis in local space. + * + * @param {number} angle - The angle in radians. + * @return {Object3D} A reference to this instance. + */ + rotateZ(angle) { + return this.rotateOnAxis(_zAxis, angle); + } + /** + * Translate the 3D object by a distance along the given axis in local space. + * + * @param {Vector3} axis - The (normalized) axis vector. + * @param {number} distance - The distance in world units. + * @return {Object3D} A reference to this instance. + */ + translateOnAxis(axis, distance) { + _v1$4.copy(axis).applyQuaternion(this.quaternion); + this.position.add(_v1$4.multiplyScalar(distance)); + return this; + } + /** + * Translate the 3D object by a distance along its X-axis in local space. + * + * @param {number} distance - The distance in world units. + * @return {Object3D} A reference to this instance. + */ + translateX(distance) { + return this.translateOnAxis(_xAxis, distance); + } + /** + * Translate the 3D object by a distance along its Y-axis in local space. + * + * @param {number} distance - The distance in world units. + * @return {Object3D} A reference to this instance. + */ + translateY(distance) { + return this.translateOnAxis(_yAxis, distance); + } + /** + * Translate the 3D object by a distance along its Z-axis in local space. + * + * @param {number} distance - The distance in world units. + * @return {Object3D} A reference to this instance. + */ + translateZ(distance) { + return this.translateOnAxis(_zAxis, distance); + } + /** + * Converts the given vector from this 3D object's local space to world space. + * + * @param {Vector3} vector - The vector to convert. + * @return {Vector3} The converted vector. + */ + localToWorld(vector) { + this.updateWorldMatrix(true, false); + return vector.applyMatrix4(this.matrixWorld); + } + /** + * Converts the given vector from this 3D object's word space to local space. + * + * @param {Vector3} vector - The vector to convert. + * @return {Vector3} The converted vector. + */ + worldToLocal(vector) { + this.updateWorldMatrix(true, false); + return vector.applyMatrix4(_m1$1.copy(this.matrixWorld).invert()); + } + /** + * Rotates the object to face a point in world space. + * + * This method does not support objects having non-uniformly-scaled parent(s). + * + * @param {number|Vector3} x - The x coordinate in world space. Alternatively, a vector representing a position in world space + * @param {number} [y] - The y coordinate in world space. + * @param {number} [z] - The z coordinate in world space. + */ + lookAt(x, y, z) { + if (x.isVector3) { + _target.copy(x); + } else { + _target.set(x, y, z); + } + const parent = this.parent; + this.updateWorldMatrix(true, false); + _position$3.setFromMatrixPosition(this.matrixWorld); + if (this.isCamera || this.isLight) { + _m1$1.lookAt(_position$3, _target, this.up); + } else { + _m1$1.lookAt(_target, _position$3, this.up); + } + this.quaternion.setFromRotationMatrix(_m1$1); + if (parent) { + _m1$1.extractRotation(parent.matrixWorld); + _q1.setFromRotationMatrix(_m1$1); + this.quaternion.premultiply(_q1.invert()); + } + } + /** + * Adds the given 3D object as a child to this 3D object. An arbitrary number of + * objects may be added. Any current parent on an object passed in here will be + * removed, since an object can have at most one parent. + * + * @fires Object3D#added + * @fires Object3D#childadded + * @param {Object3D} object - The 3D object to add. + * @return {Object3D} A reference to this instance. + */ + add(object) { + if (arguments.length > 1) { + for (let i = 0; i < arguments.length; i++) { + this.add(arguments[i]); + } + return this; + } + if (object === this) { + error("Object3D.add: object can't be added as a child of itself.", object); + return this; + } + if (object && object.isObject3D) { + object.removeFromParent(); + object.parent = this; + this.children.push(object); + object.dispatchEvent(_addedEvent); + _childaddedEvent.child = object; + this.dispatchEvent(_childaddedEvent); + _childaddedEvent.child = null; + } else { + error("Object3D.add: object not an instance of THREE.Object3D.", object); + } + return this; + } + /** + * Removes the given 3D object as child from this 3D object. + * An arbitrary number of objects may be removed. + * + * @fires Object3D#removed + * @fires Object3D#childremoved + * @param {Object3D} object - The 3D object to remove. + * @return {Object3D} A reference to this instance. + */ + remove(object) { + if (arguments.length > 1) { + for (let i = 0; i < arguments.length; i++) { + this.remove(arguments[i]); + } + return this; + } + const index = this.children.indexOf(object); + if (index !== -1) { + object.parent = null; + this.children.splice(index, 1); + object.dispatchEvent(_removedEvent); + _childremovedEvent.child = object; + this.dispatchEvent(_childremovedEvent); + _childremovedEvent.child = null; + } + return this; + } + /** + * Removes this 3D object from its current parent. + * + * @fires Object3D#removed + * @fires Object3D#childremoved + * @return {Object3D} A reference to this instance. + */ + removeFromParent() { + const parent = this.parent; + if (parent !== null) { + parent.remove(this); + } + return this; + } + /** + * Removes all child objects. + * + * @fires Object3D#removed + * @fires Object3D#childremoved + * @return {Object3D} A reference to this instance. + */ + clear() { + return this.remove(...this.children); + } + /** + * Adds the given 3D object as a child of this 3D object, while maintaining the object's world + * transform. This method does not support scene graphs having non-uniformly-scaled nodes(s). + * + * @fires Object3D#added + * @fires Object3D#childadded + * @param {Object3D} object - The 3D object to attach. + * @return {Object3D} A reference to this instance. + */ + attach(object) { + this.updateWorldMatrix(true, false); + _m1$1.copy(this.matrixWorld).invert(); + if (object.parent !== null) { + object.parent.updateWorldMatrix(true, false); + _m1$1.multiply(object.parent.matrixWorld); + } + object.applyMatrix4(_m1$1); + object.removeFromParent(); + object.parent = this; + this.children.push(object); + object.updateWorldMatrix(false, true); + object.dispatchEvent(_addedEvent); + _childaddedEvent.child = object; + this.dispatchEvent(_childaddedEvent); + _childaddedEvent.child = null; + return this; + } + /** + * Searches through the 3D object and its children, starting with the 3D object + * itself, and returns the first with a matching ID. + * + * @param {number} id - The id. + * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found. + */ + getObjectById(id) { + return this.getObjectByProperty("id", id); + } + /** + * Searches through the 3D object and its children, starting with the 3D object + * itself, and returns the first with a matching name. + * + * @param {string} name - The name. + * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found. + */ + getObjectByName(name) { + return this.getObjectByProperty("name", name); + } + /** + * Searches through the 3D object and its children, starting with the 3D object + * itself, and returns the first with a matching property value. + * + * @param {string} name - The name of the property. + * @param {any} value - The value. + * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found. + */ + getObjectByProperty(name, value) { + if (this[name] === value) + return this; + for (let i = 0, l = this.children.length; i < l; i++) { + const child = this.children[i]; + const object = child.getObjectByProperty(name, value); + if (object !== void 0) { + return object; + } + } + return void 0; + } + /** + * Searches through the 3D object and its children, starting with the 3D object + * itself, and returns all 3D objects with a matching property value. + * + * @param {string} name - The name of the property. + * @param {any} value - The value. + * @param {Array} result - The method stores the result in this array. + * @return {Array} The found 3D objects. + */ + getObjectsByProperty(name, value, result = []) { + if (this[name] === value) + result.push(this); + const children = this.children; + for (let i = 0, l = children.length; i < l; i++) { + children[i].getObjectsByProperty(name, value, result); + } + return result; + } + /** + * Returns a vector representing the position of the 3D object in world space. + * + * @param {Vector3} target - The target vector the result is stored to. + * @return {Vector3} The 3D object's position in world space. + */ + getWorldPosition(target) { + this.updateWorldMatrix(true, false); + return target.setFromMatrixPosition(this.matrixWorld); + } + /** + * Returns a Quaternion representing the position of the 3D object in world space. + * + * @param {Quaternion} target - The target Quaternion the result is stored to. + * @return {Quaternion} The 3D object's rotation in world space. + */ + getWorldQuaternion(target) { + this.updateWorldMatrix(true, false); + this.matrixWorld.decompose(_position$3, target, _scale$2); + return target; + } + /** + * Returns a vector representing the scale of the 3D object in world space. + * + * @param {Vector3} target - The target vector the result is stored to. + * @return {Vector3} The 3D object's scale in world space. + */ + getWorldScale(target) { + this.updateWorldMatrix(true, false); + this.matrixWorld.decompose(_position$3, _quaternion$2, target); + return target; + } + /** + * Returns a vector representing the ("look") direction of the 3D object in world space. + * + * @param {Vector3} target - The target vector the result is stored to. + * @return {Vector3} The 3D object's direction in world space. + */ + getWorldDirection(target) { + this.updateWorldMatrix(true, false); + const e = this.matrixWorld.elements; + return target.set(e[8], e[9], e[10]).normalize(); + } + /** + * Abstract method to get intersections between a casted ray and this + * 3D object. Renderable 3D objects such as {@link Mesh}, {@link Line} or {@link Points} + * implement this method in order to use raycasting. + * + * @abstract + * @param {Raycaster} raycaster - The raycaster. + * @param {Array} intersects - An array holding the result of the method. + */ + raycast() { + } + /** + * Executes the callback on this 3D object and all descendants. + * + * Note: Modifying the scene graph inside the callback is discouraged. + * + * @param {Function} callback - A callback function that allows to process the current 3D object. + */ + traverse(callback) { + callback(this); + const children = this.children; + for (let i = 0, l = children.length; i < l; i++) { + children[i].traverse(callback); + } + } + /** + * Like {@link Object3D#traverse}, but the callback will only be executed for visible 3D objects. + * Descendants of invisible 3D objects are not traversed. + * + * Note: Modifying the scene graph inside the callback is discouraged. + * + * @param {Function} callback - A callback function that allows to process the current 3D object. + */ + traverseVisible(callback) { + if (this.visible === false) + return; + callback(this); + const children = this.children; + for (let i = 0, l = children.length; i < l; i++) { + children[i].traverseVisible(callback); + } + } + /** + * Like {@link Object3D#traverse}, but the callback will only be executed for all ancestors. + * + * Note: Modifying the scene graph inside the callback is discouraged. + * + * @param {Function} callback - A callback function that allows to process the current 3D object. + */ + traverseAncestors(callback) { + const parent = this.parent; + if (parent !== null) { + callback(parent); + parent.traverseAncestors(callback); + } + } + /** + * Updates the transformation matrix in local space by computing it from the current + * position, rotation and scale values. + */ + updateMatrix() { + this.matrix.compose(this.position, this.quaternion, this.scale); + this.matrixWorldNeedsUpdate = true; + } + /** + * Updates the transformation matrix in world space of this 3D objects and its descendants. + * + * To ensure correct results, this method also recomputes the 3D object's transformation matrix in + * local space. The computation of the local and world matrix can be controlled with the + * {@link Object3D#matrixAutoUpdate} and {@link Object3D#matrixWorldAutoUpdate} flags which are both + * `true` by default. Set these flags to `false` if you need more control over the update matrix process. + * + * @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even + * when {@link Object3D#matrixWorldAutoUpdate} is set to `false`. + */ + updateMatrixWorld(force) { + if (this.matrixAutoUpdate) + this.updateMatrix(); + if (this.matrixWorldNeedsUpdate || force) { + if (this.matrixWorldAutoUpdate === true) { + if (this.parent === null) { + this.matrixWorld.copy(this.matrix); + } else { + this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); + } + } + this.matrixWorldNeedsUpdate = false; + force = true; + } + const children = this.children; + for (let i = 0, l = children.length; i < l; i++) { + const child = children[i]; + child.updateMatrixWorld(force); + } + } + /** + * An alternative version of {@link Object3D#updateMatrixWorld} with more control over the + * update of ancestor and descendant nodes. + * + * @param {boolean} [updateParents=false] Whether ancestor nodes should be updated or not. + * @param {boolean} [updateChildren=false] Whether descendant nodes should be updated or not. + */ + updateWorldMatrix(updateParents, updateChildren) { + const parent = this.parent; + if (updateParents === true && parent !== null) { + parent.updateWorldMatrix(true, false); + } + if (this.matrixAutoUpdate) + this.updateMatrix(); + if (this.matrixWorldAutoUpdate === true) { + if (this.parent === null) { + this.matrixWorld.copy(this.matrix); + } else { + this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); + } + } + if (updateChildren === true) { + const children = this.children; + for (let i = 0, l = children.length; i < l; i++) { + const child = children[i]; + child.updateWorldMatrix(false, true); + } + } + } + /** + * Serializes the 3D object into JSON. + * + * @param {?(Object|string)} meta - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized 3D object. + * @see {@link ObjectLoader#parse} + */ + toJSON(meta) { + const isRootObject = meta === void 0 || typeof meta === "string"; + const output = {}; + if (isRootObject) { + meta = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {}, + skeletons: {}, + animations: {}, + nodes: {} + }; + output.metadata = { + version: 4.7, + type: "Object", + generator: "Object3D.toJSON" + }; + } + const object = {}; + object.uuid = this.uuid; + object.type = this.type; + if (this.name !== "") + object.name = this.name; + if (this.castShadow === true) + object.castShadow = true; + if (this.receiveShadow === true) + object.receiveShadow = true; + if (this.visible === false) + object.visible = false; + if (this.frustumCulled === false) + object.frustumCulled = false; + if (this.renderOrder !== 0) + object.renderOrder = this.renderOrder; + if (Object.keys(this.userData).length > 0) + object.userData = this.userData; + object.layers = this.layers.mask; + object.matrix = this.matrix.toArray(); + object.up = this.up.toArray(); + if (this.matrixAutoUpdate === false) + object.matrixAutoUpdate = false; + if (this.isInstancedMesh) { + object.type = "InstancedMesh"; + object.count = this.count; + object.instanceMatrix = this.instanceMatrix.toJSON(); + if (this.instanceColor !== null) + object.instanceColor = this.instanceColor.toJSON(); + } + if (this.isBatchedMesh) { + object.type = "BatchedMesh"; + object.perObjectFrustumCulled = this.perObjectFrustumCulled; + object.sortObjects = this.sortObjects; + object.drawRanges = this._drawRanges; + object.reservedRanges = this._reservedRanges; + object.geometryInfo = this._geometryInfo.map((info) => ({ + ...info, + boundingBox: info.boundingBox ? info.boundingBox.toJSON() : void 0, + boundingSphere: info.boundingSphere ? info.boundingSphere.toJSON() : void 0 + })); + object.instanceInfo = this._instanceInfo.map((info) => ({ ...info })); + object.availableInstanceIds = this._availableInstanceIds.slice(); + object.availableGeometryIds = this._availableGeometryIds.slice(); + object.nextIndexStart = this._nextIndexStart; + object.nextVertexStart = this._nextVertexStart; + object.geometryCount = this._geometryCount; + object.maxInstanceCount = this._maxInstanceCount; + object.maxVertexCount = this._maxVertexCount; + object.maxIndexCount = this._maxIndexCount; + object.geometryInitialized = this._geometryInitialized; + object.matricesTexture = this._matricesTexture.toJSON(meta); + object.indirectTexture = this._indirectTexture.toJSON(meta); + if (this._colorsTexture !== null) { + object.colorsTexture = this._colorsTexture.toJSON(meta); + } + if (this.boundingSphere !== null) { + object.boundingSphere = this.boundingSphere.toJSON(); + } + if (this.boundingBox !== null) { + object.boundingBox = this.boundingBox.toJSON(); + } + } + function serialize(library, element) { + if (library[element.uuid] === void 0) { + library[element.uuid] = element.toJSON(meta); + } + return element.uuid; + } + if (this.isScene) { + if (this.background) { + if (this.background.isColor) { + object.background = this.background.toJSON(); + } else if (this.background.isTexture) { + object.background = this.background.toJSON(meta).uuid; + } + } + if (this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true) { + object.environment = this.environment.toJSON(meta).uuid; + } + } else if (this.isMesh || this.isLine || this.isPoints) { + object.geometry = serialize(meta.geometries, this.geometry); + const parameters = this.geometry.parameters; + if (parameters !== void 0 && parameters.shapes !== void 0) { + const shapes = parameters.shapes; + if (Array.isArray(shapes)) { + for (let i = 0, l = shapes.length; i < l; i++) { + const shape = shapes[i]; + serialize(meta.shapes, shape); + } + } else { + serialize(meta.shapes, shapes); + } + } + } + if (this.isSkinnedMesh) { + object.bindMode = this.bindMode; + object.bindMatrix = this.bindMatrix.toArray(); + if (this.skeleton !== void 0) { + serialize(meta.skeletons, this.skeleton); + object.skeleton = this.skeleton.uuid; + } + } + if (this.material !== void 0) { + if (Array.isArray(this.material)) { + const uuids = []; + for (let i = 0, l = this.material.length; i < l; i++) { + uuids.push(serialize(meta.materials, this.material[i])); + } + object.material = uuids; + } else { + object.material = serialize(meta.materials, this.material); + } + } + if (this.children.length > 0) { + object.children = []; + for (let i = 0; i < this.children.length; i++) { + object.children.push(this.children[i].toJSON(meta).object); + } + } + if (this.animations.length > 0) { + object.animations = []; + for (let i = 0; i < this.animations.length; i++) { + const animation = this.animations[i]; + object.animations.push(serialize(meta.animations, animation)); + } + } + if (isRootObject) { + const geometries = extractFromCache(meta.geometries); + const materials = extractFromCache(meta.materials); + const textures = extractFromCache(meta.textures); + const images = extractFromCache(meta.images); + const shapes = extractFromCache(meta.shapes); + const skeletons = extractFromCache(meta.skeletons); + const animations = extractFromCache(meta.animations); + const nodes = extractFromCache(meta.nodes); + if (geometries.length > 0) + output.geometries = geometries; + if (materials.length > 0) + output.materials = materials; + if (textures.length > 0) + output.textures = textures; + if (images.length > 0) + output.images = images; + if (shapes.length > 0) + output.shapes = shapes; + if (skeletons.length > 0) + output.skeletons = skeletons; + if (animations.length > 0) + output.animations = animations; + if (nodes.length > 0) + output.nodes = nodes; + } + output.object = object; + return output; + function extractFromCache(cache) { + const values = []; + for (const key in cache) { + const data = cache[key]; + delete data.metadata; + values.push(data); + } + return values; + } + } + /** + * Returns a new 3D object with copied values from this instance. + * + * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are also cloned. + * @return {Object3D} A clone of this instance. + */ + clone(recursive) { + return new this.constructor().copy(this, recursive); + } + /** + * Copies the values of the given 3D object to this instance. + * + * @param {Object3D} source - The 3D object to copy. + * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are cloned. + * @return {Object3D} A reference to this instance. + */ + copy(source, recursive = true) { + this.name = source.name; + this.up.copy(source.up); + this.position.copy(source.position); + this.rotation.order = source.rotation.order; + this.quaternion.copy(source.quaternion); + this.scale.copy(source.scale); + this.matrix.copy(source.matrix); + this.matrixWorld.copy(source.matrixWorld); + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate; + this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate; + this.layers.mask = source.layers.mask; + this.visible = source.visible; + this.castShadow = source.castShadow; + this.receiveShadow = source.receiveShadow; + this.frustumCulled = source.frustumCulled; + this.renderOrder = source.renderOrder; + this.animations = source.animations.slice(); + this.userData = JSON.parse(JSON.stringify(source.userData)); + if (recursive === true) { + for (let i = 0; i < source.children.length; i++) { + const child = source.children[i]; + this.add(child.clone()); + } + } + return this; + } +} +Object3D.DEFAULT_UP = /* @__PURE__ */ new Vector3(0, 1, 0); +Object3D.DEFAULT_MATRIX_AUTO_UPDATE = true; +Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true; +const _v0$1 = /* @__PURE__ */ new Vector3(); +const _v1$3 = /* @__PURE__ */ new Vector3(); +const _v2$2 = /* @__PURE__ */ new Vector3(); +const _v3$2 = /* @__PURE__ */ new Vector3(); +const _vab = /* @__PURE__ */ new Vector3(); +const _vac = /* @__PURE__ */ new Vector3(); +const _vbc = /* @__PURE__ */ new Vector3(); +const _vap = /* @__PURE__ */ new Vector3(); +const _vbp = /* @__PURE__ */ new Vector3(); +const _vcp = /* @__PURE__ */ new Vector3(); +const _v40 = /* @__PURE__ */ new Vector4(); +const _v41 = /* @__PURE__ */ new Vector4(); +const _v42 = /* @__PURE__ */ new Vector4(); +class Triangle { + /** + * Constructs a new triangle. + * + * @param {Vector3} [a=(0,0,0)] - The first corner of the triangle. + * @param {Vector3} [b=(0,0,0)] - The second corner of the triangle. + * @param {Vector3} [c=(0,0,0)] - The third corner of the triangle. + */ + constructor(a = new Vector3(), b = new Vector3(), c = new Vector3()) { + this.a = a; + this.b = b; + this.c = c; + } + /** + * Computes the normal vector of a triangle. + * + * @param {Vector3} a - The first corner of the triangle. + * @param {Vector3} b - The second corner of the triangle. + * @param {Vector3} c - The third corner of the triangle. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The triangle's normal. + */ + static getNormal(a, b, c, target) { + target.subVectors(c, b); + _v0$1.subVectors(a, b); + target.cross(_v0$1); + const targetLengthSq = target.lengthSq(); + if (targetLengthSq > 0) { + return target.multiplyScalar(1 / Math.sqrt(targetLengthSq)); + } + return target.set(0, 0, 0); + } + /** + * Computes a barycentric coordinates from the given vector. + * Returns `null` if the triangle is degenerate. + * + * @param {Vector3} point - A point in 3D space. + * @param {Vector3} a - The first corner of the triangle. + * @param {Vector3} b - The second corner of the triangle. + * @param {Vector3} c - The third corner of the triangle. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The barycentric coordinates for the given point + */ + static getBarycoord(point, a, b, c, target) { + _v0$1.subVectors(c, a); + _v1$3.subVectors(b, a); + _v2$2.subVectors(point, a); + const dot00 = _v0$1.dot(_v0$1); + const dot01 = _v0$1.dot(_v1$3); + const dot02 = _v0$1.dot(_v2$2); + const dot11 = _v1$3.dot(_v1$3); + const dot12 = _v1$3.dot(_v2$2); + const denom = dot00 * dot11 - dot01 * dot01; + if (denom === 0) { + target.set(0, 0, 0); + return null; + } + const invDenom = 1 / denom; + const u = (dot11 * dot02 - dot01 * dot12) * invDenom; + const v = (dot00 * dot12 - dot01 * dot02) * invDenom; + return target.set(1 - u - v, v, u); + } + /** + * Returns `true` if the given point, when projected onto the plane of the + * triangle, lies within the triangle. + * + * @param {Vector3} point - The point in 3D space to test. + * @param {Vector3} a - The first corner of the triangle. + * @param {Vector3} b - The second corner of the triangle. + * @param {Vector3} c - The third corner of the triangle. + * @return {boolean} Whether the given point, when projected onto the plane of the + * triangle, lies within the triangle or not. + */ + static containsPoint(point, a, b, c) { + if (this.getBarycoord(point, a, b, c, _v3$2) === null) { + return false; + } + return _v3$2.x >= 0 && _v3$2.y >= 0 && _v3$2.x + _v3$2.y <= 1; + } + /** + * Computes the value barycentrically interpolated for the given point on the + * triangle. Returns `null` if the triangle is degenerate. + * + * @param {Vector3} point - Position of interpolated point. + * @param {Vector3} p1 - The first corner of the triangle. + * @param {Vector3} p2 - The second corner of the triangle. + * @param {Vector3} p3 - The third corner of the triangle. + * @param {Vector3} v1 - Value to interpolate of first vertex. + * @param {Vector3} v2 - Value to interpolate of second vertex. + * @param {Vector3} v3 - Value to interpolate of third vertex. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The interpolated value. + */ + static getInterpolation(point, p1, p2, p3, v1, v2, v3, target) { + if (this.getBarycoord(point, p1, p2, p3, _v3$2) === null) { + target.x = 0; + target.y = 0; + if ("z" in target) + target.z = 0; + if ("w" in target) + target.w = 0; + return null; + } + target.setScalar(0); + target.addScaledVector(v1, _v3$2.x); + target.addScaledVector(v2, _v3$2.y); + target.addScaledVector(v3, _v3$2.z); + return target; + } + /** + * Computes the value barycentrically interpolated for the given attribute and indices. + * + * @param {BufferAttribute} attr - The attribute to interpolate. + * @param {number} i1 - Index of first vertex. + * @param {number} i2 - Index of second vertex. + * @param {number} i3 - Index of third vertex. + * @param {Vector3} barycoord - The barycoordinate value to use to interpolate. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The interpolated attribute value. + */ + static getInterpolatedAttribute(attr, i1, i2, i3, barycoord, target) { + _v40.setScalar(0); + _v41.setScalar(0); + _v42.setScalar(0); + _v40.fromBufferAttribute(attr, i1); + _v41.fromBufferAttribute(attr, i2); + _v42.fromBufferAttribute(attr, i3); + target.setScalar(0); + target.addScaledVector(_v40, barycoord.x); + target.addScaledVector(_v41, barycoord.y); + target.addScaledVector(_v42, barycoord.z); + return target; + } + /** + * Returns `true` if the triangle is oriented towards the given direction. + * + * @param {Vector3} a - The first corner of the triangle. + * @param {Vector3} b - The second corner of the triangle. + * @param {Vector3} c - The third corner of the triangle. + * @param {Vector3} direction - The (normalized) direction vector. + * @return {boolean} Whether the triangle is oriented towards the given direction or not. + */ + static isFrontFacing(a, b, c, direction) { + _v0$1.subVectors(c, b); + _v1$3.subVectors(a, b); + return _v0$1.cross(_v1$3).dot(direction) < 0 ? true : false; + } + /** + * Sets the triangle's vertices by copying the given values. + * + * @param {Vector3} a - The first corner of the triangle. + * @param {Vector3} b - The second corner of the triangle. + * @param {Vector3} c - The third corner of the triangle. + * @return {Triangle} A reference to this triangle. + */ + set(a, b, c) { + this.a.copy(a); + this.b.copy(b); + this.c.copy(c); + return this; + } + /** + * Sets the triangle's vertices by copying the given array values. + * + * @param {Array} points - An array with 3D points. + * @param {number} i0 - The array index representing the first corner of the triangle. + * @param {number} i1 - The array index representing the second corner of the triangle. + * @param {number} i2 - The array index representing the third corner of the triangle. + * @return {Triangle} A reference to this triangle. + */ + setFromPointsAndIndices(points, i0, i1, i2) { + this.a.copy(points[i0]); + this.b.copy(points[i1]); + this.c.copy(points[i2]); + return this; + } + /** + * Sets the triangle's vertices by copying the given attribute values. + * + * @param {BufferAttribute} attribute - A buffer attribute with 3D points data. + * @param {number} i0 - The attribute index representing the first corner of the triangle. + * @param {number} i1 - The attribute index representing the second corner of the triangle. + * @param {number} i2 - The attribute index representing the third corner of the triangle. + * @return {Triangle} A reference to this triangle. + */ + setFromAttributeAndIndices(attribute, i0, i1, i2) { + this.a.fromBufferAttribute(attribute, i0); + this.b.fromBufferAttribute(attribute, i1); + this.c.fromBufferAttribute(attribute, i2); + return this; + } + /** + * Returns a new triangle with copied values from this instance. + * + * @return {Triangle} A clone of this instance. + */ + clone() { + return new this.constructor().copy(this); + } + /** + * Copies the values of the given triangle to this instance. + * + * @param {Triangle} triangle - The triangle to copy. + * @return {Triangle} A reference to this triangle. + */ + copy(triangle3) { + this.a.copy(triangle3.a); + this.b.copy(triangle3.b); + this.c.copy(triangle3.c); + return this; + } + /** + * Computes the area of the triangle. + * + * @return {number} The triangle's area. + */ + getArea() { + _v0$1.subVectors(this.c, this.b); + _v1$3.subVectors(this.a, this.b); + return _v0$1.cross(_v1$3).length() * 0.5; + } + /** + * Computes the midpoint of the triangle. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The triangle's midpoint. + */ + getMidpoint(target) { + return target.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3); + } + /** + * Computes the normal of the triangle. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The triangle's normal. + */ + getNormal(target) { + return Triangle.getNormal(this.a, this.b, this.c, target); + } + /** + * Computes a plane the triangle lies within. + * + * @param {Plane} target - The target vector that is used to store the method's result. + * @return {Plane} The plane the triangle lies within. + */ + getPlane(target) { + return target.setFromCoplanarPoints(this.a, this.b, this.c); + } + /** + * Computes a barycentric coordinates from the given vector. + * Returns `null` if the triangle is degenerate. + * + * @param {Vector3} point - A point in 3D space. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The barycentric coordinates for the given point + */ + getBarycoord(point, target) { + return Triangle.getBarycoord(point, this.a, this.b, this.c, target); + } + /** + * Computes the value barycentrically interpolated for the given point on the + * triangle. Returns `null` if the triangle is degenerate. + * + * @param {Vector3} point - Position of interpolated point. + * @param {Vector3} v1 - Value to interpolate of first vertex. + * @param {Vector3} v2 - Value to interpolate of second vertex. + * @param {Vector3} v3 - Value to interpolate of third vertex. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The interpolated value. + */ + getInterpolation(point, v1, v2, v3, target) { + return Triangle.getInterpolation(point, this.a, this.b, this.c, v1, v2, v3, target); + } + /** + * Returns `true` if the given point, when projected onto the plane of the + * triangle, lies within the triangle. + * + * @param {Vector3} point - The point in 3D space to test. + * @return {boolean} Whether the given point, when projected onto the plane of the + * triangle, lies within the triangle or not. + */ + containsPoint(point) { + return Triangle.containsPoint(point, this.a, this.b, this.c); + } + /** + * Returns `true` if the triangle is oriented towards the given direction. + * + * @param {Vector3} direction - The (normalized) direction vector. + * @return {boolean} Whether the triangle is oriented towards the given direction or not. + */ + isFrontFacing(direction) { + return Triangle.isFrontFacing(this.a, this.b, this.c, direction); + } + /** + * Returns `true` if this triangle intersects with the given box. + * + * @param {Box3} box - The box to intersect. + * @return {boolean} Whether this triangle intersects with the given box or not. + */ + intersectsBox(box) { + return box.intersectsTriangle(this); + } + /** + * Returns the closest point on the triangle to the given point. + * + * @param {Vector3} p - The point to compute the closest point for. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The closest point on the triangle. + */ + closestPointToPoint(p, target) { + const a = this.a, b = this.b, c = this.c; + let v, w; + _vab.subVectors(b, a); + _vac.subVectors(c, a); + _vap.subVectors(p, a); + const d1 = _vab.dot(_vap); + const d2 = _vac.dot(_vap); + if (d1 <= 0 && d2 <= 0) { + return target.copy(a); + } + _vbp.subVectors(p, b); + const d3 = _vab.dot(_vbp); + const d4 = _vac.dot(_vbp); + if (d3 >= 0 && d4 <= d3) { + return target.copy(b); + } + const vc = d1 * d4 - d3 * d2; + if (vc <= 0 && d1 >= 0 && d3 <= 0) { + v = d1 / (d1 - d3); + return target.copy(a).addScaledVector(_vab, v); + } + _vcp.subVectors(p, c); + const d5 = _vab.dot(_vcp); + const d6 = _vac.dot(_vcp); + if (d6 >= 0 && d5 <= d6) { + return target.copy(c); + } + const vb = d5 * d2 - d1 * d6; + if (vb <= 0 && d2 >= 0 && d6 <= 0) { + w = d2 / (d2 - d6); + return target.copy(a).addScaledVector(_vac, w); + } + const va = d3 * d6 - d5 * d4; + if (va <= 0 && d4 - d3 >= 0 && d5 - d6 >= 0) { + _vbc.subVectors(c, b); + w = (d4 - d3) / (d4 - d3 + (d5 - d6)); + return target.copy(b).addScaledVector(_vbc, w); + } + const denom = 1 / (va + vb + vc); + v = vb * denom; + w = vc * denom; + return target.copy(a).addScaledVector(_vab, v).addScaledVector(_vac, w); + } + /** + * Returns `true` if this triangle is equal with the given one. + * + * @param {Triangle} triangle - The triangle to test for equality. + * @return {boolean} Whether this triangle is equal with the given one. + */ + equals(triangle3) { + return triangle3.a.equals(this.a) && triangle3.b.equals(this.b) && triangle3.c.equals(this.c); + } +} +const _colorKeywords = { + "aliceblue": 15792383, + "antiquewhite": 16444375, + "aqua": 65535, + "aquamarine": 8388564, + "azure": 15794175, + "beige": 16119260, + "bisque": 16770244, + "black": 0, + "blanchedalmond": 16772045, + "blue": 255, + "blueviolet": 9055202, + "brown": 10824234, + "burlywood": 14596231, + "cadetblue": 6266528, + "chartreuse": 8388352, + "chocolate": 13789470, + "coral": 16744272, + "cornflowerblue": 6591981, + "cornsilk": 16775388, + "crimson": 14423100, + "cyan": 65535, + "darkblue": 139, + "darkcyan": 35723, + "darkgoldenrod": 12092939, + "darkgray": 11119017, + "darkgreen": 25600, + "darkgrey": 11119017, + "darkkhaki": 12433259, + "darkmagenta": 9109643, + "darkolivegreen": 5597999, + "darkorange": 16747520, + "darkorchid": 10040012, + "darkred": 9109504, + "darksalmon": 15308410, + "darkseagreen": 9419919, + "darkslateblue": 4734347, + "darkslategray": 3100495, + "darkslategrey": 3100495, + "darkturquoise": 52945, + "darkviolet": 9699539, + "deeppink": 16716947, + "deepskyblue": 49151, + "dimgray": 6908265, + "dimgrey": 6908265, + "dodgerblue": 2003199, + "firebrick": 11674146, + "floralwhite": 16775920, + "forestgreen": 2263842, + "fuchsia": 16711935, + "gainsboro": 14474460, + "ghostwhite": 16316671, + "gold": 16766720, + "goldenrod": 14329120, + "gray": 8421504, + "green": 32768, + "greenyellow": 11403055, + "grey": 8421504, + "honeydew": 15794160, + "hotpink": 16738740, + "indianred": 13458524, + "indigo": 4915330, + "ivory": 16777200, + "khaki": 15787660, + "lavender": 15132410, + "lavenderblush": 16773365, + "lawngreen": 8190976, + "lemonchiffon": 16775885, + "lightblue": 11393254, + "lightcoral": 15761536, + "lightcyan": 14745599, + "lightgoldenrodyellow": 16448210, + "lightgray": 13882323, + "lightgreen": 9498256, + "lightgrey": 13882323, + "lightpink": 16758465, + "lightsalmon": 16752762, + "lightseagreen": 2142890, + "lightskyblue": 8900346, + "lightslategray": 7833753, + "lightslategrey": 7833753, + "lightsteelblue": 11584734, + "lightyellow": 16777184, + "lime": 65280, + "limegreen": 3329330, + "linen": 16445670, + "magenta": 16711935, + "maroon": 8388608, + "mediumaquamarine": 6737322, + "mediumblue": 205, + "mediumorchid": 12211667, + "mediumpurple": 9662683, + "mediumseagreen": 3978097, + "mediumslateblue": 8087790, + "mediumspringgreen": 64154, + "mediumturquoise": 4772300, + "mediumvioletred": 13047173, + "midnightblue": 1644912, + "mintcream": 16121850, + "mistyrose": 16770273, + "moccasin": 16770229, + "navajowhite": 16768685, + "navy": 128, + "oldlace": 16643558, + "olive": 8421376, + "olivedrab": 7048739, + "orange": 16753920, + "orangered": 16729344, + "orchid": 14315734, + "palegoldenrod": 15657130, + "palegreen": 10025880, + "paleturquoise": 11529966, + "palevioletred": 14381203, + "papayawhip": 16773077, + "peachpuff": 16767673, + "peru": 13468991, + "pink": 16761035, + "plum": 14524637, + "powderblue": 11591910, + "purple": 8388736, + "rebeccapurple": 6697881, + "red": 16711680, + "rosybrown": 12357519, + "royalblue": 4286945, + "saddlebrown": 9127187, + "salmon": 16416882, + "sandybrown": 16032864, + "seagreen": 3050327, + "seashell": 16774638, + "sienna": 10506797, + "silver": 12632256, + "skyblue": 8900331, + "slateblue": 6970061, + "slategray": 7372944, + "slategrey": 7372944, + "snow": 16775930, + "springgreen": 65407, + "steelblue": 4620980, + "tan": 13808780, + "teal": 32896, + "thistle": 14204888, + "tomato": 16737095, + "turquoise": 4251856, + "violet": 15631086, + "wheat": 16113331, + "white": 16777215, + "whitesmoke": 16119285, + "yellow": 16776960, + "yellowgreen": 10145074 +}; +const _hslA = { h: 0, s: 0, l: 0 }; +const _hslB = { h: 0, s: 0, l: 0 }; +function hue2rgb(p, q, t) { + if (t < 0) + t += 1; + if (t > 1) + t -= 1; + if (t < 1 / 6) + return p + (q - p) * 6 * t; + if (t < 1 / 2) + return q; + if (t < 2 / 3) + return p + (q - p) * 6 * (2 / 3 - t); + return p; +} +class Color { + /** + * Constructs a new color. + * + * Note that standard method of specifying color in three.js is with a hexadecimal triplet, + * and that method is used throughout the rest of the documentation. + * + * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are + * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance. + * @param {number} [g] - The green component. + * @param {number} [b] - The blue component. + */ + constructor(r, g, b) { + this.isColor = true; + this.r = 1; + this.g = 1; + this.b = 1; + return this.set(r, g, b); + } + /** + * Sets the colors's components from the given values. + * + * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are + * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance. + * @param {number} [g] - The green component. + * @param {number} [b] - The blue component. + * @return {Color} A reference to this color. + */ + set(r, g, b) { + if (g === void 0 && b === void 0) { + const value = r; + if (value && value.isColor) { + this.copy(value); + } else if (typeof value === "number") { + this.setHex(value); + } else if (typeof value === "string") { + this.setStyle(value); + } + } else { + this.setRGB(r, g, b); + } + return this; + } + /** + * Sets the colors's components to the given scalar value. + * + * @param {number} scalar - The scalar value. + * @return {Color} A reference to this color. + */ + setScalar(scalar) { + this.r = scalar; + this.g = scalar; + this.b = scalar; + return this; + } + /** + * Sets this color from a hexadecimal value. + * + * @param {number} hex - The hexadecimal value. + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {Color} A reference to this color. + */ + setHex(hex, colorSpace = SRGBColorSpace) { + hex = Math.floor(hex); + this.r = (hex >> 16 & 255) / 255; + this.g = (hex >> 8 & 255) / 255; + this.b = (hex & 255) / 255; + ColorManagement.colorSpaceToWorking(this, colorSpace); + return this; + } + /** + * Sets this color from RGB values. + * + * @param {number} r - Red channel value between `0.0` and `1.0`. + * @param {number} g - Green channel value between `0.0` and `1.0`. + * @param {number} b - Blue channel value between `0.0` and `1.0`. + * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space. + * @return {Color} A reference to this color. + */ + setRGB(r, g, b, colorSpace = ColorManagement.workingColorSpace) { + this.r = r; + this.g = g; + this.b = b; + ColorManagement.colorSpaceToWorking(this, colorSpace); + return this; + } + /** + * Sets this color from RGB values. + * + * @param {number} h - Hue value between `0.0` and `1.0`. + * @param {number} s - Saturation value between `0.0` and `1.0`. + * @param {number} l - Lightness value between `0.0` and `1.0`. + * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space. + * @return {Color} A reference to this color. + */ + setHSL(h, s, l, colorSpace = ColorManagement.workingColorSpace) { + h = euclideanModulo(h, 1); + s = clamp(s, 0, 1); + l = clamp(l, 0, 1); + if (s === 0) { + this.r = this.g = this.b = l; + } else { + const p = l <= 0.5 ? l * (1 + s) : l + s - l * s; + const q = 2 * l - p; + this.r = hue2rgb(q, p, h + 1 / 3); + this.g = hue2rgb(q, p, h); + this.b = hue2rgb(q, p, h - 1 / 3); + } + ColorManagement.colorSpaceToWorking(this, colorSpace); + return this; + } + /** + * Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`, + * `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or + * any [X11 color name](https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart) - + * all 140 color names are supported). + * + * @param {string} style - Color as a CSS-style string. + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {Color} A reference to this color. + */ + setStyle(style, colorSpace = SRGBColorSpace) { + function handleAlpha(string) { + if (string === void 0) + return; + if (parseFloat(string) < 1) { + warn("Color: Alpha component of " + style + " will be ignored."); + } + } + let m; + if (m = /^(\w+)\(([^\)]*)\)/.exec(style)) { + let color; + const name = m[1]; + const components = m[2]; + switch (name) { + case "rgb": + case "rgba": + if (color = /^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)) { + handleAlpha(color[4]); + return this.setRGB( + Math.min(255, parseInt(color[1], 10)) / 255, + Math.min(255, parseInt(color[2], 10)) / 255, + Math.min(255, parseInt(color[3], 10)) / 255, + colorSpace + ); + } + if (color = /^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)) { + handleAlpha(color[4]); + return this.setRGB( + Math.min(100, parseInt(color[1], 10)) / 100, + Math.min(100, parseInt(color[2], 10)) / 100, + Math.min(100, parseInt(color[3], 10)) / 100, + colorSpace + ); + } + break; + case "hsl": + case "hsla": + if (color = /^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)) { + handleAlpha(color[4]); + return this.setHSL( + parseFloat(color[1]) / 360, + parseFloat(color[2]) / 100, + parseFloat(color[3]) / 100, + colorSpace + ); + } + break; + default: + warn("Color: Unknown color model " + style); + } + } else if (m = /^\#([A-Fa-f\d]+)$/.exec(style)) { + const hex = m[1]; + const size = hex.length; + if (size === 3) { + return this.setRGB( + parseInt(hex.charAt(0), 16) / 15, + parseInt(hex.charAt(1), 16) / 15, + parseInt(hex.charAt(2), 16) / 15, + colorSpace + ); + } else if (size === 6) { + return this.setHex(parseInt(hex, 16), colorSpace); + } else { + warn("Color: Invalid hex color " + style); + } + } else if (style && style.length > 0) { + return this.setColorName(style, colorSpace); + } + return this; + } + /** + * Sets this color from a color name. Faster than {@link Color#setStyle} if + * you don't need the other CSS-style formats. + * + * For convenience, the list of names is exposed in `Color.NAMES` as a hash. + * ```js + * Color.NAMES.aliceblue // returns 0xF0F8FF + * ``` + * + * @param {string} style - The color name. + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {Color} A reference to this color. + */ + setColorName(style, colorSpace = SRGBColorSpace) { + const hex = _colorKeywords[style.toLowerCase()]; + if (hex !== void 0) { + this.setHex(hex, colorSpace); + } else { + warn("Color: Unknown color " + style); + } + return this; + } + /** + * Returns a new color with copied values from this instance. + * + * @return {Color} A clone of this instance. + */ + clone() { + return new this.constructor(this.r, this.g, this.b); + } + /** + * Copies the values of the given color to this instance. + * + * @param {Color} color - The color to copy. + * @return {Color} A reference to this color. + */ + copy(color) { + this.r = color.r; + this.g = color.g; + this.b = color.b; + return this; + } + /** + * Copies the given color into this color, and then converts this color from + * `SRGBColorSpace` to `LinearSRGBColorSpace`. + * + * @param {Color} color - The color to copy/convert. + * @return {Color} A reference to this color. + */ + copySRGBToLinear(color) { + this.r = SRGBToLinear(color.r); + this.g = SRGBToLinear(color.g); + this.b = SRGBToLinear(color.b); + return this; + } + /** + * Copies the given color into this color, and then converts this color from + * `LinearSRGBColorSpace` to `SRGBColorSpace`. + * + * @param {Color} color - The color to copy/convert. + * @return {Color} A reference to this color. + */ + copyLinearToSRGB(color) { + this.r = LinearToSRGB(color.r); + this.g = LinearToSRGB(color.g); + this.b = LinearToSRGB(color.b); + return this; + } + /** + * Converts this color from `SRGBColorSpace` to `LinearSRGBColorSpace`. + * + * @return {Color} A reference to this color. + */ + convertSRGBToLinear() { + this.copySRGBToLinear(this); + return this; + } + /** + * Converts this color from `LinearSRGBColorSpace` to `SRGBColorSpace`. + * + * @return {Color} A reference to this color. + */ + convertLinearToSRGB() { + this.copyLinearToSRGB(this); + return this; + } + /** + * Returns the hexadecimal value of this color. + * + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {number} The hexadecimal value. + */ + getHex(colorSpace = SRGBColorSpace) { + ColorManagement.workingToColorSpace(_color.copy(this), colorSpace); + return Math.round(clamp(_color.r * 255, 0, 255)) * 65536 + Math.round(clamp(_color.g * 255, 0, 255)) * 256 + Math.round(clamp(_color.b * 255, 0, 255)); + } + /** + * Returns the hexadecimal value of this color as a string (for example, 'FFFFFF'). + * + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {string} The hexadecimal value as a string. + */ + getHexString(colorSpace = SRGBColorSpace) { + return ("000000" + this.getHex(colorSpace).toString(16)).slice(-6); + } + /** + * Converts the colors RGB values into the HSL format and stores them into the + * given target object. + * + * @param {{h:number,s:number,l:number}} target - The target object that is used to store the method's result. + * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space. + * @return {{h:number,s:number,l:number}} The HSL representation of this color. + */ + getHSL(target, colorSpace = ColorManagement.workingColorSpace) { + ColorManagement.workingToColorSpace(_color.copy(this), colorSpace); + const r = _color.r, g = _color.g, b = _color.b; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + let hue, saturation; + const lightness = (min + max) / 2; + if (min === max) { + hue = 0; + saturation = 0; + } else { + const delta = max - min; + saturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min); + switch (max) { + case r: + hue = (g - b) / delta + (g < b ? 6 : 0); + break; + case g: + hue = (b - r) / delta + 2; + break; + case b: + hue = (r - g) / delta + 4; + break; + } + hue /= 6; + } + target.h = hue; + target.s = saturation; + target.l = lightness; + return target; + } + /** + * Returns the RGB values of this color and stores them into the given target object. + * + * @param {Color} target - The target color that is used to store the method's result. + * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space. + * @return {Color} The RGB representation of this color. + */ + getRGB(target, colorSpace = ColorManagement.workingColorSpace) { + ColorManagement.workingToColorSpace(_color.copy(this), colorSpace); + target.r = _color.r; + target.g = _color.g; + target.b = _color.b; + return target; + } + /** + * Returns the value of this color as a CSS style string. Example: `rgb(255,0,0)`. + * + * @param {string} [colorSpace=SRGBColorSpace] - The color space. + * @return {string} The CSS representation of this color. + */ + getStyle(colorSpace = SRGBColorSpace) { + ColorManagement.workingToColorSpace(_color.copy(this), colorSpace); + const r = _color.r, g = _color.g, b = _color.b; + if (colorSpace !== SRGBColorSpace) { + return `color(${colorSpace} ${r.toFixed(3)} ${g.toFixed(3)} ${b.toFixed(3)})`; + } + return `rgb(${Math.round(r * 255)},${Math.round(g * 255)},${Math.round(b * 255)})`; + } + /** + * Adds the given HSL values to this color's values. + * Internally, this converts the color's RGB values to HSL, adds HSL + * and then converts the color back to RGB. + * + * @param {number} h - Hue value between `0.0` and `1.0`. + * @param {number} s - Saturation value between `0.0` and `1.0`. + * @param {number} l - Lightness value between `0.0` and `1.0`. + * @return {Color} A reference to this color. + */ + offsetHSL(h, s, l) { + this.getHSL(_hslA); + return this.setHSL(_hslA.h + h, _hslA.s + s, _hslA.l + l); + } + /** + * Adds the RGB values of the given color to the RGB values of this color. + * + * @param {Color} color - The color to add. + * @return {Color} A reference to this color. + */ + add(color) { + this.r += color.r; + this.g += color.g; + this.b += color.b; + return this; + } + /** + * Adds the RGB values of the given colors and stores the result in this instance. + * + * @param {Color} color1 - The first color. + * @param {Color} color2 - The second color. + * @return {Color} A reference to this color. + */ + addColors(color1, color2) { + this.r = color1.r + color2.r; + this.g = color1.g + color2.g; + this.b = color1.b + color2.b; + return this; + } + /** + * Adds the given scalar value to the RGB values of this color. + * + * @param {number} s - The scalar to add. + * @return {Color} A reference to this color. + */ + addScalar(s) { + this.r += s; + this.g += s; + this.b += s; + return this; + } + /** + * Subtracts the RGB values of the given color from the RGB values of this color. + * + * @param {Color} color - The color to subtract. + * @return {Color} A reference to this color. + */ + sub(color) { + this.r = Math.max(0, this.r - color.r); + this.g = Math.max(0, this.g - color.g); + this.b = Math.max(0, this.b - color.b); + return this; + } + /** + * Multiplies the RGB values of the given color with the RGB values of this color. + * + * @param {Color} color - The color to multiply. + * @return {Color} A reference to this color. + */ + multiply(color) { + this.r *= color.r; + this.g *= color.g; + this.b *= color.b; + return this; + } + /** + * Multiplies the given scalar value with the RGB values of this color. + * + * @param {number} s - The scalar to multiply. + * @return {Color} A reference to this color. + */ + multiplyScalar(s) { + this.r *= s; + this.g *= s; + this.b *= s; + return this; + } + /** + * Linearly interpolates this color's RGB values toward the RGB values of the + * given color. The alpha argument can be thought of as the ratio between + * the two colors, where `0.0` is this color and `1.0` is the first argument. + * + * @param {Color} color - The color to converge on. + * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`. + * @return {Color} A reference to this color. + */ + lerp(color, alpha) { + this.r += (color.r - this.r) * alpha; + this.g += (color.g - this.g) * alpha; + this.b += (color.b - this.b) * alpha; + return this; + } + /** + * Linearly interpolates between the given colors and stores the result in this instance. + * The alpha argument can be thought of as the ratio between the two colors, where `0.0` + * is the first and `1.0` is the second color. + * + * @param {Color} color1 - The first color. + * @param {Color} color2 - The second color. + * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`. + * @return {Color} A reference to this color. + */ + lerpColors(color1, color2, alpha) { + this.r = color1.r + (color2.r - color1.r) * alpha; + this.g = color1.g + (color2.g - color1.g) * alpha; + this.b = color1.b + (color2.b - color1.b) * alpha; + return this; + } + /** + * Linearly interpolates this color's HSL values toward the HSL values of the + * given color. It differs from {@link Color#lerp} by not interpolating straight + * from one color to the other, but instead going through all the hues in between + * those two colors. The alpha argument can be thought of as the ratio between + * the two colors, where 0.0 is this color and 1.0 is the first argument. + * + * @param {Color} color - The color to converge on. + * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`. + * @return {Color} A reference to this color. + */ + lerpHSL(color, alpha) { + this.getHSL(_hslA); + color.getHSL(_hslB); + const h = lerp(_hslA.h, _hslB.h, alpha); + const s = lerp(_hslA.s, _hslB.s, alpha); + const l = lerp(_hslA.l, _hslB.l, alpha); + this.setHSL(h, s, l); + return this; + } + /** + * Sets the color's RGB components from the given 3D vector. + * + * @param {Vector3} v - The vector to set. + * @return {Color} A reference to this color. + */ + setFromVector3(v) { + this.r = v.x; + this.g = v.y; + this.b = v.z; + return this; + } + /** + * Transforms this color with the given 3x3 matrix. + * + * @param {Matrix3} m - The matrix. + * @return {Color} A reference to this color. + */ + applyMatrix3(m) { + const r = this.r, g = this.g, b = this.b; + const e = m.elements; + this.r = e[0] * r + e[3] * g + e[6] * b; + this.g = e[1] * r + e[4] * g + e[7] * b; + this.b = e[2] * r + e[5] * g + e[8] * b; + return this; + } + /** + * Returns `true` if this color is equal with the given one. + * + * @param {Color} c - The color to test for equality. + * @return {boolean} Whether this bounding color is equal with the given one. + */ + equals(c) { + return c.r === this.r && c.g === this.g && c.b === this.b; + } + /** + * Sets this color's RGB components from the given array. + * + * @param {Array} array - An array holding the RGB values. + * @param {number} [offset=0] - The offset into the array. + * @return {Color} A reference to this color. + */ + fromArray(array, offset = 0) { + this.r = array[offset]; + this.g = array[offset + 1]; + this.b = array[offset + 2]; + return this; + } + /** + * Writes the RGB components of this color to the given array. If no array is provided, + * the method returns a new instance. + * + * @param {Array} [array=[]] - The target array holding the color components. + * @param {number} [offset=0] - Index of the first element in the array. + * @return {Array} The color components. + */ + toArray(array = [], offset = 0) { + array[offset] = this.r; + array[offset + 1] = this.g; + array[offset + 2] = this.b; + return array; + } + /** + * Sets the components of this color from the given buffer attribute. + * + * @param {BufferAttribute} attribute - The buffer attribute holding color data. + * @param {number} index - The index into the attribute. + * @return {Color} A reference to this color. + */ + fromBufferAttribute(attribute, index) { + this.r = attribute.getX(index); + this.g = attribute.getY(index); + this.b = attribute.getZ(index); + return this; + } + /** + * This methods defines the serialization result of this class. Returns the color + * as a hexadecimal value. + * + * @return {number} The hexadecimal value. + */ + toJSON() { + return this.getHex(); + } + *[Symbol.iterator]() { + yield this.r; + yield this.g; + yield this.b; + } +} +const _color = /* @__PURE__ */ new Color(); +Color.NAMES = _colorKeywords; +let _materialId = 0; +let Material$1 = class Material extends EventDispatcher { + /** + * Constructs a new material. + */ + constructor() { + super(); + this.isMaterial = true; + Object.defineProperty(this, "id", { value: _materialId++ }); + this.uuid = generateUUID(); + this.name = ""; + this.type = "Material"; + this.blending = NormalBlending; + this.side = FrontSide; + this.vertexColors = false; + this.opacity = 1; + this.transparent = false; + this.alphaHash = false; + this.blendSrc = SrcAlphaFactor; + this.blendDst = OneMinusSrcAlphaFactor; + this.blendEquation = AddEquation; + this.blendSrcAlpha = null; + this.blendDstAlpha = null; + this.blendEquationAlpha = null; + this.blendColor = new Color(0, 0, 0); + this.blendAlpha = 0; + this.depthFunc = LessEqualDepth; + this.depthTest = true; + this.depthWrite = true; + this.stencilWriteMask = 255; + this.stencilFunc = AlwaysStencilFunc; + this.stencilRef = 0; + this.stencilFuncMask = 255; + this.stencilFail = KeepStencilOp; + this.stencilZFail = KeepStencilOp; + this.stencilZPass = KeepStencilOp; + this.stencilWrite = false; + this.clippingPlanes = null; + this.clipIntersection = false; + this.clipShadows = false; + this.shadowSide = null; + this.colorWrite = true; + this.precision = null; + this.polygonOffset = false; + this.polygonOffsetFactor = 0; + this.polygonOffsetUnits = 0; + this.dithering = false; + this.alphaToCoverage = false; + this.premultipliedAlpha = false; + this.forceSinglePass = false; + this.allowOverride = true; + this.visible = true; + this.toneMapped = true; + this.userData = {}; + this.version = 0; + this._alphaTest = 0; + } + /** + * Sets the alpha value to be used when running an alpha test. The material + * will not be rendered if the opacity is lower than this value. + * + * @type {number} + * @readonly + * @default 0 + */ + get alphaTest() { + return this._alphaTest; + } + set alphaTest(value) { + if (this._alphaTest > 0 !== value > 0) { + this.version++; + } + this._alphaTest = value; + } + /** + * An optional callback that is executed immediately before the material is used to render a 3D object. + * + * This method can only be used when rendering with {@link WebGLRenderer}. + * + * @param {WebGLRenderer} renderer - The renderer. + * @param {Scene} scene - The scene. + * @param {Camera} camera - The camera that is used to render the scene. + * @param {BufferGeometry} geometry - The 3D object's geometry. + * @param {Object3D} object - The 3D object. + * @param {Object} group - The geometry group data. + */ + onBeforeRender() { + } + /** + * An optional callback that is executed immediately before the shader + * program is compiled. This function is called with the shader source code + * as a parameter. Useful for the modification of built-in materials. + * + * This method can only be used when rendering with {@link WebGLRenderer}. The + * recommended approach when customizing materials is to use `WebGPURenderer` with the new + * Node Material system and [TSL](https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language). + * + * @param {{vertexShader:string,fragmentShader:string,uniforms:Object}} shaderobject - The object holds the uniforms and the vertex and fragment shader source. + * @param {WebGLRenderer} renderer - A reference to the renderer. + */ + onBeforeCompile() { + } + /** + * In case {@link Material#onBeforeCompile} is used, this callback can be used to identify + * values of settings used in `onBeforeCompile()`, so three.js can reuse a cached + * shader or recompile the shader for this material as needed. + * + * This method can only be used when rendering with {@link WebGLRenderer}. + * + * @return {string} The custom program cache key. + */ + customProgramCacheKey() { + return this.onBeforeCompile.toString(); + } + /** + * This method can be used to set default values from parameter objects. + * It is a generic implementation so it can be used with different types + * of materials. + * + * @param {Object} [values] - The material values to set. + */ + setValues(values) { + if (values === void 0) + return; + for (const key in values) { + const newValue = values[key]; + if (newValue === void 0) { + warn(`Material: parameter '${key}' has value of undefined.`); + continue; + } + const currentValue = this[key]; + if (currentValue === void 0) { + warn(`Material: '${key}' is not a property of THREE.${this.type}.`); + continue; + } + if (currentValue && currentValue.isColor) { + currentValue.set(newValue); + } else if (currentValue && currentValue.isVector3 && (newValue && newValue.isVector3)) { + currentValue.copy(newValue); + } else { + this[key] = newValue; + } + } + } + /** + * Serializes the material into JSON. + * + * @param {?(Object|string)} meta - An optional value holding meta information about the serialization. + * @return {Object} A JSON object representing the serialized material. + * @see {@link ObjectLoader#parse} + */ + toJSON(meta) { + const isRootObject = meta === void 0 || typeof meta === "string"; + if (isRootObject) { + meta = { + textures: {}, + images: {} + }; + } + const data = { + metadata: { + version: 4.7, + type: "Material", + generator: "Material.toJSON" + } + }; + data.uuid = this.uuid; + data.type = this.type; + if (this.name !== "") + data.name = this.name; + if (this.color && this.color.isColor) + data.color = this.color.getHex(); + if (this.roughness !== void 0) + data.roughness = this.roughness; + if (this.metalness !== void 0) + data.metalness = this.metalness; + if (this.sheen !== void 0) + data.sheen = this.sheen; + if (this.sheenColor && this.sheenColor.isColor) + data.sheenColor = this.sheenColor.getHex(); + if (this.sheenRoughness !== void 0) + data.sheenRoughness = this.sheenRoughness; + if (this.emissive && this.emissive.isColor) + data.emissive = this.emissive.getHex(); + if (this.emissiveIntensity !== void 0 && this.emissiveIntensity !== 1) + data.emissiveIntensity = this.emissiveIntensity; + if (this.specular && this.specular.isColor) + data.specular = this.specular.getHex(); + if (this.specularIntensity !== void 0) + data.specularIntensity = this.specularIntensity; + if (this.specularColor && this.specularColor.isColor) + data.specularColor = this.specularColor.getHex(); + if (this.shininess !== void 0) + data.shininess = this.shininess; + if (this.clearcoat !== void 0) + data.clearcoat = this.clearcoat; + if (this.clearcoatRoughness !== void 0) + data.clearcoatRoughness = this.clearcoatRoughness; + if (this.clearcoatMap && this.clearcoatMap.isTexture) { + data.clearcoatMap = this.clearcoatMap.toJSON(meta).uuid; + } + if (this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture) { + data.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(meta).uuid; + } + if (this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture) { + data.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(meta).uuid; + data.clearcoatNormalScale = this.clearcoatNormalScale.toArray(); + } + if (this.sheenColorMap && this.sheenColorMap.isTexture) { + data.sheenColorMap = this.sheenColorMap.toJSON(meta).uuid; + } + if (this.sheenRoughnessMap && this.sheenRoughnessMap.isTexture) { + data.sheenRoughnessMap = this.sheenRoughnessMap.toJSON(meta).uuid; + } + if (this.dispersion !== void 0) + data.dispersion = this.dispersion; + if (this.iridescence !== void 0) + data.iridescence = this.iridescence; + if (this.iridescenceIOR !== void 0) + data.iridescenceIOR = this.iridescenceIOR; + if (this.iridescenceThicknessRange !== void 0) + data.iridescenceThicknessRange = this.iridescenceThicknessRange; + if (this.iridescenceMap && this.iridescenceMap.isTexture) { + data.iridescenceMap = this.iridescenceMap.toJSON(meta).uuid; + } + if (this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture) { + data.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON(meta).uuid; + } + if (this.anisotropy !== void 0) + data.anisotropy = this.anisotropy; + if (this.anisotropyRotation !== void 0) + data.anisotropyRotation = this.anisotropyRotation; + if (this.anisotropyMap && this.anisotropyMap.isTexture) { + data.anisotropyMap = this.anisotropyMap.toJSON(meta).uuid; + } + if (this.map && this.map.isTexture) + data.map = this.map.toJSON(meta).uuid; + if (this.matcap && this.matcap.isTexture) + data.matcap = this.matcap.toJSON(meta).uuid; + if (this.alphaMap && this.alphaMap.isTexture) + data.alphaMap = this.alphaMap.toJSON(meta).uuid; + if (this.lightMap && this.lightMap.isTexture) { + data.lightMap = this.lightMap.toJSON(meta).uuid; + data.lightMapIntensity = this.lightMapIntensity; + } + if (this.aoMap && this.aoMap.isTexture) { + data.aoMap = this.aoMap.toJSON(meta).uuid; + data.aoMapIntensity = this.aoMapIntensity; + } + if (this.bumpMap && this.bumpMap.isTexture) { + data.bumpMap = this.bumpMap.toJSON(meta).uuid; + data.bumpScale = this.bumpScale; + } + if (this.normalMap && this.normalMap.isTexture) { + data.normalMap = this.normalMap.toJSON(meta).uuid; + data.normalMapType = this.normalMapType; + data.normalScale = this.normalScale.toArray(); + } + if (this.displacementMap && this.displacementMap.isTexture) { + data.displacementMap = this.displacementMap.toJSON(meta).uuid; + data.displacementScale = this.displacementScale; + data.displacementBias = this.displacementBias; + } + if (this.roughnessMap && this.roughnessMap.isTexture) + data.roughnessMap = this.roughnessMap.toJSON(meta).uuid; + if (this.metalnessMap && this.metalnessMap.isTexture) + data.metalnessMap = this.metalnessMap.toJSON(meta).uuid; + if (this.emissiveMap && this.emissiveMap.isTexture) + data.emissiveMap = this.emissiveMap.toJSON(meta).uuid; + if (this.specularMap && this.specularMap.isTexture) + data.specularMap = this.specularMap.toJSON(meta).uuid; + if (this.specularIntensityMap && this.specularIntensityMap.isTexture) + data.specularIntensityMap = this.specularIntensityMap.toJSON(meta).uuid; + if (this.specularColorMap && this.specularColorMap.isTexture) + data.specularColorMap = this.specularColorMap.toJSON(meta).uuid; + if (this.envMap && this.envMap.isTexture) { + data.envMap = this.envMap.toJSON(meta).uuid; + if (this.combine !== void 0) + data.combine = this.combine; + } + if (this.envMapRotation !== void 0) + data.envMapRotation = this.envMapRotation.toArray(); + if (this.envMapIntensity !== void 0) + data.envMapIntensity = this.envMapIntensity; + if (this.reflectivity !== void 0) + data.reflectivity = this.reflectivity; + if (this.refractionRatio !== void 0) + data.refractionRatio = this.refractionRatio; + if (this.gradientMap && this.gradientMap.isTexture) { + data.gradientMap = this.gradientMap.toJSON(meta).uuid; + } + if (this.transmission !== void 0) + data.transmission = this.transmission; + if (this.transmissionMap && this.transmissionMap.isTexture) + data.transmissionMap = this.transmissionMap.toJSON(meta).uuid; + if (this.thickness !== void 0) + data.thickness = this.thickness; + if (this.thicknessMap && this.thicknessMap.isTexture) + data.thicknessMap = this.thicknessMap.toJSON(meta).uuid; + if (this.attenuationDistance !== void 0 && this.attenuationDistance !== Infinity) + data.attenuationDistance = this.attenuationDistance; + if (this.attenuationColor !== void 0) + data.attenuationColor = this.attenuationColor.getHex(); + if (this.size !== void 0) + data.size = this.size; + if (this.shadowSide !== null) + data.shadowSide = this.shadowSide; + if (this.sizeAttenuation !== void 0) + data.sizeAttenuation = this.sizeAttenuation; + if (this.blending !== NormalBlending) + data.blending = this.blending; + if (this.side !== FrontSide) + data.side = this.side; + if (this.vertexColors === true) + data.vertexColors = true; + if (this.opacity < 1) + data.opacity = this.opacity; + if (this.transparent === true) + data.transparent = true; + if (this.blendSrc !== SrcAlphaFactor) + data.blendSrc = this.blendSrc; + if (this.blendDst !== OneMinusSrcAlphaFactor) + data.blendDst = this.blendDst; + if (this.blendEquation !== AddEquation) + data.blendEquation = this.blendEquation; + if (this.blendSrcAlpha !== null) + data.blendSrcAlpha = this.blendSrcAlpha; + if (this.blendDstAlpha !== null) + data.blendDstAlpha = this.blendDstAlpha; + if (this.blendEquationAlpha !== null) + data.blendEquationAlpha = this.blendEquationAlpha; + if (this.blendColor && this.blendColor.isColor) + data.blendColor = this.blendColor.getHex(); + if (this.blendAlpha !== 0) + data.blendAlpha = this.blendAlpha; + if (this.depthFunc !== LessEqualDepth) + data.depthFunc = this.depthFunc; + if (this.depthTest === false) + data.depthTest = this.depthTest; + if (this.depthWrite === false) + data.depthWrite = this.depthWrite; + if (this.colorWrite === false) + data.colorWrite = this.colorWrite; + if (this.stencilWriteMask !== 255) + data.stencilWriteMask = this.stencilWriteMask; + if (this.stencilFunc !== AlwaysStencilFunc) + data.stencilFunc = this.stencilFunc; + if (this.stencilRef !== 0) + data.stencilRef = this.stencilRef; + if (this.stencilFuncMask !== 255) + data.stencilFuncMask = this.stencilFuncMask; + if (this.stencilFail !== KeepStencilOp) + data.stencilFail = this.stencilFail; + if (this.stencilZFail !== KeepStencilOp) + data.stencilZFail = this.stencilZFail; + if (this.stencilZPass !== KeepStencilOp) + data.stencilZPass = this.stencilZPass; + if (this.stencilWrite === true) + data.stencilWrite = this.stencilWrite; + if (this.rotation !== void 0 && this.rotation !== 0) + data.rotation = this.rotation; + if (this.polygonOffset === true) + data.polygonOffset = true; + if (this.polygonOffsetFactor !== 0) + data.polygonOffsetFactor = this.polygonOffsetFactor; + if (this.polygonOffsetUnits !== 0) + data.polygonOffsetUnits = this.polygonOffsetUnits; + if (this.linewidth !== void 0 && this.linewidth !== 1) + data.linewidth = this.linewidth; + if (this.dashSize !== void 0) + data.dashSize = this.dashSize; + if (this.gapSize !== void 0) + data.gapSize = this.gapSize; + if (this.scale !== void 0) + data.scale = this.scale; + if (this.dithering === true) + data.dithering = true; + if (this.alphaTest > 0) + data.alphaTest = this.alphaTest; + if (this.alphaHash === true) + data.alphaHash = true; + if (this.alphaToCoverage === true) + data.alphaToCoverage = true; + if (this.premultipliedAlpha === true) + data.premultipliedAlpha = true; + if (this.forceSinglePass === true) + data.forceSinglePass = true; + if (this.allowOverride === false) + data.allowOverride = false; + if (this.wireframe === true) + data.wireframe = true; + if (this.wireframeLinewidth > 1) + data.wireframeLinewidth = this.wireframeLinewidth; + if (this.wireframeLinecap !== "round") + data.wireframeLinecap = this.wireframeLinecap; + if (this.wireframeLinejoin !== "round") + data.wireframeLinejoin = this.wireframeLinejoin; + if (this.flatShading === true) + data.flatShading = true; + if (this.visible === false) + data.visible = false; + if (this.toneMapped === false) + data.toneMapped = false; + if (this.fog === false) + data.fog = false; + if (Object.keys(this.userData).length > 0) + data.userData = this.userData; + function extractFromCache(cache) { + const values = []; + for (const key in cache) { + const data2 = cache[key]; + delete data2.metadata; + values.push(data2); + } + return values; + } + if (isRootObject) { + const textures = extractFromCache(meta.textures); + const images = extractFromCache(meta.images); + if (textures.length > 0) + data.textures = textures; + if (images.length > 0) + data.images = images; + } + return data; + } + /** + * Returns a new material with copied values from this instance. + * + * @return {Material} A clone of this instance. + */ + clone() { + return new this.constructor().copy(this); + } + /** + * Copies the values of the given material to this instance. + * + * @param {Material} source - The material to copy. + * @return {Material} A reference to this instance. + */ + copy(source) { + this.name = source.name; + this.blending = source.blending; + this.side = source.side; + this.vertexColors = source.vertexColors; + this.opacity = source.opacity; + this.transparent = source.transparent; + this.blendSrc = source.blendSrc; + this.blendDst = source.blendDst; + this.blendEquation = source.blendEquation; + this.blendSrcAlpha = source.blendSrcAlpha; + this.blendDstAlpha = source.blendDstAlpha; + this.blendEquationAlpha = source.blendEquationAlpha; + this.blendColor.copy(source.blendColor); + this.blendAlpha = source.blendAlpha; + this.depthFunc = source.depthFunc; + this.depthTest = source.depthTest; + this.depthWrite = source.depthWrite; + this.stencilWriteMask = source.stencilWriteMask; + this.stencilFunc = source.stencilFunc; + this.stencilRef = source.stencilRef; + this.stencilFuncMask = source.stencilFuncMask; + this.stencilFail = source.stencilFail; + this.stencilZFail = source.stencilZFail; + this.stencilZPass = source.stencilZPass; + this.stencilWrite = source.stencilWrite; + const srcPlanes = source.clippingPlanes; + let dstPlanes = null; + if (srcPlanes !== null) { + const n = srcPlanes.length; + dstPlanes = new Array(n); + for (let i = 0; i !== n; ++i) { + dstPlanes[i] = srcPlanes[i].clone(); + } + } + this.clippingPlanes = dstPlanes; + this.clipIntersection = source.clipIntersection; + this.clipShadows = source.clipShadows; + this.shadowSide = source.shadowSide; + this.colorWrite = source.colorWrite; + this.precision = source.precision; + this.polygonOffset = source.polygonOffset; + this.polygonOffsetFactor = source.polygonOffsetFactor; + this.polygonOffsetUnits = source.polygonOffsetUnits; + this.dithering = source.dithering; + this.alphaTest = source.alphaTest; + this.alphaHash = source.alphaHash; + this.alphaToCoverage = source.alphaToCoverage; + this.premultipliedAlpha = source.premultipliedAlpha; + this.forceSinglePass = source.forceSinglePass; + this.allowOverride = source.allowOverride; + this.visible = source.visible; + this.toneMapped = source.toneMapped; + this.userData = JSON.parse(JSON.stringify(source.userData)); + return this; + } + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + * + * @fires Material#dispose + */ + dispose() { + this.dispatchEvent({ type: "dispose" }); + } + /** + * Setting this property to `true` indicates the engine the material + * needs to be recompiled. + * + * @type {boolean} + * @default false + * @param {boolean} value + */ + set needsUpdate(value) { + if (value === true) + this.version++; + } +}; +class MeshBasicMaterial extends Material$1 { + /** + * Constructs a new mesh basic material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor(parameters) { + super(); + this.isMeshBasicMaterial = true; + this.type = "MeshBasicMaterial"; + this.color = new Color(16777215); + this.map = null; + this.lightMap = null; + this.lightMapIntensity = 1; + this.aoMap = null; + this.aoMapIntensity = 1; + this.specularMap = null; + this.alphaMap = null; + this.envMap = null; + this.envMapRotation = new Euler(); + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = "round"; + this.wireframeLinejoin = "round"; + this.fog = true; + this.setValues(parameters); + } + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + this.specularMap = source.specularMap; + this.alphaMap = source.alphaMap; + this.envMap = source.envMap; + this.envMapRotation.copy(source.envMapRotation); + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + this.fog = source.fog; + return this; + } +} +const _vector$9 = /* @__PURE__ */ new Vector3(); +const _vector2$1 = /* @__PURE__ */ new Vector2(); +let _id$2 = 0; +class BufferAttribute { + /** + * Constructs a new buffer attribute. + * + * @param {TypedArray} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor(array, itemSize, normalized = false) { + if (Array.isArray(array)) { + throw new TypeError("THREE.BufferAttribute: array should be a Typed Array."); + } + this.isBufferAttribute = true; + Object.defineProperty(this, "id", { value: _id$2++ }); + this.name = ""; + this.array = array; + this.itemSize = itemSize; + this.count = array !== void 0 ? array.length / itemSize : 0; + this.normalized = normalized; + this.usage = StaticDrawUsage; + this.updateRanges = []; + this.gpuType = FloatType; + this.version = 0; + } + /** + * A callback function that is executed after the renderer has transferred the attribute + * array data to the GPU. + */ + onUploadCallback() { + } + /** + * Flag to indicate that this attribute has changed and should be re-sent to + * the GPU. Set this to `true` when you modify the value of the array. + * + * @type {number} + * @default false + * @param {boolean} value + */ + set needsUpdate(value) { + if (value === true) + this.version++; + } + /** + * Sets the usage of this buffer attribute. + * + * @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set. + * @return {BufferAttribute} A reference to this buffer attribute. + */ + setUsage(value) { + this.usage = value; + return this; + } + /** + * Adds a range of data in the data array to be updated on the GPU. + * + * @param {number} start - Position at which to start update. + * @param {number} count - The number of components to update. + */ + addUpdateRange(start, count) { + this.updateRanges.push({ start, count }); + } + /** + * Clears the update ranges. + */ + clearUpdateRanges() { + this.updateRanges.length = 0; + } + /** + * Copies the values of the given buffer attribute to this instance. + * + * @param {BufferAttribute} source - The buffer attribute to copy. + * @return {BufferAttribute} A reference to this instance. + */ + copy(source) { + this.name = source.name; + this.array = new source.array.constructor(source.array); + this.itemSize = source.itemSize; + this.count = source.count; + this.normalized = source.normalized; + this.usage = source.usage; + this.gpuType = source.gpuType; + return this; + } + /** + * Copies a vector from the given buffer attribute to this one. The start + * and destination position in the attribute buffers are represented by the + * given indices. + * + * @param {number} index1 - The destination index into this buffer attribute. + * @param {BufferAttribute} attribute - The buffer attribute to copy from. + * @param {number} index2 - The source index into the given buffer attribute. + * @return {BufferAttribute} A reference to this instance. + */ + copyAt(index1, attribute, index2) { + index1 *= this.itemSize; + index2 *= attribute.itemSize; + for (let i = 0, l = this.itemSize; i < l; i++) { + this.array[index1 + i] = attribute.array[index2 + i]; + } + return this; + } + /** + * Copies the given array data into this buffer attribute. + * + * @param {(TypedArray|Array)} array - The array to copy. + * @return {BufferAttribute} A reference to this instance. + */ + copyArray(array) { + this.array.set(array); + return this; + } + /** + * Applies the given 3x3 matrix to the given attribute. Works with + * item size `2` and `3`. + * + * @param {Matrix3} m - The matrix to apply. + * @return {BufferAttribute} A reference to this instance. + */ + applyMatrix3(m) { + if (this.itemSize === 2) { + for (let i = 0, l = this.count; i < l; i++) { + _vector2$1.fromBufferAttribute(this, i); + _vector2$1.applyMatrix3(m); + this.setXY(i, _vector2$1.x, _vector2$1.y); + } + } else if (this.itemSize === 3) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.fromBufferAttribute(this, i); + _vector$9.applyMatrix3(m); + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + } + return this; + } + /** + * Applies the given 4x4 matrix to the given attribute. Only works with + * item size `3`. + * + * @param {Matrix4} m - The matrix to apply. + * @return {BufferAttribute} A reference to this instance. + */ + applyMatrix4(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.fromBufferAttribute(this, i); + _vector$9.applyMatrix4(m); + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + return this; + } + /** + * Applies the given 3x3 normal matrix to the given attribute. Only works with + * item size `3`. + * + * @param {Matrix3} m - The normal matrix to apply. + * @return {BufferAttribute} A reference to this instance. + */ + applyNormalMatrix(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.fromBufferAttribute(this, i); + _vector$9.applyNormalMatrix(m); + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + return this; + } + /** + * Applies the given 4x4 matrix to the given attribute. Only works with + * item size `3` and with direction vectors. + * + * @param {Matrix4} m - The matrix to apply. + * @return {BufferAttribute} A reference to this instance. + */ + transformDirection(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.fromBufferAttribute(this, i); + _vector$9.transformDirection(m); + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + return this; + } + /** + * Sets the given array data in the buffer attribute. + * + * @param {(TypedArray|Array)} value - The array data to set. + * @param {number} [offset=0] - The offset in this buffer attribute's array. + * @return {BufferAttribute} A reference to this instance. + */ + set(value, offset = 0) { + this.array.set(value, offset); + return this; + } + /** + * Returns the given component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} component - The component index. + * @return {number} The returned value. + */ + getComponent(index, component) { + let value = this.array[index * this.itemSize + component]; + if (this.normalized) + value = denormalize(value, this.array); + return value; + } + /** + * Sets the given value to the given component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} component - The component index. + * @param {number} value - The value to set. + * @return {BufferAttribute} A reference to this instance. + */ + setComponent(index, component, value) { + if (this.normalized) + value = normalize(value, this.array); + this.array[index * this.itemSize + component] = value; + return this; + } + /** + * Returns the x component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The x component. + */ + getX(index) { + let x = this.array[index * this.itemSize]; + if (this.normalized) + x = denormalize(x, this.array); + return x; + } + /** + * Sets the x component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value to set. + * @return {BufferAttribute} A reference to this instance. + */ + setX(index, x) { + if (this.normalized) + x = normalize(x, this.array); + this.array[index * this.itemSize] = x; + return this; + } + /** + * Returns the y component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The y component. + */ + getY(index) { + let y = this.array[index * this.itemSize + 1]; + if (this.normalized) + y = denormalize(y, this.array); + return y; + } + /** + * Sets the y component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} y - The value to set. + * @return {BufferAttribute} A reference to this instance. + */ + setY(index, y) { + if (this.normalized) + y = normalize(y, this.array); + this.array[index * this.itemSize + 1] = y; + return this; + } + /** + * Returns the z component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The z component. + */ + getZ(index) { + let z = this.array[index * this.itemSize + 2]; + if (this.normalized) + z = denormalize(z, this.array); + return z; + } + /** + * Sets the z component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} z - The value to set. + * @return {BufferAttribute} A reference to this instance. + */ + setZ(index, z) { + if (this.normalized) + z = normalize(z, this.array); + this.array[index * this.itemSize + 2] = z; + return this; + } + /** + * Returns the w component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @return {number} The w component. + */ + getW(index) { + let w = this.array[index * this.itemSize + 3]; + if (this.normalized) + w = denormalize(w, this.array); + return w; + } + /** + * Sets the w component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} w - The value to set. + * @return {BufferAttribute} A reference to this instance. + */ + setW(index, w) { + if (this.normalized) + w = normalize(w, this.array); + this.array[index * this.itemSize + 3] = w; + return this; + } + /** + * Sets the x and y component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value for the x component to set. + * @param {number} y - The value for the y component to set. + * @return {BufferAttribute} A reference to this instance. + */ + setXY(index, x, y) { + index *= this.itemSize; + if (this.normalized) { + x = normalize(x, this.array); + y = normalize(y, this.array); + } + this.array[index + 0] = x; + this.array[index + 1] = y; + return this; + } + /** + * Sets the x, y and z component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value for the x component to set. + * @param {number} y - The value for the y component to set. + * @param {number} z - The value for the z component to set. + * @return {BufferAttribute} A reference to this instance. + */ + setXYZ(index, x, y, z) { + index *= this.itemSize; + if (this.normalized) { + x = normalize(x, this.array); + y = normalize(y, this.array); + z = normalize(z, this.array); + } + this.array[index + 0] = x; + this.array[index + 1] = y; + this.array[index + 2] = z; + return this; + } + /** + * Sets the x, y, z and w component of the vector at the given index. + * + * @param {number} index - The index into the buffer attribute. + * @param {number} x - The value for the x component to set. + * @param {number} y - The value for the y component to set. + * @param {number} z - The value for the z component to set. + * @param {number} w - The value for the w component to set. + * @return {BufferAttribute} A reference to this instance. + */ + setXYZW(index, x, y, z, w) { + index *= this.itemSize; + if (this.normalized) { + x = normalize(x, this.array); + y = normalize(y, this.array); + z = normalize(z, this.array); + w = normalize(w, this.array); + } + this.array[index + 0] = x; + this.array[index + 1] = y; + this.array[index + 2] = z; + this.array[index + 3] = w; + return this; + } + /** + * Sets the given callback function that is executed after the Renderer has transferred + * the attribute array data to the GPU. Can be used to perform clean-up operations after + * the upload when attribute data are not needed anymore on the CPU side. + * + * @param {Function} callback - The `onUpload()` callback. + * @return {BufferAttribute} A reference to this instance. + */ + onUpload(callback) { + this.onUploadCallback = callback; + return this; + } + /** + * Returns a new buffer attribute with copied values from this instance. + * + * @return {BufferAttribute} A clone of this instance. + */ + clone() { + return new this.constructor(this.array, this.itemSize).copy(this); + } + /** + * Serializes the buffer attribute into JSON. + * + * @return {Object} A JSON object representing the serialized buffer attribute. + */ + toJSON() { + const data = { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: Array.from(this.array), + normalized: this.normalized + }; + if (this.name !== "") + data.name = this.name; + if (this.usage !== StaticDrawUsage) + data.usage = this.usage; + return data; + } +} +class Uint16BufferAttribute extends BufferAttribute { + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Uint16Array)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor(array, itemSize, normalized) { + super(new Uint16Array(array), itemSize, normalized); + } +} +class Uint32BufferAttribute extends BufferAttribute { + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Uint32Array)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor(array, itemSize, normalized) { + super(new Uint32Array(array), itemSize, normalized); + } +} +class Float32BufferAttribute extends BufferAttribute { + /** + * Constructs a new buffer attribute. + * + * @param {(Array|Float32Array)} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + */ + constructor(array, itemSize, normalized) { + super(new Float32Array(array), itemSize, normalized); + } +} +let _id$1 = 0; +const _m1 = /* @__PURE__ */ new Matrix4(); +const _obj = /* @__PURE__ */ new Object3D(); +const _offset = /* @__PURE__ */ new Vector3(); +const _box$2 = /* @__PURE__ */ new Box3(); +const _boxMorphTargets = /* @__PURE__ */ new Box3(); +const _vector$8 = /* @__PURE__ */ new Vector3(); +class BufferGeometry extends EventDispatcher { + /** + * Constructs a new geometry. + */ + constructor() { + super(); + this.isBufferGeometry = true; + Object.defineProperty(this, "id", { value: _id$1++ }); + this.uuid = generateUUID(); + this.name = ""; + this.type = "BufferGeometry"; + this.index = null; + this.indirect = null; + this.indirectOffset = 0; + this.attributes = {}; + this.morphAttributes = {}; + this.morphTargetsRelative = false; + this.groups = []; + this.boundingBox = null; + this.boundingSphere = null; + this.drawRange = { start: 0, count: Infinity }; + this.userData = {}; + } + /** + * Returns the index of this geometry. + * + * @return {?BufferAttribute} The index. Returns `null` if no index is defined. + */ + getIndex() { + return this.index; + } + /** + * Sets the given index to this geometry. + * + * @param {Array|BufferAttribute} index - The index to set. + * @return {BufferGeometry} A reference to this instance. + */ + setIndex(index) { + if (Array.isArray(index)) { + this.index = new (arrayNeedsUint32(index) ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1); + } else { + this.index = index; + } + return this; + } + /** + * Sets the given indirect attribute to this geometry. + * + * @param {BufferAttribute} indirect - The attribute holding indirect draw calls. + * @param {number|Array} [indirectOffset=0] - The offset, in bytes, into the indirect drawing buffer where the value data begins. If an array is provided, multiple indirect draw calls will be made for each offset. + * @return {BufferGeometry} A reference to this instance. + */ + setIndirect(indirect, indirectOffset = 0) { + this.indirect = indirect; + this.indirectOffset = indirectOffset; + return this; + } + /** + * Returns the indirect attribute of this geometry. + * + * @return {?BufferAttribute} The indirect attribute. Returns `null` if no indirect attribute is defined. + */ + getIndirect() { + return this.indirect; + } + /** + * Returns the buffer attribute for the given name. + * + * @param {string} name - The attribute name. + * @return {BufferAttribute|InterleavedBufferAttribute|undefined} The buffer attribute. + * Returns `undefined` if not attribute has been found. + */ + getAttribute(name) { + return this.attributes[name]; + } + /** + * Sets the given attribute for the given name. + * + * @param {string} name - The attribute name. + * @param {BufferAttribute|InterleavedBufferAttribute} attribute - The attribute to set. + * @return {BufferGeometry} A reference to this instance. + */ + setAttribute(name, attribute) { + this.attributes[name] = attribute; + return this; + } + /** + * Deletes the attribute for the given name. + * + * @param {string} name - The attribute name to delete. + * @return {BufferGeometry} A reference to this instance. + */ + deleteAttribute(name) { + delete this.attributes[name]; + return this; + } + /** + * Returns `true` if this geometry has an attribute for the given name. + * + * @param {string} name - The attribute name. + * @return {boolean} Whether this geometry has an attribute for the given name or not. + */ + hasAttribute(name) { + return this.attributes[name] !== void 0; + } + /** + * Adds a group to this geometry. + * + * @param {number} start - The first element in this draw call. That is the first + * vertex for non-indexed geometry, otherwise the first triangle index. + * @param {number} count - Specifies how many vertices (or indices) are part of this group. + * @param {number} [materialIndex=0] - The material array index to use. + */ + addGroup(start, count, materialIndex = 0) { + this.groups.push({ + start, + count, + materialIndex + }); + } + /** + * Clears all groups. + */ + clearGroups() { + this.groups = []; + } + /** + * Sets the draw range for this geometry. + * + * @param {number} start - The first vertex for non-indexed geometry, otherwise the first triangle index. + * @param {number} count - For non-indexed BufferGeometry, `count` is the number of vertices to render. + * For indexed BufferGeometry, `count` is the number of indices to render. + */ + setDrawRange(start, count) { + this.drawRange.start = start; + this.drawRange.count = count; + } + /** + * Applies the given 4x4 transformation matrix to the geometry. + * + * @param {Matrix4} matrix - The matrix to apply. + * @return {BufferGeometry} A reference to this instance. + */ + applyMatrix4(matrix) { + const position = this.attributes.position; + if (position !== void 0) { + position.applyMatrix4(matrix); + position.needsUpdate = true; + } + const normal = this.attributes.normal; + if (normal !== void 0) { + const normalMatrix = new Matrix3().getNormalMatrix(matrix); + normal.applyNormalMatrix(normalMatrix); + normal.needsUpdate = true; + } + const tangent = this.attributes.tangent; + if (tangent !== void 0) { + tangent.transformDirection(matrix); + tangent.needsUpdate = true; + } + if (this.boundingBox !== null) { + this.computeBoundingBox(); + } + if (this.boundingSphere !== null) { + this.computeBoundingSphere(); + } + return this; + } + /** + * Applies the rotation represented by the Quaternion to the geometry. + * + * @param {Quaternion} q - The Quaternion to apply. + * @return {BufferGeometry} A reference to this instance. + */ + applyQuaternion(q) { + _m1.makeRotationFromQuaternion(q); + this.applyMatrix4(_m1); + return this; + } + /** + * Rotates the geometry about the X axis. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#rotation} for typical + * real-time mesh rotation. + * + * @param {number} angle - The angle in radians. + * @return {BufferGeometry} A reference to this instance. + */ + rotateX(angle) { + _m1.makeRotationX(angle); + this.applyMatrix4(_m1); + return this; + } + /** + * Rotates the geometry about the Y axis. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#rotation} for typical + * real-time mesh rotation. + * + * @param {number} angle - The angle in radians. + * @return {BufferGeometry} A reference to this instance. + */ + rotateY(angle) { + _m1.makeRotationY(angle); + this.applyMatrix4(_m1); + return this; + } + /** + * Rotates the geometry about the Z axis. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#rotation} for typical + * real-time mesh rotation. + * + * @param {number} angle - The angle in radians. + * @return {BufferGeometry} A reference to this instance. + */ + rotateZ(angle) { + _m1.makeRotationZ(angle); + this.applyMatrix4(_m1); + return this; + } + /** + * Translates the geometry. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#position} for typical + * real-time mesh rotation. + * + * @param {number} x - The x offset. + * @param {number} y - The y offset. + * @param {number} z - The z offset. + * @return {BufferGeometry} A reference to this instance. + */ + translate(x, y, z) { + _m1.makeTranslation(x, y, z); + this.applyMatrix4(_m1); + return this; + } + /** + * Scales the geometry. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#scale} for typical + * real-time mesh rotation. + * + * @param {number} x - The x scale. + * @param {number} y - The y scale. + * @param {number} z - The z scale. + * @return {BufferGeometry} A reference to this instance. + */ + scale(x, y, z) { + _m1.makeScale(x, y, z); + this.applyMatrix4(_m1); + return this; + } + /** + * Rotates the geometry to face a point in 3D space. This is typically done as a one time + * operation, and not during a loop. Use {@link Object3D#lookAt} for typical + * real-time mesh rotation. + * + * @param {Vector3} vector - The target point. + * @return {BufferGeometry} A reference to this instance. + */ + lookAt(vector) { + _obj.lookAt(vector); + _obj.updateMatrix(); + this.applyMatrix4(_obj.matrix); + return this; + } + /** + * Center the geometry based on its bounding box. + * + * @return {BufferGeometry} A reference to this instance. + */ + center() { + this.computeBoundingBox(); + this.boundingBox.getCenter(_offset).negate(); + this.translate(_offset.x, _offset.y, _offset.z); + return this; + } + /** + * Defines a geometry by creating a `position` attribute based on the given array of points. The array + * can hold 2D or 3D vectors. When using two-dimensional data, the `z` coordinate for all vertices is + * set to `0`. + * + * If the method is used with an existing `position` attribute, the vertex data are overwritten with the + * data from the array. The length of the array must match the vertex count. + * + * @param {Array|Array} points - The points. + * @return {BufferGeometry} A reference to this instance. + */ + setFromPoints(points) { + const positionAttribute = this.getAttribute("position"); + if (positionAttribute === void 0) { + const position = []; + for (let i = 0, l = points.length; i < l; i++) { + const point = points[i]; + position.push(point.x, point.y, point.z || 0); + } + this.setAttribute("position", new Float32BufferAttribute(position, 3)); + } else { + const l = Math.min(points.length, positionAttribute.count); + for (let i = 0; i < l; i++) { + const point = points[i]; + positionAttribute.setXYZ(i, point.x, point.y, point.z || 0); + } + if (points.length > positionAttribute.count) { + warn("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."); + } + positionAttribute.needsUpdate = true; + } + return this; + } + /** + * Computes the bounding box of the geometry, and updates the `boundingBox` member. + * The bounding box is not computed by the engine; it must be computed by your app. + * You may need to recompute the bounding box if the geometry vertices are modified. + */ + computeBoundingBox() { + if (this.boundingBox === null) { + this.boundingBox = new Box3(); + } + const position = this.attributes.position; + const morphAttributesPosition = this.morphAttributes.position; + if (position && position.isGLBufferAttribute) { + error("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.", this); + this.boundingBox.set( + new Vector3(-Infinity, -Infinity, -Infinity), + new Vector3(Infinity, Infinity, Infinity) + ); + return; + } + if (position !== void 0) { + this.boundingBox.setFromBufferAttribute(position); + if (morphAttributesPosition) { + for (let i = 0, il = morphAttributesPosition.length; i < il; i++) { + const morphAttribute = morphAttributesPosition[i]; + _box$2.setFromBufferAttribute(morphAttribute); + if (this.morphTargetsRelative) { + _vector$8.addVectors(this.boundingBox.min, _box$2.min); + this.boundingBox.expandByPoint(_vector$8); + _vector$8.addVectors(this.boundingBox.max, _box$2.max); + this.boundingBox.expandByPoint(_vector$8); + } else { + this.boundingBox.expandByPoint(_box$2.min); + this.boundingBox.expandByPoint(_box$2.max); + } + } + } + } else { + this.boundingBox.makeEmpty(); + } + if (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) { + error('BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this); + } + } + /** + * Computes the bounding sphere of the geometry, and updates the `boundingSphere` member. + * The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling. + * You may need to recompute the bounding sphere if the geometry vertices are modified. + */ + computeBoundingSphere() { + if (this.boundingSphere === null) { + this.boundingSphere = new Sphere(); + } + const position = this.attributes.position; + const morphAttributesPosition = this.morphAttributes.position; + if (position && position.isGLBufferAttribute) { + error("BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.", this); + this.boundingSphere.set(new Vector3(), Infinity); + return; + } + if (position) { + const center = this.boundingSphere.center; + _box$2.setFromBufferAttribute(position); + if (morphAttributesPosition) { + for (let i = 0, il = morphAttributesPosition.length; i < il; i++) { + const morphAttribute = morphAttributesPosition[i]; + _boxMorphTargets.setFromBufferAttribute(morphAttribute); + if (this.morphTargetsRelative) { + _vector$8.addVectors(_box$2.min, _boxMorphTargets.min); + _box$2.expandByPoint(_vector$8); + _vector$8.addVectors(_box$2.max, _boxMorphTargets.max); + _box$2.expandByPoint(_vector$8); + } else { + _box$2.expandByPoint(_boxMorphTargets.min); + _box$2.expandByPoint(_boxMorphTargets.max); + } + } + } + _box$2.getCenter(center); + let maxRadiusSq = 0; + for (let i = 0, il = position.count; i < il; i++) { + _vector$8.fromBufferAttribute(position, i); + maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8)); + } + if (morphAttributesPosition) { + for (let i = 0, il = morphAttributesPosition.length; i < il; i++) { + const morphAttribute = morphAttributesPosition[i]; + const morphTargetsRelative = this.morphTargetsRelative; + for (let j = 0, jl = morphAttribute.count; j < jl; j++) { + _vector$8.fromBufferAttribute(morphAttribute, j); + if (morphTargetsRelative) { + _offset.fromBufferAttribute(position, j); + _vector$8.add(_offset); + } + maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8)); + } + } + } + this.boundingSphere.radius = Math.sqrt(maxRadiusSq); + if (isNaN(this.boundingSphere.radius)) { + error('BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this); + } + } + } + /** + * Calculates and adds a tangent attribute to this geometry. + * + * The computation is only supported for indexed geometries and if position, normal, and uv attributes + * are defined. When using a tangent space normal map, prefer the MikkTSpace algorithm provided by + * {@link BufferGeometryUtils#computeMikkTSpaceTangents} instead. + */ + computeTangents() { + const index = this.index; + const attributes = this.attributes; + if (index === null || attributes.position === void 0 || attributes.normal === void 0 || attributes.uv === void 0) { + error("BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)"); + return; + } + const positionAttribute = attributes.position; + const normalAttribute = attributes.normal; + const uvAttribute = attributes.uv; + if (this.hasAttribute("tangent") === false) { + this.setAttribute("tangent", new BufferAttribute(new Float32Array(4 * positionAttribute.count), 4)); + } + const tangentAttribute = this.getAttribute("tangent"); + const tan1 = [], tan2 = []; + for (let i = 0; i < positionAttribute.count; i++) { + tan1[i] = new Vector3(); + tan2[i] = new Vector3(); + } + const vA = new Vector3(), vB = new Vector3(), vC = new Vector3(), uvA = new Vector2(), uvB = new Vector2(), uvC = new Vector2(), sdir = new Vector3(), tdir = new Vector3(); + function handleTriangle(a, b, c) { + vA.fromBufferAttribute(positionAttribute, a); + vB.fromBufferAttribute(positionAttribute, b); + vC.fromBufferAttribute(positionAttribute, c); + uvA.fromBufferAttribute(uvAttribute, a); + uvB.fromBufferAttribute(uvAttribute, b); + uvC.fromBufferAttribute(uvAttribute, c); + vB.sub(vA); + vC.sub(vA); + uvB.sub(uvA); + uvC.sub(uvA); + const r = 1 / (uvB.x * uvC.y - uvC.x * uvB.y); + if (!isFinite(r)) + return; + sdir.copy(vB).multiplyScalar(uvC.y).addScaledVector(vC, -uvB.y).multiplyScalar(r); + tdir.copy(vC).multiplyScalar(uvB.x).addScaledVector(vB, -uvC.x).multiplyScalar(r); + tan1[a].add(sdir); + tan1[b].add(sdir); + tan1[c].add(sdir); + tan2[a].add(tdir); + tan2[b].add(tdir); + tan2[c].add(tdir); + } + let groups = this.groups; + if (groups.length === 0) { + groups = [{ + start: 0, + count: index.count + }]; + } + for (let i = 0, il = groups.length; i < il; ++i) { + const group = groups[i]; + const start = group.start; + const count = group.count; + for (let j = start, jl = start + count; j < jl; j += 3) { + handleTriangle( + index.getX(j + 0), + index.getX(j + 1), + index.getX(j + 2) + ); + } + } + const tmp = new Vector3(), tmp2 = new Vector3(); + const n = new Vector3(), n2 = new Vector3(); + function handleVertex(v) { + n.fromBufferAttribute(normalAttribute, v); + n2.copy(n); + const t = tan1[v]; + tmp.copy(t); + tmp.sub(n.multiplyScalar(n.dot(t))).normalize(); + tmp2.crossVectors(n2, t); + const test = tmp2.dot(tan2[v]); + const w = test < 0 ? -1 : 1; + tangentAttribute.setXYZW(v, tmp.x, tmp.y, tmp.z, w); + } + for (let i = 0, il = groups.length; i < il; ++i) { + const group = groups[i]; + const start = group.start; + const count = group.count; + for (let j = start, jl = start + count; j < jl; j += 3) { + handleVertex(index.getX(j + 0)); + handleVertex(index.getX(j + 1)); + handleVertex(index.getX(j + 2)); + } + } + } + /** + * Computes vertex normals for the given vertex data. For indexed geometries, the method sets + * each vertex normal to be the average of the face normals of the faces that share that vertex. + * For non-indexed geometries, vertices are not shared, and the method sets each vertex normal + * to be the same as the face normal. + */ + computeVertexNormals() { + const index = this.index; + const positionAttribute = this.getAttribute("position"); + if (positionAttribute !== void 0) { + let normalAttribute = this.getAttribute("normal"); + if (normalAttribute === void 0) { + normalAttribute = new BufferAttribute(new Float32Array(positionAttribute.count * 3), 3); + this.setAttribute("normal", normalAttribute); + } else { + for (let i = 0, il = normalAttribute.count; i < il; i++) { + normalAttribute.setXYZ(i, 0, 0, 0); + } + } + const pA = new Vector3(), pB = new Vector3(), pC = new Vector3(); + const nA = new Vector3(), nB = new Vector3(), nC = new Vector3(); + const cb = new Vector3(), ab = new Vector3(); + if (index) { + for (let i = 0, il = index.count; i < il; i += 3) { + const vA = index.getX(i + 0); + const vB = index.getX(i + 1); + const vC = index.getX(i + 2); + pA.fromBufferAttribute(positionAttribute, vA); + pB.fromBufferAttribute(positionAttribute, vB); + pC.fromBufferAttribute(positionAttribute, vC); + cb.subVectors(pC, pB); + ab.subVectors(pA, pB); + cb.cross(ab); + nA.fromBufferAttribute(normalAttribute, vA); + nB.fromBufferAttribute(normalAttribute, vB); + nC.fromBufferAttribute(normalAttribute, vC); + nA.add(cb); + nB.add(cb); + nC.add(cb); + normalAttribute.setXYZ(vA, nA.x, nA.y, nA.z); + normalAttribute.setXYZ(vB, nB.x, nB.y, nB.z); + normalAttribute.setXYZ(vC, nC.x, nC.y, nC.z); + } + } else { + for (let i = 0, il = positionAttribute.count; i < il; i += 3) { + pA.fromBufferAttribute(positionAttribute, i + 0); + pB.fromBufferAttribute(positionAttribute, i + 1); + pC.fromBufferAttribute(positionAttribute, i + 2); + cb.subVectors(pC, pB); + ab.subVectors(pA, pB); + cb.cross(ab); + normalAttribute.setXYZ(i + 0, cb.x, cb.y, cb.z); + normalAttribute.setXYZ(i + 1, cb.x, cb.y, cb.z); + normalAttribute.setXYZ(i + 2, cb.x, cb.y, cb.z); + } + } + this.normalizeNormals(); + normalAttribute.needsUpdate = true; + } + } + /** + * Ensures every normal vector in a geometry will have a magnitude of `1`. This will + * correct lighting on the geometry surfaces. + */ + normalizeNormals() { + const normals = this.attributes.normal; + for (let i = 0, il = normals.count; i < il; i++) { + _vector$8.fromBufferAttribute(normals, i); + _vector$8.normalize(); + normals.setXYZ(i, _vector$8.x, _vector$8.y, _vector$8.z); + } + } + /** + * Return a new non-index version of this indexed geometry. If the geometry + * is already non-indexed, the method is a NOOP. + * + * @return {BufferGeometry} The non-indexed version of this indexed geometry. + */ + toNonIndexed() { + function convertBufferAttribute(attribute, indices2) { + const array = attribute.array; + const itemSize = attribute.itemSize; + const normalized = attribute.normalized; + const array2 = new array.constructor(indices2.length * itemSize); + let index = 0, index2 = 0; + for (let i = 0, l = indices2.length; i < l; i++) { + if (attribute.isInterleavedBufferAttribute) { + index = indices2[i] * attribute.data.stride + attribute.offset; + } else { + index = indices2[i] * itemSize; + } + for (let j = 0; j < itemSize; j++) { + array2[index2++] = array[index++]; + } + } + return new BufferAttribute(array2, itemSize, normalized); + } + if (this.index === null) { + warn("BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."); + return this; + } + const geometry2 = new BufferGeometry(); + const indices = this.index.array; + const attributes = this.attributes; + for (const name in attributes) { + const attribute = attributes[name]; + const newAttribute = convertBufferAttribute(attribute, indices); + geometry2.setAttribute(name, newAttribute); + } + const morphAttributes = this.morphAttributes; + for (const name in morphAttributes) { + const morphArray = []; + const morphAttribute = morphAttributes[name]; + for (let i = 0, il = morphAttribute.length; i < il; i++) { + const attribute = morphAttribute[i]; + const newAttribute = convertBufferAttribute(attribute, indices); + morphArray.push(newAttribute); + } + geometry2.morphAttributes[name] = morphArray; + } + geometry2.morphTargetsRelative = this.morphTargetsRelative; + const groups = this.groups; + for (let i = 0, l = groups.length; i < l; i++) { + const group = groups[i]; + geometry2.addGroup(group.start, group.count, group.materialIndex); + } + return geometry2; + } + /** + * Serializes the geometry into JSON. + * + * @return {Object} A JSON object representing the serialized geometry. + */ + toJSON() { + const data = { + metadata: { + version: 4.7, + type: "BufferGeometry", + generator: "BufferGeometry.toJSON" + } + }; + data.uuid = this.uuid; + data.type = this.type; + if (this.name !== "") + data.name = this.name; + if (Object.keys(this.userData).length > 0) + data.userData = this.userData; + if (this.parameters !== void 0) { + const parameters = this.parameters; + for (const key in parameters) { + if (parameters[key] !== void 0) + data[key] = parameters[key]; + } + return data; + } + data.data = { attributes: {} }; + const index = this.index; + if (index !== null) { + data.data.index = { + type: index.array.constructor.name, + array: Array.prototype.slice.call(index.array) + }; + } + const attributes = this.attributes; + for (const key in attributes) { + const attribute = attributes[key]; + data.data.attributes[key] = attribute.toJSON(data.data); + } + const morphAttributes = {}; + let hasMorphAttributes = false; + for (const key in this.morphAttributes) { + const attributeArray = this.morphAttributes[key]; + const array = []; + for (let i = 0, il = attributeArray.length; i < il; i++) { + const attribute = attributeArray[i]; + array.push(attribute.toJSON(data.data)); + } + if (array.length > 0) { + morphAttributes[key] = array; + hasMorphAttributes = true; + } + } + if (hasMorphAttributes) { + data.data.morphAttributes = morphAttributes; + data.data.morphTargetsRelative = this.morphTargetsRelative; + } + const groups = this.groups; + if (groups.length > 0) { + data.data.groups = JSON.parse(JSON.stringify(groups)); + } + const boundingSphere = this.boundingSphere; + if (boundingSphere !== null) { + data.data.boundingSphere = boundingSphere.toJSON(); + } + return data; + } + /** + * Returns a new geometry with copied values from this instance. + * + * @return {BufferGeometry} A clone of this instance. + */ + clone() { + return new this.constructor().copy(this); + } + /** + * Copies the values of the given geometry to this instance. + * + * @param {BufferGeometry} source - The geometry to copy. + * @return {BufferGeometry} A reference to this instance. + */ + copy(source) { + this.index = null; + this.attributes = {}; + this.morphAttributes = {}; + this.groups = []; + this.boundingBox = null; + this.boundingSphere = null; + const data = {}; + this.name = source.name; + const index = source.index; + if (index !== null) { + this.setIndex(index.clone()); + } + const attributes = source.attributes; + for (const name in attributes) { + const attribute = attributes[name]; + this.setAttribute(name, attribute.clone(data)); + } + const morphAttributes = source.morphAttributes; + for (const name in morphAttributes) { + const array = []; + const morphAttribute = morphAttributes[name]; + for (let i = 0, l = morphAttribute.length; i < l; i++) { + array.push(morphAttribute[i].clone(data)); + } + this.morphAttributes[name] = array; + } + this.morphTargetsRelative = source.morphTargetsRelative; + const groups = source.groups; + for (let i = 0, l = groups.length; i < l; i++) { + const group = groups[i]; + this.addGroup(group.start, group.count, group.materialIndex); + } + const boundingBox2 = source.boundingBox; + if (boundingBox2 !== null) { + this.boundingBox = boundingBox2.clone(); + } + const boundingSphere = source.boundingSphere; + if (boundingSphere !== null) { + this.boundingSphere = boundingSphere.clone(); + } + this.drawRange.start = source.drawRange.start; + this.drawRange.count = source.drawRange.count; + this.userData = source.userData; + return this; + } + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + * + * @fires BufferGeometry#dispose + */ + dispose() { + this.dispatchEvent({ type: "dispose" }); + } +} +const _inverseMatrix$3 = /* @__PURE__ */ new Matrix4(); +const _ray$3 = /* @__PURE__ */ new Ray(); +const _sphere$6 = /* @__PURE__ */ new Sphere(); +const _sphereHitAt = /* @__PURE__ */ new Vector3(); +const _vA$1 = /* @__PURE__ */ new Vector3(); +const _vB$1 = /* @__PURE__ */ new Vector3(); +const _vC$1 = /* @__PURE__ */ new Vector3(); +const _tempA = /* @__PURE__ */ new Vector3(); +const _morphA = /* @__PURE__ */ new Vector3(); +const _intersectionPoint$1 = /* @__PURE__ */ new Vector3(); +const _intersectionPointWorld = /* @__PURE__ */ new Vector3(); +class Mesh extends Object3D { + /** + * Constructs a new mesh. + * + * @param {BufferGeometry} [geometry] - The mesh geometry. + * @param {Material|Array} [material] - The mesh material. + */ + constructor(geometry = new BufferGeometry(), material = new MeshBasicMaterial()) { + super(); + this.isMesh = true; + this.type = "Mesh"; + this.geometry = geometry; + this.material = material; + this.morphTargetDictionary = void 0; + this.morphTargetInfluences = void 0; + this.count = 1; + this.updateMorphTargets(); + } + copy(source, recursive) { + super.copy(source, recursive); + if (source.morphTargetInfluences !== void 0) { + this.morphTargetInfluences = source.morphTargetInfluences.slice(); + } + if (source.morphTargetDictionary !== void 0) { + this.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary); + } + this.material = Array.isArray(source.material) ? source.material.slice() : source.material; + this.geometry = source.geometry; + return this; + } + /** + * Sets the values of {@link Mesh#morphTargetDictionary} and {@link Mesh#morphTargetInfluences} + * to make sure existing morph targets can influence this 3D object. + */ + updateMorphTargets() { + const geometry = this.geometry; + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys(morphAttributes); + if (keys.length > 0) { + const morphAttribute = morphAttributes[keys[0]]; + if (morphAttribute !== void 0) { + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + for (let m = 0, ml = morphAttribute.length; m < ml; m++) { + const name = morphAttribute[m].name || String(m); + this.morphTargetInfluences.push(0); + this.morphTargetDictionary[name] = m; + } + } + } + } + /** + * Returns the local-space position of the vertex at the given index, taking into + * account the current animation state of both morph targets and skinning. + * + * @param {number} index - The vertex index. + * @param {Vector3} target - The target object that is used to store the method's result. + * @return {Vector3} The vertex position in local space. + */ + getVertexPosition(index, target) { + const geometry = this.geometry; + const position = geometry.attributes.position; + const morphPosition = geometry.morphAttributes.position; + const morphTargetsRelative = geometry.morphTargetsRelative; + target.fromBufferAttribute(position, index); + const morphInfluences = this.morphTargetInfluences; + if (morphPosition && morphInfluences) { + _morphA.set(0, 0, 0); + for (let i = 0, il = morphPosition.length; i < il; i++) { + const influence = morphInfluences[i]; + const morphAttribute = morphPosition[i]; + if (influence === 0) + continue; + _tempA.fromBufferAttribute(morphAttribute, index); + if (morphTargetsRelative) { + _morphA.addScaledVector(_tempA, influence); + } else { + _morphA.addScaledVector(_tempA.sub(target), influence); + } + } + target.add(_morphA); + } + return target; + } + /** + * Computes intersection points between a casted ray and this line. + * + * @param {Raycaster} raycaster - The raycaster. + * @param {Array} intersects - The target array that holds the intersection points. + */ + raycast(raycaster, intersects2) { + const geometry = this.geometry; + const material = this.material; + const matrixWorld = this.matrixWorld; + if (material === void 0) + return; + if (geometry.boundingSphere === null) + geometry.computeBoundingSphere(); + _sphere$6.copy(geometry.boundingSphere); + _sphere$6.applyMatrix4(matrixWorld); + _ray$3.copy(raycaster.ray).recast(raycaster.near); + if (_sphere$6.containsPoint(_ray$3.origin) === false) { + if (_ray$3.intersectSphere(_sphere$6, _sphereHitAt) === null) + return; + if (_ray$3.origin.distanceToSquared(_sphereHitAt) > (raycaster.far - raycaster.near) ** 2) + return; + } + _inverseMatrix$3.copy(matrixWorld).invert(); + _ray$3.copy(raycaster.ray).applyMatrix4(_inverseMatrix$3); + if (geometry.boundingBox !== null) { + if (_ray$3.intersectsBox(geometry.boundingBox) === false) + return; + } + this._computeIntersections(raycaster, intersects2, _ray$3); + } + _computeIntersections(raycaster, intersects2, rayLocalSpace) { + let intersection; + const geometry = this.geometry; + const material = this.material; + const index = geometry.index; + const position = geometry.attributes.position; + const uv = geometry.attributes.uv; + const uv1 = geometry.attributes.uv1; + const normal = geometry.attributes.normal; + const groups = geometry.groups; + const drawRange = geometry.drawRange; + if (index !== null) { + if (Array.isArray(material)) { + for (let i = 0, il = groups.length; i < il; i++) { + const group = groups[i]; + const groupMaterial = material[group.materialIndex]; + const start = Math.max(group.start, drawRange.start); + const end = Math.min(index.count, Math.min(group.start + group.count, drawRange.start + drawRange.count)); + for (let j = start, jl = end; j < jl; j += 3) { + const a = index.getX(j); + const b = index.getX(j + 1); + const c = index.getX(j + 2); + intersection = checkGeometryIntersection(this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c); + if (intersection) { + intersection.faceIndex = Math.floor(j / 3); + intersection.face.materialIndex = group.materialIndex; + intersects2.push(intersection); + } + } + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(index.count, drawRange.start + drawRange.count); + for (let i = start, il = end; i < il; i += 3) { + const a = index.getX(i); + const b = index.getX(i + 1); + const c = index.getX(i + 2); + intersection = checkGeometryIntersection(this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c); + if (intersection) { + intersection.faceIndex = Math.floor(i / 3); + intersects2.push(intersection); + } + } + } + } else if (position !== void 0) { + if (Array.isArray(material)) { + for (let i = 0, il = groups.length; i < il; i++) { + const group = groups[i]; + const groupMaterial = material[group.materialIndex]; + const start = Math.max(group.start, drawRange.start); + const end = Math.min(position.count, Math.min(group.start + group.count, drawRange.start + drawRange.count)); + for (let j = start, jl = end; j < jl; j += 3) { + const a = j; + const b = j + 1; + const c = j + 2; + intersection = checkGeometryIntersection(this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c); + if (intersection) { + intersection.faceIndex = Math.floor(j / 3); + intersection.face.materialIndex = group.materialIndex; + intersects2.push(intersection); + } + } + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(position.count, drawRange.start + drawRange.count); + for (let i = start, il = end; i < il; i += 3) { + const a = i; + const b = i + 1; + const c = i + 2; + intersection = checkGeometryIntersection(this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c); + if (intersection) { + intersection.faceIndex = Math.floor(i / 3); + intersects2.push(intersection); + } + } + } + } + } +} +function checkIntersection$1(object, material, raycaster, ray, pA, pB, pC, point) { + let intersect; + if (material.side === BackSide) { + intersect = ray.intersectTriangle(pC, pB, pA, true, point); + } else { + intersect = ray.intersectTriangle(pA, pB, pC, material.side === FrontSide, point); + } + if (intersect === null) + return null; + _intersectionPointWorld.copy(point); + _intersectionPointWorld.applyMatrix4(object.matrixWorld); + const distance = raycaster.ray.origin.distanceTo(_intersectionPointWorld); + if (distance < raycaster.near || distance > raycaster.far) + return null; + return { + distance, + point: _intersectionPointWorld.clone(), + object + }; +} +function checkGeometryIntersection(object, material, raycaster, ray, uv, uv1, normal, a, b, c) { + object.getVertexPosition(a, _vA$1); + object.getVertexPosition(b, _vB$1); + object.getVertexPosition(c, _vC$1); + const intersection = checkIntersection$1(object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint$1); + if (intersection) { + const barycoord = new Vector3(); + Triangle.getBarycoord(_intersectionPoint$1, _vA$1, _vB$1, _vC$1, barycoord); + if (uv) { + intersection.uv = Triangle.getInterpolatedAttribute(uv, a, b, c, barycoord, new Vector2()); + } + if (uv1) { + intersection.uv1 = Triangle.getInterpolatedAttribute(uv1, a, b, c, barycoord, new Vector2()); + } + if (normal) { + intersection.normal = Triangle.getInterpolatedAttribute(normal, a, b, c, barycoord, new Vector3()); + if (intersection.normal.dot(ray.direction) > 0) { + intersection.normal.multiplyScalar(-1); + } + } + const face = { + a, + b, + c, + normal: new Vector3(), + materialIndex: 0 + }; + Triangle.getNormal(_vA$1, _vB$1, _vC$1, face.normal); + intersection.face = face; + intersection.barycoord = barycoord; + } + return intersection; +} +class DataTexture extends Texture { + /** + * Constructs a new data texture. + * + * @param {?TypedArray} [data=null] - The buffer data. + * @param {number} [width=1] - The width of the texture. + * @param {number} [height=1] - The height of the texture. + * @param {number} [format=RGBAFormat] - The texture format. + * @param {number} [type=UnsignedByteType] - The texture type. + * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping. + * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value. + * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value. + * @param {number} [magFilter=NearestFilter] - The mag filter value. + * @param {number} [minFilter=NearestFilter] - The min filter value. + * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value. + * @param {string} [colorSpace=NoColorSpace] - The color space. + */ + constructor(data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace) { + super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace); + this.isDataTexture = true; + this.image = { data, width, height }; + this.generateMipmaps = false; + this.flipY = false; + this.unpackAlignment = 1; + } +} +class InstancedBufferAttribute extends BufferAttribute { + /** + * Constructs a new instanced buffer attribute. + * + * @param {TypedArray} array - The array holding the attribute data. + * @param {number} itemSize - The item size. + * @param {boolean} [normalized=false] - Whether the data are normalized or not. + * @param {number} [meshPerAttribute=1] - How often a value of this buffer attribute should be repeated. + */ + constructor(array, itemSize, normalized, meshPerAttribute = 1) { + super(array, itemSize, normalized); + this.isInstancedBufferAttribute = true; + this.meshPerAttribute = meshPerAttribute; + } + copy(source) { + super.copy(source); + this.meshPerAttribute = source.meshPerAttribute; + return this; + } + toJSON() { + const data = super.toJSON(); + data.meshPerAttribute = this.meshPerAttribute; + data.isInstancedBufferAttribute = true; + return data; + } +} +const _instanceLocalMatrix = /* @__PURE__ */ new Matrix4(); +const _instanceWorldMatrix = /* @__PURE__ */ new Matrix4(); +const _instanceIntersects = []; +const _box3 = /* @__PURE__ */ new Box3(); +const _identity = /* @__PURE__ */ new Matrix4(); +const _mesh$1 = /* @__PURE__ */ new Mesh(); +const _sphere$4 = /* @__PURE__ */ new Sphere(); +class InstancedMesh extends Mesh { + /** + * Constructs a new instanced mesh. + * + * @param {BufferGeometry} [geometry] - The mesh geometry. + * @param {Material|Array} [material] - The mesh material. + * @param {number} count - The number of instances. + */ + constructor(geometry, material, count) { + super(geometry, material); + this.isInstancedMesh = true; + this.instanceMatrix = new InstancedBufferAttribute(new Float32Array(count * 16), 16); + this.instanceColor = null; + this.morphTexture = null; + this.count = count; + this.boundingBox = null; + this.boundingSphere = null; + for (let i = 0; i < count; i++) { + this.setMatrixAt(i, _identity); + } + } + /** + * Computes the bounding box of the instanced mesh, and updates {@link InstancedMesh#boundingBox}. + * The bounding box is not automatically computed by the engine; this method must be called by your app. + * You may need to recompute the bounding box if an instance is transformed via {@link InstancedMesh#setMatrixAt}. + */ + computeBoundingBox() { + const geometry = this.geometry; + const count = this.count; + if (this.boundingBox === null) { + this.boundingBox = new Box3(); + } + if (geometry.boundingBox === null) { + geometry.computeBoundingBox(); + } + this.boundingBox.makeEmpty(); + for (let i = 0; i < count; i++) { + this.getMatrixAt(i, _instanceLocalMatrix); + _box3.copy(geometry.boundingBox).applyMatrix4(_instanceLocalMatrix); + this.boundingBox.union(_box3); + } + } + /** + * Computes the bounding sphere of the instanced mesh, and updates {@link InstancedMesh#boundingSphere} + * The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling. + * You may need to recompute the bounding sphere if an instance is transformed via {@link InstancedMesh#setMatrixAt}. + */ + computeBoundingSphere() { + const geometry = this.geometry; + const count = this.count; + if (this.boundingSphere === null) { + this.boundingSphere = new Sphere(); + } + if (geometry.boundingSphere === null) { + geometry.computeBoundingSphere(); + } + this.boundingSphere.makeEmpty(); + for (let i = 0; i < count; i++) { + this.getMatrixAt(i, _instanceLocalMatrix); + _sphere$4.copy(geometry.boundingSphere).applyMatrix4(_instanceLocalMatrix); + this.boundingSphere.union(_sphere$4); + } + } + copy(source, recursive) { + super.copy(source, recursive); + this.instanceMatrix.copy(source.instanceMatrix); + if (source.morphTexture !== null) + this.morphTexture = source.morphTexture.clone(); + if (source.instanceColor !== null) + this.instanceColor = source.instanceColor.clone(); + this.count = source.count; + if (source.boundingBox !== null) + this.boundingBox = source.boundingBox.clone(); + if (source.boundingSphere !== null) + this.boundingSphere = source.boundingSphere.clone(); + return this; + } + /** + * Gets the color of the defined instance. + * + * @param {number} index - The instance index. + * @param {Color} color - The target object that is used to store the method's result. + */ + getColorAt(index, color) { + color.fromArray(this.instanceColor.array, index * 3); + } + /** + * Gets the local transformation matrix of the defined instance. + * + * @param {number} index - The instance index. + * @param {Matrix4} matrix - The target object that is used to store the method's result. + */ + getMatrixAt(index, matrix) { + matrix.fromArray(this.instanceMatrix.array, index * 16); + } + /** + * Gets the morph target weights of the defined instance. + * + * @param {number} index - The instance index. + * @param {Mesh} object - The target object that is used to store the method's result. + */ + getMorphAt(index, object) { + const objectInfluences = object.morphTargetInfluences; + const array = this.morphTexture.source.data.data; + const len = objectInfluences.length + 1; + const dataIndex = index * len + 1; + for (let i = 0; i < objectInfluences.length; i++) { + objectInfluences[i] = array[dataIndex + i]; + } + } + raycast(raycaster, intersects2) { + const matrixWorld = this.matrixWorld; + const raycastTimes = this.count; + _mesh$1.geometry = this.geometry; + _mesh$1.material = this.material; + if (_mesh$1.material === void 0) + return; + if (this.boundingSphere === null) + this.computeBoundingSphere(); + _sphere$4.copy(this.boundingSphere); + _sphere$4.applyMatrix4(matrixWorld); + if (raycaster.ray.intersectsSphere(_sphere$4) === false) + return; + for (let instanceId = 0; instanceId < raycastTimes; instanceId++) { + this.getMatrixAt(instanceId, _instanceLocalMatrix); + _instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix); + _mesh$1.matrixWorld = _instanceWorldMatrix; + _mesh$1.raycast(raycaster, _instanceIntersects); + for (let i = 0, l = _instanceIntersects.length; i < l; i++) { + const intersect = _instanceIntersects[i]; + intersect.instanceId = instanceId; + intersect.object = this; + intersects2.push(intersect); + } + _instanceIntersects.length = 0; + } + } + /** + * Sets the given color to the defined instance. Make sure you set the `needsUpdate` flag of + * {@link InstancedMesh#instanceColor} to `true` after updating all the colors. + * + * @param {number} index - The instance index. + * @param {Color} color - The instance color. + */ + setColorAt(index, color) { + if (this.instanceColor === null) { + this.instanceColor = new InstancedBufferAttribute(new Float32Array(this.instanceMatrix.count * 3).fill(1), 3); + } + color.toArray(this.instanceColor.array, index * 3); + } + /** + * Sets the given local transformation matrix to the defined instance. Make sure you set the `needsUpdate` flag of + * {@link InstancedMesh#instanceMatrix} to `true` after updating all the colors. + * + * @param {number} index - The instance index. + * @param {Matrix4} matrix - The local transformation. + */ + setMatrixAt(index, matrix) { + matrix.toArray(this.instanceMatrix.array, index * 16); + } + /** + * Sets the morph target weights to the defined instance. Make sure you set the `needsUpdate` flag of + * {@link InstancedMesh#morphTexture} to `true` after updating all the influences. + * + * @param {number} index - The instance index. + * @param {Mesh} object - A mesh which `morphTargetInfluences` property containing the morph target weights + * of a single instance. + */ + setMorphAt(index, object) { + const objectInfluences = object.morphTargetInfluences; + const len = objectInfluences.length + 1; + if (this.morphTexture === null) { + this.morphTexture = new DataTexture(new Float32Array(len * this.count), len, this.count, RedFormat, FloatType); + } + const array = this.morphTexture.source.data.data; + let morphInfluencesSum = 0; + for (let i = 0; i < objectInfluences.length; i++) { + morphInfluencesSum += objectInfluences[i]; + } + const morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum; + const dataIndex = len * index; + array[dataIndex] = morphBaseInfluence; + array.set(objectInfluences, dataIndex + 1); + } + updateMorphTargets() { + } + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + this.dispatchEvent({ type: "dispose" }); + if (this.morphTexture !== null) { + this.morphTexture.dispose(); + this.morphTexture = null; + } + } +} +const _vector1 = /* @__PURE__ */ new Vector3(); +const _vector2 = /* @__PURE__ */ new Vector3(); +const _normalMatrix = /* @__PURE__ */ new Matrix3(); +class Plane { + /** + * Constructs a new plane. + * + * @param {Vector3} [normal=(1,0,0)] - A unit length vector defining the normal of the plane. + * @param {number} [constant=0] - The signed distance from the origin to the plane. + */ + constructor(normal = new Vector3(1, 0, 0), constant = 0) { + this.isPlane = true; + this.normal = normal; + this.constant = constant; + } + /** + * Sets the plane components by copying the given values. + * + * @param {Vector3} normal - The normal. + * @param {number} constant - The constant. + * @return {Plane} A reference to this plane. + */ + set(normal, constant) { + this.normal.copy(normal); + this.constant = constant; + return this; + } + /** + * Sets the plane components by defining `x`, `y`, `z` as the + * plane normal and `w` as the constant. + * + * @param {number} x - The value for the normal's x component. + * @param {number} y - The value for the normal's y component. + * @param {number} z - The value for the normal's z component. + * @param {number} w - The constant value. + * @return {Plane} A reference to this plane. + */ + setComponents(x, y, z, w) { + this.normal.set(x, y, z); + this.constant = w; + return this; + } + /** + * Sets the plane from the given normal and coplanar point (that is a point + * that lies onto the plane). + * + * @param {Vector3} normal - The normal. + * @param {Vector3} point - A coplanar point. + * @return {Plane} A reference to this plane. + */ + setFromNormalAndCoplanarPoint(normal, point) { + this.normal.copy(normal); + this.constant = -point.dot(this.normal); + return this; + } + /** + * Sets the plane from three coplanar points. The winding order is + * assumed to be counter-clockwise, and determines the direction of + * the plane normal. + * + * @param {Vector3} a - The first coplanar point. + * @param {Vector3} b - The second coplanar point. + * @param {Vector3} c - The third coplanar point. + * @return {Plane} A reference to this plane. + */ + setFromCoplanarPoints(a, b, c) { + const normal = _vector1.subVectors(c, b).cross(_vector2.subVectors(a, b)).normalize(); + this.setFromNormalAndCoplanarPoint(normal, a); + return this; + } + /** + * Copies the values of the given plane to this instance. + * + * @param {Plane} plane - The plane to copy. + * @return {Plane} A reference to this plane. + */ + copy(plane) { + this.normal.copy(plane.normal); + this.constant = plane.constant; + return this; + } + /** + * Normalizes the plane normal and adjusts the constant accordingly. + * + * @return {Plane} A reference to this plane. + */ + normalize() { + const inverseNormalLength = 1 / this.normal.length(); + this.normal.multiplyScalar(inverseNormalLength); + this.constant *= inverseNormalLength; + return this; + } + /** + * Negates both the plane normal and the constant. + * + * @return {Plane} A reference to this plane. + */ + negate() { + this.constant *= -1; + this.normal.negate(); + return this; + } + /** + * Returns the signed distance from the given point to this plane. + * + * @param {Vector3} point - The point to compute the distance for. + * @return {number} The signed distance. + */ + distanceToPoint(point) { + return this.normal.dot(point) + this.constant; + } + /** + * Returns the signed distance from the given sphere to this plane. + * + * @param {Sphere} sphere - The sphere to compute the distance for. + * @return {number} The signed distance. + */ + distanceToSphere(sphere) { + return this.distanceToPoint(sphere.center) - sphere.radius; + } + /** + * Projects a the given point onto the plane. + * + * @param {Vector3} point - The point to project. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The projected point on the plane. + */ + projectPoint(point, target) { + return target.copy(point).addScaledVector(this.normal, -this.distanceToPoint(point)); + } + /** + * Returns the intersection point of the passed line and the plane. Returns + * `null` if the line does not intersect. Returns the line's starting point if + * the line is coplanar with the plane. + * + * @param {Line3} line - The line to compute the intersection for. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {?Vector3} The intersection point. + */ + intersectLine(line, target) { + const direction = line.delta(_vector1); + const denominator = this.normal.dot(direction); + if (denominator === 0) { + if (this.distanceToPoint(line.start) === 0) { + return target.copy(line.start); + } + return null; + } + const t = -(line.start.dot(this.normal) + this.constant) / denominator; + if (t < 0 || t > 1) { + return null; + } + return target.copy(line.start).addScaledVector(direction, t); + } + /** + * Returns `true` if the given line segment intersects with (passes through) the plane. + * + * @param {Line3} line - The line to test. + * @return {boolean} Whether the given line segment intersects with the plane or not. + */ + intersectsLine(line) { + const startSign = this.distanceToPoint(line.start); + const endSign = this.distanceToPoint(line.end); + return startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0; + } + /** + * Returns `true` if the given bounding box intersects with the plane. + * + * @param {Box3} box - The bounding box to test. + * @return {boolean} Whether the given bounding box intersects with the plane or not. + */ + intersectsBox(box) { + return box.intersectsPlane(this); + } + /** + * Returns `true` if the given bounding sphere intersects with the plane. + * + * @param {Sphere} sphere - The bounding sphere to test. + * @return {boolean} Whether the given bounding sphere intersects with the plane or not. + */ + intersectsSphere(sphere) { + return sphere.intersectsPlane(this); + } + /** + * Returns a coplanar vector to the plane, by calculating the + * projection of the normal at the origin onto the plane. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The coplanar point. + */ + coplanarPoint(target) { + return target.copy(this.normal).multiplyScalar(-this.constant); + } + /** + * Apply a 4x4 matrix to the plane. The matrix must be an affine, homogeneous transform. + * + * The optional normal matrix can be pre-computed like so: + * ```js + * const optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix ); + * ``` + * + * @param {Matrix4} matrix - The transformation matrix. + * @param {Matrix4} [optionalNormalMatrix] - A pre-computed normal matrix. + * @return {Plane} A reference to this plane. + */ + applyMatrix4(matrix, optionalNormalMatrix) { + const normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix(matrix); + const referencePoint = this.coplanarPoint(_vector1).applyMatrix4(matrix); + const normal = this.normal.applyMatrix3(normalMatrix).normalize(); + this.constant = -referencePoint.dot(normal); + return this; + } + /** + * Translates the plane by the distance defined by the given offset vector. + * Note that this only affects the plane constant and will not affect the normal vector. + * + * @param {Vector3} offset - The offset vector. + * @return {Plane} A reference to this plane. + */ + translate(offset) { + this.constant -= offset.dot(this.normal); + return this; + } + /** + * Returns `true` if this plane is equal with the given one. + * + * @param {Plane} plane - The plane to test for equality. + * @return {boolean} Whether this plane is equal with the given one. + */ + equals(plane) { + return plane.normal.equals(this.normal) && plane.constant === this.constant; + } + /** + * Returns a new plane with copied values from this instance. + * + * @return {Plane} A clone of this instance. + */ + clone() { + return new this.constructor().copy(this); + } +} +const _sphere$3 = /* @__PURE__ */ new Sphere(); +const _defaultSpriteCenter = /* @__PURE__ */ new Vector2(0.5, 0.5); +const _vector$6 = /* @__PURE__ */ new Vector3(); +class Frustum { + /** + * Constructs a new frustum. + * + * @param {Plane} [p0] - The first plane that encloses the frustum. + * @param {Plane} [p1] - The second plane that encloses the frustum. + * @param {Plane} [p2] - The third plane that encloses the frustum. + * @param {Plane} [p3] - The fourth plane that encloses the frustum. + * @param {Plane} [p4] - The fifth plane that encloses the frustum. + * @param {Plane} [p5] - The sixth plane that encloses the frustum. + */ + constructor(p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane()) { + this.planes = [p0, p1, p2, p3, p4, p5]; + } + /** + * Sets the frustum planes by copying the given planes. + * + * @param {Plane} [p0] - The first plane that encloses the frustum. + * @param {Plane} [p1] - The second plane that encloses the frustum. + * @param {Plane} [p2] - The third plane that encloses the frustum. + * @param {Plane} [p3] - The fourth plane that encloses the frustum. + * @param {Plane} [p4] - The fifth plane that encloses the frustum. + * @param {Plane} [p5] - The sixth plane that encloses the frustum. + * @return {Frustum} A reference to this frustum. + */ + set(p0, p1, p2, p3, p4, p5) { + const planes = this.planes; + planes[0].copy(p0); + planes[1].copy(p1); + planes[2].copy(p2); + planes[3].copy(p3); + planes[4].copy(p4); + planes[5].copy(p5); + return this; + } + /** + * Copies the values of the given frustum to this instance. + * + * @param {Frustum} frustum - The frustum to copy. + * @return {Frustum} A reference to this frustum. + */ + copy(frustum) { + const planes = this.planes; + for (let i = 0; i < 6; i++) { + planes[i].copy(frustum.planes[i]); + } + return this; + } + /** + * Sets the frustum planes from the given projection matrix. + * + * @param {Matrix4} m - The projection matrix. + * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} coordinateSystem - The coordinate system. + * @param {boolean} [reversedDepth=false] - Whether to use a reversed depth. + * @return {Frustum} A reference to this frustum. + */ + setFromProjectionMatrix(m, coordinateSystem = WebGLCoordinateSystem, reversedDepth = false) { + const planes = this.planes; + const me = m.elements; + const me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3]; + const me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7]; + const me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11]; + const me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15]; + planes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize(); + planes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize(); + planes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize(); + planes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize(); + if (reversedDepth) { + planes[4].setComponents(me2, me6, me10, me14).normalize(); + planes[5].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize(); + } else { + planes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize(); + if (coordinateSystem === WebGLCoordinateSystem) { + planes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize(); + } else if (coordinateSystem === WebGPUCoordinateSystem) { + planes[5].setComponents(me2, me6, me10, me14).normalize(); + } else { + throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: " + coordinateSystem); + } + } + return this; + } + /** + * Returns `true` if the 3D object's bounding sphere is intersecting this frustum. + * + * Note that the 3D object must have a geometry so that the bounding sphere can be calculated. + * + * @param {Object3D} object - The 3D object to test. + * @return {boolean} Whether the 3D object's bounding sphere is intersecting this frustum or not. + */ + intersectsObject(object) { + if (object.boundingSphere !== void 0) { + if (object.boundingSphere === null) + object.computeBoundingSphere(); + _sphere$3.copy(object.boundingSphere).applyMatrix4(object.matrixWorld); + } else { + const geometry = object.geometry; + if (geometry.boundingSphere === null) + geometry.computeBoundingSphere(); + _sphere$3.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld); + } + return this.intersectsSphere(_sphere$3); + } + /** + * Returns `true` if the given sprite is intersecting this frustum. + * + * @param {Sprite} sprite - The sprite to test. + * @return {boolean} Whether the sprite is intersecting this frustum or not. + */ + intersectsSprite(sprite) { + _sphere$3.center.set(0, 0, 0); + const offset = _defaultSpriteCenter.distanceTo(sprite.center); + _sphere$3.radius = 0.7071067811865476 + offset; + _sphere$3.applyMatrix4(sprite.matrixWorld); + return this.intersectsSphere(_sphere$3); + } + /** + * Returns `true` if the given bounding sphere is intersecting this frustum. + * + * @param {Sphere} sphere - The bounding sphere to test. + * @return {boolean} Whether the bounding sphere is intersecting this frustum or not. + */ + intersectsSphere(sphere) { + const planes = this.planes; + const center = sphere.center; + const negRadius = -sphere.radius; + for (let i = 0; i < 6; i++) { + const distance = planes[i].distanceToPoint(center); + if (distance < negRadius) { + return false; + } + } + return true; + } + /** + * Returns `true` if the given bounding box is intersecting this frustum. + * + * @param {Box3} box - The bounding box to test. + * @return {boolean} Whether the bounding box is intersecting this frustum or not. + */ + intersectsBox(box) { + const planes = this.planes; + for (let i = 0; i < 6; i++) { + const plane = planes[i]; + _vector$6.x = plane.normal.x > 0 ? box.max.x : box.min.x; + _vector$6.y = plane.normal.y > 0 ? box.max.y : box.min.y; + _vector$6.z = plane.normal.z > 0 ? box.max.z : box.min.z; + if (plane.distanceToPoint(_vector$6) < 0) { + return false; + } + } + return true; + } + /** + * Returns `true` if the given point lies within the frustum. + * + * @param {Vector3} point - The point to test. + * @return {boolean} Whether the point lies within this frustum or not. + */ + containsPoint(point) { + const planes = this.planes; + for (let i = 0; i < 6; i++) { + if (planes[i].distanceToPoint(point) < 0) { + return false; + } + } + return true; + } + /** + * Returns a new frustum with copied values from this instance. + * + * @return {Frustum} A clone of this instance. + */ + clone() { + return new this.constructor().copy(this); + } +} +const _projScreenMatrix$1 = /* @__PURE__ */ new Matrix4(); +const _frustum$1 = /* @__PURE__ */ new Frustum(); +class FrustumArray { + /** + * Constructs a new frustum array. + * + */ + constructor() { + this.coordinateSystem = WebGLCoordinateSystem; + } + /** + * Returns `true` if the 3D object's bounding sphere is intersecting any frustum + * from the camera array. + * + * @param {Object3D} object - The 3D object to test. + * @param {Object} cameraArray - An object with a cameras property containing an array of cameras. + * @return {boolean} Whether the 3D object is visible in any camera. + */ + intersectsObject(object, cameraArray) { + if (!cameraArray.isArrayCamera || cameraArray.cameras.length === 0) { + return false; + } + for (let i = 0; i < cameraArray.cameras.length; i++) { + const camera = cameraArray.cameras[i]; + _projScreenMatrix$1.multiplyMatrices( + camera.projectionMatrix, + camera.matrixWorldInverse + ); + _frustum$1.setFromProjectionMatrix( + _projScreenMatrix$1, + camera.coordinateSystem, + camera.reversedDepth + ); + if (_frustum$1.intersectsObject(object)) { + return true; + } + } + return false; + } + /** + * Returns `true` if the given sprite is intersecting any frustum + * from the camera array. + * + * @param {Sprite} sprite - The sprite to test. + * @param {Object} cameraArray - An object with a cameras property containing an array of cameras. + * @return {boolean} Whether the sprite is visible in any camera. + */ + intersectsSprite(sprite, cameraArray) { + if (!cameraArray || !cameraArray.cameras || cameraArray.cameras.length === 0) { + return false; + } + for (let i = 0; i < cameraArray.cameras.length; i++) { + const camera = cameraArray.cameras[i]; + _projScreenMatrix$1.multiplyMatrices( + camera.projectionMatrix, + camera.matrixWorldInverse + ); + _frustum$1.setFromProjectionMatrix( + _projScreenMatrix$1, + camera.coordinateSystem, + camera.reversedDepth + ); + if (_frustum$1.intersectsSprite(sprite)) { + return true; + } + } + return false; + } + /** + * Returns `true` if the given bounding sphere is intersecting any frustum + * from the camera array. + * + * @param {Sphere} sphere - The bounding sphere to test. + * @param {Object} cameraArray - An object with a cameras property containing an array of cameras. + * @return {boolean} Whether the sphere is visible in any camera. + */ + intersectsSphere(sphere, cameraArray) { + if (!cameraArray || !cameraArray.cameras || cameraArray.cameras.length === 0) { + return false; + } + for (let i = 0; i < cameraArray.cameras.length; i++) { + const camera = cameraArray.cameras[i]; + _projScreenMatrix$1.multiplyMatrices( + camera.projectionMatrix, + camera.matrixWorldInverse + ); + _frustum$1.setFromProjectionMatrix( + _projScreenMatrix$1, + camera.coordinateSystem, + camera.reversedDepth + ); + if (_frustum$1.intersectsSphere(sphere)) { + return true; + } + } + return false; + } + /** + * Returns `true` if the given bounding box is intersecting any frustum + * from the camera array. + * + * @param {Box3} box - The bounding box to test. + * @param {Object} cameraArray - An object with a cameras property containing an array of cameras. + * @return {boolean} Whether the box is visible in any camera. + */ + intersectsBox(box, cameraArray) { + if (!cameraArray || !cameraArray.cameras || cameraArray.cameras.length === 0) { + return false; + } + for (let i = 0; i < cameraArray.cameras.length; i++) { + const camera = cameraArray.cameras[i]; + _projScreenMatrix$1.multiplyMatrices( + camera.projectionMatrix, + camera.matrixWorldInverse + ); + _frustum$1.setFromProjectionMatrix( + _projScreenMatrix$1, + camera.coordinateSystem, + camera.reversedDepth + ); + if (_frustum$1.intersectsBox(box)) { + return true; + } + } + return false; + } + /** + * Returns `true` if the given point lies within any frustum + * from the camera array. + * + * @param {Vector3} point - The point to test. + * @param {Object} cameraArray - An object with a cameras property containing an array of cameras. + * @return {boolean} Whether the point is visible in any camera. + */ + containsPoint(point, cameraArray) { + if (!cameraArray || !cameraArray.cameras || cameraArray.cameras.length === 0) { + return false; + } + for (let i = 0; i < cameraArray.cameras.length; i++) { + const camera = cameraArray.cameras[i]; + _projScreenMatrix$1.multiplyMatrices( + camera.projectionMatrix, + camera.matrixWorldInverse + ); + _frustum$1.setFromProjectionMatrix( + _projScreenMatrix$1, + camera.coordinateSystem, + camera.reversedDepth + ); + if (_frustum$1.containsPoint(point)) { + return true; + } + } + return false; + } + /** + * Returns a new frustum array with copied values from this instance. + * + * @return {FrustumArray} A clone of this instance. + */ + clone() { + return new FrustumArray(); + } +} +function ascIdSort(a, b) { + return a - b; +} +function sortOpaque(a, b) { + return a.z - b.z; +} +function sortTransparent(a, b) { + return b.z - a.z; +} +class MultiDrawRenderList { + constructor() { + this.index = 0; + this.pool = []; + this.list = []; + } + push(start, count, z, index) { + const pool = this.pool; + const list = this.list; + if (this.index >= pool.length) { + pool.push({ + start: -1, + count: -1, + z: -1, + index: -1 + }); + } + const item = pool[this.index]; + list.push(item); + this.index++; + item.start = start; + item.count = count; + item.z = z; + item.index = index; + } + reset() { + this.list.length = 0; + this.index = 0; + } +} +const _matrix$1 = /* @__PURE__ */ new Matrix4(); +const _whiteColor = /* @__PURE__ */ new Color(1, 1, 1); +const _frustum = /* @__PURE__ */ new Frustum(); +const _frustumArray = /* @__PURE__ */ new FrustumArray(); +const _box$1 = /* @__PURE__ */ new Box3(); +const _sphere$2 = /* @__PURE__ */ new Sphere(); +const _vector$5 = /* @__PURE__ */ new Vector3(); +const _forward$1 = /* @__PURE__ */ new Vector3(); +const _temp = /* @__PURE__ */ new Vector3(); +const _renderList = /* @__PURE__ */ new MultiDrawRenderList(); +const _mesh$2 = /* @__PURE__ */ new Mesh(); +const _batchIntersects$1 = []; +function copyAttributeData(src, target, targetOffset = 0) { + const itemSize = target.itemSize; + if (src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor) { + const vertexCount = src.count; + for (let i = 0; i < vertexCount; i++) { + for (let c = 0; c < itemSize; c++) { + target.setComponent(i + targetOffset, c, src.getComponent(i, c)); + } + } + } else { + target.array.set(src.array, targetOffset * itemSize); + } + target.needsUpdate = true; +} +function copyArrayContents(src, target) { + if (src.constructor !== target.constructor) { + const len = Math.min(src.length, target.length); + for (let i = 0; i < len; i++) { + target[i] = src[i]; + } + } else { + const len = Math.min(src.length, target.length); + target.set(new src.constructor(src.buffer, 0, len)); + } +} +class BatchedMesh extends Mesh { + /** + * Constructs a new batched mesh. + * + * @param {number} maxInstanceCount - The maximum number of individual instances planned to be added and rendered. + * @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries. + * @param {number} [maxIndexCount=maxVertexCount*2] - The maximum number of indices to be used by all unique geometries + * @param {Material|Array} [material] - The mesh material. + */ + constructor(maxInstanceCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material) { + super(new BufferGeometry(), material); + this.isBatchedMesh = true; + this.perObjectFrustumCulled = true; + this.sortObjects = true; + this.boundingBox = null; + this.boundingSphere = null; + this.customSort = null; + this._instanceInfo = []; + this._geometryInfo = []; + this._availableInstanceIds = []; + this._availableGeometryIds = []; + this._nextIndexStart = 0; + this._nextVertexStart = 0; + this._geometryCount = 0; + this._visibilityChanged = true; + this._geometryInitialized = false; + this._maxInstanceCount = maxInstanceCount; + this._maxVertexCount = maxVertexCount; + this._maxIndexCount = maxIndexCount; + this._multiDrawCounts = new Int32Array(maxInstanceCount); + this._multiDrawStarts = new Int32Array(maxInstanceCount); + this._multiDrawCount = 0; + this._multiDrawInstances = null; + this._matricesTexture = null; + this._indirectTexture = null; + this._colorsTexture = null; + this._initMatricesTexture(); + this._initIndirectTexture(); + } + /** + * The maximum number of individual instances that can be stored in the batch. + * + * @type {number} + * @readonly + */ + get maxInstanceCount() { + return this._maxInstanceCount; + } + /** + * The instance count. + * + * @type {number} + * @readonly + */ + get instanceCount() { + return this._instanceInfo.length - this._availableInstanceIds.length; + } + /** + * The number of unused vertices. + * + * @type {number} + * @readonly + */ + get unusedVertexCount() { + return this._maxVertexCount - this._nextVertexStart; + } + /** + * The number of unused indices. + * + * @type {number} + * @readonly + */ + get unusedIndexCount() { + return this._maxIndexCount - this._nextIndexStart; + } + _initMatricesTexture() { + let size = Math.sqrt(this._maxInstanceCount * 4); + size = Math.ceil(size / 4) * 4; + size = Math.max(size, 4); + const matricesArray = new Float32Array(size * size * 4); + const matricesTexture = new DataTexture(matricesArray, size, size, RGBAFormat, FloatType); + this._matricesTexture = matricesTexture; + } + _initIndirectTexture() { + let size = Math.sqrt(this._maxInstanceCount); + size = Math.ceil(size); + const indirectArray = new Uint32Array(size * size); + const indirectTexture = new DataTexture(indirectArray, size, size, RedIntegerFormat, UnsignedIntType); + this._indirectTexture = indirectTexture; + } + _initColorsTexture() { + let size = Math.sqrt(this._maxInstanceCount); + size = Math.ceil(size); + const colorsArray = new Float32Array(size * size * 4).fill(1); + const colorsTexture = new DataTexture(colorsArray, size, size, RGBAFormat, FloatType); + colorsTexture.colorSpace = ColorManagement.workingColorSpace; + this._colorsTexture = colorsTexture; + } + _initializeGeometry(reference) { + const geometry = this.geometry; + const maxVertexCount = this._maxVertexCount; + const maxIndexCount = this._maxIndexCount; + if (this._geometryInitialized === false) { + for (const attributeName in reference.attributes) { + const srcAttribute = reference.getAttribute(attributeName); + const { array, itemSize, normalized } = srcAttribute; + const dstArray = new array.constructor(maxVertexCount * itemSize); + const dstAttribute = new BufferAttribute(dstArray, itemSize, normalized); + geometry.setAttribute(attributeName, dstAttribute); + } + if (reference.getIndex() !== null) { + const indexArray = maxVertexCount > 65535 ? new Uint32Array(maxIndexCount) : new Uint16Array(maxIndexCount); + geometry.setIndex(new BufferAttribute(indexArray, 1)); + } + this._geometryInitialized = true; + } + } + // Make sure the geometry is compatible with the existing combined geometry attributes + _validateGeometry(geometry) { + const batchGeometry = this.geometry; + if (Boolean(geometry.getIndex()) !== Boolean(batchGeometry.getIndex())) { + throw new Error('THREE.BatchedMesh: All geometries must consistently have "index".'); + } + for (const attributeName in batchGeometry.attributes) { + if (!geometry.hasAttribute(attributeName)) { + throw new Error(`THREE.BatchedMesh: Added geometry missing "${attributeName}". All geometries must have consistent attributes.`); + } + const srcAttribute = geometry.getAttribute(attributeName); + const dstAttribute = batchGeometry.getAttribute(attributeName); + if (srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized) { + throw new Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value."); + } + } + } + /** + * Validates the instance defined by the given ID. + * + * @param {number} instanceId - The instance to validate. + */ + validateInstanceId(instanceId) { + const instanceInfo = this._instanceInfo; + if (instanceId < 0 || instanceId >= instanceInfo.length || instanceInfo[instanceId].active === false) { + throw new Error(`THREE.BatchedMesh: Invalid instanceId ${instanceId}. Instance is either out of range or has been deleted.`); + } + } + /** + * Validates the geometry defined by the given ID. + * + * @param {number} geometryId - The geometry to validate. + */ + validateGeometryId(geometryId) { + const geometryInfoList = this._geometryInfo; + if (geometryId < 0 || geometryId >= geometryInfoList.length || geometryInfoList[geometryId].active === false) { + throw new Error(`THREE.BatchedMesh: Invalid geometryId ${geometryId}. Geometry is either out of range or has been deleted.`); + } + } + /** + * Takes a sort a function that is run before render. The function takes a list of instances to + * sort and a camera. The objects in the list include a "z" field to perform a depth-ordered sort with. + * + * @param {Function} func - The custom sort function. + * @return {BatchedMesh} A reference to this batched mesh. + */ + setCustomSort(func) { + this.customSort = func; + return this; + } + /** + * Computes the bounding box, updating {@link BatchedMesh#boundingBox}. + * Bounding boxes aren't computed by default. They need to be explicitly computed, + * otherwise they are `null`. + */ + computeBoundingBox() { + if (this.boundingBox === null) { + this.boundingBox = new Box3(); + } + const boundingBox2 = this.boundingBox; + const instanceInfo = this._instanceInfo; + boundingBox2.makeEmpty(); + for (let i = 0, l = instanceInfo.length; i < l; i++) { + if (instanceInfo[i].active === false) + continue; + const geometryId = instanceInfo[i].geometryIndex; + this.getMatrixAt(i, _matrix$1); + this.getBoundingBoxAt(geometryId, _box$1).applyMatrix4(_matrix$1); + boundingBox2.union(_box$1); + } + } + /** + * Computes the bounding sphere, updating {@link BatchedMesh#boundingSphere}. + * Bounding spheres aren't computed by default. They need to be explicitly computed, + * otherwise they are `null`. + */ + computeBoundingSphere() { + if (this.boundingSphere === null) { + this.boundingSphere = new Sphere(); + } + const boundingSphere = this.boundingSphere; + const instanceInfo = this._instanceInfo; + boundingSphere.makeEmpty(); + for (let i = 0, l = instanceInfo.length; i < l; i++) { + if (instanceInfo[i].active === false) + continue; + const geometryId = instanceInfo[i].geometryIndex; + this.getMatrixAt(i, _matrix$1); + this.getBoundingSphereAt(geometryId, _sphere$2).applyMatrix4(_matrix$1); + boundingSphere.union(_sphere$2); + } + } + /** + * Adds a new instance to the batch using the geometry of the given ID and returns + * a new id referring to the new instance to be used by other functions. + * + * @param {number} geometryId - The ID of a previously added geometry via {@link BatchedMesh#addGeometry}. + * @return {number} The instance ID. + */ + addInstance(geometryId) { + const atCapacity = this._instanceInfo.length >= this.maxInstanceCount; + if (atCapacity && this._availableInstanceIds.length === 0) { + throw new Error("THREE.BatchedMesh: Maximum item count reached."); + } + const instanceInfo = { + visible: true, + active: true, + geometryIndex: geometryId + }; + let drawId = null; + if (this._availableInstanceIds.length > 0) { + this._availableInstanceIds.sort(ascIdSort); + drawId = this._availableInstanceIds.shift(); + this._instanceInfo[drawId] = instanceInfo; + } else { + drawId = this._instanceInfo.length; + this._instanceInfo.push(instanceInfo); + } + const matricesTexture = this._matricesTexture; + _matrix$1.identity().toArray(matricesTexture.image.data, drawId * 16); + matricesTexture.needsUpdate = true; + const colorsTexture = this._colorsTexture; + if (colorsTexture) { + _whiteColor.toArray(colorsTexture.image.data, drawId * 4); + colorsTexture.needsUpdate = true; + } + this._visibilityChanged = true; + return drawId; + } + /** + * Adds the given geometry to the batch and returns the associated + * geometry id referring to it to be used in other functions. + * + * @param {BufferGeometry} geometry - The geometry to add. + * @param {number} [reservedVertexCount=-1] - Optional parameter specifying the amount of + * vertex buffer space to reserve for the added geometry. This is necessary if it is planned + * to set a new geometry at this index at a later time that is larger than the original geometry. + * Defaults to the length of the given geometry vertex buffer. + * @param {number} [reservedIndexCount=-1] - Optional parameter specifying the amount of index + * buffer space to reserve for the added geometry. This is necessary if it is planned to set a + * new geometry at this index at a later time that is larger than the original geometry. Defaults to + * the length of the given geometry index buffer. + * @return {number} The geometry ID. + */ + addGeometry(geometry, reservedVertexCount = -1, reservedIndexCount = -1) { + this._initializeGeometry(geometry); + this._validateGeometry(geometry); + const geometryInfo = { + // geometry information + vertexStart: -1, + vertexCount: -1, + reservedVertexCount: -1, + indexStart: -1, + indexCount: -1, + reservedIndexCount: -1, + // draw range information + start: -1, + count: -1, + // state + boundingBox: null, + boundingSphere: null, + active: true + }; + const geometryInfoList = this._geometryInfo; + geometryInfo.vertexStart = this._nextVertexStart; + geometryInfo.reservedVertexCount = reservedVertexCount === -1 ? geometry.getAttribute("position").count : reservedVertexCount; + const index = geometry.getIndex(); + const hasIndex = index !== null; + if (hasIndex) { + geometryInfo.indexStart = this._nextIndexStart; + geometryInfo.reservedIndexCount = reservedIndexCount === -1 ? index.count : reservedIndexCount; + } + if (geometryInfo.indexStart !== -1 && geometryInfo.indexStart + geometryInfo.reservedIndexCount > this._maxIndexCount || geometryInfo.vertexStart + geometryInfo.reservedVertexCount > this._maxVertexCount) { + throw new Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size."); + } + let geometryId; + if (this._availableGeometryIds.length > 0) { + this._availableGeometryIds.sort(ascIdSort); + geometryId = this._availableGeometryIds.shift(); + geometryInfoList[geometryId] = geometryInfo; + } else { + geometryId = this._geometryCount; + this._geometryCount++; + geometryInfoList.push(geometryInfo); + } + this.setGeometryAt(geometryId, geometry); + this._nextIndexStart = geometryInfo.indexStart + geometryInfo.reservedIndexCount; + this._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount; + return geometryId; + } + /** + * Replaces the geometry at the given ID with the provided geometry. Throws an error if there + * is not enough space reserved for geometry. Calling this will change all instances that are + * rendering that geometry. + * + * @param {number} geometryId - The ID of the geometry that should be replaced with the given geometry. + * @param {BufferGeometry} geometry - The new geometry. + * @return {number} The geometry ID. + */ + setGeometryAt(geometryId, geometry) { + if (geometryId >= this._geometryCount) { + throw new Error("THREE.BatchedMesh: Maximum geometry count reached."); + } + this._validateGeometry(geometry); + const batchGeometry = this.geometry; + const hasIndex = batchGeometry.getIndex() !== null; + const dstIndex = batchGeometry.getIndex(); + const srcIndex = geometry.getIndex(); + const geometryInfo = this._geometryInfo[geometryId]; + if (hasIndex && srcIndex.count > geometryInfo.reservedIndexCount || geometry.attributes.position.count > geometryInfo.reservedVertexCount) { + throw new Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry."); + } + const vertexStart = geometryInfo.vertexStart; + const reservedVertexCount = geometryInfo.reservedVertexCount; + geometryInfo.vertexCount = geometry.getAttribute("position").count; + for (const attributeName in batchGeometry.attributes) { + const srcAttribute = geometry.getAttribute(attributeName); + const dstAttribute = batchGeometry.getAttribute(attributeName); + copyAttributeData(srcAttribute, dstAttribute, vertexStart); + const itemSize = srcAttribute.itemSize; + for (let i = srcAttribute.count, l = reservedVertexCount; i < l; i++) { + const index = vertexStart + i; + for (let c = 0; c < itemSize; c++) { + dstAttribute.setComponent(index, c, 0); + } + } + dstAttribute.needsUpdate = true; + dstAttribute.addUpdateRange(vertexStart * itemSize, reservedVertexCount * itemSize); + } + if (hasIndex) { + const indexStart = geometryInfo.indexStart; + const reservedIndexCount = geometryInfo.reservedIndexCount; + geometryInfo.indexCount = geometry.getIndex().count; + for (let i = 0; i < srcIndex.count; i++) { + dstIndex.setX(indexStart + i, vertexStart + srcIndex.getX(i)); + } + for (let i = srcIndex.count, l = reservedIndexCount; i < l; i++) { + dstIndex.setX(indexStart + i, vertexStart); + } + dstIndex.needsUpdate = true; + dstIndex.addUpdateRange(indexStart, geometryInfo.reservedIndexCount); + } + geometryInfo.start = hasIndex ? geometryInfo.indexStart : geometryInfo.vertexStart; + geometryInfo.count = hasIndex ? geometryInfo.indexCount : geometryInfo.vertexCount; + geometryInfo.boundingBox = null; + if (geometry.boundingBox !== null) { + geometryInfo.boundingBox = geometry.boundingBox.clone(); + } + geometryInfo.boundingSphere = null; + if (geometry.boundingSphere !== null) { + geometryInfo.boundingSphere = geometry.boundingSphere.clone(); + } + this._visibilityChanged = true; + return geometryId; + } + /** + * Deletes the geometry defined by the given ID from this batch. Any instances referencing + * this geometry will also be removed as a side effect. + * + * @param {number} geometryId - The ID of the geometry to remove from the batch. + * @return {BatchedMesh} A reference to this batched mesh. + */ + deleteGeometry(geometryId) { + const geometryInfoList = this._geometryInfo; + if (geometryId >= geometryInfoList.length || geometryInfoList[geometryId].active === false) { + return this; + } + const instanceInfo = this._instanceInfo; + for (let i = 0, l = instanceInfo.length; i < l; i++) { + if (instanceInfo[i].active && instanceInfo[i].geometryIndex === geometryId) { + this.deleteInstance(i); + } + } + geometryInfoList[geometryId].active = false; + this._availableGeometryIds.push(geometryId); + this._visibilityChanged = true; + return this; + } + /** + * Deletes an existing instance from the batch using the given ID. + * + * @param {number} instanceId - The ID of the instance to remove from the batch. + * @return {BatchedMesh} A reference to this batched mesh. + */ + deleteInstance(instanceId) { + this.validateInstanceId(instanceId); + this._instanceInfo[instanceId].active = false; + this._availableInstanceIds.push(instanceId); + this._visibilityChanged = true; + return this; + } + /** + * Repacks the sub geometries in BatchedMesh to remove any unused space remaining from + * previously deleted geometry, freeing up space to add new geometry. + * + * @return {BatchedMesh} A reference to this batched mesh. + */ + optimize() { + let nextVertexStart = 0; + let nextIndexStart = 0; + const geometryInfoList = this._geometryInfo; + const indices = geometryInfoList.map((e, i) => i).sort((a, b) => { + return geometryInfoList[a].vertexStart - geometryInfoList[b].vertexStart; + }); + const geometry = this.geometry; + for (let i = 0, l = geometryInfoList.length; i < l; i++) { + const index = indices[i]; + const geometryInfo = geometryInfoList[index]; + if (geometryInfo.active === false) { + continue; + } + if (geometry.index !== null) { + if (geometryInfo.indexStart !== nextIndexStart) { + const { indexStart, vertexStart, reservedIndexCount } = geometryInfo; + const index2 = geometry.index; + const array = index2.array; + const elementDelta = nextVertexStart - vertexStart; + for (let j = indexStart; j < indexStart + reservedIndexCount; j++) { + array[j] = array[j] + elementDelta; + } + index2.array.copyWithin(nextIndexStart, indexStart, indexStart + reservedIndexCount); + index2.addUpdateRange(nextIndexStart, reservedIndexCount); + index2.needsUpdate = true; + geometryInfo.indexStart = nextIndexStart; + } + nextIndexStart += geometryInfo.reservedIndexCount; + } + if (geometryInfo.vertexStart !== nextVertexStart) { + const { vertexStart, reservedVertexCount } = geometryInfo; + const attributes = geometry.attributes; + for (const key in attributes) { + const attribute = attributes[key]; + const { array, itemSize } = attribute; + array.copyWithin(nextVertexStart * itemSize, vertexStart * itemSize, (vertexStart + reservedVertexCount) * itemSize); + attribute.addUpdateRange(nextVertexStart * itemSize, reservedVertexCount * itemSize); + attribute.needsUpdate = true; + } + geometryInfo.vertexStart = nextVertexStart; + } + nextVertexStart += geometryInfo.reservedVertexCount; + geometryInfo.start = geometry.index ? geometryInfo.indexStart : geometryInfo.vertexStart; + this._nextIndexStart = geometry.index ? geometryInfo.indexStart + geometryInfo.reservedIndexCount : 0; + this._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount; + } + this._visibilityChanged = true; + return this; + } + /** + * Returns the bounding box for the given geometry. + * + * @param {number} geometryId - The ID of the geometry to return the bounding box for. + * @param {Box3} target - The target object that is used to store the method's result. + * @return {?Box3} The geometry's bounding box. Returns `null` if no geometry has been found for the given ID. + */ + getBoundingBoxAt(geometryId, target) { + if (geometryId >= this._geometryCount) { + return null; + } + const geometry = this.geometry; + const geometryInfo = this._geometryInfo[geometryId]; + if (geometryInfo.boundingBox === null) { + const box = new Box3(); + const index = geometry.index; + const position = geometry.attributes.position; + for (let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i++) { + let iv = i; + if (index) { + iv = index.getX(iv); + } + box.expandByPoint(_vector$5.fromBufferAttribute(position, iv)); + } + geometryInfo.boundingBox = box; + } + target.copy(geometryInfo.boundingBox); + return target; + } + /** + * Returns the bounding sphere for the given geometry. + * + * @param {number} geometryId - The ID of the geometry to return the bounding sphere for. + * @param {Sphere} target - The target object that is used to store the method's result. + * @return {?Sphere} The geometry's bounding sphere. Returns `null` if no geometry has been found for the given ID. + */ + getBoundingSphereAt(geometryId, target) { + if (geometryId >= this._geometryCount) { + return null; + } + const geometry = this.geometry; + const geometryInfo = this._geometryInfo[geometryId]; + if (geometryInfo.boundingSphere === null) { + const sphere = new Sphere(); + this.getBoundingBoxAt(geometryId, _box$1); + _box$1.getCenter(sphere.center); + const index = geometry.index; + const position = geometry.attributes.position; + let maxRadiusSq = 0; + for (let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i++) { + let iv = i; + if (index) { + iv = index.getX(iv); + } + _vector$5.fromBufferAttribute(position, iv); + maxRadiusSq = Math.max(maxRadiusSq, sphere.center.distanceToSquared(_vector$5)); + } + sphere.radius = Math.sqrt(maxRadiusSq); + geometryInfo.boundingSphere = sphere; + } + target.copy(geometryInfo.boundingSphere); + return target; + } + /** + * Sets the given local transformation matrix to the defined instance. + * Negatively scaled matrices are not supported. + * + * @param {number} instanceId - The ID of an instance to set the matrix of. + * @param {Matrix4} matrix - A 4x4 matrix representing the local transformation of a single instance. + * @return {BatchedMesh} A reference to this batched mesh. + */ + setMatrixAt(instanceId, matrix) { + this.validateInstanceId(instanceId); + const matricesTexture = this._matricesTexture; + const matricesArray = this._matricesTexture.image.data; + matrix.toArray(matricesArray, instanceId * 16); + matricesTexture.needsUpdate = true; + return this; + } + /** + * Returns the local transformation matrix of the defined instance. + * + * @param {number} instanceId - The ID of an instance to get the matrix of. + * @param {Matrix4} matrix - The target object that is used to store the method's result. + * @return {Matrix4} The instance's local transformation matrix. + */ + getMatrixAt(instanceId, matrix) { + this.validateInstanceId(instanceId); + return matrix.fromArray(this._matricesTexture.image.data, instanceId * 16); + } + /** + * Sets the given color to the defined instance. + * + * @param {number} instanceId - The ID of an instance to set the color of. + * @param {Color} color - The color to set the instance to. + * @return {BatchedMesh} A reference to this batched mesh. + */ + setColorAt(instanceId, color) { + this.validateInstanceId(instanceId); + if (this._colorsTexture === null) { + this._initColorsTexture(); + } + color.toArray(this._colorsTexture.image.data, instanceId * 4); + this._colorsTexture.needsUpdate = true; + return this; + } + /** + * Returns the color of the defined instance. + * + * @param {number} instanceId - The ID of an instance to get the color of. + * @param {Color} color - The target object that is used to store the method's result. + * @return {Color} The instance's color. + */ + getColorAt(instanceId, color) { + this.validateInstanceId(instanceId); + return color.fromArray(this._colorsTexture.image.data, instanceId * 4); + } + /** + * Sets the visibility of the instance. + * + * @param {number} instanceId - The id of the instance to set the visibility of. + * @param {boolean} visible - Whether the instance is visible or not. + * @return {BatchedMesh} A reference to this batched mesh. + */ + setVisibleAt(instanceId, visible) { + this.validateInstanceId(instanceId); + if (this._instanceInfo[instanceId].visible === visible) { + return this; + } + this._instanceInfo[instanceId].visible = visible; + this._visibilityChanged = true; + return this; + } + /** + * Returns the visibility state of the defined instance. + * + * @param {number} instanceId - The ID of an instance to get the visibility state of. + * @return {boolean} Whether the instance is visible or not. + */ + getVisibleAt(instanceId) { + this.validateInstanceId(instanceId); + return this._instanceInfo[instanceId].visible; + } + /** + * Sets the geometry ID of the instance at the given index. + * + * @param {number} instanceId - The ID of the instance to set the geometry ID of. + * @param {number} geometryId - The geometry ID to be use by the instance. + * @return {BatchedMesh} A reference to this batched mesh. + */ + setGeometryIdAt(instanceId, geometryId) { + this.validateInstanceId(instanceId); + this.validateGeometryId(geometryId); + this._instanceInfo[instanceId].geometryIndex = geometryId; + return this; + } + /** + * Returns the geometry ID of the defined instance. + * + * @param {number} instanceId - The ID of an instance to get the geometry ID of. + * @return {number} The instance's geometry ID. + */ + getGeometryIdAt(instanceId) { + this.validateInstanceId(instanceId); + return this._instanceInfo[instanceId].geometryIndex; + } + /** + * Get the range representing the subset of triangles related to the attached geometry, + * indicating the starting offset and count, or `null` if invalid. + * + * @param {number} geometryId - The id of the geometry to get the range of. + * @param {Object} [target] - The target object that is used to store the method's result. + * @return {{ + * vertexStart:number,vertexCount:number,reservedVertexCount:number, + * indexStart:number,indexCount:number,reservedIndexCount:number, + * start:number,count:number + * }} The result object with range data. + */ + getGeometryRangeAt(geometryId, target = {}) { + this.validateGeometryId(geometryId); + const geometryInfo = this._geometryInfo[geometryId]; + target.vertexStart = geometryInfo.vertexStart; + target.vertexCount = geometryInfo.vertexCount; + target.reservedVertexCount = geometryInfo.reservedVertexCount; + target.indexStart = geometryInfo.indexStart; + target.indexCount = geometryInfo.indexCount; + target.reservedIndexCount = geometryInfo.reservedIndexCount; + target.start = geometryInfo.start; + target.count = geometryInfo.count; + return target; + } + /** + * Resizes the necessary buffers to support the provided number of instances. + * If the provided arguments shrink the number of instances but there are not enough + * unused Ids at the end of the list then an error is thrown. + * + * @param {number} maxInstanceCount - The max number of individual instances that can be added and rendered by the batch. + */ + setInstanceCount(maxInstanceCount) { + const availableInstanceIds = this._availableInstanceIds; + const instanceInfo = this._instanceInfo; + availableInstanceIds.sort(ascIdSort); + while (availableInstanceIds[availableInstanceIds.length - 1] === instanceInfo.length - 1) { + instanceInfo.pop(); + availableInstanceIds.pop(); + } + if (maxInstanceCount < instanceInfo.length) { + throw new Error(`BatchedMesh: Instance ids outside the range ${maxInstanceCount} are being used. Cannot shrink instance count.`); + } + const multiDrawCounts = new Int32Array(maxInstanceCount); + const multiDrawStarts = new Int32Array(maxInstanceCount); + copyArrayContents(this._multiDrawCounts, multiDrawCounts); + copyArrayContents(this._multiDrawStarts, multiDrawStarts); + this._multiDrawCounts = multiDrawCounts; + this._multiDrawStarts = multiDrawStarts; + this._maxInstanceCount = maxInstanceCount; + const indirectTexture = this._indirectTexture; + const matricesTexture = this._matricesTexture; + const colorsTexture = this._colorsTexture; + indirectTexture.dispose(); + this._initIndirectTexture(); + copyArrayContents(indirectTexture.image.data, this._indirectTexture.image.data); + matricesTexture.dispose(); + this._initMatricesTexture(); + copyArrayContents(matricesTexture.image.data, this._matricesTexture.image.data); + if (colorsTexture) { + colorsTexture.dispose(); + this._initColorsTexture(); + copyArrayContents(colorsTexture.image.data, this._colorsTexture.image.data); + } + } + /** + * Resizes the available space in the batch's vertex and index buffer attributes to the provided sizes. + * If the provided arguments shrink the geometry buffers but there is not enough unused space at the + * end of the geometry attributes then an error is thrown. + * + * @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries to resize to. + * @param {number} maxIndexCount - The maximum number of indices to be used by all unique geometries to resize to. + */ + setGeometrySize(maxVertexCount, maxIndexCount) { + const validRanges = [...this._geometryInfo].filter((info) => info.active); + const requiredVertexLength = Math.max(...validRanges.map((range) => range.vertexStart + range.reservedVertexCount)); + if (requiredVertexLength > maxVertexCount) { + throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${maxIndexCount}. Cannot shrink further.`); + } + if (this.geometry.index) { + const requiredIndexLength = Math.max(...validRanges.map((range) => range.indexStart + range.reservedIndexCount)); + if (requiredIndexLength > maxIndexCount) { + throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${maxIndexCount}. Cannot shrink further.`); + } + } + const oldGeometry = this.geometry; + oldGeometry.dispose(); + this._maxVertexCount = maxVertexCount; + this._maxIndexCount = maxIndexCount; + if (this._geometryInitialized) { + this._geometryInitialized = false; + this.geometry = new BufferGeometry(); + this._initializeGeometry(oldGeometry); + } + const geometry = this.geometry; + if (oldGeometry.index) { + copyArrayContents(oldGeometry.index.array, geometry.index.array); + } + for (const key in oldGeometry.attributes) { + copyArrayContents(oldGeometry.attributes[key].array, geometry.attributes[key].array); + } + } + raycast(raycaster, intersects2) { + const instanceInfo = this._instanceInfo; + const geometryInfoList = this._geometryInfo; + const matrixWorld = this.matrixWorld; + const batchGeometry = this.geometry; + _mesh$2.material = this.material; + _mesh$2.geometry.index = batchGeometry.index; + _mesh$2.geometry.attributes = batchGeometry.attributes; + if (_mesh$2.geometry.boundingBox === null) { + _mesh$2.geometry.boundingBox = new Box3(); + } + if (_mesh$2.geometry.boundingSphere === null) { + _mesh$2.geometry.boundingSphere = new Sphere(); + } + for (let i = 0, l = instanceInfo.length; i < l; i++) { + if (!instanceInfo[i].visible || !instanceInfo[i].active) { + continue; + } + const geometryId = instanceInfo[i].geometryIndex; + const geometryInfo = geometryInfoList[geometryId]; + _mesh$2.geometry.setDrawRange(geometryInfo.start, geometryInfo.count); + this.getMatrixAt(i, _mesh$2.matrixWorld).premultiply(matrixWorld); + this.getBoundingBoxAt(geometryId, _mesh$2.geometry.boundingBox); + this.getBoundingSphereAt(geometryId, _mesh$2.geometry.boundingSphere); + _mesh$2.raycast(raycaster, _batchIntersects$1); + for (let j = 0, l2 = _batchIntersects$1.length; j < l2; j++) { + const intersect = _batchIntersects$1[j]; + intersect.object = this; + intersect.batchId = i; + intersects2.push(intersect); + } + _batchIntersects$1.length = 0; + } + _mesh$2.material = null; + _mesh$2.geometry.index = null; + _mesh$2.geometry.attributes = {}; + _mesh$2.geometry.setDrawRange(0, Infinity); + } + copy(source) { + super.copy(source); + this.geometry = source.geometry.clone(); + this.perObjectFrustumCulled = source.perObjectFrustumCulled; + this.sortObjects = source.sortObjects; + this.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null; + this.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null; + this._geometryInfo = source._geometryInfo.map((info) => ({ + ...info, + boundingBox: info.boundingBox !== null ? info.boundingBox.clone() : null, + boundingSphere: info.boundingSphere !== null ? info.boundingSphere.clone() : null + })); + this._instanceInfo = source._instanceInfo.map((info) => ({ ...info })); + this._availableInstanceIds = source._availableInstanceIds.slice(); + this._availableGeometryIds = source._availableGeometryIds.slice(); + this._nextIndexStart = source._nextIndexStart; + this._nextVertexStart = source._nextVertexStart; + this._geometryCount = source._geometryCount; + this._maxInstanceCount = source._maxInstanceCount; + this._maxVertexCount = source._maxVertexCount; + this._maxIndexCount = source._maxIndexCount; + this._geometryInitialized = source._geometryInitialized; + this._multiDrawCounts = source._multiDrawCounts.slice(); + this._multiDrawStarts = source._multiDrawStarts.slice(); + this._indirectTexture = source._indirectTexture.clone(); + this._indirectTexture.image.data = this._indirectTexture.image.data.slice(); + this._matricesTexture = source._matricesTexture.clone(); + this._matricesTexture.image.data = this._matricesTexture.image.data.slice(); + if (this._colorsTexture !== null) { + this._colorsTexture = source._colorsTexture.clone(); + this._colorsTexture.image.data = this._colorsTexture.image.data.slice(); + } + return this; + } + /** + * Frees the GPU-related resources allocated by this instance. Call this + * method whenever this instance is no longer used in your app. + */ + dispose() { + this.geometry.dispose(); + this._matricesTexture.dispose(); + this._matricesTexture = null; + this._indirectTexture.dispose(); + this._indirectTexture = null; + if (this._colorsTexture !== null) { + this._colorsTexture.dispose(); + this._colorsTexture = null; + } + } + onBeforeRender(renderer, scene, camera, geometry, material) { + if (!this._visibilityChanged && !this.perObjectFrustumCulled && !this.sortObjects) { + return; + } + const index = geometry.getIndex(); + const bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT; + const instanceInfo = this._instanceInfo; + const multiDrawStarts = this._multiDrawStarts; + const multiDrawCounts = this._multiDrawCounts; + const geometryInfoList = this._geometryInfo; + const perObjectFrustumCulled = this.perObjectFrustumCulled; + const indirectTexture = this._indirectTexture; + const indirectArray = indirectTexture.image.data; + const frustum = camera.isArrayCamera ? _frustumArray : _frustum; + if (perObjectFrustumCulled && !camera.isArrayCamera) { + _matrix$1.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse).multiply(this.matrixWorld); + _frustum.setFromProjectionMatrix( + _matrix$1, + camera.coordinateSystem, + camera.reversedDepth + ); + } + let multiDrawCount = 0; + if (this.sortObjects) { + _matrix$1.copy(this.matrixWorld).invert(); + _vector$5.setFromMatrixPosition(camera.matrixWorld).applyMatrix4(_matrix$1); + _forward$1.set(0, 0, -1).transformDirection(camera.matrixWorld).transformDirection(_matrix$1); + for (let i = 0, l = instanceInfo.length; i < l; i++) { + if (instanceInfo[i].visible && instanceInfo[i].active) { + const geometryId = instanceInfo[i].geometryIndex; + this.getMatrixAt(i, _matrix$1); + this.getBoundingSphereAt(geometryId, _sphere$2).applyMatrix4(_matrix$1); + let culled = false; + if (perObjectFrustumCulled) { + culled = !frustum.intersectsSphere(_sphere$2, camera); + } + if (!culled) { + const geometryInfo = geometryInfoList[geometryId]; + const z = _temp.subVectors(_sphere$2.center, _vector$5).dot(_forward$1); + _renderList.push(geometryInfo.start, geometryInfo.count, z, i); + } + } + } + const list = _renderList.list; + const customSort = this.customSort; + if (customSort === null) { + list.sort(material.transparent ? sortTransparent : sortOpaque); + } else { + customSort.call(this, list, camera); + } + for (let i = 0, l = list.length; i < l; i++) { + const item = list[i]; + multiDrawStarts[multiDrawCount] = item.start * bytesPerElement; + multiDrawCounts[multiDrawCount] = item.count; + indirectArray[multiDrawCount] = item.index; + multiDrawCount++; + } + _renderList.reset(); + } else { + for (let i = 0, l = instanceInfo.length; i < l; i++) { + if (instanceInfo[i].visible && instanceInfo[i].active) { + const geometryId = instanceInfo[i].geometryIndex; + let culled = false; + if (perObjectFrustumCulled) { + this.getMatrixAt(i, _matrix$1); + this.getBoundingSphereAt(geometryId, _sphere$2).applyMatrix4(_matrix$1); + culled = !frustum.intersectsSphere(_sphere$2, camera); + } + if (!culled) { + const geometryInfo = geometryInfoList[geometryId]; + multiDrawStarts[multiDrawCount] = geometryInfo.start * bytesPerElement; + multiDrawCounts[multiDrawCount] = geometryInfo.count; + indirectArray[multiDrawCount] = i; + multiDrawCount++; + } + } + } + } + indirectTexture.needsUpdate = true; + this._multiDrawCount = multiDrawCount; + this._visibilityChanged = false; + } + onBeforeShadow(renderer, object, camera, shadowCamera, geometry, depthMaterial) { + this.onBeforeRender(renderer, null, shadowCamera, geometry, depthMaterial); + } +} +class LineBasicMaterial extends Material$1 { + /** + * Constructs a new line basic material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor(parameters) { + super(); + this.isLineBasicMaterial = true; + this.type = "LineBasicMaterial"; + this.color = new Color(16777215); + this.map = null; + this.linewidth = 1; + this.linecap = "round"; + this.linejoin = "round"; + this.fog = true; + this.setValues(parameters); + } + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.linewidth = source.linewidth; + this.linecap = source.linecap; + this.linejoin = source.linejoin; + this.fog = source.fog; + return this; + } +} +const _vStart = /* @__PURE__ */ new Vector3(); +const _vEnd = /* @__PURE__ */ new Vector3(); +const _inverseMatrix$1 = /* @__PURE__ */ new Matrix4(); +const _ray$1 = /* @__PURE__ */ new Ray(); +const _sphere$1 = /* @__PURE__ */ new Sphere(); +const _intersectPointOnRay = /* @__PURE__ */ new Vector3(); +const _intersectPointOnSegment = /* @__PURE__ */ new Vector3(); +class Line extends Object3D { + /** + * Constructs a new line. + * + * @param {BufferGeometry} [geometry] - The line geometry. + * @param {Material|Array} [material] - The line material. + */ + constructor(geometry = new BufferGeometry(), material = new LineBasicMaterial()) { + super(); + this.isLine = true; + this.type = "Line"; + this.geometry = geometry; + this.material = material; + this.morphTargetDictionary = void 0; + this.morphTargetInfluences = void 0; + this.updateMorphTargets(); + } + copy(source, recursive) { + super.copy(source, recursive); + this.material = Array.isArray(source.material) ? source.material.slice() : source.material; + this.geometry = source.geometry; + return this; + } + /** + * Computes an array of distance values which are necessary for rendering dashed lines. + * For each vertex in the geometry, the method calculates the cumulative length from the + * current point to the very beginning of the line. + * + * @return {Line} A reference to this line. + */ + computeLineDistances() { + const geometry = this.geometry; + if (geometry.index === null) { + const positionAttribute = geometry.attributes.position; + const lineDistances = [0]; + for (let i = 1, l = positionAttribute.count; i < l; i++) { + _vStart.fromBufferAttribute(positionAttribute, i - 1); + _vEnd.fromBufferAttribute(positionAttribute, i); + lineDistances[i] = lineDistances[i - 1]; + lineDistances[i] += _vStart.distanceTo(_vEnd); + } + geometry.setAttribute("lineDistance", new Float32BufferAttribute(lineDistances, 1)); + } else { + warn("Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry."); + } + return this; + } + /** + * Computes intersection points between a casted ray and this line. + * + * @param {Raycaster} raycaster - The raycaster. + * @param {Array} intersects - The target array that holds the intersection points. + */ + raycast(raycaster, intersects2) { + const geometry = this.geometry; + const matrixWorld = this.matrixWorld; + const threshold = raycaster.params.Line.threshold; + const drawRange = geometry.drawRange; + if (geometry.boundingSphere === null) + geometry.computeBoundingSphere(); + _sphere$1.copy(geometry.boundingSphere); + _sphere$1.applyMatrix4(matrixWorld); + _sphere$1.radius += threshold; + if (raycaster.ray.intersectsSphere(_sphere$1) === false) + return; + _inverseMatrix$1.copy(matrixWorld).invert(); + _ray$1.copy(raycaster.ray).applyMatrix4(_inverseMatrix$1); + const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3); + const localThresholdSq = localThreshold * localThreshold; + const step = this.isLineSegments ? 2 : 1; + const index = geometry.index; + const attributes = geometry.attributes; + const positionAttribute = attributes.position; + if (index !== null) { + const start = Math.max(0, drawRange.start); + const end = Math.min(index.count, drawRange.start + drawRange.count); + for (let i = start, l = end - 1; i < l; i += step) { + const a = index.getX(i); + const b = index.getX(i + 1); + const intersect = checkIntersection$2(this, raycaster, _ray$1, localThresholdSq, a, b, i); + if (intersect) { + intersects2.push(intersect); + } + } + if (this.isLineLoop) { + const a = index.getX(end - 1); + const b = index.getX(start); + const intersect = checkIntersection$2(this, raycaster, _ray$1, localThresholdSq, a, b, end - 1); + if (intersect) { + intersects2.push(intersect); + } + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count); + for (let i = start, l = end - 1; i < l; i += step) { + const intersect = checkIntersection$2(this, raycaster, _ray$1, localThresholdSq, i, i + 1, i); + if (intersect) { + intersects2.push(intersect); + } + } + if (this.isLineLoop) { + const intersect = checkIntersection$2(this, raycaster, _ray$1, localThresholdSq, end - 1, start, end - 1); + if (intersect) { + intersects2.push(intersect); + } + } + } + } + /** + * Sets the values of {@link Line#morphTargetDictionary} and {@link Line#morphTargetInfluences} + * to make sure existing morph targets can influence this 3D object. + */ + updateMorphTargets() { + const geometry = this.geometry; + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys(morphAttributes); + if (keys.length > 0) { + const morphAttribute = morphAttributes[keys[0]]; + if (morphAttribute !== void 0) { + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + for (let m = 0, ml = morphAttribute.length; m < ml; m++) { + const name = morphAttribute[m].name || String(m); + this.morphTargetInfluences.push(0); + this.morphTargetDictionary[name] = m; + } + } + } + } +} +function checkIntersection$2(object, raycaster, ray, thresholdSq, a, b, i) { + const positionAttribute = object.geometry.attributes.position; + _vStart.fromBufferAttribute(positionAttribute, a); + _vEnd.fromBufferAttribute(positionAttribute, b); + const distSq = ray.distanceSqToSegment(_vStart, _vEnd, _intersectPointOnRay, _intersectPointOnSegment); + if (distSq > thresholdSq) + return; + _intersectPointOnRay.applyMatrix4(object.matrixWorld); + const distance = raycaster.ray.origin.distanceTo(_intersectPointOnRay); + if (distance < raycaster.near || distance > raycaster.far) + return; + return { + distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: _intersectPointOnSegment.clone().applyMatrix4(object.matrixWorld), + index: i, + face: null, + faceIndex: null, + barycoord: null, + object + }; +} +const _start = /* @__PURE__ */ new Vector3(); +const _end = /* @__PURE__ */ new Vector3(); +class LineSegments extends Line { + /** + * Constructs a new line segments. + * + * @param {BufferGeometry} [geometry] - The line geometry. + * @param {Material|Array} [material] - The line material. + */ + constructor(geometry, material) { + super(geometry, material); + this.isLineSegments = true; + this.type = "LineSegments"; + } + computeLineDistances() { + const geometry = this.geometry; + if (geometry.index === null) { + const positionAttribute = geometry.attributes.position; + const lineDistances = []; + for (let i = 0, l = positionAttribute.count; i < l; i += 2) { + _start.fromBufferAttribute(positionAttribute, i); + _end.fromBufferAttribute(positionAttribute, i + 1); + lineDistances[i] = i === 0 ? 0 : lineDistances[i - 1]; + lineDistances[i + 1] = lineDistances[i] + _start.distanceTo(_end); + } + geometry.setAttribute("lineDistance", new Float32BufferAttribute(lineDistances, 1)); + } else { + warn("LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry."); + } + return this; + } +} +class LineLoop extends Line { + /** + * Constructs a new line loop. + * + * @param {BufferGeometry} [geometry] - The line geometry. + * @param {Material|Array} [material] - The line material. + */ + constructor(geometry, material) { + super(geometry, material); + this.isLineLoop = true; + this.type = "LineLoop"; + } +} +class PointsMaterial extends Material$1 { + /** + * Constructs a new points material. + * + * @param {Object} [parameters] - An object with one or more properties + * defining the material's appearance. Any property of the material + * (including any property from inherited materials) can be passed + * in here. Color values can be passed any type of value accepted + * by {@link Color#set}. + */ + constructor(parameters) { + super(); + this.isPointsMaterial = true; + this.type = "PointsMaterial"; + this.color = new Color(16777215); + this.map = null; + this.alphaMap = null; + this.size = 1; + this.sizeAttenuation = true; + this.fog = true; + this.setValues(parameters); + } + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.alphaMap = source.alphaMap; + this.size = source.size; + this.sizeAttenuation = source.sizeAttenuation; + this.fog = source.fog; + return this; + } +} +const _inverseMatrix$2 = /* @__PURE__ */ new Matrix4(); +const _ray$2 = /* @__PURE__ */ new Ray(); +const _sphere = /* @__PURE__ */ new Sphere(); +const _position$2 = /* @__PURE__ */ new Vector3(); +class Points extends Object3D { + /** + * Constructs a new point cloud. + * + * @param {BufferGeometry} [geometry] - The points geometry. + * @param {Material|Array} [material] - The points material. + */ + constructor(geometry = new BufferGeometry(), material = new PointsMaterial()) { + super(); + this.isPoints = true; + this.type = "Points"; + this.geometry = geometry; + this.material = material; + this.morphTargetDictionary = void 0; + this.morphTargetInfluences = void 0; + this.updateMorphTargets(); + } + copy(source, recursive) { + super.copy(source, recursive); + this.material = Array.isArray(source.material) ? source.material.slice() : source.material; + this.geometry = source.geometry; + return this; + } + /** + * Computes intersection points between a casted ray and this point cloud. + * + * @param {Raycaster} raycaster - The raycaster. + * @param {Array} intersects - The target array that holds the intersection points. + */ + raycast(raycaster, intersects2) { + const geometry = this.geometry; + const matrixWorld = this.matrixWorld; + const threshold = raycaster.params.Points.threshold; + const drawRange = geometry.drawRange; + if (geometry.boundingSphere === null) + geometry.computeBoundingSphere(); + _sphere.copy(geometry.boundingSphere); + _sphere.applyMatrix4(matrixWorld); + _sphere.radius += threshold; + if (raycaster.ray.intersectsSphere(_sphere) === false) + return; + _inverseMatrix$2.copy(matrixWorld).invert(); + _ray$2.copy(raycaster.ray).applyMatrix4(_inverseMatrix$2); + const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3); + const localThresholdSq = localThreshold * localThreshold; + const index = geometry.index; + const attributes = geometry.attributes; + const positionAttribute = attributes.position; + if (index !== null) { + const start = Math.max(0, drawRange.start); + const end = Math.min(index.count, drawRange.start + drawRange.count); + for (let i = start, il = end; i < il; i++) { + const a = index.getX(i); + _position$2.fromBufferAttribute(positionAttribute, a); + testPoint(_position$2, a, localThresholdSq, matrixWorld, raycaster, intersects2, this); + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count); + for (let i = start, l = end; i < l; i++) { + _position$2.fromBufferAttribute(positionAttribute, i); + testPoint(_position$2, i, localThresholdSq, matrixWorld, raycaster, intersects2, this); + } + } + } + /** + * Sets the values of {@link Points#morphTargetDictionary} and {@link Points#morphTargetInfluences} + * to make sure existing morph targets can influence this 3D object. + */ + updateMorphTargets() { + const geometry = this.geometry; + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys(morphAttributes); + if (keys.length > 0) { + const morphAttribute = morphAttributes[keys[0]]; + if (morphAttribute !== void 0) { + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + for (let m = 0, ml = morphAttribute.length; m < ml; m++) { + const name = morphAttribute[m].name || String(m); + this.morphTargetInfluences.push(0); + this.morphTargetDictionary[name] = m; + } + } + } + } +} +function testPoint(point, index, localThresholdSq, matrixWorld, raycaster, intersects2, object) { + const rayPointDistanceSq = _ray$2.distanceSqToPoint(point); + if (rayPointDistanceSq < localThresholdSq) { + const intersectPoint = new Vector3(); + _ray$2.closestPointToPoint(point, intersectPoint); + intersectPoint.applyMatrix4(matrixWorld); + const distance = raycaster.ray.origin.distanceTo(intersectPoint); + if (distance < raycaster.near || distance > raycaster.far) + return; + intersects2.push({ + distance, + distanceToRay: Math.sqrt(rayPointDistanceSq), + point: intersectPoint, + index, + face: null, + faceIndex: null, + barycoord: null, + object + }); + } +} +const _startP = /* @__PURE__ */ new Vector3(); +const _startEnd = /* @__PURE__ */ new Vector3(); +const _d1 = /* @__PURE__ */ new Vector3(); +const _d2 = /* @__PURE__ */ new Vector3(); +const _r = /* @__PURE__ */ new Vector3(); +const _c1 = /* @__PURE__ */ new Vector3(); +const _c2 = /* @__PURE__ */ new Vector3(); +class Line3 { + /** + * Constructs a new line segment. + * + * @param {Vector3} [start=(0,0,0)] - Start of the line segment. + * @param {Vector3} [end=(0,0,0)] - End of the line segment. + */ + constructor(start = new Vector3(), end = new Vector3()) { + this.start = start; + this.end = end; + } + /** + * Sets the start and end values by copying the given vectors. + * + * @param {Vector3} start - The start point. + * @param {Vector3} end - The end point. + * @return {Line3} A reference to this line segment. + */ + set(start, end) { + this.start.copy(start); + this.end.copy(end); + return this; + } + /** + * Copies the values of the given line segment to this instance. + * + * @param {Line3} line - The line segment to copy. + * @return {Line3} A reference to this line segment. + */ + copy(line) { + this.start.copy(line.start); + this.end.copy(line.end); + return this; + } + /** + * Returns the center of the line segment. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The center point. + */ + getCenter(target) { + return target.addVectors(this.start, this.end).multiplyScalar(0.5); + } + /** + * Returns the delta vector of the line segment's start and end point. + * + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The delta vector. + */ + delta(target) { + return target.subVectors(this.end, this.start); + } + /** + * Returns the squared Euclidean distance between the line' start and end point. + * + * @return {number} The squared Euclidean distance. + */ + distanceSq() { + return this.start.distanceToSquared(this.end); + } + /** + * Returns the Euclidean distance between the line' start and end point. + * + * @return {number} The Euclidean distance. + */ + distance() { + return this.start.distanceTo(this.end); + } + /** + * Returns a vector at a certain position along the line segment. + * + * @param {number} t - A value between `[0,1]` to represent a position along the line segment. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The delta vector. + */ + at(t, target) { + return this.delta(target).multiplyScalar(t).add(this.start); + } + /** + * Returns a point parameter based on the closest point as projected on the line segment. + * + * @param {Vector3} point - The point for which to return a point parameter. + * @param {boolean} clampToLine - Whether to clamp the result to the range `[0,1]` or not. + * @return {number} The point parameter. + */ + closestPointToPointParameter(point, clampToLine) { + _startP.subVectors(point, this.start); + _startEnd.subVectors(this.end, this.start); + const startEnd2 = _startEnd.dot(_startEnd); + const startEnd_startP = _startEnd.dot(_startP); + let t = startEnd_startP / startEnd2; + if (clampToLine) { + t = clamp(t, 0, 1); + } + return t; + } + /** + * Returns the closest point on the line for a given point. + * + * @param {Vector3} point - The point to compute the closest point on the line for. + * @param {boolean} clampToLine - Whether to clamp the result to the range `[0,1]` or not. + * @param {Vector3} target - The target vector that is used to store the method's result. + * @return {Vector3} The closest point on the line. + */ + closestPointToPoint(point, clampToLine, target) { + const t = this.closestPointToPointParameter(point, clampToLine); + return this.delta(target).multiplyScalar(t).add(this.start); + } + /** + * Returns the closest squared distance between this line segment and the given one. + * + * @param {Line3} line - The line segment to compute the closest squared distance to. + * @param {Vector3} [c1] - The closest point on this line segment. + * @param {Vector3} [c2] - The closest point on the given line segment. + * @return {number} The squared distance between this line segment and the given one. + */ + distanceSqToLine3(line, c1 = _c1, c2 = _c2) { + const EPSILON = 1e-8 * 1e-8; + let s, t; + const p1 = this.start; + const p2 = line.start; + const q1 = this.end; + const q2 = line.end; + _d1.subVectors(q1, p1); + _d2.subVectors(q2, p2); + _r.subVectors(p1, p2); + const a = _d1.dot(_d1); + const e = _d2.dot(_d2); + const f = _d2.dot(_r); + if (a <= EPSILON && e <= EPSILON) { + c1.copy(p1); + c2.copy(p2); + c1.sub(c2); + return c1.dot(c1); + } + if (a <= EPSILON) { + s = 0; + t = f / e; + t = clamp(t, 0, 1); + } else { + const c = _d1.dot(_r); + if (e <= EPSILON) { + t = 0; + s = clamp(-c / a, 0, 1); + } else { + const b = _d1.dot(_d2); + const denom = a * e - b * b; + if (denom !== 0) { + s = clamp((b * f - c * e) / denom, 0, 1); + } else { + s = 0; + } + t = (b * s + f) / e; + if (t < 0) { + t = 0; + s = clamp(-c / a, 0, 1); + } else if (t > 1) { + t = 1; + s = clamp((b - c) / a, 0, 1); + } + } + } + c1.copy(p1).add(_d1.multiplyScalar(s)); + c2.copy(p2).add(_d2.multiplyScalar(t)); + c1.sub(c2); + return c1.dot(c1); + } + /** + * Applies a 4x4 transformation matrix to this line segment. + * + * @param {Matrix4} matrix - The transformation matrix. + * @return {Line3} A reference to this line segment. + */ + applyMatrix4(matrix) { + this.start.applyMatrix4(matrix); + this.end.applyMatrix4(matrix); + return this; + } + /** + * Returns `true` if this line segment is equal with the given one. + * + * @param {Line3} line - The line segment to test for equality. + * @return {boolean} Whether this line segment is equal with the given one. + */ + equals(line) { + return line.start.equals(this.start) && line.end.equals(this.end); + } + /** + * Returns a new line segment with copied values from this instance. + * + * @return {Line3} A clone of this instance. + */ + clone() { + return new this.constructor().copy(this); + } +} +if (typeof __THREE_DEVTOOLS__ !== "undefined") { + __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register", { detail: { + revision: REVISION + } })); +} +if (typeof window !== "undefined") { + if (window.__THREE__) { + warn("WARNING: Multiple instances of Three.js being imported."); + } else { + window.__THREE__ = REVISION; + } +} +const limitOf2Bytes = 65536; +var ObjectClass = /* @__PURE__ */ ((ObjectClass2) => { + ObjectClass2[ObjectClass2["LINE"] = 0] = "LINE"; + ObjectClass2[ObjectClass2["SHELL"] = 1] = "SHELL"; + return ObjectClass2; +})(ObjectClass || {}); +var TileRequestClass = /* @__PURE__ */ ((TileRequestClass2) => { + TileRequestClass2[TileRequestClass2["UPDATE"] = 0] = "UPDATE"; + TileRequestClass2[TileRequestClass2["CREATE"] = 1] = "CREATE"; + TileRequestClass2[TileRequestClass2["DELETE"] = 2] = "DELETE"; + TileRequestClass2[TileRequestClass2["FINISH"] = 3] = "FINISH"; + return TileRequestClass2; +})(TileRequestClass || {}); +var CurrentLod = /* @__PURE__ */ ((CurrentLod2) => { + CurrentLod2[CurrentLod2["GEOMETRY"] = 0] = "GEOMETRY"; + CurrentLod2[CurrentLod2["WIRES"] = 1] = "WIRES"; + CurrentLod2[CurrentLod2["INVISIBLE"] = 2] = "INVISIBLE"; + return CurrentLod2; +})(CurrentLod || {}); +var MultiThreadingRequestClass = /* @__PURE__ */ ((MultiThreadingRequestClass2) => { + MultiThreadingRequestClass2[MultiThreadingRequestClass2["CREATE_MODEL"] = 0] = "CREATE_MODEL"; + MultiThreadingRequestClass2[MultiThreadingRequestClass2["DELETE_MODEL"] = 1] = "DELETE_MODEL"; + MultiThreadingRequestClass2[MultiThreadingRequestClass2["EXECUTE"] = 2] = "EXECUTE"; + MultiThreadingRequestClass2[MultiThreadingRequestClass2["RAYCAST"] = 3] = "RAYCAST"; + MultiThreadingRequestClass2[MultiThreadingRequestClass2["FETCH_BOXES"] = 4] = "FETCH_BOXES"; + MultiThreadingRequestClass2[MultiThreadingRequestClass2["REFRESH_VIEW"] = 5] = "REFRESH_VIEW"; + MultiThreadingRequestClass2[MultiThreadingRequestClass2["RECOMPUTE_MESHES"] = 6] = "RECOMPUTE_MESHES"; + MultiThreadingRequestClass2[MultiThreadingRequestClass2["CREATE_MATERIAL"] = 7] = "CREATE_MATERIAL"; + MultiThreadingRequestClass2[MultiThreadingRequestClass2["THROW_ERROR"] = 8] = "THROW_ERROR"; + MultiThreadingRequestClass2[MultiThreadingRequestClass2["LOAD_PROGRESS"] = 9] = "LOAD_PROGRESS"; + MultiThreadingRequestClass2[MultiThreadingRequestClass2["ABORT_MODEL"] = 10] = "ABORT_MODEL"; + return MultiThreadingRequestClass2; +})(MultiThreadingRequestClass || {}); +class LoadAbortedError extends Error { + constructor(modelId) { + super(`Fragments: Load of model "${modelId}" was aborted.`); + this.name = "LoadAbortedError"; + } +} +var ItemConfigClass = /* @__PURE__ */ ((ItemConfigClass2) => { + ItemConfigClass2[ItemConfigClass2["VISIBLE"] = 0] = "VISIBLE"; + return ItemConfigClass2; +})(ItemConfigClass || {}); +var SnappingClass = /* @__PURE__ */ ((SnappingClass2) => { + SnappingClass2[SnappingClass2["POINT"] = 0] = "POINT"; + SnappingClass2[SnappingClass2["LINE"] = 1] = "LINE"; + SnappingClass2[SnappingClass2["FACE"] = 2] = "FACE"; + return SnappingClass2; +})(SnappingClass || {}); +const ALIGNMENT_CATEGORY = "ThatOpenAlignment"; +const GRID_CATEGORY = "ThatOpenGrid"; +var LodMode = /* @__PURE__ */ ((LodMode2) => { + LodMode2[LodMode2["DEFAULT"] = 0] = "DEFAULT"; + LodMode2[LodMode2["ALL_VISIBLE"] = 1] = "ALL_VISIBLE"; + LodMode2[LodMode2["ALL_GEOMETRY"] = 2] = "ALL_GEOMETRY"; + return LodMode2; +})(LodMode || {}); +const _MultithreadingHelper = class _MultithreadingHelper { + static newThread(url, classic) { + return classic ? new Worker(url) : new Worker(url, { type: "module" }); + } + static newUpdater(effect, rate) { + return setInterval(effect, rate); + } + static getMeshComputeRequest(modelId, list) { + const className = MultiThreadingRequestClass.RECOMPUTE_MESHES; + return { class: className, modelId, list }; + } + static planeSet(planes) { + const planeSet = []; + for (const plane of planes) { + const newNormal = this.array(plane.normal); + const newConstant = plane.constant; + const newPlane = new Plane(newNormal, newConstant); + planeSet.push(newPlane); + } + return planeSet; + } + static data(data) { + var _a2, _b2; + const isTransform = (data == null ? void 0 : data.elements) !== void 0; + if (isTransform) { + return _MultithreadingHelper.transform(data); + } + const isBeam = (data == null ? void 0 : data.origin) !== void 0 && (data == null ? void 0 : data.direction) !== void 0; + if (isBeam) { + return _MultithreadingHelper.beam(data); + } + const isFrustum = (data == null ? void 0 : data.planes) !== void 0; + if (isFrustum) { + return _MultithreadingHelper.frustum(data); + } + const hasNormal = (data == null ? void 0 : data.normal) !== void 0; + const hasConstant = (data == null ? void 0 : data.constant) !== void 0; + const isPlane = hasNormal && hasConstant; + if (isPlane) { + return _MultithreadingHelper.plane(data); + } + const hasNormalSet = ((_a2 = data[0]) == null ? void 0 : _a2.normal) !== void 0; + const hasConstantSet = ((_b2 = data[0]) == null ? void 0 : _b2.constant) !== void 0; + const isPlaneSet = hasNormalSet && hasConstantSet; + if (isPlaneSet) { + return _MultithreadingHelper.planeSet(data); + } + const hasX = (data == null ? void 0 : data.x) !== void 0; + const hasY = (data == null ? void 0 : data.y) !== void 0; + const hasZ = (data == null ? void 0 : data.z) !== void 0; + const isArray = hasX && hasY && hasZ; + if (isArray) { + return _MultithreadingHelper.array(data); + } + return data; + } + /** + * Last seq dispatched. Snapshot at `forceUpdateFinish` call time + * to know which seq must settle before we can resolve. + */ + static get lastDispatchedSeq() { + return _MultithreadingHelper._seq; + } + static nextSeq() { + _MultithreadingHelper._seq += 1; + return _MultithreadingHelper._seq; + } + static getExecuteRequest(modelId, method, args) { + const parameters = Array.from(args); + const className = MultiThreadingRequestClass.EXECUTE; + return { class: className, modelId, function: method, parameters }; + } + static plane(plane) { + const newNormal = this.array(plane.normal); + const newConstant = plane.constant; + const newPlane = new Plane(newNormal, newConstant); + return newPlane; + } + static getRequestContent(input) { + const content = []; + for (const request of input.list) { + _MultithreadingHelper.setupCreateRequest(request, content); + _MultithreadingHelper.setupUpdateRequest(request, content); + } + return content; + } + static array(vector) { + const array = new Vector3(); + array.set(vector.x, vector.y, vector.z); + return array; + } + static cleanRequests(list) { + const tasks = []; + const helper = _MultithreadingHelper; + for (const request of list) { + const isFinish = helper.isFinishRequest(request); + if (!isFinish) { + tasks.push(request); + } + } + return tasks; + } + static frustum(frustum) { + const newPlane = this.planeSet(frustum.planes); + const [a, b, c, d, e, f] = newPlane; + return new Frustum(a, b, c, d, e, f); + } + static beam(ray) { + const newOrigin = this.array(ray.origin); + const newDirection = this.array(ray.direction); + return new Ray(newOrigin, newDirection); + } + static transform(matrix) { + const newMatrix = new Matrix4(); + newMatrix.copy(matrix); + return newMatrix; + } + static deleteUpdater(updater) { + clearInterval(updater); + } + static areCoresAvailable(currentThreads) { + const capacity = _MultithreadingHelper.getCpuCapacity(); + const availableThreads = Math.max(capacity, 2); + return currentThreads < availableThreads; + } + /** + * Effective max worker cap. Defaults to navigator.hardwareConcurrency - 3, + * floored at 2 (matching the legacy areCoresAvailable behavior). Callers + * may pass an explicit override (e.g. CI environments or apps that know + * their workload). Floors at 2 even when overridden. + */ + static getMaxWorkers(override) { + if (override !== void 0) { + if (!Number.isFinite(override) || override < 2) { + throw new Error( + `Fragments: maxWorkers must be a finite number >= 2 (got ${override}).` + ); + } + return Math.floor(override); + } + const capacity = _MultithreadingHelper.getCpuCapacity(); + return Math.max(capacity, 2); + } + static isFinishRequest(request) { + return request.tileRequestClass === TileRequestClass.FINISH; + } + static setupUpdateRequest(request, content) { + if (request.tileRequestClass === TileRequestClass.UPDATE) { + this.addAllTileData(request, content); + } + } + static getCpuCapacity() { + var _a2; + const freeCores = 3; + if ((_a2 = globalThis.navigator) == null ? void 0 : _a2.hardwareConcurrency) { + return navigator.hardwareConcurrency - freeCores; + } + return 0; + } + static addAllTileData(request, content) { + this.addRequestTileData(request, content, "visibilityData"); + const extras = ["highlightIds"]; + this.addRequestTileData(request, content, "highlightData", extras); + } + static addRequestContent(id, request, content) { + if (!request[id]) + return; + const buffer = request[id].buffer; + content.push(buffer); + } + static addRequestTileData(request, content, name, extras = []) { + const data = request.tileData[name]; + if (data) { + content.push(data.position.buffer); + content.push(data.size.buffer); + for (const extra of extras) { + content.push(request.tileData[extra].buffer); + } + } + } + static setupCreateRequest(request, content) { + if (request.tileRequestClass !== TileRequestClass.CREATE) { + return; + } + const ids = this.getCreateRequestIds(); + for (const id of ids) { + this.addRequestContent(id, request, content); + } + this.addAllTileData(request, content); + } + static getCreateRequestIds() { + return ["positions", "indices", "normals", "itemIds"]; + } +}; +/** + * Monotonic sequence counter for RPC fence tracking. Every EXECUTE + * request gets a fresh seq; the worker tags emitted FINISH tile + * requests with the highest seq it has processed since the previous + * FINISH, and main uses that to resolve `forceUpdateFinish` waiters + * without polling. + * + * Module-level rather than per-FragmentsModels because the seq + * space only needs to be unique across messages a single main + * thread is sending; multiple FragmentsModels in the same window + * would race on a shared counter regardless. This is simpler and + * avoids threading through the helper's API. + */ +__publicField(_MultithreadingHelper, "_seq", 0); +let MultithreadingHelper = _MultithreadingHelper; +class Connection { + constructor(handleInput) { + __publicField(this, "_handlers", new ConnectionHandlers()); + __publicField(this, "_handleInput"); + __publicField(this, "_port"); + __publicField(this, "onInput", (input) => { + if (input.data.toMainThread) { + this._handlers.run(input.data); + return; + } + this.manageInput(input.data); + }); + this._handleInput = handleInput; + } + fetchMeshCompute(modelId, list) { + const helper = MultithreadingHelper; + const input = helper.getMeshComputeRequest(modelId, list); + const content = helper.getRequestContent(input); + this.fetch(input, content); + } + fetch(input, content) { + this._handlers.setupInput(input); + return new Promise((resolve, reject) => { + this._handlers.set(input.requestId, reject, resolve); + this.executeConnection(input, content); + }); + } + init(port) { + this._port = port; + this.initConnection(port); + } + initConnection(connection) { + connection.onmessage = this.onInput; + } + async fetchConnection(_input) { + if (!this._port) { + throw new Error("Fragments: Connection not initialized"); + } + return this._port; + } + async executeConnection(input, content) { + const connectionPort = await this.fetchConnection(input); + connectionPort.postMessage(input, content); + } + async manageOutput(input) { + const connection = await this.fetchConnection(input); + input.toMainThread = true; + connection.postMessage(input); + } + async manageConnection(input) { + try { + await this._handleInput(input); + } catch (error2) { + input.errorInfo = error2.toString(); + if ((error2 == null ? void 0 : error2.name) !== "LoadAbortedError") { + console.error(error2); + } + } + } + async manageInput(input) { + await this.manageConnection(input); + await this.manageOutput(input); + } +} +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ +const Z_FIXED$1 = 4; +const Z_BINARY = 0; +const Z_TEXT = 1; +const Z_UNKNOWN$1 = 2; +function zero$1(buf) { + let len = buf.length; + while (--len >= 0) { + buf[len] = 0; + } +} +const STORED_BLOCK = 0; +const STATIC_TREES = 1; +const DYN_TREES = 2; +const MIN_MATCH$1 = 3; +const MAX_MATCH$1 = 258; +const LENGTH_CODES$1 = 29; +const LITERALS$1 = 256; +const L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1; +const D_CODES$1 = 30; +const BL_CODES$1 = 19; +const HEAP_SIZE$1 = 2 * L_CODES$1 + 1; +const MAX_BITS$1 = 15; +const Buf_size = 16; +const MAX_BL_BITS = 7; +const END_BLOCK = 256; +const REP_3_6 = 16; +const REPZ_3_10 = 17; +const REPZ_11_138 = 18; +const extra_lbits = ( + /* extra bits for each length code */ + new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]) +); +const extra_dbits = ( + /* extra bits for each distance code */ + new Uint8Array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]) +); +const extra_blbits = ( + /* extra bits for each bit length code */ + new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]) +); +const bl_order = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +const DIST_CODE_LEN = 512; +const static_ltree = new Array((L_CODES$1 + 2) * 2); +zero$1(static_ltree); +const static_dtree = new Array(D_CODES$1 * 2); +zero$1(static_dtree); +const _dist_code = new Array(DIST_CODE_LEN); +zero$1(_dist_code); +const _length_code = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1); +zero$1(_length_code); +const base_length = new Array(LENGTH_CODES$1); +zero$1(base_length); +const base_dist = new Array(D_CODES$1); +zero$1(base_dist); +function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { + this.static_tree = static_tree; + this.extra_bits = extra_bits; + this.extra_base = extra_base; + this.elems = elems; + this.max_length = max_length; + this.has_stree = static_tree && static_tree.length; +} +let static_l_desc; +let static_d_desc; +let static_bl_desc; +function TreeDesc(dyn_tree, stat_desc) { + this.dyn_tree = dyn_tree; + this.max_code = 0; + this.stat_desc = stat_desc; +} +const d_code = (dist) => { + return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; +}; +const put_short = (s, w) => { + s.pending_buf[s.pending++] = w & 255; + s.pending_buf[s.pending++] = w >>> 8 & 255; +}; +const send_bits = (s, value, length) => { + if (s.bi_valid > Buf_size - length) { + s.bi_buf |= value << s.bi_valid & 65535; + put_short(s, s.bi_buf); + s.bi_buf = value >> Buf_size - s.bi_valid; + s.bi_valid += length - Buf_size; + } else { + s.bi_buf |= value << s.bi_valid & 65535; + s.bi_valid += length; + } +}; +const send_code = (s, c, tree) => { + send_bits( + s, + tree[c * 2], + tree[c * 2 + 1] + /*.Len*/ + ); +}; +const bi_reverse = (code, len) => { + let res = 0; + do { + res |= code & 1; + code >>>= 1; + res <<= 1; + } while (--len > 0); + return res >>> 1; +}; +const bi_flush = (s) => { + if (s.bi_valid === 16) { + put_short(s, s.bi_buf); + s.bi_buf = 0; + s.bi_valid = 0; + } else if (s.bi_valid >= 8) { + s.pending_buf[s.pending++] = s.bi_buf & 255; + s.bi_buf >>= 8; + s.bi_valid -= 8; + } +}; +const gen_bitlen = (s, desc) => { + const tree = desc.dyn_tree; + const max_code = desc.max_code; + const stree = desc.stat_desc.static_tree; + const has_stree = desc.stat_desc.has_stree; + const extra = desc.stat_desc.extra_bits; + const base = desc.stat_desc.extra_base; + const max_length = desc.stat_desc.max_length; + let h; + let n, m; + let bits; + let xbits; + let f; + let overflow = 0; + for (bits = 0; bits <= MAX_BITS$1; bits++) { + s.bl_count[bits] = 0; + } + tree[s.heap[s.heap_max] * 2 + 1] = 0; + for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) { + n = s.heap[h]; + bits = tree[tree[n * 2 + 1] * 2 + 1] + 1; + if (bits > max_length) { + bits = max_length; + overflow++; + } + tree[n * 2 + 1] = bits; + if (n > max_code) { + continue; + } + s.bl_count[bits]++; + xbits = 0; + if (n >= base) { + xbits = extra[n - base]; + } + f = tree[n * 2]; + s.opt_len += f * (bits + xbits); + if (has_stree) { + s.static_len += f * (stree[n * 2 + 1] + xbits); + } + } + if (overflow === 0) { + return; + } + do { + bits = max_length - 1; + while (s.bl_count[bits] === 0) { + bits--; + } + s.bl_count[bits]--; + s.bl_count[bits + 1] += 2; + s.bl_count[max_length]--; + overflow -= 2; + } while (overflow > 0); + for (bits = max_length; bits !== 0; bits--) { + n = s.bl_count[bits]; + while (n !== 0) { + m = s.heap[--h]; + if (m > max_code) { + continue; + } + if (tree[m * 2 + 1] !== bits) { + s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2]; + tree[m * 2 + 1] = bits; + } + n--; + } + } +}; +const gen_codes = (tree, max_code, bl_count) => { + const next_code = new Array(MAX_BITS$1 + 1); + let code = 0; + let bits; + let n; + for (bits = 1; bits <= MAX_BITS$1; bits++) { + code = code + bl_count[bits - 1] << 1; + next_code[bits] = code; + } + for (n = 0; n <= max_code; n++) { + let len = tree[n * 2 + 1]; + if (len === 0) { + continue; + } + tree[n * 2] = bi_reverse(next_code[len]++, len); + } +}; +const tr_static_init = () => { + let n; + let bits; + let length; + let code; + let dist; + const bl_count = new Array(MAX_BITS$1 + 1); + length = 0; + for (code = 0; code < LENGTH_CODES$1 - 1; code++) { + base_length[code] = length; + for (n = 0; n < 1 << extra_lbits[code]; n++) { + _length_code[length++] = code; + } + } + _length_code[length - 1] = code; + dist = 0; + for (code = 0; code < 16; code++) { + base_dist[code] = dist; + for (n = 0; n < 1 << extra_dbits[code]; n++) { + _dist_code[dist++] = code; + } + } + dist >>= 7; + for (; code < D_CODES$1; code++) { + base_dist[code] = dist << 7; + for (n = 0; n < 1 << extra_dbits[code] - 7; n++) { + _dist_code[256 + dist++] = code; + } + } + for (bits = 0; bits <= MAX_BITS$1; bits++) { + bl_count[bits] = 0; + } + n = 0; + while (n <= 143) { + static_ltree[n * 2 + 1] = 8; + n++; + bl_count[8]++; + } + while (n <= 255) { + static_ltree[n * 2 + 1] = 9; + n++; + bl_count[9]++; + } + while (n <= 279) { + static_ltree[n * 2 + 1] = 7; + n++; + bl_count[7]++; + } + while (n <= 287) { + static_ltree[n * 2 + 1] = 8; + n++; + bl_count[8]++; + } + gen_codes(static_ltree, L_CODES$1 + 1, bl_count); + for (n = 0; n < D_CODES$1; n++) { + static_dtree[n * 2 + 1] = 5; + static_dtree[n * 2] = bi_reverse(n, 5); + } + static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1); + static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1); + static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS); +}; +const init_block = (s) => { + let n; + for (n = 0; n < L_CODES$1; n++) { + s.dyn_ltree[n * 2] = 0; + } + for (n = 0; n < D_CODES$1; n++) { + s.dyn_dtree[n * 2] = 0; + } + for (n = 0; n < BL_CODES$1; n++) { + s.bl_tree[n * 2] = 0; + } + s.dyn_ltree[END_BLOCK * 2] = 1; + s.opt_len = s.static_len = 0; + s.sym_next = s.matches = 0; +}; +const bi_windup = (s) => { + if (s.bi_valid > 8) { + put_short(s, s.bi_buf); + } else if (s.bi_valid > 0) { + s.pending_buf[s.pending++] = s.bi_buf; + } + s.bi_buf = 0; + s.bi_valid = 0; +}; +const smaller = (tree, n, m, depth) => { + const _n2 = n * 2; + const _m2 = m * 2; + return tree[_n2] < tree[_m2] || tree[_n2] === tree[_m2] && depth[n] <= depth[m]; +}; +const pqdownheap = (s, tree, k) => { + const v = s.heap[k]; + let j = k << 1; + while (j <= s.heap_len) { + if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { + j++; + } + if (smaller(tree, v, s.heap[j], s.depth)) { + break; + } + s.heap[k] = s.heap[j]; + k = j; + j <<= 1; + } + s.heap[k] = v; +}; +const compress_block = (s, ltree, dtree) => { + let dist; + let lc; + let sx = 0; + let code; + let extra; + if (s.sym_next !== 0) { + do { + dist = s.pending_buf[s.sym_buf + sx++] & 255; + dist += (s.pending_buf[s.sym_buf + sx++] & 255) << 8; + lc = s.pending_buf[s.sym_buf + sx++]; + if (dist === 0) { + send_code(s, lc, ltree); + } else { + code = _length_code[lc]; + send_code(s, code + LITERALS$1 + 1, ltree); + extra = extra_lbits[code]; + if (extra !== 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); + } + dist--; + code = d_code(dist); + send_code(s, code, dtree); + extra = extra_dbits[code]; + if (extra !== 0) { + dist -= base_dist[code]; + send_bits(s, dist, extra); + } + } + } while (sx < s.sym_next); + } + send_code(s, END_BLOCK, ltree); +}; +const build_tree = (s, desc) => { + const tree = desc.dyn_tree; + const stree = desc.stat_desc.static_tree; + const has_stree = desc.stat_desc.has_stree; + const elems = desc.stat_desc.elems; + let n, m; + let max_code = -1; + let node; + s.heap_len = 0; + s.heap_max = HEAP_SIZE$1; + for (n = 0; n < elems; n++) { + if (tree[n * 2] !== 0) { + s.heap[++s.heap_len] = max_code = n; + s.depth[n] = 0; + } else { + tree[n * 2 + 1] = 0; + } + } + while (s.heap_len < 2) { + node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0; + tree[node * 2] = 1; + s.depth[node] = 0; + s.opt_len--; + if (has_stree) { + s.static_len -= stree[node * 2 + 1]; + } + } + desc.max_code = max_code; + for (n = s.heap_len >> 1; n >= 1; n--) { + pqdownheap(s, tree, n); + } + node = elems; + do { + n = s.heap[ + 1 + /*SMALLEST*/ + ]; + s.heap[ + 1 + /*SMALLEST*/ + ] = s.heap[s.heap_len--]; + pqdownheap( + s, + tree, + 1 + /*SMALLEST*/ + ); + m = s.heap[ + 1 + /*SMALLEST*/ + ]; + s.heap[--s.heap_max] = n; + s.heap[--s.heap_max] = m; + tree[node * 2] = tree[n * 2] + tree[m * 2]; + s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; + tree[n * 2 + 1] = tree[m * 2 + 1] = node; + s.heap[ + 1 + /*SMALLEST*/ + ] = node++; + pqdownheap( + s, + tree, + 1 + /*SMALLEST*/ + ); + } while (s.heap_len >= 2); + s.heap[--s.heap_max] = s.heap[ + 1 + /*SMALLEST*/ + ]; + gen_bitlen(s, desc); + gen_codes(tree, max_code, s.bl_count); +}; +const scan_tree = (s, tree, max_code) => { + let n; + let prevlen = -1; + let curlen; + let nextlen = tree[0 * 2 + 1]; + let count = 0; + let max_count = 7; + let min_count = 4; + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } + tree[(max_code + 1) * 2 + 1] = 65535; + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]; + if (++count < max_count && curlen === nextlen) { + continue; + } else if (count < min_count) { + s.bl_tree[curlen * 2] += count; + } else if (curlen !== 0) { + if (curlen !== prevlen) { + s.bl_tree[curlen * 2]++; + } + s.bl_tree[REP_3_6 * 2]++; + } else if (count <= 10) { + s.bl_tree[REPZ_3_10 * 2]++; + } else { + s.bl_tree[REPZ_11_138 * 2]++; + } + count = 0; + prevlen = curlen; + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; + } else { + max_count = 7; + min_count = 4; + } + } +}; +const send_tree = (s, tree, max_code) => { + let n; + let prevlen = -1; + let curlen; + let nextlen = tree[0 * 2 + 1]; + let count = 0; + let max_count = 7; + let min_count = 4; + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]; + if (++count < max_count && curlen === nextlen) { + continue; + } else if (count < min_count) { + do { + send_code(s, curlen, s.bl_tree); + } while (--count !== 0); + } else if (curlen !== 0) { + if (curlen !== prevlen) { + send_code(s, curlen, s.bl_tree); + count--; + } + send_code(s, REP_3_6, s.bl_tree); + send_bits(s, count - 3, 2); + } else if (count <= 10) { + send_code(s, REPZ_3_10, s.bl_tree); + send_bits(s, count - 3, 3); + } else { + send_code(s, REPZ_11_138, s.bl_tree); + send_bits(s, count - 11, 7); + } + count = 0; + prevlen = curlen; + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; + } else { + max_count = 7; + min_count = 4; + } + } +}; +const build_bl_tree = (s) => { + let max_blindex; + scan_tree(s, s.dyn_ltree, s.l_desc.max_code); + scan_tree(s, s.dyn_dtree, s.d_desc.max_code); + build_tree(s, s.bl_desc); + for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) { + if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !== 0) { + break; + } + } + s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; + return max_blindex; +}; +const send_all_trees = (s, lcodes, dcodes, blcodes) => { + let rank2; + send_bits(s, lcodes - 257, 5); + send_bits(s, dcodes - 1, 5); + send_bits(s, blcodes - 4, 4); + for (rank2 = 0; rank2 < blcodes; rank2++) { + send_bits(s, s.bl_tree[bl_order[rank2] * 2 + 1], 3); + } + send_tree(s, s.dyn_ltree, lcodes - 1); + send_tree(s, s.dyn_dtree, dcodes - 1); +}; +const detect_data_type = (s) => { + let block_mask = 4093624447; + let n; + for (n = 0; n <= 31; n++, block_mask >>>= 1) { + if (block_mask & 1 && s.dyn_ltree[n * 2] !== 0) { + return Z_BINARY; + } + } + if (s.dyn_ltree[9 * 2] !== 0 || s.dyn_ltree[10 * 2] !== 0 || s.dyn_ltree[13 * 2] !== 0) { + return Z_TEXT; + } + for (n = 32; n < LITERALS$1; n++) { + if (s.dyn_ltree[n * 2] !== 0) { + return Z_TEXT; + } + } + return Z_BINARY; +}; +let static_init_done = false; +const _tr_init$1 = (s) => { + if (!static_init_done) { + tr_static_init(); + static_init_done = true; + } + s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); + s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); + s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); + s.bi_buf = 0; + s.bi_valid = 0; + init_block(s); +}; +const _tr_stored_block$1 = (s, buf, stored_len, last) => { + send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); + bi_windup(s); + put_short(s, stored_len); + put_short(s, ~stored_len); + if (stored_len) { + s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending); + } + s.pending += stored_len; +}; +const _tr_align$1 = (s) => { + send_bits(s, STATIC_TREES << 1, 3); + send_code(s, END_BLOCK, static_ltree); + bi_flush(s); +}; +const _tr_flush_block$1 = (s, buf, stored_len, last) => { + let opt_lenb, static_lenb; + let max_blindex = 0; + if (s.level > 0) { + if (s.strm.data_type === Z_UNKNOWN$1) { + s.strm.data_type = detect_data_type(s); + } + build_tree(s, s.l_desc); + build_tree(s, s.d_desc); + max_blindex = build_bl_tree(s); + opt_lenb = s.opt_len + 3 + 7 >>> 3; + static_lenb = s.static_len + 3 + 7 >>> 3; + if (static_lenb <= opt_lenb) { + opt_lenb = static_lenb; + } + } else { + opt_lenb = static_lenb = stored_len + 5; + } + if (stored_len + 4 <= opt_lenb && buf !== -1) { + _tr_stored_block$1(s, buf, stored_len, last); + } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) { + send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); + compress_block(s, static_ltree, static_dtree); + } else { + send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); + send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); + compress_block(s, s.dyn_ltree, s.dyn_dtree); + } + init_block(s); + if (last) { + bi_windup(s); + } +}; +const _tr_tally$1 = (s, dist, lc) => { + s.pending_buf[s.sym_buf + s.sym_next++] = dist; + s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8; + s.pending_buf[s.sym_buf + s.sym_next++] = lc; + if (dist === 0) { + s.dyn_ltree[lc * 2]++; + } else { + s.matches++; + dist--; + s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]++; + s.dyn_dtree[d_code(dist) * 2]++; + } + return s.sym_next === s.sym_end; +}; +var _tr_init_1 = _tr_init$1; +var _tr_stored_block_1 = _tr_stored_block$1; +var _tr_flush_block_1 = _tr_flush_block$1; +var _tr_tally_1 = _tr_tally$1; +var _tr_align_1 = _tr_align$1; +var trees = { + _tr_init: _tr_init_1, + _tr_stored_block: _tr_stored_block_1, + _tr_flush_block: _tr_flush_block_1, + _tr_tally: _tr_tally_1, + _tr_align: _tr_align_1 +}; +const adler32 = (adler, buf, len, pos) => { + let s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0; + while (len !== 0) { + n = len > 2e3 ? 2e3 : len; + len -= n; + do { + s1 = s1 + buf[pos++] | 0; + s2 = s2 + s1 | 0; + } while (--n); + s1 %= 65521; + s2 %= 65521; + } + return s1 | s2 << 16 | 0; +}; +var adler32_1 = adler32; +const makeTable = () => { + let c, table = []; + for (var n = 0; n < 256; n++) { + c = n; + for (var k = 0; k < 8; k++) { + c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1; + } + table[n] = c; + } + return table; +}; +const crcTable = new Uint32Array(makeTable()); +const crc32 = (crc, buf, len, pos) => { + const t = crcTable; + const end = pos + len; + crc ^= -1; + for (let i = pos; i < end; i++) { + crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 255]; + } + return crc ^ -1; +}; +var crc32_1 = crc32; +var messages = { + 2: "need dictionary", + /* Z_NEED_DICT 2 */ + 1: "stream end", + /* Z_STREAM_END 1 */ + 0: "", + /* Z_OK 0 */ + "-1": "file error", + /* Z_ERRNO (-1) */ + "-2": "stream error", + /* Z_STREAM_ERROR (-2) */ + "-3": "data error", + /* Z_DATA_ERROR (-3) */ + "-4": "insufficient memory", + /* Z_MEM_ERROR (-4) */ + "-5": "buffer error", + /* Z_BUF_ERROR (-5) */ + "-6": "incompatible version" + /* Z_VERSION_ERROR (-6) */ +}; +var constants$2 = { + /* Allowed flush values; see deflate() and inflate() below for details */ + Z_NO_FLUSH: 0, + Z_PARTIAL_FLUSH: 1, + Z_SYNC_FLUSH: 2, + Z_FULL_FLUSH: 3, + Z_FINISH: 4, + Z_BLOCK: 5, + Z_TREES: 6, + /* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + Z_OK: 0, + Z_STREAM_END: 1, + Z_NEED_DICT: 2, + Z_ERRNO: -1, + Z_STREAM_ERROR: -2, + Z_DATA_ERROR: -3, + Z_MEM_ERROR: -4, + Z_BUF_ERROR: -5, + //Z_VERSION_ERROR: -6, + /* compression levels */ + Z_NO_COMPRESSION: 0, + Z_BEST_SPEED: 1, + Z_BEST_COMPRESSION: 9, + Z_DEFAULT_COMPRESSION: -1, + Z_FILTERED: 1, + Z_HUFFMAN_ONLY: 2, + Z_RLE: 3, + Z_FIXED: 4, + Z_DEFAULT_STRATEGY: 0, + /* Possible values of the data_type field (though see inflate()) */ + Z_BINARY: 0, + Z_TEXT: 1, + //Z_ASCII: 1, // = Z_TEXT (deprecated) + Z_UNKNOWN: 2, + /* The deflate compression method */ + Z_DEFLATED: 8 + //Z_NULL: null // Use -1 or null inline, depending on var type +}; +const { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees; +const { + Z_NO_FLUSH: Z_NO_FLUSH$2, + Z_PARTIAL_FLUSH, + Z_FULL_FLUSH: Z_FULL_FLUSH$1, + Z_FINISH: Z_FINISH$3, + Z_BLOCK: Z_BLOCK$1, + Z_OK: Z_OK$3, + Z_STREAM_END: Z_STREAM_END$3, + Z_STREAM_ERROR: Z_STREAM_ERROR$2, + Z_DATA_ERROR: Z_DATA_ERROR$2, + Z_BUF_ERROR: Z_BUF_ERROR$1, + Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1, + Z_FILTERED, + Z_HUFFMAN_ONLY, + Z_RLE, + Z_FIXED, + Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1, + Z_UNKNOWN, + Z_DEFLATED: Z_DEFLATED$2 +} = constants$2; +const MAX_MEM_LEVEL = 9; +const MAX_WBITS$1 = 15; +const DEF_MEM_LEVEL = 8; +const LENGTH_CODES = 29; +const LITERALS = 256; +const L_CODES = LITERALS + 1 + LENGTH_CODES; +const D_CODES = 30; +const BL_CODES = 19; +const HEAP_SIZE = 2 * L_CODES + 1; +const MAX_BITS = 15; +const MIN_MATCH = 3; +const MAX_MATCH = 258; +const MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1; +const PRESET_DICT = 32; +const INIT_STATE = 42; +const GZIP_STATE = 57; +const EXTRA_STATE = 69; +const NAME_STATE = 73; +const COMMENT_STATE = 91; +const HCRC_STATE = 103; +const BUSY_STATE = 113; +const FINISH_STATE = 666; +const BS_NEED_MORE = 1; +const BS_BLOCK_DONE = 2; +const BS_FINISH_STARTED = 3; +const BS_FINISH_DONE = 4; +const OS_CODE = 3; +const err = (strm, errorCode) => { + strm.msg = messages[errorCode]; + return errorCode; +}; +const rank = (f) => { + return f * 2 - (f > 4 ? 9 : 0); +}; +const zero = (buf) => { + let len = buf.length; + while (--len >= 0) { + buf[len] = 0; + } +}; +const slide_hash = (s) => { + let n, m; + let p; + let wsize = s.w_size; + n = s.hash_size; + p = n; + do { + m = s.head[--p]; + s.head[p] = m >= wsize ? m - wsize : 0; + } while (--n); + n = wsize; + p = n; + do { + m = s.prev[--p]; + s.prev[p] = m >= wsize ? m - wsize : 0; + } while (--n); +}; +let HASH_ZLIB = (s, prev, data) => (prev << s.hash_shift ^ data) & s.hash_mask; +let HASH = HASH_ZLIB; +const flush_pending = (strm) => { + const s = strm.state; + let len = s.pending; + if (len > strm.avail_out) { + len = strm.avail_out; + } + if (len === 0) { + return; + } + strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out); + strm.next_out += len; + s.pending_out += len; + strm.total_out += len; + strm.avail_out -= len; + s.pending -= len; + if (s.pending === 0) { + s.pending_out = 0; + } +}; +const flush_block_only = (s, last) => { + _tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last); + s.block_start = s.strstart; + flush_pending(s.strm); +}; +const put_byte = (s, b) => { + s.pending_buf[s.pending++] = b; +}; +const putShortMSB = (s, b) => { + s.pending_buf[s.pending++] = b >>> 8 & 255; + s.pending_buf[s.pending++] = b & 255; +}; +const read_buf = (strm, buf, start, size) => { + let len = strm.avail_in; + if (len > size) { + len = size; + } + if (len === 0) { + return 0; + } + strm.avail_in -= len; + buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start); + if (strm.state.wrap === 1) { + strm.adler = adler32_1(strm.adler, buf, len, start); + } else if (strm.state.wrap === 2) { + strm.adler = crc32_1(strm.adler, buf, len, start); + } + strm.next_in += len; + strm.total_in += len; + return len; +}; +const longest_match = (s, cur_match) => { + let chain_length = s.max_chain_length; + let scan = s.strstart; + let match; + let len; + let best_len = s.prev_length; + let nice_match = s.nice_match; + const limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0; + const _win = s.window; + const wmask = s.w_mask; + const prev = s.prev; + const strend = s.strstart + MAX_MATCH; + let scan_end1 = _win[scan + best_len - 1]; + let scan_end = _win[scan + best_len]; + if (s.prev_length >= s.good_match) { + chain_length >>= 2; + } + if (nice_match > s.lookahead) { + nice_match = s.lookahead; + } + do { + match = cur_match; + if (_win[match + best_len] !== scan_end || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) { + continue; + } + scan += 2; + match++; + do { + } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend); + len = MAX_MATCH - (strend - scan); + scan = strend - MAX_MATCH; + if (len > best_len) { + s.match_start = cur_match; + best_len = len; + if (len >= nice_match) { + break; + } + scan_end1 = _win[scan + best_len - 1]; + scan_end = _win[scan + best_len]; + } + } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); + if (best_len <= s.lookahead) { + return best_len; + } + return s.lookahead; +}; +const fill_window = (s) => { + const _w_size = s.w_size; + let n, more, str; + do { + more = s.window_size - s.lookahead - s.strstart; + if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { + s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0); + s.match_start -= _w_size; + s.strstart -= _w_size; + s.block_start -= _w_size; + if (s.insert > s.strstart) { + s.insert = s.strstart; + } + slide_hash(s); + more += _w_size; + } + if (s.strm.avail_in === 0) { + break; + } + n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); + s.lookahead += n; + if (s.lookahead + s.insert >= MIN_MATCH) { + str = s.strstart - s.insert; + s.ins_h = s.window[str]; + s.ins_h = HASH(s, s.ins_h, s.window[str + 1]); + while (s.insert) { + s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]); + s.prev[str & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = str; + str++; + s.insert--; + if (s.lookahead + s.insert < MIN_MATCH) { + break; + } + } + } + } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); +}; +const deflate_stored = (s, flush) => { + let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5; + let len, left, have, last = 0; + let used = s.strm.avail_in; + do { + len = 65535; + have = s.bi_valid + 42 >> 3; + if (s.strm.avail_out < have) { + break; + } + have = s.strm.avail_out - have; + left = s.strstart - s.block_start; + if (len > left + s.strm.avail_in) { + len = left + s.strm.avail_in; + } + if (len > have) { + len = have; + } + if (len < min_block && (len === 0 && flush !== Z_FINISH$3 || flush === Z_NO_FLUSH$2 || len !== left + s.strm.avail_in)) { + break; + } + last = flush === Z_FINISH$3 && len === left + s.strm.avail_in ? 1 : 0; + _tr_stored_block(s, 0, 0, last); + s.pending_buf[s.pending - 4] = len; + s.pending_buf[s.pending - 3] = len >> 8; + s.pending_buf[s.pending - 2] = ~len; + s.pending_buf[s.pending - 1] = ~len >> 8; + flush_pending(s.strm); + if (left) { + if (left > len) { + left = len; + } + s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out); + s.strm.next_out += left; + s.strm.avail_out -= left; + s.strm.total_out += left; + s.block_start += left; + len -= left; + } + if (len) { + read_buf(s.strm, s.strm.output, s.strm.next_out, len); + s.strm.next_out += len; + s.strm.avail_out -= len; + s.strm.total_out += len; + } + } while (last === 0); + used -= s.strm.avail_in; + if (used) { + if (used >= s.w_size) { + s.matches = 2; + s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0); + s.strstart = s.w_size; + s.insert = s.strstart; + } else { + if (s.window_size - s.strstart <= used) { + s.strstart -= s.w_size; + s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0); + if (s.matches < 2) { + s.matches++; + } + if (s.insert > s.strstart) { + s.insert = s.strstart; + } + } + s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart); + s.strstart += used; + s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used; + } + s.block_start = s.strstart; + } + if (s.high_water < s.strstart) { + s.high_water = s.strstart; + } + if (last) { + return BS_FINISH_DONE; + } + if (flush !== Z_NO_FLUSH$2 && flush !== Z_FINISH$3 && s.strm.avail_in === 0 && s.strstart === s.block_start) { + return BS_BLOCK_DONE; + } + have = s.window_size - s.strstart; + if (s.strm.avail_in > have && s.block_start >= s.w_size) { + s.block_start -= s.w_size; + s.strstart -= s.w_size; + s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0); + if (s.matches < 2) { + s.matches++; + } + have += s.w_size; + if (s.insert > s.strstart) { + s.insert = s.strstart; + } + } + if (have > s.strm.avail_in) { + have = s.strm.avail_in; + } + if (have) { + read_buf(s.strm, s.window, s.strstart, have); + s.strstart += have; + s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have; + } + if (s.high_water < s.strstart) { + s.high_water = s.strstart; + } + have = s.bi_valid + 42 >> 3; + have = s.pending_buf_size - have > 65535 ? 65535 : s.pending_buf_size - have; + min_block = have > s.w_size ? s.w_size : have; + left = s.strstart - s.block_start; + if (left >= min_block || (left || flush === Z_FINISH$3) && flush !== Z_NO_FLUSH$2 && s.strm.avail_in === 0 && left <= have) { + len = left > have ? have : left; + last = flush === Z_FINISH$3 && s.strm.avail_in === 0 && len === left ? 1 : 0; + _tr_stored_block(s, s.block_start, len, last); + s.block_start += len; + flush_pending(s.strm); + } + return last ? BS_FINISH_STARTED : BS_NEED_MORE; +}; +const deflate_fast = (s, flush) => { + let hash_head; + let bflush; + for (; ; ) { + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { + break; + } + } + hash_head = 0; + if (s.lookahead >= MIN_MATCH) { + s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + } + if (hash_head !== 0 && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) { + s.match_length = longest_match(s, hash_head); + } + if (s.match_length >= MIN_MATCH) { + bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); + s.lookahead -= s.match_length; + if (s.match_length <= s.max_lazy_match && s.lookahead >= MIN_MATCH) { + s.match_length--; + do { + s.strstart++; + s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + } while (--s.match_length !== 0); + s.strstart++; + } else { + s.strstart += s.match_length; + s.match_length = 0; + s.ins_h = s.window[s.strstart]; + s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]); + } + } else { + bflush = _tr_tally(s, 0, s.window[s.strstart]); + s.lookahead--; + s.strstart++; + } + if (bflush) { + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } + } + s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; + if (flush === Z_FINISH$3) { + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + return BS_FINISH_DONE; + } + if (s.sym_next) { + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } + return BS_BLOCK_DONE; +}; +const deflate_slow = (s, flush) => { + let hash_head; + let bflush; + let max_insert; + for (; ; ) { + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { + break; + } + } + hash_head = 0; + if (s.lookahead >= MIN_MATCH) { + s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + } + s.prev_length = s.match_length; + s.prev_match = s.match_start; + s.match_length = MIN_MATCH - 1; + if (hash_head !== 0 && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) { + s.match_length = longest_match(s, hash_head); + if (s.match_length <= 5 && (s.strategy === Z_FILTERED || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096)) { + s.match_length = MIN_MATCH - 1; + } + } + if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { + max_insert = s.strstart + s.lookahead - MIN_MATCH; + bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); + s.lookahead -= s.prev_length - 1; + s.prev_length -= 2; + do { + if (++s.strstart <= max_insert) { + s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + } + } while (--s.prev_length !== 0); + s.match_available = 0; + s.match_length = MIN_MATCH - 1; + s.strstart++; + if (bflush) { + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } + } else if (s.match_available) { + bflush = _tr_tally(s, 0, s.window[s.strstart - 1]); + if (bflush) { + flush_block_only(s, false); + } + s.strstart++; + s.lookahead--; + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } else { + s.match_available = 1; + s.strstart++; + s.lookahead--; + } + } + if (s.match_available) { + bflush = _tr_tally(s, 0, s.window[s.strstart - 1]); + s.match_available = 0; + } + s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; + if (flush === Z_FINISH$3) { + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + return BS_FINISH_DONE; + } + if (s.sym_next) { + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } + return BS_BLOCK_DONE; +}; +const deflate_rle = (s, flush) => { + let bflush; + let prev; + let scan, strend; + const _win = s.window; + for (; ; ) { + if (s.lookahead <= MAX_MATCH) { + fill_window(s); + if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { + break; + } + } + s.match_length = 0; + if (s.lookahead >= MIN_MATCH && s.strstart > 0) { + scan = s.strstart - 1; + prev = _win[scan]; + if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { + strend = s.strstart + MAX_MATCH; + do { + } while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend); + s.match_length = MAX_MATCH - (strend - scan); + if (s.match_length > s.lookahead) { + s.match_length = s.lookahead; + } + } + } + if (s.match_length >= MIN_MATCH) { + bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH); + s.lookahead -= s.match_length; + s.strstart += s.match_length; + s.match_length = 0; + } else { + bflush = _tr_tally(s, 0, s.window[s.strstart]); + s.lookahead--; + s.strstart++; + } + if (bflush) { + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } + } + s.insert = 0; + if (flush === Z_FINISH$3) { + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + return BS_FINISH_DONE; + } + if (s.sym_next) { + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } + return BS_BLOCK_DONE; +}; +const deflate_huff = (s, flush) => { + let bflush; + for (; ; ) { + if (s.lookahead === 0) { + fill_window(s); + if (s.lookahead === 0) { + if (flush === Z_NO_FLUSH$2) { + return BS_NEED_MORE; + } + break; + } + } + s.match_length = 0; + bflush = _tr_tally(s, 0, s.window[s.strstart]); + s.lookahead--; + s.strstart++; + if (bflush) { + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } + } + s.insert = 0; + if (flush === Z_FINISH$3) { + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + return BS_FINISH_DONE; + } + if (s.sym_next) { + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } + return BS_BLOCK_DONE; +}; +function Config(good_length, max_lazy, nice_length, max_chain, func) { + this.good_length = good_length; + this.max_lazy = max_lazy; + this.nice_length = nice_length; + this.max_chain = max_chain; + this.func = func; +} +const configuration_table = [ + /* good lazy nice chain */ + new Config(0, 0, 0, 0, deflate_stored), + /* 0 store only */ + new Config(4, 4, 8, 4, deflate_fast), + /* 1 max speed, no lazy matches */ + new Config(4, 5, 16, 8, deflate_fast), + /* 2 */ + new Config(4, 6, 32, 32, deflate_fast), + /* 3 */ + new Config(4, 4, 16, 16, deflate_slow), + /* 4 lazy matches */ + new Config(8, 16, 32, 32, deflate_slow), + /* 5 */ + new Config(8, 16, 128, 128, deflate_slow), + /* 6 */ + new Config(8, 32, 128, 256, deflate_slow), + /* 7 */ + new Config(32, 128, 258, 1024, deflate_slow), + /* 8 */ + new Config(32, 258, 258, 4096, deflate_slow) + /* 9 max compression */ +]; +const lm_init = (s) => { + s.window_size = 2 * s.w_size; + zero(s.head); + s.max_lazy_match = configuration_table[s.level].max_lazy; + s.good_match = configuration_table[s.level].good_length; + s.nice_match = configuration_table[s.level].nice_length; + s.max_chain_length = configuration_table[s.level].max_chain; + s.strstart = 0; + s.block_start = 0; + s.lookahead = 0; + s.insert = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + s.ins_h = 0; +}; +function DeflateState() { + this.strm = null; + this.status = 0; + this.pending_buf = null; + this.pending_buf_size = 0; + this.pending_out = 0; + this.pending = 0; + this.wrap = 0; + this.gzhead = null; + this.gzindex = 0; + this.method = Z_DEFLATED$2; + this.last_flush = -1; + this.w_size = 0; + this.w_bits = 0; + this.w_mask = 0; + this.window = null; + this.window_size = 0; + this.prev = null; + this.head = null; + this.ins_h = 0; + this.hash_size = 0; + this.hash_bits = 0; + this.hash_mask = 0; + this.hash_shift = 0; + this.block_start = 0; + this.match_length = 0; + this.prev_match = 0; + this.match_available = 0; + this.strstart = 0; + this.match_start = 0; + this.lookahead = 0; + this.prev_length = 0; + this.max_chain_length = 0; + this.max_lazy_match = 0; + this.level = 0; + this.strategy = 0; + this.good_match = 0; + this.nice_match = 0; + this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2); + this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2); + this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2); + zero(this.dyn_ltree); + zero(this.dyn_dtree); + zero(this.bl_tree); + this.l_desc = null; + this.d_desc = null; + this.bl_desc = null; + this.bl_count = new Uint16Array(MAX_BITS + 1); + this.heap = new Uint16Array(2 * L_CODES + 1); + zero(this.heap); + this.heap_len = 0; + this.heap_max = 0; + this.depth = new Uint16Array(2 * L_CODES + 1); + zero(this.depth); + this.sym_buf = 0; + this.lit_bufsize = 0; + this.sym_next = 0; + this.sym_end = 0; + this.opt_len = 0; + this.static_len = 0; + this.matches = 0; + this.insert = 0; + this.bi_buf = 0; + this.bi_valid = 0; +} +const deflateStateCheck = (strm) => { + if (!strm) { + return 1; + } + const s = strm.state; + if (!s || s.strm !== strm || s.status !== INIT_STATE && //#ifdef GZIP + s.status !== GZIP_STATE && //#endif + s.status !== EXTRA_STATE && s.status !== NAME_STATE && s.status !== COMMENT_STATE && s.status !== HCRC_STATE && s.status !== BUSY_STATE && s.status !== FINISH_STATE) { + return 1; + } + return 0; +}; +const deflateResetKeep = (strm) => { + if (deflateStateCheck(strm)) { + return err(strm, Z_STREAM_ERROR$2); + } + strm.total_in = strm.total_out = 0; + strm.data_type = Z_UNKNOWN; + const s = strm.state; + s.pending = 0; + s.pending_out = 0; + if (s.wrap < 0) { + s.wrap = -s.wrap; + } + s.status = //#ifdef GZIP + s.wrap === 2 ? GZIP_STATE : ( + //#endif + s.wrap ? INIT_STATE : BUSY_STATE + ); + strm.adler = s.wrap === 2 ? 0 : 1; + s.last_flush = -2; + _tr_init(s); + return Z_OK$3; +}; +const deflateReset = (strm) => { + const ret = deflateResetKeep(strm); + if (ret === Z_OK$3) { + lm_init(strm.state); + } + return ret; +}; +const deflateSetHeader = (strm, head) => { + if (deflateStateCheck(strm) || strm.state.wrap !== 2) { + return Z_STREAM_ERROR$2; + } + strm.state.gzhead = head; + return Z_OK$3; +}; +const deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => { + if (!strm) { + return Z_STREAM_ERROR$2; + } + let wrap = 1; + if (level === Z_DEFAULT_COMPRESSION$1) { + level = 6; + } + if (windowBits < 0) { + wrap = 0; + windowBits = -windowBits; + } else if (windowBits > 15) { + wrap = 2; + windowBits -= 16; + } + if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED || windowBits === 8 && wrap !== 1) { + return err(strm, Z_STREAM_ERROR$2); + } + if (windowBits === 8) { + windowBits = 9; + } + const s = new DeflateState(); + strm.state = s; + s.strm = strm; + s.status = INIT_STATE; + s.wrap = wrap; + s.gzhead = null; + s.w_bits = windowBits; + s.w_size = 1 << s.w_bits; + s.w_mask = s.w_size - 1; + s.hash_bits = memLevel + 7; + s.hash_size = 1 << s.hash_bits; + s.hash_mask = s.hash_size - 1; + s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); + s.window = new Uint8Array(s.w_size * 2); + s.head = new Uint16Array(s.hash_size); + s.prev = new Uint16Array(s.w_size); + s.lit_bufsize = 1 << memLevel + 6; + s.pending_buf_size = s.lit_bufsize * 4; + s.pending_buf = new Uint8Array(s.pending_buf_size); + s.sym_buf = s.lit_bufsize; + s.sym_end = (s.lit_bufsize - 1) * 3; + s.level = level; + s.strategy = strategy; + s.method = method; + return deflateReset(strm); +}; +const deflateInit = (strm, level) => { + return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1); +}; +const deflate$2 = (strm, flush) => { + if (deflateStateCheck(strm) || flush > Z_BLOCK$1 || flush < 0) { + return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2; + } + const s = strm.state; + if (!strm.output || strm.avail_in !== 0 && !strm.input || s.status === FINISH_STATE && flush !== Z_FINISH$3) { + return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2); + } + const old_flush = s.last_flush; + s.last_flush = flush; + if (s.pending !== 0) { + flush_pending(strm); + if (strm.avail_out === 0) { + s.last_flush = -1; + return Z_OK$3; + } + } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== Z_FINISH$3) { + return err(strm, Z_BUF_ERROR$1); + } + if (s.status === FINISH_STATE && strm.avail_in !== 0) { + return err(strm, Z_BUF_ERROR$1); + } + if (s.status === INIT_STATE && s.wrap === 0) { + s.status = BUSY_STATE; + } + if (s.status === INIT_STATE) { + let header = Z_DEFLATED$2 + (s.w_bits - 8 << 4) << 8; + let level_flags = -1; + if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { + level_flags = 0; + } else if (s.level < 6) { + level_flags = 1; + } else if (s.level === 6) { + level_flags = 2; + } else { + level_flags = 3; + } + header |= level_flags << 6; + if (s.strstart !== 0) { + header |= PRESET_DICT; + } + header += 31 - header % 31; + putShortMSB(s, header); + if (s.strstart !== 0) { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 65535); + } + strm.adler = 1; + s.status = BUSY_STATE; + flush_pending(strm); + if (s.pending !== 0) { + s.last_flush = -1; + return Z_OK$3; + } + } + if (s.status === GZIP_STATE) { + strm.adler = 0; + put_byte(s, 31); + put_byte(s, 139); + put_byte(s, 8); + if (!s.gzhead) { + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); + put_byte(s, OS_CODE); + s.status = BUSY_STATE; + flush_pending(strm); + if (s.pending !== 0) { + s.last_flush = -1; + return Z_OK$3; + } + } else { + put_byte( + s, + (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16) + ); + put_byte(s, s.gzhead.time & 255); + put_byte(s, s.gzhead.time >> 8 & 255); + put_byte(s, s.gzhead.time >> 16 & 255); + put_byte(s, s.gzhead.time >> 24 & 255); + put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); + put_byte(s, s.gzhead.os & 255); + if (s.gzhead.extra && s.gzhead.extra.length) { + put_byte(s, s.gzhead.extra.length & 255); + put_byte(s, s.gzhead.extra.length >> 8 & 255); + } + if (s.gzhead.hcrc) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0); + } + s.gzindex = 0; + s.status = EXTRA_STATE; + } + } + if (s.status === EXTRA_STATE) { + if (s.gzhead.extra) { + let beg = s.pending; + let left = (s.gzhead.extra.length & 65535) - s.gzindex; + while (s.pending + left > s.pending_buf_size) { + let copy = s.pending_buf_size - s.pending; + s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending); + s.pending = s.pending_buf_size; + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + s.gzindex += copy; + flush_pending(strm); + if (s.pending !== 0) { + s.last_flush = -1; + return Z_OK$3; + } + beg = 0; + left -= copy; + } + let gzhead_extra = new Uint8Array(s.gzhead.extra); + s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending); + s.pending += left; + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + s.gzindex = 0; + } + s.status = NAME_STATE; + } + if (s.status === NAME_STATE) { + if (s.gzhead.name) { + let beg = s.pending; + let val; + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + if (s.pending !== 0) { + s.last_flush = -1; + return Z_OK$3; + } + beg = 0; + } + if (s.gzindex < s.gzhead.name.length) { + val = s.gzhead.name.charCodeAt(s.gzindex++) & 255; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + s.gzindex = 0; + } + s.status = COMMENT_STATE; + } + if (s.status === COMMENT_STATE) { + if (s.gzhead.comment) { + let beg = s.pending; + let val; + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + if (s.pending !== 0) { + s.last_flush = -1; + return Z_OK$3; + } + beg = 0; + } + if (s.gzindex < s.gzhead.comment.length) { + val = s.gzhead.comment.charCodeAt(s.gzindex++) & 255; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + } + s.status = HCRC_STATE; + } + if (s.status === HCRC_STATE) { + if (s.gzhead.hcrc) { + if (s.pending + 2 > s.pending_buf_size) { + flush_pending(strm); + if (s.pending !== 0) { + s.last_flush = -1; + return Z_OK$3; + } + } + put_byte(s, strm.adler & 255); + put_byte(s, strm.adler >> 8 & 255); + strm.adler = 0; + } + s.status = BUSY_STATE; + flush_pending(strm); + if (s.pending !== 0) { + s.last_flush = -1; + return Z_OK$3; + } + } + if (strm.avail_in !== 0 || s.lookahead !== 0 || flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE) { + let bstate = s.level === 0 ? deflate_stored(s, flush) : s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : s.strategy === Z_RLE ? deflate_rle(s, flush) : configuration_table[s.level].func(s, flush); + if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { + s.status = FINISH_STATE; + } + if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { + if (strm.avail_out === 0) { + s.last_flush = -1; + } + return Z_OK$3; + } + if (bstate === BS_BLOCK_DONE) { + if (flush === Z_PARTIAL_FLUSH) { + _tr_align(s); + } else if (flush !== Z_BLOCK$1) { + _tr_stored_block(s, 0, 0, false); + if (flush === Z_FULL_FLUSH$1) { + zero(s.head); + if (s.lookahead === 0) { + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + } + } + flush_pending(strm); + if (strm.avail_out === 0) { + s.last_flush = -1; + return Z_OK$3; + } + } + } + if (flush !== Z_FINISH$3) { + return Z_OK$3; + } + if (s.wrap <= 0) { + return Z_STREAM_END$3; + } + if (s.wrap === 2) { + put_byte(s, strm.adler & 255); + put_byte(s, strm.adler >> 8 & 255); + put_byte(s, strm.adler >> 16 & 255); + put_byte(s, strm.adler >> 24 & 255); + put_byte(s, strm.total_in & 255); + put_byte(s, strm.total_in >> 8 & 255); + put_byte(s, strm.total_in >> 16 & 255); + put_byte(s, strm.total_in >> 24 & 255); + } else { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 65535); + } + flush_pending(strm); + if (s.wrap > 0) { + s.wrap = -s.wrap; + } + return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3; +}; +const deflateEnd = (strm) => { + if (deflateStateCheck(strm)) { + return Z_STREAM_ERROR$2; + } + const status = strm.state.status; + strm.state = null; + return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3; +}; +const deflateSetDictionary = (strm, dictionary) => { + let dictLength = dictionary.length; + if (deflateStateCheck(strm)) { + return Z_STREAM_ERROR$2; + } + const s = strm.state; + const wrap = s.wrap; + if (wrap === 2 || wrap === 1 && s.status !== INIT_STATE || s.lookahead) { + return Z_STREAM_ERROR$2; + } + if (wrap === 1) { + strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0); + } + s.wrap = 0; + if (dictLength >= s.w_size) { + if (wrap === 0) { + zero(s.head); + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + let tmpDict = new Uint8Array(s.w_size); + tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0); + dictionary = tmpDict; + dictLength = s.w_size; + } + const avail = strm.avail_in; + const next = strm.next_in; + const input = strm.input; + strm.avail_in = dictLength; + strm.next_in = 0; + strm.input = dictionary; + fill_window(s); + while (s.lookahead >= MIN_MATCH) { + let str = s.strstart; + let n = s.lookahead - (MIN_MATCH - 1); + do { + s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]); + s.prev[str & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = str; + str++; + } while (--n); + s.strstart = str; + s.lookahead = MIN_MATCH - 1; + fill_window(s); + } + s.strstart += s.lookahead; + s.block_start = s.strstart; + s.insert = s.lookahead; + s.lookahead = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + strm.next_in = next; + strm.input = input; + strm.avail_in = avail; + s.wrap = wrap; + return Z_OK$3; +}; +var deflateInit_1 = deflateInit; +var deflateInit2_1 = deflateInit2; +var deflateReset_1 = deflateReset; +var deflateResetKeep_1 = deflateResetKeep; +var deflateSetHeader_1 = deflateSetHeader; +var deflate_2$1 = deflate$2; +var deflateEnd_1 = deflateEnd; +var deflateSetDictionary_1 = deflateSetDictionary; +var deflateInfo = "pako deflate (from Nodeca project)"; +var deflate_1$2 = { + deflateInit: deflateInit_1, + deflateInit2: deflateInit2_1, + deflateReset: deflateReset_1, + deflateResetKeep: deflateResetKeep_1, + deflateSetHeader: deflateSetHeader_1, + deflate: deflate_2$1, + deflateEnd: deflateEnd_1, + deflateSetDictionary: deflateSetDictionary_1, + deflateInfo +}; +const _has = (obj, key) => { + return Object.prototype.hasOwnProperty.call(obj, key); +}; +var assign = function(obj) { + const sources = Array.prototype.slice.call(arguments, 1); + while (sources.length) { + const source = sources.shift(); + if (!source) { + continue; + } + if (typeof source !== "object") { + throw new TypeError(source + "must be non-object"); + } + for (const p in source) { + if (_has(source, p)) { + obj[p] = source[p]; + } + } + } + return obj; +}; +var flattenChunks = (chunks) => { + let len = 0; + for (let i = 0, l = chunks.length; i < l; i++) { + len += chunks[i].length; + } + const result = new Uint8Array(len); + for (let i = 0, pos = 0, l = chunks.length; i < l; i++) { + let chunk = chunks[i]; + result.set(chunk, pos); + pos += chunk.length; + } + return result; +}; +var common = { + assign, + flattenChunks +}; +let STR_APPLY_UIA_OK = true; +try { + String.fromCharCode.apply(null, new Uint8Array(1)); +} catch (__) { + STR_APPLY_UIA_OK = false; +} +const _utf8len = new Uint8Array(256); +for (let q = 0; q < 256; q++) { + _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1; +} +_utf8len[254] = _utf8len[254] = 1; +var string2buf = (str) => { + if (typeof TextEncoder === "function" && TextEncoder.prototype.encode) { + return new TextEncoder().encode(str); + } + let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0; + for (m_pos = 0; m_pos < str_len; m_pos++) { + c = str.charCodeAt(m_pos); + if ((c & 64512) === 55296 && m_pos + 1 < str_len) { + c2 = str.charCodeAt(m_pos + 1); + if ((c2 & 64512) === 56320) { + c = 65536 + (c - 55296 << 10) + (c2 - 56320); + m_pos++; + } + } + buf_len += c < 128 ? 1 : c < 2048 ? 2 : c < 65536 ? 3 : 4; + } + buf = new Uint8Array(buf_len); + for (i = 0, m_pos = 0; i < buf_len; m_pos++) { + c = str.charCodeAt(m_pos); + if ((c & 64512) === 55296 && m_pos + 1 < str_len) { + c2 = str.charCodeAt(m_pos + 1); + if ((c2 & 64512) === 56320) { + c = 65536 + (c - 55296 << 10) + (c2 - 56320); + m_pos++; + } + } + if (c < 128) { + buf[i++] = c; + } else if (c < 2048) { + buf[i++] = 192 | c >>> 6; + buf[i++] = 128 | c & 63; + } else if (c < 65536) { + buf[i++] = 224 | c >>> 12; + buf[i++] = 128 | c >>> 6 & 63; + buf[i++] = 128 | c & 63; + } else { + buf[i++] = 240 | c >>> 18; + buf[i++] = 128 | c >>> 12 & 63; + buf[i++] = 128 | c >>> 6 & 63; + buf[i++] = 128 | c & 63; + } + } + return buf; +}; +const buf2binstring = (buf, len) => { + if (len < 65534) { + if (buf.subarray && STR_APPLY_UIA_OK) { + return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len)); + } + } + let result = ""; + for (let i = 0; i < len; i++) { + result += String.fromCharCode(buf[i]); + } + return result; +}; +var buf2string = (buf, max) => { + const len = max || buf.length; + if (typeof TextDecoder === "function" && TextDecoder.prototype.decode) { + return new TextDecoder().decode(buf.subarray(0, max)); + } + let i, out; + const utf16buf = new Array(len * 2); + for (out = 0, i = 0; i < len; ) { + let c = buf[i++]; + if (c < 128) { + utf16buf[out++] = c; + continue; + } + let c_len = _utf8len[c]; + if (c_len > 4) { + utf16buf[out++] = 65533; + i += c_len - 1; + continue; + } + c &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7; + while (c_len > 1 && i < len) { + c = c << 6 | buf[i++] & 63; + c_len--; + } + if (c_len > 1) { + utf16buf[out++] = 65533; + continue; + } + if (c < 65536) { + utf16buf[out++] = c; + } else { + c -= 65536; + utf16buf[out++] = 55296 | c >> 10 & 1023; + utf16buf[out++] = 56320 | c & 1023; + } + } + return buf2binstring(utf16buf, out); +}; +var utf8border = (buf, max) => { + max = max || buf.length; + if (max > buf.length) { + max = buf.length; + } + let pos = max - 1; + while (pos >= 0 && (buf[pos] & 192) === 128) { + pos--; + } + if (pos < 0) { + return max; + } + if (pos === 0) { + return max; + } + return pos + _utf8len[buf[pos]] > max ? pos : max; +}; +var strings = { + string2buf, + buf2string, + utf8border +}; +function ZStream() { + this.input = null; + this.next_in = 0; + this.avail_in = 0; + this.total_in = 0; + this.output = null; + this.next_out = 0; + this.avail_out = 0; + this.total_out = 0; + this.msg = ""; + this.state = null; + this.data_type = 2; + this.adler = 0; +} +var zstream = ZStream; +const toString$1 = Object.prototype.toString; +const { + Z_NO_FLUSH: Z_NO_FLUSH$1, + Z_SYNC_FLUSH, + Z_FULL_FLUSH, + Z_FINISH: Z_FINISH$2, + Z_OK: Z_OK$2, + Z_STREAM_END: Z_STREAM_END$2, + Z_DEFAULT_COMPRESSION, + Z_DEFAULT_STRATEGY, + Z_DEFLATED: Z_DEFLATED$1 +} = constants$2; +function Deflate$1(options) { + this.options = common.assign({ + level: Z_DEFAULT_COMPRESSION, + method: Z_DEFLATED$1, + chunkSize: 16384, + windowBits: 15, + memLevel: 8, + strategy: Z_DEFAULT_STRATEGY + }, options || {}); + let opt = this.options; + if (opt.raw && opt.windowBits > 0) { + opt.windowBits = -opt.windowBits; + } else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) { + opt.windowBits += 16; + } + this.err = 0; + this.msg = ""; + this.ended = false; + this.chunks = []; + this.strm = new zstream(); + this.strm.avail_out = 0; + let status = deflate_1$2.deflateInit2( + this.strm, + opt.level, + opt.method, + opt.windowBits, + opt.memLevel, + opt.strategy + ); + if (status !== Z_OK$2) { + throw new Error(messages[status]); + } + if (opt.header) { + deflate_1$2.deflateSetHeader(this.strm, opt.header); + } + if (opt.dictionary) { + let dict; + if (typeof opt.dictionary === "string") { + dict = strings.string2buf(opt.dictionary); + } else if (toString$1.call(opt.dictionary) === "[object ArrayBuffer]") { + dict = new Uint8Array(opt.dictionary); + } else { + dict = opt.dictionary; + } + status = deflate_1$2.deflateSetDictionary(this.strm, dict); + if (status !== Z_OK$2) { + throw new Error(messages[status]); + } + this._dict_set = true; + } +} +Deflate$1.prototype.push = function(data, flush_mode) { + const strm = this.strm; + const chunkSize = this.options.chunkSize; + let status, _flush_mode; + if (this.ended) { + return false; + } + if (flush_mode === ~~flush_mode) + _flush_mode = flush_mode; + else + _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1; + if (typeof data === "string") { + strm.input = strings.string2buf(data); + } else if (toString$1.call(data) === "[object ArrayBuffer]") { + strm.input = new Uint8Array(data); + } else { + strm.input = data; + } + strm.next_in = 0; + strm.avail_in = strm.input.length; + for (; ; ) { + if (strm.avail_out === 0) { + strm.output = new Uint8Array(chunkSize); + strm.next_out = 0; + strm.avail_out = chunkSize; + } + if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) { + this.onData(strm.output.subarray(0, strm.next_out)); + strm.avail_out = 0; + continue; + } + status = deflate_1$2.deflate(strm, _flush_mode); + if (status === Z_STREAM_END$2) { + if (strm.next_out > 0) { + this.onData(strm.output.subarray(0, strm.next_out)); + } + status = deflate_1$2.deflateEnd(this.strm); + this.onEnd(status); + this.ended = true; + return status === Z_OK$2; + } + if (strm.avail_out === 0) { + this.onData(strm.output); + continue; + } + if (_flush_mode > 0 && strm.next_out > 0) { + this.onData(strm.output.subarray(0, strm.next_out)); + strm.avail_out = 0; + continue; + } + if (strm.avail_in === 0) + break; + } + return true; +}; +Deflate$1.prototype.onData = function(chunk) { + this.chunks.push(chunk); +}; +Deflate$1.prototype.onEnd = function(status) { + if (status === Z_OK$2) { + this.result = common.flattenChunks(this.chunks); + } + this.chunks = []; + this.err = status; + this.msg = this.strm.msg; +}; +function deflate$1(input, options) { + const deflator = new Deflate$1(options); + deflator.push(input, true); + if (deflator.err) { + throw deflator.msg || messages[deflator.err]; + } + return deflator.result; +} +function deflateRaw$1(input, options) { + options = options || {}; + options.raw = true; + return deflate$1(input, options); +} +function gzip$1(input, options) { + options = options || {}; + options.gzip = true; + return deflate$1(input, options); +} +var Deflate_1$1 = Deflate$1; +var deflate_2 = deflate$1; +var deflateRaw_1$1 = deflateRaw$1; +var gzip_1$1 = gzip$1; +var deflate_1$1 = { + Deflate: Deflate_1$1, + deflate: deflate_2, + deflateRaw: deflateRaw_1$1, + gzip: gzip_1$1 +}; +const BAD$1 = 16209; +const TYPE$1 = 16191; +var inffast = function inflate_fast(strm, start) { + let _in; + let last; + let _out; + let beg; + let end; + let dmax; + let wsize; + let whave; + let wnext; + let s_window; + let hold; + let bits; + let lcode; + let dcode; + let lmask; + let dmask; + let here; + let op; + let len; + let dist; + let from; + let from_source; + let input, output; + const state = strm.state; + _in = strm.next_in; + input = strm.input; + last = _in + (strm.avail_in - 5); + _out = strm.next_out; + output = strm.output; + beg = _out - (start - strm.avail_out); + end = _out + (strm.avail_out - 257); + dmax = state.dmax; + wsize = state.wsize; + whave = state.whave; + wnext = state.wnext; + s_window = state.window; + hold = state.hold; + bits = state.bits; + lcode = state.lencode; + dcode = state.distcode; + lmask = (1 << state.lenbits) - 1; + dmask = (1 << state.distbits) - 1; + top: + do { + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; + } + here = lcode[hold & lmask]; + dolen: + for (; ; ) { + op = here >>> 24; + hold >>>= op; + bits -= op; + op = here >>> 16 & 255; + if (op === 0) { + output[_out++] = here & 65535; + } else if (op & 16) { + len = here & 65535; + op &= 15; + if (op) { + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + len += hold & (1 << op) - 1; + hold >>>= op; + bits -= op; + } + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; + } + here = dcode[hold & dmask]; + dodist: + for (; ; ) { + op = here >>> 24; + hold >>>= op; + bits -= op; + op = here >>> 16 & 255; + if (op & 16) { + dist = here & 65535; + op &= 15; + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + } + dist += hold & (1 << op) - 1; + if (dist > dmax) { + strm.msg = "invalid distance too far back"; + state.mode = BAD$1; + break top; + } + hold >>>= op; + bits -= op; + op = _out - beg; + if (dist > op) { + op = dist - op; + if (op > whave) { + if (state.sane) { + strm.msg = "invalid distance too far back"; + state.mode = BAD$1; + break top; + } + } + from = 0; + from_source = s_window; + if (wnext === 0) { + from += wsize - op; + if (op < len) { + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; + from_source = output; + } + } else if (wnext < op) { + from += wsize + wnext - op; + op -= wnext; + if (op < len) { + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = 0; + if (wnext < len) { + op = wnext; + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; + from_source = output; + } + } + } else { + from += wnext - op; + if (op < len) { + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; + from_source = output; + } + } + while (len > 2) { + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + len -= 3; + } + if (len) { + output[_out++] = from_source[from++]; + if (len > 1) { + output[_out++] = from_source[from++]; + } + } + } else { + from = _out - dist; + do { + output[_out++] = output[from++]; + output[_out++] = output[from++]; + output[_out++] = output[from++]; + len -= 3; + } while (len > 2); + if (len) { + output[_out++] = output[from++]; + if (len > 1) { + output[_out++] = output[from++]; + } + } + } + } else if ((op & 64) === 0) { + here = dcode[(here & 65535) + (hold & (1 << op) - 1)]; + continue dodist; + } else { + strm.msg = "invalid distance code"; + state.mode = BAD$1; + break top; + } + break; + } + } else if ((op & 64) === 0) { + here = lcode[(here & 65535) + (hold & (1 << op) - 1)]; + continue dolen; + } else if (op & 32) { + state.mode = TYPE$1; + break top; + } else { + strm.msg = "invalid literal/length code"; + state.mode = BAD$1; + break top; + } + break; + } + } while (_in < last && _out < end); + len = bits >> 3; + _in -= len; + bits -= len << 3; + hold &= (1 << bits) - 1; + strm.next_in = _in; + strm.next_out = _out; + strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last); + strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end); + state.hold = hold; + state.bits = bits; + return; +}; +const MAXBITS = 15; +const ENOUGH_LENS$1 = 852; +const ENOUGH_DISTS$1 = 592; +const CODES$1 = 0; +const LENS$1 = 1; +const DISTS$1 = 2; +const lbase = new Uint16Array([ + /* Length codes 257..285 base */ + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 13, + 15, + 17, + 19, + 23, + 27, + 31, + 35, + 43, + 51, + 59, + 67, + 83, + 99, + 115, + 131, + 163, + 195, + 227, + 258, + 0, + 0 +]); +const lext = new Uint8Array([ + /* Length codes 257..285 extra */ + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 17, + 17, + 17, + 17, + 18, + 18, + 18, + 18, + 19, + 19, + 19, + 19, + 20, + 20, + 20, + 20, + 21, + 21, + 21, + 21, + 16, + 72, + 78 +]); +const dbase = new Uint16Array([ + /* Distance codes 0..29 base */ + 1, + 2, + 3, + 4, + 5, + 7, + 9, + 13, + 17, + 25, + 33, + 49, + 65, + 97, + 129, + 193, + 257, + 385, + 513, + 769, + 1025, + 1537, + 2049, + 3073, + 4097, + 6145, + 8193, + 12289, + 16385, + 24577, + 0, + 0 +]); +const dext = new Uint8Array([ + /* Distance codes 0..29 extra */ + 16, + 16, + 16, + 16, + 17, + 17, + 18, + 18, + 19, + 19, + 20, + 20, + 21, + 21, + 22, + 22, + 23, + 23, + 24, + 24, + 25, + 25, + 26, + 26, + 27, + 27, + 28, + 28, + 29, + 29, + 64, + 64 +]); +const inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) => { + const bits = opts.bits; + let len = 0; + let sym = 0; + let min = 0, max = 0; + let root = 0; + let curr = 0; + let drop = 0; + let left = 0; + let used = 0; + let huff = 0; + let incr; + let fill; + let low; + let mask; + let next; + let base = null; + let match; + const count = new Uint16Array(MAXBITS + 1); + const offs = new Uint16Array(MAXBITS + 1); + let extra = null; + let here_bits, here_op, here_val; + for (len = 0; len <= MAXBITS; len++) { + count[len] = 0; + } + for (sym = 0; sym < codes; sym++) { + count[lens[lens_index + sym]]++; + } + root = bits; + for (max = MAXBITS; max >= 1; max--) { + if (count[max] !== 0) { + break; + } + } + if (root > max) { + root = max; + } + if (max === 0) { + table[table_index++] = 1 << 24 | 64 << 16 | 0; + table[table_index++] = 1 << 24 | 64 << 16 | 0; + opts.bits = 1; + return 0; + } + for (min = 1; min < max; min++) { + if (count[min] !== 0) { + break; + } + } + if (root < min) { + root = min; + } + left = 1; + for (len = 1; len <= MAXBITS; len++) { + left <<= 1; + left -= count[len]; + if (left < 0) { + return -1; + } + } + if (left > 0 && (type === CODES$1 || max !== 1)) { + return -1; + } + offs[1] = 0; + for (len = 1; len < MAXBITS; len++) { + offs[len + 1] = offs[len] + count[len]; + } + for (sym = 0; sym < codes; sym++) { + if (lens[lens_index + sym] !== 0) { + work[offs[lens[lens_index + sym]]++] = sym; + } + } + if (type === CODES$1) { + base = extra = work; + match = 20; + } else if (type === LENS$1) { + base = lbase; + extra = lext; + match = 257; + } else { + base = dbase; + extra = dext; + match = 0; + } + huff = 0; + sym = 0; + len = min; + next = table_index; + curr = root; + drop = 0; + low = -1; + used = 1 << root; + mask = used - 1; + if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) { + return 1; + } + for (; ; ) { + here_bits = len - drop; + if (work[sym] + 1 < match) { + here_op = 0; + here_val = work[sym]; + } else if (work[sym] >= match) { + here_op = extra[work[sym] - match]; + here_val = base[work[sym] - match]; + } else { + here_op = 32 + 64; + here_val = 0; + } + incr = 1 << len - drop; + fill = 1 << curr; + min = fill; + do { + fill -= incr; + table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0; + } while (fill !== 0); + incr = 1 << len - 1; + while (huff & incr) { + incr >>= 1; + } + if (incr !== 0) { + huff &= incr - 1; + huff += incr; + } else { + huff = 0; + } + sym++; + if (--count[len] === 0) { + if (len === max) { + break; + } + len = lens[lens_index + work[sym]]; + } + if (len > root && (huff & mask) !== low) { + if (drop === 0) { + drop = root; + } + next += min; + curr = len - drop; + left = 1 << curr; + while (curr + drop < max) { + left -= count[curr + drop]; + if (left <= 0) { + break; + } + curr++; + left <<= 1; + } + used += 1 << curr; + if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) { + return 1; + } + low = huff & mask; + table[low] = root << 24 | curr << 16 | next - table_index | 0; + } + } + if (huff !== 0) { + table[next + huff] = len - drop << 24 | 64 << 16 | 0; + } + opts.bits = root; + return 0; +}; +var inftrees = inflate_table; +const CODES = 0; +const LENS = 1; +const DISTS = 2; +const { + Z_FINISH: Z_FINISH$1, + Z_BLOCK, + Z_TREES, + Z_OK: Z_OK$1, + Z_STREAM_END: Z_STREAM_END$1, + Z_NEED_DICT: Z_NEED_DICT$1, + Z_STREAM_ERROR: Z_STREAM_ERROR$1, + Z_DATA_ERROR: Z_DATA_ERROR$1, + Z_MEM_ERROR: Z_MEM_ERROR$1, + Z_BUF_ERROR, + Z_DEFLATED +} = constants$2; +const HEAD = 16180; +const FLAGS = 16181; +const TIME = 16182; +const OS = 16183; +const EXLEN = 16184; +const EXTRA = 16185; +const NAME = 16186; +const COMMENT = 16187; +const HCRC = 16188; +const DICTID = 16189; +const DICT = 16190; +const TYPE = 16191; +const TYPEDO = 16192; +const STORED = 16193; +const COPY_ = 16194; +const COPY = 16195; +const TABLE = 16196; +const LENLENS = 16197; +const CODELENS = 16198; +const LEN_ = 16199; +const LEN = 16200; +const LENEXT = 16201; +const DIST = 16202; +const DISTEXT = 16203; +const MATCH = 16204; +const LIT = 16205; +const CHECK = 16206; +const LENGTH = 16207; +const DONE = 16208; +const BAD = 16209; +const MEM = 16210; +const SYNC = 16211; +const ENOUGH_LENS = 852; +const ENOUGH_DISTS = 592; +const MAX_WBITS = 15; +const DEF_WBITS = MAX_WBITS; +const zswap32 = (q) => { + return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24); +}; +function InflateState() { + this.strm = null; + this.mode = 0; + this.last = false; + this.wrap = 0; + this.havedict = false; + this.flags = 0; + this.dmax = 0; + this.check = 0; + this.total = 0; + this.head = null; + this.wbits = 0; + this.wsize = 0; + this.whave = 0; + this.wnext = 0; + this.window = null; + this.hold = 0; + this.bits = 0; + this.length = 0; + this.offset = 0; + this.extra = 0; + this.lencode = null; + this.distcode = null; + this.lenbits = 0; + this.distbits = 0; + this.ncode = 0; + this.nlen = 0; + this.ndist = 0; + this.have = 0; + this.next = null; + this.lens = new Uint16Array(320); + this.work = new Uint16Array(288); + this.lendyn = null; + this.distdyn = null; + this.sane = 0; + this.back = 0; + this.was = 0; +} +const inflateStateCheck = (strm) => { + if (!strm) { + return 1; + } + const state = strm.state; + if (!state || state.strm !== strm || state.mode < HEAD || state.mode > SYNC) { + return 1; + } + return 0; +}; +const inflateResetKeep = (strm) => { + if (inflateStateCheck(strm)) { + return Z_STREAM_ERROR$1; + } + const state = strm.state; + strm.total_in = strm.total_out = state.total = 0; + strm.msg = ""; + if (state.wrap) { + strm.adler = state.wrap & 1; + } + state.mode = HEAD; + state.last = 0; + state.havedict = 0; + state.flags = -1; + state.dmax = 32768; + state.head = null; + state.hold = 0; + state.bits = 0; + state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS); + state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS); + state.sane = 1; + state.back = -1; + return Z_OK$1; +}; +const inflateReset = (strm) => { + if (inflateStateCheck(strm)) { + return Z_STREAM_ERROR$1; + } + const state = strm.state; + state.wsize = 0; + state.whave = 0; + state.wnext = 0; + return inflateResetKeep(strm); +}; +const inflateReset2 = (strm, windowBits) => { + let wrap; + if (inflateStateCheck(strm)) { + return Z_STREAM_ERROR$1; + } + const state = strm.state; + if (windowBits < 0) { + wrap = 0; + windowBits = -windowBits; + } else { + wrap = (windowBits >> 4) + 5; + if (windowBits < 48) { + windowBits &= 15; + } + } + if (windowBits && (windowBits < 8 || windowBits > 15)) { + return Z_STREAM_ERROR$1; + } + if (state.window !== null && state.wbits !== windowBits) { + state.window = null; + } + state.wrap = wrap; + state.wbits = windowBits; + return inflateReset(strm); +}; +const inflateInit2 = (strm, windowBits) => { + if (!strm) { + return Z_STREAM_ERROR$1; + } + const state = new InflateState(); + strm.state = state; + state.strm = strm; + state.window = null; + state.mode = HEAD; + const ret = inflateReset2(strm, windowBits); + if (ret !== Z_OK$1) { + strm.state = null; + } + return ret; +}; +const inflateInit = (strm) => { + return inflateInit2(strm, DEF_WBITS); +}; +let virgin = true; +let lenfix, distfix; +const fixedtables = (state) => { + if (virgin) { + lenfix = new Int32Array(512); + distfix = new Int32Array(32); + let sym = 0; + while (sym < 144) { + state.lens[sym++] = 8; + } + while (sym < 256) { + state.lens[sym++] = 9; + } + while (sym < 280) { + state.lens[sym++] = 7; + } + while (sym < 288) { + state.lens[sym++] = 8; + } + inftrees(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 }); + sym = 0; + while (sym < 32) { + state.lens[sym++] = 5; + } + inftrees(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 }); + virgin = false; + } + state.lencode = lenfix; + state.lenbits = 9; + state.distcode = distfix; + state.distbits = 5; +}; +const updatewindow = (strm, src, end, copy) => { + let dist; + const state = strm.state; + if (state.window === null) { + state.wsize = 1 << state.wbits; + state.wnext = 0; + state.whave = 0; + state.window = new Uint8Array(state.wsize); + } + if (copy >= state.wsize) { + state.window.set(src.subarray(end - state.wsize, end), 0); + state.wnext = 0; + state.whave = state.wsize; + } else { + dist = state.wsize - state.wnext; + if (dist > copy) { + dist = copy; + } + state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext); + copy -= dist; + if (copy) { + state.window.set(src.subarray(end - copy, end), 0); + state.wnext = copy; + state.whave = state.wsize; + } else { + state.wnext += dist; + if (state.wnext === state.wsize) { + state.wnext = 0; + } + if (state.whave < state.wsize) { + state.whave += dist; + } + } + } + return 0; +}; +const inflate$2 = (strm, flush) => { + let state; + let input, output; + let next; + let put; + let have, left; + let hold; + let bits; + let _in, _out; + let copy; + let from; + let from_source; + let here = 0; + let here_bits, here_op, here_val; + let last_bits, last_op, last_val; + let len; + let ret; + const hbuf = new Uint8Array(4); + let opts; + let n; + const order = ( + /* permutation of code lengths */ + new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]) + ); + if (inflateStateCheck(strm) || !strm.output || !strm.input && strm.avail_in !== 0) { + return Z_STREAM_ERROR$1; + } + state = strm.state; + if (state.mode === TYPE) { + state.mode = TYPEDO; + } + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + _in = have; + _out = left; + ret = Z_OK$1; + inf_leave: + for (; ; ) { + switch (state.mode) { + case HEAD: + if (state.wrap === 0) { + state.mode = TYPEDO; + break; + } + while (bits < 16) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + if (state.wrap & 2 && hold === 35615) { + if (state.wbits === 0) { + state.wbits = 15; + } + state.check = 0; + hbuf[0] = hold & 255; + hbuf[1] = hold >>> 8 & 255; + state.check = crc32_1(state.check, hbuf, 2, 0); + hold = 0; + bits = 0; + state.mode = FLAGS; + break; + } + if (state.head) { + state.head.done = false; + } + if (!(state.wrap & 1) || /* check if zlib header allowed */ + (((hold & 255) << 8) + (hold >> 8)) % 31) { + strm.msg = "incorrect header check"; + state.mode = BAD; + break; + } + if ((hold & 15) !== Z_DEFLATED) { + strm.msg = "unknown compression method"; + state.mode = BAD; + break; + } + hold >>>= 4; + bits -= 4; + len = (hold & 15) + 8; + if (state.wbits === 0) { + state.wbits = len; + } + if (len > 15 || len > state.wbits) { + strm.msg = "invalid window size"; + state.mode = BAD; + break; + } + state.dmax = 1 << state.wbits; + state.flags = 0; + strm.adler = state.check = 1; + state.mode = hold & 512 ? DICTID : TYPE; + hold = 0; + bits = 0; + break; + case FLAGS: + while (bits < 16) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + state.flags = hold; + if ((state.flags & 255) !== Z_DEFLATED) { + strm.msg = "unknown compression method"; + state.mode = BAD; + break; + } + if (state.flags & 57344) { + strm.msg = "unknown header flags set"; + state.mode = BAD; + break; + } + if (state.head) { + state.head.text = hold >> 8 & 1; + } + if (state.flags & 512 && state.wrap & 4) { + hbuf[0] = hold & 255; + hbuf[1] = hold >>> 8 & 255; + state.check = crc32_1(state.check, hbuf, 2, 0); + } + hold = 0; + bits = 0; + state.mode = TIME; + case TIME: + while (bits < 32) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + if (state.head) { + state.head.time = hold; + } + if (state.flags & 512 && state.wrap & 4) { + hbuf[0] = hold & 255; + hbuf[1] = hold >>> 8 & 255; + hbuf[2] = hold >>> 16 & 255; + hbuf[3] = hold >>> 24 & 255; + state.check = crc32_1(state.check, hbuf, 4, 0); + } + hold = 0; + bits = 0; + state.mode = OS; + case OS: + while (bits < 16) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + if (state.head) { + state.head.xflags = hold & 255; + state.head.os = hold >> 8; + } + if (state.flags & 512 && state.wrap & 4) { + hbuf[0] = hold & 255; + hbuf[1] = hold >>> 8 & 255; + state.check = crc32_1(state.check, hbuf, 2, 0); + } + hold = 0; + bits = 0; + state.mode = EXLEN; + case EXLEN: + if (state.flags & 1024) { + while (bits < 16) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + state.length = hold; + if (state.head) { + state.head.extra_len = hold; + } + if (state.flags & 512 && state.wrap & 4) { + hbuf[0] = hold & 255; + hbuf[1] = hold >>> 8 & 255; + state.check = crc32_1(state.check, hbuf, 2, 0); + } + hold = 0; + bits = 0; + } else if (state.head) { + state.head.extra = null; + } + state.mode = EXTRA; + case EXTRA: + if (state.flags & 1024) { + copy = state.length; + if (copy > have) { + copy = have; + } + if (copy) { + if (state.head) { + len = state.head.extra_len - state.length; + if (!state.head.extra) { + state.head.extra = new Uint8Array(state.head.extra_len); + } + state.head.extra.set( + input.subarray( + next, + // extra field is limited to 65536 bytes + // - no need for additional size check + next + copy + ), + /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ + len + ); + } + if (state.flags & 512 && state.wrap & 4) { + state.check = crc32_1(state.check, input, copy, next); + } + have -= copy; + next += copy; + state.length -= copy; + } + if (state.length) { + break inf_leave; + } + } + state.length = 0; + state.mode = NAME; + case NAME: + if (state.flags & 2048) { + if (have === 0) { + break inf_leave; + } + copy = 0; + do { + len = input[next + copy++]; + if (state.head && len && state.length < 65536) { + state.head.name += String.fromCharCode(len); + } + } while (len && copy < have); + if (state.flags & 512 && state.wrap & 4) { + state.check = crc32_1(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { + break inf_leave; + } + } else if (state.head) { + state.head.name = null; + } + state.length = 0; + state.mode = COMMENT; + case COMMENT: + if (state.flags & 4096) { + if (have === 0) { + break inf_leave; + } + copy = 0; + do { + len = input[next + copy++]; + if (state.head && len && state.length < 65536) { + state.head.comment += String.fromCharCode(len); + } + } while (len && copy < have); + if (state.flags & 512 && state.wrap & 4) { + state.check = crc32_1(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { + break inf_leave; + } + } else if (state.head) { + state.head.comment = null; + } + state.mode = HCRC; + case HCRC: + if (state.flags & 512) { + while (bits < 16) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + if (state.wrap & 4 && hold !== (state.check & 65535)) { + strm.msg = "header crc mismatch"; + state.mode = BAD; + break; + } + hold = 0; + bits = 0; + } + if (state.head) { + state.head.hcrc = state.flags >> 9 & 1; + state.head.done = true; + } + strm.adler = state.check = 0; + state.mode = TYPE; + break; + case DICTID: + while (bits < 32) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + strm.adler = state.check = zswap32(hold); + hold = 0; + bits = 0; + state.mode = DICT; + case DICT: + if (state.havedict === 0) { + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + return Z_NEED_DICT$1; + } + strm.adler = state.check = 1; + state.mode = TYPE; + case TYPE: + if (flush === Z_BLOCK || flush === Z_TREES) { + break inf_leave; + } + case TYPEDO: + if (state.last) { + hold >>>= bits & 7; + bits -= bits & 7; + state.mode = CHECK; + break; + } + while (bits < 3) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + state.last = hold & 1; + hold >>>= 1; + bits -= 1; + switch (hold & 3) { + case 0: + state.mode = STORED; + break; + case 1: + fixedtables(state); + state.mode = LEN_; + if (flush === Z_TREES) { + hold >>>= 2; + bits -= 2; + break inf_leave; + } + break; + case 2: + state.mode = TABLE; + break; + case 3: + strm.msg = "invalid block type"; + state.mode = BAD; + } + hold >>>= 2; + bits -= 2; + break; + case STORED: + hold >>>= bits & 7; + bits -= bits & 7; + while (bits < 32) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + if ((hold & 65535) !== (hold >>> 16 ^ 65535)) { + strm.msg = "invalid stored block lengths"; + state.mode = BAD; + break; + } + state.length = hold & 65535; + hold = 0; + bits = 0; + state.mode = COPY_; + if (flush === Z_TREES) { + break inf_leave; + } + case COPY_: + state.mode = COPY; + case COPY: + copy = state.length; + if (copy) { + if (copy > have) { + copy = have; + } + if (copy > left) { + copy = left; + } + if (copy === 0) { + break inf_leave; + } + output.set(input.subarray(next, next + copy), put); + have -= copy; + next += copy; + left -= copy; + put += copy; + state.length -= copy; + break; + } + state.mode = TYPE; + break; + case TABLE: + while (bits < 14) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + state.nlen = (hold & 31) + 257; + hold >>>= 5; + bits -= 5; + state.ndist = (hold & 31) + 1; + hold >>>= 5; + bits -= 5; + state.ncode = (hold & 15) + 4; + hold >>>= 4; + bits -= 4; + if (state.nlen > 286 || state.ndist > 30) { + strm.msg = "too many length or distance symbols"; + state.mode = BAD; + break; + } + state.have = 0; + state.mode = LENLENS; + case LENLENS: + while (state.have < state.ncode) { + while (bits < 3) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + state.lens[order[state.have++]] = hold & 7; + hold >>>= 3; + bits -= 3; + } + while (state.have < 19) { + state.lens[order[state.have++]] = 0; + } + state.lencode = state.lendyn; + state.lenbits = 7; + opts = { bits: state.lenbits }; + ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); + state.lenbits = opts.bits; + if (ret) { + strm.msg = "invalid code lengths set"; + state.mode = BAD; + break; + } + state.have = 0; + state.mode = CODELENS; + case CODELENS: + while (state.have < state.nlen + state.ndist) { + for (; ; ) { + here = state.lencode[hold & (1 << state.lenbits) - 1]; + here_bits = here >>> 24; + here_op = here >>> 16 & 255; + here_val = here & 65535; + if (here_bits <= bits) { + break; + } + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + if (here_val < 16) { + hold >>>= here_bits; + bits -= here_bits; + state.lens[state.have++] = here_val; + } else { + if (here_val === 16) { + n = here_bits + 2; + while (bits < n) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + hold >>>= here_bits; + bits -= here_bits; + if (state.have === 0) { + strm.msg = "invalid bit length repeat"; + state.mode = BAD; + break; + } + len = state.lens[state.have - 1]; + copy = 3 + (hold & 3); + hold >>>= 2; + bits -= 2; + } else if (here_val === 17) { + n = here_bits + 3; + while (bits < n) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + hold >>>= here_bits; + bits -= here_bits; + len = 0; + copy = 3 + (hold & 7); + hold >>>= 3; + bits -= 3; + } else { + n = here_bits + 7; + while (bits < n) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + hold >>>= here_bits; + bits -= here_bits; + len = 0; + copy = 11 + (hold & 127); + hold >>>= 7; + bits -= 7; + } + if (state.have + copy > state.nlen + state.ndist) { + strm.msg = "invalid bit length repeat"; + state.mode = BAD; + break; + } + while (copy--) { + state.lens[state.have++] = len; + } + } + } + if (state.mode === BAD) { + break; + } + if (state.lens[256] === 0) { + strm.msg = "invalid code -- missing end-of-block"; + state.mode = BAD; + break; + } + state.lenbits = 9; + opts = { bits: state.lenbits }; + ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); + state.lenbits = opts.bits; + if (ret) { + strm.msg = "invalid literal/lengths set"; + state.mode = BAD; + break; + } + state.distbits = 6; + state.distcode = state.distdyn; + opts = { bits: state.distbits }; + ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); + state.distbits = opts.bits; + if (ret) { + strm.msg = "invalid distances set"; + state.mode = BAD; + break; + } + state.mode = LEN_; + if (flush === Z_TREES) { + break inf_leave; + } + case LEN_: + state.mode = LEN; + case LEN: + if (have >= 6 && left >= 258) { + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + inffast(strm, _out); + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + if (state.mode === TYPE) { + state.back = -1; + } + break; + } + state.back = 0; + for (; ; ) { + here = state.lencode[hold & (1 << state.lenbits) - 1]; + here_bits = here >>> 24; + here_op = here >>> 16 & 255; + here_val = here & 65535; + if (here_bits <= bits) { + break; + } + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + if (here_op && (here_op & 240) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (; ; ) { + here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; + here_bits = here >>> 24; + here_op = here >>> 16 & 255; + here_val = here & 65535; + if (last_bits + here_bits <= bits) { + break; + } + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + hold >>>= last_bits; + bits -= last_bits; + state.back += last_bits; + } + hold >>>= here_bits; + bits -= here_bits; + state.back += here_bits; + state.length = here_val; + if (here_op === 0) { + state.mode = LIT; + break; + } + if (here_op & 32) { + state.back = -1; + state.mode = TYPE; + break; + } + if (here_op & 64) { + strm.msg = "invalid literal/length code"; + state.mode = BAD; + break; + } + state.extra = here_op & 15; + state.mode = LENEXT; + case LENEXT: + if (state.extra) { + n = state.extra; + while (bits < n) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + state.length += hold & (1 << state.extra) - 1; + hold >>>= state.extra; + bits -= state.extra; + state.back += state.extra; + } + state.was = state.length; + state.mode = DIST; + case DIST: + for (; ; ) { + here = state.distcode[hold & (1 << state.distbits) - 1]; + here_bits = here >>> 24; + here_op = here >>> 16 & 255; + here_val = here & 65535; + if (here_bits <= bits) { + break; + } + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + if ((here_op & 240) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (; ; ) { + here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; + here_bits = here >>> 24; + here_op = here >>> 16 & 255; + here_val = here & 65535; + if (last_bits + here_bits <= bits) { + break; + } + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + hold >>>= last_bits; + bits -= last_bits; + state.back += last_bits; + } + hold >>>= here_bits; + bits -= here_bits; + state.back += here_bits; + if (here_op & 64) { + strm.msg = "invalid distance code"; + state.mode = BAD; + break; + } + state.offset = here_val; + state.extra = here_op & 15; + state.mode = DISTEXT; + case DISTEXT: + if (state.extra) { + n = state.extra; + while (bits < n) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + state.offset += hold & (1 << state.extra) - 1; + hold >>>= state.extra; + bits -= state.extra; + state.back += state.extra; + } + if (state.offset > state.dmax) { + strm.msg = "invalid distance too far back"; + state.mode = BAD; + break; + } + state.mode = MATCH; + case MATCH: + if (left === 0) { + break inf_leave; + } + copy = _out - left; + if (state.offset > copy) { + copy = state.offset - copy; + if (copy > state.whave) { + if (state.sane) { + strm.msg = "invalid distance too far back"; + state.mode = BAD; + break; + } + } + if (copy > state.wnext) { + copy -= state.wnext; + from = state.wsize - copy; + } else { + from = state.wnext - copy; + } + if (copy > state.length) { + copy = state.length; + } + from_source = state.window; + } else { + from_source = output; + from = put - state.offset; + copy = state.length; + } + if (copy > left) { + copy = left; + } + left -= copy; + state.length -= copy; + do { + output[put++] = from_source[from++]; + } while (--copy); + if (state.length === 0) { + state.mode = LEN; + } + break; + case LIT: + if (left === 0) { + break inf_leave; + } + output[put++] = state.length; + left--; + state.mode = LEN; + break; + case CHECK: + if (state.wrap) { + while (bits < 32) { + if (have === 0) { + break inf_leave; + } + have--; + hold |= input[next++] << bits; + bits += 8; + } + _out -= left; + strm.total_out += _out; + state.total += _out; + if (state.wrap & 4 && _out) { + strm.adler = state.check = /*UPDATE_CHECK(state.check, put - _out, _out);*/ + state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out); + } + _out = left; + if (state.wrap & 4 && (state.flags ? hold : zswap32(hold)) !== state.check) { + strm.msg = "incorrect data check"; + state.mode = BAD; + break; + } + hold = 0; + bits = 0; + } + state.mode = LENGTH; + case LENGTH: + if (state.wrap && state.flags) { + while (bits < 32) { + if (have === 0) { + break inf_leave; + } + have--; + hold += input[next++] << bits; + bits += 8; + } + if (state.wrap & 4 && hold !== (state.total & 4294967295)) { + strm.msg = "incorrect length check"; + state.mode = BAD; + break; + } + hold = 0; + bits = 0; + } + state.mode = DONE; + case DONE: + ret = Z_STREAM_END$1; + break inf_leave; + case BAD: + ret = Z_DATA_ERROR$1; + break inf_leave; + case MEM: + return Z_MEM_ERROR$1; + case SYNC: + default: + return Z_STREAM_ERROR$1; + } + } + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH$1)) { + if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) + ; + } + _in -= strm.avail_in; + _out -= strm.avail_out; + strm.total_in += _in; + strm.total_out += _out; + state.total += _out; + if (state.wrap & 4 && _out) { + strm.adler = state.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/ + state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out); + } + strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); + if ((_in === 0 && _out === 0 || flush === Z_FINISH$1) && ret === Z_OK$1) { + ret = Z_BUF_ERROR; + } + return ret; +}; +const inflateEnd = (strm) => { + if (inflateStateCheck(strm)) { + return Z_STREAM_ERROR$1; + } + let state = strm.state; + if (state.window) { + state.window = null; + } + strm.state = null; + return Z_OK$1; +}; +const inflateGetHeader = (strm, head) => { + if (inflateStateCheck(strm)) { + return Z_STREAM_ERROR$1; + } + const state = strm.state; + if ((state.wrap & 2) === 0) { + return Z_STREAM_ERROR$1; + } + state.head = head; + head.done = false; + return Z_OK$1; +}; +const inflateSetDictionary = (strm, dictionary) => { + const dictLength = dictionary.length; + let state; + let dictid; + let ret; + if (inflateStateCheck(strm)) { + return Z_STREAM_ERROR$1; + } + state = strm.state; + if (state.wrap !== 0 && state.mode !== DICT) { + return Z_STREAM_ERROR$1; + } + if (state.mode === DICT) { + dictid = 1; + dictid = adler32_1(dictid, dictionary, dictLength, 0); + if (dictid !== state.check) { + return Z_DATA_ERROR$1; + } + } + ret = updatewindow(strm, dictionary, dictLength, dictLength); + if (ret) { + state.mode = MEM; + return Z_MEM_ERROR$1; + } + state.havedict = 1; + return Z_OK$1; +}; +var inflateReset_1 = inflateReset; +var inflateReset2_1 = inflateReset2; +var inflateResetKeep_1 = inflateResetKeep; +var inflateInit_1 = inflateInit; +var inflateInit2_1 = inflateInit2; +var inflate_2$1 = inflate$2; +var inflateEnd_1 = inflateEnd; +var inflateGetHeader_1 = inflateGetHeader; +var inflateSetDictionary_1 = inflateSetDictionary; +var inflateInfo = "pako inflate (from Nodeca project)"; +var inflate_1$2 = { + inflateReset: inflateReset_1, + inflateReset2: inflateReset2_1, + inflateResetKeep: inflateResetKeep_1, + inflateInit: inflateInit_1, + inflateInit2: inflateInit2_1, + inflate: inflate_2$1, + inflateEnd: inflateEnd_1, + inflateGetHeader: inflateGetHeader_1, + inflateSetDictionary: inflateSetDictionary_1, + inflateInfo +}; +function GZheader() { + this.text = 0; + this.time = 0; + this.xflags = 0; + this.os = 0; + this.extra = null; + this.extra_len = 0; + this.name = ""; + this.comment = ""; + this.hcrc = 0; + this.done = false; +} +var gzheader = GZheader; +const toString = Object.prototype.toString; +const { + Z_NO_FLUSH, + Z_FINISH, + Z_OK, + Z_STREAM_END, + Z_NEED_DICT, + Z_STREAM_ERROR, + Z_DATA_ERROR, + Z_MEM_ERROR +} = constants$2; +function Inflate$1(options) { + this.options = common.assign({ + chunkSize: 1024 * 64, + windowBits: 15, + to: "" + }, options || {}); + const opt = this.options; + if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) { + opt.windowBits = -opt.windowBits; + if (opt.windowBits === 0) { + opt.windowBits = -15; + } + } + if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) { + opt.windowBits += 32; + } + if (opt.windowBits > 15 && opt.windowBits < 48) { + if ((opt.windowBits & 15) === 0) { + opt.windowBits |= 15; + } + } + this.err = 0; + this.msg = ""; + this.ended = false; + this.chunks = []; + this.strm = new zstream(); + this.strm.avail_out = 0; + let status = inflate_1$2.inflateInit2( + this.strm, + opt.windowBits + ); + if (status !== Z_OK) { + throw new Error(messages[status]); + } + this.header = new gzheader(); + inflate_1$2.inflateGetHeader(this.strm, this.header); + if (opt.dictionary) { + if (typeof opt.dictionary === "string") { + opt.dictionary = strings.string2buf(opt.dictionary); + } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") { + opt.dictionary = new Uint8Array(opt.dictionary); + } + if (opt.raw) { + status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary); + if (status !== Z_OK) { + throw new Error(messages[status]); + } + } + } +} +Inflate$1.prototype.push = function(data, flush_mode) { + const strm = this.strm; + const chunkSize = this.options.chunkSize; + const dictionary = this.options.dictionary; + let status, _flush_mode, last_avail_out; + if (this.ended) + return false; + if (flush_mode === ~~flush_mode) + _flush_mode = flush_mode; + else + _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH; + if (toString.call(data) === "[object ArrayBuffer]") { + strm.input = new Uint8Array(data); + } else { + strm.input = data; + } + strm.next_in = 0; + strm.avail_in = strm.input.length; + for (; ; ) { + if (strm.avail_out === 0) { + strm.output = new Uint8Array(chunkSize); + strm.next_out = 0; + strm.avail_out = chunkSize; + } + status = inflate_1$2.inflate(strm, _flush_mode); + if (status === Z_NEED_DICT && dictionary) { + status = inflate_1$2.inflateSetDictionary(strm, dictionary); + if (status === Z_OK) { + status = inflate_1$2.inflate(strm, _flush_mode); + } else if (status === Z_DATA_ERROR) { + status = Z_NEED_DICT; + } + } + while (strm.avail_in > 0 && status === Z_STREAM_END && strm.state.wrap > 0 && data[strm.next_in] !== 0) { + inflate_1$2.inflateReset(strm); + status = inflate_1$2.inflate(strm, _flush_mode); + } + switch (status) { + case Z_STREAM_ERROR: + case Z_DATA_ERROR: + case Z_NEED_DICT: + case Z_MEM_ERROR: + this.onEnd(status); + this.ended = true; + return false; + } + last_avail_out = strm.avail_out; + if (strm.next_out) { + if (strm.avail_out === 0 || status === Z_STREAM_END) { + if (this.options.to === "string") { + let next_out_utf8 = strings.utf8border(strm.output, strm.next_out); + let tail = strm.next_out - next_out_utf8; + let utf8str = strings.buf2string(strm.output, next_out_utf8); + strm.next_out = tail; + strm.avail_out = chunkSize - tail; + if (tail) + strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0); + this.onData(utf8str); + } else { + this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out)); + } + } + } + if (status === Z_OK && last_avail_out === 0) + continue; + if (status === Z_STREAM_END) { + status = inflate_1$2.inflateEnd(this.strm); + this.onEnd(status); + this.ended = true; + return true; + } + if (strm.avail_in === 0) + break; + } + return true; +}; +Inflate$1.prototype.onData = function(chunk) { + this.chunks.push(chunk); +}; +Inflate$1.prototype.onEnd = function(status) { + if (status === Z_OK) { + if (this.options.to === "string") { + this.result = this.chunks.join(""); + } else { + this.result = common.flattenChunks(this.chunks); + } + } + this.chunks = []; + this.err = status; + this.msg = this.strm.msg; +}; +function inflate$1(input, options) { + const inflator = new Inflate$1(options); + inflator.push(input); + if (inflator.err) + throw inflator.msg || messages[inflator.err]; + return inflator.result; +} +function inflateRaw$1(input, options) { + options = options || {}; + options.raw = true; + return inflate$1(input, options); +} +var Inflate_1$1 = Inflate$1; +var inflate_2 = inflate$1; +var inflateRaw_1$1 = inflateRaw$1; +var ungzip$1 = inflate$1; +var inflate_1$1 = { + Inflate: Inflate_1$1, + inflate: inflate_2, + inflateRaw: inflateRaw_1$1, + ungzip: ungzip$1 +}; +const { Deflate, deflate, deflateRaw, gzip } = deflate_1$1; +const { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1; +var Deflate_1 = Deflate; +var deflate_1 = deflate; +var deflateRaw_1 = deflateRaw; +var gzip_1 = gzip; +var Inflate_1 = Inflate; +var inflate_1 = inflate; +var inflateRaw_1 = inflateRaw; +var ungzip_1 = ungzip; +var constants_1 = constants$2; +var pako = { + Deflate: Deflate_1, + deflate: deflate_1, + deflateRaw: deflateRaw_1, + gzip: gzip_1, + Inflate: Inflate_1, + inflate: inflate_1, + inflateRaw: inflateRaw_1, + ungzip: ungzip_1, + constants: constants_1 +}; +class ThreadController { + constructor(thread2) { + __publicField(this, "id"); + __publicField(this, "thread"); + this.id = this.getId(); + this.thread = thread2; + this.thread.actions[this.id] = (input) => this.execute(input); + } +} +const SIZEOF_SHORT = 2; +const SIZEOF_INT = 4; +const FILE_IDENTIFIER_LENGTH = 4; +const SIZE_PREFIX_LENGTH = 4; +const int32 = new Int32Array(2); +const float32 = new Float32Array(int32.buffer); +const float64 = new Float64Array(int32.buffer); +const isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1; +var Encoding; +(function(Encoding2) { + Encoding2[Encoding2["UTF8_BYTES"] = 1] = "UTF8_BYTES"; + Encoding2[Encoding2["UTF16_STRING"] = 2] = "UTF16_STRING"; +})(Encoding || (Encoding = {})); +class ByteBuffer { + /** + * Create a new ByteBuffer with a given array of bytes (`Uint8Array`) + */ + constructor(bytes_) { + this.bytes_ = bytes_; + this.position_ = 0; + this.text_decoder_ = new TextDecoder(); + } + /** + * Create and allocate a new ByteBuffer with a given size. + */ + static allocate(byte_size) { + return new ByteBuffer(new Uint8Array(byte_size)); + } + clear() { + this.position_ = 0; + } + /** + * Get the underlying `Uint8Array`. + */ + bytes() { + return this.bytes_; + } + /** + * Get the buffer's position. + */ + position() { + return this.position_; + } + /** + * Set the buffer's position. + */ + setPosition(position) { + this.position_ = position; + } + /** + * Get the buffer's capacity. + */ + capacity() { + return this.bytes_.length; + } + readInt8(offset) { + return this.readUint8(offset) << 24 >> 24; + } + readUint8(offset) { + return this.bytes_[offset]; + } + readInt16(offset) { + return this.readUint16(offset) << 16 >> 16; + } + readUint16(offset) { + return this.bytes_[offset] | this.bytes_[offset + 1] << 8; + } + readInt32(offset) { + return this.bytes_[offset] | this.bytes_[offset + 1] << 8 | this.bytes_[offset + 2] << 16 | this.bytes_[offset + 3] << 24; + } + readUint32(offset) { + return this.readInt32(offset) >>> 0; + } + readInt64(offset) { + return BigInt.asIntN(64, BigInt(this.readUint32(offset)) + (BigInt(this.readUint32(offset + 4)) << BigInt(32))); + } + readUint64(offset) { + return BigInt.asUintN(64, BigInt(this.readUint32(offset)) + (BigInt(this.readUint32(offset + 4)) << BigInt(32))); + } + readFloat32(offset) { + int32[0] = this.readInt32(offset); + return float32[0]; + } + readFloat64(offset) { + int32[isLittleEndian ? 0 : 1] = this.readInt32(offset); + int32[isLittleEndian ? 1 : 0] = this.readInt32(offset + 4); + return float64[0]; + } + writeInt8(offset, value) { + this.bytes_[offset] = value; + } + writeUint8(offset, value) { + this.bytes_[offset] = value; + } + writeInt16(offset, value) { + this.bytes_[offset] = value; + this.bytes_[offset + 1] = value >> 8; + } + writeUint16(offset, value) { + this.bytes_[offset] = value; + this.bytes_[offset + 1] = value >> 8; + } + writeInt32(offset, value) { + this.bytes_[offset] = value; + this.bytes_[offset + 1] = value >> 8; + this.bytes_[offset + 2] = value >> 16; + this.bytes_[offset + 3] = value >> 24; + } + writeUint32(offset, value) { + this.bytes_[offset] = value; + this.bytes_[offset + 1] = value >> 8; + this.bytes_[offset + 2] = value >> 16; + this.bytes_[offset + 3] = value >> 24; + } + writeInt64(offset, value) { + this.writeInt32(offset, Number(BigInt.asIntN(32, value))); + this.writeInt32(offset + 4, Number(BigInt.asIntN(32, value >> BigInt(32)))); + } + writeUint64(offset, value) { + this.writeUint32(offset, Number(BigInt.asUintN(32, value))); + this.writeUint32(offset + 4, Number(BigInt.asUintN(32, value >> BigInt(32)))); + } + writeFloat32(offset, value) { + float32[0] = value; + this.writeInt32(offset, int32[0]); + } + writeFloat64(offset, value) { + float64[0] = value; + this.writeInt32(offset, int32[isLittleEndian ? 0 : 1]); + this.writeInt32(offset + 4, int32[isLittleEndian ? 1 : 0]); + } + /** + * Return the file identifier. Behavior is undefined for FlatBuffers whose + * schema does not include a file_identifier (likely points at padding or the + * start of a the root vtable). + */ + getBufferIdentifier() { + if (this.bytes_.length < this.position_ + SIZEOF_INT + FILE_IDENTIFIER_LENGTH) { + throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier."); + } + let result = ""; + for (let i = 0; i < FILE_IDENTIFIER_LENGTH; i++) { + result += String.fromCharCode(this.readInt8(this.position_ + SIZEOF_INT + i)); + } + return result; + } + /** + * Look up a field in the vtable, return an offset into the object, or 0 if the + * field is not present. + */ + __offset(bb_pos, vtable_offset) { + const vtable = bb_pos - this.readInt32(bb_pos); + return vtable_offset < this.readInt16(vtable) ? this.readInt16(vtable + vtable_offset) : 0; + } + /** + * Initialize any Table-derived type to point to the union at the given offset. + */ + __union(t, offset) { + t.bb_pos = offset + this.readInt32(offset); + t.bb = this; + return t; + } + /** + * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer. + * This allocates a new string and converts to wide chars upon each access. + * + * To avoid the conversion to string, pass Encoding.UTF8_BYTES as the + * "optionalEncoding" argument. This is useful for avoiding conversion when + * the data will just be packaged back up in another FlatBuffer later on. + * + * @param offset + * @param opt_encoding Defaults to UTF16_STRING + */ + __string(offset, opt_encoding) { + offset += this.readInt32(offset); + const length = this.readInt32(offset); + offset += SIZEOF_INT; + const utf8bytes = this.bytes_.subarray(offset, offset + length); + if (opt_encoding === Encoding.UTF8_BYTES) + return utf8bytes; + else + return this.text_decoder_.decode(utf8bytes); + } + /** + * Handle unions that can contain string as its member, if a Table-derived type then initialize it, + * if a string then return a new one + * + * WARNING: strings are immutable in JS so we can't change the string that the user gave us, this + * makes the behaviour of __union_with_string different compared to __union + */ + __union_with_string(o, offset) { + if (typeof o === "string") { + return this.__string(offset); + } + return this.__union(o, offset); + } + /** + * Retrieve the relative offset stored at "offset" + */ + __indirect(offset) { + return offset + this.readInt32(offset); + } + /** + * Get the start of data of a vector whose offset is stored at "offset" in this object. + */ + __vector(offset) { + return offset + this.readInt32(offset) + SIZEOF_INT; + } + /** + * Get the length of a vector whose offset is stored at "offset" in this object. + */ + __vector_len(offset) { + return this.readInt32(offset + this.readInt32(offset)); + } + __has_identifier(ident) { + if (ident.length != FILE_IDENTIFIER_LENGTH) { + throw new Error("FlatBuffers: file identifier must be length " + FILE_IDENTIFIER_LENGTH); + } + for (let i = 0; i < FILE_IDENTIFIER_LENGTH; i++) { + if (ident.charCodeAt(i) != this.readInt8(this.position() + SIZEOF_INT + i)) { + return false; + } + } + return true; + } + /** + * A helper function for generating list for obj api + */ + createScalarList(listAccessor, listLength) { + const ret = []; + for (let i = 0; i < listLength; ++i) { + const val = listAccessor(i); + if (val !== null) { + ret.push(val); + } + } + return ret; + } + /** + * A helper function for generating list for obj api + * @param listAccessor function that accepts an index and return data at that index + * @param listLength listLength + * @param res result list + */ + createObjList(listAccessor, listLength) { + const ret = []; + for (let i = 0; i < listLength; ++i) { + const val = listAccessor(i); + if (val !== null) { + ret.push(val.unpack()); + } + } + return ret; + } +} +class Builder { + /** + * Create a FlatBufferBuilder. + */ + constructor(opt_initial_size) { + this.minalign = 1; + this.vtable = null; + this.vtable_in_use = 0; + this.isNested = false; + this.object_start = 0; + this.vtables = []; + this.vector_num_elems = 0; + this.force_defaults = false; + this.string_maps = null; + this.text_encoder = new TextEncoder(); + let initial_size; + if (!opt_initial_size) { + initial_size = 1024; + } else { + initial_size = opt_initial_size; + } + this.bb = ByteBuffer.allocate(initial_size); + this.space = initial_size; + } + clear() { + this.bb.clear(); + this.space = this.bb.capacity(); + this.minalign = 1; + this.vtable = null; + this.vtable_in_use = 0; + this.isNested = false; + this.object_start = 0; + this.vtables = []; + this.vector_num_elems = 0; + this.force_defaults = false; + this.string_maps = null; + } + /** + * In order to save space, fields that are set to their default value + * don't get serialized into the buffer. Forcing defaults provides a + * way to manually disable this optimization. + * + * @param forceDefaults true always serializes default values + */ + forceDefaults(forceDefaults) { + this.force_defaults = forceDefaults; + } + /** + * Get the ByteBuffer representing the FlatBuffer. Only call this after you've + * called finish(). The actual data starts at the ByteBuffer's current position, + * not necessarily at 0. + */ + dataBuffer() { + return this.bb; + } + /** + * Get the bytes representing the FlatBuffer. Only call this after you've + * called finish(). + */ + asUint8Array() { + return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset()); + } + /** + * Prepare to write an element of `size` after `additional_bytes` have been + * written, e.g. if you write a string, you need to align such the int length + * field is aligned to 4 bytes, and the string data follows it directly. If all + * you need to do is alignment, `additional_bytes` will be 0. + * + * @param size This is the of the new element to write + * @param additional_bytes The padding size + */ + prep(size, additional_bytes) { + if (size > this.minalign) { + this.minalign = size; + } + const align_size = ~(this.bb.capacity() - this.space + additional_bytes) + 1 & size - 1; + while (this.space < align_size + size + additional_bytes) { + const old_buf_size = this.bb.capacity(); + this.bb = Builder.growByteBuffer(this.bb); + this.space += this.bb.capacity() - old_buf_size; + } + this.pad(align_size); + } + pad(byte_size) { + for (let i = 0; i < byte_size; i++) { + this.bb.writeInt8(--this.space, 0); + } + } + writeInt8(value) { + this.bb.writeInt8(this.space -= 1, value); + } + writeInt16(value) { + this.bb.writeInt16(this.space -= 2, value); + } + writeInt32(value) { + this.bb.writeInt32(this.space -= 4, value); + } + writeInt64(value) { + this.bb.writeInt64(this.space -= 8, value); + } + writeFloat32(value) { + this.bb.writeFloat32(this.space -= 4, value); + } + writeFloat64(value) { + this.bb.writeFloat64(this.space -= 8, value); + } + /** + * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary). + * @param value The `int8` to add the buffer. + */ + addInt8(value) { + this.prep(1, 0); + this.writeInt8(value); + } + /** + * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary). + * @param value The `int16` to add the buffer. + */ + addInt16(value) { + this.prep(2, 0); + this.writeInt16(value); + } + /** + * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary). + * @param value The `int32` to add the buffer. + */ + addInt32(value) { + this.prep(4, 0); + this.writeInt32(value); + } + /** + * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary). + * @param value The `int64` to add the buffer. + */ + addInt64(value) { + this.prep(8, 0); + this.writeInt64(value); + } + /** + * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary). + * @param value The `float32` to add the buffer. + */ + addFloat32(value) { + this.prep(4, 0); + this.writeFloat32(value); + } + /** + * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary). + * @param value The `float64` to add the buffer. + */ + addFloat64(value) { + this.prep(8, 0); + this.writeFloat64(value); + } + addFieldInt8(voffset, value, defaultValue) { + if (this.force_defaults || value != defaultValue) { + this.addInt8(value); + this.slot(voffset); + } + } + addFieldInt16(voffset, value, defaultValue) { + if (this.force_defaults || value != defaultValue) { + this.addInt16(value); + this.slot(voffset); + } + } + addFieldInt32(voffset, value, defaultValue) { + if (this.force_defaults || value != defaultValue) { + this.addInt32(value); + this.slot(voffset); + } + } + addFieldInt64(voffset, value, defaultValue) { + if (this.force_defaults || value !== defaultValue) { + this.addInt64(value); + this.slot(voffset); + } + } + addFieldFloat32(voffset, value, defaultValue) { + if (this.force_defaults || value != defaultValue) { + this.addFloat32(value); + this.slot(voffset); + } + } + addFieldFloat64(voffset, value, defaultValue) { + if (this.force_defaults || value != defaultValue) { + this.addFloat64(value); + this.slot(voffset); + } + } + addFieldOffset(voffset, value, defaultValue) { + if (this.force_defaults || value != defaultValue) { + this.addOffset(value); + this.slot(voffset); + } + } + /** + * Structs are stored inline, so nothing additional is being added. `d` is always 0. + */ + addFieldStruct(voffset, value, defaultValue) { + if (value != defaultValue) { + this.nested(value); + this.slot(voffset); + } + } + /** + * Structures are always stored inline, they need to be created right + * where they're used. You'll get this assertion failure if you + * created it elsewhere. + */ + nested(obj) { + if (obj != this.offset()) { + throw new TypeError("FlatBuffers: struct must be serialized inline."); + } + } + /** + * Should not be creating any other object, string or vector + * while an object is being constructed + */ + notNested() { + if (this.isNested) { + throw new TypeError("FlatBuffers: object serialization must not be nested."); + } + } + /** + * Set the current vtable at `voffset` to the current location in the buffer. + */ + slot(voffset) { + if (this.vtable !== null) + this.vtable[voffset] = this.offset(); + } + /** + * @returns Offset relative to the end of the buffer. + */ + offset() { + return this.bb.capacity() - this.space; + } + /** + * Doubles the size of the backing ByteBuffer and copies the old data towards + * the end of the new buffer (since we build the buffer backwards). + * + * @param bb The current buffer with the existing data + * @returns A new byte buffer with the old data copied + * to it. The data is located at the end of the buffer. + * + * uint8Array.set() formally takes {Array|ArrayBufferView}, so to pass + * it a uint8Array we need to suppress the type check: + * @suppress {checkTypes} + */ + static growByteBuffer(bb) { + const old_buf_size = bb.capacity(); + if (old_buf_size & 3221225472) { + throw new Error("FlatBuffers: cannot grow buffer beyond 2 gigabytes."); + } + const new_buf_size = old_buf_size << 1; + const nbb = ByteBuffer.allocate(new_buf_size); + nbb.setPosition(new_buf_size - old_buf_size); + nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size); + return nbb; + } + /** + * Adds on offset, relative to where it will be written. + * + * @param offset The offset to add. + */ + addOffset(offset) { + this.prep(SIZEOF_INT, 0); + this.writeInt32(this.offset() - offset + SIZEOF_INT); + } + /** + * Start encoding a new object in the buffer. Users will not usually need to + * call this directly. The FlatBuffers compiler will generate helper methods + * that call this method internally. + */ + startObject(numfields) { + this.notNested(); + if (this.vtable == null) { + this.vtable = []; + } + this.vtable_in_use = numfields; + for (let i = 0; i < numfields; i++) { + this.vtable[i] = 0; + } + this.isNested = true; + this.object_start = this.offset(); + } + /** + * Finish off writing the object that is under construction. + * + * @returns The offset to the object inside `dataBuffer` + */ + endObject() { + if (this.vtable == null || !this.isNested) { + throw new Error("FlatBuffers: endObject called without startObject"); + } + this.addInt32(0); + const vtableloc = this.offset(); + let i = this.vtable_in_use - 1; + for (; i >= 0 && this.vtable[i] == 0; i--) { + } + const trimmed_size = i + 1; + for (; i >= 0; i--) { + this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0); + } + const standard_fields = 2; + this.addInt16(vtableloc - this.object_start); + const len = (trimmed_size + standard_fields) * SIZEOF_SHORT; + this.addInt16(len); + let existing_vtable = 0; + const vt1 = this.space; + outer_loop: + for (i = 0; i < this.vtables.length; i++) { + const vt2 = this.bb.capacity() - this.vtables[i]; + if (len == this.bb.readInt16(vt2)) { + for (let j = SIZEOF_SHORT; j < len; j += SIZEOF_SHORT) { + if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) { + continue outer_loop; + } + } + existing_vtable = this.vtables[i]; + break; + } + } + if (existing_vtable) { + this.space = this.bb.capacity() - vtableloc; + this.bb.writeInt32(this.space, existing_vtable - vtableloc); + } else { + this.vtables.push(this.offset()); + this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc); + } + this.isNested = false; + return vtableloc; + } + /** + * Finalize a buffer, poiting to the given `root_table`. + */ + finish(root_table, opt_file_identifier, opt_size_prefix) { + const size_prefix = opt_size_prefix ? SIZE_PREFIX_LENGTH : 0; + if (opt_file_identifier) { + const file_identifier = opt_file_identifier; + this.prep(this.minalign, SIZEOF_INT + FILE_IDENTIFIER_LENGTH + size_prefix); + if (file_identifier.length != FILE_IDENTIFIER_LENGTH) { + throw new TypeError("FlatBuffers: file identifier must be length " + FILE_IDENTIFIER_LENGTH); + } + for (let i = FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) { + this.writeInt8(file_identifier.charCodeAt(i)); + } + } + this.prep(this.minalign, SIZEOF_INT + size_prefix); + this.addOffset(root_table); + if (size_prefix) { + this.addInt32(this.bb.capacity() - this.space); + } + this.bb.setPosition(this.space); + } + /** + * Finalize a size prefixed buffer, pointing to the given `root_table`. + */ + finishSizePrefixed(root_table, opt_file_identifier) { + this.finish(root_table, opt_file_identifier, true); + } + /** + * This checks a required field has been set in a given table that has + * just been constructed. + */ + requiredField(table, field) { + const table_start = this.bb.capacity() - table; + const vtable_start = table_start - this.bb.readInt32(table_start); + const ok = field < this.bb.readInt16(vtable_start) && this.bb.readInt16(vtable_start + field) != 0; + if (!ok) { + throw new TypeError("FlatBuffers: field " + field + " must be set"); + } + } + /** + * Start a new array/vector of objects. Users usually will not call + * this directly. The FlatBuffers compiler will create a start/end + * method for vector types in generated code. + * + * @param elem_size The size of each element in the array + * @param num_elems The number of elements in the array + * @param alignment The alignment of the array + */ + startVector(elem_size, num_elems, alignment) { + this.notNested(); + this.vector_num_elems = num_elems; + this.prep(SIZEOF_INT, elem_size * num_elems); + this.prep(alignment, elem_size * num_elems); + } + /** + * Finish off the creation of an array and all its elements. The array must be + * created with `startVector`. + * + * @returns The offset at which the newly created array + * starts. + */ + endVector() { + this.writeInt32(this.vector_num_elems); + return this.offset(); + } + /** + * Encode the string `s` in the buffer using UTF-8. If the string passed has + * already been seen, we return the offset of the already written string + * + * @param s The string to encode + * @return The offset in the buffer where the encoded string starts + */ + createSharedString(s) { + if (!s) { + return 0; + } + if (!this.string_maps) { + this.string_maps = /* @__PURE__ */ new Map(); + } + if (this.string_maps.has(s)) { + return this.string_maps.get(s); + } + const offset = this.createString(s); + this.string_maps.set(s, offset); + return offset; + } + /** + * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed + * instead of a string, it is assumed to contain valid UTF-8 encoded data. + * + * @param s The string to encode + * @return The offset in the buffer where the encoded string starts + */ + createString(s) { + if (s === null || s === void 0) { + return 0; + } + let utf8; + if (s instanceof Uint8Array) { + utf8 = s; + } else { + utf8 = this.text_encoder.encode(s); + } + this.addInt8(0); + this.startVector(1, utf8.length, 1); + this.bb.setPosition(this.space -= utf8.length); + this.bb.bytes().set(utf8, this.space); + return this.endVector(); + } + /** + * Create a byte vector. + * + * @param v The bytes to add + * @returns The offset in the buffer where the byte vector starts + */ + createByteVector(v) { + if (v === null || v === void 0) { + return 0; + } + this.startVector(1, v.length, 1); + this.bb.setPosition(this.space -= v.length); + this.bb.bytes().set(v, this.space); + return this.endVector(); + } + /** + * A helper function to pack an object + * + * @returns offset of obj + */ + createObjectOffset(obj) { + if (obj === null) { + return 0; + } + if (typeof obj === "string") { + return this.createString(obj); + } else { + return obj.pack(this); + } + } + /** + * A helper function to pack a list of object + * + * @returns list of offsets of each non null object + */ + createObjectOffsetList(list) { + const ret = []; + for (let i = 0; i < list.length; ++i) { + const val = list[i]; + if (val !== null) { + ret.push(this.createObjectOffset(val)); + } else { + throw new TypeError("FlatBuffers: Argument for createObjectOffsetList cannot contain null."); + } + } + return ret; + } + createStructOffsetList(list, startFunc) { + startFunc(this, list.length); + this.createObjectOffsetList(list.slice().reverse()); + return this.endVector(); + } +} +const CENTER = 0; +const AVERAGE = 1; +const SAH = 2; +const CONTAINED = 2; +const PRIMITIVE_INTERSECT_COST = 1.25; +const TRAVERSAL_COST = 1; +const BYTES_PER_NODE = 6 * 4 + 4 + 4; +const UINT32_PER_NODE = BYTES_PER_NODE / 4; +const IS_LEAFNODE_FLAG = 65535; +const FLOAT32_EPSILON = Math.pow(2, -24); +const SKIP_GENERATION = Symbol("SKIP_GENERATION"); +const DEFAULT_OPTIONS = { + strategy: CENTER, + maxDepth: 40, + maxLeafSize: 10, + useSharedArrayBuffer: false, + setBoundingBox: true, + onProgress: null, + indirect: false, + verbose: true, + range: null, + [SKIP_GENERATION]: false +}; +function arrayToBox(nodeIndex32, array, target) { + target.min.x = array[nodeIndex32]; + target.min.y = array[nodeIndex32 + 1]; + target.min.z = array[nodeIndex32 + 2]; + target.max.x = array[nodeIndex32 + 3]; + target.max.y = array[nodeIndex32 + 4]; + target.max.z = array[nodeIndex32 + 5]; + return target; +} +function getLongestEdgeIndex(bounds) { + let splitDimIdx = -1; + let splitDist = -Infinity; + for (let i = 0; i < 3; i++) { + const dist = bounds[i + 3] - bounds[i]; + if (dist > splitDist) { + splitDist = dist; + splitDimIdx = i; + } + } + return splitDimIdx; +} +function copyBounds(source, target) { + target.set(source); +} +function unionBounds(a, b, target) { + let aVal, bVal; + for (let d = 0; d < 3; d++) { + const d3 = d + 3; + aVal = a[d]; + bVal = b[d]; + target[d] = aVal < bVal ? aVal : bVal; + aVal = a[d3]; + bVal = b[d3]; + target[d3] = aVal > bVal ? aVal : bVal; + } +} +function expandByPrimitiveBounds(startIndex, primitiveBounds, bounds) { + for (let d = 0; d < 3; d++) { + const tCenter = primitiveBounds[startIndex + 2 * d]; + const tHalf = primitiveBounds[startIndex + 2 * d + 1]; + const tMin = tCenter - tHalf; + const tMax = tCenter + tHalf; + if (tMin < bounds[d]) { + bounds[d] = tMin; + } + if (tMax > bounds[d + 3]) { + bounds[d + 3] = tMax; + } + } +} +function computeSurfaceArea(bounds) { + const d0 = bounds[3] - bounds[0]; + const d1 = bounds[4] - bounds[1]; + const d2 = bounds[5] - bounds[2]; + return 2 * (d0 * d1 + d1 * d2 + d2 * d0); +} +function IS_LEAF(n16, uint16Array2) { + return uint16Array2[n16 + 15] === IS_LEAFNODE_FLAG; +} +function OFFSET(n32, uint32Array2) { + return uint32Array2[n32 + 6]; +} +function COUNT(n16, uint16Array2) { + return uint16Array2[n16 + 14]; +} +function LEFT_NODE(n32) { + return n32 + UINT32_PER_NODE; +} +function RIGHT_NODE(n32, uint32Array2) { + const relativeOffset = uint32Array2[n32 + 6]; + return n32 + relativeOffset * UINT32_PER_NODE; +} +function SPLIT_AXIS(n32, uint32Array2) { + return uint32Array2[n32 + 7]; +} +function BOUNDING_DATA_INDEX(n32) { + return n32; +} +function getBounds(primitiveBounds, offset, count, target, centroidTarget) { + let minx = Infinity; + let miny = Infinity; + let minz = Infinity; + let maxx = -Infinity; + let maxy = -Infinity; + let maxz = -Infinity; + let cminx = Infinity; + let cminy = Infinity; + let cminz = Infinity; + let cmaxx = -Infinity; + let cmaxy = -Infinity; + let cmaxz = -Infinity; + const boundsOffset = primitiveBounds.offset || 0; + for (let i = (offset - boundsOffset) * 6, end = (offset + count - boundsOffset) * 6; i < end; i += 6) { + const cx = primitiveBounds[i + 0]; + const hx = primitiveBounds[i + 1]; + const lx = cx - hx; + const rx = cx + hx; + if (lx < minx) + minx = lx; + if (rx > maxx) + maxx = rx; + if (cx < cminx) + cminx = cx; + if (cx > cmaxx) + cmaxx = cx; + const cy = primitiveBounds[i + 2]; + const hy = primitiveBounds[i + 3]; + const ly = cy - hy; + const ry = cy + hy; + if (ly < miny) + miny = ly; + if (ry > maxy) + maxy = ry; + if (cy < cminy) + cminy = cy; + if (cy > cmaxy) + cmaxy = cy; + const cz = primitiveBounds[i + 4]; + const hz = primitiveBounds[i + 5]; + const lz = cz - hz; + const rz = cz + hz; + if (lz < minz) + minz = lz; + if (rz > maxz) + maxz = rz; + if (cz < cminz) + cminz = cz; + if (cz > cmaxz) + cmaxz = cz; + } + target[0] = minx; + target[1] = miny; + target[2] = minz; + target[3] = maxx; + target[4] = maxy; + target[5] = maxz; + centroidTarget[0] = cminx; + centroidTarget[1] = cminy; + centroidTarget[2] = cminz; + centroidTarget[3] = cmaxx; + centroidTarget[4] = cmaxy; + centroidTarget[5] = cmaxz; +} +const BIN_COUNT = 32; +const binsSort = (a, b) => a.candidate - b.candidate; +const sahBins = /* @__PURE__ */ new Array(BIN_COUNT).fill().map(() => { + return { + count: 0, + bounds: new Float32Array(6), + rightCacheBounds: new Float32Array(6), + leftCacheBounds: new Float32Array(6), + candidate: 0 + }; +}); +const leftBounds = /* @__PURE__ */ new Float32Array(6); +function getOptimalSplit(nodeBoundingData, centroidBoundingData, primitiveBounds, offset, count, strategy) { + let axis = -1; + let pos = 0; + if (strategy === CENTER) { + axis = getLongestEdgeIndex(centroidBoundingData); + if (axis !== -1) { + pos = (centroidBoundingData[axis] + centroidBoundingData[axis + 3]) / 2; + } + } else if (strategy === AVERAGE) { + axis = getLongestEdgeIndex(nodeBoundingData); + if (axis !== -1) { + pos = getAverage(primitiveBounds, offset, count, axis); + } + } else if (strategy === SAH) { + const rootSurfaceArea = computeSurfaceArea(nodeBoundingData); + let bestCost = PRIMITIVE_INTERSECT_COST * count; + const boundsOffset = primitiveBounds.offset || 0; + const cStart = (offset - boundsOffset) * 6; + const cEnd = (offset + count - boundsOffset) * 6; + for (let a = 0; a < 3; a++) { + const axisLeft = centroidBoundingData[a]; + const axisRight = centroidBoundingData[a + 3]; + const axisLength = axisRight - axisLeft; + const binWidth = axisLength / BIN_COUNT; + if (count < BIN_COUNT / 4) { + const truncatedBins = [...sahBins]; + truncatedBins.length = count; + let b = 0; + for (let c = cStart; c < cEnd; c += 6, b++) { + const bin = truncatedBins[b]; + bin.candidate = primitiveBounds[c + 2 * a]; + bin.count = 0; + const { + bounds, + leftCacheBounds, + rightCacheBounds + } = bin; + for (let d = 0; d < 3; d++) { + rightCacheBounds[d] = Infinity; + rightCacheBounds[d + 3] = -Infinity; + leftCacheBounds[d] = Infinity; + leftCacheBounds[d + 3] = -Infinity; + bounds[d] = Infinity; + bounds[d + 3] = -Infinity; + } + expandByPrimitiveBounds(c, primitiveBounds, bounds); + } + truncatedBins.sort(binsSort); + let splitCount = count; + for (let bi = 0; bi < splitCount; bi++) { + const bin = truncatedBins[bi]; + while (bi + 1 < splitCount && truncatedBins[bi + 1].candidate === bin.candidate) { + truncatedBins.splice(bi + 1, 1); + splitCount--; + } + } + for (let c = cStart; c < cEnd; c += 6) { + const center = primitiveBounds[c + 2 * a]; + for (let bi = 0; bi < splitCount; bi++) { + const bin = truncatedBins[bi]; + if (center >= bin.candidate) { + expandByPrimitiveBounds(c, primitiveBounds, bin.rightCacheBounds); + } else { + expandByPrimitiveBounds(c, primitiveBounds, bin.leftCacheBounds); + bin.count++; + } + } + } + for (let bi = 0; bi < splitCount; bi++) { + const bin = truncatedBins[bi]; + const leftCount = bin.count; + const rightCount = count - bin.count; + const leftBounds2 = bin.leftCacheBounds; + const rightBounds = bin.rightCacheBounds; + let leftProb = 0; + if (leftCount !== 0) { + leftProb = computeSurfaceArea(leftBounds2) / rootSurfaceArea; + } + let rightProb = 0; + if (rightCount !== 0) { + rightProb = computeSurfaceArea(rightBounds) / rootSurfaceArea; + } + const cost = TRAVERSAL_COST + PRIMITIVE_INTERSECT_COST * (leftProb * leftCount + rightProb * rightCount); + if (cost < bestCost) { + axis = a; + bestCost = cost; + pos = bin.candidate; + } + } + } else { + for (let i = 0; i < BIN_COUNT; i++) { + const bin = sahBins[i]; + bin.count = 0; + bin.candidate = axisLeft + binWidth + i * binWidth; + const bounds = bin.bounds; + for (let d = 0; d < 3; d++) { + bounds[d] = Infinity; + bounds[d + 3] = -Infinity; + } + } + for (let c = cStart; c < cEnd; c += 6) { + const triCenter = primitiveBounds[c + 2 * a]; + const relativeCenter = triCenter - axisLeft; + let binIndex = ~~(relativeCenter / binWidth); + if (binIndex >= BIN_COUNT) + binIndex = BIN_COUNT - 1; + const bin = sahBins[binIndex]; + bin.count++; + expandByPrimitiveBounds(c, primitiveBounds, bin.bounds); + } + const lastBin = sahBins[BIN_COUNT - 1]; + copyBounds(lastBin.bounds, lastBin.rightCacheBounds); + for (let i = BIN_COUNT - 2; i >= 0; i--) { + const bin = sahBins[i]; + const nextBin = sahBins[i + 1]; + unionBounds(bin.bounds, nextBin.rightCacheBounds, bin.rightCacheBounds); + } + let leftCount = 0; + for (let i = 0; i < BIN_COUNT - 1; i++) { + const bin = sahBins[i]; + const binCount = bin.count; + const bounds = bin.bounds; + const nextBin = sahBins[i + 1]; + const rightBounds = nextBin.rightCacheBounds; + if (binCount !== 0) { + if (leftCount === 0) { + copyBounds(bounds, leftBounds); + } else { + unionBounds(bounds, leftBounds, leftBounds); + } + } + leftCount += binCount; + let leftProb = 0; + let rightProb = 0; + if (leftCount !== 0) { + leftProb = computeSurfaceArea(leftBounds) / rootSurfaceArea; + } + const rightCount = count - leftCount; + if (rightCount !== 0) { + rightProb = computeSurfaceArea(rightBounds) / rootSurfaceArea; + } + const cost = TRAVERSAL_COST + PRIMITIVE_INTERSECT_COST * (leftProb * leftCount + rightProb * rightCount); + if (cost < bestCost) { + axis = a; + bestCost = cost; + pos = bin.candidate; + } + } + } + } + } else { + console.warn(`BVH: Invalid build strategy value ${strategy} used.`); + } + return { axis, pos }; +} +function getAverage(primitiveBounds, offset, count, axis) { + let avg = 0; + const boundsOffset = primitiveBounds.offset; + for (let i = offset, end = offset + count; i < end; i++) { + avg += primitiveBounds[(i - boundsOffset) * 6 + axis * 2]; + } + return avg / count; +} +class BVHNode { + constructor() { + this.boundingData = new Float32Array(6); + } +} +function partition(buffer, stride, primitiveBounds, offset, count, split) { + let left = offset; + let right = offset + count - 1; + const pos = split.pos; + const axisOffset = split.axis * 2; + const boundsOffset = primitiveBounds.offset || 0; + while (true) { + while (left <= right && primitiveBounds[(left - boundsOffset) * 6 + axisOffset] < pos) { + left++; + } + while (left <= right && primitiveBounds[(right - boundsOffset) * 6 + axisOffset] >= pos) { + right--; + } + if (left < right) { + for (let i = 0; i < stride; i++) { + let t0 = buffer[left * stride + i]; + buffer[left * stride + i] = buffer[right * stride + i]; + buffer[right * stride + i] = t0; + } + for (let i = 0; i < 6; i++) { + const l = left - boundsOffset; + const r = right - boundsOffset; + const tb = primitiveBounds[l * 6 + i]; + primitiveBounds[l * 6 + i] = primitiveBounds[r * 6 + i]; + primitiveBounds[r * 6 + i] = tb; + } + left++; + right--; + } else { + return left; + } + } +} +let float32Array, uint32Array, uint16Array, uint8Array; +const MAX_POINTER = Math.pow(2, 32); +function countNodes(node) { + if ("count" in node) { + return 1; + } else { + return 1 + countNodes(node.left) + countNodes(node.right); + } +} +function populateBuffer(byteOffset, node, buffer) { + float32Array = new Float32Array(buffer); + uint32Array = new Uint32Array(buffer); + uint16Array = new Uint16Array(buffer); + uint8Array = new Uint8Array(buffer); + return _populateBuffer(byteOffset, node); +} +function _populateBuffer(byteOffset, node) { + const node32Index = byteOffset / 4; + const node16Index = byteOffset / 2; + const isLeaf = "count" in node; + const boundingData = node.boundingData; + for (let i = 0; i < 6; i++) { + float32Array[node32Index + i] = boundingData[i]; + } + if (isLeaf) { + if (node.buffer) { + uint8Array.set(new Uint8Array(node.buffer), byteOffset); + return byteOffset + node.buffer.byteLength; + } else { + uint32Array[node32Index + 6] = node.offset; + uint16Array[node16Index + 14] = node.count; + uint16Array[node16Index + 15] = IS_LEAFNODE_FLAG; + return byteOffset + BYTES_PER_NODE; + } + } else { + const { left, right, splitAxis } = node; + const leftByteOffset = byteOffset + BYTES_PER_NODE; + let rightByteOffset = _populateBuffer(leftByteOffset, left); + const currentNodeIndex = byteOffset / BYTES_PER_NODE; + const rightNodeIndex = rightByteOffset / BYTES_PER_NODE; + const relativeRightIndex = rightNodeIndex - currentNodeIndex; + if (relativeRightIndex > MAX_POINTER) { + throw new Error("MeshBVH: Cannot store relative child node offset greater than 32 bits."); + } + uint32Array[node32Index + 6] = relativeRightIndex; + uint32Array[node32Index + 7] = splitAxis; + return _populateBuffer(rightByteOffset, right); + } +} +function buildTree(bvh, primitiveBounds, offset, count, options, loadRange) { + const { + maxDepth, + verbose, + maxLeafSize, + strategy, + onProgress + } = options; + const partitionBuffer = bvh.primitiveBuffer; + const partitionStride = bvh.primitiveBufferStride; + const cacheCentroidBoundingData = new Float32Array(6); + let reachedMaxDepth = false; + const root = new BVHNode(); + getBounds(primitiveBounds, offset, count, root.boundingData, cacheCentroidBoundingData); + splitNode(root, offset, count, cacheCentroidBoundingData); + return root; + function triggerProgress(primitivesProcessed) { + if (onProgress) { + onProgress((primitivesProcessed - loadRange.offset) / loadRange.count); + } + } + function splitNode(node, offset2, count2, centroidBoundingData = null, depth = 0) { + if (!reachedMaxDepth && depth >= maxDepth) { + reachedMaxDepth = true; + if (verbose) { + console.warn(`BVH: Max depth of ${maxDepth} reached when generating BVH. Consider increasing maxDepth.`); + } + } + if (count2 <= maxLeafSize || depth >= maxDepth) { + triggerProgress(offset2 + count2); + node.offset = offset2; + node.count = count2; + return node; + } + const split = getOptimalSplit(node.boundingData, centroidBoundingData, primitiveBounds, offset2, count2, strategy); + if (split.axis === -1) { + triggerProgress(offset2 + count2); + node.offset = offset2; + node.count = count2; + return node; + } + const splitOffset = partition(partitionBuffer, partitionStride, primitiveBounds, offset2, count2, split); + if (splitOffset === offset2 || splitOffset === offset2 + count2) { + triggerProgress(offset2 + count2); + node.offset = offset2; + node.count = count2; + } else { + node.splitAxis = split.axis; + const left = new BVHNode(); + const lstart = offset2; + const lcount = splitOffset - offset2; + node.left = left; + getBounds(primitiveBounds, lstart, lcount, left.boundingData, cacheCentroidBoundingData); + splitNode(left, lstart, lcount, cacheCentroidBoundingData, depth + 1); + const right = new BVHNode(); + const rstart = splitOffset; + const rcount = count2 - lcount; + node.right = right; + getBounds(primitiveBounds, rstart, rcount, right.boundingData, cacheCentroidBoundingData); + splitNode(right, rstart, rcount, cacheCentroidBoundingData, depth + 1); + } + return node; + } +} +function buildPackedTree(bvh, options) { + const BufferConstructor = options.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer; + const rootRanges = bvh.getRootRanges(options.range); + const firstRange = rootRanges[0]; + const lastRange = rootRanges[rootRanges.length - 1]; + const fullRange = { + offset: firstRange.offset, + count: lastRange.offset + lastRange.count - firstRange.offset + }; + const primitiveBounds = new Float32Array(6 * fullRange.count); + primitiveBounds.offset = fullRange.offset; + bvh.computePrimitiveBounds(fullRange.offset, fullRange.count, primitiveBounds); + bvh._roots = rootRanges.map((range) => { + const root = buildTree(bvh, primitiveBounds, range.offset, range.count, options, fullRange); + const nodeCount = countNodes(root); + const buffer = new BufferConstructor(BYTES_PER_NODE * nodeCount); + populateBuffer(0, root, buffer); + return buffer; + }); +} +class PrimitivePool { + constructor(getNewPrimitive) { + this._getNewPrimitive = getNewPrimitive; + this._primitives = []; + } + getPrimitive() { + const primitives = this._primitives; + if (primitives.length === 0) { + return this._getNewPrimitive(); + } else { + return primitives.pop(); + } + } + releasePrimitive(primitive) { + this._primitives.push(primitive); + } +} +class _BufferStack { + constructor() { + this.float32Array = null; + this.uint16Array = null; + this.uint32Array = null; + const stack = []; + let prevBuffer = null; + this.setBuffer = (buffer) => { + if (prevBuffer) { + stack.push(prevBuffer); + } + prevBuffer = buffer; + this.float32Array = new Float32Array(buffer); + this.uint16Array = new Uint16Array(buffer); + this.uint32Array = new Uint32Array(buffer); + }; + this.clearBuffer = () => { + prevBuffer = null; + this.float32Array = null; + this.uint16Array = null; + this.uint32Array = null; + if (stack.length !== 0) { + this.setBuffer(stack.pop()); + } + }; + } +} +const BufferStack = /* @__PURE__ */ new _BufferStack(); +let _box1, _box2; +const boxStack = []; +const boxPool = /* @__PURE__ */ new PrimitivePool(() => new Box3()); +function shapecast(bvh, root, intersectsBounds, intersectsRange, boundsTraverseOrder, nodeOffset) { + _box1 = boxPool.getPrimitive(); + _box2 = boxPool.getPrimitive(); + boxStack.push(_box1, _box2); + BufferStack.setBuffer(bvh._roots[root]); + const result = shapecastTraverse(0, bvh.geometry, intersectsBounds, intersectsRange, boundsTraverseOrder, nodeOffset); + BufferStack.clearBuffer(); + boxPool.releasePrimitive(_box1); + boxPool.releasePrimitive(_box2); + boxStack.pop(); + boxStack.pop(); + const length = boxStack.length; + if (length > 0) { + _box2 = boxStack[length - 1]; + _box1 = boxStack[length - 2]; + } + return result; +} +function shapecastTraverse(nodeIndex32, geometry, intersectsBoundsFunc, intersectsRangeFunc, nodeScoreFunc = null, nodeIndexOffset = 0, depth = 0) { + const { float32Array: float32Array2, uint16Array: uint16Array2, uint32Array: uint32Array2 } = BufferStack; + let nodeIndex16 = nodeIndex32 * 2; + const isLeaf = IS_LEAF(nodeIndex16, uint16Array2); + if (isLeaf) { + const offset = OFFSET(nodeIndex32, uint32Array2); + const count = COUNT(nodeIndex16, uint16Array2); + arrayToBox(BOUNDING_DATA_INDEX(nodeIndex32), float32Array2, _box1); + return intersectsRangeFunc(offset, count, false, depth, nodeIndexOffset + nodeIndex32 / UINT32_PER_NODE, _box1); + } else { + let getLeftOffset = function(nodeIndex322) { + const { uint16Array: uint16Array3, uint32Array: uint32Array3 } = BufferStack; + let nodeIndex162 = nodeIndex322 * 2; + while (!IS_LEAF(nodeIndex162, uint16Array3)) { + nodeIndex322 = LEFT_NODE(nodeIndex322); + nodeIndex162 = nodeIndex322 * 2; + } + return OFFSET(nodeIndex322, uint32Array3); + }, getRightEndOffset = function(nodeIndex322) { + const { uint16Array: uint16Array3, uint32Array: uint32Array3 } = BufferStack; + let nodeIndex162 = nodeIndex322 * 2; + while (!IS_LEAF(nodeIndex162, uint16Array3)) { + nodeIndex322 = RIGHT_NODE(nodeIndex322, uint32Array3); + nodeIndex162 = nodeIndex322 * 2; + } + return OFFSET(nodeIndex322, uint32Array3) + COUNT(nodeIndex162, uint16Array3); + }; + const left = LEFT_NODE(nodeIndex32); + const right = RIGHT_NODE(nodeIndex32, uint32Array2); + let c1 = left; + let c2 = right; + let score1, score2; + let box1, box2; + if (nodeScoreFunc) { + box1 = _box1; + box2 = _box2; + arrayToBox(BOUNDING_DATA_INDEX(c1), float32Array2, box1); + arrayToBox(BOUNDING_DATA_INDEX(c2), float32Array2, box2); + score1 = nodeScoreFunc(box1); + score2 = nodeScoreFunc(box2); + if (score2 < score1) { + c1 = right; + c2 = left; + const temp5 = score1; + score1 = score2; + score2 = temp5; + box1 = box2; + } + } + if (!box1) { + box1 = _box1; + arrayToBox(BOUNDING_DATA_INDEX(c1), float32Array2, box1); + } + const isC1Leaf = IS_LEAF(c1 * 2, uint16Array2); + const c1Intersection = intersectsBoundsFunc(box1, isC1Leaf, score1, depth + 1, nodeIndexOffset + c1 / UINT32_PER_NODE); + let c1StopTraversal; + if (c1Intersection === CONTAINED) { + const offset = getLeftOffset(c1); + const end = getRightEndOffset(c1); + const count = end - offset; + c1StopTraversal = intersectsRangeFunc(offset, count, true, depth + 1, nodeIndexOffset + c1 / UINT32_PER_NODE, box1); + } else { + c1StopTraversal = c1Intersection && shapecastTraverse( + c1, + geometry, + intersectsBoundsFunc, + intersectsRangeFunc, + nodeScoreFunc, + nodeIndexOffset, + depth + 1 + ); + } + if (c1StopTraversal) + return true; + box2 = _box2; + arrayToBox(BOUNDING_DATA_INDEX(c2), float32Array2, box2); + const isC2Leaf = IS_LEAF(c2 * 2, uint16Array2); + const c2Intersection = intersectsBoundsFunc(box2, isC2Leaf, score2, depth + 1, nodeIndexOffset + c2 / UINT32_PER_NODE); + let c2StopTraversal; + if (c2Intersection === CONTAINED) { + const offset = getLeftOffset(c2); + const end = getRightEndOffset(c2); + const count = end - offset; + c2StopTraversal = intersectsRangeFunc(offset, count, true, depth + 1, nodeIndexOffset + c2 / UINT32_PER_NODE, box2); + } else { + c2StopTraversal = c2Intersection && shapecastTraverse( + c2, + geometry, + intersectsBoundsFunc, + intersectsRangeFunc, + nodeScoreFunc, + nodeIndexOffset, + depth + 1 + ); + } + if (c2StopTraversal) + return true; + return false; + } +} +const _bufferStack1 = /* @__PURE__ */ new BufferStack.constructor(); +const _bufferStack2 = /* @__PURE__ */ new BufferStack.constructor(); +const _boxPool = /* @__PURE__ */ new PrimitivePool(() => new Box3()); +const _leftBox1 = /* @__PURE__ */ new Box3(); +const _rightBox1 = /* @__PURE__ */ new Box3(); +const _leftBox2 = /* @__PURE__ */ new Box3(); +const _rightBox2 = /* @__PURE__ */ new Box3(); +let _active = false; +function bvhcast(bvh, otherBvh, matrixToLocal, intersectsRanges) { + if (_active) { + throw new Error("MeshBVH: Recursive calls to bvhcast not supported."); + } + _active = true; + const roots = bvh._roots; + const otherRoots = otherBvh._roots; + let result; + let nodeOffset1 = 0; + let nodeOffset2 = 0; + const invMat = new Matrix4().copy(matrixToLocal).invert(); + for (let i = 0, il = roots.length; i < il; i++) { + _bufferStack1.setBuffer(roots[i]); + nodeOffset2 = 0; + const localBox = _boxPool.getPrimitive(); + arrayToBox(BOUNDING_DATA_INDEX(0), _bufferStack1.float32Array, localBox); + localBox.applyMatrix4(invMat); + for (let j = 0, jl = otherRoots.length; j < jl; j++) { + _bufferStack2.setBuffer(otherRoots[j]); + result = _traverse( + 0, + 0, + matrixToLocal, + invMat, + intersectsRanges, + nodeOffset1, + nodeOffset2, + 0, + 0, + localBox + ); + _bufferStack2.clearBuffer(); + nodeOffset2 += otherRoots[j].byteLength / BYTES_PER_NODE; + if (result) { + break; + } + } + _boxPool.releasePrimitive(localBox); + _bufferStack1.clearBuffer(); + nodeOffset1 += roots[i].byteLength / BYTES_PER_NODE; + if (result) { + break; + } + } + _active = false; + return result; +} +function _traverse(node1Index32, node2Index32, matrix2to1, matrix1to2, intersectsRangesFunc, node1IndexOffset = 0, node2IndexOffset = 0, depth1 = 0, depth2 = 0, currBox = null, reversed = false) { + let bufferStack1, bufferStack2; + if (reversed) { + bufferStack1 = _bufferStack2; + bufferStack2 = _bufferStack1; + } else { + bufferStack1 = _bufferStack1; + bufferStack2 = _bufferStack2; + } + const float32Array1 = bufferStack1.float32Array, uint32Array1 = bufferStack1.uint32Array, uint16Array1 = bufferStack1.uint16Array, float32Array2 = bufferStack2.float32Array, uint32Array2 = bufferStack2.uint32Array, uint16Array2 = bufferStack2.uint16Array; + const node1Index16 = node1Index32 * 2; + const node2Index16 = node2Index32 * 2; + const isLeaf1 = IS_LEAF(node1Index16, uint16Array1); + const isLeaf2 = IS_LEAF(node2Index16, uint16Array2); + let result = false; + if (isLeaf2 && isLeaf1) { + if (reversed) { + result = intersectsRangesFunc( + OFFSET(node2Index32, uint32Array2), + COUNT(node2Index32 * 2, uint16Array2), + OFFSET(node1Index32, uint32Array1), + COUNT(node1Index32 * 2, uint16Array1), + depth2, + node2IndexOffset + node2Index32 / UINT32_PER_NODE, + depth1, + node1IndexOffset + node1Index32 / UINT32_PER_NODE + ); + } else { + result = intersectsRangesFunc( + OFFSET(node1Index32, uint32Array1), + COUNT(node1Index32 * 2, uint16Array1), + OFFSET(node2Index32, uint32Array2), + COUNT(node2Index32 * 2, uint16Array2), + depth1, + node1IndexOffset + node1Index32 / UINT32_PER_NODE, + depth2, + node2IndexOffset + node2Index32 / UINT32_PER_NODE + ); + } + } else if (isLeaf2) { + const newBox = _boxPool.getPrimitive(); + arrayToBox(BOUNDING_DATA_INDEX(node2Index32), float32Array2, newBox); + newBox.applyMatrix4(matrix2to1); + const cl1 = LEFT_NODE(node1Index32); + const cr1 = RIGHT_NODE(node1Index32, uint32Array1); + arrayToBox(BOUNDING_DATA_INDEX(cl1), float32Array1, _leftBox1); + arrayToBox(BOUNDING_DATA_INDEX(cr1), float32Array1, _rightBox1); + const intersectCl1 = newBox.intersectsBox(_leftBox1); + const intersectCr1 = newBox.intersectsBox(_rightBox1); + result = intersectCl1 && _traverse( + node2Index32, + cl1, + matrix1to2, + matrix2to1, + intersectsRangesFunc, + node2IndexOffset, + node1IndexOffset, + depth2, + depth1 + 1, + newBox, + !reversed + ) || intersectCr1 && _traverse( + node2Index32, + cr1, + matrix1to2, + matrix2to1, + intersectsRangesFunc, + node2IndexOffset, + node1IndexOffset, + depth2, + depth1 + 1, + newBox, + !reversed + ); + _boxPool.releasePrimitive(newBox); + } else { + const cl2 = LEFT_NODE(node2Index32); + const cr2 = RIGHT_NODE(node2Index32, uint32Array2); + arrayToBox(BOUNDING_DATA_INDEX(cl2), float32Array2, _leftBox2); + arrayToBox(BOUNDING_DATA_INDEX(cr2), float32Array2, _rightBox2); + const leftIntersects = currBox.intersectsBox(_leftBox2); + const rightIntersects = currBox.intersectsBox(_rightBox2); + if (leftIntersects && rightIntersects) { + result = _traverse( + node1Index32, + cl2, + matrix2to1, + matrix1to2, + intersectsRangesFunc, + node1IndexOffset, + node2IndexOffset, + depth1, + depth2 + 1, + currBox, + reversed + ) || _traverse( + node1Index32, + cr2, + matrix2to1, + matrix1to2, + intersectsRangesFunc, + node1IndexOffset, + node2IndexOffset, + depth1, + depth2 + 1, + currBox, + reversed + ); + } else if (leftIntersects) { + if (isLeaf1) { + result = _traverse( + node1Index32, + cl2, + matrix2to1, + matrix1to2, + intersectsRangesFunc, + node1IndexOffset, + node2IndexOffset, + depth1, + depth2 + 1, + currBox, + reversed + ); + } else { + const newBox = _boxPool.getPrimitive(); + newBox.copy(_leftBox2).applyMatrix4(matrix2to1); + const cl1 = LEFT_NODE(node1Index32); + const cr1 = RIGHT_NODE(node1Index32, uint32Array1); + arrayToBox(BOUNDING_DATA_INDEX(cl1), float32Array1, _leftBox1); + arrayToBox(BOUNDING_DATA_INDEX(cr1), float32Array1, _rightBox1); + const intersectCl1 = newBox.intersectsBox(_leftBox1); + const intersectCr1 = newBox.intersectsBox(_rightBox1); + result = intersectCl1 && _traverse( + cl2, + cl1, + matrix1to2, + matrix2to1, + intersectsRangesFunc, + node2IndexOffset, + node1IndexOffset, + depth2, + depth1 + 1, + newBox, + !reversed + ) || intersectCr1 && _traverse( + cl2, + cr1, + matrix1to2, + matrix2to1, + intersectsRangesFunc, + node2IndexOffset, + node1IndexOffset, + depth2, + depth1 + 1, + newBox, + !reversed + ); + _boxPool.releasePrimitive(newBox); + } + } else if (rightIntersects) { + if (isLeaf1) { + result = _traverse( + node1Index32, + cr2, + matrix2to1, + matrix1to2, + intersectsRangesFunc, + node1IndexOffset, + node2IndexOffset, + depth1, + depth2 + 1, + currBox, + reversed + ); + } else { + const newBox = _boxPool.getPrimitive(); + newBox.copy(_rightBox2).applyMatrix4(matrix2to1); + const cl1 = LEFT_NODE(node1Index32); + const cr1 = RIGHT_NODE(node1Index32, uint32Array1); + arrayToBox(BOUNDING_DATA_INDEX(cl1), float32Array1, _leftBox1); + arrayToBox(BOUNDING_DATA_INDEX(cr1), float32Array1, _rightBox1); + const intersectCl1 = newBox.intersectsBox(_leftBox1); + const intersectCr1 = newBox.intersectsBox(_rightBox1); + result = intersectCl1 && _traverse( + cr2, + cl1, + matrix1to2, + matrix2to1, + intersectsRangesFunc, + node2IndexOffset, + node1IndexOffset, + depth2, + depth1 + 1, + newBox, + !reversed + ) || intersectCr1 && _traverse( + cr2, + cr1, + matrix1to2, + matrix2to1, + intersectsRangesFunc, + node2IndexOffset, + node1IndexOffset, + depth2, + depth1 + 1, + newBox, + !reversed + ); + _boxPool.releasePrimitive(newBox); + } + } + } + return result; +} +const _tempBox = /* @__PURE__ */ new Box3(); +const _tempBuffer = /* @__PURE__ */ new Float32Array(6); +class BVH { + constructor() { + this._roots = null; + this.primitiveBuffer = null; + this.primitiveBufferStride = null; + } + init(options) { + options = { + ...DEFAULT_OPTIONS, + ...options + }; + buildPackedTree(this, options); + } + getRootRanges() { + throw new Error("BVH: getRootRanges() not implemented"); + } + // write the i-th primitive bounds in a 6-value min / max format to the buffer + // starting at the given "writeOffset" + writePrimitiveBounds() { + throw new Error("BVH: writePrimitiveBounds() not implemented"); + } + // writes the union bounds of all primitives in the given range in a min / max format + // to the buffer + writePrimitiveRangeBounds(offset, count, targetBuffer, baseIndex) { + let minX = Infinity; + let minY = Infinity; + let minZ = Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + let maxZ = -Infinity; + for (let i = offset, end = offset + count; i < end; i++) { + this.writePrimitiveBounds(i, _tempBuffer, 0); + const [lx, ly, lz, rx, ry, rz] = _tempBuffer; + if (lx < minX) + minX = lx; + if (rx > maxX) + maxX = rx; + if (ly < minY) + minY = ly; + if (ry > maxY) + maxY = ry; + if (lz < minZ) + minZ = lz; + if (rz > maxZ) + maxZ = rz; + } + targetBuffer[baseIndex + 0] = minX; + targetBuffer[baseIndex + 1] = minY; + targetBuffer[baseIndex + 2] = minZ; + targetBuffer[baseIndex + 3] = maxX; + targetBuffer[baseIndex + 4] = maxY; + targetBuffer[baseIndex + 5] = maxZ; + return targetBuffer; + } + computePrimitiveBounds(offset, count, targetBuffer) { + const boundsOffset = targetBuffer.offset || 0; + for (let i = offset, end = offset + count; i < end; i++) { + this.writePrimitiveBounds(i, _tempBuffer, 0); + const [lx, ly, lz, rx, ry, rz] = _tempBuffer; + const cx = (lx + rx) / 2; + const cy = (ly + ry) / 2; + const cz = (lz + rz) / 2; + const hx = (rx - lx) / 2; + const hy = (ry - ly) / 2; + const hz = (rz - lz) / 2; + const baseIndex = (i - boundsOffset) * 6; + targetBuffer[baseIndex + 0] = cx; + targetBuffer[baseIndex + 1] = hx + (Math.abs(cx) + hx) * FLOAT32_EPSILON; + targetBuffer[baseIndex + 2] = cy; + targetBuffer[baseIndex + 3] = hy + (Math.abs(cy) + hy) * FLOAT32_EPSILON; + targetBuffer[baseIndex + 4] = cz; + targetBuffer[baseIndex + 5] = hz + (Math.abs(cz) + hz) * FLOAT32_EPSILON; + } + return targetBuffer; + } + shiftPrimitiveOffsets(offset) { + const indirectBuffer = this._indirectBuffer; + if (indirectBuffer) { + for (let i = 0, l = indirectBuffer.length; i < l; i++) { + indirectBuffer[i] += offset; + } + } else { + const roots = this._roots; + for (let rootIndex = 0; rootIndex < roots.length; rootIndex++) { + const root = roots[rootIndex]; + const uint32Array2 = new Uint32Array(root); + const uint16Array2 = new Uint16Array(root); + const totalNodes = root.byteLength / BYTES_PER_NODE; + for (let node = 0; node < totalNodes; node++) { + const node32Index = UINT32_PER_NODE * node; + const node16Index = 2 * node32Index; + if (IS_LEAF(node16Index, uint16Array2)) { + uint32Array2[node32Index + 6] += offset; + } + } + } + } + } + traverse(callback, rootIndex = 0) { + const buffer = this._roots[rootIndex]; + const uint32Array2 = new Uint32Array(buffer); + const uint16Array2 = new Uint16Array(buffer); + _traverse2(0); + function _traverse2(node32Index, depth = 0) { + const node16Index = node32Index * 2; + const isLeaf = IS_LEAF(node16Index, uint16Array2); + if (isLeaf) { + const offset = uint32Array2[node32Index + 6]; + const count = uint16Array2[node16Index + 14]; + callback(depth, isLeaf, new Float32Array(buffer, node32Index * 4, 6), offset, count); + } else { + const left = LEFT_NODE(node32Index); + const right = RIGHT_NODE(node32Index, uint32Array2); + const splitAxis = SPLIT_AXIS(node32Index, uint32Array2); + const stopTraversal = callback(depth, isLeaf, new Float32Array(buffer, node32Index * 4, 6), splitAxis); + if (!stopTraversal) { + _traverse2(left, depth + 1); + _traverse2(right, depth + 1); + } + } + } + } + refit() { + const roots = this._roots; + for (let rootIndex = 0, rootCount = roots.length; rootIndex < rootCount; rootIndex++) { + const buffer = roots[rootIndex]; + const uint32Array2 = new Uint32Array(buffer); + const uint16Array2 = new Uint16Array(buffer); + const float32Array2 = new Float32Array(buffer); + const totalNodes = buffer.byteLength / BYTES_PER_NODE; + for (let nodeIndex = totalNodes - 1; nodeIndex >= 0; nodeIndex--) { + const nodeIndex32 = nodeIndex * UINT32_PER_NODE; + const nodeIndex16 = nodeIndex32 * 2; + const isLeaf = IS_LEAF(nodeIndex16, uint16Array2); + if (isLeaf) { + const offset = OFFSET(nodeIndex32, uint32Array2); + const count = COUNT(nodeIndex16, uint16Array2); + this.writePrimitiveRangeBounds(offset, count, _tempBuffer, 0); + float32Array2.set(_tempBuffer, nodeIndex32); + } else { + const left = LEFT_NODE(nodeIndex32); + const right = RIGHT_NODE(nodeIndex32, uint32Array2); + for (let i = 0; i < 3; i++) { + const leftMin = float32Array2[left + i]; + const leftMax = float32Array2[left + i + 3]; + const rightMin = float32Array2[right + i]; + const rightMax = float32Array2[right + i + 3]; + float32Array2[nodeIndex32 + i] = leftMin < rightMin ? leftMin : rightMin; + float32Array2[nodeIndex32 + i + 3] = leftMax > rightMax ? leftMax : rightMax; + } + } + } + } + } + getBoundingBox(target) { + target.makeEmpty(); + const roots = this._roots; + roots.forEach((buffer) => { + arrayToBox(0, new Float32Array(buffer), _tempBox); + target.union(_tempBox); + }); + return target; + } + // Base shapecast implementation that can be used by subclasses + // TODO: see if we can get rid of "iterateFunc" here as well as the primitive so the function + // API aligns with the "shapecast" implementation + shapecast(callbacks) { + let { + boundsTraverseOrder, + intersectsBounds, + intersectsRange, + intersectsPrimitive, + scratchPrimitive, + iterate + } = callbacks; + if (intersectsRange && intersectsPrimitive) { + const originalIntersectsRange = intersectsRange; + intersectsRange = (offset, count, contained, depth, nodeIndex) => { + if (!originalIntersectsRange(offset, count, contained, depth, nodeIndex)) { + return iterate(offset, count, this, intersectsPrimitive, contained, depth, scratchPrimitive); + } + return true; + }; + } else if (!intersectsRange) { + if (intersectsPrimitive) { + intersectsRange = (offset, count, contained, depth) => { + return iterate(offset, count, this, intersectsPrimitive, contained, depth, scratchPrimitive); + }; + } else { + intersectsRange = (offset, count, contained) => { + return contained; + }; + } + } + let result = false; + let nodeOffset = 0; + const roots = this._roots; + for (let i = 0, l = roots.length; i < l; i++) { + const root = roots[i]; + result = shapecast(this, i, intersectsBounds, intersectsRange, boundsTraverseOrder, nodeOffset); + if (result) { + break; + } + nodeOffset += root.byteLength / BYTES_PER_NODE; + } + return result; + } + bvhcast(otherBvh, matrixToLocal, callbacks) { + let { intersectsRanges } = callbacks; + return bvhcast(this, otherBvh, matrixToLocal, intersectsRanges); + } +} +function isSharedArrayBufferSupported() { + return typeof SharedArrayBuffer !== "undefined"; +} +function getVertexCount(geo) { + return geo.index ? geo.index.count : geo.attributes.position.count; +} +function getTriCount(geo) { + return getVertexCount(geo) / 3; +} +function getIndexArray(vertexCount, BufferConstructor = ArrayBuffer) { + if (vertexCount > 65535) { + return new Uint32Array(new BufferConstructor(4 * vertexCount)); + } else { + return new Uint16Array(new BufferConstructor(2 * vertexCount)); + } +} +function ensureIndex(geo, options) { + if (!geo.index) { + const vertexCount = geo.attributes.position.count; + const BufferConstructor = options.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer; + const index = getIndexArray(vertexCount, BufferConstructor); + geo.setIndex(new BufferAttribute(index, 1)); + for (let i = 0; i < vertexCount; i++) { + index[i] = i; + } + } +} +function getFullPrimitiveRange(geo, range, stride) { + const primitiveCount = getVertexCount(geo) / stride; + const drawRange = range ? range : geo.drawRange; + const start = drawRange.start / stride; + const end = (drawRange.start + drawRange.count) / stride; + const offset = Math.max(0, start); + const count = Math.min(primitiveCount, end) - offset; + return { + offset: Math.floor(offset), + count: Math.floor(count) + }; +} +function getPrimitiveGroupRanges(geo, stride) { + return geo.groups.map((group) => ({ + offset: group.start / stride, + count: group.count / stride + })); +} +function getRootPrimitiveRanges(geo, range, stride) { + const drawRange = getFullPrimitiveRange(geo, range, stride); + const primitiveRanges = getPrimitiveGroupRanges(geo, stride); + if (!primitiveRanges.length) { + return [drawRange]; + } + const ranges = []; + const drawRangeStart = drawRange.offset; + const drawRangeEnd = drawRange.offset + drawRange.count; + const primitiveCount = getVertexCount(geo) / stride; + const events = []; + for (const group of primitiveRanges) { + const { offset, count } = group; + const groupStart = offset; + const groupCount = isFinite(count) ? count : primitiveCount - offset; + const groupEnd = offset + groupCount; + if (groupStart < drawRangeEnd && groupEnd > drawRangeStart) { + events.push({ pos: Math.max(drawRangeStart, groupStart), isStart: true }); + events.push({ pos: Math.min(drawRangeEnd, groupEnd), isStart: false }); + } + } + events.sort((a, b) => { + if (a.pos !== b.pos) { + return a.pos - b.pos; + } else { + return a.type === "end" ? -1 : 1; + } + }); + let activeGroups = 0; + let lastPos = null; + for (const event of events) { + const newPos = event.pos; + if (activeGroups !== 0 && newPos !== lastPos) { + ranges.push({ + offset: lastPos, + count: newPos - lastPos + }); + } + activeGroups += event.isStart ? 1 : -1; + lastPos = newPos; + } + return ranges; +} +function generateIndirectBuffer(ranges, useSharedArrayBuffer) { + const lastRange = ranges[ranges.length - 1]; + const useUint32 = lastRange.offset + lastRange.count > 2 ** 16; + const length = ranges.reduce((acc, val) => acc + val.count, 0); + const byteCount = useUint32 ? 4 : 2; + const buffer = useSharedArrayBuffer ? new SharedArrayBuffer(length * byteCount) : new ArrayBuffer(length * byteCount); + const indirectBuffer = useUint32 ? new Uint32Array(buffer) : new Uint16Array(buffer); + let index = 0; + for (let r = 0; r < ranges.length; r++) { + const { offset, count } = ranges[r]; + for (let i = 0; i < count; i++) { + indirectBuffer[index + i] = offset + i; + } + index += count; + } + return indirectBuffer; +} +class GeometryBVH extends BVH { + get indirect() { + return !!this._indirectBuffer; + } + get primitiveStride() { + return null; + } + get primitiveBufferStride() { + return this.indirect ? 1 : this.primitiveStride; + } + set primitiveBufferStride(v) { + } + get primitiveBuffer() { + return this.indirect ? this._indirectBuffer : this.geometry.index.array; + } + set primitiveBuffer(v) { + } + constructor(geometry, options = {}) { + if (!geometry.isBufferGeometry) { + throw new Error("BVH: Only BufferGeometries are supported."); + } else if (geometry.index && geometry.index.isInterleavedBufferAttribute) { + throw new Error("BVH: InterleavedBufferAttribute is not supported for the index attribute."); + } + if (options.useSharedArrayBuffer && !isSharedArrayBufferSupported()) { + throw new Error("BVH: SharedArrayBuffer is not available."); + } + super(); + this.geometry = geometry; + this.resolvePrimitiveIndex = options.indirect ? (i) => this._indirectBuffer[i] : (i) => i; + this.primitiveBuffer = null; + this.primitiveBufferStride = null; + this._indirectBuffer = null; + options = { + ...DEFAULT_OPTIONS, + ...options + }; + if (!options[SKIP_GENERATION]) { + this.init(options); + } + } + init(options) { + const { geometry, primitiveStride } = this; + if (options.indirect) { + const ranges = getRootPrimitiveRanges(geometry, options.range, primitiveStride); + const indirectBuffer = generateIndirectBuffer(ranges, options.useSharedArrayBuffer); + this._indirectBuffer = indirectBuffer; + } else { + ensureIndex(geometry, options); + } + super.init(options); + if (!geometry.boundingBox && options.setBoundingBox) { + geometry.boundingBox = this.getBoundingBox(new Box3()); + } + } + // Abstract methods to be implemented by subclasses + getRootRanges(range) { + if (this.indirect) { + return [{ offset: 0, count: this._indirectBuffer.length }]; + } else { + return getRootPrimitiveRanges(this.geometry, range, this.primitiveStride); + } + } + raycastObject3D() { + throw new Error("BVH: raycastObject3D() not implemented"); + } +} +class SeparatingAxisBounds { + constructor() { + this.min = Infinity; + this.max = -Infinity; + } + setFromPointsField(points, field) { + let min = Infinity; + let max = -Infinity; + for (let i = 0, l = points.length; i < l; i++) { + const p = points[i]; + const val = p[field]; + min = val < min ? val : min; + max = val > max ? val : max; + } + this.min = min; + this.max = max; + } + setFromPoints(axis, points) { + let min = Infinity; + let max = -Infinity; + for (let i = 0, l = points.length; i < l; i++) { + const p = points[i]; + const val = axis.dot(p); + min = val < min ? val : min; + max = val > max ? val : max; + } + this.min = min; + this.max = max; + } + isSeparated(other) { + return this.min > other.max || other.min > this.max; + } +} +SeparatingAxisBounds.prototype.setFromBox = /* @__PURE__ */ function() { + const p = /* @__PURE__ */ new Vector3(); + return function setFromBox(axis, box) { + const boxMin = box.min; + const boxMax = box.max; + let min = Infinity; + let max = -Infinity; + for (let x = 0; x <= 1; x++) { + for (let y = 0; y <= 1; y++) { + for (let z = 0; z <= 1; z++) { + p.x = boxMin.x * x + boxMax.x * (1 - x); + p.y = boxMin.y * y + boxMax.y * (1 - y); + p.z = boxMin.z * z + boxMax.z * (1 - z); + const val = axis.dot(p); + min = Math.min(val, min); + max = Math.max(val, max); + } + } + } + this.min = min; + this.max = max; + }; +}(); +const closestPointLineToLine = /* @__PURE__ */ function() { + const dir1 = /* @__PURE__ */ new Vector3(); + const dir2 = /* @__PURE__ */ new Vector3(); + const v02 = /* @__PURE__ */ new Vector3(); + return function closestPointLineToLine2(l1, l2, result) { + const v0 = l1.start; + const v10 = dir1; + const v2 = l2.start; + const v32 = dir2; + v02.subVectors(v0, v2); + dir1.subVectors(l1.end, l1.start); + dir2.subVectors(l2.end, l2.start); + const d0232 = v02.dot(v32); + const d3210 = v32.dot(v10); + const d3232 = v32.dot(v32); + const d0210 = v02.dot(v10); + const d1010 = v10.dot(v10); + const denom = d1010 * d3232 - d3210 * d3210; + let d, d2; + if (denom !== 0) { + d = (d0232 * d3210 - d0210 * d3232) / denom; + } else { + d = 0; + } + d2 = (d0232 + d * d3210) / d3232; + result.x = d; + result.y = d2; + }; +}(); +const closestPointsSegmentToSegment = /* @__PURE__ */ function() { + const paramResult = /* @__PURE__ */ new Vector2(); + const temp12 = /* @__PURE__ */ new Vector3(); + const temp22 = /* @__PURE__ */ new Vector3(); + return function closestPointsSegmentToSegment2(l1, l2, target1, target2) { + closestPointLineToLine(l1, l2, paramResult); + let d = paramResult.x; + let d2 = paramResult.y; + if (d >= 0 && d <= 1 && d2 >= 0 && d2 <= 1) { + l1.at(d, target1); + l2.at(d2, target2); + return; + } else if (d >= 0 && d <= 1) { + if (d2 < 0) { + l2.at(0, target2); + } else { + l2.at(1, target2); + } + l1.closestPointToPoint(target2, true, target1); + return; + } else if (d2 >= 0 && d2 <= 1) { + if (d < 0) { + l1.at(0, target1); + } else { + l1.at(1, target1); + } + l2.closestPointToPoint(target1, true, target2); + return; + } else { + let p; + if (d < 0) { + p = l1.start; + } else { + p = l1.end; + } + let p2; + if (d2 < 0) { + p2 = l2.start; + } else { + p2 = l2.end; + } + const closestPoint = temp12; + const closestPoint2 = temp22; + l1.closestPointToPoint(p2, true, temp12); + l2.closestPointToPoint(p, true, temp22); + if (closestPoint.distanceToSquared(p2) <= closestPoint2.distanceToSquared(p)) { + target1.copy(closestPoint); + target2.copy(p2); + return; + } else { + target1.copy(p); + target2.copy(closestPoint2); + return; + } + } + }; +}(); +const sphereIntersectTriangle = /* @__PURE__ */ function() { + const closestPointTemp = /* @__PURE__ */ new Vector3(); + const projectedPointTemp = /* @__PURE__ */ new Vector3(); + const planeTemp = /* @__PURE__ */ new Plane(); + const lineTemp = /* @__PURE__ */ new Line3(); + return function sphereIntersectTriangle2(sphere, triangle3) { + const { radius, center } = sphere; + const { a, b, c } = triangle3; + lineTemp.start = a; + lineTemp.end = b; + const closestPoint1 = lineTemp.closestPointToPoint(center, true, closestPointTemp); + if (closestPoint1.distanceTo(center) <= radius) + return true; + lineTemp.start = a; + lineTemp.end = c; + const closestPoint2 = lineTemp.closestPointToPoint(center, true, closestPointTemp); + if (closestPoint2.distanceTo(center) <= radius) + return true; + lineTemp.start = b; + lineTemp.end = c; + const closestPoint3 = lineTemp.closestPointToPoint(center, true, closestPointTemp); + if (closestPoint3.distanceTo(center) <= radius) + return true; + const plane = triangle3.getPlane(planeTemp); + const dp = Math.abs(plane.distanceToPoint(center)); + if (dp <= radius) { + const pp = plane.projectPoint(center, projectedPointTemp); + const cp = triangle3.containsPoint(pp); + if (cp) + return true; + } + return false; + }; +}(); +const componentKeys = ["x", "y", "z"]; +const ZERO_EPSILON = 1e-15; +const ZERO_EPSILON_SQR = ZERO_EPSILON * ZERO_EPSILON; +function isNearZero(value) { + return Math.abs(value) < ZERO_EPSILON; +} +class ExtendedTriangle extends Triangle { + constructor(...args) { + super(...args); + this.isExtendedTriangle = true; + this.satAxes = new Array(4).fill().map(() => new Vector3()); + this.satBounds = new Array(4).fill().map(() => new SeparatingAxisBounds()); + this.points = [this.a, this.b, this.c]; + this.plane = new Plane(); + this.isDegenerateIntoSegment = false; + this.isDegenerateIntoPoint = false; + this.degenerateSegment = new Line3(); + this.needsUpdate = true; + } + intersectsSphere(sphere) { + return sphereIntersectTriangle(sphere, this); + } + update() { + const a = this.a; + const b = this.b; + const c = this.c; + const points = this.points; + const satAxes = this.satAxes; + const satBounds = this.satBounds; + const axis0 = satAxes[0]; + const sab0 = satBounds[0]; + this.getNormal(axis0); + sab0.setFromPoints(axis0, points); + const axis1 = satAxes[1]; + const sab1 = satBounds[1]; + axis1.subVectors(a, b); + sab1.setFromPoints(axis1, points); + const axis2 = satAxes[2]; + const sab2 = satBounds[2]; + axis2.subVectors(b, c); + sab2.setFromPoints(axis2, points); + const axis3 = satAxes[3]; + const sab3 = satBounds[3]; + axis3.subVectors(c, a); + sab3.setFromPoints(axis3, points); + const lengthAB = axis1.length(); + const lengthBC = axis2.length(); + const lengthCA = axis3.length(); + this.isDegenerateIntoPoint = false; + this.isDegenerateIntoSegment = false; + if (lengthAB < ZERO_EPSILON) { + if (lengthBC < ZERO_EPSILON || lengthCA < ZERO_EPSILON) { + this.isDegenerateIntoPoint = true; + } else { + this.isDegenerateIntoSegment = true; + this.degenerateSegment.start.copy(a); + this.degenerateSegment.end.copy(c); + } + } else if (lengthBC < ZERO_EPSILON) { + if (lengthCA < ZERO_EPSILON) { + this.isDegenerateIntoPoint = true; + } else { + this.isDegenerateIntoSegment = true; + this.degenerateSegment.start.copy(b); + this.degenerateSegment.end.copy(a); + } + } else if (lengthCA < ZERO_EPSILON) { + this.isDegenerateIntoSegment = true; + this.degenerateSegment.start.copy(c); + this.degenerateSegment.end.copy(b); + } + this.plane.setFromNormalAndCoplanarPoint(axis0, a); + this.needsUpdate = false; + } +} +ExtendedTriangle.prototype.closestPointToSegment = /* @__PURE__ */ function() { + const point1 = /* @__PURE__ */ new Vector3(); + const point2 = /* @__PURE__ */ new Vector3(); + const edge = /* @__PURE__ */ new Line3(); + return function distanceToSegment(segment, target1 = null, target2 = null) { + const { start, end } = segment; + const points = this.points; + let distSq; + let closestDistanceSq = Infinity; + for (let i = 0; i < 3; i++) { + const nexti = (i + 1) % 3; + edge.start.copy(points[i]); + edge.end.copy(points[nexti]); + closestPointsSegmentToSegment(edge, segment, point1, point2); + distSq = point1.distanceToSquared(point2); + if (distSq < closestDistanceSq) { + closestDistanceSq = distSq; + if (target1) + target1.copy(point1); + if (target2) + target2.copy(point2); + } + } + this.closestPointToPoint(start, point1); + distSq = start.distanceToSquared(point1); + if (distSq < closestDistanceSq) { + closestDistanceSq = distSq; + if (target1) + target1.copy(point1); + if (target2) + target2.copy(start); + } + this.closestPointToPoint(end, point1); + distSq = end.distanceToSquared(point1); + if (distSq < closestDistanceSq) { + closestDistanceSq = distSq; + if (target1) + target1.copy(point1); + if (target2) + target2.copy(end); + } + return Math.sqrt(closestDistanceSq); + }; +}(); +ExtendedTriangle.prototype.intersectsTriangle = /* @__PURE__ */ function() { + const saTri2 = /* @__PURE__ */ new ExtendedTriangle(); + const cachedSatBounds = /* @__PURE__ */ new SeparatingAxisBounds(); + const cachedSatBounds2 = /* @__PURE__ */ new SeparatingAxisBounds(); + const tmpVec = /* @__PURE__ */ new Vector3(); + const dir1 = /* @__PURE__ */ new Vector3(); + const dir2 = /* @__PURE__ */ new Vector3(); + const tempDir = /* @__PURE__ */ new Vector3(); + const edge1 = /* @__PURE__ */ new Line3(); + const edge2 = /* @__PURE__ */ new Line3(); + const tempPoint = /* @__PURE__ */ new Vector3(); + const bounds1 = /* @__PURE__ */ new Vector2(); + const bounds2 = /* @__PURE__ */ new Vector2(); + function coplanarIntersectsTriangle(self, other, target, suppressLog) { + const planeNormal = tmpVec; + if (!self.isDegenerateIntoPoint && !self.isDegenerateIntoSegment) { + planeNormal.copy(self.plane.normal); + } else { + planeNormal.copy(other.plane.normal); + } + const satBounds1 = self.satBounds; + const satAxes1 = self.satAxes; + for (let i = 1; i < 4; i++) { + const sb = satBounds1[i]; + const sa = satAxes1[i]; + cachedSatBounds.setFromPoints(sa, other.points); + if (sb.isSeparated(cachedSatBounds)) + return false; + tempDir.copy(planeNormal).cross(sa); + cachedSatBounds.setFromPoints(tempDir, self.points); + cachedSatBounds2.setFromPoints(tempDir, other.points); + if (cachedSatBounds.isSeparated(cachedSatBounds2)) + return false; + } + const satBounds2 = other.satBounds; + const satAxes2 = other.satAxes; + for (let i = 1; i < 4; i++) { + const sb = satBounds2[i]; + const sa = satAxes2[i]; + cachedSatBounds.setFromPoints(sa, self.points); + if (sb.isSeparated(cachedSatBounds)) + return false; + tempDir.crossVectors(planeNormal, sa); + cachedSatBounds.setFromPoints(tempDir, self.points); + cachedSatBounds2.setFromPoints(tempDir, other.points); + if (cachedSatBounds.isSeparated(cachedSatBounds2)) + return false; + } + if (target) { + if (!suppressLog) { + console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."); + } + target.start.set(0, 0, 0); + target.end.set(0, 0, 0); + } + return true; + } + function findSingleBounds(a, b, c, aProj, bProj, cProj, aDist, bDist, cDist, bounds, edge) { + let t = aDist / (aDist - bDist); + bounds.x = aProj + (bProj - aProj) * t; + edge.start.subVectors(b, a).multiplyScalar(t).add(a); + t = aDist / (aDist - cDist); + bounds.y = aProj + (cProj - aProj) * t; + edge.end.subVectors(c, a).multiplyScalar(t).add(a); + } + function findIntersectionLineBounds(self, aProj, bProj, cProj, abDist, acDist, aDist, bDist, cDist, bounds, edge) { + if (abDist > 0) { + findSingleBounds(self.c, self.a, self.b, cProj, aProj, bProj, cDist, aDist, bDist, bounds, edge); + } else if (acDist > 0) { + findSingleBounds(self.b, self.a, self.c, bProj, aProj, cProj, bDist, aDist, cDist, bounds, edge); + } else if (bDist * cDist > 0 || aDist != 0) { + findSingleBounds(self.a, self.b, self.c, aProj, bProj, cProj, aDist, bDist, cDist, bounds, edge); + } else if (bDist != 0) { + findSingleBounds(self.b, self.a, self.c, bProj, aProj, cProj, bDist, aDist, cDist, bounds, edge); + } else if (cDist != 0) { + findSingleBounds(self.c, self.a, self.b, cProj, aProj, bProj, cDist, aDist, bDist, bounds, edge); + } else { + return true; + } + return false; + } + function intersectTriangleSegment(triangle3, degenerateTriangle, target, suppressLog) { + const segment = degenerateTriangle.degenerateSegment; + const startDist = triangle3.plane.distanceToPoint(segment.start); + const endDist = triangle3.plane.distanceToPoint(segment.end); + if (isNearZero(startDist)) { + if (isNearZero(endDist)) { + return coplanarIntersectsTriangle(triangle3, degenerateTriangle, target, suppressLog); + } else { + if (target) { + target.start.copy(segment.start); + target.end.copy(segment.start); + } + return triangle3.containsPoint(segment.start); + } + } else if (isNearZero(endDist)) { + if (target) { + target.start.copy(segment.end); + target.end.copy(segment.end); + } + return triangle3.containsPoint(segment.end); + } else { + if (triangle3.plane.intersectLine(segment, tmpVec) != null) { + if (target) { + target.start.copy(tmpVec); + target.end.copy(tmpVec); + } + return triangle3.containsPoint(tmpVec); + } else { + return false; + } + } + } + function intersectTrianglePoint(triangle3, degenerateTriangle, target) { + const point = degenerateTriangle.a; + if (isNearZero(triangle3.plane.distanceToPoint(point)) && triangle3.containsPoint(point)) { + if (target) { + target.start.copy(point); + target.end.copy(point); + } + return true; + } else { + return false; + } + } + function intersectSegmentPoint(segmentTri, pointTri, target) { + const segment = segmentTri.degenerateSegment; + const point = pointTri.a; + segment.closestPointToPoint(point, true, tmpVec); + if (point.distanceToSquared(tmpVec) < ZERO_EPSILON_SQR) { + if (target) { + target.start.copy(point); + target.end.copy(point); + } + return true; + } else { + return false; + } + } + function handleDegenerateCases(self, other, target, suppressLog) { + if (self.isDegenerateIntoSegment) { + if (other.isDegenerateIntoSegment) { + const segment1 = self.degenerateSegment; + const segment2 = other.degenerateSegment; + const delta1 = dir1; + const delta2 = dir2; + segment1.delta(delta1); + segment2.delta(delta2); + const startDelta = tmpVec.subVectors(segment2.start, segment1.start); + const denom = delta1.x * delta2.y - delta1.y * delta2.x; + if (isNearZero(denom)) { + return false; + } + const t = (startDelta.x * delta2.y - startDelta.y * delta2.x) / denom; + const u = -(delta1.x * startDelta.y - delta1.y * startDelta.x) / denom; + if (t < 0 || t > 1 || u < 0 || u > 1) { + return false; + } + const z1 = segment1.start.z + delta1.z * t; + const z2 = segment2.start.z + delta2.z * u; + if (isNearZero(z1 - z2)) { + if (target) { + target.start.copy(segment1.start).addScaledVector(delta1, t); + target.end.copy(segment1.start).addScaledVector(delta1, t); + } + return true; + } else { + return false; + } + } else if (other.isDegenerateIntoPoint) { + return intersectSegmentPoint(self, other, target); + } else { + return intersectTriangleSegment(other, self, target, suppressLog); + } + } else if (self.isDegenerateIntoPoint) { + if (other.isDegenerateIntoPoint) { + if (other.a.distanceToSquared(self.a) < ZERO_EPSILON_SQR) { + if (target) { + target.start.copy(self.a); + target.end.copy(self.a); + } + return true; + } else { + return false; + } + } else if (other.isDegenerateIntoSegment) { + return intersectSegmentPoint(other, self, target); + } else { + return intersectTrianglePoint(other, self, target); + } + } else { + if (other.isDegenerateIntoPoint) { + return intersectTrianglePoint(self, other, target); + } else if (other.isDegenerateIntoSegment) { + return intersectTriangleSegment(self, other, target, suppressLog); + } + } + } + return function intersectsTriangle(other, target = null, suppressLog = false) { + if (this.needsUpdate) { + this.update(); + } + if (!other.isExtendedTriangle) { + saTri2.copy(other); + saTri2.update(); + other = saTri2; + } else if (other.needsUpdate) { + other.update(); + } + const res = handleDegenerateCases(this, other, target, suppressLog); + if (res !== void 0) { + return res; + } + const plane1 = this.plane; + const plane2 = other.plane; + let a1Dist = plane2.distanceToPoint(this.a); + let b1Dist = plane2.distanceToPoint(this.b); + let c1Dist = plane2.distanceToPoint(this.c); + if (isNearZero(a1Dist)) + a1Dist = 0; + if (isNearZero(b1Dist)) + b1Dist = 0; + if (isNearZero(c1Dist)) + c1Dist = 0; + const a1b1Dist = a1Dist * b1Dist; + const a1c1Dist = a1Dist * c1Dist; + if (a1b1Dist > 0 && a1c1Dist > 0) { + return false; + } + let a2Dist = plane1.distanceToPoint(other.a); + let b2Dist = plane1.distanceToPoint(other.b); + let c2Dist = plane1.distanceToPoint(other.c); + if (isNearZero(a2Dist)) + a2Dist = 0; + if (isNearZero(b2Dist)) + b2Dist = 0; + if (isNearZero(c2Dist)) + c2Dist = 0; + const a2b2Dist = a2Dist * b2Dist; + const a2c2Dist = a2Dist * c2Dist; + if (a2b2Dist > 0 && a2c2Dist > 0) { + return false; + } + dir1.copy(plane1.normal); + dir2.copy(plane2.normal); + const intersectionLine = dir1.cross(dir2); + let componentIndex = 0; + let maxComponent = Math.abs(intersectionLine.x); + const comp1 = Math.abs(intersectionLine.y); + if (comp1 > maxComponent) { + maxComponent = comp1; + componentIndex = 1; + } + const comp2 = Math.abs(intersectionLine.z); + if (comp2 > maxComponent) { + componentIndex = 2; + } + const key = componentKeys[componentIndex]; + const a1Proj = this.a[key]; + const b1Proj = this.b[key]; + const c1Proj = this.c[key]; + const a2Proj = other.a[key]; + const b2Proj = other.b[key]; + const c2Proj = other.c[key]; + if (findIntersectionLineBounds(this, a1Proj, b1Proj, c1Proj, a1b1Dist, a1c1Dist, a1Dist, b1Dist, c1Dist, bounds1, edge1)) { + return coplanarIntersectsTriangle(this, other, target, suppressLog); + } + if (findIntersectionLineBounds(other, a2Proj, b2Proj, c2Proj, a2b2Dist, a2c2Dist, a2Dist, b2Dist, c2Dist, bounds2, edge2)) { + return coplanarIntersectsTriangle(this, other, target, suppressLog); + } + if (bounds1.y < bounds1.x) { + const tmp = bounds1.y; + bounds1.y = bounds1.x; + bounds1.x = tmp; + tempPoint.copy(edge1.start); + edge1.start.copy(edge1.end); + edge1.end.copy(tempPoint); + } + if (bounds2.y < bounds2.x) { + const tmp = bounds2.y; + bounds2.y = bounds2.x; + bounds2.x = tmp; + tempPoint.copy(edge2.start); + edge2.start.copy(edge2.end); + edge2.end.copy(tempPoint); + } + if (bounds1.y < bounds2.x || bounds2.y < bounds1.x) { + return false; + } + if (target) { + if (bounds2.x > bounds1.x) { + target.start.copy(edge2.start); + } else { + target.start.copy(edge1.start); + } + if (bounds2.y < bounds1.y) { + target.end.copy(edge2.end); + } else { + target.end.copy(edge1.end); + } + } + return true; + }; +}(); +ExtendedTriangle.prototype.distanceToPoint = /* @__PURE__ */ function() { + const target = /* @__PURE__ */ new Vector3(); + return function distanceToPoint(point) { + this.closestPointToPoint(point, target); + return point.distanceTo(target); + }; +}(); +ExtendedTriangle.prototype.distanceToTriangle = /* @__PURE__ */ function() { + const point = /* @__PURE__ */ new Vector3(); + const point2 = /* @__PURE__ */ new Vector3(); + const cornerFields = ["a", "b", "c"]; + const line1 = /* @__PURE__ */ new Line3(); + const line2 = /* @__PURE__ */ new Line3(); + return function distanceToTriangle(other, target1 = null, target2 = null) { + const lineTarget = target1 || target2 ? line1 : null; + if (this.intersectsTriangle(other, lineTarget)) { + if (target1 || target2) { + if (target1) + lineTarget.getCenter(target1); + if (target2) + lineTarget.getCenter(target2); + } + return 0; + } + let closestDistanceSq = Infinity; + for (let i = 0; i < 3; i++) { + let dist; + const field = cornerFields[i]; + const otherVec = other[field]; + this.closestPointToPoint(otherVec, point); + dist = otherVec.distanceToSquared(point); + if (dist < closestDistanceSq) { + closestDistanceSq = dist; + if (target1) + target1.copy(point); + if (target2) + target2.copy(otherVec); + } + const thisVec = this[field]; + other.closestPointToPoint(thisVec, point); + dist = thisVec.distanceToSquared(point); + if (dist < closestDistanceSq) { + closestDistanceSq = dist; + if (target1) + target1.copy(thisVec); + if (target2) + target2.copy(point); + } + } + for (let i = 0; i < 3; i++) { + const f11 = cornerFields[i]; + const f12 = cornerFields[(i + 1) % 3]; + line1.set(this[f11], this[f12]); + for (let i2 = 0; i2 < 3; i2++) { + const f21 = cornerFields[i2]; + const f22 = cornerFields[(i2 + 1) % 3]; + line2.set(other[f21], other[f22]); + closestPointsSegmentToSegment(line1, line2, point, point2); + const dist = point.distanceToSquared(point2); + if (dist < closestDistanceSq) { + closestDistanceSq = dist; + if (target1) + target1.copy(point); + if (target2) + target2.copy(point2); + } + } + } + return Math.sqrt(closestDistanceSq); + }; +}(); +class OrientedBox { + constructor(min, max, matrix) { + this.isOrientedBox = true; + this.min = new Vector3(); + this.max = new Vector3(); + this.matrix = new Matrix4(); + this.invMatrix = new Matrix4(); + this.points = new Array(8).fill().map(() => new Vector3()); + this.satAxes = new Array(3).fill().map(() => new Vector3()); + this.satBounds = new Array(3).fill().map(() => new SeparatingAxisBounds()); + this.alignedSatBounds = new Array(3).fill().map(() => new SeparatingAxisBounds()); + this.needsUpdate = false; + if (min) + this.min.copy(min); + if (max) + this.max.copy(max); + if (matrix) + this.matrix.copy(matrix); + } + set(min, max, matrix) { + this.min.copy(min); + this.max.copy(max); + this.matrix.copy(matrix); + this.needsUpdate = true; + } + copy(other) { + this.min.copy(other.min); + this.max.copy(other.max); + this.matrix.copy(other.matrix); + this.needsUpdate = true; + } +} +OrientedBox.prototype.update = /* @__PURE__ */ function() { + return function update() { + const matrix = this.matrix; + const min = this.min; + const max = this.max; + const points = this.points; + for (let x = 0; x <= 1; x++) { + for (let y = 0; y <= 1; y++) { + for (let z = 0; z <= 1; z++) { + const i = (1 << 0) * x | (1 << 1) * y | (1 << 2) * z; + const v = points[i]; + v.x = x ? max.x : min.x; + v.y = y ? max.y : min.y; + v.z = z ? max.z : min.z; + v.applyMatrix4(matrix); + } + } + } + const satBounds = this.satBounds; + const satAxes = this.satAxes; + const minVec = points[0]; + for (let i = 0; i < 3; i++) { + const axis = satAxes[i]; + const sb = satBounds[i]; + const index = 1 << i; + const pi = points[index]; + axis.subVectors(minVec, pi); + sb.setFromPoints(axis, points); + } + const alignedSatBounds = this.alignedSatBounds; + alignedSatBounds[0].setFromPointsField(points, "x"); + alignedSatBounds[1].setFromPointsField(points, "y"); + alignedSatBounds[2].setFromPointsField(points, "z"); + this.invMatrix.copy(this.matrix).invert(); + this.needsUpdate = false; + }; +}(); +OrientedBox.prototype.intersectsBox = /* @__PURE__ */ function() { + const aabbBounds = /* @__PURE__ */ new SeparatingAxisBounds(); + return function intersectsBox(box) { + if (this.needsUpdate) { + this.update(); + } + const min = box.min; + const max = box.max; + const satBounds = this.satBounds; + const satAxes = this.satAxes; + const alignedSatBounds = this.alignedSatBounds; + aabbBounds.min = min.x; + aabbBounds.max = max.x; + if (alignedSatBounds[0].isSeparated(aabbBounds)) + return false; + aabbBounds.min = min.y; + aabbBounds.max = max.y; + if (alignedSatBounds[1].isSeparated(aabbBounds)) + return false; + aabbBounds.min = min.z; + aabbBounds.max = max.z; + if (alignedSatBounds[2].isSeparated(aabbBounds)) + return false; + for (let i = 0; i < 3; i++) { + const axis = satAxes[i]; + const sb = satBounds[i]; + aabbBounds.setFromBox(axis, box); + if (sb.isSeparated(aabbBounds)) + return false; + } + return true; + }; +}(); +OrientedBox.prototype.intersectsTriangle = /* @__PURE__ */ function() { + const saTri = /* @__PURE__ */ new ExtendedTriangle(); + const pointsArr = /* @__PURE__ */ new Array(3); + const cachedSatBounds = /* @__PURE__ */ new SeparatingAxisBounds(); + const cachedSatBounds2 = /* @__PURE__ */ new SeparatingAxisBounds(); + const cachedAxis = /* @__PURE__ */ new Vector3(); + return function intersectsTriangle(triangle3) { + if (this.needsUpdate) { + this.update(); + } + if (!triangle3.isExtendedTriangle) { + saTri.copy(triangle3); + saTri.update(); + triangle3 = saTri; + } else if (triangle3.needsUpdate) { + triangle3.update(); + } + const satBounds = this.satBounds; + const satAxes = this.satAxes; + pointsArr[0] = triangle3.a; + pointsArr[1] = triangle3.b; + pointsArr[2] = triangle3.c; + for (let i = 0; i < 3; i++) { + const sb = satBounds[i]; + const sa = satAxes[i]; + cachedSatBounds.setFromPoints(sa, pointsArr); + if (sb.isSeparated(cachedSatBounds)) + return false; + } + const triSatBounds = triangle3.satBounds; + const triSatAxes = triangle3.satAxes; + const points = this.points; + for (let i = 0; i < 3; i++) { + const sb = triSatBounds[i]; + const sa = triSatAxes[i]; + cachedSatBounds.setFromPoints(sa, points); + if (sb.isSeparated(cachedSatBounds)) + return false; + } + for (let i = 0; i < 3; i++) { + const sa1 = satAxes[i]; + for (let i2 = 0; i2 < 4; i2++) { + const sa2 = triSatAxes[i2]; + cachedAxis.crossVectors(sa1, sa2); + cachedSatBounds.setFromPoints(cachedAxis, pointsArr); + cachedSatBounds2.setFromPoints(cachedAxis, points); + if (cachedSatBounds.isSeparated(cachedSatBounds2)) + return false; + } + } + return true; + }; +}(); +OrientedBox.prototype.closestPointToPoint = /* @__PURE__ */ function() { + return function closestPointToPoint2(point, target1) { + if (this.needsUpdate) { + this.update(); + } + target1.copy(point).applyMatrix4(this.invMatrix).clamp(this.min, this.max).applyMatrix4(this.matrix); + return target1; + }; +}(); +OrientedBox.prototype.distanceToPoint = function() { + const target = new Vector3(); + return function distanceToPoint(point) { + this.closestPointToPoint(point, target); + return point.distanceTo(target); + }; +}(); +OrientedBox.prototype.distanceToBox = /* @__PURE__ */ function() { + const xyzFields = ["x", "y", "z"]; + const segments1 = /* @__PURE__ */ new Array(12).fill().map(() => new Line3()); + const segments2 = /* @__PURE__ */ new Array(12).fill().map(() => new Line3()); + const point1 = /* @__PURE__ */ new Vector3(); + const point2 = /* @__PURE__ */ new Vector3(); + return function distanceToBox(box, threshold = 0, target1 = null, target2 = null) { + if (this.needsUpdate) { + this.update(); + } + if (this.intersectsBox(box)) { + if (target1 || target2) { + box.getCenter(point2); + this.closestPointToPoint(point2, point1); + box.closestPointToPoint(point1, point2); + if (target1) + target1.copy(point1); + if (target2) + target2.copy(point2); + } + return 0; + } + const threshold2 = threshold * threshold; + const min = box.min; + const max = box.max; + const points = this.points; + let closestDistanceSq = Infinity; + for (let i = 0; i < 8; i++) { + const p = points[i]; + point2.copy(p).clamp(min, max); + const dist = p.distanceToSquared(point2); + if (dist < closestDistanceSq) { + closestDistanceSq = dist; + if (target1) + target1.copy(p); + if (target2) + target2.copy(point2); + if (dist < threshold2) + return Math.sqrt(dist); + } + } + let count = 0; + for (let i = 0; i < 3; i++) { + for (let i1 = 0; i1 <= 1; i1++) { + for (let i2 = 0; i2 <= 1; i2++) { + const nextIndex = (i + 1) % 3; + const nextIndex2 = (i + 2) % 3; + const index = i1 << nextIndex | i2 << nextIndex2; + const index2 = 1 << i | i1 << nextIndex | i2 << nextIndex2; + const p1 = points[index]; + const p2 = points[index2]; + const line1 = segments1[count]; + line1.set(p1, p2); + const f1 = xyzFields[i]; + const f2 = xyzFields[nextIndex]; + const f3 = xyzFields[nextIndex2]; + const line2 = segments2[count]; + const start = line2.start; + const end = line2.end; + start[f1] = min[f1]; + start[f2] = i1 ? min[f2] : max[f2]; + start[f3] = i2 ? min[f3] : max[f2]; + end[f1] = max[f1]; + end[f2] = i1 ? min[f2] : max[f2]; + end[f3] = i2 ? min[f3] : max[f2]; + count++; + } + } + } + for (let x = 0; x <= 1; x++) { + for (let y = 0; y <= 1; y++) { + for (let z = 0; z <= 1; z++) { + point2.x = x ? max.x : min.x; + point2.y = y ? max.y : min.y; + point2.z = z ? max.z : min.z; + this.closestPointToPoint(point2, point1); + const dist = point2.distanceToSquared(point1); + if (dist < closestDistanceSq) { + closestDistanceSq = dist; + if (target1) + target1.copy(point1); + if (target2) + target2.copy(point2); + if (dist < threshold2) + return Math.sqrt(dist); + } + } + } + } + for (let i = 0; i < 12; i++) { + const l1 = segments1[i]; + for (let i2 = 0; i2 < 12; i2++) { + const l2 = segments2[i2]; + closestPointsSegmentToSegment(l1, l2, point1, point2); + const dist = point1.distanceToSquared(point2); + if (dist < closestDistanceSq) { + closestDistanceSq = dist; + if (target1) + target1.copy(point1); + if (target2) + target2.copy(point2); + if (dist < threshold2) + return Math.sqrt(dist); + } + } + } + return Math.sqrt(closestDistanceSq); + }; +}(); +class ExtendedTrianglePoolBase extends PrimitivePool { + constructor() { + super(() => new ExtendedTriangle()); + } +} +const ExtendedTrianglePool = /* @__PURE__ */ new ExtendedTrianglePoolBase(); +const temp = /* @__PURE__ */ new Vector3(); +const temp1$2 = /* @__PURE__ */ new Vector3(); +function closestPointToPoint(bvh, point, target = {}, minThreshold = 0, maxThreshold = Infinity) { + const minThresholdSq = minThreshold * minThreshold; + const maxThresholdSq = maxThreshold * maxThreshold; + let closestDistanceSq = Infinity; + let closestDistanceTriIndex = null; + bvh.shapecast( + { + boundsTraverseOrder: (box) => { + temp.copy(point).clamp(box.min, box.max); + return temp.distanceToSquared(point); + }, + intersectsBounds: (box, isLeaf, score) => { + return score < closestDistanceSq && score < maxThresholdSq; + }, + intersectsTriangle: (tri, triIndex) => { + tri.closestPointToPoint(point, temp); + const distSq = point.distanceToSquared(temp); + if (distSq < closestDistanceSq) { + temp1$2.copy(temp); + closestDistanceSq = distSq; + closestDistanceTriIndex = triIndex; + } + if (distSq < minThresholdSq) { + return true; + } else { + return false; + } + } + } + ); + if (closestDistanceSq === Infinity) + return null; + const closestDistance = Math.sqrt(closestDistanceSq); + if (!target.point) + target.point = temp1$2.clone(); + else + target.point.copy(temp1$2); + target.distance = closestDistance, target.faceIndex = closestDistanceTriIndex; + return target; +} +const IS_GT_REVISION_169 = parseInt(REVISION) >= 169; +const IS_LT_REVISION_161 = parseInt(REVISION) <= 161; +const _vA = /* @__PURE__ */ new Vector3(); +const _vB = /* @__PURE__ */ new Vector3(); +const _vC = /* @__PURE__ */ new Vector3(); +const _uvA = /* @__PURE__ */ new Vector2(); +const _uvB = /* @__PURE__ */ new Vector2(); +const _uvC = /* @__PURE__ */ new Vector2(); +const _normalA = /* @__PURE__ */ new Vector3(); +const _normalB = /* @__PURE__ */ new Vector3(); +const _normalC = /* @__PURE__ */ new Vector3(); +const _intersectionPoint = /* @__PURE__ */ new Vector3(); +function checkIntersection(ray, pA, pB, pC, point, side, near, far) { + let intersect; + if (side === BackSide) { + intersect = ray.intersectTriangle(pC, pB, pA, true, point); + } else { + intersect = ray.intersectTriangle(pA, pB, pC, side !== DoubleSide, point); + } + if (intersect === null) + return null; + const distance = ray.origin.distanceTo(point); + if (distance < near || distance > far) + return null; + return { + distance, + point: point.clone() + }; +} +function checkBufferGeometryIntersection(ray, position, normal, uv, uv1, a, b, c, side, near, far) { + _vA.fromBufferAttribute(position, a); + _vB.fromBufferAttribute(position, b); + _vC.fromBufferAttribute(position, c); + const intersection = checkIntersection(ray, _vA, _vB, _vC, _intersectionPoint, side, near, far); + if (intersection) { + if (uv) { + _uvA.fromBufferAttribute(uv, a); + _uvB.fromBufferAttribute(uv, b); + _uvC.fromBufferAttribute(uv, c); + intersection.uv = new Vector2(); + const res = Triangle.getInterpolation(_intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, intersection.uv); + if (!IS_GT_REVISION_169) { + intersection.uv = res; + } + } + if (uv1) { + _uvA.fromBufferAttribute(uv1, a); + _uvB.fromBufferAttribute(uv1, b); + _uvC.fromBufferAttribute(uv1, c); + intersection.uv1 = new Vector2(); + const res = Triangle.getInterpolation(_intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, intersection.uv1); + if (!IS_GT_REVISION_169) { + intersection.uv1 = res; + } + if (IS_LT_REVISION_161) { + intersection.uv2 = intersection.uv1; + } + } + if (normal) { + _normalA.fromBufferAttribute(normal, a); + _normalB.fromBufferAttribute(normal, b); + _normalC.fromBufferAttribute(normal, c); + intersection.normal = new Vector3(); + const res = Triangle.getInterpolation(_intersectionPoint, _vA, _vB, _vC, _normalA, _normalB, _normalC, intersection.normal); + if (intersection.normal.dot(ray.direction) > 0) { + intersection.normal.multiplyScalar(-1); + } + if (!IS_GT_REVISION_169) { + intersection.normal = res; + } + } + const face = { + a, + b, + c, + normal: new Vector3(), + materialIndex: 0 + }; + Triangle.getNormal(_vA, _vB, _vC, face.normal); + intersection.face = face; + intersection.faceIndex = a; + if (IS_GT_REVISION_169) { + const barycoord = new Vector3(); + Triangle.getBarycoord(_intersectionPoint, _vA, _vB, _vC, barycoord); + intersection.barycoord = barycoord; + } + } + return intersection; +} +function getSide(materialOrSide) { + return materialOrSide && materialOrSide.isMaterial ? materialOrSide.side : materialOrSide; +} +function intersectTri(geometry, materialOrSide, ray, tri, intersections, near, far) { + const triOffset = tri * 3; + let a = triOffset + 0; + let b = triOffset + 1; + let c = triOffset + 2; + const { index, groups } = geometry; + if (geometry.index) { + a = index.getX(a); + b = index.getX(b); + c = index.getX(c); + } + const { position, normal, uv, uv1 } = geometry.attributes; + if (Array.isArray(materialOrSide)) { + const firstIndex = tri * 3; + for (let i = 0, l = groups.length; i < l; i++) { + const { start, count, materialIndex } = groups[i]; + if (firstIndex >= start && firstIndex < start + count) { + const side = getSide(materialOrSide[materialIndex]); + const intersection = checkBufferGeometryIntersection(ray, position, normal, uv, uv1, a, b, c, side, near, far); + if (intersection) { + intersection.faceIndex = tri; + intersection.face.materialIndex = materialIndex; + if (intersections) { + intersections.push(intersection); + } else { + return intersection; + } + } + } + } + } else { + const side = getSide(materialOrSide); + const intersection = checkBufferGeometryIntersection(ray, position, normal, uv, uv1, a, b, c, side, near, far); + if (intersection) { + intersection.faceIndex = tri; + intersection.face.materialIndex = 0; + if (intersections) { + intersections.push(intersection); + } else { + return intersection; + } + } + } + return null; +} +function setTriangle(tri, i, index, pos) { + const ta = tri.a; + const tb = tri.b; + const tc = tri.c; + let i0 = i; + let i1 = i + 1; + let i2 = i + 2; + if (index) { + i0 = index.getX(i0); + i1 = index.getX(i1); + i2 = index.getX(i2); + } + ta.x = pos.getX(i0); + ta.y = pos.getY(i0); + ta.z = pos.getZ(i0); + tb.x = pos.getX(i1); + tb.y = pos.getY(i1); + tb.z = pos.getZ(i1); + tc.x = pos.getX(i2); + tc.y = pos.getY(i2); + tc.z = pos.getZ(i2); +} +function intersectTris(bvh, materialOrSide, ray, offset, count, intersections, near, far) { + const { geometry, _indirectBuffer } = bvh; + for (let i = offset, end = offset + count; i < end; i++) { + intersectTri(geometry, materialOrSide, ray, i, intersections, near, far); + } +} +function intersectClosestTri(bvh, materialOrSide, ray, offset, count, near, far) { + const { geometry, _indirectBuffer } = bvh; + let dist = Infinity; + let res = null; + for (let i = offset, end = offset + count; i < end; i++) { + let intersection; + intersection = intersectTri(geometry, materialOrSide, ray, i, null, near, far); + if (intersection && intersection.distance < dist) { + res = intersection; + dist = intersection.distance; + } + } + return res; +} +function iterateOverTriangles(offset, count, bvh, intersectsTriangleFunc, contained, depth, triangle3) { + const { geometry } = bvh; + const { index } = geometry; + const pos = geometry.attributes.position; + for (let i = offset, l = count + offset; i < l; i++) { + let tri; + tri = i; + setTriangle(triangle3, tri * 3, index, pos); + triangle3.needsUpdate = true; + if (intersectsTriangleFunc(triangle3, tri, contained, depth)) { + return true; + } + } + return false; +} +function refit(bvh, nodeIndices = null) { + if (nodeIndices && Array.isArray(nodeIndices)) { + nodeIndices = new Set(nodeIndices); + } + const geometry = bvh.geometry; + const indexArr = geometry.index ? geometry.index.array : null; + const posAttr = geometry.attributes.position; + let buffer, uint32Array2, uint16Array2, float32Array2; + let byteOffset = 0; + const roots = bvh._roots; + for (let i = 0, l = roots.length; i < l; i++) { + buffer = roots[i]; + uint32Array2 = new Uint32Array(buffer); + uint16Array2 = new Uint16Array(buffer); + float32Array2 = new Float32Array(buffer); + _traverse2(0, byteOffset); + byteOffset += buffer.byteLength; + } + function _traverse2(nodeIndex32, byteOffset2, force = false) { + const nodeIndex16 = nodeIndex32 * 2; + if (IS_LEAF(nodeIndex16, uint16Array2)) { + const offset = OFFSET(nodeIndex32, uint32Array2); + const count = COUNT(nodeIndex16, uint16Array2); + let minx = Infinity; + let miny = Infinity; + let minz = Infinity; + let maxx = -Infinity; + let maxy = -Infinity; + let maxz = -Infinity; + for (let i = 3 * offset, l = 3 * (offset + count); i < l; i++) { + let index = indexArr[i]; + const x = posAttr.getX(index); + const y = posAttr.getY(index); + const z = posAttr.getZ(index); + if (x < minx) + minx = x; + if (x > maxx) + maxx = x; + if (y < miny) + miny = y; + if (y > maxy) + maxy = y; + if (z < minz) + minz = z; + if (z > maxz) + maxz = z; + } + if (float32Array2[nodeIndex32 + 0] !== minx || float32Array2[nodeIndex32 + 1] !== miny || float32Array2[nodeIndex32 + 2] !== minz || float32Array2[nodeIndex32 + 3] !== maxx || float32Array2[nodeIndex32 + 4] !== maxy || float32Array2[nodeIndex32 + 5] !== maxz) { + float32Array2[nodeIndex32 + 0] = minx; + float32Array2[nodeIndex32 + 1] = miny; + float32Array2[nodeIndex32 + 2] = minz; + float32Array2[nodeIndex32 + 3] = maxx; + float32Array2[nodeIndex32 + 4] = maxy; + float32Array2[nodeIndex32 + 5] = maxz; + return true; + } else { + return false; + } + } else { + const left = LEFT_NODE(nodeIndex32); + const right = RIGHT_NODE(nodeIndex32, uint32Array2); + let forceChildren = force; + let includesLeft = false; + let includesRight = false; + if (nodeIndices) { + if (!forceChildren) { + const leftNodeId = left / UINT32_PER_NODE + byteOffset2 / BYTES_PER_NODE; + const rightNodeId = right / UINT32_PER_NODE + byteOffset2 / BYTES_PER_NODE; + includesLeft = nodeIndices.has(leftNodeId); + includesRight = nodeIndices.has(rightNodeId); + forceChildren = !includesLeft && !includesRight; + } + } else { + includesLeft = true; + includesRight = true; + } + const traverseLeft = forceChildren || includesLeft; + const traverseRight = forceChildren || includesRight; + let leftChange = false; + if (traverseLeft) { + leftChange = _traverse2(left, byteOffset2, forceChildren); + } + let rightChange = false; + if (traverseRight) { + rightChange = _traverse2(right, byteOffset2, forceChildren); + } + const didChange = leftChange || rightChange; + if (didChange) { + for (let i = 0; i < 3; i++) { + const left_i = left + i; + const right_i = right + i; + const minLeftValue = float32Array2[left_i]; + const maxLeftValue = float32Array2[left_i + 3]; + const minRightValue = float32Array2[right_i]; + const maxRightValue = float32Array2[right_i + 3]; + float32Array2[nodeIndex32 + i] = minLeftValue < minRightValue ? minLeftValue : minRightValue; + float32Array2[nodeIndex32 + i + 3] = maxLeftValue > maxRightValue ? maxLeftValue : maxRightValue; + } + } + return didChange; + } + } +} +function intersectRay(nodeIndex32, array, ray, near, far) { + let tmin, tmax, tymin, tymax, tzmin, tzmax; + const invdirx = 1 / ray.direction.x, invdiry = 1 / ray.direction.y, invdirz = 1 / ray.direction.z; + const ox = ray.origin.x; + const oy = ray.origin.y; + const oz = ray.origin.z; + let minx = array[nodeIndex32]; + let maxx = array[nodeIndex32 + 3]; + let miny = array[nodeIndex32 + 1]; + let maxy = array[nodeIndex32 + 3 + 1]; + let minz = array[nodeIndex32 + 2]; + let maxz = array[nodeIndex32 + 3 + 2]; + if (invdirx >= 0) { + tmin = (minx - ox) * invdirx; + tmax = (maxx - ox) * invdirx; + } else { + tmin = (maxx - ox) * invdirx; + tmax = (minx - ox) * invdirx; + } + if (invdiry >= 0) { + tymin = (miny - oy) * invdiry; + tymax = (maxy - oy) * invdiry; + } else { + tymin = (maxy - oy) * invdiry; + tymax = (miny - oy) * invdiry; + } + if (tmin > tymax || tymin > tmax) + return false; + if (tymin > tmin || isNaN(tmin)) + tmin = tymin; + if (tymax < tmax || isNaN(tmax)) + tmax = tymax; + if (invdirz >= 0) { + tzmin = (minz - oz) * invdirz; + tzmax = (maxz - oz) * invdirz; + } else { + tzmin = (maxz - oz) * invdirz; + tzmax = (minz - oz) * invdirz; + } + if (tmin > tzmax || tzmin > tmax) + return false; + if (tzmin > tmin || tmin !== tmin) + tmin = tzmin; + if (tzmax < tmax || tmax !== tmax) + tmax = tzmax; + return tmin <= far && tmax >= near; +} +function intersectTris_indirect(bvh, materialOrSide, ray, offset, count, intersections, near, far) { + const { geometry, _indirectBuffer } = bvh; + for (let i = offset, end = offset + count; i < end; i++) { + let vi = _indirectBuffer ? _indirectBuffer[i] : i; + intersectTri(geometry, materialOrSide, ray, vi, intersections, near, far); + } +} +function intersectClosestTri_indirect(bvh, materialOrSide, ray, offset, count, near, far) { + const { geometry, _indirectBuffer } = bvh; + let dist = Infinity; + let res = null; + for (let i = offset, end = offset + count; i < end; i++) { + let intersection; + intersection = intersectTri(geometry, materialOrSide, ray, _indirectBuffer ? _indirectBuffer[i] : i, null, near, far); + if (intersection && intersection.distance < dist) { + res = intersection; + dist = intersection.distance; + } + } + return res; +} +function iterateOverTriangles_indirect(offset, count, bvh, intersectsTriangleFunc, contained, depth, triangle3) { + const { geometry } = bvh; + const { index } = geometry; + const pos = geometry.attributes.position; + for (let i = offset, l = count + offset; i < l; i++) { + let tri; + tri = bvh.resolveTriangleIndex(i); + setTriangle(triangle3, tri * 3, index, pos); + triangle3.needsUpdate = true; + if (intersectsTriangleFunc(triangle3, tri, contained, depth)) { + return true; + } + } + return false; +} +function raycast(bvh, root, materialOrSide, ray, intersects2, near, far) { + BufferStack.setBuffer(bvh._roots[root]); + _raycast$1(0, bvh, materialOrSide, ray, intersects2, near, far); + BufferStack.clearBuffer(); +} +function _raycast$1(nodeIndex32, bvh, materialOrSide, ray, intersects2, near, far) { + const { float32Array: float32Array2, uint16Array: uint16Array2, uint32Array: uint32Array2 } = BufferStack; + const nodeIndex16 = nodeIndex32 * 2; + const isLeaf = IS_LEAF(nodeIndex16, uint16Array2); + if (isLeaf) { + const offset = OFFSET(nodeIndex32, uint32Array2); + const count = COUNT(nodeIndex16, uint16Array2); + intersectTris(bvh, materialOrSide, ray, offset, count, intersects2, near, far); + } else { + const leftIndex = LEFT_NODE(nodeIndex32); + if (intersectRay(leftIndex, float32Array2, ray, near, far)) { + _raycast$1(leftIndex, bvh, materialOrSide, ray, intersects2, near, far); + } + const rightIndex = RIGHT_NODE(nodeIndex32, uint32Array2); + if (intersectRay(rightIndex, float32Array2, ray, near, far)) { + _raycast$1(rightIndex, bvh, materialOrSide, ray, intersects2, near, far); + } + } +} +const _xyzFields$1 = ["x", "y", "z"]; +function raycastFirst(bvh, root, materialOrSide, ray, near, far) { + BufferStack.setBuffer(bvh._roots[root]); + const result = _raycastFirst$1(0, bvh, materialOrSide, ray, near, far); + BufferStack.clearBuffer(); + return result; +} +function _raycastFirst$1(nodeIndex32, bvh, materialOrSide, ray, near, far) { + const { float32Array: float32Array2, uint16Array: uint16Array2, uint32Array: uint32Array2 } = BufferStack; + let nodeIndex16 = nodeIndex32 * 2; + const isLeaf = IS_LEAF(nodeIndex16, uint16Array2); + if (isLeaf) { + const offset = OFFSET(nodeIndex32, uint32Array2); + const count = COUNT(nodeIndex16, uint16Array2); + return intersectClosestTri(bvh, materialOrSide, ray, offset, count, near, far); + } else { + const splitAxis = SPLIT_AXIS(nodeIndex32, uint32Array2); + const xyzAxis = _xyzFields$1[splitAxis]; + const rayDir = ray.direction[xyzAxis]; + const leftToRight = rayDir >= 0; + let c1, c2; + if (leftToRight) { + c1 = LEFT_NODE(nodeIndex32); + c2 = RIGHT_NODE(nodeIndex32, uint32Array2); + } else { + c1 = RIGHT_NODE(nodeIndex32, uint32Array2); + c2 = LEFT_NODE(nodeIndex32); + } + const c1Intersection = intersectRay(c1, float32Array2, ray, near, far); + const c1Result = c1Intersection ? _raycastFirst$1(c1, bvh, materialOrSide, ray, near, far) : null; + if (c1Result) { + const point = c1Result.point[xyzAxis]; + const isOutside = leftToRight ? point <= float32Array2[c2 + splitAxis] : ( + // min bounding data + point >= float32Array2[c2 + splitAxis + 3] + ); + if (isOutside) { + return c1Result; + } + } + const c2Intersection = intersectRay(c2, float32Array2, ray, near, far); + const c2Result = c2Intersection ? _raycastFirst$1(c2, bvh, materialOrSide, ray, near, far) : null; + if (c1Result && c2Result) { + return c1Result.distance <= c2Result.distance ? c1Result : c2Result; + } else { + return c1Result || c2Result || null; + } + } +} +const boundingBox$1 = /* @__PURE__ */ new Box3(); +const triangle$1 = /* @__PURE__ */ new ExtendedTriangle(); +const triangle2$1 = /* @__PURE__ */ new ExtendedTriangle(); +const invertedMat$1 = /* @__PURE__ */ new Matrix4(); +const obb$3 = /* @__PURE__ */ new OrientedBox(); +const obb2$3 = /* @__PURE__ */ new OrientedBox(); +function intersectsGeometry(bvh, root, otherGeometry, geometryToBvh) { + BufferStack.setBuffer(bvh._roots[root]); + const result = _intersectsGeometry$1(0, bvh, otherGeometry, geometryToBvh); + BufferStack.clearBuffer(); + return result; +} +function _intersectsGeometry$1(nodeIndex32, bvh, otherGeometry, geometryToBvh, cachedObb = null) { + const { float32Array: float32Array2, uint16Array: uint16Array2, uint32Array: uint32Array2 } = BufferStack; + let nodeIndex16 = nodeIndex32 * 2; + if (cachedObb === null) { + if (!otherGeometry.boundingBox) { + otherGeometry.computeBoundingBox(); + } + obb$3.set(otherGeometry.boundingBox.min, otherGeometry.boundingBox.max, geometryToBvh); + cachedObb = obb$3; + } + const isLeaf = IS_LEAF(nodeIndex16, uint16Array2); + if (isLeaf) { + const thisGeometry = bvh.geometry; + const thisIndex = thisGeometry.index; + const thisPos = thisGeometry.attributes.position; + const otherIndex = otherGeometry.index; + const otherPos = otherGeometry.attributes.position; + const offset = OFFSET(nodeIndex32, uint32Array2); + const count = COUNT(nodeIndex16, uint16Array2); + invertedMat$1.copy(geometryToBvh).invert(); + if (otherGeometry.boundsTree) { + arrayToBox(BOUNDING_DATA_INDEX(nodeIndex32), float32Array2, obb2$3); + obb2$3.matrix.copy(invertedMat$1); + obb2$3.needsUpdate = true; + const res = otherGeometry.boundsTree.shapecast({ + intersectsBounds: (box) => obb2$3.intersectsBox(box), + intersectsTriangle: (tri) => { + tri.a.applyMatrix4(geometryToBvh); + tri.b.applyMatrix4(geometryToBvh); + tri.c.applyMatrix4(geometryToBvh); + tri.needsUpdate = true; + for (let i = offset * 3, l = (count + offset) * 3; i < l; i += 3) { + setTriangle(triangle2$1, i, thisIndex, thisPos); + triangle2$1.needsUpdate = true; + if (tri.intersectsTriangle(triangle2$1)) { + return true; + } + } + return false; + } + }); + return res; + } else { + const otherTriangleCount = getTriCount(otherGeometry); + for (let i = offset * 3, l = (count + offset) * 3; i < l; i += 3) { + setTriangle(triangle$1, i, thisIndex, thisPos); + triangle$1.a.applyMatrix4(invertedMat$1); + triangle$1.b.applyMatrix4(invertedMat$1); + triangle$1.c.applyMatrix4(invertedMat$1); + triangle$1.needsUpdate = true; + for (let i2 = 0, l2 = otherTriangleCount * 3; i2 < l2; i2 += 3) { + setTriangle(triangle2$1, i2, otherIndex, otherPos); + triangle2$1.needsUpdate = true; + if (triangle$1.intersectsTriangle(triangle2$1)) { + return true; + } + } + } + } + } else { + const left = LEFT_NODE(nodeIndex32); + const right = RIGHT_NODE(nodeIndex32, uint32Array2); + arrayToBox(BOUNDING_DATA_INDEX(left), float32Array2, boundingBox$1); + const leftIntersection = cachedObb.intersectsBox(boundingBox$1) && _intersectsGeometry$1(left, bvh, otherGeometry, geometryToBvh, cachedObb); + if (leftIntersection) + return true; + arrayToBox(BOUNDING_DATA_INDEX(right), float32Array2, boundingBox$1); + const rightIntersection = cachedObb.intersectsBox(boundingBox$1) && _intersectsGeometry$1(right, bvh, otherGeometry, geometryToBvh, cachedObb); + if (rightIntersection) + return true; + return false; + } +} +const tempMatrix$1 = /* @__PURE__ */ new Matrix4(); +const obb$2 = /* @__PURE__ */ new OrientedBox(); +const obb2$2 = /* @__PURE__ */ new OrientedBox(); +const temp1$1 = /* @__PURE__ */ new Vector3(); +const temp2$1 = /* @__PURE__ */ new Vector3(); +const temp3$1 = /* @__PURE__ */ new Vector3(); +const temp4$1 = /* @__PURE__ */ new Vector3(); +function closestPointToGeometry(bvh, otherGeometry, geometryToBvh, target1 = {}, target2 = {}, minThreshold = 0, maxThreshold = Infinity) { + if (!otherGeometry.boundingBox) { + otherGeometry.computeBoundingBox(); + } + obb$2.set(otherGeometry.boundingBox.min, otherGeometry.boundingBox.max, geometryToBvh); + obb$2.needsUpdate = true; + const geometry = bvh.geometry; + const pos = geometry.attributes.position; + const index = geometry.index; + const otherPos = otherGeometry.attributes.position; + const otherIndex = otherGeometry.index; + const triangle3 = ExtendedTrianglePool.getPrimitive(); + const triangle22 = ExtendedTrianglePool.getPrimitive(); + let tempTarget1 = temp1$1; + let tempTargetDest1 = temp2$1; + let tempTarget2 = null; + let tempTargetDest2 = null; + if (target2) { + tempTarget2 = temp3$1; + tempTargetDest2 = temp4$1; + } + let closestDistance = Infinity; + let closestDistanceTriIndex = null; + let closestDistanceOtherTriIndex = null; + tempMatrix$1.copy(geometryToBvh).invert(); + obb2$2.matrix.copy(tempMatrix$1); + bvh.shapecast( + { + boundsTraverseOrder: (box) => { + return obb$2.distanceToBox(box); + }, + intersectsBounds: (box, isLeaf, score) => { + if (score < closestDistance && score < maxThreshold) { + if (isLeaf) { + obb2$2.min.copy(box.min); + obb2$2.max.copy(box.max); + obb2$2.needsUpdate = true; + } + return true; + } + return false; + }, + intersectsRange: (offset, count) => { + if (otherGeometry.boundsTree) { + const otherBvh = otherGeometry.boundsTree; + return otherBvh.shapecast({ + boundsTraverseOrder: (box) => { + return obb2$2.distanceToBox(box); + }, + intersectsBounds: (box, isLeaf, score) => { + return score < closestDistance && score < maxThreshold; + }, + intersectsRange: (otherOffset, otherCount) => { + for (let i2 = otherOffset, l2 = otherOffset + otherCount; i2 < l2; i2++) { + setTriangle(triangle22, 3 * i2, otherIndex, otherPos); + triangle22.a.applyMatrix4(geometryToBvh); + triangle22.b.applyMatrix4(geometryToBvh); + triangle22.c.applyMatrix4(geometryToBvh); + triangle22.needsUpdate = true; + for (let i = offset, l = offset + count; i < l; i++) { + setTriangle(triangle3, 3 * i, index, pos); + triangle3.needsUpdate = true; + const dist = triangle3.distanceToTriangle(triangle22, tempTarget1, tempTarget2); + if (dist < closestDistance) { + tempTargetDest1.copy(tempTarget1); + if (tempTargetDest2) { + tempTargetDest2.copy(tempTarget2); + } + closestDistance = dist; + closestDistanceTriIndex = i; + closestDistanceOtherTriIndex = i2; + } + if (dist < minThreshold) { + return true; + } + } + } + } + }); + } else { + const triCount = getTriCount(otherGeometry); + for (let i2 = 0, l2 = triCount; i2 < l2; i2++) { + setTriangle(triangle22, 3 * i2, otherIndex, otherPos); + triangle22.a.applyMatrix4(geometryToBvh); + triangle22.b.applyMatrix4(geometryToBvh); + triangle22.c.applyMatrix4(geometryToBvh); + triangle22.needsUpdate = true; + for (let i = offset, l = offset + count; i < l; i++) { + setTriangle(triangle3, 3 * i, index, pos); + triangle3.needsUpdate = true; + const dist = triangle3.distanceToTriangle(triangle22, tempTarget1, tempTarget2); + if (dist < closestDistance) { + tempTargetDest1.copy(tempTarget1); + if (tempTargetDest2) { + tempTargetDest2.copy(tempTarget2); + } + closestDistance = dist; + closestDistanceTriIndex = i; + closestDistanceOtherTriIndex = i2; + } + if (dist < minThreshold) { + return true; + } + } + } + } + } + } + ); + ExtendedTrianglePool.releasePrimitive(triangle3); + ExtendedTrianglePool.releasePrimitive(triangle22); + if (closestDistance === Infinity) { + return null; + } + if (!target1.point) { + target1.point = tempTargetDest1.clone(); + } else { + target1.point.copy(tempTargetDest1); + } + target1.distance = closestDistance, target1.faceIndex = closestDistanceTriIndex; + if (target2) { + if (!target2.point) + target2.point = tempTargetDest2.clone(); + else + target2.point.copy(tempTargetDest2); + target2.point.applyMatrix4(tempMatrix$1); + tempTargetDest1.applyMatrix4(tempMatrix$1); + target2.distance = tempTargetDest1.sub(target2.point).length(); + target2.faceIndex = closestDistanceOtherTriIndex; + } + return target1; +} +function refit_indirect(bvh, nodeIndices = null) { + if (nodeIndices && Array.isArray(nodeIndices)) { + nodeIndices = new Set(nodeIndices); + } + const geometry = bvh.geometry; + const indexArr = geometry.index ? geometry.index.array : null; + const posAttr = geometry.attributes.position; + let buffer, uint32Array2, uint16Array2, float32Array2; + let byteOffset = 0; + const roots = bvh._roots; + for (let i = 0, l = roots.length; i < l; i++) { + buffer = roots[i]; + uint32Array2 = new Uint32Array(buffer); + uint16Array2 = new Uint16Array(buffer); + float32Array2 = new Float32Array(buffer); + _traverse2(0, byteOffset); + byteOffset += buffer.byteLength; + } + function _traverse2(nodeIndex32, byteOffset2, force = false) { + const nodeIndex16 = nodeIndex32 * 2; + if (IS_LEAF(nodeIndex16, uint16Array2)) { + const offset = OFFSET(nodeIndex32, uint32Array2); + const count = COUNT(nodeIndex16, uint16Array2); + let minx = Infinity; + let miny = Infinity; + let minz = Infinity; + let maxx = -Infinity; + let maxy = -Infinity; + let maxz = -Infinity; + for (let i = offset, l = offset + count; i < l; i++) { + const t = 3 * bvh.resolveTriangleIndex(i); + for (let j = 0; j < 3; j++) { + let index = t + j; + index = indexArr ? indexArr[index] : index; + const x = posAttr.getX(index); + const y = posAttr.getY(index); + const z = posAttr.getZ(index); + if (x < minx) + minx = x; + if (x > maxx) + maxx = x; + if (y < miny) + miny = y; + if (y > maxy) + maxy = y; + if (z < minz) + minz = z; + if (z > maxz) + maxz = z; + } + } + if (float32Array2[nodeIndex32 + 0] !== minx || float32Array2[nodeIndex32 + 1] !== miny || float32Array2[nodeIndex32 + 2] !== minz || float32Array2[nodeIndex32 + 3] !== maxx || float32Array2[nodeIndex32 + 4] !== maxy || float32Array2[nodeIndex32 + 5] !== maxz) { + float32Array2[nodeIndex32 + 0] = minx; + float32Array2[nodeIndex32 + 1] = miny; + float32Array2[nodeIndex32 + 2] = minz; + float32Array2[nodeIndex32 + 3] = maxx; + float32Array2[nodeIndex32 + 4] = maxy; + float32Array2[nodeIndex32 + 5] = maxz; + return true; + } else { + return false; + } + } else { + const left = LEFT_NODE(nodeIndex32); + const right = RIGHT_NODE(nodeIndex32, uint32Array2); + let forceChildren = force; + let includesLeft = false; + let includesRight = false; + if (nodeIndices) { + if (!forceChildren) { + const leftNodeId = left / UINT32_PER_NODE + byteOffset2 / BYTES_PER_NODE; + const rightNodeId = right / UINT32_PER_NODE + byteOffset2 / BYTES_PER_NODE; + includesLeft = nodeIndices.has(leftNodeId); + includesRight = nodeIndices.has(rightNodeId); + forceChildren = !includesLeft && !includesRight; + } + } else { + includesLeft = true; + includesRight = true; + } + const traverseLeft = forceChildren || includesLeft; + const traverseRight = forceChildren || includesRight; + let leftChange = false; + if (traverseLeft) { + leftChange = _traverse2(left, byteOffset2, forceChildren); + } + let rightChange = false; + if (traverseRight) { + rightChange = _traverse2(right, byteOffset2, forceChildren); + } + const didChange = leftChange || rightChange; + if (didChange) { + for (let i = 0; i < 3; i++) { + const left_i = left + i; + const right_i = right + i; + const minLeftValue = float32Array2[left_i]; + const maxLeftValue = float32Array2[left_i + 3]; + const minRightValue = float32Array2[right_i]; + const maxRightValue = float32Array2[right_i + 3]; + float32Array2[nodeIndex32 + i] = minLeftValue < minRightValue ? minLeftValue : minRightValue; + float32Array2[nodeIndex32 + i + 3] = maxLeftValue > maxRightValue ? maxLeftValue : maxRightValue; + } + } + return didChange; + } + } +} +function raycast_indirect(bvh, root, materialOrSide, ray, intersects2, near, far) { + BufferStack.setBuffer(bvh._roots[root]); + _raycast(0, bvh, materialOrSide, ray, intersects2, near, far); + BufferStack.clearBuffer(); +} +function _raycast(nodeIndex32, bvh, materialOrSide, ray, intersects2, near, far) { + const { float32Array: float32Array2, uint16Array: uint16Array2, uint32Array: uint32Array2 } = BufferStack; + const nodeIndex16 = nodeIndex32 * 2; + const isLeaf = IS_LEAF(nodeIndex16, uint16Array2); + if (isLeaf) { + const offset = OFFSET(nodeIndex32, uint32Array2); + const count = COUNT(nodeIndex16, uint16Array2); + intersectTris_indirect(bvh, materialOrSide, ray, offset, count, intersects2, near, far); + } else { + const leftIndex = LEFT_NODE(nodeIndex32); + if (intersectRay(leftIndex, float32Array2, ray, near, far)) { + _raycast(leftIndex, bvh, materialOrSide, ray, intersects2, near, far); + } + const rightIndex = RIGHT_NODE(nodeIndex32, uint32Array2); + if (intersectRay(rightIndex, float32Array2, ray, near, far)) { + _raycast(rightIndex, bvh, materialOrSide, ray, intersects2, near, far); + } + } +} +const _xyzFields = ["x", "y", "z"]; +function raycastFirst_indirect(bvh, root, materialOrSide, ray, near, far) { + BufferStack.setBuffer(bvh._roots[root]); + const result = _raycastFirst(0, bvh, materialOrSide, ray, near, far); + BufferStack.clearBuffer(); + return result; +} +function _raycastFirst(nodeIndex32, bvh, materialOrSide, ray, near, far) { + const { float32Array: float32Array2, uint16Array: uint16Array2, uint32Array: uint32Array2 } = BufferStack; + let nodeIndex16 = nodeIndex32 * 2; + const isLeaf = IS_LEAF(nodeIndex16, uint16Array2); + if (isLeaf) { + const offset = OFFSET(nodeIndex32, uint32Array2); + const count = COUNT(nodeIndex16, uint16Array2); + return intersectClosestTri_indirect(bvh, materialOrSide, ray, offset, count, near, far); + } else { + const splitAxis = SPLIT_AXIS(nodeIndex32, uint32Array2); + const xyzAxis = _xyzFields[splitAxis]; + const rayDir = ray.direction[xyzAxis]; + const leftToRight = rayDir >= 0; + let c1, c2; + if (leftToRight) { + c1 = LEFT_NODE(nodeIndex32); + c2 = RIGHT_NODE(nodeIndex32, uint32Array2); + } else { + c1 = RIGHT_NODE(nodeIndex32, uint32Array2); + c2 = LEFT_NODE(nodeIndex32); + } + const c1Intersection = intersectRay(c1, float32Array2, ray, near, far); + const c1Result = c1Intersection ? _raycastFirst(c1, bvh, materialOrSide, ray, near, far) : null; + if (c1Result) { + const point = c1Result.point[xyzAxis]; + const isOutside = leftToRight ? point <= float32Array2[c2 + splitAxis] : ( + // min bounding data + point >= float32Array2[c2 + splitAxis + 3] + ); + if (isOutside) { + return c1Result; + } + } + const c2Intersection = intersectRay(c2, float32Array2, ray, near, far); + const c2Result = c2Intersection ? _raycastFirst(c2, bvh, materialOrSide, ray, near, far) : null; + if (c1Result && c2Result) { + return c1Result.distance <= c2Result.distance ? c1Result : c2Result; + } else { + return c1Result || c2Result || null; + } + } +} +const boundingBox = /* @__PURE__ */ new Box3(); +const triangle = /* @__PURE__ */ new ExtendedTriangle(); +const triangle2 = /* @__PURE__ */ new ExtendedTriangle(); +const invertedMat = /* @__PURE__ */ new Matrix4(); +const obb$1 = /* @__PURE__ */ new OrientedBox(); +const obb2$1 = /* @__PURE__ */ new OrientedBox(); +function intersectsGeometry_indirect(bvh, root, otherGeometry, geometryToBvh) { + BufferStack.setBuffer(bvh._roots[root]); + const result = _intersectsGeometry(0, bvh, otherGeometry, geometryToBvh); + BufferStack.clearBuffer(); + return result; +} +function _intersectsGeometry(nodeIndex32, bvh, otherGeometry, geometryToBvh, cachedObb = null) { + const { float32Array: float32Array2, uint16Array: uint16Array2, uint32Array: uint32Array2 } = BufferStack; + let nodeIndex16 = nodeIndex32 * 2; + if (cachedObb === null) { + if (!otherGeometry.boundingBox) { + otherGeometry.computeBoundingBox(); + } + obb$1.set(otherGeometry.boundingBox.min, otherGeometry.boundingBox.max, geometryToBvh); + cachedObb = obb$1; + } + const isLeaf = IS_LEAF(nodeIndex16, uint16Array2); + if (isLeaf) { + const thisGeometry = bvh.geometry; + const thisIndex = thisGeometry.index; + const thisPos = thisGeometry.attributes.position; + const otherIndex = otherGeometry.index; + const otherPos = otherGeometry.attributes.position; + const offset = OFFSET(nodeIndex32, uint32Array2); + const count = COUNT(nodeIndex16, uint16Array2); + invertedMat.copy(geometryToBvh).invert(); + if (otherGeometry.boundsTree) { + arrayToBox(BOUNDING_DATA_INDEX(nodeIndex32), float32Array2, obb2$1); + obb2$1.matrix.copy(invertedMat); + obb2$1.needsUpdate = true; + const res = otherGeometry.boundsTree.shapecast({ + intersectsBounds: (box) => obb2$1.intersectsBox(box), + intersectsTriangle: (tri) => { + tri.a.applyMatrix4(geometryToBvh); + tri.b.applyMatrix4(geometryToBvh); + tri.c.applyMatrix4(geometryToBvh); + tri.needsUpdate = true; + for (let i = offset, l = count + offset; i < l; i++) { + setTriangle(triangle2, 3 * bvh.resolveTriangleIndex(i), thisIndex, thisPos); + triangle2.needsUpdate = true; + if (tri.intersectsTriangle(triangle2)) { + return true; + } + } + return false; + } + }); + return res; + } else { + const otherTriangleCount = getTriCount(otherGeometry); + for (let i = offset, l = count + offset; i < l; i++) { + const ti = bvh.resolveTriangleIndex(i); + setTriangle(triangle, 3 * ti, thisIndex, thisPos); + triangle.a.applyMatrix4(invertedMat); + triangle.b.applyMatrix4(invertedMat); + triangle.c.applyMatrix4(invertedMat); + triangle.needsUpdate = true; + for (let i2 = 0, l2 = otherTriangleCount * 3; i2 < l2; i2 += 3) { + setTriangle(triangle2, i2, otherIndex, otherPos); + triangle2.needsUpdate = true; + if (triangle.intersectsTriangle(triangle2)) { + return true; + } + } + } + } + } else { + const left = LEFT_NODE(nodeIndex32); + const right = RIGHT_NODE(nodeIndex32, uint32Array2); + arrayToBox(BOUNDING_DATA_INDEX(left), float32Array2, boundingBox); + const leftIntersection = cachedObb.intersectsBox(boundingBox) && _intersectsGeometry(left, bvh, otherGeometry, geometryToBvh, cachedObb); + if (leftIntersection) + return true; + arrayToBox(BOUNDING_DATA_INDEX(right), float32Array2, boundingBox); + const rightIntersection = cachedObb.intersectsBox(boundingBox) && _intersectsGeometry(right, bvh, otherGeometry, geometryToBvh, cachedObb); + if (rightIntersection) + return true; + return false; + } +} +const tempMatrix = /* @__PURE__ */ new Matrix4(); +const obb = /* @__PURE__ */ new OrientedBox(); +const obb2 = /* @__PURE__ */ new OrientedBox(); +const temp1 = /* @__PURE__ */ new Vector3(); +const temp2 = /* @__PURE__ */ new Vector3(); +const temp3 = /* @__PURE__ */ new Vector3(); +const temp4 = /* @__PURE__ */ new Vector3(); +function closestPointToGeometry_indirect(bvh, otherGeometry, geometryToBvh, target1 = {}, target2 = {}, minThreshold = 0, maxThreshold = Infinity) { + if (!otherGeometry.boundingBox) { + otherGeometry.computeBoundingBox(); + } + obb.set(otherGeometry.boundingBox.min, otherGeometry.boundingBox.max, geometryToBvh); + obb.needsUpdate = true; + const geometry = bvh.geometry; + const pos = geometry.attributes.position; + const index = geometry.index; + const otherPos = otherGeometry.attributes.position; + const otherIndex = otherGeometry.index; + const triangle3 = ExtendedTrianglePool.getPrimitive(); + const triangle22 = ExtendedTrianglePool.getPrimitive(); + let tempTarget1 = temp1; + let tempTargetDest1 = temp2; + let tempTarget2 = null; + let tempTargetDest2 = null; + if (target2) { + tempTarget2 = temp3; + tempTargetDest2 = temp4; + } + let closestDistance = Infinity; + let closestDistanceTriIndex = null; + let closestDistanceOtherTriIndex = null; + tempMatrix.copy(geometryToBvh).invert(); + obb2.matrix.copy(tempMatrix); + bvh.shapecast( + { + boundsTraverseOrder: (box) => { + return obb.distanceToBox(box); + }, + intersectsBounds: (box, isLeaf, score) => { + if (score < closestDistance && score < maxThreshold) { + if (isLeaf) { + obb2.min.copy(box.min); + obb2.max.copy(box.max); + obb2.needsUpdate = true; + } + return true; + } + return false; + }, + intersectsRange: (offset, count) => { + if (otherGeometry.boundsTree) { + const otherBvh = otherGeometry.boundsTree; + return otherBvh.shapecast({ + boundsTraverseOrder: (box) => { + return obb2.distanceToBox(box); + }, + intersectsBounds: (box, isLeaf, score) => { + return score < closestDistance && score < maxThreshold; + }, + intersectsRange: (otherOffset, otherCount) => { + for (let i2 = otherOffset, l2 = otherOffset + otherCount; i2 < l2; i2++) { + const ti2 = otherBvh.resolveTriangleIndex(i2); + setTriangle(triangle22, 3 * ti2, otherIndex, otherPos); + triangle22.a.applyMatrix4(geometryToBvh); + triangle22.b.applyMatrix4(geometryToBvh); + triangle22.c.applyMatrix4(geometryToBvh); + triangle22.needsUpdate = true; + for (let i = offset, l = offset + count; i < l; i++) { + const ti = bvh.resolveTriangleIndex(i); + setTriangle(triangle3, 3 * ti, index, pos); + triangle3.needsUpdate = true; + const dist = triangle3.distanceToTriangle(triangle22, tempTarget1, tempTarget2); + if (dist < closestDistance) { + tempTargetDest1.copy(tempTarget1); + if (tempTargetDest2) { + tempTargetDest2.copy(tempTarget2); + } + closestDistance = dist; + closestDistanceTriIndex = i; + closestDistanceOtherTriIndex = i2; + } + if (dist < minThreshold) { + return true; + } + } + } + } + }); + } else { + const triCount = getTriCount(otherGeometry); + for (let i2 = 0, l2 = triCount; i2 < l2; i2++) { + setTriangle(triangle22, 3 * i2, otherIndex, otherPos); + triangle22.a.applyMatrix4(geometryToBvh); + triangle22.b.applyMatrix4(geometryToBvh); + triangle22.c.applyMatrix4(geometryToBvh); + triangle22.needsUpdate = true; + for (let i = offset, l = offset + count; i < l; i++) { + const ti = bvh.resolveTriangleIndex(i); + setTriangle(triangle3, 3 * ti, index, pos); + triangle3.needsUpdate = true; + const dist = triangle3.distanceToTriangle(triangle22, tempTarget1, tempTarget2); + if (dist < closestDistance) { + tempTargetDest1.copy(tempTarget1); + if (tempTargetDest2) { + tempTargetDest2.copy(tempTarget2); + } + closestDistance = dist; + closestDistanceTriIndex = i; + closestDistanceOtherTriIndex = i2; + } + if (dist < minThreshold) { + return true; + } + } + } + } + } + } + ); + ExtendedTrianglePool.releasePrimitive(triangle3); + ExtendedTrianglePool.releasePrimitive(triangle22); + if (closestDistance === Infinity) { + return null; + } + if (!target1.point) { + target1.point = tempTargetDest1.clone(); + } else { + target1.point.copy(tempTargetDest1); + } + target1.distance = closestDistance, target1.faceIndex = closestDistanceTriIndex; + if (target2) { + if (!target2.point) + target2.point = tempTargetDest2.clone(); + else + target2.point.copy(tempTargetDest2); + target2.point.applyMatrix4(tempMatrix); + tempTargetDest1.applyMatrix4(tempMatrix); + target2.distance = tempTargetDest1.sub(target2.point).length(); + target2.faceIndex = closestDistanceOtherTriIndex; + } + return target1; +} +function convertRaycastIntersect(hit, object, raycaster) { + if (hit === null) { + return null; + } + hit.point.applyMatrix4(object.matrixWorld); + hit.distance = hit.point.distanceTo(raycaster.ray.origin); + hit.object = object; + return hit; +} +const _obb = /* @__PURE__ */ new OrientedBox(); +const _ray = /* @__PURE__ */ new Ray(); +const _direction = /* @__PURE__ */ new Vector3(); +const _inverseMatrix = /* @__PURE__ */ new Matrix4(); +const _worldScale = /* @__PURE__ */ new Vector3(); +const _getters = ["getX", "getY", "getZ"]; +class MeshBVH extends GeometryBVH { + static serialize(bvh, options = {}) { + options = { + cloneBuffers: true, + ...options + }; + const geometry = bvh.geometry; + const rootData = bvh._roots; + const indirectBuffer = bvh._indirectBuffer; + const indexAttribute = geometry.getIndex(); + const result = { + version: 1, + roots: null, + index: null, + indirectBuffer: null + }; + if (options.cloneBuffers) { + result.roots = rootData.map((root) => root.slice()); + result.index = indexAttribute ? indexAttribute.array.slice() : null; + result.indirectBuffer = indirectBuffer ? indirectBuffer.slice() : null; + } else { + result.roots = rootData; + result.index = indexAttribute ? indexAttribute.array : null; + result.indirectBuffer = indirectBuffer; + } + return result; + } + static deserialize(data, geometry, options = {}) { + options = { + setIndex: true, + indirect: Boolean(data.indirectBuffer), + ...options + }; + const { index, roots, indirectBuffer } = data; + if (!data.version) { + console.warn( + "MeshBVH.deserialize: Serialization format has been changed and will be fixed up. It is recommended to regenerate any stored serialized data." + ); + fixupVersion0(roots); + } + const bvh = new MeshBVH(geometry, { ...options, [SKIP_GENERATION]: true }); + bvh._roots = roots; + bvh._indirectBuffer = indirectBuffer || null; + if (options.setIndex) { + const indexAttribute = geometry.getIndex(); + if (indexAttribute === null) { + const newIndex = new BufferAttribute(data.index, 1, false); + geometry.setIndex(newIndex); + } else if (indexAttribute.array !== index) { + indexAttribute.array.set(index); + indexAttribute.needsUpdate = true; + } + } + return bvh; + function fixupVersion0(roots2) { + for (let rootIndex = 0; rootIndex < roots2.length; rootIndex++) { + const root = roots2[rootIndex]; + const uint32Array2 = new Uint32Array(root); + const uint16Array2 = new Uint16Array(root); + for (let node = 0, l = root.byteLength / BYTES_PER_NODE; node < l; node++) { + const node32Index = UINT32_PER_NODE * node; + const node16Index = 2 * node32Index; + if (!IS_LEAF(node16Index, uint16Array2)) { + uint32Array2[node32Index + 6] = uint32Array2[node32Index + 6] / UINT32_PER_NODE - node; + } + } + } + } + } + get primitiveStride() { + return 3; + } + get resolveTriangleIndex() { + return this.resolvePrimitiveIndex; + } + constructor(geometry, options = {}) { + if (options.maxLeafTris) { + console.warn('MeshBVH: "maxLeafTris" option has been deprecated. Use maxLeafSize, instead.'); + options = { + ...options, + maxLeafSize: options.maxLeafTris + }; + } + super(geometry, options); + } + // implement abstract methods from BVH base class + shiftTriangleOffsets(offset) { + return super.shiftPrimitiveOffsets(offset); + } + // write primitive bounds to the buffer - used only for validateBounds at the moment + writePrimitiveBounds(i, targetBuffer, baseIndex) { + const geometry = this.geometry; + const indirectBuffer = this._indirectBuffer; + const posAttr = geometry.attributes.position; + const index = geometry.index ? geometry.index.array : null; + const tri = indirectBuffer ? indirectBuffer[i] : i; + const tri3 = tri * 3; + let ai = tri3 + 0; + let bi = tri3 + 1; + let ci = tri3 + 2; + if (index) { + ai = index[ai]; + bi = index[bi]; + ci = index[ci]; + } + for (let el = 0; el < 3; el++) { + const a = posAttr[_getters[el]](ai); + const b = posAttr[_getters[el]](bi); + const c = posAttr[_getters[el]](ci); + let min = a; + if (b < min) + min = b; + if (c < min) + min = c; + let max = a; + if (b > max) + max = b; + if (c > max) + max = c; + targetBuffer[baseIndex + el] = min; + targetBuffer[baseIndex + el + 3] = max; + } + return targetBuffer; + } + // precomputes the bounding box for each triangle; required for quickly calculating tree splits. + // result is an array of size count * 6 where triangle i maps to a + // [x_center, x_delta, y_center, y_delta, z_center, z_delta] tuple starting at index (i - offset) * 6, + // representing the center and half-extent in each dimension of triangle i + computePrimitiveBounds(offset, count, targetBuffer) { + const geometry = this.geometry; + const indirectBuffer = this._indirectBuffer; + const posAttr = geometry.attributes.position; + const index = geometry.index ? geometry.index.array : null; + const normalized = posAttr.normalized; + if (offset < 0 || count + offset - targetBuffer.offset > targetBuffer.length / 6) { + throw new Error("MeshBVH: compute triangle bounds range is invalid."); + } + const posArr = posAttr.array; + const bufferOffset = posAttr.offset || 0; + let stride = 3; + if (posAttr.isInterleavedBufferAttribute) { + stride = posAttr.data.stride; + } + const getters = ["getX", "getY", "getZ"]; + const writeOffset = targetBuffer.offset; + for (let i = offset, l = offset + count; i < l; i++) { + const tri = indirectBuffer ? indirectBuffer[i] : i; + const tri3 = tri * 3; + const boundsIndexOffset = (i - writeOffset) * 6; + let ai = tri3 + 0; + let bi = tri3 + 1; + let ci = tri3 + 2; + if (index) { + ai = index[ai]; + bi = index[bi]; + ci = index[ci]; + } + if (!normalized) { + ai = ai * stride + bufferOffset; + bi = bi * stride + bufferOffset; + ci = ci * stride + bufferOffset; + } + for (let el = 0; el < 3; el++) { + let a, b, c; + if (normalized) { + a = posAttr[getters[el]](ai); + b = posAttr[getters[el]](bi); + c = posAttr[getters[el]](ci); + } else { + a = posArr[ai + el]; + b = posArr[bi + el]; + c = posArr[ci + el]; + } + let min = a; + if (b < min) + min = b; + if (c < min) + min = c; + let max = a; + if (b > max) + max = b; + if (c > max) + max = c; + const halfExtents = (max - min) / 2; + const el2 = el * 2; + targetBuffer[boundsIndexOffset + el2 + 0] = min + halfExtents; + targetBuffer[boundsIndexOffset + el2 + 1] = halfExtents + (Math.abs(min) + halfExtents) * FLOAT32_EPSILON; + } + } + return targetBuffer; + } + raycastObject3D(object, raycaster, intersects2 = []) { + const { material } = object; + if (material === void 0) { + return; + } + _inverseMatrix.copy(object.matrixWorld).invert(); + _ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix); + _worldScale.setFromMatrixScale(object.matrixWorld); + _direction.copy(_ray.direction).multiply(_worldScale); + const scaleFactor = _direction.length(); + const near = raycaster.near / scaleFactor; + const far = raycaster.far / scaleFactor; + if (raycaster.firstHitOnly === true) { + let hit = this.raycastFirst(_ray, material, near, far); + hit = convertRaycastIntersect(hit, object, raycaster); + if (hit) { + intersects2.push(hit); + } + } else { + const hits = this.raycast(_ray, material, near, far); + for (let i = 0, l = hits.length; i < l; i++) { + const hit = convertRaycastIntersect(hits[i], object, raycaster); + if (hit) { + intersects2.push(hit); + } + } + } + return intersects2; + } + refit(nodeIndices = null) { + const refitFunc = this.indirect ? refit_indirect : refit; + return refitFunc(this, nodeIndices); + } + /* Core Cast Functions */ + raycast(ray, materialOrSide = FrontSide, near = 0, far = Infinity) { + const roots = this._roots; + const intersects2 = []; + const raycastFunc = this.indirect ? raycast_indirect : raycast; + for (let i = 0, l = roots.length; i < l; i++) { + raycastFunc(this, i, materialOrSide, ray, intersects2, near, far); + } + return intersects2; + } + raycastFirst(ray, materialOrSide = FrontSide, near = 0, far = Infinity) { + const roots = this._roots; + let closestResult = null; + const raycastFirstFunc = this.indirect ? raycastFirst_indirect : raycastFirst; + for (let i = 0, l = roots.length; i < l; i++) { + const result = raycastFirstFunc(this, i, materialOrSide, ray, near, far); + if (result != null && (closestResult == null || result.distance < closestResult.distance)) { + closestResult = result; + } + } + return closestResult; + } + intersectsGeometry(otherGeometry, geomToMesh) { + let result = false; + const roots = this._roots; + const intersectsGeometryFunc = this.indirect ? intersectsGeometry_indirect : intersectsGeometry; + for (let i = 0, l = roots.length; i < l; i++) { + result = intersectsGeometryFunc(this, i, otherGeometry, geomToMesh); + if (result) { + break; + } + } + return result; + } + shapecast(callbacks) { + const triangle3 = ExtendedTrianglePool.getPrimitive(); + const result = super.shapecast( + { + ...callbacks, + intersectsPrimitive: callbacks.intersectsTriangle, + scratchPrimitive: triangle3, + // TODO: is the performance significant enough for the added complexity here? + // can we just use one function? + iterate: this.indirect ? iterateOverTriangles_indirect : iterateOverTriangles + } + ); + ExtendedTrianglePool.releasePrimitive(triangle3); + return result; + } + bvhcast(otherBvh, matrixToLocal, callbacks) { + let { + intersectsRanges, + intersectsTriangles + } = callbacks; + const triangle1 = ExtendedTrianglePool.getPrimitive(); + const indexAttr1 = this.geometry.index; + const positionAttr1 = this.geometry.attributes.position; + const assignTriangle1 = this.indirect ? (i1) => { + const ti = this.resolveTriangleIndex(i1); + setTriangle(triangle1, ti * 3, indexAttr1, positionAttr1); + } : (i1) => { + setTriangle(triangle1, i1 * 3, indexAttr1, positionAttr1); + }; + const triangle22 = ExtendedTrianglePool.getPrimitive(); + const indexAttr2 = otherBvh.geometry.index; + const positionAttr2 = otherBvh.geometry.attributes.position; + const assignTriangle2 = otherBvh.indirect ? (i2) => { + const ti2 = otherBvh.resolveTriangleIndex(i2); + setTriangle(triangle22, ti2 * 3, indexAttr2, positionAttr2); + } : (i2) => { + setTriangle(triangle22, i2 * 3, indexAttr2, positionAttr2); + }; + if (intersectsTriangles) { + if (!(otherBvh instanceof MeshBVH)) { + throw new Error('MeshBVH: "intersectsTriangles" callback can only be used with another MeshBVH.'); + } + const iterateOverDoubleTriangles = (offset1, count1, offset2, count2, depth1, nodeIndex1, depth2, nodeIndex2) => { + for (let i2 = offset2, l2 = offset2 + count2; i2 < l2; i2++) { + assignTriangle2(i2); + triangle22.a.applyMatrix4(matrixToLocal); + triangle22.b.applyMatrix4(matrixToLocal); + triangle22.c.applyMatrix4(matrixToLocal); + triangle22.needsUpdate = true; + for (let i1 = offset1, l1 = offset1 + count1; i1 < l1; i1++) { + assignTriangle1(i1); + triangle1.needsUpdate = true; + if (intersectsTriangles(triangle1, triangle22, i1, i2, depth1, nodeIndex1, depth2, nodeIndex2)) { + return true; + } + } + } + return false; + }; + if (intersectsRanges) { + const originalIntersectsRanges = intersectsRanges; + intersectsRanges = function(offset1, count1, offset2, count2, depth1, nodeIndex1, depth2, nodeIndex2) { + if (!originalIntersectsRanges(offset1, count1, offset2, count2, depth1, nodeIndex1, depth2, nodeIndex2)) { + return iterateOverDoubleTriangles(offset1, count1, offset2, count2, depth1, nodeIndex1, depth2, nodeIndex2); + } + return true; + }; + } else { + intersectsRanges = iterateOverDoubleTriangles; + } + } + return super.bvhcast(otherBvh, matrixToLocal, { intersectsRanges }); + } + /* Derived Cast Functions */ + intersectsBox(box, boxToMesh) { + _obb.set(box.min, box.max, boxToMesh); + _obb.needsUpdate = true; + return this.shapecast( + { + intersectsBounds: (box2) => _obb.intersectsBox(box2), + intersectsTriangle: (tri) => _obb.intersectsTriangle(tri) + } + ); + } + intersectsSphere(sphere) { + return this.shapecast( + { + intersectsBounds: (box) => sphere.intersectsBox(box), + intersectsTriangle: (tri) => tri.intersectsSphere(sphere) + } + ); + } + closestPointToGeometry(otherGeometry, geometryToBvh, target1 = {}, target2 = {}, minThreshold = 0, maxThreshold = Infinity) { + const closestPointToGeometryFunc = this.indirect ? closestPointToGeometry_indirect : closestPointToGeometry; + return closestPointToGeometryFunc( + this, + otherGeometry, + geometryToBvh, + target1, + target2, + minThreshold, + maxThreshold + ); + } + closestPointToPoint(point, target = {}, minThreshold = 0, maxThreshold = Infinity) { + return closestPointToPoint( + this, + point, + target, + minThreshold, + maxThreshold + ); + } +} +const _raycastFunctions = { + "Mesh": Mesh.prototype.raycast, + "Line": Line.prototype.raycast, + "LineSegments": LineSegments.prototype.raycast, + "LineLoop": LineLoop.prototype.raycast, + "Points": Points.prototype.raycast, + "BatchedMesh": BatchedMesh.prototype.raycast +}; +const _mesh = /* @__PURE__ */ new Mesh(); +const _batchIntersects = []; +function acceleratedRaycast(raycaster, intersects2) { + if (this.isBatchedMesh) { + acceleratedBatchedMeshRaycast.call(this, raycaster, intersects2); + } else { + const { geometry } = this; + if (geometry.boundsTree) { + geometry.boundsTree.raycastObject3D(this, raycaster, intersects2); + } else { + let raycastFunction; + if (this instanceof Mesh) { + raycastFunction = _raycastFunctions.Mesh; + } else if (this instanceof LineSegments) { + raycastFunction = _raycastFunctions.LineSegments; + } else if (this instanceof LineLoop) { + raycastFunction = _raycastFunctions.LineLoop; + } else if (this instanceof Line) { + raycastFunction = _raycastFunctions.Line; + } else if (this instanceof Points) { + raycastFunction = _raycastFunctions.Points; + } else { + throw new Error("BVH: Fallback raycast function not found."); + } + raycastFunction.call(this, raycaster, intersects2); + } + } +} +function acceleratedBatchedMeshRaycast(raycaster, intersects2) { + if (this.boundsTrees) { + const boundsTrees = this.boundsTrees; + const drawInfo = this._drawInfo || this._instanceInfo; + const drawRanges = this._drawRanges || this._geometryInfo; + const matrixWorld = this.matrixWorld; + _mesh.material = this.material; + _mesh.geometry = this.geometry; + const oldBoundsTree = _mesh.geometry.boundsTree; + const oldDrawRange = _mesh.geometry.drawRange; + if (_mesh.geometry.boundingSphere === null) { + _mesh.geometry.boundingSphere = new Sphere(); + } + for (let i = 0, l = drawInfo.length; i < l; i++) { + if (!this.getVisibleAt(i)) { + continue; + } + const geometryId = drawInfo[i].geometryIndex; + _mesh.geometry.boundsTree = boundsTrees[geometryId]; + this.getMatrixAt(i, _mesh.matrixWorld).premultiply(matrixWorld); + if (!_mesh.geometry.boundsTree) { + this.getBoundingBoxAt(geometryId, _mesh.geometry.boundingBox); + this.getBoundingSphereAt(geometryId, _mesh.geometry.boundingSphere); + const drawRange = drawRanges[geometryId]; + _mesh.geometry.setDrawRange(drawRange.start, drawRange.count); + } + _mesh.raycast(raycaster, _batchIntersects); + for (let j = 0, l2 = _batchIntersects.length; j < l2; j++) { + const intersect = _batchIntersects[j]; + intersect.object = this; + intersect.batchId = i; + intersects2.push(intersect); + } + _batchIntersects.length = 0; + } + _mesh.geometry.boundsTree = oldBoundsTree; + _mesh.geometry.drawRange = oldDrawRange; + _mesh.material = null; + _mesh.geometry = null; + } else { + _raycastFunctions.BatchedMesh.call(this, raycaster, intersects2); + } +} +function computeBoundsTree(options = {}) { + const { type = MeshBVH } = options; + this.boundsTree = new type(this, options); + return this.boundsTree; +} +function disposeBoundsTree() { + this.boundsTree = null; +} +class PlanesUtils { + static containedInParallelPlanes(ps, point) { + let result = true; + for (const clipPlane of ps) { + const distance = clipPlane.distanceToPoint(point); + const isInFront = distance >= 0; + result = result && isInFront; + } + return result; + } + static collides(box, ps, included) { + for (const plane of ps) { + const distance = this.getPointDistance(plane, included, box); + if (distance < 0) { + return false; + } + } + return true; + } + static getPointDistance(plane, included, box) { + const normal = plane.normal; + for (const dim of this.dimensions) { + const isPositive = normal[dim] >= 0; + const isMax = isPositive !== included; + if (isMax) { + this.tempPoint[dim] = box.max[dim]; + } else { + this.tempPoint[dim] = box.min[dim]; + } + } + return plane.distanceToPoint(this.tempPoint); + } +} +__publicField(PlanesUtils, "tempPoint", new Vector3()); +__publicField(PlanesUtils, "dimensions", ["x", "y", "z"]); +class CameraUtils { + static transform(input, transform, result = new Frustum()) { + for (let i = 0; i < result.planes.length; i++) { + const resultPlane = result.planes[i]; + const inputPlane = input.planes[i]; + resultPlane.copy(inputPlane); + resultPlane.applyMatrix4(transform); + } + return result; + } + static isIncluded(box, ps) { + return PlanesUtils.collides(box, ps, true); + } + static collides(box, ps) { + return PlanesUtils.collides(box, ps, false); + } +} +function earcut$1(data, holeIndices, dim = 2) { + const hasHoles = holeIndices && holeIndices.length; + const outerLen = hasHoles ? holeIndices[0] * dim : data.length; + let outerNode = linkedList$1(data, 0, outerLen, dim, true); + const triangles = []; + if (!outerNode || outerNode.next === outerNode.prev) + return triangles; + let minX, minY, invSize; + if (hasHoles) + outerNode = eliminateHoles$1(data, holeIndices, outerNode, dim); + if (data.length > 80 * dim) { + minX = Infinity; + minY = Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + for (let i = dim; i < outerLen; i += dim) { + const x = data[i]; + const y = data[i + 1]; + if (x < minX) + minX = x; + if (y < minY) + minY = y; + if (x > maxX) + maxX = x; + if (y > maxY) + maxY = y; + } + invSize = Math.max(maxX - minX, maxY - minY); + invSize = invSize !== 0 ? 32767 / invSize : 0; + } + earcutLinked$1(outerNode, triangles, dim, minX, minY, invSize, 0); + return triangles; +} +function linkedList$1(data, start, end, dim, clockwise) { + let last; + if (clockwise === signedArea$1(data, start, end, dim) > 0) { + for (let i = start; i < end; i += dim) + last = insertNode$1(i / dim | 0, data[i], data[i + 1], last); + } else { + for (let i = end - dim; i >= start; i -= dim) + last = insertNode$1(i / dim | 0, data[i], data[i + 1], last); + } + if (last && equals$1(last, last.next)) { + removeNode$1(last); + last = last.next; + } + return last; +} +function filterPoints$1(start, end) { + if (!start) + return start; + if (!end) + end = start; + let p = start, again; + do { + again = false; + if (!p.steiner && (equals$1(p, p.next) || area$1(p.prev, p, p.next) === 0)) { + removeNode$1(p); + p = end = p.prev; + if (p === p.next) + break; + again = true; + } else { + p = p.next; + } + } while (again || p !== end); + return end; +} +function earcutLinked$1(ear, triangles, dim, minX, minY, invSize, pass) { + if (!ear) + return; + if (!pass && invSize) + indexCurve$1(ear, minX, minY, invSize); + let stop = ear; + while (ear.prev !== ear.next) { + const prev = ear.prev; + const next = ear.next; + if (invSize ? isEarHashed$1(ear, minX, minY, invSize) : isEar$1(ear)) { + triangles.push(prev.i, ear.i, next.i); + removeNode$1(ear); + ear = next.next; + stop = next.next; + continue; + } + ear = next; + if (ear === stop) { + if (!pass) { + earcutLinked$1(filterPoints$1(ear), triangles, dim, minX, minY, invSize, 1); + } else if (pass === 1) { + ear = cureLocalIntersections$1(filterPoints$1(ear), triangles); + earcutLinked$1(ear, triangles, dim, minX, minY, invSize, 2); + } else if (pass === 2) { + splitEarcut$1(ear, triangles, dim, minX, minY, invSize); + } + break; + } + } +} +function isEar$1(ear) { + const a = ear.prev, b = ear, c = ear.next; + if (area$1(a, b, c) >= 0) + return false; + const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y; + const x0 = Math.min(ax, bx, cx), y0 = Math.min(ay, by, cy), x1 = Math.max(ax, bx, cx), y1 = Math.max(ay, by, cy); + let p = c.next; + while (p !== a) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area$1(p.prev, p, p.next) >= 0) + return false; + p = p.next; + } + return true; +} +function isEarHashed$1(ear, minX, minY, invSize) { + const a = ear.prev, b = ear, c = ear.next; + if (area$1(a, b, c) >= 0) + return false; + const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y; + const x0 = Math.min(ax, bx, cx), y0 = Math.min(ay, by, cy), x1 = Math.max(ax, bx, cx), y1 = Math.max(ay, by, cy); + const minZ = zOrder$1(x0, y0, minX, minY, invSize), maxZ = zOrder$1(x1, y1, minX, minY, invSize); + let p = ear.prevZ, n = ear.nextZ; + while (p && p.z >= minZ && n && n.z <= maxZ) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area$1(p.prev, p, p.next) >= 0) + return false; + p = p.prevZ; + if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area$1(n.prev, n, n.next) >= 0) + return false; + n = n.nextZ; + } + while (p && p.z >= minZ) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area$1(p.prev, p, p.next) >= 0) + return false; + p = p.prevZ; + } + while (n && n.z <= maxZ) { + if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area$1(n.prev, n, n.next) >= 0) + return false; + n = n.nextZ; + } + return true; +} +function cureLocalIntersections$1(start, triangles) { + let p = start; + do { + const a = p.prev, b = p.next.next; + if (!equals$1(a, b) && intersects$1(a, p, p.next, b) && locallyInside$1(a, b) && locallyInside$1(b, a)) { + triangles.push(a.i, p.i, b.i); + removeNode$1(p); + removeNode$1(p.next); + p = start = b; + } + p = p.next; + } while (p !== start); + return filterPoints$1(p); +} +function splitEarcut$1(start, triangles, dim, minX, minY, invSize) { + let a = start; + do { + let b = a.next.next; + while (b !== a.prev) { + if (a.i !== b.i && isValidDiagonal$1(a, b)) { + let c = splitPolygon$1(a, b); + a = filterPoints$1(a, a.next); + c = filterPoints$1(c, c.next); + earcutLinked$1(a, triangles, dim, minX, minY, invSize, 0); + earcutLinked$1(c, triangles, dim, minX, minY, invSize, 0); + return; + } + b = b.next; + } + a = a.next; + } while (a !== start); +} +function eliminateHoles$1(data, holeIndices, outerNode, dim) { + const queue = []; + for (let i = 0, len = holeIndices.length; i < len; i++) { + const start = holeIndices[i] * dim; + const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length; + const list = linkedList$1(data, start, end, dim, false); + if (list === list.next) + list.steiner = true; + queue.push(getLeftmost$1(list)); + } + queue.sort(compareXYSlope); + for (let i = 0; i < queue.length; i++) { + outerNode = eliminateHole$1(queue[i], outerNode); + } + return outerNode; +} +function compareXYSlope(a, b) { + let result = a.x - b.x; + if (result === 0) { + result = a.y - b.y; + if (result === 0) { + const aSlope = (a.next.y - a.y) / (a.next.x - a.x); + const bSlope = (b.next.y - b.y) / (b.next.x - b.x); + result = aSlope - bSlope; + } + } + return result; +} +function eliminateHole$1(hole, outerNode) { + const bridge = findHoleBridge$1(hole, outerNode); + if (!bridge) { + return outerNode; + } + const bridgeReverse = splitPolygon$1(bridge, hole); + filterPoints$1(bridgeReverse, bridgeReverse.next); + return filterPoints$1(bridge, bridge.next); +} +function findHoleBridge$1(hole, outerNode) { + let p = outerNode; + const hx = hole.x; + const hy = hole.y; + let qx = -Infinity; + let m; + if (equals$1(hole, p)) + return p; + do { + if (equals$1(hole, p.next)) + return p.next; + else if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) { + const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y); + if (x <= hx && x > qx) { + qx = x; + m = p.x < p.next.x ? p : p.next; + if (x === hx) + return m; + } + } + p = p.next; + } while (p !== outerNode); + if (!m) + return null; + const stop = m; + const mx = m.x; + const my = m.y; + let tanMin = Infinity; + p = m; + do { + if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle$1(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) { + const tan = Math.abs(hy - p.y) / (hx - p.x); + if (locallyInside$1(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector$1(m, p)))) { + m = p; + tanMin = tan; + } + } + p = p.next; + } while (p !== stop); + return m; +} +function sectorContainsSector$1(m, p) { + return area$1(m.prev, m, p.prev) < 0 && area$1(p.next, m, m.next) < 0; +} +function indexCurve$1(start, minX, minY, invSize) { + let p = start; + do { + if (p.z === 0) + p.z = zOrder$1(p.x, p.y, minX, minY, invSize); + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + } while (p !== start); + p.prevZ.nextZ = null; + p.prevZ = null; + sortLinked$1(p); +} +function sortLinked$1(list) { + let numMerges; + let inSize = 1; + do { + let p = list; + let e; + list = null; + let tail = null; + numMerges = 0; + while (p) { + numMerges++; + let q = p; + let pSize = 0; + for (let i = 0; i < inSize; i++) { + pSize++; + q = q.nextZ; + if (!q) + break; + } + let qSize = inSize; + while (pSize > 0 || qSize > 0 && q) { + if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) { + e = p; + p = p.nextZ; + pSize--; + } else { + e = q; + q = q.nextZ; + qSize--; + } + if (tail) + tail.nextZ = e; + else + list = e; + e.prevZ = tail; + tail = e; + } + p = q; + } + tail.nextZ = null; + inSize *= 2; + } while (numMerges > 1); + return list; +} +function zOrder$1(x, y, minX, minY, invSize) { + x = (x - minX) * invSize | 0; + y = (y - minY) * invSize | 0; + x = (x | x << 8) & 16711935; + x = (x | x << 4) & 252645135; + x = (x | x << 2) & 858993459; + x = (x | x << 1) & 1431655765; + y = (y | y << 8) & 16711935; + y = (y | y << 4) & 252645135; + y = (y | y << 2) & 858993459; + y = (y | y << 1) & 1431655765; + return x | y << 1; +} +function getLeftmost$1(start) { + let p = start, leftmost = start; + do { + if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) + leftmost = p; + p = p.next; + } while (p !== start); + return leftmost; +} +function pointInTriangle$1(ax, ay, bx, by, cx, cy, px, py) { + return (cx - px) * (ay - py) >= (ax - px) * (cy - py) && (ax - px) * (by - py) >= (bx - px) * (ay - py) && (bx - px) * (cy - py) >= (cx - px) * (by - py); +} +function pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, px, py) { + return !(ax === px && ay === py) && pointInTriangle$1(ax, ay, bx, by, cx, cy, px, py); +} +function isValidDiagonal$1(a, b) { + return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon$1(a, b) && // dones't intersect other edges + (locallyInside$1(a, b) && locallyInside$1(b, a) && middleInside$1(a, b) && // locally visible + (area$1(a.prev, a, b.prev) || area$1(a, b.prev, b)) || // does not create opposite-facing sectors + equals$1(a, b) && area$1(a.prev, a, a.next) > 0 && area$1(b.prev, b, b.next) > 0); +} +function area$1(p, q, r) { + return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); +} +function equals$1(p1, p2) { + return p1.x === p2.x && p1.y === p2.y; +} +function intersects$1(p1, q1, p2, q2) { + const o1 = sign$1(area$1(p1, q1, p2)); + const o2 = sign$1(area$1(p1, q1, q2)); + const o3 = sign$1(area$1(p2, q2, p1)); + const o4 = sign$1(area$1(p2, q2, q1)); + if (o1 !== o2 && o3 !== o4) + return true; + if (o1 === 0 && onSegment$1(p1, p2, q1)) + return true; + if (o2 === 0 && onSegment$1(p1, q2, q1)) + return true; + if (o3 === 0 && onSegment$1(p2, p1, q2)) + return true; + if (o4 === 0 && onSegment$1(p2, q1, q2)) + return true; + return false; +} +function onSegment$1(p, q, r) { + return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y); +} +function sign$1(num) { + return num > 0 ? 1 : num < 0 ? -1 : 0; +} +function intersectsPolygon$1(a, b) { + let p = a; + do { + if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects$1(p, p.next, a, b)) + return true; + p = p.next; + } while (p !== a); + return false; +} +function locallyInside$1(a, b) { + return area$1(a.prev, a, a.next) < 0 ? area$1(a, b, a.next) >= 0 && area$1(a, a.prev, b) >= 0 : area$1(a, b, a.prev) < 0 || area$1(a, a.next, b) < 0; +} +function middleInside$1(a, b) { + let p = a; + let inside = false; + const px = (a.x + b.x) / 2; + const py = (a.y + b.y) / 2; + do { + if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) + inside = !inside; + p = p.next; + } while (p !== a); + return inside; +} +function splitPolygon$1(a, b) { + const a2 = createNode$1(a.i, a.x, a.y), b2 = createNode$1(b.i, b.x, b.y), an = a.next, bp = b.prev; + a.next = b; + b.prev = a; + a2.next = an; + an.prev = a2; + b2.next = a2; + a2.prev = b2; + bp.next = b2; + b2.prev = bp; + return b2; +} +function insertNode$1(i, x, y, last) { + const p = createNode$1(i, x, y); + if (!last) { + p.prev = p; + p.next = p; + } else { + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + } + return p; +} +function removeNode$1(p) { + p.next.prev = p.prev; + p.prev.next = p.next; + if (p.prevZ) + p.prevZ.nextZ = p.nextZ; + if (p.nextZ) + p.nextZ.prevZ = p.prevZ; +} +function createNode$1(i, x, y) { + return { + i, + // vertex index in coordinates array + x, + y, + // vertex coordinates + prev: null, + // previous and next vertex nodes in a polygon ring + next: null, + z: 0, + // z-order curve value + prevZ: null, + // previous and next nodes in z-order + nextZ: null, + steiner: false + // indicates whether this is a steiner point + }; +} +function signedArea$1(data, start, end, dim) { + let sum = 0; + for (let i = start, j = end - dim; i < end; i += dim) { + sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]); + j = i; + } + return sum; +} +class SectionGenerator { + constructor() { + __publicField(this, "_inverseMatrix", new Matrix4()); + __publicField(this, "_localPlane", new Plane()); + __publicField(this, "_tempLine", new Line3()); + __publicField(this, "_tempVector", new Vector3()); + __publicField(this, "_plane"); + __publicField(this, "_plane2DCoordinateSystem", new Matrix4()); + __publicField(this, "_precission", 1e4); + } + // Used if the plane is orthogonal to the cartesian planes + // private _planeAxis?: "x" | "y" | "z"; + get plane() { + if (!this._plane) { + throw new Error("Fragments: Plane not set"); + } + return this._plane; + } + set plane(plane) { + this._plane = plane; + } + // This assumes that the mesh that contains the posAttr is aligned with the current plane + createEdges(data) { + const { meshes, posAttr } = data; + let index = 0; + posAttr.array.fill(0); + const indexes = []; + let lastIndex = 0; + const tempMesh = new Mesh(); + for (const mesh of meshes) { + if (!mesh.geometry) { + continue; + } + if (!mesh.geometry.boundsTree) { + mesh.geometry.computeBoundsTree(); + } + if (!mesh.geometry.boundsTree) { + throw new Error( + "Fragments: Bounds tree not found for edges generation." + ); + } + if (mesh instanceof InstancedMesh) { + if (mesh.count === 0) { + continue; + } + const instanced = mesh; + for (let i = 0; i < instanced.count; i++) { + tempMesh.geometry = mesh.geometry; + tempMesh.matrix.copy(mesh.matrix); + const tempMatrix2 = new Matrix4(); + instanced.getMatrixAt(i, tempMatrix2); + tempMesh.applyMatrix4(tempMatrix2); + tempMesh.applyMatrix4(mesh.matrixWorld); + tempMesh.updateMatrix(); + tempMesh.updateMatrixWorld(); + this._inverseMatrix.copy(tempMesh.matrixWorld).invert(); + this._localPlane.copy(this.plane).applyMatrix4(this._inverseMatrix); + index = this.shapecast(tempMesh, posAttr, index); + if (index !== lastIndex) { + indexes.push(index); + lastIndex = index; + } + } + } else { + this._inverseMatrix.copy(mesh.matrixWorld).invert(); + this._localPlane.copy(this.plane).applyMatrix4(this._inverseMatrix); + index = this.shapecast(mesh, posAttr, index); + if (index !== lastIndex) { + indexes.push(index); + lastIndex = index; + } + } + } + return { indexes, index }; + } + createFills(buffer, trianglesIndices) { + this.updatePlane2DCoordinateSystem(); + const allIndices = []; + let currentTriangle = 0; + for (let i = 0; i < trianglesIndices.length; i++) { + const nextTriangle = trianglesIndices[i]; + const vertices = []; + for (let j = currentTriangle; j < nextTriangle; j += 2) { + vertices.push(j * 3); + } + const indices = this.computeFill(vertices, buffer); + for (const index of indices) { + allIndices.push(index); + } + currentTriangle = nextTriangle; + } + return allIndices; + } + computeFill(vertices, buffer) { + const indices = /* @__PURE__ */ new Map(); + const all2DVertices = {}; + const shapes = /* @__PURE__ */ new Map(); + let nextShapeID = 0; + const shapesEnds = /* @__PURE__ */ new Map(); + const shapesStarts = /* @__PURE__ */ new Map(); + const openShapes = /* @__PURE__ */ new Set(); + const p = this._precission; + for (let i = 0; i < vertices.length; i++) { + const startVertexIndex = vertices[i]; + let x1 = 0; + let y1 = 0; + let x2 = 0; + let y2 = 0; + const globalX1 = buffer[startVertexIndex]; + const globalY1 = buffer[startVertexIndex + 1]; + const globalZ1 = buffer[startVertexIndex + 2]; + const globalX2 = buffer[startVertexIndex + 3]; + const globalY2 = buffer[startVertexIndex + 4]; + const globalZ2 = buffer[startVertexIndex + 5]; + this._tempVector.set(globalX1, globalY1, globalZ1); + this._tempVector.applyMatrix4(this._plane2DCoordinateSystem); + x1 = Math.trunc(this._tempVector.x * p) / p; + y1 = Math.trunc(this._tempVector.y * p) / p; + this._tempVector.set(globalX2, globalY2, globalZ2); + this._tempVector.applyMatrix4(this._plane2DCoordinateSystem); + x2 = Math.trunc(this._tempVector.x * p) / p; + y2 = Math.trunc(this._tempVector.y * p) / p; + if (x1 === x2 && y1 === y2) { + continue; + } + const startCode = `${x1}|${y1}`; + const endCode = `${x2}|${y2}`; + if (!indices.has(startCode)) { + indices.set(startCode, startVertexIndex / 3); + } + if (!indices.has(endCode)) { + indices.set(endCode, startVertexIndex / 3 + 1); + } + const start = indices.get(startCode); + const end = indices.get(endCode); + all2DVertices[start] = [x1, y1]; + all2DVertices[end] = [x2, y2]; + const startMatchesStart = shapesStarts.has(start); + const startMatchesEnd = shapesEnds.has(start); + const endMatchesStart = shapesStarts.has(end); + const endMatchesEnd = shapesEnds.has(end); + const noMatches = !startMatchesStart && !startMatchesEnd && !endMatchesStart && !endMatchesEnd; + if (noMatches) { + shapesStarts.set(start, nextShapeID); + shapesEnds.set(end, nextShapeID); + openShapes.add(nextShapeID); + shapes.set(nextShapeID, [start, end]); + nextShapeID++; + } else if (startMatchesStart && endMatchesEnd) { + const startIndex = shapesStarts.get(start); + const endIndex = shapesEnds.get(end); + const isShapeMerge = startIndex !== endIndex; + if (isShapeMerge) { + const endShape = shapes.get(endIndex); + const startShape = shapes.get(startIndex); + if (!endShape || !startShape) { + continue; + } + shapes.delete(startIndex); + openShapes.delete(startIndex); + shapesEnds.set(startShape[startShape.length - 1], endIndex); + shapesEnds.delete(endShape[endShape.length - 1]); + for (const index of startShape) { + endShape.push(index); + } + } else { + openShapes.delete(endIndex); + } + shapesStarts.delete(start); + shapesEnds.delete(end); + } else if (startMatchesEnd && endMatchesStart) { + const startIndex = shapesStarts.get(end); + const endIndex = shapesEnds.get(start); + const isShapeMerge = startIndex !== endIndex; + if (isShapeMerge) { + const endShape = shapes.get(endIndex); + const startShape = shapes.get(startIndex); + if (!endShape || !startShape) { + continue; + } + shapes.delete(startIndex); + openShapes.delete(startIndex); + shapesEnds.set(startShape[startShape.length - 1], endIndex); + shapesEnds.delete(endShape[endShape.length - 1]); + for (const index of startShape) { + endShape.push(index); + } + } else { + openShapes.delete(endIndex); + } + shapesStarts.delete(end); + shapesEnds.delete(start); + } else if (startMatchesStart && endMatchesStart) { + const startIndex1 = shapesStarts.get(end); + const startIndex2 = shapesStarts.get(start); + const startShape2 = shapes.get(startIndex2); + const startShape1 = shapes.get(startIndex1); + if (!startShape2 || !startShape1) { + continue; + } + shapes.delete(startIndex1); + openShapes.delete(startIndex1); + shapesStarts.delete(startShape2[0]); + shapesStarts.delete(startShape1[0]); + shapesEnds.delete(startShape1[startShape1.length - 1]); + shapesStarts.set(startShape1[startShape1.length - 1], startIndex2); + startShape1.reverse(); + startShape2.splice(0, 0, ...startShape1); + } else if (startMatchesEnd && endMatchesEnd) { + const endIndex1 = shapesEnds.get(end); + const endIndex2 = shapesEnds.get(start); + const endShape2 = shapes.get(endIndex2); + const endShape1 = shapes.get(endIndex1); + if (!endShape2 || !endShape1) { + continue; + } + shapes.delete(endIndex1); + openShapes.delete(endIndex1); + shapesEnds.delete(endShape2[endShape2.length - 1]); + shapesEnds.delete(endShape1[endShape1.length - 1]); + shapesStarts.delete(endShape1[0]); + shapesEnds.set(endShape1[0], endIndex2); + endShape1.reverse(); + endShape2.push(...endShape1); + } else if (startMatchesStart) { + const shapeIndex = shapesStarts.get(start); + const shape = shapes.get(shapeIndex); + if (!shape) { + continue; + } + shape.unshift(end); + shapesStarts.delete(start); + shapesStarts.set(end, shapeIndex); + } else if (startMatchesEnd) { + const shapeIndex = shapesEnds.get(start); + const shape = shapes.get(shapeIndex); + if (!shape) { + continue; + } + shape.push(end); + shapesEnds.delete(start); + shapesEnds.set(end, shapeIndex); + } else if (endMatchesStart) { + const shapeIndex = shapesStarts.get(end); + const shape = shapes.get(shapeIndex); + if (!shape) { + continue; + } + shape.unshift(start); + shapesStarts.delete(end); + shapesStarts.set(start, shapeIndex); + } else if (endMatchesEnd) { + const shapeIndex = shapesEnds.get(end); + const shape = shapes.get(shapeIndex); + if (!shape) { + continue; + } + shape.push(start); + shapesEnds.delete(end); + shapesEnds.set(start, shapeIndex); + } + } + const trueIndices = []; + for (const [id, shape] of shapes) { + if (openShapes.has(id)) { + continue; + } + const vertices2 = []; + const indexMap = /* @__PURE__ */ new Map(); + let counter = 0; + for (const index of shape) { + const vertex = all2DVertices[index]; + vertices2.push(vertex[0], vertex[1]); + indexMap.set(counter++, index); + } + const result = earcut$1(vertices2); + for (const index of result) { + const trueIndex = indexMap.get(index); + if (trueIndex === void 0) { + throw new Error("Fragments: Map error!"); + } + trueIndices.push(trueIndex); + } + } + return trueIndices; + } + updatePlane2DCoordinateSystem() { + this._plane2DCoordinateSystem = new Matrix4(); + const zAxis = this.plane.normal; + const pos = new Vector3(); + this.plane.coplanarPoint(pos); + let xAxis; + let yAxis; + if (Math.abs(zAxis.z) > 0.99) { + xAxis = new Vector3(1, 0, 0); + yAxis = new Vector3(0, 1, 0); + } else if (Math.abs(zAxis.x) > 0.99) { + xAxis = new Vector3(0, 1, 0); + yAxis = new Vector3(0, 0, 1); + } else if (Math.abs(zAxis.y) > 0.99) { + xAxis = new Vector3(1, 0, 0); + yAxis = new Vector3(0, 0, 1); + } else { + const tempVector = Math.abs(zAxis.x) < 0.5 ? new Vector3(1, 0, 0) : new Vector3(0, 1, 0); + xAxis = new Vector3(); + xAxis.crossVectors(tempVector, zAxis).normalize(); + yAxis = new Vector3(); + yAxis.crossVectors(zAxis, xAxis).normalize(); + } + this._plane2DCoordinateSystem.fromArray([ + xAxis.x, + xAxis.y, + xAxis.z, + 0, + yAxis.x, + yAxis.y, + yAxis.z, + 0, + zAxis.x, + zAxis.y, + zAxis.z, + 0, + pos.x, + pos.y, + pos.z, + 1 + ]); + this._plane2DCoordinateSystem.invert(); + } + shapecast(mesh, posAttr, index) { + mesh.geometry.boundsTree.shapecast({ + intersectsBounds: (box) => { + return this._localPlane.intersectsBox(box); + }, + // @ts-ignore + intersectsTriangle: (tri) => { + let count = 0; + this._tempLine.start.copy(tri.a); + this._tempLine.end.copy(tri.b); + if (this._localPlane.intersectLine(this._tempLine, this._tempVector)) { + const result = this._tempVector.applyMatrix4(mesh.matrixWorld); + posAttr.setXYZ(index, result.x, result.y, result.z); + count++; + index++; + } + this._tempLine.start.copy(tri.b); + this._tempLine.end.copy(tri.c); + if (this._localPlane.intersectLine(this._tempLine, this._tempVector)) { + const result = this._tempVector.applyMatrix4(mesh.matrixWorld); + posAttr.setXYZ(index, result.x, result.y, result.z); + count++; + index++; + } + this._tempLine.start.copy(tri.c); + this._tempLine.end.copy(tri.a); + if (this._localPlane.intersectLine(this._tempLine, this._tempVector)) { + const result = this._tempVector.applyMatrix4(mesh.matrixWorld); + posAttr.setXYZ(index, result.x, result.y, result.z); + count++; + index++; + } + if (count !== 2) { + index -= count; + } + } + }); + return index; + } +} +class Attribute { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsAttribute(bb, obj) { + return (obj || new Attribute()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsAttribute(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new Attribute()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + data(index, optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; + } + dataLength() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + static startAttribute(builder) { + builder.startObject(1); + } + static addData(builder, dataOffset) { + builder.addFieldOffset(0, dataOffset, 0); + } + static createDataVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startDataVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static endAttribute(builder) { + const offset = builder.endObject(); + builder.requiredField(offset, 4); + return offset; + } + static createAttribute(builder, dataOffset) { + Attribute.startAttribute(builder); + Attribute.addData(builder, dataOffset); + return Attribute.endAttribute(builder); + } +} +class FloatVector { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + x() { + return this.bb.readFloat32(this.bb_pos); + } + mutate_x(value) { + this.bb.writeFloat32(this.bb_pos + 0, value); + return true; + } + y() { + return this.bb.readFloat32(this.bb_pos + 4); + } + mutate_y(value) { + this.bb.writeFloat32(this.bb_pos + 4, value); + return true; + } + z() { + return this.bb.readFloat32(this.bb_pos + 8); + } + mutate_z(value) { + this.bb.writeFloat32(this.bb_pos + 8, value); + return true; + } + static sizeOf() { + return 12; + } + static createFloatVector(builder, x, y, z) { + builder.prep(4, 12); + builder.writeFloat32(z); + builder.writeFloat32(y); + builder.writeFloat32(x); + return builder.offset(); + } +} +class CircleCurve { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + aperture() { + return this.bb.readFloat32(this.bb_pos); + } + mutate_aperture(value) { + this.bb.writeFloat32(this.bb_pos + 0, value); + return true; + } + position(obj) { + return (obj || new FloatVector()).__init(this.bb_pos + 4, this.bb); + } + radius() { + return this.bb.readFloat32(this.bb_pos + 16); + } + mutate_radius(value) { + this.bb.writeFloat32(this.bb_pos + 16, value); + return true; + } + xDirection(obj) { + return (obj || new FloatVector()).__init(this.bb_pos + 20, this.bb); + } + yDirection(obj) { + return (obj || new FloatVector()).__init(this.bb_pos + 32, this.bb); + } + static sizeOf() { + return 44; + } + static createCircleCurve(builder, aperture, position_x, position_y, position_z, radius, x_direction_x, x_direction_y, x_direction_z, y_direction_x, y_direction_y, y_direction_z) { + builder.prep(4, 44); + builder.prep(4, 12); + builder.writeFloat32(y_direction_z); + builder.writeFloat32(y_direction_y); + builder.writeFloat32(y_direction_x); + builder.prep(4, 12); + builder.writeFloat32(x_direction_z); + builder.writeFloat32(x_direction_y); + builder.writeFloat32(x_direction_x); + builder.writeFloat32(radius); + builder.prep(4, 12); + builder.writeFloat32(position_z); + builder.writeFloat32(position_y); + builder.writeFloat32(position_x); + builder.writeFloat32(aperture); + return builder.offset(); + } +} +class Wire { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + p1(obj) { + return (obj || new FloatVector()).__init(this.bb_pos, this.bb); + } + p2(obj) { + return (obj || new FloatVector()).__init(this.bb_pos + 12, this.bb); + } + static sizeOf() { + return 24; + } + static createWire(builder, p1_x, p1_y, p1_z, p2_x, p2_y, p2_z) { + builder.prep(4, 24); + builder.prep(4, 12); + builder.writeFloat32(p2_z); + builder.writeFloat32(p2_y); + builder.writeFloat32(p2_x); + builder.prep(4, 12); + builder.writeFloat32(p1_z); + builder.writeFloat32(p1_y); + builder.writeFloat32(p1_x); + return builder.offset(); + } +} +class WireSet { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsWireSet(bb, obj) { + return (obj || new WireSet()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsWireSet(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new WireSet()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + ps(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? (obj || new FloatVector()).__init(this.bb.__vector(this.bb_pos + offset) + index * 12, this.bb) : null; + } + psLength() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + static startWireSet(builder) { + builder.startObject(1); + } + static addPs(builder, psOffset) { + builder.addFieldOffset(0, psOffset, 0); + } + static startPsVector(builder, numElems) { + builder.startVector(12, numElems, 4); + } + static endWireSet(builder) { + const offset = builder.endObject(); + return offset; + } + static createWireSet(builder, psOffset) { + WireSet.startWireSet(builder); + WireSet.addPs(builder, psOffset); + return WireSet.endWireSet(builder); + } +} +class Axis { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsAxis(bb, obj) { + return (obj || new Axis()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsAxis(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new Axis()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + wires(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? (obj || new Wire()).__init(this.bb.__vector(this.bb_pos + offset) + index * 24, this.bb) : null; + } + wiresLength() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + order(index) { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + orderLength() { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + orderArray() { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + parts(index) { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? this.bb.readInt8(this.bb.__vector(this.bb_pos + offset) + index) : 0; + } + partsLength() { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + partsArray() { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? new Int8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + wireSets(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 10); + return offset ? (obj || new WireSet()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + wireSetsLength() { + const offset = this.bb.__offset(this.bb_pos, 10); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + circleCurves(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? (obj || new CircleCurve()).__init(this.bb.__vector(this.bb_pos + offset) + index * 44, this.bb) : null; + } + circleCurvesLength() { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + static startAxis(builder) { + builder.startObject(5); + } + static addWires(builder, wiresOffset) { + builder.addFieldOffset(0, wiresOffset, 0); + } + static startWiresVector(builder, numElems) { + builder.startVector(24, numElems, 4); + } + static addOrder(builder, orderOffset) { + builder.addFieldOffset(1, orderOffset, 0); + } + static createOrderVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startOrderVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addParts(builder, partsOffset) { + builder.addFieldOffset(2, partsOffset, 0); + } + static createPartsVector(builder, data) { + builder.startVector(1, data.length, 1); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt8(data[i]); + } + return builder.endVector(); + } + static startPartsVector(builder, numElems) { + builder.startVector(1, numElems, 1); + } + static addWireSets(builder, wireSetsOffset) { + builder.addFieldOffset(3, wireSetsOffset, 0); + } + static createWireSetsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startWireSetsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addCircleCurves(builder, circleCurvesOffset) { + builder.addFieldOffset(4, circleCurvesOffset, 0); + } + static startCircleCurvesVector(builder, numElems) { + builder.startVector(44, numElems, 4); + } + static endAxis(builder) { + const offset = builder.endObject(); + builder.requiredField(offset, 4); + builder.requiredField(offset, 6); + builder.requiredField(offset, 8); + builder.requiredField(offset, 10); + builder.requiredField(offset, 12); + return offset; + } + static createAxis(builder, wiresOffset, orderOffset, partsOffset, wireSetsOffset, circleCurvesOffset) { + Axis.startAxis(builder); + Axis.addWires(builder, wiresOffset); + Axis.addOrder(builder, orderOffset); + Axis.addParts(builder, partsOffset); + Axis.addWireSets(builder, wireSetsOffset); + Axis.addCircleCurves(builder, circleCurvesOffset); + return Axis.endAxis(builder); + } +} +var AxisPartClass = /* @__PURE__ */ ((AxisPartClass2) => { + AxisPartClass2[AxisPartClass2["NONE"] = 0] = "NONE"; + AxisPartClass2[AxisPartClass2["WIRE"] = 1] = "WIRE"; + AxisPartClass2[AxisPartClass2["WIRE_SET"] = 2] = "WIRE_SET"; + AxisPartClass2[AxisPartClass2["CIRCLE_CURVE"] = 3] = "CIRCLE_CURVE"; + return AxisPartClass2; +})(AxisPartClass || {}); +class BigShellHole { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsBigShellHole(bb, obj) { + return (obj || new BigShellHole()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsBigShellHole(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new BigShellHole()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + indices(index) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + indicesLength() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + indicesArray() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + profileId() { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.readUint16(this.bb_pos + offset) : 0; + } + mutate_profile_id(value) { + const offset = this.bb.__offset(this.bb_pos, 6); + if (offset === 0) { + return false; + } + this.bb.writeUint16(this.bb_pos + offset, value); + return true; + } + static startBigShellHole(builder) { + builder.startObject(2); + } + static addIndices(builder, indicesOffset) { + builder.addFieldOffset(0, indicesOffset, 0); + } + static createIndicesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startIndicesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addProfileId(builder, profileId) { + builder.addFieldInt16(1, profileId, 0); + } + static endBigShellHole(builder) { + const offset = builder.endObject(); + builder.requiredField(offset, 4); + return offset; + } + static createBigShellHole(builder, indicesOffset, profileId) { + BigShellHole.startBigShellHole(builder); + BigShellHole.addIndices(builder, indicesOffset); + BigShellHole.addProfileId(builder, profileId); + return BigShellHole.endBigShellHole(builder); + } +} +class BigShellProfile { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsBigShellProfile(bb, obj) { + return (obj || new BigShellProfile()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsBigShellProfile(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new BigShellProfile()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + indices(index) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + indicesLength() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + indicesArray() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + static startBigShellProfile(builder) { + builder.startObject(1); + } + static addIndices(builder, indicesOffset) { + builder.addFieldOffset(0, indicesOffset, 0); + } + static createIndicesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startIndicesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static endBigShellProfile(builder) { + const offset = builder.endObject(); + builder.requiredField(offset, 4); + return offset; + } + static createBigShellProfile(builder, indicesOffset) { + BigShellProfile.startBigShellProfile(builder); + BigShellProfile.addIndices(builder, indicesOffset); + return BigShellProfile.endBigShellProfile(builder); + } +} +class BoundingBox { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + min(obj) { + return (obj || new FloatVector()).__init(this.bb_pos, this.bb); + } + max(obj) { + return (obj || new FloatVector()).__init(this.bb_pos + 12, this.bb); + } + static sizeOf() { + return 24; + } + static createBoundingBox(builder, min_x, min_y, min_z, max_x, max_y, max_z) { + builder.prep(4, 24); + builder.prep(4, 12); + builder.writeFloat32(max_z); + builder.writeFloat32(max_y); + builder.writeFloat32(max_x); + builder.prep(4, 12); + builder.writeFloat32(min_z); + builder.writeFloat32(min_y); + builder.writeFloat32(min_x); + return builder.offset(); + } +} +class CircleExtrusion { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsCircleExtrusion(bb, obj) { + return (obj || new CircleExtrusion()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsCircleExtrusion(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new CircleExtrusion()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + radius(index) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.readFloat64(this.bb.__vector(this.bb_pos + offset) + index * 8) : 0; + } + radiusLength() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + radiusArray() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? new Float64Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + axes(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? (obj || new Axis()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + axesLength() { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + static startCircleExtrusion(builder) { + builder.startObject(2); + } + static addRadius(builder, radiusOffset) { + builder.addFieldOffset(0, radiusOffset, 0); + } + static createRadiusVector(builder, data) { + builder.startVector(8, data.length, 8); + for (let i = data.length - 1; i >= 0; i--) { + builder.addFloat64(data[i]); + } + return builder.endVector(); + } + static startRadiusVector(builder, numElems) { + builder.startVector(8, numElems, 8); + } + static addAxes(builder, axesOffset) { + builder.addFieldOffset(1, axesOffset, 0); + } + static createAxesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startAxesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static endCircleExtrusion(builder) { + const offset = builder.endObject(); + builder.requiredField(offset, 4); + builder.requiredField(offset, 6); + return offset; + } + static createCircleExtrusion(builder, radiusOffset, axesOffset) { + CircleExtrusion.startCircleExtrusion(builder); + CircleExtrusion.addRadius(builder, radiusOffset); + CircleExtrusion.addAxes(builder, axesOffset); + return CircleExtrusion.endCircleExtrusion(builder); + } +} +class DoubleVector { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + x() { + return this.bb.readFloat64(this.bb_pos); + } + mutate_x(value) { + this.bb.writeFloat64(this.bb_pos + 0, value); + return true; + } + y() { + return this.bb.readFloat64(this.bb_pos + 8); + } + mutate_y(value) { + this.bb.writeFloat64(this.bb_pos + 8, value); + return true; + } + z() { + return this.bb.readFloat64(this.bb_pos + 16); + } + mutate_z(value) { + this.bb.writeFloat64(this.bb_pos + 16, value); + return true; + } + static sizeOf() { + return 24; + } + static createDoubleVector(builder, x, y, z) { + builder.prep(8, 24); + builder.writeFloat64(z); + builder.writeFloat64(y); + builder.writeFloat64(x); + return builder.offset(); + } +} +class Material2 { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + r() { + return this.bb.readUint8(this.bb_pos); + } + mutate_r(value) { + this.bb.writeUint8(this.bb_pos + 0, value); + return true; + } + g() { + return this.bb.readUint8(this.bb_pos + 1); + } + mutate_g(value) { + this.bb.writeUint8(this.bb_pos + 1, value); + return true; + } + b() { + return this.bb.readUint8(this.bb_pos + 2); + } + mutate_b(value) { + this.bb.writeUint8(this.bb_pos + 2, value); + return true; + } + a() { + return this.bb.readUint8(this.bb_pos + 3); + } + mutate_a(value) { + this.bb.writeUint8(this.bb_pos + 3, value); + return true; + } + renderedFaces() { + return this.bb.readInt8(this.bb_pos + 4); + } + mutate_rendered_faces(value) { + this.bb.writeInt8(this.bb_pos + 4, value); + return true; + } + stroke() { + return this.bb.readInt8(this.bb_pos + 5); + } + mutate_stroke(value) { + this.bb.writeInt8(this.bb_pos + 5, value); + return true; + } + static sizeOf() { + return 6; + } + static createMaterial(builder, r, g, b, a, rendered_faces, stroke) { + builder.prep(1, 6); + builder.writeInt8(stroke); + builder.writeInt8(rendered_faces); + builder.writeInt8(a); + builder.writeInt8(b); + builder.writeInt8(g); + builder.writeInt8(r); + return builder.offset(); + } +} +class Representation { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + id() { + return this.bb.readUint32(this.bb_pos); + } + mutate_id(value) { + this.bb.writeUint32(this.bb_pos + 0, value); + return true; + } + bbox(obj) { + return (obj || new BoundingBox()).__init(this.bb_pos + 4, this.bb); + } + representationClass() { + return this.bb.readInt8(this.bb_pos + 28); + } + mutate_representation_class(value) { + this.bb.writeInt8(this.bb_pos + 28, value); + return true; + } + static sizeOf() { + return 32; + } + static createRepresentation(builder, id, bbox_min_x, bbox_min_y, bbox_min_z, bbox_max_x, bbox_max_y, bbox_max_z, representation_class) { + builder.prep(4, 32); + builder.pad(3); + builder.writeInt8(representation_class); + builder.prep(4, 24); + builder.prep(4, 12); + builder.writeFloat32(bbox_max_z); + builder.writeFloat32(bbox_max_y); + builder.writeFloat32(bbox_max_x); + builder.prep(4, 12); + builder.writeFloat32(bbox_min_z); + builder.writeFloat32(bbox_min_y); + builder.writeFloat32(bbox_min_x); + builder.writeInt32(id); + return builder.offset(); + } +} +class Sample { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + item() { + return this.bb.readUint32(this.bb_pos); + } + mutate_item(value) { + this.bb.writeUint32(this.bb_pos + 0, value); + return true; + } + material() { + return this.bb.readUint32(this.bb_pos + 4); + } + mutate_material(value) { + this.bb.writeUint32(this.bb_pos + 4, value); + return true; + } + representation() { + return this.bb.readUint32(this.bb_pos + 8); + } + mutate_representation(value) { + this.bb.writeUint32(this.bb_pos + 8, value); + return true; + } + localTransform() { + return this.bb.readUint32(this.bb_pos + 12); + } + mutate_local_transform(value) { + this.bb.writeUint32(this.bb_pos + 12, value); + return true; + } + static sizeOf() { + return 16; + } + static createSample(builder, item, material, representation, local_transform) { + builder.prep(4, 16); + builder.writeInt32(local_transform); + builder.writeInt32(representation); + builder.writeInt32(material); + builder.writeInt32(item); + return builder.offset(); + } +} +class ShellHole { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsShellHole(bb, obj) { + return (obj || new ShellHole()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsShellHole(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new ShellHole()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + indices(index) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.readUint16(this.bb.__vector(this.bb_pos + offset) + index * 2) : 0; + } + indicesLength() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + indicesArray() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? new Uint16Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + profileId() { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.readUint16(this.bb_pos + offset) : 0; + } + mutate_profile_id(value) { + const offset = this.bb.__offset(this.bb_pos, 6); + if (offset === 0) { + return false; + } + this.bb.writeUint16(this.bb_pos + offset, value); + return true; + } + static startShellHole(builder) { + builder.startObject(2); + } + static addIndices(builder, indicesOffset) { + builder.addFieldOffset(0, indicesOffset, 0); + } + static createIndicesVector(builder, data) { + builder.startVector(2, data.length, 2); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt16(data[i]); + } + return builder.endVector(); + } + static startIndicesVector(builder, numElems) { + builder.startVector(2, numElems, 2); + } + static addProfileId(builder, profileId) { + builder.addFieldInt16(1, profileId, 0); + } + static endShellHole(builder) { + const offset = builder.endObject(); + builder.requiredField(offset, 4); + return offset; + } + static createShellHole(builder, indicesOffset, profileId) { + ShellHole.startShellHole(builder); + ShellHole.addIndices(builder, indicesOffset); + ShellHole.addProfileId(builder, profileId); + return ShellHole.endShellHole(builder); + } +} +class ShellProfile { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsShellProfile(bb, obj) { + return (obj || new ShellProfile()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsShellProfile(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new ShellProfile()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + indices(index) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.readUint16(this.bb.__vector(this.bb_pos + offset) + index * 2) : 0; + } + indicesLength() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + indicesArray() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? new Uint16Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + static startShellProfile(builder) { + builder.startObject(1); + } + static addIndices(builder, indicesOffset) { + builder.addFieldOffset(0, indicesOffset, 0); + } + static createIndicesVector(builder, data) { + builder.startVector(2, data.length, 2); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt16(data[i]); + } + return builder.endVector(); + } + static startIndicesVector(builder, numElems) { + builder.startVector(2, numElems, 2); + } + static endShellProfile(builder) { + const offset = builder.endObject(); + builder.requiredField(offset, 4); + return offset; + } + static createShellProfile(builder, indicesOffset) { + ShellProfile.startShellProfile(builder); + ShellProfile.addIndices(builder, indicesOffset); + return ShellProfile.endShellProfile(builder); + } +} +var ShellType = /* @__PURE__ */ ((ShellType2) => { + ShellType2[ShellType2["NONE"] = 0] = "NONE"; + ShellType2[ShellType2["BIG"] = 1] = "BIG"; + return ShellType2; +})(ShellType || {}); +class Shell { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsShell(bb, obj) { + return (obj || new Shell()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsShell(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new Shell()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + profiles(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? (obj || new ShellProfile()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + profilesLength() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + holes(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? (obj || new ShellHole()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + holesLength() { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + points(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? (obj || new FloatVector()).__init(this.bb.__vector(this.bb_pos + offset) + index * 12, this.bb) : null; + } + pointsLength() { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + bigProfiles(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 10); + return offset ? (obj || new BigShellProfile()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + bigProfilesLength() { + const offset = this.bb.__offset(this.bb_pos, 10); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + bigHoles(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? (obj || new BigShellHole()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + bigHolesLength() { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + type() { + const offset = this.bb.__offset(this.bb_pos, 14); + return offset ? this.bb.readInt8(this.bb_pos + offset) : ShellType.NONE; + } + mutate_type(value) { + const offset = this.bb.__offset(this.bb_pos, 14); + if (offset === 0) { + return false; + } + this.bb.writeInt8(this.bb_pos + offset, value); + return true; + } + profilesFaceIds(index) { + const offset = this.bb.__offset(this.bb_pos, 16); + return offset ? this.bb.readUint16(this.bb.__vector(this.bb_pos + offset) + index * 2) : 0; + } + profilesFaceIdsLength() { + const offset = this.bb.__offset(this.bb_pos, 16); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + profilesFaceIdsArray() { + const offset = this.bb.__offset(this.bb_pos, 16); + return offset ? new Uint16Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + static startShell(builder) { + builder.startObject(7); + } + static addProfiles(builder, profilesOffset) { + builder.addFieldOffset(0, profilesOffset, 0); + } + static createProfilesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startProfilesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addHoles(builder, holesOffset) { + builder.addFieldOffset(1, holesOffset, 0); + } + static createHolesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startHolesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addPoints(builder, pointsOffset) { + builder.addFieldOffset(2, pointsOffset, 0); + } + static startPointsVector(builder, numElems) { + builder.startVector(12, numElems, 4); + } + static addBigProfiles(builder, bigProfilesOffset) { + builder.addFieldOffset(3, bigProfilesOffset, 0); + } + static createBigProfilesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startBigProfilesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addBigHoles(builder, bigHolesOffset) { + builder.addFieldOffset(4, bigHolesOffset, 0); + } + static createBigHolesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startBigHolesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addType(builder, type) { + builder.addFieldInt8(5, type, ShellType.NONE); + } + static addProfilesFaceIds(builder, profilesFaceIdsOffset) { + builder.addFieldOffset(6, profilesFaceIdsOffset, 0); + } + static createProfilesFaceIdsVector(builder, data) { + builder.startVector(2, data.length, 2); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt16(data[i]); + } + return builder.endVector(); + } + static startProfilesFaceIdsVector(builder, numElems) { + builder.startVector(2, numElems, 2); + } + static endShell(builder) { + const offset = builder.endObject(); + builder.requiredField(offset, 4); + builder.requiredField(offset, 6); + builder.requiredField(offset, 8); + builder.requiredField(offset, 10); + builder.requiredField(offset, 12); + builder.requiredField(offset, 16); + return offset; + } + static createShell(builder, profilesOffset, holesOffset, pointsOffset, bigProfilesOffset, bigHolesOffset, type, profilesFaceIdsOffset) { + Shell.startShell(builder); + Shell.addProfiles(builder, profilesOffset); + Shell.addHoles(builder, holesOffset); + Shell.addPoints(builder, pointsOffset); + Shell.addBigProfiles(builder, bigProfilesOffset); + Shell.addBigHoles(builder, bigHolesOffset); + Shell.addType(builder, type); + Shell.addProfilesFaceIds(builder, profilesFaceIdsOffset); + return Shell.endShell(builder); + } +} +class Transform { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + position(obj) { + return (obj || new DoubleVector()).__init(this.bb_pos, this.bb); + } + xDirection(obj) { + return (obj || new FloatVector()).__init(this.bb_pos + 24, this.bb); + } + yDirection(obj) { + return (obj || new FloatVector()).__init(this.bb_pos + 36, this.bb); + } + static sizeOf() { + return 48; + } + static createTransform(builder, position_x, position_y, position_z, x_direction_x, x_direction_y, x_direction_z, y_direction_x, y_direction_y, y_direction_z) { + builder.prep(8, 48); + builder.prep(4, 12); + builder.writeFloat32(y_direction_z); + builder.writeFloat32(y_direction_y); + builder.writeFloat32(y_direction_x); + builder.prep(4, 12); + builder.writeFloat32(x_direction_z); + builder.writeFloat32(x_direction_y); + builder.writeFloat32(x_direction_x); + builder.prep(8, 24); + builder.writeFloat64(position_z); + builder.writeFloat64(position_y); + builder.writeFloat64(position_x); + return builder.offset(); + } +} +class Meshes { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsMeshes(bb, obj) { + return (obj || new Meshes()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsMeshes(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new Meshes()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + coordinates(obj) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? (obj || new Transform()).__init(this.bb_pos + offset, this.bb) : null; + } + meshesItems(index) { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + meshesItemsLength() { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + meshesItemsArray() { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + samples(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? (obj || new Sample()).__init(this.bb.__vector(this.bb_pos + offset) + index * 16, this.bb) : null; + } + samplesLength() { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + representations(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 10); + return offset ? (obj || new Representation()).__init(this.bb.__vector(this.bb_pos + offset) + index * 32, this.bb) : null; + } + representationsLength() { + const offset = this.bb.__offset(this.bb_pos, 10); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + materials(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? (obj || new Material2()).__init(this.bb.__vector(this.bb_pos + offset) + index * 6, this.bb) : null; + } + materialsLength() { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + circleExtrusions(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 14); + return offset ? (obj || new CircleExtrusion()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + circleExtrusionsLength() { + const offset = this.bb.__offset(this.bb_pos, 14); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + shells(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 16); + return offset ? (obj || new Shell()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + shellsLength() { + const offset = this.bb.__offset(this.bb_pos, 16); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + localTransforms(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 18); + return offset ? (obj || new Transform()).__init(this.bb.__vector(this.bb_pos + offset) + index * 48, this.bb) : null; + } + localTransformsLength() { + const offset = this.bb.__offset(this.bb_pos, 18); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + globalTransforms(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 20); + return offset ? (obj || new Transform()).__init(this.bb.__vector(this.bb_pos + offset) + index * 48, this.bb) : null; + } + globalTransformsLength() { + const offset = this.bb.__offset(this.bb_pos, 20); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + materialIds(index) { + const offset = this.bb.__offset(this.bb_pos, 22); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + materialIdsLength() { + const offset = this.bb.__offset(this.bb_pos, 22); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + materialIdsArray() { + const offset = this.bb.__offset(this.bb_pos, 22); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + representationIds(index) { + const offset = this.bb.__offset(this.bb_pos, 24); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + representationIdsLength() { + const offset = this.bb.__offset(this.bb_pos, 24); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + representationIdsArray() { + const offset = this.bb.__offset(this.bb_pos, 24); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + sampleIds(index) { + const offset = this.bb.__offset(this.bb_pos, 26); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + sampleIdsLength() { + const offset = this.bb.__offset(this.bb_pos, 26); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + sampleIdsArray() { + const offset = this.bb.__offset(this.bb_pos, 26); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + localTransformIds(index) { + const offset = this.bb.__offset(this.bb_pos, 28); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + localTransformIdsLength() { + const offset = this.bb.__offset(this.bb_pos, 28); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + localTransformIdsArray() { + const offset = this.bb.__offset(this.bb_pos, 28); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + globalTransformIds(index) { + const offset = this.bb.__offset(this.bb_pos, 30); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + globalTransformIdsLength() { + const offset = this.bb.__offset(this.bb_pos, 30); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + globalTransformIdsArray() { + const offset = this.bb.__offset(this.bb_pos, 30); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + static startMeshes(builder) { + builder.startObject(14); + } + static addCoordinates(builder, coordinatesOffset) { + builder.addFieldStruct(0, coordinatesOffset, 0); + } + static addMeshesItems(builder, meshesItemsOffset) { + builder.addFieldOffset(1, meshesItemsOffset, 0); + } + static createMeshesItemsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startMeshesItemsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addSamples(builder, samplesOffset) { + builder.addFieldOffset(2, samplesOffset, 0); + } + static startSamplesVector(builder, numElems) { + builder.startVector(16, numElems, 4); + } + static addRepresentations(builder, representationsOffset) { + builder.addFieldOffset(3, representationsOffset, 0); + } + static startRepresentationsVector(builder, numElems) { + builder.startVector(32, numElems, 4); + } + static addMaterials(builder, materialsOffset) { + builder.addFieldOffset(4, materialsOffset, 0); + } + static startMaterialsVector(builder, numElems) { + builder.startVector(6, numElems, 1); + } + static addCircleExtrusions(builder, circleExtrusionsOffset) { + builder.addFieldOffset(5, circleExtrusionsOffset, 0); + } + static createCircleExtrusionsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startCircleExtrusionsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addShells(builder, shellsOffset) { + builder.addFieldOffset(6, shellsOffset, 0); + } + static createShellsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startShellsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addLocalTransforms(builder, localTransformsOffset) { + builder.addFieldOffset(7, localTransformsOffset, 0); + } + static startLocalTransformsVector(builder, numElems) { + builder.startVector(48, numElems, 8); + } + static addGlobalTransforms(builder, globalTransformsOffset) { + builder.addFieldOffset(8, globalTransformsOffset, 0); + } + static startGlobalTransformsVector(builder, numElems) { + builder.startVector(48, numElems, 8); + } + static addMaterialIds(builder, materialIdsOffset) { + builder.addFieldOffset(9, materialIdsOffset, 0); + } + static createMaterialIdsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startMaterialIdsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addRepresentationIds(builder, representationIdsOffset) { + builder.addFieldOffset(10, representationIdsOffset, 0); + } + static createRepresentationIdsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startRepresentationIdsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addSampleIds(builder, sampleIdsOffset) { + builder.addFieldOffset(11, sampleIdsOffset, 0); + } + static createSampleIdsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startSampleIdsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addLocalTransformIds(builder, localTransformIdsOffset) { + builder.addFieldOffset(12, localTransformIdsOffset, 0); + } + static createLocalTransformIdsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startLocalTransformIdsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addGlobalTransformIds(builder, globalTransformIdsOffset) { + builder.addFieldOffset(13, globalTransformIdsOffset, 0); + } + static createGlobalTransformIdsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startGlobalTransformIdsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static endMeshes(builder) { + const offset = builder.endObject(); + builder.requiredField(offset, 4); + builder.requiredField(offset, 6); + builder.requiredField(offset, 8); + builder.requiredField(offset, 10); + builder.requiredField(offset, 12); + builder.requiredField(offset, 14); + builder.requiredField(offset, 16); + builder.requiredField(offset, 18); + builder.requiredField(offset, 20); + return offset; + } + static createMeshes(builder, coordinatesOffset, meshesItemsOffset, samplesOffset, representationsOffset, materialsOffset, circleExtrusionsOffset, shellsOffset, localTransformsOffset, globalTransformsOffset, materialIdsOffset, representationIdsOffset, sampleIdsOffset, localTransformIdsOffset, globalTransformIdsOffset) { + Meshes.startMeshes(builder); + Meshes.addCoordinates(builder, coordinatesOffset); + Meshes.addMeshesItems(builder, meshesItemsOffset); + Meshes.addSamples(builder, samplesOffset); + Meshes.addRepresentations(builder, representationsOffset); + Meshes.addMaterials(builder, materialsOffset); + Meshes.addCircleExtrusions(builder, circleExtrusionsOffset); + Meshes.addShells(builder, shellsOffset); + Meshes.addLocalTransforms(builder, localTransformsOffset); + Meshes.addGlobalTransforms(builder, globalTransformsOffset); + Meshes.addMaterialIds(builder, materialIdsOffset); + Meshes.addRepresentationIds(builder, representationIdsOffset); + Meshes.addSampleIds(builder, sampleIdsOffset); + Meshes.addLocalTransformIds(builder, localTransformIdsOffset); + Meshes.addGlobalTransformIds(builder, globalTransformIdsOffset); + return Meshes.endMeshes(builder); + } +} +class ModelIndex { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsModelIndex(bb, obj) { + return (obj || new ModelIndex()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsModelIndex(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new ModelIndex()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + name(optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null; + } + stringKeys(index, optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; + } + stringKeysLength() { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + numberKeys(index) { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + numberKeysLength() { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + numberKeysArray() { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + stringValues(index, optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 10); + return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; + } + stringValuesLength() { + const offset = this.bb.__offset(this.bb_pos, 10); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + numberValues(index) { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + numberValuesLength() { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + numberValuesArray() { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + end(index) { + const offset = this.bb.__offset(this.bb_pos, 14); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + endLength() { + const offset = this.bb.__offset(this.bb_pos, 14); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + endArray() { + const offset = this.bb.__offset(this.bb_pos, 14); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + start(index) { + const offset = this.bb.__offset(this.bb_pos, 16); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + startLength() { + const offset = this.bb.__offset(this.bb_pos, 16); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + startArray() { + const offset = this.bb.__offset(this.bb_pos, 16); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + static startModelIndex(builder) { + builder.startObject(7); + } + static addName(builder, nameOffset) { + builder.addFieldOffset(0, nameOffset, 0); + } + static addStringKeys(builder, stringKeysOffset) { + builder.addFieldOffset(1, stringKeysOffset, 0); + } + static createStringKeysVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startStringKeysVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addNumberKeys(builder, numberKeysOffset) { + builder.addFieldOffset(2, numberKeysOffset, 0); + } + static createNumberKeysVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startNumberKeysVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addStringValues(builder, stringValuesOffset) { + builder.addFieldOffset(3, stringValuesOffset, 0); + } + static createStringValuesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startStringValuesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addNumberValues(builder, numberValuesOffset) { + builder.addFieldOffset(4, numberValuesOffset, 0); + } + static createNumberValuesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startNumberValuesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addEnd(builder, endOffset) { + builder.addFieldOffset(5, endOffset, 0); + } + static createEndVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startEndVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addStart(builder, startOffset) { + builder.addFieldOffset(6, startOffset, 0); + } + static createStartVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startStartVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static endModelIndex(builder) { + const offset = builder.endObject(); + return offset; + } + static createModelIndex(builder, nameOffset, stringKeysOffset, numberKeysOffset, stringValuesOffset, numberValuesOffset, endOffset, startOffset) { + ModelIndex.startModelIndex(builder); + ModelIndex.addName(builder, nameOffset); + ModelIndex.addStringKeys(builder, stringKeysOffset); + ModelIndex.addNumberKeys(builder, numberKeysOffset); + ModelIndex.addStringValues(builder, stringValuesOffset); + ModelIndex.addNumberValues(builder, numberValuesOffset); + ModelIndex.addEnd(builder, endOffset); + ModelIndex.addStart(builder, startOffset); + return ModelIndex.endModelIndex(builder); + } +} +class Relation { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsRelation(bb, obj) { + return (obj || new Relation()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsRelation(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new Relation()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + data(index, optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; + } + dataLength() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + static startRelation(builder) { + builder.startObject(1); + } + static addData(builder, dataOffset) { + builder.addFieldOffset(0, dataOffset, 0); + } + static createDataVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startDataVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static endRelation(builder) { + const offset = builder.endObject(); + builder.requiredField(offset, 4); + return offset; + } + static createRelation(builder, dataOffset) { + Relation.startRelation(builder); + Relation.addData(builder, dataOffset); + return Relation.endRelation(builder); + } +} +class SpatialStructure { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsSpatialStructure(bb, obj) { + return (obj || new SpatialStructure()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsSpatialStructure(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new SpatialStructure()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + localId() { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.readUint32(this.bb_pos + offset) : null; + } + mutate_local_id(value) { + const offset = this.bb.__offset(this.bb_pos, 4); + if (offset === 0) { + return false; + } + this.bb.writeUint32(this.bb_pos + offset, value); + return true; + } + category(optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null; + } + children(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? (obj || new SpatialStructure()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + childrenLength() { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + static startSpatialStructure(builder) { + builder.startObject(3); + } + static addLocalId(builder, localId) { + builder.addFieldInt32(0, localId, null); + } + static addCategory(builder, categoryOffset) { + builder.addFieldOffset(1, categoryOffset, 0); + } + static addChildren(builder, childrenOffset) { + builder.addFieldOffset(2, childrenOffset, 0); + } + static createChildrenVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startChildrenVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static endSpatialStructure(builder) { + const offset = builder.endObject(); + return offset; + } + static createSpatialStructure(builder, localId, categoryOffset, childrenOffset) { + SpatialStructure.startSpatialStructure(builder); + if (localId !== null) + SpatialStructure.addLocalId(builder, localId); + SpatialStructure.addCategory(builder, categoryOffset); + SpatialStructure.addChildren(builder, childrenOffset); + return SpatialStructure.endSpatialStructure(builder); + } +} +class Model { + constructor() { + __publicField(this, "bb", null); + __publicField(this, "bb_pos", 0); + } + __init(i, bb) { + this.bb_pos = i; + this.bb = bb; + return this; + } + static getRootAsModel(bb, obj) { + return (obj || new Model()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static getSizePrefixedRootAsModel(bb, obj) { + bb.setPosition(bb.position() + SIZE_PREFIX_LENGTH); + return (obj || new Model()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + static bufferHasIdentifier(bb) { + return bb.__has_identifier("0001"); + } + metadata(optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null; + } + guids(index, optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; + } + guidsLength() { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + guidsItems(index) { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + guidsItemsLength() { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + guidsItemsArray() { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + maxLocalId() { + const offset = this.bb.__offset(this.bb_pos, 10); + return offset ? this.bb.readUint32(this.bb_pos + offset) : 0; + } + mutate_max_local_id(value) { + const offset = this.bb.__offset(this.bb_pos, 10); + if (offset === 0) { + return false; + } + this.bb.writeUint32(this.bb_pos + offset, value); + return true; + } + localIds(index) { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? this.bb.readUint32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + localIdsLength() { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + localIdsArray() { + const offset = this.bb.__offset(this.bb_pos, 12); + return offset ? new Uint32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + categories(index, optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 14); + return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; + } + categoriesLength() { + const offset = this.bb.__offset(this.bb_pos, 14); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + meshes(obj) { + const offset = this.bb.__offset(this.bb_pos, 16); + return offset ? (obj || new Meshes()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null; + } + attributes(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 18); + return offset ? (obj || new Attribute()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + attributesLength() { + const offset = this.bb.__offset(this.bb_pos, 18); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + relations(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 20); + return offset ? (obj || new Relation()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + relationsLength() { + const offset = this.bb.__offset(this.bb_pos, 20); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + relationsItems(index) { + const offset = this.bb.__offset(this.bb_pos, 22); + return offset ? this.bb.readInt32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0; + } + relationsItemsLength() { + const offset = this.bb.__offset(this.bb_pos, 22); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + relationsItemsArray() { + const offset = this.bb.__offset(this.bb_pos, 22); + return offset ? new Int32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + guid(optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 24); + return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null; + } + spatialStructure(obj) { + const offset = this.bb.__offset(this.bb_pos, 26); + return offset ? (obj || new SpatialStructure()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null; + } + uniqueAttributes(index, optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 28); + return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; + } + uniqueAttributesLength() { + const offset = this.bb.__offset(this.bb_pos, 28); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + relationNames(index, optionalEncoding) { + const offset = this.bb.__offset(this.bb_pos, 30); + return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; + } + relationNamesLength() { + const offset = this.bb.__offset(this.bb_pos, 30); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + indexes(index, obj) { + const offset = this.bb.__offset(this.bb_pos, 32); + return offset ? (obj || new ModelIndex()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } + indexesLength() { + const offset = this.bb.__offset(this.bb_pos, 32); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + static startModel(builder) { + builder.startObject(15); + } + static addMetadata(builder, metadataOffset) { + builder.addFieldOffset(0, metadataOffset, 0); + } + static addGuids(builder, guidsOffset) { + builder.addFieldOffset(1, guidsOffset, 0); + } + static createGuidsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startGuidsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addGuidsItems(builder, guidsItemsOffset) { + builder.addFieldOffset(2, guidsItemsOffset, 0); + } + static createGuidsItemsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startGuidsItemsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addMaxLocalId(builder, maxLocalId) { + builder.addFieldInt32(3, maxLocalId, 0); + } + static addLocalIds(builder, localIdsOffset) { + builder.addFieldOffset(4, localIdsOffset, 0); + } + static createLocalIdsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startLocalIdsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addCategories(builder, categoriesOffset) { + builder.addFieldOffset(5, categoriesOffset, 0); + } + static createCategoriesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startCategoriesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addMeshes(builder, meshesOffset) { + builder.addFieldOffset(6, meshesOffset, 0); + } + static addAttributes(builder, attributesOffset) { + builder.addFieldOffset(7, attributesOffset, 0); + } + static createAttributesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startAttributesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addRelations(builder, relationsOffset) { + builder.addFieldOffset(8, relationsOffset, 0); + } + static createRelationsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startRelationsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addRelationsItems(builder, relationsItemsOffset) { + builder.addFieldOffset(9, relationsItemsOffset, 0); + } + static createRelationsItemsVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt32(data[i]); + } + return builder.endVector(); + } + static startRelationsItemsVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addGuid(builder, guidOffset) { + builder.addFieldOffset(10, guidOffset, 0); + } + static addSpatialStructure(builder, spatialStructureOffset) { + builder.addFieldOffset(11, spatialStructureOffset, 0); + } + static addUniqueAttributes(builder, uniqueAttributesOffset) { + builder.addFieldOffset(12, uniqueAttributesOffset, 0); + } + static createUniqueAttributesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startUniqueAttributesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addRelationNames(builder, relationNamesOffset) { + builder.addFieldOffset(13, relationNamesOffset, 0); + } + static createRelationNamesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startRelationNamesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static addIndexes(builder, indexesOffset) { + builder.addFieldOffset(14, indexesOffset, 0); + } + static createIndexesVector(builder, data) { + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + static startIndexesVector(builder, numElems) { + builder.startVector(4, numElems, 4); + } + static endModel(builder) { + const offset = builder.endObject(); + builder.requiredField(offset, 6); + builder.requiredField(offset, 8); + builder.requiredField(offset, 12); + builder.requiredField(offset, 14); + builder.requiredField(offset, 16); + builder.requiredField(offset, 24); + return offset; + } + static finishModelBuffer(builder, offset) { + builder.finish(offset, "0001"); + } + static finishSizePrefixedModelBuffer(builder, offset) { + builder.finish(offset, "0001", true); + } +} +var RenderedFaces = /* @__PURE__ */ ((RenderedFaces2) => { + RenderedFaces2[RenderedFaces2["ONE"] = 0] = "ONE"; + RenderedFaces2[RenderedFaces2["TWO"] = 1] = "TWO"; + return RenderedFaces2; +})(RenderedFaces || {}); +var RepresentationClass = /* @__PURE__ */ ((RepresentationClass2) => { + RepresentationClass2[RepresentationClass2["NONE"] = 0] = "NONE"; + RepresentationClass2[RepresentationClass2["SHELL"] = 1] = "SHELL"; + RepresentationClass2[RepresentationClass2["CIRCLE_EXTRUSION"] = 2] = "CIRCLE_EXTRUSION"; + return RepresentationClass2; +})(RepresentationClass || {}); +class CRCData { + constructor() { + __publicField(this, "int"); + __publicField(this, "float"); + __publicField(this, "buffer"); + __publicField(this, "s1", 4); + __publicField(this, "s2", 8); + const { intBuffer, floatBuffer, buffer } = this.newBuffers(); + this.int = intBuffer; + this.float = floatBuffer; + this.buffer = buffer; + } + newBuffers() { + const intBuffer = new Int32Array(1); + const data = intBuffer.buffer; + const floatBuffer = new Float32Array(data); + const buffer = new Uint8Array(data); + return { intBuffer, floatBuffer, buffer }; + } +} +class IntHelper { + static check(data) { + const isInteger = Number.isInteger(data); + const notOverflow = data < this._max; + const notUnderflow = data > this._min; + return isInteger && notOverflow && notUnderflow; + } +} +__publicField(IntHelper, "_max", 2147483647); +__publicField(IntHelper, "_min", -2147483648); +const _CRC = class _CRC { + constructor() { + __publicField(this, "_core", new CRCData()); + __publicField(this, "_handlers"); + __publicField(this, "_result", -1); + __publicField(this, "handleObject", (input) => { + const keys = Object.keys(input); + for (const key of keys) { + if (!input.hasOwnProperty(key)) { + continue; + } + this.compute(input[key]); + } + }); + __publicField(this, "handleString", (input) => { + const size = input.length; + for (let i = 0; i < size; ++i) { + const result = input.codePointAt(i); + this._core.int[0] = result; + this.update(); + } + }); + __publicField(this, "handleBoolean", (input) => { + if (input) { + this._core.int[0] = 1; + } else { + this._core.int[0] = 0; + } + this.update(); + }); + __publicField(this, "handleNumber", (input) => { + const isInt = IntHelper.check(input); + const target = isInt ? this._core.int : this._core.float; + target[0] = input; + this.update(); + }); + this._handlers = this.newHandlers(); + } + get value() { + return ~this._result; + } + fromMaterialData(data) { + const { + modelId, + objectClass, + currentLod, + templateId, + ...materialDefinition + } = data; + this.reset(); + this.compute(modelId); + this.compute(objectClass); + this.compute(materialDefinition); + this.compute(currentLod); + this.compute(templateId !== void 0); + } + generate(input) { + this.reset(); + for (const item of input) { + this.compute(item); + } + return this.value; + } + compute(input) { + const handler = this.getHandler(input); + handler(input); + return this; + } + reset() { + this._result = -1; + return this; + } + getHandler(input) { + const inputType = typeof input; + const handler = this._handlers[inputType]; + if (!handler) { + throw new Error("Fragments: Unsupported input type"); + } + return handler; + } + newHandlers() { + return { + number: this.handleNumber, + boolean: this.handleBoolean, + string: this.handleString, + object: this.handleObject + }; + } + update() { + for (let i = 0; i < this._core.s1; ++i) { + this._result ^= this._core.buffer[i]; + for (let j = 0; j < this._core.s2; ++j) { + if (this._result & 1) { + this._result = this._result >> 1 ^ _CRC._polynomial; + } else { + this._result >>= 1; + } + } + } + } +}; +__publicField(_CRC, "_polynomial", 2197175160); +let CRC = _CRC; +const _MultiBufferData = class _MultiBufferData { + constructor(size, firstElement) { + __publicField(this, "_first"); + this._first = this.newData(size, firstElement); + } + static getComplementary(data, callback) { + let past = 0; + const length = data.position.length; + past = this.makeBufferComplementary(length, data, past, callback); + if (past !== Infinity) { + callback(past, Infinity); + } + } + static get(data, positions, filter, callback) { + const { filtered, position, size } = this.getData(data, filter); + this.setAllBufferData(filtered, positions, position, size, callback); + return { position, size }; + } + fullOf(data) { + const followingItem = this._first.following; + const first = this._first.data; + const noFollowing = followingItem === null; + const sameData = first === data; + return noFollowing && sameData; + } + update(position, data) { + const input = this.getBufferData(position); + const isSame = input.data === data; + if (!isSame) { + const { a, c, b } = this.newBuffers(position, input, data); + this.setupInputData(input, a, c); + this.setupUpdateBuffers(a, b, c); + } + } + size(filter) { + let index = 0; + let data = this._first; + while (data !== null) { + const filterPass = this.doesFilterPass(filter, data); + if (filterPass) { + index++; + } + data = data.following; + } + return index; + } + static setAllBufferData(filtered, positions, position, size, callback) { + for (let i = 0; i < filtered.length; ++i) { + const input = filtered[i]; + this.transform(input, positions); + this.setBuffers(position, size, i); + if (callback) { + callback(i, input.data); + } + } + } + static makeBufferComplementary(length, data, past, callback) { + for (let i = 0; i < length; ++i) { + const input = this.getBuffers(data, i); + const { position, size } = input; + if (position > past) { + callback(past, position - past); + } + past = position + size; + } + return past; + } + static setBuffers(position, size, i) { + position[i] = this._tempData.position; + const isInf = this._tempData.size === Infinity; + if (isInf) { + size[i] = this._inf; + } else { + size[i] = this._tempData.size; + } + } + add(position, size, data) { + const stashExists = _MultiBufferData._stash.length; + if (!stashExists) { + return this.newData(size, data, position); + } + const stashed = _MultiBufferData._stash.pop(); + if (!stashed) { + throw new Error("Fragments: No stash found"); + } + stashed.position = position; + stashed.size = size; + stashed.data = data; + return stashed; + } + remove(data) { + if (data) { + data.following = null; + data.past = null; + _MultiBufferData._stash.push(data); + } + } + static getData(data, filter) { + const filtered = data.filter(filter); + const length = filtered.length; + const position = new Uint32Array(length); + const size = new Uint32Array(length); + return { filtered, position, size }; + } + filter(filter) { + const found = []; + let data = this._first; + while (data !== null) { + const filterPass = this.doesFilterPass(filter, data); + if (filterPass) { + found.push(data); + } + data = data.following; + } + return found; + } + static transform(input, positions) { + const result = this.getTempData(); + const finalPosition = input.position + input.size; + const isFinal = finalPosition === positions.length; + result.position = positions[input.position]; + if (isFinal) { + result.size = Infinity; + } else { + const total = positions[finalPosition]; + result.size = total - result.position; + } + return result; + } + static getBuffers(data, i) { + const position = data.position[i]; + const isInf = data.size[i] === this._inf; + let size; + if (isInf) { + size = Infinity; + } else { + size = data.size[i]; + } + return { position, size }; + } + static getTempData() { + if (!this._tempData) { + return { position: 0, size: 0 }; + } + return this._tempData; + } + doesFilterPass(filter, data) { + const noFilter = !filter; + const filterPass = noFilter || filter(data.data); + return filterPass; + } + setupUpdateBuffers(a, b, c) { + this.chainBuffers(a, b, c); + this.setupFirstBuffer(a, b); + this.setupLastBuffer(c, b); + this.setupMiddleBufferStart(b); + this.setupMiddleBufferEnd(b); + } + setupMiddleBufferEnd(b) { + var _a2; + if (((_a2 = b.following) == null ? void 0 : _a2.data) === b.data) { + if (!b.following) { + return; + } + const newSize = b.following.size + b.size; + const following = b.following.following; + b.size = newSize; + this.remove(b.following); + b.following = following; + if (b.following) { + b.following.past = b; + } + } + } + setupFirstBuffer(a, b) { + if (!a.size) { + if (a.past) { + a.past.following = b; + } else { + this._first = b; + } + b.past = a.past; + this.remove(a); + } + } + setupMiddleBufferStart(b) { + var _a2; + if (((_a2 = b.past) == null ? void 0 : _a2.data) === b.data) { + if (!b.past) { + return; + } + b.size = b.past.size + b.size; + b.position = b.past.position; + const past = b.past.past; + this.remove(b.past); + b.past = past; + if (b.past) { + b.past.following = b; + } else { + this._first = b; + } + } + } + chainBuffers(a, b, c) { + a.following = b; + b.past = a; + b.following = c; + c.past = b; + } + setupLastBuffer(c, b) { + if (!c.size) { + if (c.following) { + c.following.past = b; + } + b.following = c.following; + this.remove(c); + } + } + newBuffers(position, input, data) { + const aSize = position - input.position; + const a = this.add(input.position, aSize, input.data); + const b = this.add(position, 1, data); + const cSize = input.size - a.size - 1; + const c = this.add(position + 1, cSize, input.data); + return { a, c, b }; + } + setupInputData(input, a, c) { + if (input.past) { + input.past.following = a; + a.past = input.past; + } else { + this._first = a; + } + if (input.following) { + input.following.past = c; + c.following = input.following; + } + this.remove(input); + } + newData(size, data, position = 0) { + return { + position, + size, + past: null, + following: null, + data + }; + } + getBufferData(index) { + let found = this._first; + while (true) { + const notFound = found === null; + const lessThanIndex = found.position <= index; + const inScope = index < found.position + found.size; + const scoped = lessThanIndex && inScope; + if (notFound || scoped) { + return found; + } + found = found.following; + } + } +}; +__publicField(_MultiBufferData, "_stash", []); +__publicField(_MultiBufferData, "_tempData", { position: 0, size: 0 }); +__publicField(_MultiBufferData, "_inf", 4294967295); +let MultiBufferData = _MultiBufferData; +class MiscHelper { + static fixNumber(value) { + if (Number.isNaN(value)) { + return 0; + } + if (!Number.isFinite(value)) { + return 0; + } + return value; + } + static forEach(items, callback) { + if (Array.isArray(items)) { + let counter = 0; + for (const item of items) { + callback(item, counter++); + } + return; + } + callback(items, 0); + } +} +class BitUtils { + static check(data, id, config) { + const filter = this.get(config); + const currentData = data[id]; + const result = Boolean(currentData & filter); + return result; + } + static apply(data, id, config, value) { + const filter = this.get(config); + if (value) { + data[id] |= filter; + return; + } + data[id] &= ~filter; + } + static checkMemory(id) { + if (id > limitOf2Bytes) { + throw new Error("Fragments: Memory overflow!"); + } + } + static get(value) { + return 1 << value; + } +} +class ParserHelper { + static parseMaterial(material) { + const r = material.r() / 255; + const g = material.g() / 255; + const b = material.b() / 255; + const opacity = material.a() / 255; + const transparent = material.a() < 255; + const color = new Color().setRGB(r, g, b, SRGBColorSpace); + const renderedFaces = material.renderedFaces(); + return { + color, + renderedFaces, + opacity, + transparent, + localId: void 0 + }; + } + static parseBox(data, box) { + this.getBox(data, box, "min"); + this.getBox(data, box, "max"); + } + static parseTransform(transform, result) { + this.getVector(transform, "position", this._doubleVector); + this.getVector(transform, "xDirection", this._floatVector); + this.getVector(transform, "yDirection", this._floatVector); + this.computeZVector(); + this.setTransform(result); + return result; + } + static setTransform(result) { + const { x: xx, y: xy, z: xz } = this._temp.xDirection; + const { x: yx, y: yy, z: yz } = this._temp.yDirection; + const { x: zx, y: zy, z: zz } = this._temp.zDirection; + const { x: ox, y: oy, z: oz } = this._temp.position; + result.set( + xx, + yx, + zx, + ox, + xy, + yy, + zy, + oy, + xz, + yz, + zz, + oz, + 0, + 0, + 0, + 1 + ); + } + static getBox(data, box, point) { + data[point](this._floatVector); + const x = this._floatVector.x(); + const y = this._floatVector.y(); + const z = this._floatVector.z(); + box[point].x = MiscHelper.fixNumber(x); + box[point].y = MiscHelper.fixNumber(y); + box[point].z = MiscHelper.fixNumber(z); + } + static getVector(transform, name, vector) { + transform[name](vector); + const parsed = this._temp[name]; + const x = vector.x(); + const y = vector.y(); + const z = vector.z(); + parsed.x = MiscHelper.fixNumber(x); + parsed.y = MiscHelper.fixNumber(y); + parsed.z = MiscHelper.fixNumber(z); + } + static computeZVector() { + this._temp.zDirection.crossVectors( + this._temp.xDirection, + this._temp.yDirection + ); + } +} +__publicField(ParserHelper, "_temp", { + position: new Vector3(), + xDirection: new Vector3(), + yDirection: new Vector3(), + zDirection: new Vector3() +}); +__publicField(ParserHelper, "_doubleVector", new DoubleVector()); +__publicField(ParserHelper, "_floatVector", new FloatVector()); +const _TransformHelper = class _TransformHelper { + static get(sample, meshes, transform) { + this.fetchSampleTransform(sample, meshes); + this.fetchItemTransform(sample, meshes); + transform.multiplyMatrices(this._item, this._sample); + } + static getBox(representation, bbox) { + representation.bbox(this._box); + ParserHelper.parseBox(this._box, bbox); + } + static getBoxData(bbox) { + this._min.copy(bbox.min); + this._max.copy(bbox.max); + this._center.addVectors(this._min, this._max); + this._center.divideScalar(2); + bbox.getSize(this._distance); + } + static boxSize(bbox) { + this.getBoxData(bbox); + this.applyTransformer(); + this._edge.start = this._min.clone(); + this._edge.end = this._max.clone(); + return this._edge; + } + static applyTransformer() { + const { x, y, z } = this._distance; + const max = Math.max(x, y, z); + if (x === max) { + this._transformers.x(); + } else if (y === max) { + this._transformers.y(); + } else { + this._transformers.z(); + } + } + static fetchItemTransform(sample, meshes) { + const itemId = sample.item(); + meshes.globalTransforms(itemId, this._transform); + ParserHelper.parseTransform(this._transform, this._item); + } + static fetchSampleTransform(sample, meshes) { + const localTransformId = sample.localTransform(); + meshes.localTransforms(localTransformId, this._transform); + ParserHelper.parseTransform(this._transform, this._sample); + } + static setBoxZ() { + this._min.set(this._center.x, this._center.y, this._min.z); + this._max.set(this._center.x, this._center.y, this._max.z); + } + static setBoxY() { + this._min.set(this._center.x, this._min.y, this._center.z); + this._max.set(this._center.x, this._max.y, this._center.z); + } + static setBoxX() { + this._min.set(this._min.x, this._center.y, this._center.z); + this._max.set(this._max.x, this._center.y, this._center.z); + } +}; +__publicField(_TransformHelper, "_transform", new Transform()); +__publicField(_TransformHelper, "_min", new Vector3()); +__publicField(_TransformHelper, "_max", new Vector3()); +__publicField(_TransformHelper, "_center", new Vector3()); +__publicField(_TransformHelper, "_distance", new Vector3()); +__publicField(_TransformHelper, "_edge", new Line3()); +__publicField(_TransformHelper, "_item", new Matrix4()); +__publicField(_TransformHelper, "_sample", new Matrix4()); +__publicField(_TransformHelper, "_box", new BoundingBox()); +__publicField(_TransformHelper, "_transformers", { + x: () => _TransformHelper.setBoxX(), + y: () => _TransformHelper.setBoxY(), + z: () => _TransformHelper.setBoxZ() +}); +let TransformHelper = _TransformHelper; +class BoxUtils { + static getWidth(box) { + box.getSize(this._temp.vector); + if (this._temp.vector.x > this._temp.vector.y) { + this._temp.vector.set( + this._temp.vector.y, + this._temp.vector.x, + this._temp.vector.z + ); + } + if (this._temp.vector.y > this._temp.vector.z) { + this._temp.vector.set( + this._temp.vector.x, + this._temp.vector.z, + this._temp.vector.y + ); + } + if (this._temp.vector.x > this._temp.vector.y) { + this._temp.vector.set( + this._temp.vector.y, + this._temp.vector.x, + this._temp.vector.z + ); + } + return this._temp.vector.y; + } +} +__publicField(BoxUtils, "_temp", { + vector: new Vector3() +}); +class FaceUtils { + static getEarcutDimensions(normal) { + const absX = Math.abs(normal.x); + const absY = Math.abs(normal.y); + const absZ = Math.abs(normal.z); + const xDim = 0; + const yDim = 1; + const zDim = 2; + const isMostlyHorizontal = absZ >= absX && absZ >= absY; + if (isMostlyHorizontal) { + const lookingUp = normal.z > 0; + if (lookingUp) { + return [xDim, yDim]; + } + return [yDim, xDim]; + } + const isMostlyLookingToY = absY >= absX && absY >= absZ; + if (isMostlyLookingToY) { + const isLookingYPositive = normal.y > 0; + if (isLookingYPositive) { + return [zDim, xDim]; + } + return [xDim, zDim]; + } + const isLookingXPositive = normal.x > 0; + if (isLookingXPositive) { + return [yDim, zDim]; + } + return [zDim, yDim]; + } +} +class VirtualMeshManager { + constructor(modelId, meshes) { + __publicField(this, "meshes"); + __publicField(this, "_templateController", new VirtualTemplateController()); + __publicField(this, "_meshIds", /* @__PURE__ */ new Set()); + __publicField(this, "_idGenerator", new CRC()); + __publicField(this, "_modelCode"); + this.meshes = meshes; + this._modelCode = this.getModelCode(modelId); + } + dispose() { + VirtualMemoryController.delete(this._meshIds); + } + useMesh(id, mesh, lod) { + const code = this.meshCode(id, lod); + VirtualMemoryController.lockIn(mesh); + this._templateController.add(code, mesh); + } + getMesh(id, lod) { + const code = this.meshCode(id, lod); + const geometry = VirtualMemoryController.get(code); + return geometry ?? this._templateController.get(code); + } + saveMesh(id, mesh, lod) { + MiscHelper.forEach(mesh, VirtualMemoryController.updateMeshMemory); + const code = this.meshCode(id, lod); + VirtualMemoryController.add(code, mesh); + this._meshIds.add(code); + } + meshCode(index, lod) { + const code = this._modelCode; + const repr = this.getRepresentation(); + const data = [code, repr, lod, index]; + return this._idGenerator.generate(data); + } + getModelCode(modelId) { + return this._idGenerator.generate([modelId]); + } +} +const normalizationValue = 2 ** 15 - 1; +var LodClass = /* @__PURE__ */ ((LodClass2) => { + LodClass2[LodClass2["NONE"] = 0] = "NONE"; + LodClass2[LodClass2["AABB"] = 1] = "AABB"; + LodClass2[LodClass2["CUSTOM"] = 2] = "CUSTOM"; + return LodClass2; +})(LodClass || {}); +const _ShellUtils = class _ShellUtils { + static getProfile(shell, id, input) { + const isBigShell = shell.type() === ShellType.BIG; + if (isBigShell) { + return shell.bigProfiles(id, input); + } + return shell.profiles(id, input); + } + static getPoints(shell) { + const points = new Float32Array(shell.pointsLength() * 3); + for (let i = 0; i < shell.pointsLength(); i++) { + shell.points(i, this._tempPoint); + points[i * 3] = this._tempPoint.x(); + points[i * 3 + 1] = this._tempPoint.y(); + points[i * 3 + 2] = this._tempPoint.z(); + } + return points; + } + static getProfileIndices(shell, profileId) { + const isBigShell = shell.type() === ShellType.BIG; + const indices = { + outer: [], + inners: [] + }; + const length = isBigShell ? shell.bigHolesLength() : shell.holesLength(); + const holeId = isBigShell ? "bigHoles" : "holes"; + const profile = _ShellUtils.getProfile(shell, profileId); + indices.outer = Array.from(profile.indicesArray()); + for (let i = 0; i < length; i++) { + const hole = shell[holeId](i); + if (hole.profileId() === profileId) { + const currentIndices = Array.from(hole.indicesArray()); + indices.inners.push(currentIndices); + } + } + return indices; + } + static getHole(shell, id, input) { + const isBigShell = shell.type() === ShellType.BIG; + if (isBigShell) { + return shell.bigHoles(id, input); + } + return shell.holes(id, input); + } + static getProfilesLength(shell) { + if (shell.type() === ShellType.BIG) { + return shell.bigProfilesLength(); + } + return shell.profilesLength(); + } + static getHolesLength(shell) { + if (shell.type() === ShellType.BIG) { + return shell.bigHolesLength(); + } + return shell.holesLength(); + } + static getShell(meshes, id) { + return meshes.shells(id, this._shell); + } + static point(shell, id, result) { + if (shell instanceof Shell) { + shell.points(id, this._tempPoint); + } + const x = this._tempPoint.x(); + const y = this._tempPoint.y(); + const z = this._tempPoint.z(); + result.set(x, y, z); + } + static getNormalsOfShellProfile(shell, result) { + const count = _ShellUtils.getProfilesLength(shell); + for (let id = 0; id < count; id++) { + const profile = _ShellUtils.getProfile(shell, id); + const normals = this.fetchNormalsOfProfile(shell, profile); + result.push(normals); + } + return result; + } + static computeNormalsAvg(indices, faceId, faceNormals, pointsFaces) { + this.setupNormalBuffer(indices); + const profileNormal = faceNormals[faceId]; + for (let id = 0; id < indices.length; id++) { + const current = indices[id]; + const pointsByProfile = pointsFaces.get(current); + this.aggregateNormals(pointsByProfile, faceNormals, profileNormal); + this.computeAvgNormal(id); + } + return this._normalBuffer; + } + static getBuffer(shell) { + const data = shell.bb; + const distance = 8; + const shellOffset = data.__offset(shell.bb_pos, distance); + const length = shell.pointsLength() * 3; + const offset = data.__vector(shell.bb_pos + shellOffset); + const rawBytes = data.bytes(); + const rawBuffer = rawBytes.buffer; + return new Float32Array(rawBuffer, offset, length); + } + static getPointsShell(shell) { + this._pointsByProfile.clear(); + this.fetchAllPointsByProfile(shell); + _ShellUtils.fetchAllPointsByHole(shell); + return this._pointsByProfile; + } + static addNormals(pointsByProfile, faceNormals, profileNormal) { + for (const id of pointsByProfile) { + const normal = faceNormals[id]; + const dot = profileNormal.dot(normal); + const isValid = dot > this._faceThreshold; + if (!isValid) + continue; + this._tempNormal.add(normal); + } + } + static setupNormalBuffer(indices) { + const neededSize = indices.length * 3; + const currentSize = this._normalBuffer.length; + const insufficientSize = currentSize < neededSize; + if (insufficientSize) { + this._normalBuffer = new Int16Array(neededSize); + } + } + static fetchNormalsOfProfile(shell, profile) { + const length = profile.indicesLength(); + const tooSmall = this.isTooSmall(shell, length); + if (tooSmall) { + return new Vector3(1, 0, 0); + } + return this.computeProfileNormal(length, profile, shell); + } + static fetchAllPointsByHole(shell) { + const holesCount = _ShellUtils.getHolesLength(shell); + const hole = this.getTempHole(shell); + for (let holeId = 0; holeId < holesCount; holeId++) { + _ShellUtils.getHole(shell, holeId, hole); + const id = hole.profileId(); + const indicesCount = hole.indicesLength(); + for (let i = 0; i < indicesCount; i++) { + const index = hole.indices(i); + _ShellUtils.savePointByProfile(index, id); + } + } + } + static computeProfileNormal(length, profile, shell) { + this._v3.set(0, 0, 0); + for (let id = 0; id < length; id++) { + this.fetchPointsForNormal(id, length, profile, shell); + this.computeProfilePointNormal(); + } + const result = this._v3.clone(); + result.normalize(); + return result; + } + static computeProfilePointNormal() { + const dx = this._v1.x - this._v2.x; + const dy = this._v1.y - this._v2.y; + const dz = this._v1.z - this._v2.z; + const sumX = this._v1.x + this._v2.x; + const sumY = this._v1.y + this._v2.y; + const sumZ = this._v1.z + this._v2.z; + this._v3.x += dy * sumZ; + this._v3.y += dz * sumX; + this._v3.z += dx * sumY; + } + static aggregateNormals(pointsByProfile, faceNormals, profileNormal) { + this._tempNormal.set(0, 0, 0); + const isZero = !pointsByProfile || !pointsByProfile.length; + if (isZero) { + this._tempNormal.set(1, 0, 0); + return; + } + const isJustOne = pointsByProfile.length === 1; + if (isJustOne) { + const first = pointsByProfile[0]; + this._tempNormal = faceNormals[first].clone(); + return; + } + _ShellUtils.addNormals(pointsByProfile, faceNormals, profileNormal); + } + static fetchPointsForNormal(id, length, profile, shell) { + const next = id + 1; + const id2 = next % length; + const profile1 = profile.indices(id); + const profile2 = profile.indices(id2); + this.point(shell, profile1, this._v1); + this.point(shell, profile2, this._v2); + } + static savePointByProfile(index, id) { + if (!this._pointsByProfile.has(index)) { + this._pointsByProfile.set(index, []); + } + this._pointsByProfile.get(index).push(id); + } + static isTooSmall(shell, length) { + const notEnoughPoints = shell.pointsLength() <= 2; + const notEnoughIndices = length <= 2; + return notEnoughPoints || notEnoughIndices; + } + static fetchAllPointsByProfile(shell) { + const count = this.getProfilesLength(shell); + const profile = this.getTempProfile(shell); + for (let id = 0; id < count; id++) { + _ShellUtils.getProfile(shell, id, profile); + const indicesCount = profile.indicesLength(); + for (let i = 0; i < indicesCount; i++) { + const index = profile.indices(i); + _ShellUtils.savePointByProfile(index, id); + } + } + } + static computeAvgNormal(id) { + this._tempNormal.normalize(); + this._tempNormal.multiplyScalar(normalizationValue); + this._tempNormal.toArray(this._normalBuffer, id * 3); + } + static getTempProfile(shell) { + if (shell.type() === ShellType.BIG) { + return this._bigShellProfile; + } + return this._shellProfile; + } + static getTempHole(shell) { + if (shell.type() === ShellType.BIG) { + return this._bigShellHole; + } + return this._shellHole; + } +}; +__publicField(_ShellUtils, "_faceThreshold", Math.cos(Math.PI / 8)); +__publicField(_ShellUtils, "_shell", new Shell()); +__publicField(_ShellUtils, "_normalBuffer", new Int16Array()); +__publicField(_ShellUtils, "_tempNormal", new Vector3()); +__publicField(_ShellUtils, "_tempPoint", new FloatVector()); +__publicField(_ShellUtils, "_shellProfile", new ShellProfile()); +__publicField(_ShellUtils, "_bigShellProfile", new BigShellProfile()); +__publicField(_ShellUtils, "_shellHole", new ShellHole()); +__publicField(_ShellUtils, "_bigShellHole", new BigShellHole()); +__publicField(_ShellUtils, "_pointsByProfile", /* @__PURE__ */ new Map()); +__publicField(_ShellUtils, "_v1", new Vector3()); +__publicField(_ShellUtils, "_v2", new Vector3()); +__publicField(_ShellUtils, "_v3", new Vector3()); +let ShellUtils = _ShellUtils; +class ShellTemplateConstructor { + constructor() { + __publicField(this, "_shellHole", new ShellHole()); + __publicField(this, "_bigShellHole", new BigShellHole()); + __publicField(this, "holePoints", 0); + __publicField(this, "profilePoints", 0); + __publicField(this, "triangleAmount", 0); + __publicField(this, "indexCount", 0); + __publicField(this, "meshes", []); + __publicField(this, "_shellProfile", new ShellProfile()); + __publicField(this, "_bigShellProfile", new BigShellProfile()); + } + newMeshTemplate(shell) { + const isEmpty = this.getIsEmpty(shell); + if (isEmpty) { + return { objectClass: ObjectClass.SHELL }; + } + this.reset(true); + this.processShell(shell); + return this.getResult(); + } + manageDataLeft() { + const isDataLeft = this.getIsDataLeft(); + if (isDataLeft) { + this.setMesh(); + } + } + getIsEmpty(shell) { + const length = ShellUtils.getProfilesLength(shell); + return length === 0; + } + processShellHoles(shell, id) { + let shellHolesExist = false; + const count = ShellUtils.getHolesLength(shell); + const hole = this.getTempHole(shell); + for (let i = 0; i < count; i++) { + ShellUtils.getHole(shell, i, hole); + const profileId = hole.profileId(); + if (profileId !== id) + continue; + this.updateBuffers(shell, shellHolesExist); + shellHolesExist = true; + } + this.manageFoundHoles(shell, shellHolesExist); + } + newMesh() { + return { + objectClass: ObjectClass.SHELL, + indexCount: this.triangleAmount * 3, + positionCount: (this.holePoints + this.profilePoints) * 3, + normalCount: (this.holePoints + this.profilePoints) * 3 + }; + } + reset(evenMeshes) { + this.holePoints = 0; + this.profilePoints = 0; + this.triangleAmount = 0; + if (evenMeshes) { + this.meshes = void 0; + } + } + getIsDataLeft() { + const areTriangles = this.triangleAmount > 0; + const areHoles = this.holePoints > 0; + const areProfiles = this.profilePoints > 0; + return areTriangles || areHoles || areProfiles; + } + processShell(shell) { + const count = ShellUtils.getProfilesLength(shell); + const profile = this.getTempProfile(shell); + for (let id = 0; id < count; id++) { + ShellUtils.getProfile(shell, id, profile); + this.indexCount = profile.indicesLength(); + this.profilePoints += this.indexCount; + this.processShellHoles(shell, id); + this.manageMemory(); + } + this.manageDataLeft(); + } + manageFoundHoles(shell, shellHolesExist) { + const profile = this.getTempProfile(shell); + const indicesAmount = profile.indicesLength(); + if (shellHolesExist) { + this.triangleAmount += indicesAmount; + return; + } + if (indicesAmount > 2) { + this.triangleAmount += indicesAmount - 2; + } + } + getResult() { + const meshes = this.meshes; + this.meshes = void 0; + return meshes; + } + manageMemory() { + const memory = this.holePoints + this.profilePoints + this.indexCount; + const memoryOverflow = memory > limitOf2Bytes; + if (memoryOverflow) { + this.setMesh(); + } + } + updateBuffers(shell, shellHolesExist) { + const hole = this.getTempHole(shell); + this.holePoints += hole.indicesLength(); + this.triangleAmount += hole.indicesLength(); + if (shellHolesExist) { + this.triangleAmount += 2; + } + } + setMesh() { + const mesh = this.newMesh(); + if (!this.meshes) { + this.meshes = mesh; + } else if (Array.isArray(this.meshes)) { + this.meshes.push(mesh); + } else { + this.meshes = [this.meshes, mesh]; + } + this.reset(false); + } + getTempProfile(shell) { + if (shell.type() === ShellType.BIG) { + return this._bigShellProfile; + } + return this._shellProfile; + } + getTempHole(shell) { + if (shell.type() === ShellType.BIG) { + return this._bigShellHole; + } + return this._shellHole; + } +} +var PolygonSize = /* @__PURE__ */ ((PolygonSize2) => { + PolygonSize2[PolygonSize2["four"] = 4] = "four"; + PolygonSize2[PolygonSize2["three"] = 3] = "three"; + return PolygonSize2; +})(PolygonSize || {}); +function earcut(data, holeIndices, dim, a, b, createGeometry) { + const hasHoles = holeIndices && holeIndices.length; + const outerLen = hasHoles ? holeIndices[0] * dim : data.length; + let outerNode = linkedList(data, 0, outerLen, dim, true, a, b); + if (!outerNode || outerNode.next === outerNode.prev) + return; + let minX; + let minY; + let invSize; + if (hasHoles) + outerNode = eliminateHoles(data, holeIndices, outerNode, dim, a, b); + if (data.length > 80 * dim) { + let maxX = data[a]; + let maxY = data[b]; + minX = maxX; + minY = maxY; + for (let i = dim; i < outerLen; i += dim) { + const x = data[i + a]; + const y = data[i + b]; + if (x < minX) + minX = x; + if (y < minY) + minY = y; + if (x > maxX) + maxX = x; + if (y > maxY) + maxY = y; + } + invSize = Math.max(maxX - minX, maxY - minY); + invSize = invSize !== 0 ? 1 / invSize : 0; + } + earcutLinked(outerNode, createGeometry, dim, minX, minY, invSize); +} +function linkedList(data, start, end, dim, clockwise, a, b) { + let finish; + let current; + let counter; + if (clockwise === signedArea(data, start, end, dim, a, b) > 0) { + for (counter = start; counter < end; counter += dim) + finish = insertNode( + counter, + data[counter + a], + data[counter + b], + finish + ); + } else { + for (counter = end - dim; counter >= start; counter -= dim) + finish = insertNode( + counter, + data[counter + a], + data[counter + b], + finish + ); + } + if (finish && equals(finish, finish.next)) { + current = finish.next; + removeNode(finish); + finish = current; + } + return finish; +} +function filterPoints(start, end) { + if (!start) + return start; + if (!end) + end = start; + let p = start; + let again; + let past; + do { + again = false; + if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) { + past = p.prev; + removeNode(p); + p = end = past; + if (p === p.next) + break; + again = true; + } else { + p = p.next; + } + } while (again || p !== end); + return end; +} +function earcutLinked(ear, createGeometry, dim, minX, minY, invSize, pass) { + if (!pass && invSize) + indexCurve(ear, minX, minY, invSize); + let stop = ear; + while (ear.prev !== ear.next) { + const prev = ear.prev; + const next = ear.next; + if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) { + createGeometry(prev.i / dim, ear.i / dim, next.i / dim); + removeNode(ear); + ear = next.next; + stop = next.next; + continue; + } + ear = next; + if (ear === stop) { + if (!pass) { + earcutLinked( + filterPoints(ear), + createGeometry, + dim, + minX, + minY, + invSize, + 1 + ); + } else if (pass === 1) { + ear = cureLocalIntersections(filterPoints(ear), createGeometry, dim); + earcutLinked(ear, createGeometry, dim, minX, minY, invSize, 2); + } else if (pass === 2) { + splitEarcut(ear, createGeometry, dim, minX, minY, invSize); + } + break; + } + } +} +function isEar(ear) { + const a = ear.prev; + const b = ear; + const c = ear.next; + if (area(a, b, c) >= 0) + return false; + let p = ear.next.next; + while (p !== ear.prev) { + if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) + return false; + p = p.next; + } + return true; +} +function isEarHashed(ear, minX, minY, invSize) { + const a = ear.prev; + const b = ear; + const c = ear.next; + if (area(a, b, c) >= 0) + return false; + const x0 = Math.min(a.x, b.x, c.x); + const y0 = Math.min(a.y, b.y, c.y); + const x1 = Math.max(a.x, b.x, c.x); + const y1 = Math.max(a.y, b.y, c.y); + const minZ = zOrder(x0, y0, minX, minY, invSize); + const maxZ = zOrder(x1, y1, minX, minY, invSize); + let p = ear.prevZ; + let n = ear.nextZ; + while (p && p.z >= minZ && n && n.z <= maxZ) { + if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) + return false; + p = p.prevZ; + if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) + return false; + n = n.nextZ; + } + while (p && p.z >= minZ) { + if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) + return false; + p = p.prevZ; + } + while (n && n.z <= maxZ) { + if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) + return false; + n = n.nextZ; + } + return true; +} +function cureLocalIntersections(start, createGeometry, dim) { + let p = start; + do { + const a = p.prev; + const b = p.next.next; + if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) { + createGeometry(a.i / dim, p.i / dim, b.i / dim); + removeNode(p.next); + removeNode(p); + p = start = b; + } + p = p.next; + } while (p !== start); + return filterPoints(p); +} +function splitEarcut(start, createGeometry, dim, minX, minY, invSize) { + let a = start; + do { + let b = a.next.next; + while (b !== a.prev) { + if (a.i !== b.i && isValidDiagonal(a, b)) { + let c = splitPolygon(a, b); + a = filterPoints(a, a.next); + c = filterPoints(c, c.next); + earcutLinked(a, createGeometry, dim, minX, minY, invSize); + earcutLinked(c, createGeometry, dim, minX, minY, invSize); + return; + } + b = b.next; + } + a = a.next; + } while (a !== start); +} +function eliminateHoles(data, holeIndices, outerNode, dim, a, b) { + const queue = []; + for (let i = 0, len = holeIndices.length; i < len; i++) { + const start = holeIndices[i] * dim; + const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length; + const list = linkedList(data, start, end, dim, false, a, b); + if (list === list.next) + list.steiner = true; + queue.push(getLeftmost(list)); + } + queue.sort(xDifference); + for (let i = 0; i < queue.length; i++) { + outerNode = eliminateHole(queue[i], outerNode); + outerNode = filterPoints(outerNode, outerNode.next); + } + return outerNode; +} +function xDifference(a, b) { + return a.x - b.x; +} +function eliminateHole(hole, outerNode) { + const bridge = findHoleBridge(hole, outerNode); + if (!bridge) { + return outerNode; + } + const bridgeReverse = splitPolygon(bridge, hole); + const filtered = filterPoints(bridge, bridge.next); + filterPoints(bridgeReverse, bridgeReverse.next); + if (outerNode === outerNode.next || bridge === outerNode) { + return filtered; + } + return outerNode; +} +function findHoleBridge(hole, outerNode) { + let p = outerNode; + const hx = hole.x; + const hy = hole.y; + let qx = -Infinity; + let m; + do { + if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) { + const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y); + if (x <= hx && x > qx) { + qx = x; + if (x === hx) { + if (hy === p.y) + return p; + if (hy === p.next.y) + return p.next; + } + m = p.x < p.next.x ? p : p.next; + } + } + p = p.next; + } while (p !== outerNode); + if (!m) + return null; + if (hx === qx) + return m; + const stop = m; + const mx = m.x; + const my = m.y; + let tanMin = Infinity; + p = m; + do { + if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle( + hy < my ? hx : qx, + hy, + mx, + my, + hy < my ? qx : hx, + hy, + p.x, + p.y + )) { + const tan = Math.abs(hy - p.y) / (hx - p.x); + if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) { + m = p; + tanMin = tan; + } + } + p = p.next; + } while (p !== stop); + return m; +} +function sectorContainsSector(m, p) { + return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0; +} +function indexCurve(start, minX, minY, invSize) { + let p = start; + do { + if (p.z === null) + p.z = zOrder(p.x, p.y, minX, minY, invSize); + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + } while (p !== start); + p.prevZ.nextZ = null; + p.prevZ = null; + sortLinked(p); +} +function sortLinked(list) { + let inSize = 1; + let numMerges; + do { + let p = list; + let e; + list = null; + let tail = null; + numMerges = 0; + while (p) { + numMerges++; + let q = p; + let pSize = 0; + for (let i = 0; i < inSize; i++) { + pSize++; + q = q.nextZ; + if (!q) + break; + } + let qSize = inSize; + while (pSize > 0 || qSize > 0 && q) { + if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) { + e = p; + p = p.nextZ; + pSize--; + } else { + e = q; + q = q.nextZ; + qSize--; + } + if (tail) + tail.nextZ = e; + else + list = e; + e.prevZ = tail; + tail = e; + } + p = q; + } + tail.nextZ = null; + inSize *= 2; + } while (numMerges > 1); + return list; +} +function zOrder(x, y, minX, minY, invSize) { + x = 32767 * (x - minX) * invSize; + y = 32767 * (y - minY) * invSize; + x = (x | x << 8) & 16711935; + x = (x | x << 4) & 252645135; + x = (x | x << 2) & 858993459; + x = (x | x << 1) & 1431655765; + y = (y | y << 8) & 16711935; + y = (y | y << 4) & 252645135; + y = (y | y << 2) & 858993459; + y = (y | y << 1) & 1431655765; + return x | y << 1; +} +function getLeftmost(start) { + let p = start; + let leftmost = start; + do { + if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) + leftmost = p; + p = p.next; + } while (p !== start); + return leftmost; +} +function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) { + return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0; +} +function isValidDiagonal(a, b) { + return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges + (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible + (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors + equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); +} +function area(p, q, r) { + return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); +} +function equals(p1, p2) { + return p1.x === p2.x && p1.y === p2.y; +} +function intersects(p1, q1, p2, q2) { + const o1 = sign(area(p1, q1, p2)); + const o2 = sign(area(p1, q1, q2)); + const o3 = sign(area(p2, q2, p1)); + const o4 = sign(area(p2, q2, q1)); + if (o1 !== o2 && o3 !== o4) + return true; + if (o1 === 0 && onSegment(p1, p2, q1)) + return true; + if (o2 === 0 && onSegment(p1, q2, q1)) + return true; + if (o3 === 0 && onSegment(p2, p1, q2)) + return true; + if (o4 === 0 && onSegment(p2, q1, q2)) + return true; + return false; +} +function onSegment(p, q, r) { + return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y); +} +function sign(num) { + return num > 0 ? 1 : num < 0 ? -1 : 0; +} +function intersectsPolygon(a, b) { + let p = a; + do { + if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) + return true; + p = p.next; + } while (p !== a); + return false; +} +function locallyInside(a, b) { + return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0; +} +function middleInside(a, b) { + let p = a; + let inside = false; + const px = (a.x + b.x) / 2; + const py = (a.y + b.y) / 2; + do { + if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) + inside = !inside; + p = p.next; + } while (p !== a); + return inside; +} +function splitPolygon(a, b) { + const a2 = createNode(a.i, a.x, a.y); + const b2 = createNode(b.i, b.x, b.y); + const an = a.next; + const bp = b.prev; + a.next = b; + b.prev = a; + a2.next = an; + an.prev = a2; + b2.next = a2; + a2.prev = b2; + bp.next = b2; + b2.prev = bp; + return b2; +} +function insertNode(i, x, y, last) { + const p = createNode(i, x, y); + if (!last) { + p.prev = p; + p.next = p; + } else { + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + } + return p; +} +function removeNode(p) { + p.next.prev = p.prev; + p.prev.next = p.next; + if (p.prevZ) + p.prevZ.nextZ = p.nextZ; + if (p.nextZ) + p.nextZ.prevZ = p.prevZ; + p.next = p; + p.prev = p; +} +function createNode(i, x, y) { + return { + i, + // vertex index in coordinates array + x, + y, + // vertex coordinates + prev: null, + // previous and next vertex nodes in a polygon ring + next: null, + z: null, + // z-order curve value + prevZ: null, + // previous and next nodes in z-order + nextZ: null, + steiner: false + // indicates whether this is a steiner point + }; +} +function signedArea(data, start, end, dim, a, b) { + let sum = 0; + for (let i = start, j = end - dim; i < end; i += dim) { + sum += (data[j + a] - data[i + a]) * (data[i + b] + data[j + b]); + j = i; + } + return sum; +} +const _ShellFaceX = class _ShellFaceX { + static create(indices, data, normals, current, mesh, holes, sizes, faceId) { + const size = indices.length; + const amount = sizes.verticesAmount; + _ShellFaceX.processBuffers(size, indices, mesh, sizes, data, normals); + const position = mesh.positionBuffer; + const pointsDiff = sizes.verticesAmount - amount; + const normalDims = pointsDiff / 3; + this.processNormals(position, this._tempVec, normalDims, amount); + this.triangulate(holes, current, size, mesh, sizes, amount); + this.setFaceId(amount, sizes, mesh, faceId); + } + static setFaceId(amount, sizes, mesh, faceId) { + const firstFace = amount / 3; + const lastFace = sizes.verticesAmount / 3; + for (let i = firstFace; i < lastFace; i++) { + mesh.faceIdBuffer[i] = faceId; + } + } + static getVertices(mesh, amount, sizes) { + const points = mesh.positionBuffer; + const buffer = points.buffer; + const position = amount * 4; + const size = sizes.verticesAmount - amount; + return new Float32Array(buffer, position, size); + } + static getEvent(mesh, sizes, amount) { + return (first, second, third) => { + const position = mesh.indexBuffer; + position[sizes.indices++] = first + amount / 3; + position[sizes.indices++] = second + amount / 3; + position[sizes.indices++] = third + amount / 3; + }; + } + static processBuffers(size, indices, mesh, sizes, data, normals) { + for (let id = 0; id < size; id++) { + this.processPositionBuffer(mesh, indices, id, sizes, data); + this.processNormalbuffer(mesh, normals, id, sizes); + this.updateBufferData(sizes); + } + } + static getHoles(shellHoles, index, size, mesh, sizes) { + if (!shellHoles) { + return void 0; + } + const isHole = shellHoles.has(index); + if (isHole) { + const currentHole = shellHoles.get(index); + const holesData = []; + for (const index2 of currentHole.indices) { + holesData.push(index2 + size); + } + this.setHolesBuffers(mesh, currentHole, sizes); + return holesData; + } + return void 0; + } + static setHolesBuffers(mesh, shellHole, sizes) { + const position = mesh.positionBuffer; + const normal = mesh.normalBuffer; + position.set(shellHole.points, sizes.verticesAmount); + const holePoints = shellHole.points.length; + sizes.verticesAmount += holePoints; + sizes.vertices += holePoints / 3; + normal.set(shellHole.normals, sizes.normalsAmount); + sizes.normalsAmount += holePoints; + } + static updateBufferData(sizes) { + sizes.vertices += 1; + sizes.verticesAmount += 3; + sizes.normalsAmount += 3; + } + static processPositionBuffer(mesh, indices, id, sizes, data) { + const position = mesh.positionBuffer; + for (let j = 0; j < 3; j++) { + const current = indices[id] * 3; + position[sizes.verticesAmount + j] = data[current + j]; + } + } + static triangulate(holes, current, size, mesh, sizes, amount) { + const tri = 3; + const holesData = this.getHoles(holes, current, size, mesh, sizes); + const vertices = _ShellFaceX.getVertices(mesh, amount, sizes); + const dims = FaceUtils.getEarcutDimensions(this._tempVec); + const onCreateGeometry = this.getEvent(mesh, sizes, amount); + const firstDim = dims[0]; + const secondDim = dims[1]; + earcut(vertices, holesData, tri, firstDim, secondDim, onCreateGeometry); + } + static processNormals(input, result, size, position = 0) { + result.set(0, 0, 0); + for (let i = 0; i < size; i++) { + const counter = (i + 1) % size; + const i1 = position + i * 3; + const i2 = position + counter * 3; + const x1 = input[i1 + 0]; + const x2 = input[i2 + 0]; + const y1 = input[i1 + 1]; + const y2 = input[i2 + 1]; + const z1 = input[i1 + 2]; + const z2 = input[i2 + 2]; + result.x += (y1 - y2) * (z1 + z2); + result.y += (z1 - z2) * (x1 + x2); + result.z += (x1 - x2) * (y1 + y2); + } + result.normalize(); + } + static processNormalbuffer(mesh, normals, id, sizes) { + const normal = mesh.normalBuffer; + const current = id * 3; + const nx = normals[current]; + const ny = normals[current + 1]; + const nz = normals[current + 2]; + normal.set([nx, ny, nz], sizes.normalsAmount); + } +}; +__publicField(_ShellFaceX, "_tempVec", new Vector3()); +let ShellFaceX = _ShellFaceX; +const _ShellFace4 = class _ShellFace4 { + static create(indices, data, normals, id, mesh, sizes, faceId) { + this.setAllVectors(indices, data); + const isConvex = this.getIsConvex(); + if (isConvex) { + this.processConvexFace4(mesh, sizes, normals, faceId); + return; + } + ShellFaceX.create( + indices, + data, + normals, + id, + mesh, + void 0, + sizes, + faceId + ); + } + static setAllVectors(indices, data) { + this.setVector(indices, data, this.a, 0); + this.setVector(indices, data, this.b, 1); + this.setVector(indices, data, this.c, 2); + this.setVector(indices, data, this.d, 3); + this.getCrossVectors(); + } + static processConvexFace4(mesh, sizes, normals, faceId) { + this.processIndices(mesh, sizes); + this.processPoints(mesh, sizes); + this.processNormal(mesh, sizes, normals); + this.setFaceId(mesh, sizes, faceId); + this.updateData(sizes); + } + static setFaceId(mesh, sizes, faceId) { + const faceIds = mesh.faceIdBuffer; + for (let i = sizes.vertices; i < sizes.vertices + 4; i++) { + faceIds[i] = faceId; + } + } + static getIsConvex() { + return this.h.dot(this.i) > 0; + } + static getCrossVectors() { + this.e.copy(this.b); + this.f.copy(this.c); + this.g.copy(this.d); + this.e.sub(this.a); + this.f.sub(this.a); + this.g.sub(this.a); + this.h.crossVectors(this.e, this.f); + this.i.crossVectors(this.f, this.g); + } + static updateData(sizes) { + sizes.normalsAmount += this.totalIncrease; + sizes.vertices += this.vertexIncrease; + sizes.verticesAmount += this.totalIncrease; + } + static processPoints(mesh, sizes) { + let counter = 0; + const position = mesh.positionBuffer; + const amount = sizes.verticesAmount; + for (let i = 0; i < this.vertexIncrease; i++) { + const vec = this._vecs[i]; + position[amount + counter++] = vec.x; + position[amount + counter++] = vec.y; + position[amount + counter++] = vec.z; + } + } + static setVector(indices, data, vector, offset) { + const index = indices[offset] * 3; + const x = data[index]; + const y = data[index + 1]; + const z = data[index + 2]; + vector.set(x, y, z); + } + static processNormal(mesh, sizes, normals) { + const normal = mesh.normalBuffer; + const amount = sizes.normalsAmount; + for (let i = 0; i < this.totalIncrease; i++) { + normal[amount + i] = normals[i]; + } + } + static processIndices(mesh, sizes) { + const indices = mesh.indexBuffer; + for (let i = 0; i < this.indexIncrease; i++) { + const offset = this._convexIndices[i]; + indices[sizes.indices + i] = sizes.vertices + offset; + } + sizes.indices += this.indexIncrease; + } +}; +__publicField(_ShellFace4, "a", new Vector3()); +__publicField(_ShellFace4, "b", new Vector3()); +__publicField(_ShellFace4, "c", new Vector3()); +__publicField(_ShellFace4, "d", new Vector3()); +__publicField(_ShellFace4, "e", new Vector3()); +__publicField(_ShellFace4, "f", new Vector3()); +__publicField(_ShellFace4, "g", new Vector3()); +__publicField(_ShellFace4, "h", new Vector3()); +__publicField(_ShellFace4, "i", new Vector3()); +__publicField(_ShellFace4, "_vecs", [_ShellFace4.a, _ShellFace4.b, _ShellFace4.c, _ShellFace4.d]); +__publicField(_ShellFace4, "_convexIndices", [0, 1, 3, 3, 1, 2]); +__publicField(_ShellFace4, "totalIncrease", 12); +__publicField(_ShellFace4, "indexIncrease", 6); +__publicField(_ShellFace4, "vertexIncrease", 4); +let ShellFace4 = _ShellFace4; +const _ShellFace3 = class _ShellFace3 { + static create(indices, data, normals, mesh, sizes, faceId) { + this.setFaceIds(sizes, mesh, faceId); + this.setIndices(mesh, sizes); + this.setPoints(indices, mesh, sizes, data); + this.setNormals(mesh, sizes, normals); + this.updateData(sizes); + } + static setFaceIds(sizes, mesh, faceId) { + const amount = sizes.verticesAmount; + const firstFace = amount / 3; + const lastFace = firstFace + 3; + for (let i = firstFace; i < lastFace; i++) { + mesh.faceIdBuffer[i] = faceId; + } + } + static setNormals(mesh, sizes, normals) { + const normal = mesh.normalBuffer; + for (let i = 0; i < this.totalIncrease; i++) { + normal[sizes.normalsAmount + i] = normals[i]; + } + } + static setPoints(indices, mesh, sizes, data) { + let counter = 0; + const points = mesh.positionBuffer; + for (let i = 0; i < this.vertexIncrease; i++) { + const index = indices[i] * this.vertexIncrease; + for (let j = 0; j < this.vertexIncrease; j++) { + points[sizes.verticesAmount + counter] = data[index + j]; + counter++; + } + } + } + static setIndices(mesh, sizes) { + const index = mesh.indexBuffer; + for (let i = 0; i < this.vertexIncrease; i++) { + index[sizes.indices + i] = sizes.vertices + i; + } + sizes.indices += this.vertexIncrease; + } + static updateData(sizes) { + sizes.normalsAmount += _ShellFace3.totalIncrease; + sizes.vertices += _ShellFace3.vertexIncrease; + sizes.verticesAmount += _ShellFace3.totalIncrease; + } +}; +__publicField(_ShellFace3, "vertexIncrease", 3); +__publicField(_ShellFace3, "totalIncrease", 9); +let ShellFace3 = _ShellFace3; +class ShellConstructor { + constructor() { + __publicField(this, "point", new FloatVector()); + __publicField(this, "_shellHole", new ShellHole()); + __publicField(this, "_bigShellHole", new BigShellHole()); + __publicField(this, "interiorProfiles", /* @__PURE__ */ new Map()); + __publicField(this, "normalsAvgInterior", new Int16Array()); + __publicField(this, "_pointsPerProfile", /* @__PURE__ */ new Map()); + __publicField(this, "_shellProfile", new ShellProfile()); + __publicField(this, "_bigShellProfile", new BigShellProfile()); + __publicField(this, "_normalsAvg", new Int16Array()); + __publicField(this, "_normals", []); + __publicField(this, "_indices", 0); + __publicField(this, "_sizes", { + vertices: 0, + indices: 0, + verticesAmount: 0, + normalsAmount: 0, + normals: 0 + }); + __publicField(this, "_tileData"); + __publicField(this, "_faceIdPerProfile", /* @__PURE__ */ new Map()); + __publicField(this, "nextBuffer", (bufferGeometries) => { + this.setTileData(bufferGeometries); + this.initializeIndices(); + this.initializePositions(); + this.initializeNormals(); + this.initializeFaceIds(); + this.initializeSizes(); + this._indices++; + }); + } + construct(shell, meshData) { + this.resetConstructData(meshData); + this.getPointsPerWire(shell); + const data = ShellUtils.getBuffer(shell); + this.newShellInteriorProfiles(shell); + this.constructShell(shell, data, meshData); + this._tileData = void 0; + } + getIntProfileNormalsAvg(shell, id) { + const hole = this.getTempHole(shell); + const indices = hole.indicesArray(); + this.normalsAvgInterior = ShellUtils.computeNormalsAvg( + indices, + id, + this._normals, + this._pointsPerProfile + ); + } + saveInteriorProfile(shell) { + const hole = this.getTempHole(shell); + const id = hole.profileId(); + if (this.interiorProfiles.has(id)) { + this.saveExistingInteriorProfile(id); + return id; + } + const data = this.getNewIntProfileData(); + this.interiorProfiles.set(id, data); + return id; + } + computeNormalsAvg(shell, indices, id) { + const isShell = this.isShell(shell); + if (!isShell) + return; + const n = this._normals; + const ppp = this._pointsPerProfile; + this._normalsAvg = ShellUtils.computeNormalsAvg(indices, id, n, ppp); + } + isShell(shell) { + return shell instanceof Shell; + } + getPointsPerWire(shell) { + const isShell = this.isShell(shell); + if (!isShell) + return; + ShellUtils.getNormalsOfShellProfile(shell, this._normals); + this._pointsPerProfile = ShellUtils.getPointsShell(shell); + } + getIndices(shell, id) { + const profile = this.getTempProfile(shell); + ShellUtils.getProfile(shell, id, profile); + return profile.indicesArray(); + } + resetConstructData(meshData) { + this._indices = 0; + this._tileData = void 0; + this.nextBuffer(meshData); + this._normals.length = 0; + } + initializeIndices() { + const size = this._tileData.indexCount; + this._tileData.indexBuffer = new Uint16Array(size); + } + constructFace4(indices, data, id) { + const faceId = this._faceIdPerProfile.get(id); + ShellFace4.create( + indices, + data, + this._normalsAvg, + id, + this._tileData, + this._sizes, + faceId + ); + } + initializeSizes() { + this._sizes.vertices = 0; + this._sizes.indices = 0; + this._sizes.verticesAmount = 0; + this._sizes.normalsAmount = 0; + this._sizes.normals = 0; + } + getInteriorProfileBuffer(shell, intProfile) { + const hole = this.getTempHole(shell); + const count = hole.indicesLength(); + const isShell = this.isShell(shell); + if (!isShell) + return; + for (let id = 0; id < count; id++) { + this.getIntProfilePoints(id, shell, intProfile); + this.getIntProfileNormals(intProfile, id); + } + } + constructProfile(id, shell, indices, data) { + const profile = this.getTempProfile(shell); + const indexAmount = profile.indicesLength(); + const notAHole = !this.interiorProfiles.has(id); + const isFace3 = indexAmount === PolygonSize.three; + if (isFace3 && notAHole) { + this.constructFace3(indices, data, id); + return; + } + const isFace4 = indexAmount === PolygonSize.four; + if (isFace4 && notAHole) { + this.constructFace4(indices, data, id); + return; + } + this.constructFaceX(indices, data, id); + } + getIntProfileNormals(hole, id) { + const index = id * 3; + const nx = this.normalsAvgInterior[index]; + const ny = this.normalsAvgInterior[index + 1]; + const nz = this.normalsAvgInterior[index + 2]; + hole.normals.push(nx, ny, nz); + } + saveExistingInteriorProfile(id) { + const found = this.interiorProfiles.get(id); + const pointCount = found.points.length; + const indexCount = pointCount / 3; + found.indices.push(indexCount); + this.interiorProfiles.set(id, found); + } + getNewIntProfileData() { + const indices = [0]; + const points = []; + const normals = []; + return { indices, points, normals }; + } + constructFace3(indices, data, id) { + const faceId = this._faceIdPerProfile.get(id); + ShellFace3.create( + indices, + data, + this._normalsAvg, + this._tileData, + this._sizes, + faceId + ); + } + getIntProfilePoints(i, shell, holeData) { + const hole = this.getTempHole(shell); + const shellIndex = hole.indices(i); + shell.points(shellIndex, this.point); + const px = this.point.x(); + const py = this.point.y(); + const pz = this.point.z(); + holeData.points.push(px, py, pz); + } + manageMemory(shell, meshData) { + const profile = this.getTempProfile(shell); + const indexAmount = profile.indicesLength(); + const vertexAmount = this._sizes.verticesAmount / 3; + const memoryConsumed = vertexAmount + indexAmount; + const memoryOverflow = memoryConsumed > limitOf2Bytes; + if (memoryOverflow) { + this.nextBuffer(meshData); + } + } + initializeFaceIds() { + const size = this._tileData.positionCount; + this._tileData.faceIdBuffer = new Uint32Array(size / 3); + } + getNextFaceId() { + const maxUint32 = 4294967295; + return Math.random() * maxUint32; + } + newShellInteriorProfiles(shell) { + this.interiorProfiles.clear(); + const count = ShellUtils.getHolesLength(shell); + const hole = this.getTempHole(shell); + for (let i = 0; i < count; i++) { + ShellUtils.getHole(shell, i, hole); + const id = this.saveInteriorProfile(shell); + const intProfile = this.interiorProfiles.get(id); + this.getIntProfileNormalsAvg(shell, id); + this.getInteriorProfileBuffer(shell, intProfile); + } + return this.interiorProfiles; + } + initializePositions() { + const size = this._tileData.positionCount; + this._tileData.positionBuffer = new Float32Array(size); + } + initializeNormals() { + const size = this._tileData.normalCount; + this._tileData.normalBuffer = new Int16Array(size); + } + setTileData(bufferGeometries) { + if (Array.isArray(bufferGeometries)) { + this._tileData = bufferGeometries[this._indices]; + return; + } + this._tileData = bufferGeometries; + } + constructShell(shell, data, meshData) { + this.getFaceIds(shell); + const count = ShellUtils.getProfilesLength(shell); + for (let id = 0; id < count; id++) { + const indices = this.getIndices(shell, id); + this.computeNormalsAvg(shell, indices, id); + this.constructProfile(id, shell, indices, data); + this.manageMemory(shell, meshData); + } + } + constructFaceX(indices, data, id) { + const faceId = this._faceIdPerProfile.get(id); + ShellFaceX.create( + indices, + data, + this._normalsAvg, + id, + this._tileData, + this.interiorProfiles, + this._sizes, + faceId + ); + } + getTempProfile(shell) { + if (shell.type() === ShellType.BIG) { + return this._bigShellProfile; + } + return this._shellProfile; + } + getTempHole(shell) { + if (shell.type() === ShellType.BIG) { + return this._bigShellHole; + } + return this._shellHole; + } + getFaceIds(shell) { + this._faceIdPerProfile.clear(); + const faceIds = shell.profilesFaceIdsArray(); + const colors = /* @__PURE__ */ new Map(); + if (faceIds && faceIds.length > 0) { + for (let i = 0; i < faceIds.length; i++) { + const rawFaceId = faceIds[i]; + if (!colors.has(rawFaceId)) { + colors.set(rawFaceId, this.getNextFaceId()); + } + const faceId = colors.get(rawFaceId); + this._faceIdPerProfile.set(i, faceId); + } + return; + } + for (let i = 0; i < shell.profilesLength(); i++) { + this._faceIdPerProfile.set(i, this.getNextFaceId()); + } + } +} +class ShellFaceRaycaster { + constructor(meshes) { + __publicField(this, "a", new Vector3()); + __publicField(this, "b", new Vector3()); + __publicField(this, "c", new Vector3()); + __publicField(this, "d", new Vector3()); + __publicField(this, "e", new Vector3()); + __publicField(this, "f", new Vector3()); + __publicField(this, "g", new Vector3()); + __publicField(this, "h", new Vector3()); + __publicField(this, "i", new Vector3()); + __publicField(this, "j", new Vector3()); + __publicField(this, "k", new Vector3()); + __publicField(this, "tempTriangle", new Triangle()); + __publicField(this, "tempPlane", new Plane()); + __publicField(this, "includedVertices", []); + __publicField(this, "interiorProfiles", /* @__PURE__ */ new Map()); + __publicField(this, "_meshes"); + this._meshes = meshes; + } + faceRaycast(id, ray) { + const shell = ShellUtils.getShell(this._meshes, id); + this.resetData(); + this.getInteriorProfiles(shell); + const buffer = ShellUtils.getBuffer(shell); + this.processAllCollisions(shell, buffer, ray); + return this.includedVertices; + } + resetVectors() { + this.a.set(0, 0, 0); + this.b.set(0, 0, 0); + this.c.set(0, 0, 0); + this.d.set(0, 0, 0); + } + resetData() { + this.includedVertices.length = 0; + this.interiorProfiles.clear(); + } + getInteriorProfiles(shell) { + const holesLength = ShellUtils.getHolesLength(shell); + for (let holeId = 0; holeId < holesLength; holeId++) { + const hole = ShellUtils.getHole(shell, holeId); + const profileId = hole.profileId(); + if (!this.interiorProfiles.has(profileId)) { + this.interiorProfiles.set(profileId, []); + } + const profiles = this.interiorProfiles.get(profileId); + profiles.push(holeId); + } + } + processTriangle(indices, buffer, ray) { + const first = indices[0] * 3; + const second = indices[1] * 3; + const third = indices[2] * 3; + this.saveTriPoint(this.e, buffer, first); + this.saveTriPoint(this.f, buffer, second); + this.saveTriPoint(this.g, buffer, third); + const found = this.triangleHit(ray); + if (found) { + const triangleBuffer = this.getTriangleBuffer(buffer, indices); + found.facePoints = triangleBuffer.points; + found.faceIndices = triangleBuffer.indices; + this.includedVertices.push(found); + } + } + processAllCollisions(shell, buffer, ray) { + const count = ShellUtils.getProfilesLength(shell); + for (let id = 0; id < count; id++) { + this.resetVectors(); + const indices = this.getIndices(shell, id); + const valid = this.getValidCollision(indices, buffer, ray, id, shell); + if (valid) { + this.processCollision(shell, id, buffer, indices); + } + } + } + saveTriPoint(vector, buffer, first) { + const x1 = buffer[first]; + const y1 = buffer[first + 1]; + const z1 = buffer[first + 2]; + vector.set(x1, y1, z1); + } + getIndices(shell, id) { + const currentProfile = ShellUtils.getProfile(shell, id); + return currentProfile.indicesArray(); + } + getIsTriangle(indices) { + const indexAmount = indices.length; + return indexAmount === 3; + } + getNormal() { + this.tempTriangle.a = this.e; + this.tempTriangle.b = this.f; + this.tempTriangle.c = this.g; + const result = new Vector3(); + this.tempTriangle.getNormal(result); + return result; + } + isHole(id, shell, buffer) { + if (this.interiorProfiles.has(id)) { + const interiorProfiles = this.interiorProfiles.get(id); + return this.holeContains(interiorProfiles, shell, buffer); + } + return false; + } + computeNormal(data, indices) { + this.d.set(0, 0, 0); + const count = indices.length; + for (let i1 = 0; i1 < count; i1++) { + const i2 = (i1 + 1) % count; + const a = indices[i1] * 3; + const b = indices[i2] * 3; + this.processNormal(data, a, b); + } + this.d.normalize(); + } + holeContains(indices, shell, data) { + const count = indices.length; + for (let i = 0; i < count; i++) { + const shellHole = ShellUtils.getHole(shell, indices[i]); + const index = shellHole.indicesArray(); + const contained = this.polygonContains(data, index); + if (contained) { + return true; + } + } + return false; + } + triangleHit(ray) { + const e = this.e; + const f = this.f; + const g = this.g; + const hits = ray.intersectTriangle(e, f, g, false, this.h); + if (!hits) { + return void 0; + } + const normal = this.getNormal(); + const point = this.h.clone(); + return { point, normal }; + } + getValidCollision(indices, buffer, ray, id, shell) { + const isTriangle = this.getIsTriangle(indices); + if (isTriangle) { + this.processTriangle(indices, buffer, ray); + return false; + } + const collidesPlane = this.getCollidesPlane(indices, buffer, ray); + if (!collidesPlane) { + return false; + } + const isHole = this.isHole(id, shell, buffer); + if (isHole) { + return false; + } + return true; + } + processCollision(shell, profileId, buffer, indices) { + const contains = this.polygonContains(buffer, indices); + if (!contains) + return; + const point = this.b.clone(); + const normal = this.tempPlane.normal.clone(); + const faceBuffer = this.getFaceBuffer(shell, profileId, buffer); + this.includedVertices.push({ + point, + normal, + facePoints: faceBuffer.points, + faceIndices: faceBuffer.indices + }); + } + newOrthoNormalBasis() { + const a1 = this.tempPlane.normal; + const a2 = this.j; + const a3 = this.i; + const n1 = Math.abs(a1.x); + const n2 = Math.abs(a1.y); + if (n1 >= n2) { + const inverse = 1 / Math.sqrt(a1.x * a1.x + a1.z * a1.z); + const a2x = -a1.z * inverse; + const a2y = 0; + const a2z = a1.x * inverse; + a2.set(a2x, a2y, a2z); + const a3x = a1.y * a2.z; + const a3y = a1.z * a2.x - a1.x * a2.z; + const a3z = -a1.y * a2.x; + a3.set(a3x, a3y, a3z); + } else { + const inverse = 1 / Math.sqrt(a1.y * a1.y + a1.z * a1.z); + const a2x = 0; + const a2y = a1.z * inverse; + const a2z = -a1.y * inverse; + a2.set(a2x, a2y, a2z); + const a3x = a1.y * a2.z - a1.z * a2.y; + const a3y = -a1.x * a2.z; + const a3z = a1.x * a2.y; + a3.set(a3x, a3y, a3z); + } + a2.normalize(); + a3.normalize(); + } + polygonContains(data, indices) { + let contains = false; + this.newOrthoNormalBasis(); + this.setPolyContainVec(indices, data); + let a = this.k.dot(this.i); + let b = this.k.dot(this.j); + for (let i = 0; i < indices.length; i++) { + const current = indices[i] * 3; + const x = data[current]; + const y = data[current + 1]; + const z = data[current + 2]; + this.k.set(x, y, z); + this.k.sub(this.b); + const c = this.k.dot(this.i); + const d = this.k.dot(this.j); + const n1 = d > 0; + const n2 = b > 0; + if (n1 !== n2) { + const crosses = (a - c) * -d / (b - d) + c > 0; + if (crosses) { + contains = !contains; + } + } + a = c; + b = d; + } + return contains; + } + processNormal(data, i1, i2) { + const x1 = data[i1 + 0]; + const x2 = data[i2 + 0]; + const y1 = data[i1 + 1]; + const y2 = data[i2 + 1]; + const z1 = data[i1 + 2]; + const z2 = data[i2 + 2]; + this.d.x += (y1 - y2) * (z1 + z2); + this.d.y += (z1 - z2) * (x1 + x2); + this.d.z += (x1 - x2) * (y1 + y2); + } + getCollidesPlane(indices, buffer, ray) { + const first = indices[0] * 3; + const x = buffer[first]; + const y = buffer[first + 1]; + const z = buffer[first + 2]; + this.a.set(x, y, z); + this.computeNormal(buffer, indices); + this.tempPlane.setFromNormalAndCoplanarPoint(this.d, this.a); + const collidesPlane = ray.intersectPlane(this.tempPlane, this.b); + return collidesPlane; + } + setPolyContainVec(indices, data) { + const end = indices[indices.length - 1] * 3; + const x = data[end]; + const y = data[end + 1]; + const z = data[end + 2]; + this.k.set(x, y, z); + this.k.sub(this.b); + } + getTriangleBuffer(buffer, indices) { + const points = []; + const newIndices = []; + for (let i = 0; i < indices.length; i++) { + const index = indices[i] * 3; + points.push(buffer[index], buffer[index + 1], buffer[index + 2]); + newIndices.push(i); + } + return { points: new Float32Array(points), indices: newIndices }; + } + getFaceBuffer(shell, profileId, buffer) { + const indices = ShellUtils.getProfileIndices(shell, profileId); + const { outer, inners } = indices; + const points = []; + for (let i = 0; i < outer.length; i++) { + const index = outer[i] * 3; + points.push(buffer[index], buffer[index + 1], buffer[index + 2]); + } + const holesIndices = []; + for (let i = 0; i < inners.length; i++) { + const currentHole = inners[i]; + holesIndices.push(points.length / 3); + for (let j = 0; j < currentHole.length; j++) { + const index = currentHole[j] * 3; + points.push(buffer[index], buffer[index + 1], buffer[index + 2]); + } + } + const a = new Vector3(); + const b = new Vector3(); + const c = new Vector3(); + a.set(points[0], points[1], points[2]); + b.set(points[3], points[4], points[5]); + c.set(points[6], points[7], points[8]); + const tri = new Triangle(); + tri.set(a, b, c); + const normal = new Vector3(); + tri.getNormal(normal); + const [dim1, dim2] = FaceUtils.getEarcutDimensions(normal); + const projectedPoints = []; + for (let i = 0; i < points.length; i += 3) { + const x = points[i]; + const y = points[i + 1]; + const z = points[i + 2]; + const point = [x, y, z]; + projectedPoints.push(point[dim1], point[dim2]); + } + const result = earcut$1(projectedPoints, holesIndices); + return { points: new Float32Array(points), indices: result }; + } +} +class ShellLineRaycaster { + constructor(meshes) { + __publicField(this, "_meshes"); + __publicField(this, "_minAngle", Math.PI / 32); + __publicField(this, "_shellProfile", new ShellProfile()); + __publicField(this, "_bigShellProfile", new BigShellProfile()); + __publicField(this, "_tempV1", new Vector3()); + __publicField(this, "_tempV2", new Vector3()); + __publicField(this, "_tempPoint", new Vector3()); + __publicField(this, "_normals", []); + __publicField(this, "_pointsByProfile", /* @__PURE__ */ new Map()); + __publicField(this, "_shell", new Shell()); + __publicField(this, "_result", []); + this._meshes = meshes; + } + lineRaycast(id, ray, frustum) { + this.resetData(id); + this.lineRaycastItems(ray, frustum); + return this._result; + } + lineRaycastItems(ray, frustum) { + const profilesCount = ShellUtils.getProfilesLength(this._shell); + for (let id = 0; id < profilesCount; id++) { + const profile = this.getTempProfile(this._shell); + ShellUtils.getProfile(this._shell, id, profile); + this.lineRaycastProfile(ray, frustum, id); + } + } + resetData(id) { + this._shell = ShellUtils.getShell(this._meshes, id); + this._normals.length = 0; + ShellUtils.getNormalsOfShellProfile(this._shell, this._normals); + this._pointsByProfile = ShellUtils.getPointsShell(this._shell); + this._result = []; + } + lineRaycastProfile(ray, frustum, id) { + const profile = this.getTempProfile(this._shell); + const indicesCount = profile.indicesLength(); + for (let i = 0; i < indicesCount; i++) { + const i1 = profile.indices(i); + const i2 = this.getSecondIndex(i, indicesCount); + const success = this.cast(i1, i2, ray, frustum, id); + if (success) { + this.saveResult(id); + } + } + } + isInvalidAngle(firstIndex, secondIndex, id) { + const profile = this.getProfile(firstIndex, secondIndex, id); + if (!profile.length) { + return true; + } + const normal1 = this._normals[profile[0]]; + const normal2 = this._normals[id]; + const angle = normal1.dot(normal2); + return angle > Math.cos(this._minAngle); + } + getProfile(firstIndex, secondIndex, id) { + const profile1 = this._pointsByProfile.get(firstIndex); + const profile2 = this._pointsByProfile.get(secondIndex); + const result = []; + for (const index of profile1) { + if (profile2.indexOf(index) === -1) + continue; + if (index === id) + continue; + result.push(index); + } + return result; + } + cast(i1, i2, ray, frustum, id) { + ShellUtils.point(this._shell, i1, this._tempV1); + ShellUtils.point(this._shell, i2, this._tempV2); + this.raycastSegment(ray); + const pointFound = frustum.containsPoint(this._tempPoint); + if (!pointFound) { + return false; + } + const invalidAngle = this.isInvalidAngle(i1, i2, id); + if (invalidAngle) { + return false; + } + return true; + } + saveResult(id) { + const snappedEdgeP1 = this._tempV1.clone(); + const snappedEdgeP2 = this._tempV2.clone(); + const normal = this._normals[id]; + const point = this._tempPoint.clone(); + this._result.push({ point, normal, snappedEdgeP1, snappedEdgeP2 }); + } + getSecondIndex(id, count) { + const isLast = id === count - 1; + const profile = this.getTempProfile(this._shell); + if (isLast) { + return profile.indices(0); + } + return profile.indices(id + 1); + } + raycastSegment(ray) { + ray.distanceSqToSegment( + this._tempV1, + this._tempV2, + void 0, + this._tempPoint + ); + } + getTempProfile(shell) { + if (shell.type() === ShellType.BIG) { + return this._bigShellProfile; + } + return this._shellProfile; + } +} +class ShellPointRaycaster { + constructor(_meshes) { + __publicField(this, "_meshes"); + __publicField(this, "_tempVec", new Vector3()); + this._meshes = _meshes; + } + pointRaycast(id, frustum) { + const shell = ShellUtils.getShell(this._meshes, id); + const points = []; + this.cast(shell, frustum, points); + return points; + } + cast(shell, frustum, points) { + const count = shell.pointsLength(); + for (let id = 0; id < count; id++) { + ShellUtils.point(shell, id, this._tempVec); + const pointFound = frustum.containsPoint(this._tempVec); + if (!pointFound) + continue; + const point = this._tempVec.clone(); + points.push({ point }); + } + } +} +class VirtualShellManager extends VirtualMeshManager { + constructor() { + super(...arguments); + __publicField(this, "_lodClass", LodClass.AABB); + __publicField(this, "_objectClass", ObjectClass.SHELL); + __publicField(this, "_representationClass", RepresentationClass.SHELL); + __publicField(this, "_templates", new ShellTemplateConstructor()); + __publicField(this, "_constructor", new ShellConstructor()); + __publicField(this, "_faceRaycaster", new ShellFaceRaycaster(this.meshes)); + __publicField(this, "_lineRaycaster", new ShellLineRaycaster(this.meshes)); + __publicField(this, "_pointRaycaster", new ShellPointRaycaster(this.meshes)); + } + fetchMeshes(meshId, evenVoid) { + const mesh = this.getMesh(meshId, CurrentLod.GEOMETRY); + this.constructMesh(mesh, evenVoid, meshId); + return mesh; + } + newMeshTemplate(shell) { + return this._templates.newMeshTemplate(shell); + } + lineRaycast(id, ray, frustum) { + return this._lineRaycaster.lineRaycast(id, ray, frustum); + } + faceRaycast(id, ray) { + return this._faceRaycaster.faceRaycast(id, ray); + } + raycast(id, ray) { + return this._faceRaycaster.faceRaycast(id, ray); + } + pointRaycast(id, _ray2, frustum) { + return this._pointRaycaster.pointRaycast(id, frustum); + } + setupTemplates() { + for (let i = 0, l = this.meshes.shellsLength(); i < l; i++) { + const poly = ShellUtils.getShell(this.meshes, i); + this.useMesh(i, this.newMeshTemplate(poly), CurrentLod.GEOMETRY); + } + } + getRepresentation() { + return this._representationClass; + } + getObjectClass() { + return this._objectClass; + } + getLodClass() { + return this._lodClass; + } + isVoidMesh(mesh) { + if (!Array.isArray(mesh)) { + return mesh.positionBuffer === void 0; + } + return mesh[0].positionBuffer === void 0; + } + constructMesh(mesh, evenVoid, meshId) { + const isVoid = this.isVoidMesh(mesh); + if (!isVoid || !evenVoid) + return; + const shell = ShellUtils.getShell(this.meshes, meshId); + this._constructor.construct(shell, mesh); + this.saveMesh(meshId, mesh, CurrentLod.GEOMETRY); + } +} +class VceCasterUtils { + static circleCurve3Divisions(input) { + const factor = 4; + const min = 4; + const max = 32; + const aperture = input.aperture(); + const radius = input.radius(); + const rawResult = aperture * radius * factor; + if (!Number.isFinite(rawResult)) { + return min; + } + const divisions = Math.round(rawResult); + return Math.min(Math.max(divisions, min), max); + } + static traverseCircleCurve(axis, callback, getDivisions) { + const count = axis.circleCurvesLength(); + const startAndEnd = 2; + for (let i = 0; i < count; i++) { + this.getAllCircleCurveData(axis, i); + const divisions = getDivisions(this._circleCurve); + this._circlePoints.length = divisions - startAndEnd; + this.getCircleCurveMids(divisions); + this.getNewCircleCurveData(); + callback(this._circleP1, this._circlePoints, this._circleP2); + } + } + static traverseWireSets(axis, callback) { + const wireSetCount = axis.wireSetsLength(); + for (let i = 0; i < wireSetCount; i++) { + axis.wireSets(i, this._wireSet); + this.traverseWireSetWires(callback); + } + } + static raycastCircleExtr(first, last, ray, radius) { + const distance = last.distanceTo(first); + this.setupCircleExtrusionAxes(last, first); + this.setupCircleExtrusionTransform(first, radius); + this.setupCircleExtrusionRay(ray); + return this.computeCircleExtrusionRaycast(distance, radius); + } + static traverseWires(axis, callback) { + const wiresCount = axis.wiresLength(); + for (let i = 0; i < wiresCount; i++) { + axis.wires(i, this._wire); + this.setWire(); + callback(this._wireP1, this._wireP2); + } + } + static getNewCircleCurveData() { + this._circleP2.copy(this._circleP1); + const aperture = this._circleCurve.aperture(); + const radius = this._circleCurve.radius(); + this._circleP2.applyAxisAngle(this._circleOrientation, aperture); + this._circleP2.multiplyScalar(radius); + this._circleP2.add(this._circleOrigin); + this._circleP1.multiplyScalar(radius); + this._circleP1.add(this._circleOrigin); + } + static setWire() { + this.setWirePoint("p1", this._wireP1); + this.setWirePoint("p2", this._wireP2); + } + static getCircleCurveMids(divisions) { + const count = this._circlePoints.length; + for (let i = 0; i < count; i++) { + this._circlePoints[i] = this.newCirclePoint(i, divisions); + } + } + static newCirclePoint(i, divisions) { + const divisionCount = divisions - 1; + const currentSegment = i + 1; + const point = new Vector3(); + point.copy(this._circleP1); + const radius = this._circleCurve.radius(); + const aperture = this._circleCurve.aperture(); + const progress = aperture * currentSegment; + const angle = progress / divisionCount; + point.applyAxisAngle(this._circleOrientation, angle); + point.multiplyScalar(radius); + point.add(this._circleOrigin); + return point; + } + static getAllCircleCurveData(axis, i) { + axis.circleCurves(i, this._circleCurve); + this.getCircleCurveData(this._circleOrigin, "position"); + this.getCircleCurveData(this._circleOrientation, "xDirection"); + this.getCircleCurveData(this._circleP1, "yDirection"); + } + static setWirePoint(point, vector) { + this._wire[point](this._floats); + const x = this._floats.x(); + const y = this._floats.y(); + const z = this._floats.z(); + vector.set(x, y, z); + } + static getCircleCurveData(vector, key) { + const data = this._circleCurve[key](); + this.getVectorData(data, vector); + } + static getVectorData(data, vector) { + const x = data.x(); + const y = data.y(); + const z = data.z(); + vector.set(x, y, z); + } + static traverseWireSetWires(callback) { + const pointsCount = this._wireSet.psLength(); + const wiresCount = pointsCount - 1; + for (let i = 0; i < wiresCount; i++) { + this.getWiresetPoint(this._currentWireSetPoint, i); + this.getWiresetPoint(this._nextWireSetPoint, i + 1); + callback(this._currentWireSetPoint, this._nextWireSetPoint); + } + } + static getWiresetPoint(point, index) { + const pointData = this._wireSet.ps(index); + this.getVectorData(pointData, point); + } + static setupCircleExtrusionTransform(first, radius) { + this._ceTransform.identity(); + this._ceTransform.makeBasis(this._ceAxisX, this._ceAxisY, this._ceAxisZ); + this._ceTransform.setPosition(first); + this._ceSize.set(radius, radius, radius); + this._ceTransform.scale(this._ceSize); + } + static computeCircleExtrusionRaycastFactors() { + const c1 = 2; + const c2 = 4; + const d = this._ceRay.direction; + const o = this._ceRay.origin; + const x = d.x * d.x + d.y * d.y; + const y = c1 * o.x * d.x + c1 * o.y * d.y; + const z = o.x * o.x + o.y * o.y - 1; + const v1 = c2 * x * z; + const v2 = y * y; + const nothingFound = v1 > v2; + if (nothingFound) { + return null; + } + const v3 = c1 * x; + const v4 = Math.sqrt(v2 - v1); + const factorA = (-y + v4) / v3; + const factorB = (-y - v4) / v3; + return { factorA, factorB }; + } + static computeCircleExtrusionRaycast(distance, radius) { + const result = this.computeCircleExtrusionRaycastFactors(); + if (result === null) { + return []; + } + const { factorA, factorB } = result; + this._ceInverseTransform.transpose(); + this._ceRaycastPoints = []; + this.computeCircleExtrusionRaycastPoints(factorA, distance, radius); + this.computeCircleExtrusionRaycastPoints(factorB, distance, radius); + return this._ceRaycastPoints; + } + static setupCircleExtrusionRay(ray) { + this._ceInverseTransform.copy(this._ceTransform); + this._ceInverseTransform.invert(); + this._ceRay.copy(ray); + this._ceRay.applyMatrix4(this._ceInverseTransform); + } + static computeCircleExtrusionRaycastPoints(factor, size, radius) { + const clashes = this.checkIfCircleExtrusionClashes(factor, size, radius); + if (!clashes) + return; + this._ceRaycastPoint.applyMatrix4(this._ceTransform); + const point = this._ceRaycastPoint.clone(); + this._ceRaycastPoints.push({ point }); + } + static setupCircleExtrusionAxes(last, first) { + this._ceAxisZ.copy(last); + this._ceAxisZ.sub(first); + this._ceAxisZ.normalize(); + this.computeNormal(this._ceAxisZ, this._ceAxisX); + this._ceAxisY.crossVectors(this._ceAxisZ, this._ceAxisX); + } + static computeNormal(source, target) { + const threshold = 0.9; + const dot = source.dot(this._ceAbsoluteX); + const absDot = Math.abs(dot); + const isLookingAtX = absDot > threshold; + const v = isLookingAtX ? this._ceAbsoluteZ : this._ceAbsoluteX; + target.crossVectors(source, v); + target.normalize(); + } + static setupCircleExtrusionRaycastPoint(factor) { + this._ceRaycastPoint.copy(this._ceRay.direction); + this._ceRaycastPoint.normalize(); + this._ceRaycastPoint.multiplyScalar(factor); + this._ceRaycastPoint.add(this._ceRay.origin); + } + static checkIfCircleExtrusionClashes(factor, size, radius) { + this.setupCircleExtrusionRaycastPoint(factor); + const rel = size / radius; + const z = this._ceRaycastPoint.z; + const clashes = z >= 0 && z <= rel; + return clashes; + } +} +__publicField(VceCasterUtils, "_floats", new FloatVector()); +__publicField(VceCasterUtils, "_wire", new Wire()); +__publicField(VceCasterUtils, "_wireSet", new WireSet()); +__publicField(VceCasterUtils, "_circleCurve", new CircleCurve()); +__publicField(VceCasterUtils, "_wireP1", new Vector3()); +__publicField(VceCasterUtils, "_wireP2", new Vector3()); +__publicField(VceCasterUtils, "_circleP1", new Vector3()); +__publicField(VceCasterUtils, "_circleP2", new Vector3()); +__publicField(VceCasterUtils, "_circleOrigin", new Vector3()); +__publicField(VceCasterUtils, "_circleOrientation", new Vector3()); +__publicField(VceCasterUtils, "_currentWireSetPoint", new Vector3()); +__publicField(VceCasterUtils, "_nextWireSetPoint", new Vector3()); +// ce: circle extrusion +__publicField(VceCasterUtils, "_ceAxisZ", new Vector3()); +__publicField(VceCasterUtils, "_ceAxisY", new Vector3()); +__publicField(VceCasterUtils, "_ceAxisX", new Vector3()); +__publicField(VceCasterUtils, "_ceRaycastPoint", new Vector3()); +__publicField(VceCasterUtils, "_ceSize", new Vector3()); +__publicField(VceCasterUtils, "_ceAbsoluteX", new Vector3(0, 0, 1)); +__publicField(VceCasterUtils, "_ceAbsoluteZ", new Vector3(1, 0, 0)); +__publicField(VceCasterUtils, "_circlePoints", []); +__publicField(VceCasterUtils, "_ceTransform", new Matrix4()); +__publicField(VceCasterUtils, "_ceInverseTransform", new Matrix4()); +__publicField(VceCasterUtils, "_ceRay", new Ray()); +__publicField(VceCasterUtils, "_ceRaycastPoints", []); +const _VceUtils = class _VceUtils { + static newPaths(circleCurve, size) { + const data = _VceUtils.newPathData(); + this.fetchCircleCurveData(circleCurve, data); + this.fetchCircleCurveMids(size, data, circleCurve); + this.fetchCircleCurveEnds(data, circleCurve); + this.fetchCircleCurveCuts(data); + return data.cuts; + } + static getAxisPartSize(axis, id, vertexSize) { + const part = axis.parts(id); + const order = axis.order(id); + const data = _VceUtils.getAxisPartData(part, vertexSize, axis, order); + _VceUtils.fetchAxisPartSize(vertexSize, data); + return this._axisPartSize; + } + static vertexLength(radius, factor = 200) { + const count = Math.round(radius * factor); + const clamped = Math.max(count, _VceUtils._minSize); + return Math.min(clamped, _VceUtils._maxSize); + } + static setPathVertices(vertexSize) { + const points = this.circleCurvePoints; + const noPoints = !points; + const pointsChanged = points && points.length !== vertexSize; + if (noPoints || pointsChanged) { + this.circleCurvePoints = []; + for (let i = 0; i < vertexSize; i++) { + const halfCircle = 2 * Math.PI; + const value = halfCircle * i; + const angle = value / vertexSize; + const sin = Math.sin(angle); + const cos = Math.cos(angle); + const result = new Vector3(sin, cos, 0); + this.circleCurvePoints.push(result); + } + } + } + static fetchCircleCurveEnds(data, circleCurve) { + data.last.copy(data.first); + data.last.applyAxisAngle(data.axis, circleCurve.aperture()); + data.last.multiplyScalar(circleCurve.radius()); + data.last.add(data.center); + data.first.multiplyScalar(circleCurve.radius()); + data.first.add(data.center); + } + static getAxisPartData(part, vertexSize, axis, order) { + const data = { + [AxisPartClass.WIRE]: this.getAxisPartWireData, + [AxisPartClass.WIRE_SET]: this.getAxisPartWireSetData, + [AxisPartClass.CIRCLE_CURVE]: this.getAxisPartCircleCurveData + }; + return data[part](axis, order, vertexSize); + } + static newEmptyAxisPartData() { + return { + indices: 0, + points: 0, + faces: 0, + links: 0 + }; + } + static fetchCircleCurveMids(size, data, circleCurve) { + const count = size - 2; + for (let i = 0; i < count; i++) { + const newMid = new Vector3(); + newMid.copy(data.first); + const aperture = circleCurve.aperture(); + const fraction = size - 1; + const totalAngle = aperture * (i + 1); + const angle = totalAngle / fraction; + newMid.applyAxisAngle(data.axis, angle); + newMid.multiplyScalar(circleCurve.radius()); + newMid.add(data.center); + data.mids[i] = newMid; + } + } + static validSize(pointsSize, extraPoints, vertexSize) { + const totalSize = pointsSize + extraPoints + vertexSize; + return limitOf2Bytes >= totalSize; + } + static fetchCircleCurveCuts(data) { + data.cuts.push(data.first); + data.cuts.push(...data.mids); + data.cuts.push(data.last); + } + static fetchCircleCurveData(circleCurve, data) { + const pos = circleCurve.position(); + data.center.set(pos.x(), pos.y(), pos.z()); + const xDir = circleCurve.xDirection(); + data.axis.set(xDir.x(), xDir.y(), xDir.z()); + const yDir = circleCurve.yDirection(); + data.first.set(yDir.x(), yDir.y(), yDir.z()); + } + static newPathData() { + return { + axis: new Vector3(), + cuts: [], + center: new Vector3(), + last: new Vector3(), + first: new Vector3(), + mids: [] + }; + } + static fetchAxisPartSize(vertexSize, data) { + const indexFactor = vertexSize - 2; + const coordsCount = 3; + const indices = data.faces * indexFactor * coordsCount; + const links = data.links * vertexSize * this._wireSize; + this._axisPartSize.verticesLength = data.points; + this._axisPartSize.indicesLength = data.indices + indices + links; + } +}; +__publicField(_VceUtils, "up", new Vector3(0, 0, 1)); +__publicField(_VceUtils, "circleCurves", []); +__publicField(_VceUtils, "circleCurvePoints"); +__publicField(_VceUtils, "temp", { + circleExtrusion: new CircleExtrusion(), + circleCurve: new CircleCurve(), + wireSet: new WireSet(), + axis: new Axis(), + rotation: new Quaternion(), + vector: new Vector3() +}); +__publicField(_VceUtils, "_wireSize", 6); +__publicField(_VceUtils, "_minSize", 6); +__publicField(_VceUtils, "_maxSize", 30); +__publicField(_VceUtils, "_axisPartSize", { + verticesLength: 0, + indicesLength: 0 +}); +__publicField(_VceUtils, "getAxisPartWireSetData", (axis, order, size) => { + const defValue = 2; + const data = _VceUtils.newEmptyAxisPartData(); + axis.wireSets(order, _VceUtils.temp.wireSet); + const wires = _VceUtils.temp.wireSet.psLength() - 1; + data.points = wires * defValue * size; + data.indices = _VceUtils._wireSize * wires * size; + data.faces = wires * defValue; + return data; +}); +__publicField(_VceUtils, "getAxisPartWireData", (_axis, _order, size) => { + const data = _VceUtils.newEmptyAxisPartData(); + data.points = 2 * size; + data.indices = _VceUtils._wireSize * size; + data.faces = 2; + return data; +}); +__publicField(_VceUtils, "getAxisPartCircleCurveData", (axis, order, size) => { + const data = _VceUtils.newEmptyAxisPartData(); + axis.circleCurves(order, _VceUtils.temp.circleCurve); + const bends = VceCasterUtils.circleCurve3Divisions(_VceUtils.temp.circleCurve); + const pointCount = size * bends; + data.points = pointCount; + const indexFactor = size * (bends - 1); + const indexCount = _VceUtils._wireSize * indexFactor; + data.indices = indexCount; + const defValue = 2; + data.faces = defValue; + data.links = defValue; + return data; +}); +let VceUtils = _VceUtils; +class VceConstructor { + constructor() { + __publicField(this, "_minLinkDistance", 1 / 1e8); + __publicField(this, "_first", new Vector3()); + __publicField(this, "_last", new Vector3()); + __publicField(this, "_currentPoint"); + __publicField(this, "_currentIndex"); + __publicField(this, "_v1", new Vector3()); + __publicField(this, "_v2", new Vector3()); + __publicField(this, "_v3", new Vector3()); + __publicField(this, "_v4", new Vector3()); + __publicField(this, "_tempLine", new Line3()); + __publicField(this, "_total", 0); + __publicField(this, "_closest", 0); + __publicField(this, "_result", 0); + } + newTemplate(ce, id, templates) { + const width = ce.radius(id); + const axis = ce.axes(id, VceUtils.temp.axis); + const vertexAmount = VceUtils.vertexLength(width); + const lastIndex = templates.length - 1; + let data = templates[lastIndex]; + const count = axis.orderLength(); + for (let i = 0; i < count; i++) { + data = this.generateTemplate(axis, i, vertexAmount, data, templates); + } + } + construct(circleExtrusion, meshData) { + const linkPoint = {}; + const data = void 0; + const position = 0; + let pointAmount = 0; + for (let i = 0, l = circleExtrusion.axesLength(); i < l; i++) { + const width = circleExtrusion.radius(i); + circleExtrusion.axes(i, VceUtils.temp.axis); + const transvSize = VceUtils.vertexLength(width); + pointAmount = this.constructVce( + transvSize, + linkPoint, + data, + pointAmount, + position, + meshData, + width + ); + } + } + getTemplateCreationData(data, axisPartDimension, vertexAmount) { + const isStart = !data; + let fits = false; + if (!isStart) { + const pointAmount = data.positionCount / 3; + const extraPoints = axisPartDimension.verticesLength; + fits = VceUtils.validSize(pointAmount, extraPoints, vertexAmount); + } + return { isStart, fits }; + } + generateTemplate(axis, id, vertexAmount, data, templates) { + const axisPartDimension = VceUtils.getAxisPartSize(axis, id, vertexAmount); + const { isStart, fits } = this.getTemplateCreationData( + data, + axisPartDimension, + vertexAmount + ); + const needsToGenerateNew = isStart || !fits; + if (needsToGenerateNew) { + data = this.newTemplateData(); + templates.push(data); + this.savePrevious(isStart, id, vertexAmount, data); + } + data.positionCount += axisPartDimension.verticesLength * 3; + data.normalCount += axisPartDimension.verticesLength * 3; + data.indexCount += axisPartDimension.indicesLength; + return data; + } + savePrevious(isStart, id, amount, data) { + const vFactor = 3; + const vOffset = 2; + const needsSavePreviousData = !isStart && id !== 0; + if (needsSavePreviousData) { + const extraIndices = (amount - vOffset) * vFactor; + data.positionCount += amount * vFactor; + data.normalCount += amount * vFactor; + data.indexCount += extraIndices; + } + } + constructNewVce(data, axisPartSize, pointAmount, transvSize, meshData, position, id) { + const isStart = !data; + let fits = false; + if (!isStart) { + const extraPoints = axisPartSize.verticesLength; + fits = VceUtils.validSize(pointAmount, extraPoints, transvSize); + } + const needsNew = isStart || !fits; + if (needsNew) { + data = meshData[position++]; + this.setupNewVceBuffers(data); + const pastOffset = this._currentPoint; + pointAmount = this.clearOffset(pointAmount); + const needsCopyPastData = !isStart && id !== 0; + if (needsCopyPastData) { + const pastData = meshData[position - 2]; + this.getClone(pastData, data, pastOffset, transvSize); + pointAmount += transvSize; + } + } + return { data, pointAmount, position }; + } + constructVce(transvSize, linkPoint, data, pointAmount, position, meshData, width) { + const count = VceUtils.temp.axis.orderLength(); + for (let i = 0; i < count; i++) { + const axis = VceUtils.temp.axis; + const axisPartSize = VceUtils.getAxisPartSize(axis, i, transvSize); + this.setupLink(i, linkPoint); + ({ data, pointAmount, position } = this.constructNewVce( + data, + axisPartSize, + pointAmount, + transvSize, + meshData, + position, + i + )); + this.newAxisPart( + VceUtils.temp.axis, + i, + data, + width, + transvSize, + linkPoint + ); + pointAmount += axisPartSize.verticesLength; + } + return pointAmount; + } + newTemplateData() { + return { + objectClass: ObjectClass.SHELL, + indexCount: 0, + positionCount: 0, + normalCount: 0 + }; + } + setupNewVceBuffers(data) { + data.positionBuffer = new Float32Array(data.positionCount); + data.normalBuffer = new Int16Array(data.normalCount); + data.indexBuffer = new Uint16Array(data.indexCount); + } + clearOffset(pointAmount) { + this._currentPoint = 0; + this._currentIndex = 0; + pointAmount = 0; + return pointAmount; + } + getClone(inp, out, last, size) { + const start = size * -3; + for (let i = start; i < 0; i++) { + const oPoints = out.positionBuffer; + const iPoints = inp.positionBuffer; + const oNorm = out.normalBuffer; + const iNorm = inp.normalBuffer; + oPoints[this._currentPoint] = iPoints[last + i]; + oNorm[this._currentPoint] = iNorm[last + i]; + this._currentPoint++; + } + } + manageAxisPartCreation(axisPartClass, axis, position, radius, virtualMesh, vertexSize, linkPoint) { + if (axisPartClass === AxisPartClass.CIRCLE_CURVE) { + const current = axis.circleCurves(position); + this.newCircleCurve(current, radius, virtualMesh, vertexSize, linkPoint); + return; + } + if (axisPartClass === AxisPartClass.WIRE_SET) { + const current = axis.wireSets(position); + this.newWireSet(current, radius, virtualMesh, vertexSize, linkPoint); + return; + } + if (axisPartClass === AxisPartClass.WIRE) { + const current = axis.wires(position); + this.newWire(current, radius, virtualMesh, vertexSize, linkPoint); + } + } + newWireSetStart(i, virtualMesh, vertexSize, linkPoint) { + if (i === 1) { + this.linkStart( + virtualMesh, + vertexSize, + linkPoint, + this._first, + AxisPartClass.WIRE_SET + ); + } else { + this.newPathOrderData(virtualMesh, vertexSize); + } + } + newWireSet(wireSet, radius, virtualMesh, vertexSize, linkPoint) { + for (let i = 1, length = wireSet.psLength(); i < length; i++) { + const rot = VceUtils.temp.rotation; + this.getWireSetPoints(wireSet, i); + this.setWireSetVector(); + this.newPath(this._first, radius, rot, virtualMesh, vertexSize); + this.newWireSetStart(i, virtualMesh, vertexSize, linkPoint); + this.newPath(this._last, radius, rot, virtualMesh, vertexSize); + this.fillWireSetData(i, length, linkPoint, virtualMesh, vertexSize); + this.linkPaths(virtualMesh, vertexSize); + } + } + fillWireSetData(i, length, linkPoint, virtualMesh, vertexSize) { + if (i !== length - 1 || linkPoint.last) { + this.newPathOrderData(virtualMesh, vertexSize, true); + } else { + linkPoint.placement = this._last; + linkPoint.axisClass = AxisPartClass.WIRE_SET; + } + } + setWireSetVector() { + VceUtils.temp.vector.copy(this._last); + VceUtils.temp.vector.sub(this._first); + VceUtils.temp.vector.normalize(); + VceUtils.temp.rotation.setFromUnitVectors( + VceUtils.up, + VceUtils.temp.vector + ); + } + newCircleCurveBody(count, radius, virtualMesh, vertexSize) { + const amount = count - 2; + for (let i = 0; i < amount; i++) { + const c1 = VceUtils.circleCurves[i]; + const c2 = VceUtils.circleCurves[i + 1]; + const c3 = VceUtils.circleCurves[i + 2]; + const vec = VceUtils.temp.vector; + vec.copy(c3); + vec.sub(c1); + vec.normalize(); + VceUtils.temp.rotation.setFromUnitVectors(VceUtils.up, vec); + this.newPath(c2, radius, VceUtils.temp.rotation, virtualMesh, vertexSize); + this.linkPaths(virtualMesh, vertexSize, true); + } + } + newCircleCurveFinish(count, radius, mesh, vertexSize, linkPoint) { + const pos1 = count - 2; + const pos2 = count - 1; + const c1 = VceUtils.circleCurves[pos1]; + const c2 = VceUtils.circleCurves[pos2]; + const vec = VceUtils.temp.vector; + vec.copy(c2); + vec.sub(c1); + vec.normalize(); + VceUtils.temp.rotation.setFromUnitVectors(VceUtils.up, vec); + this.newPath(c2, radius, VceUtils.temp.rotation, mesh, vertexSize); + if (linkPoint.last) { + this.newPathOrderData(mesh, vertexSize, true); + return; + } + linkPoint.placement = VceUtils.circleCurves[pos2]; + linkPoint.axisClass = AxisPartClass.CIRCLE_CURVE; + } + setupLink(id, linkPoint) { + if (id === 0) { + linkPoint.first = true; + } + const count = VceUtils.temp.axis.orderLength(); + if (id === count - 1) { + linkPoint.last = true; + } + } + newCircleCurveStart(radius, virtualMesh, vertexSize, linkPoint) { + const c1 = VceUtils.circleCurves[0]; + const c2 = VceUtils.circleCurves[1]; + const vec = VceUtils.temp.vector; + vec.copy(c2); + vec.sub(c1); + vec.normalize(); + VceUtils.temp.rotation.setFromUnitVectors(VceUtils.up, vec); + this.newPath(c1, radius, VceUtils.temp.rotation, virtualMesh, vertexSize); + const aClass = AxisPartClass.CIRCLE_CURVE; + this.linkStart(virtualMesh, vertexSize, linkPoint, c1, aClass); + } + getWireSetPoints(wireSet, i) { + const p1 = wireSet.ps(i - 1); + this._first.set(p1.x(), p1.y(), p1.z()); + const p2 = wireSet.ps(i); + this._last.set(p2.x(), p2.y(), p2.z()); + } + finishWire(radius, mesh, vertexSize, linkPoint) { + this.newPath(this._last, radius, VceUtils.temp.rotation, mesh, vertexSize); + if (linkPoint.last) { + this.newPathOrderData(mesh, vertexSize, true); + } else { + linkPoint.placement = this._last; + linkPoint.axisClass = AxisPartClass.WIRE; + } + this.linkPaths(mesh, vertexSize); + } + linkPaths(mesh, vertexSize, getLinked = false) { + const s = vertexSize; + const { p1, p2, p3 } = this.getPathPositions(s, getLinked, mesh); + const index = mesh.indexBuffer; + for (let i = 0; i < s; i++) { + const i0 = (i + 1) % s; + const { i3, i4, i1, i2 } = this.getLinkPathIndices(p3, i, p1, s, i0, p2); + index[this._currentIndex++] = i3; + index[this._currentIndex++] = i4; + index[this._currentIndex++] = i1; + index[this._currentIndex++] = i1; + index[this._currentIndex++] = i4; + index[this._currentIndex++] = i2; + } + } + startWire(radius, mesh, vertexSize, linkPoint) { + this.newPath(this._first, radius, VceUtils.temp.rotation, mesh, vertexSize); + const aClass = AxisPartClass.WIRE; + this.linkStart(mesh, vertexSize, linkPoint, this._first, aClass); + } + setupWireVectors() { + const vec = VceUtils.temp.vector; + vec.copy(this._last); + vec.sub(this._first); + vec.normalize(); + VceUtils.temp.rotation.setFromUnitVectors(VceUtils.up, vec); + } + getLinkPathIndices(p3, i, p1, s, i0, p2) { + let i1 = 0; + let i2 = 0; + let i3 = 0; + let i4 = 0; + if (p3 + i >= p1) { + i1 = p3 + i - s; + } else { + i1 = p3 + i; + } + if (p3 + i0 >= p1) { + i2 = p3 + i0 - s; + } else { + i2 = p3 + i0; + } + if (p2 + i >= p1 + s) { + i3 = p2 + i - s; + } else { + i3 = p2 + i; + } + if (p2 + i0 >= p1 + s) { + i4 = p2 + i0 - s; + } else { + i4 = p2 + i0; + } + return { i3, i4, i1, i2 }; + } + fetchWirePoints(wire) { + const p1 = wire.p1(); + const p2 = wire.p2(); + this._first.set(p1.x(), p1.y(), p1.z()); + this._last.set(p2.x(), p2.y(), p2.z()); + } + findLinkedVertex(selected, limit, mesh, size, offset) { + for (let i = selected; i < limit; i++) { + this.point(i, mesh, this._v1); + const pos = i - size + offset; + const p1 = pos >= selected ? pos - size : pos; + this.point(p1, mesh, this._v2); + const p2 = pos + 1 >= selected ? pos + 1 - size : pos + 1; + this.point(p2, mesh, this._v3); + this._tempLine.set(this._v2, this._v3); + this._tempLine.closestPointToPoint(this._v1, true, this._v4); + this._total += this._v4.distanceTo(this._v1); + } + } + newPath(point, radius, rotation, mesh, vertexSize) { + VceUtils.setPathVertices(vertexSize); + const pathStep = 3; + for (let i = 0; i < vertexSize; i++) { + this.setPathPosition(i, radius, rotation, point, mesh); + this.setPathNormal(i, rotation, mesh); + this._currentPoint += pathStep; + } + } + linkStart(mesh, vertexSize, linkPoint, position, partClass) { + const isStart = linkPoint.first; + if (isStart) { + this.newPathOrderData(mesh, vertexSize); + return; + } + const curveClass = AxisPartClass.CIRCLE_CURVE; + const isCircle1 = linkPoint.axisClass === curveClass; + const isCircle2 = partClass === curveClass; + const compatible = isCircle1 || isCircle2; + const distance = linkPoint.placement.distanceToSquared(position); + const isLinked = distance < this._minLinkDistance; + if (!compatible || !isLinked) { + this.newPathOrderData(mesh, vertexSize, true, true); + this.newPathOrderData(mesh, vertexSize); + return; + } + this.linkPaths(mesh, vertexSize, true); + } + setPathPosition(id, radius, rotation, point, mesh) { + const vec = VceUtils.temp.vector; + vec.copy(VceUtils.circleCurvePoints[id]); + vec.multiplyScalar(radius); + vec.applyQuaternion(rotation); + vec.add(point); + const pos = mesh.positionBuffer; + const location1 = this._currentPoint; + const location2 = this._currentPoint + 1; + const location3 = this._currentPoint + 2; + pos[location1] = vec.x; + pos[location2] = vec.y; + pos[location3] = vec.z; + } + newWire(wire, radius, mesh, vertexSize, linkPoint) { + this.fetchWirePoints(wire); + this.setupWireVectors(); + this.startWire(radius, mesh, vertexSize, linkPoint); + this.finishWire(radius, mesh, vertexSize, linkPoint); + } + newCircleCurve(circleCurve, radius, mesh, vertexSize, linkPoint) { + const count = VceCasterUtils.circleCurve3Divisions(circleCurve); + VceUtils.circleCurves = VceUtils.newPaths(circleCurve, count); + this.newCircleCurveStart(radius, mesh, vertexSize, linkPoint); + this.newCircleCurveBody(count, radius, mesh, vertexSize); + this.newCircleCurveFinish(count, radius, mesh, vertexSize, linkPoint); + this.linkPaths(mesh, vertexSize, true); + } + newPathOrderData(mesh, vertexSize, reverse = false, past = false) { + const step1 = 1; + const step2 = 2; + const count = vertexSize - 2; + const index = mesh.indexBuffer; + for (let i = 0; i < count; i++) { + const p = this._currentPoint / 3; + const rawOffset = past ? step2 : step1; + const offset = vertexSize * rawOffset; + const indexValue1 = p - offset; + index[this._currentIndex] = indexValue1; + this._currentIndex++; + const offset2 = reverse ? step2 : step1; + const indexValue2 = p + i + offset2 - offset; + index[this._currentIndex] = indexValue2; + this._currentIndex++; + const offset3 = reverse ? step1 : step2; + const indexValue3 = p + i + offset3 - offset; + index[this._currentIndex] = indexValue3; + this._currentIndex++; + } + } + getPathPositions(vertexSize, getLinked, mesh) { + const p1 = this._currentPoint / 3 - vertexSize; + const p2 = p1; + let p3 = p1 - vertexSize; + if (getLinked) { + p3 = this.fetchLinkedVertex(p1, mesh, vertexSize); + } + return { p3, p1, p2 }; + } + newAxisPart(axis, id, virtualMesh, radius, vertexSize, linkPoint) { + const axisPartClass = axis.parts(id); + const position = axis.order(id); + this.manageAxisPartCreation( + axisPartClass, + axis, + position, + radius, + virtualMesh, + vertexSize, + linkPoint + ); + linkPoint.first = false; + linkPoint.last = false; + } + fetchLinkedVertex(selected, mesh, size) { + this._closest = Number.MAX_VALUE; + for (let i = 0; i < size; i++) { + this._total = 0; + const limit = selected + size; + this.findLinkedVertex(selected, limit, mesh, size, i); + const closerFound = this._total < this._closest; + if (!closerFound) + continue; + this._closest = this._total; + this._result = selected - size + i + 1; + } + return this._result; + } + setPathNormal(id, rotation, mesh) { + const vec = VceUtils.temp.vector; + const currentPoint = VceUtils.circleCurvePoints[id]; + vec.copy(currentPoint); + vec.applyQuaternion(rotation); + const nor = mesh.normalBuffer; + const location1 = this._currentPoint; + const location2 = this._currentPoint + 1; + const location3 = this._currentPoint + 2; + nor[location1] = vec.x * normalizationValue; + nor[location2] = vec.y * normalizationValue; + nor[location3] = vec.z * normalizationValue; + } + point(selected, virtualMesh, result) { + const pos = virtualMesh.positionBuffer; + const ix = selected * 3; + const iy = selected * 3 + 1; + const iz = selected * 3 + 2; + const x = pos[ix]; + const y = pos[iy]; + const z = pos[iz]; + result.set(x, y, z); + return result; + } +} +class VceRaycaster { + constructor(meshes) { + __publicField(this, "_meshes"); + __publicField(this, "_results", []); + __publicField(this, "_circleExtrusion", new CircleExtrusion()); + __publicField(this, "_axis", new Axis()); + this._meshes = meshes; + } + raycast(id, ray) { + this._results.length = 0; + this._meshes.circleExtrusions(id, this._circleExtrusion); + for (let i = 0, l = this._circleExtrusion.axesLength(); i < l; i++) { + this._circleExtrusion.axes(i, this._axis); + const radius = this._circleExtrusion.radius(i); + this.traverseAllCurves(ray, radius); + } + return this._results; + } + getTraverseWiresEvent(ray, radius) { + return (start, end) => { + this.castCurveExtrusion(start, end, ray, radius); + }; + } + castCurveExtrusion(a, b, ray, radius) { + const u = VceCasterUtils; + const result1 = u.raycastCircleExtr(a, b, ray, radius); + for (const result of result1) { + this._results.push(result); + } + } + getTraverseCircleCurveEvent(ray, radius) { + return (first, mids, last) => { + const second = mids[0]; + this.castCurveExtrusion(first, second, ray, radius); + for (let i = 0; i < mids.length; i++) { + if (i === 0) + continue; + const first2 = mids[i - 1]; + const second2 = mids[i]; + this.castCurveExtrusion(first2, second2, ray, radius); + } + const nextToLast = mids[mids.length - 1]; + this.castCurveExtrusion(nextToLast, last, ray, radius); + }; + } + traverseAllCurves(ray, radius) { + const wireEvent = this.getTraverseWiresEvent(ray, radius); + VceCasterUtils.traverseWires(this._axis, wireEvent); + const circleCurveEvent = this.getTraverseCircleCurveEvent(ray, radius); + const divider = VceCasterUtils.circleCurve3Divisions; + VceCasterUtils.traverseCircleCurve(this._axis, circleCurveEvent, divider); + const wireSetEvent = this.getTraverseWiresEvent(ray, radius); + VceCasterUtils.traverseWireSets(this._axis, wireSetEvent); + } +} +class VceLineRaycaster { + constructor(meshes) { + __publicField(this, "_meshes"); + __publicField(this, "_found", []); + __publicField(this, "_circleExtrusion", new CircleExtrusion()); + __publicField(this, "_axis", new Axis()); + __publicField(this, "_wirePoint", new Vector3()); + this._meshes = meshes; + } + lineRaycast(id, ray) { + this._found.length = 0; + this._meshes.circleExtrusions(id, this._circleExtrusion); + const count = this._circleExtrusion.axesLength(); + for (let index = 0; index < count; index++) { + this._circleExtrusion.axes(index, this._axis); + this.processLineRaycast(index, ray); + } + return this._found; + } + wireSetRaycast(ray, radius) { + const axis = this._axis; + VceCasterUtils.traverseWireSets( + axis, + (start, end) => { + this.cylinderRaycast(start, end, ray, radius); + } + ); + } + exclusiveCylinderRaycast(ray, radius) { + const axis = this._axis; + const event = this.getCylinderRaycastEvent(ray, radius); + VceCasterUtils.traverseWires(axis, event); + } + processLineRaycast(id, ray) { + const width = this._circleExtrusion.radius(id); + this.exclusiveCylinderRaycast(ray, width); + this.circleCurveRaycast(ray, width); + this.wireSetRaycast(ray, width); + } + getCylinderRaycastEvent(ray, radius) { + return (start, end) => { + this.cylinderRaycast(start, end, ray, radius); + }; + } + processCircleCurveBody(body, ray, radius) { + for (let i = 0; i < body.length; i++) { + if (i === 0) + continue; + const mid = body[i]; + const past = body[i - 1]; + this.cylinderRaycast(past, mid, ray, radius); + } + } + getCircleCurveRaycastEvent(ray, radius) { + return (first, body, last) => { + this.cylinderRaycast(first, body[0], ray, radius); + this.processCircleCurveBody(body, ray, radius); + const nextToLast = body[body.length - 1]; + this.cylinderRaycast(nextToLast, last, ray, radius); + }; + } + fetchCylinderRaycastResult(ray, first, last) { + ray.distanceSqToSegment(first, last, void 0, this._wirePoint); + const resultData = this.newResult(first, last); + this._found.push(resultData); + } + circleCurveRaycast(ray, radius) { + const divisionLogic = VceCasterUtils.circleCurve3Divisions; + const event = this.getCircleCurveRaycastEvent(ray, radius); + VceCasterUtils.traverseCircleCurve(this._axis, event, divisionLogic); + } + newResult(first, last) { + return { + point: this._wirePoint.clone(), + raySquaredDistance: void 0, + snappedEdgeP1: first.clone(), + snappedEdgeP2: last.clone() + }; + } + cylinderRaycast(first, last, ray, radius) { + const u = VceCasterUtils; + const results = u.raycastCircleExtr(first, last, ray, radius); + for (const result of results) { + if (!result.point) + continue; + this.fetchCylinderRaycastResult(ray, first, last); + } + } +} +class VcePointRaycaster { + constructor(meshes) { + __publicField(this, "_meshes"); + __publicField(this, "_results", []); + __publicField(this, "_circleExtrusion", new CircleExtrusion()); + __publicField(this, "_axis", new Axis()); + __publicField(this, "_normal", new Vector3()); + __publicField(this, "_point", new Vector3()); + __publicField(this, "_plane", new Plane()); + this._meshes = meshes; + } + pointRaycast(id, ray) { + this._results.length = 0; + this._meshes.circleExtrusions(id, this._circleExtrusion); + this.traverseAllCircleExtrusions(ray); + return this.getCleanResults(); + } + fetchOrientation(p1, p2) { + VceUtils.temp.vector.copy(p1); + VceUtils.temp.vector.sub(p2); + VceUtils.temp.vector.normalize(); + const rot = VceUtils.temp.rotation; + rot.setFromUnitVectors(VceUtils.up, VceUtils.temp.vector); + } + getTraverseWiresEvent(ray, radius) { + return (first, last) => { + this.fetchOrientation(first, last); + const result1 = this.raycastCutCircleExtrusion(first, ray, radius); + const result2 = this.raycastCutCircleExtrusion(last, ray, radius); + this._results.push(result1, result2); + }; + } + traverseAllCircleExtrusions(ray) { + const count = this._circleExtrusion.axesLength(); + for (let i = 0; i < count; i++) { + this._circleExtrusion.axes(i, this._axis); + const radius = this._circleExtrusion.radius(i); + const count2 = VceUtils.vertexLength(radius); + VceUtils.setPathVertices(count2); + this.traverseAllCurves(ray, radius); + } + } + setupCuttedCircleExtrusion(origin) { + this._normal.set(0, 0, 1); + this._normal.applyQuaternion(VceUtils.temp.rotation); + this._plane.setFromNormalAndCoplanarPoint(this._normal, origin); + } + getTraverseCircleCurveEvent(ray, radius) { + return (first, mids, last) => { + this.fetchOrientation(first, mids[0]); + const result1 = this.raycastCutCircleExtrusion(first, ray, radius); + const nextToLast = mids[mids.length - 1]; + this.fetchOrientation(nextToLast, last); + const result2 = this.raycastCutCircleExtrusion(last, ray, radius); + this._results.push(result1, result2); + }; + } + computeCutCircleExtrCast(origin, radius, ray) { + ray.intersectPlane(this._plane, this._point); + const distance = this._point.distanceTo(origin); + if (distance <= radius) { + const point = origin.clone(); + return { point }; + } + return void 0; + } + raycastCutCircleExtrusion(origin, ray, radius) { + this.setupCuttedCircleExtrusion(origin); + const collides = ray.intersectsPlane(this._plane); + if (collides) { + return this.computeCutCircleExtrCast(origin, radius, ray); + } + return void 0; + } + getCleanResults() { + const filtered = []; + for (const result of this._results) { + if (result) { + filtered.push(result); + } + } + return filtered; + } + traverseAllCurves(ray, radius) { + const wiresEvent = this.getTraverseWiresEvent(ray, radius); + VceCasterUtils.traverseWires(this._axis, wiresEvent); + const circleEvent = this.getTraverseCircleCurveEvent(ray, radius); + const divider = VceCasterUtils.circleCurve3Divisions; + VceCasterUtils.traverseCircleCurve(this._axis, circleEvent, divider); + const wireSetsEvent = this.getTraverseWiresEvent(ray, radius); + VceCasterUtils.traverseWireSets(this._axis, wireSetsEvent); + } +} +class VceLodConstructor { + constructor() { + __publicField(this, "_currentElement", 0); + __publicField(this, "_wireSize", 6); + __publicField(this, "newCircleCurveLod", (axis, index, mesh) => { + const count = this.newCircleCurveLodPath(axis, index); + const points = mesh.positionBuffer; + for (let i = 1; i < count; i++) { + const first = VceUtils.circleCurves[i - 1]; + const last = VceUtils.circleCurves[i]; + this.newWire(points, first, last); + } + }); + __publicField(this, "newWireSetLod", (axis, index, mesh) => { + const wireSetSegment = axis.wireSets(index); + const count = wireSetSegment.psLength(); + const points = mesh.positionBuffer; + for (let i = 1; i < count; i++) { + const first = wireSetSegment.ps(i - 1); + const last = wireSetSegment.ps(i); + this.newWire(points, first, last); + } + }); + __publicField(this, "newWireTemplate", (_index, template) => { + template.positionCount += this._wireSize; + }); + __publicField(this, "newWireSetTemplate", (index, template) => { + const axis = VceUtils.temp.axis; + const wireSet = axis.wireSets(index, VceUtils.temp.wireSet); + const wires = wireSet.psLength() - 1; + template.positionCount += this._wireSize * wires; + }); + __publicField(this, "newWireLod", (axis, index, mesh) => { + const wire = axis.wires(index); + const first = wire.p1(); + const last = wire.p2(); + const points = mesh.positionBuffer; + this.newWire(points, first, last); + }); + __publicField(this, "newCircleCurveTemplate", (index, template) => { + const axis = VceUtils.temp.axis; + const circleCurve = axis.circleCurves(index, VceUtils.temp.circleCurve); + const count = VceCasterUtils.circleCurve3Divisions(circleCurve); + template.positionCount += this._wireSize * (count - 1); + }); + } + construct(circleExtrusion, mesh) { + this._currentElement = 0; + mesh.positionBuffer = new Float32Array(mesh.positionCount); + for (let i = 0, l = circleExtrusion.axesLength(); i < l; i++) { + circleExtrusion.axes(i, VceUtils.temp.axis); + this.constructLod(mesh); + } + return mesh; + } + constructCircleExtrusionLod(id, mesh) { + const axis = VceUtils.temp.axis; + const type = axis.parts(id); + const index = axis.order(id); + const lodConstructor = this.getLodConstructor(type); + lodConstructor(axis, index, mesh); + } + newCircleCurveLodPath(axis, index) { + const curve = axis.circleCurves(index); + const count = VceCasterUtils.circleCurve3Divisions(curve); + VceUtils.circleCurves = VceUtils.newPaths(curve, count); + return count; + } + selectNextWire() { + this._currentElement += this._wireSize; + } + getAxisPartVertexSize(id, template) { + const axis = VceUtils.temp.axis; + const partClass = axis.parts(id); + const order = axis.order(id); + const templateConstructor = this.getTemplateConstructor(partClass); + templateConstructor(order, template); + } + getIndices() { + const i1 = this._currentElement; + const i2 = this._currentElement + 1; + const i3 = this._currentElement + 2; + const i4 = this._currentElement + 3; + const i5 = this._currentElement + 4; + const i6 = this._currentElement + 5; + return { i1, i2, i3, i4, i5, i6 }; + } + setAxisTemplate(id, template) { + VceUtils.temp.circleExtrusion.axes(id, VceUtils.temp.axis); + const count = VceUtils.temp.axis.partsLength(); + for (let id2 = 0; id2 < count; id2++) { + this.getAxisPartVertexSize(id2, template); + } + this.setAxisThickness(template, id); + } + constructLod(mesh) { + const count = VceUtils.temp.axis.orderLength(); + for (let id = 0; id < count; id++) { + this.constructCircleExtrusionLod(id, mesh); + } + } + getLodConstructor(type) { + const constructors = { + [AxisPartClass.WIRE]: this.newWireLod, + [AxisPartClass.WIRE_SET]: this.newWireSetLod, + [AxisPartClass.CIRCLE_CURVE]: this.newCircleCurveLod + }; + return constructors[type]; + } + newTemplate() { + const circularExtrusion = VceUtils.temp.circleExtrusion; + const template = this.newTemplateData(); + const count = circularExtrusion.axesLength(); + for (let id = 0; id < count; id++) { + this.setAxisTemplate(id, template); + } + return template; + } + setAxisThickness(template, id) { + const l1 = template.lodThickness; + const l2 = VceUtils.temp.circleExtrusion.radius(id); + template.lodThickness = Math.max(l1, l2); + } + newTemplateData() { + return { + objectClass: ObjectClass.LINE, + lod: CurrentLod.WIRES, + lodThickness: 0, + positionCount: 0 + }; + } + getTemplateConstructor(type) { + const constructors = { + [AxisPartClass.WIRE]: this.newWireTemplate, + [AxisPartClass.WIRE_SET]: this.newWireSetTemplate, + [AxisPartClass.CIRCLE_CURVE]: this.newCircleCurveTemplate + }; + return constructors[type]; + } + newWire(points, first, last) { + const x1 = first instanceof Vector3 ? first.x : first.x(); + const y1 = first instanceof Vector3 ? first.y : first.y(); + const z1 = first instanceof Vector3 ? first.z : first.z(); + const x2 = last instanceof Vector3 ? last.x : last.x(); + const y2 = last instanceof Vector3 ? last.y : last.y(); + const z2 = last instanceof Vector3 ? last.z : last.z(); + const { i1, i2, i3, i4, i5, i6 } = this.getIndices(); + points[i1] = x1; + points[i2] = y1; + points[i3] = z1; + points[i4] = x2; + points[i5] = y2; + points[i6] = z2; + this.selectNextWire(); + } +} +class VirtualCircleExtrusionManager extends VirtualMeshManager { + constructor() { + super(...arguments); + __publicField(this, "_vceConstructor", new VceConstructor()); + __publicField(this, "_lodConstructor", new VceLodConstructor()); + __publicField(this, "_vceRaycaster", new VceRaycaster(this.meshes)); + __publicField(this, "_vceLineRaycaster", new VceLineRaycaster(this.meshes)); + __publicField(this, "_vcePointRaycaster", new VcePointRaycaster(this.meshes)); + __publicField(this, "_representationClass", RepresentationClass.CIRCLE_EXTRUSION); + __publicField(this, "_objectClass", ObjectClass.LINE); + __publicField(this, "lodClass", LodClass.CUSTOM); + } + setupTemplates() { + const count = this.meshes.circleExtrusionsLength(); + for (let id = 0; id < count; id++) { + this.newCircleExtrusionTemplate(id); + } + } + fetchLod(meshId, evenVoid) { + const lod = this.getMesh(meshId, CurrentLod.WIRES); + this.generateLodIfNeeded(meshId, evenVoid, lod); + return lod; + } + fetchMeshes(meshId, evenVoid) { + const meshes = this.getMesh(meshId, CurrentLod.GEOMETRY); + this.generateMeshesIfNeeded(meshId, evenVoid, meshes); + return meshes; + } + raycast(id, ray) { + return this._vceRaycaster.raycast(id, ray); + } + faceRaycast() { + return []; + } + pointRaycast(id, ray) { + return this._vcePointRaycaster.pointRaycast(id, ray); + } + lineRaycast(id, ray) { + return this._vceLineRaycaster.lineRaycast(id, ray); + } + getObjectClass() { + return this._objectClass; + } + getRepresentation() { + return this._representationClass; + } + getLodClass() { + return this.lodClass; + } + newMeshes(meshId, meshes) { + this.meshes.circleExtrusions(meshId, VceUtils.temp.circleExtrusion); + const circleExtrusion = VceUtils.temp.circleExtrusion; + this._vceConstructor.construct(circleExtrusion, meshes); + this.saveMesh(meshId, meshes, CurrentLod.GEOMETRY); + } + generateMeshesIfNeeded(meshId, createIfVoid, meshes) { + if (meshes.length === 0) { + return; + } + const meshesExist = Boolean(meshes.length); + const isVoid = !meshes[0].positionBuffer; + const shouldCreate = createIfVoid && isVoid && meshesExist; + if (shouldCreate) { + this.newMeshes(meshId, meshes); + } + } + newCircleExtrusionTemplate(id) { + const meshTemplate = []; + this.meshes.circleExtrusions(id, VceUtils.temp.circleExtrusion); + const circleExtrusion = VceUtils.temp.circleExtrusion; + const count = circleExtrusion.axesLength(); + for (let i = 0; i < count; i++) { + this._vceConstructor.newTemplate(circleExtrusion, i, meshTemplate); + } + const lodTemplate = this._lodConstructor.newTemplate(); + this.useMesh(id, meshTemplate, CurrentLod.GEOMETRY); + this.useMesh(id, lodTemplate, CurrentLod.WIRES); + } + generateLodIfNeeded(meshId, evenVoid, mesh) { + const isVoid = !mesh.positionBuffer; + if (!isVoid || !evenVoid) + return; + this.meshes.circleExtrusions(meshId, VceUtils.temp.circleExtrusion); + this._lodConstructor.construct(VceUtils.temp.circleExtrusion, mesh); + this.saveMesh(meshId, mesh, CurrentLod.WIRES); + } +} +class ItemConfigController { + constructor(size) { + __publicField(this, "size"); + __publicField(this, "_data"); + __publicField(this, "_highlightData"); + this.size = size; + this._data = new Uint8Array(size); + this._highlightData = new Uint16Array(size); + this._data.fill(1); + } + getHighlight(id) { + return this._highlightData[id]; + } + setHighlight(id, highlightId) { + BitUtils.checkMemory(highlightId); + this._highlightData[id] = highlightId; + } + clearHighlight() { + this._highlightData.fill(0); + } + visible(id) { + return BitUtils.check(this._data, id, ItemConfigClass.VISIBLE); + } + setVisible(id, visible) { + BitUtils.apply(this._data, id, ItemConfigClass.VISIBLE, visible); + } + clearVisible() { + this._data.fill(1); + } +} +class MeshConnection { + constructor(modelId, connection, multithreading) { + __publicField(this, "_rate", 64); + __publicField(this, "_updater"); + __publicField(this, "_modelId"); + __publicField(this, "_threshold", 16); + __publicField(this, "_connection"); + __publicField(this, "_list", []); + __publicField(this, "refresh", () => { + if (this._list.length) { + const current = this._list; + this._connection.fetchMeshCompute(this._modelId, current); + this._list = []; + } + }); + this._modelId = modelId; + this._connection = connection; + const configuredRate = multithreading == null ? void 0 : multithreading.meshConnectionRate; + if (typeof configuredRate === "number" && Number.isFinite(configuredRate) && configuredRate >= 0) { + this._rate = configuredRate; + } + const configuredThreshold = multithreading == null ? void 0 : multithreading.meshConnectionThreshold; + if (typeof configuredThreshold === "number" && Number.isFinite(configuredThreshold) && configuredThreshold >= 0) { + this._threshold = configuredThreshold; + } + this._updater = MultithreadingHelper.newUpdater(this.refresh, this._rate); + } + get needsRefresh() { + return this._list.length > this._threshold; + } + dispose() { + MultithreadingHelper.deleteUpdater(this._updater); + } + clean() { + this._list = MultithreadingHelper.cleanRequests(this._list); + } + process(request) { + this._list.push(request); + if (this.needsRefresh) { + this.refresh(); + } + } +} +class RaycastController { + constructor(model, boxes, tiles, items) { + __publicField(this, "_meshes"); + __publicField(this, "_model"); + __publicField(this, "_boxes"); + __publicField(this, "_tiles"); + __publicField(this, "_items"); + __publicField(this, "_edgeThreshold", 8); + __publicField(this, "_raycastMultiplier", 32); + __publicField(this, "_maxDuration", 512); + __publicField(this, "_precission", 1e-3); + __publicField(this, "_temp", { + sample: new Sample(), + representation: new Representation(), + tempPlane: new Plane(), + ray: new Ray(), + frustum: new Frustum(), + m1: new Matrix4(), + m2: new Matrix4(), + m3: new Matrix4(), + v1: new Vector3(), + planes: [] + }); + this._model = model; + this._boxes = boxes; + this._tiles = tiles; + this._items = items; + this._meshes = model.meshes(); + } + static cast(mesh, representation, ray, frustum, snap) { + const reprId = representation.id(); + if (snap === SnappingClass.FACE) { + return mesh.faceRaycast(reprId, ray, frustum); + } + if (snap === SnappingClass.LINE) { + return mesh.lineRaycast(reprId, ray, frustum); + } + if (snap === SnappingClass.POINT) { + return mesh.pointRaycast(reprId, ray, frustum); + } + if (snap === void 0) { + return mesh.raycast(reprId, ray, frustum); + } + return void 0; + } + raycast(ray, frustum, planes, returnAll) { + const data = { ray, frustum, planes, returnAll }; + const ids = this.castBox(frustum, planes); + if (ids.length) { + return this.computeRaycastList(ids, data); + } + return null; + } + snapRaycast(ray, frustum, snaps, planes) { + const results = []; + const data = { ray, frustum, planes }; + const first = this.raycast(ray, frustum, planes); + if (!first) { + return this.snapCastEdges(data, snaps); + } + this.getSnaps(first, data, snaps, results); + if (!first.normal) { + return results; + } + return this.filterOnFront(results); + } + rectangleRaycast(frustum, planes, fullyInside) { + const lookup = this._boxes.lookup; + if (!lookup) { + return []; + } + const itemIds = lookup.collideFrustum(planes, frustum, false); + let raycastedItemIds = this.filterVisible(itemIds); + if (raycastedItemIds.length) { + raycastedItemIds = this.narrowPhaseFrustum( + raycastedItemIds, + frustum, + planes, + fullyInside + ); + } + return this.localIdsFromItemIds(raycastedItemIds); + } + // Filters broad-phase sample candidates by testing their real geometry + // against the selection frustum (+ clipping planes). Mirrors the section/clip + // generator: builds a transient BVH per representation (cached for this call) + // and shapecasts it; the frustum is moved into each sample's local space so + // instanced items that share one local geometry are handled by transform. + // fullyInside === true keeps only items whose geometry is entirely inside; + // false keeps items whose geometry touches the selection. + narrowPhaseFrustum(sampleIds, frustum, clipPlanes, fullyInside) { + var _a2; + const worldPlanes = clipPlanes && clipPlanes.length ? [...frustum.planes, ...clipPlanes] : frustum.planes; + const geomCache = /* @__PURE__ */ new Map(); + const result = []; + const start = performance.now(); + let exceeded = false; + for (const sampleId of sampleIds) { + if (exceeded) { + result.push(sampleId); + continue; + } + const box = this._boxes.get(sampleId); + if (CameraUtils.isIncluded(box, worldPlanes)) { + result.push(sampleId); + continue; + } + if (this.sampleMatchesFrustum( + sampleId, + frustum, + clipPlanes, + fullyInside, + geomCache + )) { + result.push(sampleId); + } + exceeded = this.isTimeExceeded(start); + } + for (const [, geometries] of geomCache) { + for (const geometry of geometries) { + (_a2 = geometry.disposeBoundsTree) == null ? void 0 : _a2.call(geometry); + geometry.dispose(); + } + } + return result; + } + sampleMatchesFrustum(sampleId, frustum, clipPlanes, fullyInside, geomCache) { + const sample = this._meshes.samples(sampleId, this._temp.sample); + if (!sample) + return !fullyInside; + const reprId = sample.representation(); + TransformHelper.get(this._temp.sample, this._meshes, this._temp.m1); + this._temp.m2.copy(this._temp.m1).invert(); + let geometries = geomCache.get(reprId); + if (!geometries) { + geometries = this.buildSampleGeometries(sampleId); + geomCache.set(reprId, geometries); + } + if (geometries.length === 0) + return !fullyInside; + const localPlanes = this.toLocalPlanes(frustum, clipPlanes, this._temp.m2); + if (fullyInside) { + for (const geometry of geometries) { + if (!this.geometryFullyInside(geometry, localPlanes)) { + return false; + } + } + return true; + } + for (const geometry of geometries) { + if (this.geometryIntersectsPlanes(geometry, localPlanes)) { + return true; + } + } + return false; + } + // True only if every vertex of the geometry is inside every plane. + geometryFullyInside(geometry, planes) { + const position = geometry.getAttribute("position"); + const array = position.array; + const vertex = this._temp.v1; + for (let i = 0; i < array.length; i += 3) { + vertex.set(array[i], array[i + 1], array[i + 2]); + for (const plane of planes) { + if (plane.distanceToPoint(vertex) < 0) { + return false; + } + } + } + return true; + } + buildSampleGeometries(sampleId) { + const geometries = []; + const sampleGeom = this._tiles.fetchSample(sampleId, CurrentLod.GEOMETRY); + MiscHelper.forEach(sampleGeom.geometries, (geometryData) => { + if (!geometryData.indexBuffer || !geometryData.positionBuffer) { + return; + } + const geometry = new BufferGeometry(); + geometry.setIndex(Array.from(geometryData.indexBuffer)); + geometry.setAttribute( + "position", + new BufferAttribute(geometryData.positionBuffer, 3) + ); + geometry.computeBoundsTree(); + geometries.push(geometry); + }); + return geometries; + } + toLocalPlanes(frustum, clipPlanes, toLocal) { + const local = []; + this.pushLocalPlanes(frustum.planes, toLocal, local); + if (clipPlanes) { + this.pushLocalPlanes(clipPlanes, toLocal, local); + } + return local; + } + pushLocalPlanes(planes, toLocal, out) { + for (const plane of planes) { + if (!Number.isFinite(plane.constant)) { + continue; + } + out.push(new Plane().copy(plane).applyMatrix4(toLocal)); + } + } + geometryIntersectsPlanes(geometry, planes) { + let hit = false; + geometry.boundsTree.shapecast({ + intersectsBounds: (box) => CameraUtils.collides(box, planes), + intersectsTriangle: (tri) => { + if (this.triangleIntersectsFrustum(tri, planes)) { + hit = true; + return true; + } + return false; + } + }); + return hit; + } + // Exact triangle-vs-frustum test by clipping. The frustum is the intersection + // of its plane half-spaces, so clipping the triangle polygon against every + // plane (Sutherland-Hodgman) yields exactly triangle ∩ frustum. Non-empty + // result means they really intersect. This avoids the false positives a + // "not fully outside any single plane" test gives on large triangles. + triangleIntersectsFrustum(tri, planes) { + let poly = [tri.a, tri.b, tri.c]; + for (const plane of planes) { + poly = this.clipPolygonByPlane(poly, plane); + if (poly.length === 0) { + return false; + } + } + return poly.length > 0; + } + // Clips a convex polygon to the inside (distance >= 0) half-space of a plane. + clipPolygonByPlane(poly, plane) { + const out = []; + const count = poly.length; + for (let i = 0; i < count; i++) { + const current = poly[i]; + const next = poly[(i + 1) % count]; + const dCurrent = plane.distanceToPoint(current); + const dNext = plane.distanceToPoint(next); + if (dCurrent >= 0) { + out.push(current); + } + if (dCurrent >= 0 !== dNext >= 0) { + const t = dCurrent / (dCurrent - dNext); + out.push(new Vector3().lerpVectors(current, next, t)); + } + } + return out; + } + snapCastEdges(data, snaps) { + const results = []; + const pointSnap = snaps.includes(SnappingClass.POINT); + const lineSnap = snaps.includes(SnappingClass.LINE); + if (pointSnap || lineSnap) { + this.computeEdgesCast(data, snaps, results); + } + this.addDistanceToEdgeResult(results, data.ray); + return results; + } + filterVisible(ids) { + const result = []; + for (const id of ids) { + this._meshes.samples(id, this._temp.sample); + const itemId = this._temp.sample.item(); + const sampleVisible = this._items.visible(itemId); + if (sampleVisible) { + result.push(id); + } + } + return result; + } + computeSnaps(snaps, data, id, results) { + for (const snapClass of snaps) { + const isValidSnap = this.isValidSnap(snapClass); + if (isValidSnap) { + const castData = { snap: snapClass, ...data }; + const founds = this.castSample(id, castData); + for (const found of founds) { + results.push(found); + } + } + } + } + computeEdgesCast(data, snaps, results) { + const raw = this.getRawEdges(data); + const start = performance.now(); + for (const sample of raw) { + this.fetchSampleData(sample); + this.computeSnaps(snaps, data, sample, results); + const tooMuchTime = this.isTimeExceeded(start); + if (tooMuchTime) { + break; + } + } + } + addDistanceToEdgeResult(input, ray) { + for (const result of input) { + const point = result.point; + result.raySquaredDistance = ray.distanceSqToPoint(point); + } + } + getRawEdges(data) { + const result = this.castBox(data.frustum, data.planes); + if (result.length <= this._edgeThreshold) { + return result; + } + return this.sortBoxes(data.ray, result, this._edgeThreshold); + } + sortBoxes(ray, boxes, limit) { + const result = []; + const tempVector = new Vector3(); + const origin = ray.origin; + for (let i = 0; i < boxes.length; i++) { + const boxId = boxes[i]; + const box = this._boxes.get(boxId); + ray.intersectBox(box, tempVector); + const distance = tempVector.distanceToSquared(origin); + result.push(distance); + } + const sortedResult = this.dataSort(boxes, result); + const limitExceeded = limit && sortedResult.length > limit; + if (limitExceeded) { + sortedResult.splice(limit); + } + return sortedResult; + } + castBox(input, planes) { + const lookup = this._boxes.lookup; + if (!lookup) { + return []; + } + if (input instanceof Ray) { + const result2 = lookup.collideRay(planes, input); + return this.filterVisible(result2); + } + const result = lookup.collideFrustum(planes, input); + return this.filterVisible(result); + } + dataSort(ids, data) { + const keys = Array.from(ids.keys()); + const sortedKeys = keys.sort((a, b) => data[a] - data[b]); + const result = []; + for (const key of sortedKeys) { + const found = ids[key]; + result.push(found); + } + return result; + } + localIdsFromItemIds(raycastedItemIds) { + const localIds = /* @__PURE__ */ new Set(); + for (const id of raycastedItemIds) { + this._meshes.samples(id, this._temp.sample); + const itemId = this._temp.sample.item(); + const localIdIndex = this._meshes.meshesItems(itemId); + if (localIdIndex === null) + continue; + const localId = this._model.localIds(localIdIndex); + if (localId === null) + continue; + localIds.add(localId); + } + return Array.from(localIds); + } + getNearest(hits) { + let nearest = hits[0]; + for (let i = 1; i < hits.length; i++) { + const current = hits[i]; + if (nearest.raySquaredDistance && current.raySquaredDistance) { + const nearestScore = this.getNearScore(nearest); + const currentScore = this.getNearScore(current); + if (currentScore < nearestScore) { + nearest = current; + } + } else if (current.cameraSquaredDistance < nearest.cameraSquaredDistance) { + nearest = current; + } + } + return nearest; + } + getEdges(data, snaps, results) { + const founds = this.snapCastEdges(data, snaps); + if (founds) { + for (const found of founds) { + results.push(found); + } + } + } + getNearScore(input) { + const factor = this._raycastMultiplier; + const nearestRay = input.raySquaredDistance * factor; + const nearScore = nearestRay + input.cameraSquaredDistance; + return nearScore; + } + setupSampleCastData(data) { + TransformHelper.get(this._temp.sample, this._meshes, this._temp.m1); + this._temp.m2.copy(this._temp.m1).invert(); + this._temp.ray.copy(data.ray).applyMatrix4(this._temp.m2); + CameraUtils.transform(data.frustum, this._temp.m2, this._temp.frustum); + } + addLocalId(raycast2) { + if (!raycast2) { + return; + } + const localIdIndex = this._meshes.meshesItems(raycast2.itemId); + if (localIdIndex === null) { + return; + } + raycast2.localId = this._model.localIds(localIdIndex); + } + fetchSampleData(sampleId) { + this._meshes.samples(sampleId, this._temp.sample); + const reprId = this._temp.sample.representation(); + this._meshes.representations(reprId, this._temp.representation); + } + computeRaycastList(ids, data) { + const uniqueIds = Array.from(new Set(ids)); + const sorted = this.sortBoxes(data.ray, uniqueIds); + const byRay = this.castBox(data.ray, data.planes); + const results = this.findAll(sorted, byRay, data); + if (results.length) { + if (data.returnAll) { + for (const result2 of results) { + this.addLocalId(result2); + } + return results; + } + const result = this.getNearest(results); + this.addLocalId(result); + return result; + } + return null; + } + formatRaycastResult(results, id, data) { + for (const result of results) { + result.point.applyMatrix4(this._temp.m1); + if (result.normal) { + result.normal.transformDirection(this._temp.m1); + } + if ("facePoints" in result) { + const sample = this._meshes.samples(id, this._temp.sample); + TransformHelper.get(sample, this._meshes, this._temp.m3); + const sourceFacePoints = result.facePoints; + const transformedFacePoints = new Float64Array(sourceFacePoints.length); + for (let i = 0; i < sourceFacePoints.length; i += 3) { + const x = sourceFacePoints[i]; + const y = sourceFacePoints[i + 1]; + const z = sourceFacePoints[i + 2]; + this._temp.v1.set(x, y, z); + this._temp.v1.applyMatrix4(this._temp.m3); + transformedFacePoints[i] = this._temp.v1.x; + transformedFacePoints[i + 1] = this._temp.v1.y; + transformedFacePoints[i + 2] = this._temp.v1.z; + } + result.facePoints = transformedFacePoints; + } + result.sampleId = id; + result.itemId = this._temp.sample.item(); + const distance = data.ray.origin.distanceToSquared(result.point); + result.cameraSquaredDistance = distance; + if (!result.snappingClass) { + result.snappingClass = data.snap; + } + if (result.snappedEdgeP1) { + result.snappedEdgeP1.applyMatrix4(this._temp.m1); + } + if (result.snappedEdgeP2) { + result.snappedEdgeP2.applyMatrix4(this._temp.m1); + } + } + } + findAll(sortedIds, byRay, data) { + const allResults = []; + const start = performance.now(); + for (const sample of sortedIds) { + this.fetchSampleData(sample); + if (!byRay.includes(sample)) { + continue; + } + const results = this.castSample(sample, data); + for (const raycasted of results) { + allResults.push(raycasted); + } + const tooMuchTime = this.isTimeExceeded(start); + if (tooMuchTime) { + break; + } + } + return allResults; + } + isTimeExceeded(start) { + const finish = performance.now(); + const duration = finish - start; + return duration > this._maxDuration; + } + getFilteredSampleCast(data) { + const rawResult = this._tiles.raycast( + this._temp.representation, + this._temp.ray, + this._temp.frustum, + data.snap + ); + if (this._temp.planes.length === 0) { + return rawResult; + } + const filteredResult = []; + if (rawResult) { + for (const result of rawResult) { + const planes = this._temp.planes; + const point = result.point; + const contained = PlanesUtils.containedInParallelPlanes(planes, point); + if (contained) { + filteredResult.push(result); + } + } + } + return filteredResult; + } + getSnaps(first, data, snaps, results) { + this.fetchSampleData(first.sampleId); + if (first.normal) { + this.setCastSide(first, data.ray); + this.setCastPlane(first); + } + this.getFaces(snaps, data, first, results); + this.getEdges(data, snaps, results); + for (const found of results) { + this.addLocalId(found); + } + } + filterOnFront(results) { + const resultsOnFront = []; + for (const result of results) { + const plane = this._temp.tempPlane; + const distance = plane.distanceToPoint(result.point); + const isInFront = distance >= 0; + if (isInFront) { + resultsOnFront.push(result); + } + } + return resultsOnFront; + } + setCastSide(input, ray) { + const p1 = input.point.clone(); + const vec = p1.sub(ray.origin); + const sameSide = input.normal.dot(vec) > 0; + if (sameSide) { + input.normal.negate(); + } + } + getFaces(snaps, data, first, results) { + for (const snap of snaps) { + const snapData = { snap, ...data }; + const founds = this.castSample(first.sampleId, snapData); + for (const found of founds) { + results.push(found); + } + } + } + setCastPlane(input) { + const plane = this._temp.tempPlane; + const point = input.point.clone(); + const normal = input.normal.clone(); + normal.multiplyScalar(this._precission); + point.sub(normal); + plane.setFromNormalAndCoplanarPoint(input.normal, point); + } + castSample(id, data) { + this.setupSampleCastData(data); + this.setupPlanesForSampleCast(data); + const results = this.getFilteredSampleCast(data); + if (results) { + this.formatRaycastResult(results, id, data); + } + return results; + } + isValidSnap(snapClass) { + const isLine = snapClass === SnappingClass.LINE; + const isPoint = snapClass === SnappingClass.POINT; + return isLine || isPoint; + } + transform(planes, transform) { + const result = []; + if (planes) { + for (const plane of planes) { + const clone = new Plane().copy(plane); + clone.applyMatrix4(transform); + result.push(clone); + } + } + return result; + } + setupPlanesForSampleCast(data) { + this._temp.planes.length = 0; + if (data.planes && data.planes.length > 0) { + const tranformedPlanes = this.transform(data.planes, this._temp.m2); + for (const plane of tranformedPlanes) { + this._temp.planes.push(plane); + } + } + } +} +const perf = typeof performance === "object" && performance && typeof performance.now === "function" ? performance : Date; +const warned = /* @__PURE__ */ new Set(); +const PROCESS = typeof process === "object" && !!process ? process : {}; +const emitWarning = (msg, type, code, fn) => { + typeof PROCESS.emitWarning === "function" ? PROCESS.emitWarning(msg, type, code, fn) : console.error(`[${code}] ${type}: ${msg}`); +}; +let AC = globalThis.AbortController; +let AS = globalThis.AbortSignal; +if (typeof AC === "undefined") { + AS = class AbortSignal { + constructor() { + __publicField(this, "onabort"); + __publicField(this, "_onabort", []); + __publicField(this, "reason"); + __publicField(this, "aborted", false); + } + addEventListener(_, fn) { + this._onabort.push(fn); + } + }; + AC = class AbortController { + constructor() { + __publicField(this, "signal", new AS()); + warnACPolyfill(); + } + abort(reason) { + var _a2, _b2; + if (this.signal.aborted) + return; + this.signal.reason = reason; + this.signal.aborted = true; + for (const fn of this.signal._onabort) { + fn(reason); + } + (_b2 = (_a2 = this.signal).onabort) == null ? void 0 : _b2.call(_a2, reason); + } + }; + let printACPolyfillWarning = ((_a = PROCESS.env) == null ? void 0 : _a.LRU_CACHE_IGNORE_AC_WARNING) !== "1"; + const warnACPolyfill = () => { + if (!printACPolyfillWarning) + return; + printACPolyfillWarning = false; + emitWarning("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.", "NO_ABORT_CONTROLLER", "ENOTSUP", warnACPolyfill); + }; +} +const shouldWarn = (code) => !warned.has(code); +const isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n); +const getUintArray = (max) => !isPosInt(max) ? null : max <= Math.pow(2, 8) ? Uint8Array : max <= Math.pow(2, 16) ? Uint16Array : max <= Math.pow(2, 32) ? Uint32Array : max <= Number.MAX_SAFE_INTEGER ? ZeroArray : null; +class ZeroArray extends Array { + constructor(size) { + super(size); + this.fill(0); + } +} +const _Stack = class _Stack { + constructor(max, HeapCls) { + __publicField(this, "heap"); + __publicField(this, "length"); + if (!__privateGet(_Stack, _constructing)) { + throw new TypeError("instantiate Stack using Stack.create(n)"); + } + this.heap = new HeapCls(max); + this.length = 0; + } + static create(max) { + const HeapCls = getUintArray(max); + if (!HeapCls) + return []; + __privateSet(_Stack, _constructing, true); + const s = new _Stack(max, HeapCls); + __privateSet(_Stack, _constructing, false); + return s; + } + push(n) { + this.heap[this.length++] = n; + } + pop() { + return this.heap[--this.length]; + } +}; +_constructing = new WeakMap(); +// private constructor +__privateAdd(_Stack, _constructing, false); +let Stack = _Stack; +const _LRUCache = class _LRUCache { + constructor(options) { + __privateAdd(this, _initializeTTLTracking); + __privateAdd(this, _initializeSizeTracking); + __privateAdd(this, _indexes); + __privateAdd(this, _rindexes); + __privateAdd(this, _isValidIndex); + __privateAdd(this, _evict); + __privateAdd(this, _backgroundFetch); + __privateAdd(this, _isBackgroundFetch); + __privateAdd(this, _connect); + __privateAdd(this, _moveToTail); + __privateAdd(this, _delete); + __privateAdd(this, _clear); + // options that cannot be changed without disaster + __privateAdd(this, _max, void 0); + __privateAdd(this, _maxSize, void 0); + __privateAdd(this, _dispose, void 0); + __privateAdd(this, _onInsert, void 0); + __privateAdd(this, _disposeAfter, void 0); + __privateAdd(this, _fetchMethod, void 0); + __privateAdd(this, _memoMethod, void 0); + /** + * {@link LRUCache.OptionsBase.ttl} + */ + __publicField(this, "ttl"); + /** + * {@link LRUCache.OptionsBase.ttlResolution} + */ + __publicField(this, "ttlResolution"); + /** + * {@link LRUCache.OptionsBase.ttlAutopurge} + */ + __publicField(this, "ttlAutopurge"); + /** + * {@link LRUCache.OptionsBase.updateAgeOnGet} + */ + __publicField(this, "updateAgeOnGet"); + /** + * {@link LRUCache.OptionsBase.updateAgeOnHas} + */ + __publicField(this, "updateAgeOnHas"); + /** + * {@link LRUCache.OptionsBase.allowStale} + */ + __publicField(this, "allowStale"); + /** + * {@link LRUCache.OptionsBase.noDisposeOnSet} + */ + __publicField(this, "noDisposeOnSet"); + /** + * {@link LRUCache.OptionsBase.noUpdateTTL} + */ + __publicField(this, "noUpdateTTL"); + /** + * {@link LRUCache.OptionsBase.maxEntrySize} + */ + __publicField(this, "maxEntrySize"); + /** + * {@link LRUCache.OptionsBase.sizeCalculation} + */ + __publicField(this, "sizeCalculation"); + /** + * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection} + */ + __publicField(this, "noDeleteOnFetchRejection"); + /** + * {@link LRUCache.OptionsBase.noDeleteOnStaleGet} + */ + __publicField(this, "noDeleteOnStaleGet"); + /** + * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort} + */ + __publicField(this, "allowStaleOnFetchAbort"); + /** + * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} + */ + __publicField(this, "allowStaleOnFetchRejection"); + /** + * {@link LRUCache.OptionsBase.ignoreFetchAbort} + */ + __publicField(this, "ignoreFetchAbort"); + // computed properties + __privateAdd(this, _size, void 0); + __privateAdd(this, _calculatedSize, void 0); + __privateAdd(this, _keyMap, void 0); + __privateAdd(this, _keyList, void 0); + __privateAdd(this, _valList, void 0); + __privateAdd(this, _next, void 0); + __privateAdd(this, _prev, void 0); + __privateAdd(this, _head, void 0); + __privateAdd(this, _tail, void 0); + __privateAdd(this, _free, void 0); + __privateAdd(this, _disposed, void 0); + __privateAdd(this, _sizes, void 0); + __privateAdd(this, _starts, void 0); + __privateAdd(this, _ttls, void 0); + __privateAdd(this, _hasDispose, void 0); + __privateAdd(this, _hasFetchMethod, void 0); + __privateAdd(this, _hasDisposeAfter, void 0); + __privateAdd(this, _hasOnInsert, void 0); + // conditionally set private methods related to TTL + __privateAdd(this, _updateItemAge, () => { + }); + __privateAdd(this, _statusTTL, () => { + }); + __privateAdd(this, _setItemTTL, () => { + }); + /* c8 ignore stop */ + __privateAdd(this, _isStale, () => false); + __privateAdd(this, _removeItemSize, (_i) => { + }); + __privateAdd(this, _addItemSize, (_i, _s, _st) => { + }); + __privateAdd(this, _requireSize, (_k, _v, size, sizeCalculation) => { + if (size || sizeCalculation) { + throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache"); + } + return 0; + }); + /** + * A String value that is used in the creation of the default string + * description of an object. Called by the built-in method + * `Object.prototype.toString`. + */ + __publicField(this, _b, "LRUCache"); + const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, onInsert, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort } = options; + if (max !== 0 && !isPosInt(max)) { + throw new TypeError("max option must be a nonnegative integer"); + } + const UintArray = max ? getUintArray(max) : Array; + if (!UintArray) { + throw new Error("invalid max value: " + max); + } + __privateSet(this, _max, max); + __privateSet(this, _maxSize, maxSize); + this.maxEntrySize = maxEntrySize || __privateGet(this, _maxSize); + this.sizeCalculation = sizeCalculation; + if (this.sizeCalculation) { + if (!__privateGet(this, _maxSize) && !this.maxEntrySize) { + throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize"); + } + if (typeof this.sizeCalculation !== "function") { + throw new TypeError("sizeCalculation set to non-function"); + } + } + if (memoMethod !== void 0 && typeof memoMethod !== "function") { + throw new TypeError("memoMethod must be a function if defined"); + } + __privateSet(this, _memoMethod, memoMethod); + if (fetchMethod !== void 0 && typeof fetchMethod !== "function") { + throw new TypeError("fetchMethod must be a function if specified"); + } + __privateSet(this, _fetchMethod, fetchMethod); + __privateSet(this, _hasFetchMethod, !!fetchMethod); + __privateSet(this, _keyMap, /* @__PURE__ */ new Map()); + __privateSet(this, _keyList, new Array(max).fill(void 0)); + __privateSet(this, _valList, new Array(max).fill(void 0)); + __privateSet(this, _next, new UintArray(max)); + __privateSet(this, _prev, new UintArray(max)); + __privateSet(this, _head, 0); + __privateSet(this, _tail, 0); + __privateSet(this, _free, Stack.create(max)); + __privateSet(this, _size, 0); + __privateSet(this, _calculatedSize, 0); + if (typeof dispose === "function") { + __privateSet(this, _dispose, dispose); + } + if (typeof onInsert === "function") { + __privateSet(this, _onInsert, onInsert); + } + if (typeof disposeAfter === "function") { + __privateSet(this, _disposeAfter, disposeAfter); + __privateSet(this, _disposed, []); + } else { + __privateSet(this, _disposeAfter, void 0); + __privateSet(this, _disposed, void 0); + } + __privateSet(this, _hasDispose, !!__privateGet(this, _dispose)); + __privateSet(this, _hasOnInsert, !!__privateGet(this, _onInsert)); + __privateSet(this, _hasDisposeAfter, !!__privateGet(this, _disposeAfter)); + this.noDisposeOnSet = !!noDisposeOnSet; + this.noUpdateTTL = !!noUpdateTTL; + this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection; + this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection; + this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort; + this.ignoreFetchAbort = !!ignoreFetchAbort; + if (this.maxEntrySize !== 0) { + if (__privateGet(this, _maxSize) !== 0) { + if (!isPosInt(__privateGet(this, _maxSize))) { + throw new TypeError("maxSize must be a positive integer if specified"); + } + } + if (!isPosInt(this.maxEntrySize)) { + throw new TypeError("maxEntrySize must be a positive integer if specified"); + } + __privateMethod(this, _initializeSizeTracking, initializeSizeTracking_fn).call(this); + } + this.allowStale = !!allowStale; + this.noDeleteOnStaleGet = !!noDeleteOnStaleGet; + this.updateAgeOnGet = !!updateAgeOnGet; + this.updateAgeOnHas = !!updateAgeOnHas; + this.ttlResolution = isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1; + this.ttlAutopurge = !!ttlAutopurge; + this.ttl = ttl || 0; + if (this.ttl) { + if (!isPosInt(this.ttl)) { + throw new TypeError("ttl must be a positive integer if specified"); + } + __privateMethod(this, _initializeTTLTracking, initializeTTLTracking_fn).call(this); + } + if (__privateGet(this, _max) === 0 && this.ttl === 0 && __privateGet(this, _maxSize) === 0) { + throw new TypeError("At least one of max, maxSize, or ttl is required"); + } + if (!this.ttlAutopurge && !__privateGet(this, _max) && !__privateGet(this, _maxSize)) { + const code = "LRU_CACHE_UNBOUNDED"; + if (shouldWarn(code)) { + warned.add(code); + const msg = "TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption."; + emitWarning(msg, "UnboundedCacheWarning", code, _LRUCache); + } + } + } + /** + * Do not call this method unless you need to inspect the + * inner workings of the cache. If anything returned by this + * object is modified in any way, strange breakage may occur. + * + * These fields are private for a reason! + * + * @internal + */ + static unsafeExposeInternals(c) { + return { + // properties + starts: __privateGet(c, _starts), + ttls: __privateGet(c, _ttls), + sizes: __privateGet(c, _sizes), + keyMap: __privateGet(c, _keyMap), + keyList: __privateGet(c, _keyList), + valList: __privateGet(c, _valList), + next: __privateGet(c, _next), + prev: __privateGet(c, _prev), + get head() { + return __privateGet(c, _head); + }, + get tail() { + return __privateGet(c, _tail); + }, + free: __privateGet(c, _free), + // methods + isBackgroundFetch: (p) => { + var _a2; + return __privateMethod(_a2 = c, _isBackgroundFetch, isBackgroundFetch_fn).call(_a2, p); + }, + backgroundFetch: (k, index, options, context) => { + var _a2; + return __privateMethod(_a2 = c, _backgroundFetch, backgroundFetch_fn).call(_a2, k, index, options, context); + }, + moveToTail: (index) => { + var _a2; + return __privateMethod(_a2 = c, _moveToTail, moveToTail_fn).call(_a2, index); + }, + indexes: (options) => { + var _a2; + return __privateMethod(_a2 = c, _indexes, indexes_fn).call(_a2, options); + }, + rindexes: (options) => { + var _a2; + return __privateMethod(_a2 = c, _rindexes, rindexes_fn).call(_a2, options); + }, + isStale: (index) => { + var _a2; + return __privateGet(_a2 = c, _isStale).call(_a2, index); + } + }; + } + // Protected read-only members + /** + * {@link LRUCache.OptionsBase.max} (read-only) + */ + get max() { + return __privateGet(this, _max); + } + /** + * {@link LRUCache.OptionsBase.maxSize} (read-only) + */ + get maxSize() { + return __privateGet(this, _maxSize); + } + /** + * The total computed size of items in the cache (read-only) + */ + get calculatedSize() { + return __privateGet(this, _calculatedSize); + } + /** + * The number of items stored in the cache (read-only) + */ + get size() { + return __privateGet(this, _size); + } + /** + * {@link LRUCache.OptionsBase.fetchMethod} (read-only) + */ + get fetchMethod() { + return __privateGet(this, _fetchMethod); + } + get memoMethod() { + return __privateGet(this, _memoMethod); + } + /** + * {@link LRUCache.OptionsBase.dispose} (read-only) + */ + get dispose() { + return __privateGet(this, _dispose); + } + /** + * {@link LRUCache.OptionsBase.onInsert} (read-only) + */ + get onInsert() { + return __privateGet(this, _onInsert); + } + /** + * {@link LRUCache.OptionsBase.disposeAfter} (read-only) + */ + get disposeAfter() { + return __privateGet(this, _disposeAfter); + } + /** + * Return the number of ms left in the item's TTL. If item is not in cache, + * returns `0`. Returns `Infinity` if item is in cache without a defined TTL. + */ + getRemainingTTL(key) { + return __privateGet(this, _keyMap).has(key) ? Infinity : 0; + } + /** + * Return a generator yielding `[key, value]` pairs, + * in order from most recently used to least recently used. + */ + *entries() { + for (const i of __privateMethod(this, _indexes, indexes_fn).call(this)) { + if (__privateGet(this, _valList)[i] !== void 0 && __privateGet(this, _keyList)[i] !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) { + yield [__privateGet(this, _keyList)[i], __privateGet(this, _valList)[i]]; + } + } + } + /** + * Inverse order version of {@link LRUCache.entries} + * + * Return a generator yielding `[key, value]` pairs, + * in order from least recently used to most recently used. + */ + *rentries() { + for (const i of __privateMethod(this, _rindexes, rindexes_fn).call(this)) { + if (__privateGet(this, _valList)[i] !== void 0 && __privateGet(this, _keyList)[i] !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) { + yield [__privateGet(this, _keyList)[i], __privateGet(this, _valList)[i]]; + } + } + } + /** + * Return a generator yielding the keys in the cache, + * in order from most recently used to least recently used. + */ + *keys() { + for (const i of __privateMethod(this, _indexes, indexes_fn).call(this)) { + const k = __privateGet(this, _keyList)[i]; + if (k !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) { + yield k; + } + } + } + /** + * Inverse order version of {@link LRUCache.keys} + * + * Return a generator yielding the keys in the cache, + * in order from least recently used to most recently used. + */ + *rkeys() { + for (const i of __privateMethod(this, _rindexes, rindexes_fn).call(this)) { + const k = __privateGet(this, _keyList)[i]; + if (k !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) { + yield k; + } + } + } + /** + * Return a generator yielding the values in the cache, + * in order from most recently used to least recently used. + */ + *values() { + for (const i of __privateMethod(this, _indexes, indexes_fn).call(this)) { + const v = __privateGet(this, _valList)[i]; + if (v !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) { + yield __privateGet(this, _valList)[i]; + } + } + } + /** + * Inverse order version of {@link LRUCache.values} + * + * Return a generator yielding the values in the cache, + * in order from least recently used to most recently used. + */ + *rvalues() { + for (const i of __privateMethod(this, _rindexes, rindexes_fn).call(this)) { + const v = __privateGet(this, _valList)[i]; + if (v !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) { + yield __privateGet(this, _valList)[i]; + } + } + } + /** + * Iterating over the cache itself yields the same results as + * {@link LRUCache.entries} + */ + [Symbol.iterator]() { + return this.entries(); + } + /** + * Find a value for which the supplied fn method returns a truthy value, + * similar to `Array.find()`. fn is called as `fn(value, key, cache)`. + */ + find(fn, getOptions = {}) { + for (const i of __privateMethod(this, _indexes, indexes_fn).call(this)) { + const v = __privateGet(this, _valList)[i]; + const value = __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v; + if (value === void 0) + continue; + if (fn(value, __privateGet(this, _keyList)[i], this)) { + return this.get(__privateGet(this, _keyList)[i], getOptions); + } + } + } + /** + * Call the supplied function on each item in the cache, in order from most + * recently used to least recently used. + * + * `fn` is called as `fn(value, key, cache)`. + * + * If `thisp` is provided, function will be called in the `this`-context of + * the provided object, or the cache if no `thisp` object is provided. + * + * Does not update age or recenty of use, or iterate over stale values. + */ + forEach(fn, thisp = this) { + for (const i of __privateMethod(this, _indexes, indexes_fn).call(this)) { + const v = __privateGet(this, _valList)[i]; + const value = __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v; + if (value === void 0) + continue; + fn.call(thisp, value, __privateGet(this, _keyList)[i], this); + } + } + /** + * The same as {@link LRUCache.forEach} but items are iterated over in + * reverse order. (ie, less recently used items are iterated over first.) + */ + rforEach(fn, thisp = this) { + for (const i of __privateMethod(this, _rindexes, rindexes_fn).call(this)) { + const v = __privateGet(this, _valList)[i]; + const value = __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v; + if (value === void 0) + continue; + fn.call(thisp, value, __privateGet(this, _keyList)[i], this); + } + } + /** + * Delete any stale entries. Returns true if anything was removed, + * false otherwise. + */ + purgeStale() { + let deleted = false; + for (const i of __privateMethod(this, _rindexes, rindexes_fn).call(this, { allowStale: true })) { + if (__privateGet(this, _isStale).call(this, i)) { + __privateMethod(this, _delete, delete_fn).call(this, __privateGet(this, _keyList)[i], "expire"); + deleted = true; + } + } + return deleted; + } + /** + * Get the extended info about a given entry, to get its value, size, and + * TTL info simultaneously. Returns `undefined` if the key is not present. + * + * Unlike {@link LRUCache#dump}, which is designed to be portable and survive + * serialization, the `start` value is always the current timestamp, and the + * `ttl` is a calculated remaining time to live (negative if expired). + * + * Always returns stale values, if their info is found in the cache, so be + * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl}) + * if relevant. + */ + info(key) { + const i = __privateGet(this, _keyMap).get(key); + if (i === void 0) + return void 0; + const v = __privateGet(this, _valList)[i]; + const value = __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v; + if (value === void 0) + return void 0; + const entry = { value }; + if (__privateGet(this, _ttls) && __privateGet(this, _starts)) { + const ttl = __privateGet(this, _ttls)[i]; + const start = __privateGet(this, _starts)[i]; + if (ttl && start) { + const remain = ttl - (perf.now() - start); + entry.ttl = remain; + entry.start = Date.now(); + } + } + if (__privateGet(this, _sizes)) { + entry.size = __privateGet(this, _sizes)[i]; + } + return entry; + } + /** + * Return an array of [key, {@link LRUCache.Entry}] tuples which can be + * passed to {@link LRUCache#load}. + * + * The `start` fields are calculated relative to a portable `Date.now()` + * timestamp, even if `performance.now()` is available. + * + * Stale entries are always included in the `dump`, even if + * {@link LRUCache.OptionsBase.allowStale} is false. + * + * Note: this returns an actual array, not a generator, so it can be more + * easily passed around. + */ + dump() { + const arr = []; + for (const i of __privateMethod(this, _indexes, indexes_fn).call(this, { allowStale: true })) { + const key = __privateGet(this, _keyList)[i]; + const v = __privateGet(this, _valList)[i]; + const value = __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v; + if (value === void 0 || key === void 0) + continue; + const entry = { value }; + if (__privateGet(this, _ttls) && __privateGet(this, _starts)) { + entry.ttl = __privateGet(this, _ttls)[i]; + const age = perf.now() - __privateGet(this, _starts)[i]; + entry.start = Math.floor(Date.now() - age); + } + if (__privateGet(this, _sizes)) { + entry.size = __privateGet(this, _sizes)[i]; + } + arr.unshift([key, entry]); + } + return arr; + } + /** + * Reset the cache and load in the items in entries in the order listed. + * + * The shape of the resulting cache may be different if the same options are + * not used in both caches. + * + * The `start` fields are assumed to be calculated relative to a portable + * `Date.now()` timestamp, even if `performance.now()` is available. + */ + load(arr) { + this.clear(); + for (const [key, entry] of arr) { + if (entry.start) { + const age = Date.now() - entry.start; + entry.start = perf.now() - age; + } + this.set(key, entry.value, entry); + } + } + /** + * Add a value to the cache. + * + * Note: if `undefined` is specified as a value, this is an alias for + * {@link LRUCache#delete} + * + * Fields on the {@link LRUCache.SetOptions} options param will override + * their corresponding values in the constructor options for the scope + * of this single `set()` operation. + * + * If `start` is provided, then that will set the effective start + * time for the TTL calculation. Note that this must be a previous + * value of `performance.now()` if supported, or a previous value of + * `Date.now()` if not. + * + * Options object may also include `size`, which will prevent + * calling the `sizeCalculation` function and just use the specified + * number if it is a positive integer, and `noDisposeOnSet` which + * will prevent calling a `dispose` function in the case of + * overwrites. + * + * If the `size` (or return value of `sizeCalculation`) for a given + * entry is greater than `maxEntrySize`, then the item will not be + * added to the cache. + * + * Will update the recency of the entry. + * + * If the value is `undefined`, then this is an alias for + * `cache.delete(key)`. `undefined` is never stored in the cache. + */ + set(k, v, setOptions = {}) { + var _a2, _b2, _c3, _d, _e, _f, _g; + if (v === void 0) { + this.delete(k); + return this; + } + const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status } = setOptions; + let { noUpdateTTL = this.noUpdateTTL } = setOptions; + const size = __privateGet(this, _requireSize).call(this, k, v, setOptions.size || 0, sizeCalculation); + if (this.maxEntrySize && size > this.maxEntrySize) { + if (status) { + status.set = "miss"; + status.maxEntrySizeExceeded = true; + } + __privateMethod(this, _delete, delete_fn).call(this, k, "set"); + return this; + } + let index = __privateGet(this, _size) === 0 ? void 0 : __privateGet(this, _keyMap).get(k); + if (index === void 0) { + index = __privateGet(this, _size) === 0 ? __privateGet(this, _tail) : __privateGet(this, _free).length !== 0 ? __privateGet(this, _free).pop() : __privateGet(this, _size) === __privateGet(this, _max) ? __privateMethod(this, _evict, evict_fn).call(this, false) : __privateGet(this, _size); + __privateGet(this, _keyList)[index] = k; + __privateGet(this, _valList)[index] = v; + __privateGet(this, _keyMap).set(k, index); + __privateGet(this, _next)[__privateGet(this, _tail)] = index; + __privateGet(this, _prev)[index] = __privateGet(this, _tail); + __privateSet(this, _tail, index); + __privateWrapper(this, _size)._++; + __privateGet(this, _addItemSize).call(this, index, size, status); + if (status) + status.set = "add"; + noUpdateTTL = false; + if (__privateGet(this, _hasOnInsert)) { + (_a2 = __privateGet(this, _onInsert)) == null ? void 0 : _a2.call(this, v, k, "add"); + } + } else { + __privateMethod(this, _moveToTail, moveToTail_fn).call(this, index); + const oldVal = __privateGet(this, _valList)[index]; + if (v !== oldVal) { + if (__privateGet(this, _hasFetchMethod) && __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, oldVal)) { + oldVal.__abortController.abort(new Error("replaced")); + const { __staleWhileFetching: s } = oldVal; + if (s !== void 0 && !noDisposeOnSet) { + if (__privateGet(this, _hasDispose)) { + (_b2 = __privateGet(this, _dispose)) == null ? void 0 : _b2.call(this, s, k, "set"); + } + if (__privateGet(this, _hasDisposeAfter)) { + (_c3 = __privateGet(this, _disposed)) == null ? void 0 : _c3.push([s, k, "set"]); + } + } + } else if (!noDisposeOnSet) { + if (__privateGet(this, _hasDispose)) { + (_d = __privateGet(this, _dispose)) == null ? void 0 : _d.call(this, oldVal, k, "set"); + } + if (__privateGet(this, _hasDisposeAfter)) { + (_e = __privateGet(this, _disposed)) == null ? void 0 : _e.push([oldVal, k, "set"]); + } + } + __privateGet(this, _removeItemSize).call(this, index); + __privateGet(this, _addItemSize).call(this, index, size, status); + __privateGet(this, _valList)[index] = v; + if (status) { + status.set = "replace"; + const oldValue = oldVal && __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, oldVal) ? oldVal.__staleWhileFetching : oldVal; + if (oldValue !== void 0) + status.oldValue = oldValue; + } + } else if (status) { + status.set = "update"; + } + if (__privateGet(this, _hasOnInsert)) { + (_f = this.onInsert) == null ? void 0 : _f.call(this, v, k, v === oldVal ? "update" : "replace"); + } + } + if (ttl !== 0 && !__privateGet(this, _ttls)) { + __privateMethod(this, _initializeTTLTracking, initializeTTLTracking_fn).call(this); + } + if (__privateGet(this, _ttls)) { + if (!noUpdateTTL) { + __privateGet(this, _setItemTTL).call(this, index, ttl, start); + } + if (status) + __privateGet(this, _statusTTL).call(this, status, index); + } + if (!noDisposeOnSet && __privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) { + const dt = __privateGet(this, _disposed); + let task; + while (task = dt == null ? void 0 : dt.shift()) { + (_g = __privateGet(this, _disposeAfter)) == null ? void 0 : _g.call(this, ...task); + } + } + return this; + } + /** + * Evict the least recently used item, returning its value or + * `undefined` if cache is empty. + */ + pop() { + var _a2; + try { + while (__privateGet(this, _size)) { + const val = __privateGet(this, _valList)[__privateGet(this, _head)]; + __privateMethod(this, _evict, evict_fn).call(this, true); + if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, val)) { + if (val.__staleWhileFetching) { + return val.__staleWhileFetching; + } + } else if (val !== void 0) { + return val; + } + } + } finally { + if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) { + const dt = __privateGet(this, _disposed); + let task; + while (task = dt == null ? void 0 : dt.shift()) { + (_a2 = __privateGet(this, _disposeAfter)) == null ? void 0 : _a2.call(this, ...task); + } + } + } + } + /** + * Check if a key is in the cache, without updating the recency of use. + * Will return false if the item is stale, even though it is technically + * in the cache. + * + * Check if a key is in the cache, without updating the recency of + * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set + * to `true` in either the options or the constructor. + * + * Will return `false` if the item is stale, even though it is technically in + * the cache. The difference can be determined (if it matters) by using a + * `status` argument, and inspecting the `has` field. + * + * Will not update item age unless + * {@link LRUCache.OptionsBase.updateAgeOnHas} is set. + */ + has(k, hasOptions = {}) { + const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions; + const index = __privateGet(this, _keyMap).get(k); + if (index !== void 0) { + const v = __privateGet(this, _valList)[index]; + if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) && v.__staleWhileFetching === void 0) { + return false; + } + if (!__privateGet(this, _isStale).call(this, index)) { + if (updateAgeOnHas) { + __privateGet(this, _updateItemAge).call(this, index); + } + if (status) { + status.has = "hit"; + __privateGet(this, _statusTTL).call(this, status, index); + } + return true; + } else if (status) { + status.has = "stale"; + __privateGet(this, _statusTTL).call(this, status, index); + } + } else if (status) { + status.has = "miss"; + } + return false; + } + /** + * Like {@link LRUCache#get} but doesn't update recency or delete stale + * items. + * + * Returns `undefined` if the item is stale, unless + * {@link LRUCache.OptionsBase.allowStale} is set. + */ + peek(k, peekOptions = {}) { + const { allowStale = this.allowStale } = peekOptions; + const index = __privateGet(this, _keyMap).get(k); + if (index === void 0 || !allowStale && __privateGet(this, _isStale).call(this, index)) { + return; + } + const v = __privateGet(this, _valList)[index]; + return __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v; + } + async fetch(k, fetchOptions = {}) { + const { + // get options + allowStale = this.allowStale, + updateAgeOnGet = this.updateAgeOnGet, + noDeleteOnStaleGet = this.noDeleteOnStaleGet, + // set options + ttl = this.ttl, + noDisposeOnSet = this.noDisposeOnSet, + size = 0, + sizeCalculation = this.sizeCalculation, + noUpdateTTL = this.noUpdateTTL, + // fetch exclusive options + noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, + allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, + ignoreFetchAbort = this.ignoreFetchAbort, + allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, + context, + forceRefresh = false, + status, + signal + } = fetchOptions; + if (!__privateGet(this, _hasFetchMethod)) { + if (status) + status.fetch = "get"; + return this.get(k, { + allowStale, + updateAgeOnGet, + noDeleteOnStaleGet, + status + }); + } + const options = { + allowStale, + updateAgeOnGet, + noDeleteOnStaleGet, + ttl, + noDisposeOnSet, + size, + sizeCalculation, + noUpdateTTL, + noDeleteOnFetchRejection, + allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, + status, + signal + }; + let index = __privateGet(this, _keyMap).get(k); + if (index === void 0) { + if (status) + status.fetch = "miss"; + const p = __privateMethod(this, _backgroundFetch, backgroundFetch_fn).call(this, k, index, options, context); + return p.__returned = p; + } else { + const v = __privateGet(this, _valList)[index]; + if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { + const stale = allowStale && v.__staleWhileFetching !== void 0; + if (status) { + status.fetch = "inflight"; + if (stale) + status.returnedStale = true; + } + return stale ? v.__staleWhileFetching : v.__returned = v; + } + const isStale = __privateGet(this, _isStale).call(this, index); + if (!forceRefresh && !isStale) { + if (status) + status.fetch = "hit"; + __privateMethod(this, _moveToTail, moveToTail_fn).call(this, index); + if (updateAgeOnGet) { + __privateGet(this, _updateItemAge).call(this, index); + } + if (status) + __privateGet(this, _statusTTL).call(this, status, index); + return v; + } + const p = __privateMethod(this, _backgroundFetch, backgroundFetch_fn).call(this, k, index, options, context); + const hasStale = p.__staleWhileFetching !== void 0; + const staleVal = hasStale && allowStale; + if (status) { + status.fetch = isStale ? "stale" : "refresh"; + if (staleVal && isStale) + status.returnedStale = true; + } + return staleVal ? p.__staleWhileFetching : p.__returned = p; + } + } + async forceFetch(k, fetchOptions = {}) { + const v = await this.fetch(k, fetchOptions); + if (v === void 0) + throw new Error("fetch() returned undefined"); + return v; + } + memo(k, memoOptions = {}) { + const memoMethod = __privateGet(this, _memoMethod); + if (!memoMethod) { + throw new Error("no memoMethod provided to constructor"); + } + const { context, forceRefresh, ...options } = memoOptions; + const v = this.get(k, options); + if (!forceRefresh && v !== void 0) + return v; + const vv = memoMethod(k, v, { + options, + context + }); + this.set(k, vv, options); + return vv; + } + /** + * Return a value from the cache. Will update the recency of the cache + * entry found. + * + * If the key is not found, get() will return `undefined`. + */ + get(k, getOptions = {}) { + const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status } = getOptions; + const index = __privateGet(this, _keyMap).get(k); + if (index !== void 0) { + const value = __privateGet(this, _valList)[index]; + const fetching = __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, value); + if (status) + __privateGet(this, _statusTTL).call(this, status, index); + if (__privateGet(this, _isStale).call(this, index)) { + if (status) + status.get = "stale"; + if (!fetching) { + if (!noDeleteOnStaleGet) { + __privateMethod(this, _delete, delete_fn).call(this, k, "expire"); + } + if (status && allowStale) + status.returnedStale = true; + return allowStale ? value : void 0; + } else { + if (status && allowStale && value.__staleWhileFetching !== void 0) { + status.returnedStale = true; + } + return allowStale ? value.__staleWhileFetching : void 0; + } + } else { + if (status) + status.get = "hit"; + if (fetching) { + return value.__staleWhileFetching; + } + __privateMethod(this, _moveToTail, moveToTail_fn).call(this, index); + if (updateAgeOnGet) { + __privateGet(this, _updateItemAge).call(this, index); + } + return value; + } + } else if (status) { + status.get = "miss"; + } + } + /** + * Deletes a key out of the cache. + * + * Returns true if the key was deleted, false otherwise. + */ + delete(k) { + return __privateMethod(this, _delete, delete_fn).call(this, k, "delete"); + } + /** + * Clear the cache entirely, throwing away all values. + */ + clear() { + return __privateMethod(this, _clear, clear_fn).call(this, "delete"); + } +}; +_b = Symbol.toStringTag; +_max = new WeakMap(); +_maxSize = new WeakMap(); +_dispose = new WeakMap(); +_onInsert = new WeakMap(); +_disposeAfter = new WeakMap(); +_fetchMethod = new WeakMap(); +_memoMethod = new WeakMap(); +_size = new WeakMap(); +_calculatedSize = new WeakMap(); +_keyMap = new WeakMap(); +_keyList = new WeakMap(); +_valList = new WeakMap(); +_next = new WeakMap(); +_prev = new WeakMap(); +_head = new WeakMap(); +_tail = new WeakMap(); +_free = new WeakMap(); +_disposed = new WeakMap(); +_sizes = new WeakMap(); +_starts = new WeakMap(); +_ttls = new WeakMap(); +_hasDispose = new WeakMap(); +_hasFetchMethod = new WeakMap(); +_hasDisposeAfter = new WeakMap(); +_hasOnInsert = new WeakMap(); +_initializeTTLTracking = new WeakSet(); +initializeTTLTracking_fn = function() { + const ttls = new ZeroArray(__privateGet(this, _max)); + const starts = new ZeroArray(__privateGet(this, _max)); + __privateSet(this, _ttls, ttls); + __privateSet(this, _starts, starts); + __privateSet(this, _setItemTTL, (index, ttl, start = perf.now()) => { + starts[index] = ttl !== 0 ? start : 0; + ttls[index] = ttl; + if (ttl !== 0 && this.ttlAutopurge) { + const t = setTimeout(() => { + if (__privateGet(this, _isStale).call(this, index)) { + __privateMethod(this, _delete, delete_fn).call(this, __privateGet(this, _keyList)[index], "expire"); + } + }, ttl + 1); + if (t.unref) { + t.unref(); + } + } + }); + __privateSet(this, _updateItemAge, (index) => { + starts[index] = ttls[index] !== 0 ? perf.now() : 0; + }); + __privateSet(this, _statusTTL, (status, index) => { + if (ttls[index]) { + const ttl = ttls[index]; + const start = starts[index]; + if (!ttl || !start) + return; + status.ttl = ttl; + status.start = start; + status.now = cachedNow || getNow(); + const age = status.now - start; + status.remainingTTL = ttl - age; + } + }); + let cachedNow = 0; + const getNow = () => { + const n = perf.now(); + if (this.ttlResolution > 0) { + cachedNow = n; + const t = setTimeout(() => cachedNow = 0, this.ttlResolution); + if (t.unref) { + t.unref(); + } + } + return n; + }; + this.getRemainingTTL = (key) => { + const index = __privateGet(this, _keyMap).get(key); + if (index === void 0) { + return 0; + } + const ttl = ttls[index]; + const start = starts[index]; + if (!ttl || !start) { + return Infinity; + } + const age = (cachedNow || getNow()) - start; + return ttl - age; + }; + __privateSet(this, _isStale, (index) => { + const s = starts[index]; + const t = ttls[index]; + return !!t && !!s && (cachedNow || getNow()) - s > t; + }); +}; +_updateItemAge = new WeakMap(); +_statusTTL = new WeakMap(); +_setItemTTL = new WeakMap(); +_isStale = new WeakMap(); +_initializeSizeTracking = new WeakSet(); +initializeSizeTracking_fn = function() { + const sizes = new ZeroArray(__privateGet(this, _max)); + __privateSet(this, _calculatedSize, 0); + __privateSet(this, _sizes, sizes); + __privateSet(this, _removeItemSize, (index) => { + __privateSet(this, _calculatedSize, __privateGet(this, _calculatedSize) - sizes[index]); + sizes[index] = 0; + }); + __privateSet(this, _requireSize, (k, v, size, sizeCalculation) => { + if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { + return 0; + } + if (!isPosInt(size)) { + if (sizeCalculation) { + if (typeof sizeCalculation !== "function") { + throw new TypeError("sizeCalculation must be a function"); + } + size = sizeCalculation(v, k); + if (!isPosInt(size)) { + throw new TypeError("sizeCalculation return invalid (expect positive integer)"); + } + } else { + throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set."); + } + } + return size; + }); + __privateSet(this, _addItemSize, (index, size, status) => { + sizes[index] = size; + if (__privateGet(this, _maxSize)) { + const maxSize = __privateGet(this, _maxSize) - sizes[index]; + while (__privateGet(this, _calculatedSize) > maxSize) { + __privateMethod(this, _evict, evict_fn).call(this, true); + } + } + __privateSet(this, _calculatedSize, __privateGet(this, _calculatedSize) + sizes[index]); + if (status) { + status.entrySize = size; + status.totalCalculatedSize = __privateGet(this, _calculatedSize); + } + }); +}; +_removeItemSize = new WeakMap(); +_addItemSize = new WeakMap(); +_requireSize = new WeakMap(); +_indexes = new WeakSet(); +indexes_fn = function* ({ allowStale = this.allowStale } = {}) { + if (__privateGet(this, _size)) { + for (let i = __privateGet(this, _tail); true; ) { + if (!__privateMethod(this, _isValidIndex, isValidIndex_fn).call(this, i)) { + break; + } + if (allowStale || !__privateGet(this, _isStale).call(this, i)) { + yield i; + } + if (i === __privateGet(this, _head)) { + break; + } else { + i = __privateGet(this, _prev)[i]; + } + } + } +}; +_rindexes = new WeakSet(); +rindexes_fn = function* ({ allowStale = this.allowStale } = {}) { + if (__privateGet(this, _size)) { + for (let i = __privateGet(this, _head); true; ) { + if (!__privateMethod(this, _isValidIndex, isValidIndex_fn).call(this, i)) { + break; + } + if (allowStale || !__privateGet(this, _isStale).call(this, i)) { + yield i; + } + if (i === __privateGet(this, _tail)) { + break; + } else { + i = __privateGet(this, _next)[i]; + } + } + } +}; +_isValidIndex = new WeakSet(); +isValidIndex_fn = function(index) { + return index !== void 0 && __privateGet(this, _keyMap).get(__privateGet(this, _keyList)[index]) === index; +}; +_evict = new WeakSet(); +evict_fn = function(free) { + var _a2, _b2; + const head = __privateGet(this, _head); + const k = __privateGet(this, _keyList)[head]; + const v = __privateGet(this, _valList)[head]; + if (__privateGet(this, _hasFetchMethod) && __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { + v.__abortController.abort(new Error("evicted")); + } else if (__privateGet(this, _hasDispose) || __privateGet(this, _hasDisposeAfter)) { + if (__privateGet(this, _hasDispose)) { + (_a2 = __privateGet(this, _dispose)) == null ? void 0 : _a2.call(this, v, k, "evict"); + } + if (__privateGet(this, _hasDisposeAfter)) { + (_b2 = __privateGet(this, _disposed)) == null ? void 0 : _b2.push([v, k, "evict"]); + } + } + __privateGet(this, _removeItemSize).call(this, head); + if (free) { + __privateGet(this, _keyList)[head] = void 0; + __privateGet(this, _valList)[head] = void 0; + __privateGet(this, _free).push(head); + } + if (__privateGet(this, _size) === 1) { + __privateSet(this, _head, __privateSet(this, _tail, 0)); + __privateGet(this, _free).length = 0; + } else { + __privateSet(this, _head, __privateGet(this, _next)[head]); + } + __privateGet(this, _keyMap).delete(k); + __privateWrapper(this, _size)._--; + return head; +}; +_backgroundFetch = new WeakSet(); +backgroundFetch_fn = function(k, index, options, context) { + const v = index === void 0 ? void 0 : __privateGet(this, _valList)[index]; + if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { + return v; + } + const ac = new AC(); + const { signal } = options; + signal == null ? void 0 : signal.addEventListener("abort", () => ac.abort(signal.reason), { + signal: ac.signal + }); + const fetchOpts = { + signal: ac.signal, + options, + context + }; + const cb = (v2, updateCache = false) => { + const { aborted } = ac.signal; + const ignoreAbort = options.ignoreFetchAbort && v2 !== void 0; + if (options.status) { + if (aborted && !updateCache) { + options.status.fetchAborted = true; + options.status.fetchError = ac.signal.reason; + if (ignoreAbort) + options.status.fetchAbortIgnored = true; + } else { + options.status.fetchResolved = true; + } + } + if (aborted && !ignoreAbort && !updateCache) { + return fetchFail(ac.signal.reason); + } + const bf2 = p; + if (__privateGet(this, _valList)[index] === p) { + if (v2 === void 0) { + if (bf2.__staleWhileFetching) { + __privateGet(this, _valList)[index] = bf2.__staleWhileFetching; + } else { + __privateMethod(this, _delete, delete_fn).call(this, k, "fetch"); + } + } else { + if (options.status) + options.status.fetchUpdated = true; + this.set(k, v2, fetchOpts.options); + } + } + return v2; + }; + const eb = (er) => { + if (options.status) { + options.status.fetchRejected = true; + options.status.fetchError = er; + } + return fetchFail(er); + }; + const fetchFail = (er) => { + const { aborted } = ac.signal; + const allowStaleAborted = aborted && options.allowStaleOnFetchAbort; + const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection; + const noDelete = allowStale || options.noDeleteOnFetchRejection; + const bf2 = p; + if (__privateGet(this, _valList)[index] === p) { + const del = !noDelete || bf2.__staleWhileFetching === void 0; + if (del) { + __privateMethod(this, _delete, delete_fn).call(this, k, "fetch"); + } else if (!allowStaleAborted) { + __privateGet(this, _valList)[index] = bf2.__staleWhileFetching; + } + } + if (allowStale) { + if (options.status && bf2.__staleWhileFetching !== void 0) { + options.status.returnedStale = true; + } + return bf2.__staleWhileFetching; + } else if (bf2.__returned === bf2) { + throw er; + } + }; + const pcall = (res, rej) => { + var _a2; + const fmp = (_a2 = __privateGet(this, _fetchMethod)) == null ? void 0 : _a2.call(this, k, v, fetchOpts); + if (fmp && fmp instanceof Promise) { + fmp.then((v2) => res(v2 === void 0 ? void 0 : v2), rej); + } + ac.signal.addEventListener("abort", () => { + if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) { + res(void 0); + if (options.allowStaleOnFetchAbort) { + res = (v2) => cb(v2, true); + } + } + }); + }; + if (options.status) + options.status.fetchDispatched = true; + const p = new Promise(pcall).then(cb, eb); + const bf = Object.assign(p, { + __abortController: ac, + __staleWhileFetching: v, + __returned: void 0 + }); + if (index === void 0) { + this.set(k, bf, { ...fetchOpts.options, status: void 0 }); + index = __privateGet(this, _keyMap).get(k); + } else { + __privateGet(this, _valList)[index] = bf; + } + return bf; +}; +_isBackgroundFetch = new WeakSet(); +isBackgroundFetch_fn = function(p) { + if (!__privateGet(this, _hasFetchMethod)) + return false; + const b = p; + return !!b && b instanceof Promise && b.hasOwnProperty("__staleWhileFetching") && b.__abortController instanceof AC; +}; +_connect = new WeakSet(); +connect_fn = function(p, n) { + __privateGet(this, _prev)[n] = p; + __privateGet(this, _next)[p] = n; +}; +_moveToTail = new WeakSet(); +moveToTail_fn = function(index) { + if (index !== __privateGet(this, _tail)) { + if (index === __privateGet(this, _head)) { + __privateSet(this, _head, __privateGet(this, _next)[index]); + } else { + __privateMethod(this, _connect, connect_fn).call(this, __privateGet(this, _prev)[index], __privateGet(this, _next)[index]); + } + __privateMethod(this, _connect, connect_fn).call(this, __privateGet(this, _tail), index); + __privateSet(this, _tail, index); + } +}; +_delete = new WeakSet(); +delete_fn = function(k, reason) { + var _a2, _b2, _c3, _d; + let deleted = false; + if (__privateGet(this, _size) !== 0) { + const index = __privateGet(this, _keyMap).get(k); + if (index !== void 0) { + deleted = true; + if (__privateGet(this, _size) === 1) { + __privateMethod(this, _clear, clear_fn).call(this, reason); + } else { + __privateGet(this, _removeItemSize).call(this, index); + const v = __privateGet(this, _valList)[index]; + if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { + v.__abortController.abort(new Error("deleted")); + } else if (__privateGet(this, _hasDispose) || __privateGet(this, _hasDisposeAfter)) { + if (__privateGet(this, _hasDispose)) { + (_a2 = __privateGet(this, _dispose)) == null ? void 0 : _a2.call(this, v, k, reason); + } + if (__privateGet(this, _hasDisposeAfter)) { + (_b2 = __privateGet(this, _disposed)) == null ? void 0 : _b2.push([v, k, reason]); + } + } + __privateGet(this, _keyMap).delete(k); + __privateGet(this, _keyList)[index] = void 0; + __privateGet(this, _valList)[index] = void 0; + if (index === __privateGet(this, _tail)) { + __privateSet(this, _tail, __privateGet(this, _prev)[index]); + } else if (index === __privateGet(this, _head)) { + __privateSet(this, _head, __privateGet(this, _next)[index]); + } else { + const pi = __privateGet(this, _prev)[index]; + __privateGet(this, _next)[pi] = __privateGet(this, _next)[index]; + const ni = __privateGet(this, _next)[index]; + __privateGet(this, _prev)[ni] = __privateGet(this, _prev)[index]; + } + __privateWrapper(this, _size)._--; + __privateGet(this, _free).push(index); + } + } + } + if (__privateGet(this, _hasDisposeAfter) && ((_c3 = __privateGet(this, _disposed)) == null ? void 0 : _c3.length)) { + const dt = __privateGet(this, _disposed); + let task; + while (task = dt == null ? void 0 : dt.shift()) { + (_d = __privateGet(this, _disposeAfter)) == null ? void 0 : _d.call(this, ...task); + } + } + return deleted; +}; +_clear = new WeakSet(); +clear_fn = function(reason) { + var _a2, _b2, _c3; + for (const index of __privateMethod(this, _rindexes, rindexes_fn).call(this, { allowStale: true })) { + const v = __privateGet(this, _valList)[index]; + if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { + v.__abortController.abort(new Error("deleted")); + } else { + const k = __privateGet(this, _keyList)[index]; + if (__privateGet(this, _hasDispose)) { + (_a2 = __privateGet(this, _dispose)) == null ? void 0 : _a2.call(this, v, k, reason); + } + if (__privateGet(this, _hasDisposeAfter)) { + (_b2 = __privateGet(this, _disposed)) == null ? void 0 : _b2.push([v, k, reason]); + } + } + } + __privateGet(this, _keyMap).clear(); + __privateGet(this, _valList).fill(void 0); + __privateGet(this, _keyList).fill(void 0); + if (__privateGet(this, _ttls) && __privateGet(this, _starts)) { + __privateGet(this, _ttls).fill(0); + __privateGet(this, _starts).fill(0); + } + if (__privateGet(this, _sizes)) { + __privateGet(this, _sizes).fill(0); + } + __privateSet(this, _head, 0); + __privateSet(this, _tail, 0); + __privateGet(this, _free).length = 0; + __privateSet(this, _calculatedSize, 0); + __privateSet(this, _size, 0); + if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) { + const dt = __privateGet(this, _disposed); + let task; + while (task = dt == null ? void 0 : dt.shift()) { + (_c3 = __privateGet(this, _disposeAfter)) == null ? void 0 : _c3.call(this, ...task); + } + } +}; +let LRUCache = _LRUCache; +const _VirtualMemoryController = class _VirtualMemoryController { + static get(id) { + return this._meshes.get(id); + } + static lockIn(mesh) { + Object.seal(mesh); + } + static add(id, mesh) { + this._meshes.set(id, mesh); + } + static delete(ids) { + for (const id of ids) { + this._meshes.delete(id); + } + } + static setCapacity(value) { + if (value === this._capacity) + return; + this._meshes.clear(); + this._meshes = this.setupMeshes(value); + this._capacity = value; + } + static setupMeshes(size) { + const maxSize = Math.max(size ?? this.computeCapacity(), 1); + const sizeCalculation = this.getSizeCalculationEvent(); + const lruInput = { maxSize, sizeCalculation }; + return new LRUCache(lruInput); + } + static computeCapacity() { + const deviceMemory = globalThis.navigator && "deviceMemory" in globalThis.navigator ? globalThis.navigator.deviceMemory : null; + const fallbackMemory = 2; + const baseMemory = deviceMemory !== null ? deviceMemory : fallbackMemory; + const result = this.oneHundredMb * baseMemory; + return Math.trunc(result); + } + static getDataSetMemory(mesh) { + let usedMemory = 0; + for (const item of mesh) { + usedMemory += item.usedMemory; + } + return Math.max(usedMemory, 1); + } + static getSizeCalculationEvent() { + return (mesh) => { + if (!Array.isArray(mesh)) { + return Math.max(mesh.usedMemory, 1); + } + return this.getDataSetMemory(mesh); + }; + } +}; +__publicField(_VirtualMemoryController, "oneHundredMb", 1e8); +__publicField(_VirtualMemoryController, "_meshes", _VirtualMemoryController.setupMeshes()); +__publicField(_VirtualMemoryController, "_capacity"); +__publicField(_VirtualMemoryController, "_memoryAttributes", [ + "positionBuffer", + "indexBuffer", + "normalBuffer" +]); +__publicField(_VirtualMemoryController, "updateMeshMemory", (mesh) => { + mesh.usedMemory = 0; + for (const key of _VirtualMemoryController._memoryAttributes) { + if (mesh.usedMemory !== void 0 && mesh[key]) { + mesh.usedMemory += mesh[key].byteLength; + } + } + _VirtualMemoryController.lockIn(mesh); +}); +let VirtualMemoryController = _VirtualMemoryController; +const _VirtualTilesController = class _VirtualTilesController { + constructor(data) { + __publicField(this, "meshes"); + __publicField(this, "tilesUpdated", false); + __publicField(this, "_sampleAmount"); + __publicField(this, "_tileDimension"); + __publicField(this, "_tileBySample"); + __publicField(this, "_lodBySample"); + __publicField(this, "_virtualMeshes", /* @__PURE__ */ new Map()); + __publicField(this, "_meshConnection"); + __publicField(this, "_samples"); + __publicField(this, "_tileIdGenerator", new CRC()); + __publicField(this, "_tiles", /* @__PURE__ */ new Map()); + __publicField(this, "_tilesChanged", /* @__PURE__ */ new Set()); + __publicField(this, "_sizeByTile", /* @__PURE__ */ new Map()); + __publicField(this, "_samplesDimensions"); + __publicField(this, "_sampleLodClass"); + __publicField(this, "_sampleLodState"); + __publicField(this, "_sampleLodSize"); + __publicField(this, "_boxes"); + __publicField(this, "_items"); + __publicField(this, "_materials"); + __publicField(this, "_modelId"); + __publicField(this, "_lastView", { + rotation: new Vector3(), + location: new Vector3() + }); + __publicField(this, "_params", { + updateTime: 16, + updateSamples: 64, + updateviewOrientation: 8 * Math.PI / 180, + updateViewPosition: 256, + smallTileSize: 0.32, + mediumTileSize: 4, + smallObjectSize: 2, + smallScreenSize: 2, + mediumScreenSize: 4, + largeScreenSize: 16, + tempTileDataSize: 6, + tileIdIncrement: 1, + tileSizeMultiplier: 10, + minTileDimension: 32, + tileDimensionFactor: 8 + }); + __publicField(this, "_temp", { + sample: new Sample(), + representation: new Representation(), + vector: new Vector3(), + matrix: new Matrix4(), + transform: new Matrix4(), + boundingBox: new Box3(), + sampleGeometry: {}, + box: new Box3(), + raycastPoints: [], + tileData: { + positionCount: this._params.tempTileDataSize, + objectClass: ObjectClass.LINE, + positionBuffer: new Float32Array(this._params.tempTileDataSize) + }, + tileCenter: new Vector3(), + tile: { + objectClass: ObjectClass.LINE, + positionCount: 6 + }, + viewDimension: 0, + pastFieldOfview: 0 + }); + __publicField(this, "_currentSample", 0); + __publicField(this, "_virtualPlanes", []); + __publicField(this, "_changedSamples", 0); + __publicField(this, "_virtualView"); + __publicField(this, "_lodMode", LodMode.DEFAULT); + this._modelId = data.modelId; + this._boxes = data.boxes; + this._items = data.items; + this._materials = data.materials; + this._meshConnection = new MeshConnection( + data.modelId, + data.connection, + data.multithreading + ); + this.meshes = data.model.meshes(); + this._sampleAmount = this.meshes.samplesLength(); + this._samples = new ItemConfigController(this._sampleAmount); + this._samplesDimensions = new Int32Array(this._sampleAmount); + this._sampleLodClass = new Uint8Array(this._sampleAmount); + this._sampleLodState = new Uint8Array(this._sampleAmount); + this._sampleLodSize = new Float32Array(this._sampleAmount); + this._tileDimension = this.computeTileSize(); + this._tileBySample = new Array(this._sampleAmount); + this._lodBySample = new Array(this._sampleAmount); + this.init(); + } + restart() { + this.resetUpdateProcess(); + this._meshConnection.clean(); + } + fetchSample(id, lod) { + this.fetchSampleAndRepresentation(id); + const mesh = this.fetchCurrentMesh(); + const sample = this.sampleTemplate(id); + sample.geometries = this.sampleGeoms(sample, lod, mesh); + return sample; + } + fetchGeometry(id) { + this.meshes.representations(id, this._temp.representation); + const mesh = this.fetchCurrentMesh(); + return mesh.fetchMeshes(id, true); + } + dispose() { + this._meshConnection.dispose(); + for (const [, mesh] of this._virtualMeshes) { + mesh.dispose(); + } + } + async generate(onProgress, throwIfAborted) { + for (const [, mesh] of this._virtualMeshes) { + mesh.setupTemplates(); + } + const step = Math.max(1, Math.floor(this._sampleAmount / 20)); + for (let i = 0; i < this._sampleAmount; i++) { + this.generateSampleInTiles(i); + if (i % step === 0) { + onProgress == null ? void 0 : onProgress(i / this._sampleAmount); + await new Promise((resolve) => setTimeout(resolve, 0)); + throwIfAborted == null ? void 0 : throwIfAborted(); + } + } + this.setupTileVisibilityAndHighlight(); + } + setupView(view) { + this._virtualView = view; + VirtualMemoryController.setCapacity(view.meshThreshold); + this.restart(); + this.updateOrientationIfNeeded(); + this.updatePositionIfNeeded(); + this.setupViewPlanes(); + } + updateVirtualMeshes(itemIds) { + if (!itemIds || !this._virtualView) { + return; + } + for (const itemId of itemIds) { + this.updateItem(itemId); + } + this.restart(); + } + getSampleTransform(id) { + this.fetchSampleAndRepresentation(id); + const sample = this.sampleTemplate(id); + return sample.transform; + } + /** + * For every loaded tile that contains at least one of the given items, + * returns the index-buffer chunks those items occupy in the tile. + * + * Lets a renderer clone the tile mesh sharing its `geometry.attributes` + * and `index`, then add `geometry.groups` for just the returned chunks + * to draw only the outlined slices. No highlight bookkeeping, no + * per-item slot allocation, no material array growth. + * + * Samples are stored in the tile in insertion order with locations + * `0..N-1`; `indexLocation[i]` is the start of sample `i` in the tile's + * index buffer, so a contiguous run of in-set samples maps to a single + * `(position, size)` chunk. + * + * @param itemIds - Internal item ids to look up. Public callers go + * through {@link VirtualFragmentsModel.getItemDrawChunks}, which + * accepts localIds and converts. + * @returns One entry per affected tile. `position[i]` and `size[i]` + * are parallel arrays giving start index and index count. + */ + getDrawChunksForItems(itemIds) { + const result = []; + if (itemIds.size === 0) + return result; + for (const [tileId, tile] of this._tiles) { + if (!tile.notVirtual) + continue; + const totalIndices = tile.indexCount ?? 0; + if (!totalIndices) + continue; + const positions = []; + const sizes = []; + let runStart = -1; + let location = 0; + for (const [sample] of tile.sampleLocation) { + const inSet = itemIds.has(this.itemId(sample)); + if (inSet) { + if (runStart < 0) + runStart = location; + } else if (runStart >= 0) { + const startIdx = tile.indexLocation[runStart]; + const endIdx = tile.indexLocation[location]; + positions.push(startIdx); + sizes.push(endIdx - startIdx); + runStart = -1; + } + location++; + } + if (runStart >= 0) { + const startIdx = tile.indexLocation[runStart]; + positions.push(startIdx); + sizes.push(totalIndices - startIdx); + } + if (positions.length === 0) + continue; + result.push({ + tileId, + position: new Uint32Array(positions), + size: new Uint32Array(sizes) + }); + } + return result; + } + async update(time) { + this.updateTiles(time); + this.notifyUpdateFinished(); + for (const tileId of this._tilesChanged) { + const tile = this._tiles.get(tileId); + this._meshConnection.process({ + tileRequestClass: TileRequestClass.UPDATE, + modelId: this._modelId, + tileId, + objectClass: tile.objectClass, + material: tile.materialId, + tileData: this.getTileData(tile), + currentLod: tile.lod + }); + } + this._tilesChanged.clear(); + } + raycast(representation, ray, frustum, snap) { + this._temp.raycastPoints = []; + const rClass = representation.representationClass(); + const mesh = this._virtualMeshes.get(rClass); + this.manageRaycast(mesh, representation, ray, frustum, snap); + return this._temp.raycastPoints; + } + setLodMode(lodMode) { + this._lodMode = lodMode; + this.restart(); + } + init() { + const shells = new VirtualShellManager(this._modelId, this.meshes); + const shellsRepresentation = shells.getRepresentation(); + this._virtualMeshes.set(shellsRepresentation, shells); + const ces = new VirtualCircleExtrusionManager(this._modelId, this.meshes); + const cesRepresentation = ces.getRepresentation(); + this._virtualMeshes.set(cesRepresentation, ces); + this.processSamplesDimension(); + this.fetchSampleLodSize(); + } + initSampleLod(id) { + this.fetchSampleAndRepresentation(id); + const mesh = this.fetchCurrentMesh(); + this._sampleLodClass[id] = mesh.getLodClass(); + this._sampleLodState[id] = CurrentLod.INVISIBLE; + } + fetchSampleAndRepresentation(id) { + this.meshes.samples(id, this._temp.sample); + this.meshes.representations( + this._temp.sample.representation(), + this._temp.representation + ); + } + fetchCurrentMesh() { + const rClass = this._temp.representation.representationClass(); + return this._virtualMeshes.get(rClass); + } + fetchCurrentMaterial() { + const materialId = this._temp.sample.material(); + return this._materials[materialId]; + } + fetchSampleLodSize() { + for (let i = 0; i < this._sampleAmount; i++) { + this.initSampleLod(i); + TransformHelper.getBox(this._temp.representation, this._temp.box); + this._sampleLodSize[i] = BoxUtils.getWidth(this._temp.box); + } + } + setupTileVisibilityAndHighlight() { + for (const [, tile] of this._tiles) { + tile.visibilities = new MultiBufferData(tile.size, false); + tile.highlights = new MultiBufferData(tile.size, 0); + } + } + addLodToTile(mesh, id, material) { + if (mesh.getLodClass() === LodClass.AABB) { + this.addBoxLodToTile(id, material); + return; + } + if (mesh.getLodClass() === LodClass.CUSTOM) { + this.addCustomLodToTile(mesh, id, material); + } + } + addBoxLodToTile(id, material) { + this._lodBySample[id] = this.lodTileAppendSample(id, material); + } + notifyUpdateFinished() { + const noficationNotSentYet = !this.tilesUpdated; + const samplesUpdated = this._changedSamples >= this._sampleAmount; + const updateFinished = samplesUpdated && noficationNotSentYet; + if (!updateFinished) { + return; + } + this._meshConnection.process({ + tileRequestClass: TileRequestClass.FINISH, + modelId: this._modelId, + // Stamp with the highest seq this worker has seen on incoming + // RPCs. Because RPC handlers serialize with the update tick on + // the worker (single-threaded JS), any RPC that finished before + // this tick has had its state changes processed during it — so + // any tile updates emitted in this batch reflect those RPCs' + // effects. Main uses the stamp to resolve `forceUpdateFinish` + // waiters precisely, no buffer / poll required. + seq: thread.lastSeenSeq + }); + this.tilesUpdated = true; + } + updatePositionIfNeeded() { + const positionThreshold = this._params.updateViewPosition; + const pos = this._virtualView.cameraPosition; + const positionChange = pos.distanceToSquared(this._lastView.location); + const positionNeedsUpdate = positionChange > positionThreshold; + if (positionNeedsUpdate) { + this._currentSample = 0; + this._lastView.location.copy(pos); + } + } + updateCurrentSample() { + this._currentSample++; + if (this._currentSample >= this._sampleAmount) { + this._currentSample = 0; + } + this._changedSamples++; + } + processSamplesDimension() { + for (let i = 0; i < this._sampleAmount; i++) { + this._samplesDimensions[i] = i; + } + this._samplesDimensions.sort((a, b) => { + const bDimension = this._boxes.dimensionOf(b); + const aDimension = this._boxes.dimensionOf(a); + return bDimension - aDimension; + }); + } + setupViewPlanes() { + this._virtualPlanes = []; + for (const plane of this._virtualView.cameraFrustum.planes) { + this._virtualPlanes.push(plane); + } + if (this._virtualView.clippingPlanes) { + for (const plane of this._virtualView.clippingPlanes) { + this._virtualPlanes.push(plane); + } + } + } + updateOrientationIfNeeded() { + const orientation = this.getCurrentViewOrientation(); + const orientationThreshold = this._params.updateviewOrientation; + const orientationChange = orientation.angleTo(this._lastView.rotation); + const orientationNeedsUpdate = orientationChange > orientationThreshold; + if (orientationNeedsUpdate) { + this._currentSample = 0; + this._lastView.rotation.copy(orientation); + } + } + getCurrentViewOrientation() { + return this._virtualView.cameraFrustum.planes[4].normal; + } + resetUpdateProcess() { + this._changedSamples = 0; + this.tilesUpdated = false; + } + manageRaycast(mesh, repr, ray, frustum, snap) { + const found = RaycastController.cast(mesh, repr, ray, frustum, snap); + if (found) { + for (const point of found) { + point.representationClass = mesh.getObjectClass(); + this._temp.raycastPoints.push(point); + } + } + } + setTileShellBuffer(tile) { + if (tile.usedMemory === void 0 || tile.objectClass !== ObjectClass.SHELL) { + return; + } + tile.ids = new Uint8Array(tile.positionCount / 3 * 4); + tile.usedMemory += tile.ids.byteLength; + } + getTileWhenSamplePut(tileId, tileData, material) { + let tile = this._tiles.get(tileId); + if (tile === void 0) { + const lod = tileData.lod || CurrentLod.GEOMETRY; + tile = this.newTile(tileData.objectClass, material, lod); + this._tiles.set(tileId, tile); + } + return tile; + } + getPerspTrueDim(fov, distance) { + const radFactor = Math.PI / 180; + const tan = Math.tan(fov * 0.5 * radFactor); + return distance * tan; + } + getTileHighlight(tile, locations) { + let highlightData = void 0; + let highlightIds = void 0; + const highlights = tile.highlights; + if (!highlights) { + return { highlightData: void 0, highlightIds: void 0 }; + } + const highlightSize = highlights.size((id) => id !== 0); + if (highlightSize > 0) { + highlightIds = new Uint16Array(highlightSize); + const f = (id) => id !== 0; + const c = (id, data) => highlightIds[id] = data; + highlightData = MultiBufferData.get(highlights, locations, f, c); + } + return { highlightData, highlightIds }; + } + setupTileSampleAttributes(tile, location, geometry, sample) { + const resultPosition = tile.vertexLocation[location] * 3; + for (let i = 0; i < geometry.positionBuffer.length; i += 3) { + this._temp.vector.fromArray(geometry.positionBuffer, i); + this._temp.vector.applyMatrix4(this._temp.matrix); + this._temp.vector.toArray(tile.positionBuffer, resultPosition + i); + } + if (tile.normalBuffer) { + const resultPosition2 = tile.vertexLocation[location] * 3; + for (let i = 0; i < geometry.normalBuffer.length; i += 3) { + this._temp.vector.fromArray(geometry.normalBuffer, i); + this._temp.vector.transformDirection(this._temp.matrix); + this._temp.vector.multiplyScalar(normalizationValue); + this._temp.vector.toArray(tile.normalBuffer, resultPosition2 + i); + } + } + if (tile.indexBuffer) { + const indicesPosition = tile.indexLocation[location]; + const position = tile.vertexLocation[location]; + for (let i = 0; i < geometry.indexCount; i++) { + const result = geometry.indexBuffer[i] + position; + tile.indexBuffer[i + indicesPosition] = result; + } + } + if (tile.faceIdBuffer && geometry.faceIdBuffer) { + const sampleOffset = sample.sample * 100; + const start = tile.vertexLocation[location]; + const end = start + geometry.positionCount / 3; + for (let i = start; i < end; i++) { + tile.faceIdBuffer[i] = geometry.faceIdBuffer[i - start] + sampleOffset; + } + } + if (geometry.objectClass === ObjectClass.SHELL) { + const start = tile.vertexLocation[location]; + const end = start + geometry.positionCount / 3; + const itemId = this.itemId(sample.sample); + const encoded = itemId + 1 >>> 0; + const b0 = Math.floor(encoded / 16777216) & 255; + const b1 = Math.floor(encoded / 65536) & 255; + const b2 = Math.floor(encoded / 256) & 255; + const b3 = encoded & 255; + const buf = tile.ids; + for (let i = start; i < end; i++) { + const o = i * 4; + buf[o] = b0; + buf[o + 1] = b1; + buf[o + 2] = b2; + buf[o + 3] = b3; + } + } + } + getTileVisibility(tile, locations) { + if (!tile.visibilities) { + throw new Error("Fragments: Malformed tile!"); + } + if (tile.visibilities.fullOf(false)) { + return void 0; + } + const filter = (data) => data; + return MultiBufferData.get(tile.visibilities, locations, filter); + } + memoryOverflow() { + const current = _VirtualTilesController._graphicMemoryConsumed; + const available = this._virtualView.graphicThreshold; + return current > available; + } + updateMesh(sample) { + let current = this.fetchLodLevel(sample); + const past = this._sampleLodState[sample]; + current = this.hideHighlightedLods(current, sample); + if (current === past) { + this.updateSampleIfSeen(current, sample); + return; + } + this.updateVisible(past, current, sample); + } + tileLoadSample(tile, sample, geomIndex) { + const location = tile.sampleLocation.get(sample.sample); + const geometry = this.getSampleGeometries(sample, geomIndex); + this.setupTileLocation(tile, geometry, sample); + this.fetchSampleTransform(tile, sample); + this.setupTileSampleAttributes(tile, location, geometry, sample); + } + updateSampleIfSeen(current, sample) { + if (current !== CurrentLod.INVISIBLE) { + this.updateSample(sample, current); + } + } + hideHighlightedLods(current, _sample) { + return current; + } + updateVisible(past, current, sample) { + if (past !== CurrentLod.INVISIBLE) { + this.makeSampleInvisible(sample, past); + } + const isSeen = current !== CurrentLod.INVISIBLE; + if (isSeen) { + this.updateSample(sample, current); + } + this._samples.setVisible(sample, isSeen); + this._sampleLodState[sample] = current; + } + makeInvisibleFromTile(tileId, sample) { + const tile = this._tiles.get(tileId); + this.updateTileData(tile, sample, false, 0); + this.deleteTileIfNeeded(tile, tileId); + } + updateSample(id, lod) { + const itemId = this.itemId(id); + const visible = this._items.visible(itemId); + const highlight = this._items.getHighlight(itemId); + const changed = this.hasChanged(id, lod, visible, highlight); + if (changed) { + this.setSample(id, visible, highlight, lod); + } + } + hasHighlightChanged(id, highlight) { + const currentHighlight = this._samples.getHighlight(id); + return highlight !== currentHighlight; + } + hasVisibleChanged(id, visible) { + const currentVisible = this._samples.visible(id); + return visible !== currentVisible; + } + newTile(objectClass, material, lod) { + const tile = {}; + tile.notVirtual = false; + tile.materialId = material; + tile.indexLocation = []; + tile.box = new Box3(); + tile.objectClass = objectClass; + tile.lod = lod; + tile.normalCount = 0; + tile.indexCount = 0; + tile.vertexLocation = []; + tile.size = 0; + tile.geometriesLocation = []; + tile.positionCount = 0; + tile.sampleLocation = /* @__PURE__ */ new Map(); + tile.faceIdBuffer = new Uint32Array(0); + return tile; + } + createLod(box) { + const line = TransformHelper.boxSize(box); + const position = this._temp.tileData.positionBuffer; + if (!position) { + throw new Error("Fragments: Malformed tiles!"); + } + position[0] = line.start.x; + position[1] = line.start.y; + position[2] = line.start.z; + position[3] = line.end.x; + position[4] = line.end.y; + position[5] = line.end.z; + return this._temp.tileData; + } + sampleTemplate(id) { + const sample = this._temp.sample; + const representation = this._temp.representation; + TransformHelper.get(sample, this.meshes, this._temp.transform); + TransformHelper.getBox(representation, this._temp.boundingBox); + this._temp.sampleGeometry.sample = id; + const materialId = sample.material(); + this._temp.sampleGeometry.material = this._materials[materialId]; + this._temp.sampleGeometry.transform = this._temp.transform; + this._temp.sampleGeometry.aabb = this._temp.boundingBox; + delete this._temp.sampleGeometry.geometries; + const reprIndex = this._temp.sample.representation(); + const reprId = this.meshes.representationIds(reprIndex); + this._temp.sampleGeometry.representationId = reprId; + return this._temp.sampleGeometry; + } + makeSampleInvisible(id, lod) { + const tileIds = this.getTileIds(id, lod); + if (!tileIds) { + return; + } + const callback = (tileId) => this.makeInvisibleFromTile(tileId, id); + MiscHelper.forEach(tileIds, callback); + } + setSample(id, vis, high, lod) { + this._samples.setVisible(id, vis); + this._samples.setHighlight(id, high); + const tileIds = this.getTileIds(id, lod); + if (tileIds === void 0) + return; + MiscHelper.forEach(tileIds, (tileId) => { + this.updateTile(tileId, id, high, high === 0); + }); + } + getTileIds(sample, lod) { + if (lod === CurrentLod.GEOMETRY) { + return this._tileBySample[sample]; + } + return this._lodBySample[sample]; + } + addBasicTileData(a, sample, id) { + a.sampleLocation.set(sample, a.size); + a.size++; + a.geometriesLocation.push(id); + a.indexLocation.push(a.indexCount || 0); + a.vertexLocation.push((a.positionCount || 0) / 3); + } + buildNewVirtualTile(tile, tileId) { + this.constructTile(tile); + this.loadTile(tileId, tile); + tile.notVirtual = true; + delete tile.indexBuffer; + delete tile.positionBuffer; + delete tile.normalBuffer; + delete tile.faceIdBuffer; + delete tile.ids; + } + deleteTileIfNeeded(tile, tileId) { + const shouldDelete = this.getShouldDeleteTile(tile); + if (shouldDelete) { + this.deleteGeometry(tileId); + tile.notVirtual = false; + _VirtualTilesController._graphicMemoryConsumed -= tile.usedMemory; + return; + } + this._tilesChanged.add(tileId); + } + getShouldDeleteTile(tile) { + if (!tile.visibilities || !tile.highlights) { + throw new Error("Fragments: Malformed tile!"); + } + const invisible = tile.visibilities.fullOf(false); + const noHighlight = tile.highlights.fullOf(0); + const memoryOverflow = this.memoryOverflow(); + return invisible && noHighlight && memoryOverflow; + } + checkTileMemoryOverflow(tileId, tileData) { + const tile = this._tiles.get(tileId); + const bufferSize = tile ? tile.positionCount : 0; + const totalSize = bufferSize + tileData.positionCount; + const memoryOverflow = totalSize > limitOf2Bytes; + return memoryOverflow; + } + updateTileData(tile, sample, visible, highlight) { + if (!tile.visibilities || !tile.highlights) { + throw new Error("Fragments: Malformed tile!"); + } + const id = tile.sampleLocation.get(sample); + tile.visibilities.update(id, visible); + tile.highlights.update(id, highlight); + } + getKeepUpdating(sampleId, time) { + const maxTime = this._params.updateTime; + const minSamples = this._params.updateSamples; + const samplesLeft = sampleId < this._sampleAmount; + const passedTime = performance.now() - time; + const isFirstSamples = sampleId < minSamples; + const timeLeft = passedTime < maxTime || isFirstSamples; + const shouldKeepUpdating = samplesLeft && timeLeft; + return shouldKeepUpdating; + } + computeTileSize() { + const dimension = this._boxes.fullBox.getSize(this._temp.vector); + const maxDimension = Math.max(dimension.x, dimension.y, dimension.z); + const fraction = maxDimension / this._params.tileDimensionFactor; + const maxIntFraction = Math.ceil(fraction); + return Math.max(this._params.minTileDimension, maxIntFraction); + } + newTileId(sample, material, tileData) { + this.logBufferOverflowIfNeeded(tileData); + const lod = tileData.lod || CurrentLod.GEOMETRY; + const code = this.generateTileCode(sample, material, tileData, lod); + const tileSize = this._sizeByTile.get(code) || 1; + let tileId = code + tileSize - 1; + const memoryOverflow = this.checkTileMemoryOverflow(tileId, tileData); + if (memoryOverflow) { + tileId += this._params.tileIdIncrement; + this._sizeByTile.set(code, tileSize + 1); + } + return tileId; + } + logBufferOverflowIfNeeded(tileData) { + const geometrySize = tileData.positionCount / 3; + if (geometrySize > limitOf2Bytes) { + console.log("Fragments: Buffer overflow"); + } + } + fetchLodLevel(sample) { + if (this._lodMode === LodMode.ALL_VISIBLE) { + this.meshes.samples(sample, this._temp.sample); + const itemId2 = this._temp.sample.item(); + const isSeen2 = this._items.visible(itemId2); + if (!isSeen2) { + return CurrentLod.INVISIBLE; + } + return CurrentLod.GEOMETRY; + } + const item = this._boxes.get(sample); + const notClipped = CameraUtils.collides(item, this._virtualPlanes); + if (!notClipped) { + return CurrentLod.INVISIBLE; + } + this.meshes.samples(sample, this._temp.sample); + const itemId = this._temp.sample.item(); + const isSeen = this._items.visible(itemId); + if (!isSeen) { + return CurrentLod.INVISIBLE; + } + const quality = this._virtualView.graphicQuality; + const dimension = this._boxes.dimensionOf(sample); + const offset = item.distanceToPoint(this._virtualView.cameraPosition); + const screenDimension = this.screenSize(dimension, offset); + const isSmall = dimension < this._params.smallObjectSize; + const isLarge = !isSmall; + const smallScreen = this._params.smallScreenSize * quality; + const mediumScreen = this._params.mediumScreenSize * quality; + const largeScreen = this._params.largeScreenSize * quality; + const isSmallInScreen = screenDimension < smallScreen; + const isMediumInScreen = screenDimension < mediumScreen; + const isLargeInScreen = screenDimension < largeScreen; + const smallAndFar = isSmall && isMediumInScreen; + const largeAndVeryFar = isLarge && isSmallInScreen; + const smallAndClose = isSmall && isLargeInScreen; + const largeAndFar = isLarge && isMediumInScreen; + if (smallAndFar || largeAndVeryFar) { + return CurrentLod.INVISIBLE; + } + if (this._lodMode === LodMode.ALL_GEOMETRY) { + return CurrentLod.GEOMETRY; + } + if (smallAndClose || largeAndFar) { + return CurrentLod.WIRES; + } + const lodSize = this._sampleLodSize[sample]; + const screenSize = this.screenSize(lodSize, offset); + const wireLimit = Math.max(mediumScreen, this._params.mediumScreenSize); + const isWireLike = screenSize < wireLimit; + if (isWireLike) { + return CurrentLod.WIRES; + } + return CurrentLod.GEOMETRY; + } + generateTileCode(sample, material, tile, lod) { + this._tileIdGenerator.reset(); + this.processTileDataId(tile, material, lod); + const box = this.processTileSpatialId(sample, lod); + this.processTileDimensionId(box); + return this._tileIdGenerator.value; + } + processTileDataId(tile, material, lod) { + this._tileIdGenerator.compute( + tile.objectClass !== void 0 ? tile.objectClass : 0 + ); + this._tileIdGenerator.compute(material); + this._tileIdGenerator.compute(lod); + } + deleteGeometry(tileId) { + this._meshConnection.process({ + tileRequestClass: TileRequestClass.DELETE, + modelId: this._modelId, + tileId + }); + } + processTileSpatialId(sample, lod) { + const x = this._temp.tileCenter.x; + const y = this._temp.tileCenter.y; + const z = this._temp.tileCenter.z; + const box = this._boxes.get(sample); + box.getCenter(this._temp.tileCenter); + const tileDimension = this.getTileDimension(lod); + const tx = x - x % tileDimension; + const ty = y - y % tileDimension; + const tz = z - z % tileDimension; + this._tileIdGenerator.compute(tx); + this._tileIdGenerator.compute(ty); + this._tileIdGenerator.compute(tz); + return box; + } + addCustomLodToTile(mesh, id, material) { + const lods = this.meshData(mesh, false, CurrentLod.WIRES); + this._sampleLodSize[id] = lods.lodThickness || 0; + this._lodBySample[id] = this.putSampleInTiles(id, material, lods); + } + getTileLocations(tile) { + if (tile.indexCount) { + return tile.indexLocation; + } + return tile.vertexLocation; + } + getTileDimension(lod) { + let tileDimension = this._tileDimension; + if (lod === CurrentLod.GEOMETRY) { + tileDimension *= this._params.tileSizeMultiplier; + } + return tileDimension; + } + processTileDimensionId(box) { + const sizeCategory = this.getTileDimensionClass(box); + this._tileIdGenerator.compute(sizeCategory); + } + tileAppend(a, b, sample, id) { + this.addBasicTileData(a, sample, id); + this.tileAppendAttribute(a, b, "indexCount", false); + this.tileAppendAttribute(a, b, "positionCount", false); + this.tileAppendAttribute(a, b, "normalCount", false); + this.tileAppendAttribute(a, b, "materialId", true); + } + putSampleInTiles(sample, material, tiles) { + let tileIds = void 0; + const onSamplePut = (tileData, id) => { + const tileId = this.newTileId(sample, material, tileData); + tileIds = this.getTileIdsWhenSamplePut(tileIds, tileId); + const tile = this.getTileWhenSamplePut(tileId, tileData, material); + this.tileAppend(tile, tileData, sample, id); + }; + MiscHelper.forEach(tiles, onSamplePut); + return tileIds; + } + hasLodChanged(id, lod) { + const currentLod = this._sampleLodState[id]; + return lod !== currentLod; + } + getTileIdsWhenSamplePut(tileIds, tileId) { + if (tileIds === void 0) { + tileIds = tileId; + } else if (typeof tileIds === "number") { + if (tileIds !== tileId) + tileIds = [tileIds, tileId]; + } else if (!tileIds.includes(tileId)) { + tileIds.push(tileId); + } + return tileIds; + } + updateTile(tileId, sample, highlight, visible) { + const tile = this._tiles.get(tileId); + this.updateTileData(tile, sample, visible, highlight); + if (tile.notVirtual) { + this._tilesChanged.add(tileId); + return; + } + this.buildNewVirtualTile(tile, tileId); + } + getLodTileWhenPutSample(tileId, material) { + let tile = this._tiles.get(tileId); + if (!tile) { + const objectClass = this._temp.tile.objectClass; + tile = this.newTile(objectClass, material, CurrentLod.WIRES); + this._tiles.set(tileId, tile); + } + return tile; + } + lodTileAppendSample(sample, material) { + const wires = CurrentLod.WIRES; + const tempTile = this._temp.tile; + const tileId = this.generateTileCode(sample, material, tempTile, wires); + const tile = this.getLodTileWhenPutSample(tileId, material); + this.tileAppend(tile, tempTile, sample, 0); + return tileId; + } + addSampleToTile(mesh, id, material) { + const meshes = this.meshData(mesh, false, CurrentLod.GEOMETRY); + this._tileBySample[id] = this.putSampleInTiles(id, material, meshes); + } + setTileBuffer(tile, key, unsigned) { + if (tile.usedMemory === void 0) { + return; + } + const count = tile[`${key}Count`]; + if (count > 0) { + const buffer = unsigned ? new Uint16Array(count) : new Int16Array(count); + tile[`${key}Buffer`] = buffer; + tile.usedMemory += buffer.byteLength; + } + } + updateTiles(time) { + const needsUpdate = this._changedSamples < this._sampleAmount; + const viewAvailable = this._virtualView !== void 0; + if (!viewAvailable || !needsUpdate) { + return; + } + let keepUpdating = true; + let updatingSampleId = 0; + while (keepUpdating) { + const meshId = this._samplesDimensions[this._currentSample]; + this.updateMesh(meshId); + this.updateCurrentSample(); + updatingSampleId++; + keepUpdating = this.getKeepUpdating(updatingSampleId, time); + } + } + sampleGeoms(sample, lod, mesh) { + if (mesh.getLodClass() === LodClass.AABB && lod === CurrentLod.WIRES) { + return this.createLod(sample.aabb); + } + return this.meshData(mesh, true, lod); + } + generateSampleInTiles(id) { + this.fetchSampleAndRepresentation(id); + const material = this.fetchCurrentMaterial(); + const mesh = this.fetchCurrentMesh(); + this.addSampleToTile(mesh, id, material); + this.addLodToTile(mesh, id, material); + } + buildSampleInTile(tile, position, sample, isStart, id) { + const found = tile.geometriesLocation[position]; + this.tileLoadSample(tile, sample, found); + if (isStart) { + const box = this._boxes.get(id); + this._temp.vector.copy(tile.location); + this._temp.vector.negate(); + box.translate(this._temp.vector); + tile.box.union(box); + } + } + getSampleGeometries(sample, geomIndex) { + if (Array.isArray(sample.geometries)) { + return sample.geometries[geomIndex]; + } + return sample.geometries; + } + constructTile(tile) { + if (tile.positionBuffer === void 0) { + tile.positionBuffer = new Float32Array(tile.positionCount); + tile.usedMemory = tile.positionBuffer.byteLength; + this.setTileBuffer(tile, "index", true); + this.setTileBuffer(tile, "normal", false); + this.setTileShellBuffer(tile); + tile.faceIdBuffer = new Uint32Array(tile.positionCount / 3); + tile.usedMemory += tile.faceIdBuffer.byteLength; + } + const isStart = !tile.location; + for (const [id, position] of tile.sampleLocation) { + const sample = this.fetchSample(id, tile.lod); + if (sample && sample.geometries) { + this.buildSampleInTile(tile, position, sample, isStart, id); + } + } + } + fetchSampleTransform(tile, sample) { + this._temp.vector.copy(tile.location); + this._temp.vector.negate(); + this._temp.matrix.identity(); + this._temp.matrix.setPosition(this._temp.vector); + this._temp.matrix.multiply(sample.transform); + } + hasChanged(id, lod, vis, high) { + const lodNeedsChanged = this.hasLodChanged(id, lod); + const visibleChangd = this.hasVisibleChanged(id, vis); + const highlightChanged = this.hasHighlightChanged(id, high); + return lodNeedsChanged || visibleChangd || highlightChanged; + } + setupTileLocation(tile, geometry, sample) { + if (tile.location) { + return; + } + const result = new Vector3(); + result.fromArray(geometry.positionBuffer); + result.applyMatrix4(sample.transform); + tile.location = result; + } + getTileData(tile) { + const locations = this.getTileLocations(tile); + const visibilityData = this.getTileVisibility(tile, locations); + const highlight = this.getTileHighlight(tile, locations); + const { highlightData, highlightIds } = highlight; + return { visibilityData, highlightData, highlightIds }; + } + updateMemoryOnTileLoad(tile) { + _VirtualTilesController._graphicMemoryConsumed += tile.usedMemory; + } + fetchTileMatrixOnLoad(tile) { + if (tile.location) { + this._temp.matrix.identity(); + this._temp.matrix.setPosition(tile.location); + } + } + updateItem(itemId) { + const sampleIds = this._boxes.sampleOf(itemId); + if (sampleIds) { + for (const sampleId of sampleIds) { + this.updateMesh(sampleId); + } + } + } + screenSize(dimension, distance) { + const viewDimension = this.getViewDimension(distance); + const screenDimension = dimension / viewDimension; + return screenDimension * this._virtualView.viewSize; + } + getTileDimensionClass(box) { + const size = box.min.distanceToSquared(box.max); + const small = this._params.smallTileSize; + const medium = this._params.mediumTileSize; + if (size > medium) { + return 2; + } + if (size > small) { + return 1; + } + return 0; + } + getViewDimension(distance) { + if (this._virtualView.orthogonalDimension) { + return this._virtualView.orthogonalDimension; + } + const currentFov = this._virtualView.fov; + const fovChanged = currentFov !== this._temp.pastFieldOfview; + if (fovChanged) { + this._temp.viewDimension = this.getPerspTrueDim(currentFov, 1); + this._temp.pastFieldOfview = currentFov; + } + return distance * this._temp.viewDimension; + } + loadTile(tileId, tile) { + const tileData = this.getTileData(tile); + this.fetchTileMatrixOnLoad(tile); + const faceIds = this.getFaceIds(tile); + this._meshConnection.process({ + tileRequestClass: TileRequestClass.CREATE, + modelId: this._modelId, + objectClass: tile.objectClass, + tileId, + itemId: void 0, + tileData, + indices: tile.indexBuffer, + positions: tile.positionBuffer, + normals: tile.normalBuffer, + faceIds, + itemIds: tile.ids, + material: tile.materialId, + matrix: this._temp.matrix.clone(), + aabb: tile.box.clone(), + currentLod: tile.lod + }); + this.updateMemoryOnTileLoad(tile); + } + getFaceIds(tile) { + const tempColor = new Color(); + const faceIdBuffer = tile.faceIdBuffer; + const faceIds = new Float32Array(faceIdBuffer.length * 3); + for (let i = 0; i < faceIdBuffer.length; i++) { + const id = faceIdBuffer[i]; + tempColor.set(0 + id); + faceIds[i * 3] = tempColor.r; + faceIds[i * 3 + 1] = tempColor.g; + faceIds[i * 3 + 2] = tempColor.b; + } + return faceIds; + } + meshData(mesh, allowVoid, lod) { + const id = this._temp.representation.id(); + const customLod = mesh.getLodClass() === LodClass.CUSTOM; + const wiresLod = lod === CurrentLod.WIRES; + if (customLod && wiresLod) { + const meshWithLod = mesh; + const result2 = meshWithLod.fetchLod(id, allowVoid); + return result2; + } + const result = mesh.fetchMeshes(id, allowVoid); + return result; + } + tileAppendAttribute(a, b, name, equal) { + if (b[name] === void 0) { + return; + } + if (equal) { + a[name] = b[name]; + return; + } + a[name] += b[name]; + } + itemId(sample) { + this.meshes.samples(sample, this._temp.sample); + return this._temp.sample.item(); + } +}; +__publicField(_VirtualTilesController, "_graphicMemoryConsumed", 0); +let VirtualTilesController = _VirtualTilesController; +class MaterialUtils { + static isSame(a, b) { + const isSameColor = this.checkSameColor(a.color, b.color); + const isSameOpacity = this.checkSame(a.opacity, b.opacity, 1); + const facesA = a.renderedFaces; + const facesB = b.renderedFaces; + const isSameFaces = this.checkSame(facesA, facesB, RenderedFaces.ONE); + return isSameColor && isSameOpacity && isSameFaces; + } + static checkSame(a, b, fallback) { + if (a === b) { + return true; + } + if (a === fallback && b === void 0) { + return true; + } + if (a === void 0 && b === fallback) { + return true; + } + return false; + } + static checkSameColor(a, b) { + if (a === b) { + return true; + } + if (a === void 0 || b === void 0) { + return false; + } + const { r: ar, g: ag, b: ab } = a; + const { r: br, g: bg, b: bb } = b; + if (ar === br && ag === bg && ab === bb) { + return true; + } + return false; + } +} +class VirtualMaterialController { + constructor(modelId, onTransfer) { + __publicField(this, "_modelId"); + __publicField(this, "_list", []); + __publicField(this, "_onTransfer"); + this._modelId = modelId; + this._onTransfer = onTransfer; + } + update(model) { + const meshes = model.meshes(); + const matList = []; + return this.getAll(meshes, matList); + } + fetch(materialId) { + return this._list[materialId]; + } + transfer(materials) { + const result = this.deduplicateMaterials(materials); + const { materialDefinitions, ids } = result; + this.transferMaterialData(materialDefinitions); + return ids; + } + getItemsMaterialDefinition(model, indices, localIds) { + const result = []; + const meshes = model.meshes(); + if (!meshes) + return []; + const map = /* @__PURE__ */ new Map(); + for (const [index, itemIndex] of indices.entries()) { + const sample = meshes.samples(itemIndex); + if (!sample) + continue; + const materialIndex = sample.material(); + let materialItems = map.get(materialIndex); + if (!materialItems) { + materialItems = /* @__PURE__ */ new Set(); + map.set(materialIndex, materialItems); + } + materialItems.add(localIds[index]); + } + for (const [materialIndex, localIds2] of map.entries()) { + const material = meshes.materials(materialIndex); + if (!material) + continue; + const definition = ParserHelper.parseMaterial(material); + result.push({ localIds: [...localIds2], definition }); + } + return result; + } + checkMaterialExists(material, ids) { + if (material.preserveOriginalMaterial) { + return false; + } + const count = this._list.length; + for (let i = 0; i < count; i++) { + const current = this._list[i]; + const isSame = MaterialUtils.isSame(material, current); + if (isSame) { + ids.push(i); + return true; + } + } + return false; + } + deduplicateMaterials(materialDefinition) { + const ids = []; + const materialDefinitions = []; + for (const material of materialDefinition) { + const exists = this.checkMaterialExists(material, ids); + if (!exists) { + this._list.push(material); + materialDefinitions.push(material); + const currentId = this._list.length - 1; + ids.push(currentId); + } + } + return { materialDefinitions, ids }; + } + getAll(meshes, materialDefinitions) { + const count = meshes.materialsLength(); + for (let i = 0; i < count; i++) { + const matData = meshes.materials(i); + const definition = ParserHelper.parseMaterial(matData); + definition.localId = meshes.materialIds(i); + materialDefinitions.push(definition); + } + return this.transfer(materialDefinitions); + } + transferMaterialData(materialDefinitions) { + this._onTransfer({ + class: MultiThreadingRequestClass.CREATE_MATERIAL, + modelId: this._modelId, + materialDefinitions + }); + } +} +var EditRequestType = /* @__PURE__ */ ((EditRequestType2) => { + EditRequestType2[EditRequestType2["CREATE_MATERIAL"] = 0] = "CREATE_MATERIAL"; + EditRequestType2[EditRequestType2["CREATE_REPRESENTATION"] = 1] = "CREATE_REPRESENTATION"; + EditRequestType2[EditRequestType2["CREATE_SAMPLE"] = 2] = "CREATE_SAMPLE"; + EditRequestType2[EditRequestType2["CREATE_GLOBAL_TRANSFORM"] = 3] = "CREATE_GLOBAL_TRANSFORM"; + EditRequestType2[EditRequestType2["CREATE_LOCAL_TRANSFORM"] = 4] = "CREATE_LOCAL_TRANSFORM"; + EditRequestType2[EditRequestType2["CREATE_ITEM"] = 5] = "CREATE_ITEM"; + EditRequestType2[EditRequestType2["CREATE_RELATION"] = 6] = "CREATE_RELATION"; + EditRequestType2[EditRequestType2["UPDATE_MATERIAL"] = 7] = "UPDATE_MATERIAL"; + EditRequestType2[EditRequestType2["UPDATE_REPRESENTATION"] = 8] = "UPDATE_REPRESENTATION"; + EditRequestType2[EditRequestType2["UPDATE_SAMPLE"] = 9] = "UPDATE_SAMPLE"; + EditRequestType2[EditRequestType2["UPDATE_GLOBAL_TRANSFORM"] = 10] = "UPDATE_GLOBAL_TRANSFORM"; + EditRequestType2[EditRequestType2["UPDATE_LOCAL_TRANSFORM"] = 11] = "UPDATE_LOCAL_TRANSFORM"; + EditRequestType2[EditRequestType2["UPDATE_ITEM"] = 12] = "UPDATE_ITEM"; + EditRequestType2[EditRequestType2["UPDATE_MAX_LOCAL_ID"] = 13] = "UPDATE_MAX_LOCAL_ID"; + EditRequestType2[EditRequestType2["UPDATE_RELATION"] = 14] = "UPDATE_RELATION"; + EditRequestType2[EditRequestType2["UPDATE_METADATA"] = 15] = "UPDATE_METADATA"; + EditRequestType2[EditRequestType2["UPDATE_SPATIAL_STRUCTURE"] = 16] = "UPDATE_SPATIAL_STRUCTURE"; + EditRequestType2[EditRequestType2["DELETE_MATERIAL"] = 17] = "DELETE_MATERIAL"; + EditRequestType2[EditRequestType2["DELETE_REPRESENTATION"] = 18] = "DELETE_REPRESENTATION"; + EditRequestType2[EditRequestType2["DELETE_SAMPLE"] = 19] = "DELETE_SAMPLE"; + EditRequestType2[EditRequestType2["DELETE_GLOBAL_TRANSFORM"] = 20] = "DELETE_GLOBAL_TRANSFORM"; + EditRequestType2[EditRequestType2["DELETE_LOCAL_TRANSFORM"] = 21] = "DELETE_LOCAL_TRANSFORM"; + EditRequestType2[EditRequestType2["DELETE_ITEM"] = 22] = "DELETE_ITEM"; + EditRequestType2[EditRequestType2["DELETE_RELATION"] = 23] = "DELETE_RELATION"; + EditRequestType2[EditRequestType2["CREATE_INDEX"] = 24] = "CREATE_INDEX"; + EditRequestType2[EditRequestType2["UPDATE_INDEX"] = 25] = "UPDATE_INDEX"; + EditRequestType2[EditRequestType2["DELETE_INDEX"] = 26] = "DELETE_INDEX"; + return EditRequestType2; +})(EditRequestType || {}); +function isIndexRequest(request) { + return request.type === 24 || request.type === 25 || request.type === 26; +} +function createTransform(transform, builder) { + const meshesPos = transform.position; + const meshesDx = transform.xDirection; + const meshesDy = transform.yDirection; + const coordinatesOffset = Transform.createTransform( + builder, + meshesPos[0], + meshesPos[1], + meshesPos[2], + meshesDx[0], + meshesDx[1], + meshesDx[2], + meshesDy[0], + meshesDy[1], + meshesDy[2] + ); + return coordinatesOffset; +} +function copyTransform(builder, transform) { + const meshesPos = transform.position(); + const meshesDx = transform.xDirection(); + const meshesDy = transform.yDirection(); + const coordinatesOffset = Transform.createTransform( + builder, + meshesPos.x(), + meshesPos.y(), + meshesPos.z(), + meshesDx.x(), + meshesDx.y(), + meshesDx.z(), + meshesDy.x(), + meshesDy.y(), + meshesDy.z() + ); + return coordinatesOffset; +} +function copyFloatVector(builder, vector) { + return FloatVector.createFloatVector( + builder, + vector.x(), + vector.y(), + vector.z() + ); +} +function createShell(builder, shell) { + const shellType = shell.type; + const profiles = []; + const holes = []; + const bigProfiles = []; + const bigHoles = []; + const pointsLength = shell.points.length; + Shell.startPointsVector(builder, pointsLength); + for (let i = 0; i < pointsLength; i++) { + const j = pointsLength - 1 - i; + const currentPoint = shell.points[j]; + FloatVector.createFloatVector( + builder, + currentPoint[0], + currentPoint[1], + currentPoint[2] + ); + } + const pointsOffset = builder.endVector(); + for (const [, current] of shell.profiles) { + const indicesOffset = ShellProfile.createIndicesVector( + builder, + current + ); + const profileOffset = ShellProfile.createShellProfile( + builder, + indicesOffset + ); + profiles.push(profileOffset); + } + const shellProfilesOffset = Shell.createProfilesVector(builder, profiles); + for (const [profileId, currents] of shell.holes) { + for (const current of currents) { + const indicesOffset = ShellHole.createIndicesVector(builder, current); + const holeOffset = ShellHole.createShellHole( + builder, + indicesOffset, + profileId + ); + holes.push(holeOffset); + } + } + const shellHolesOffset = Shell.createHolesVector(builder, holes); + for (const [, current] of shell.bigProfiles) { + const bigIndicesOffset = BigShellProfile.createIndicesVector( + builder, + current + ); + const bigProfileOffset = BigShellProfile.createBigShellProfile( + builder, + bigIndicesOffset + ); + bigProfiles.push(bigProfileOffset); + } + const bigShellProfilesOffset = Shell.createBigProfilesVector( + builder, + bigProfiles + ); + for (const [profileId, currents] of shell.bigHoles) { + for (const current of currents) { + const bigIndicesOffset = BigShellHole.createIndicesVector( + builder, + current + ); + const bigHoleOffset = BigShellHole.createBigShellHole( + builder, + bigIndicesOffset, + profileId + ); + bigHoles.push(bigHoleOffset); + } + } + const bigShellHolesOffset = Shell.createBigHolesVector(builder, bigHoles); + const shellFaceIdsOffset = Shell.createProfilesFaceIdsVector( + builder, + shell.profilesFaceIds + ); + const shellOffset = Shell.createShell( + builder, + shellProfilesOffset, + shellHolesOffset, + pointsOffset, + bigShellProfilesOffset, + bigShellHolesOffset, + shellType, + shellFaceIdsOffset + ); + return shellOffset; +} +function copyShell(builder, shell) { + const shellType = shell.type(); + const profiles = []; + const holes = []; + const bigProfiles = []; + const bigHoles = []; + const pointsLength = shell.pointsLength(); + Shell.startPointsVector(builder, pointsLength); + for (let i = 0; i < pointsLength; i++) { + const j = pointsLength - 1 - i; + const currentPoint = shell.points(j); + copyFloatVector(builder, currentPoint); + } + const pointsOffset = builder.endVector(); + const profilesLength = shell.profilesLength(); + for (let i = 0; i < profilesLength; i++) { + const current = shell.profiles(i); + const indices = current.indicesArray(); + const indicesOffset = ShellProfile.createIndicesVector( + builder, + indices + ); + const profileOffset = ShellProfile.createShellProfile( + builder, + indicesOffset + ); + profiles.push(profileOffset); + } + const shellProfilesOffset = Shell.createProfilesVector(builder, profiles); + const holesLength = shell.holesLength(); + for (let i = 0; i < holesLength; i++) { + const current = shell.holes(i); + const indices = current.indicesArray(); + const profileId = current.profileId(); + const indicesOffset = ShellHole.createIndicesVector(builder, indices); + const holeOffset = ShellHole.createShellHole( + builder, + indicesOffset, + profileId + ); + holes.push(holeOffset); + } + const shellHolesOffset = Shell.createHolesVector(builder, holes); + const bigProfilesLength = shell.bigProfilesLength(); + for (let i = 0; i < bigProfilesLength; i++) { + const current = shell.bigProfiles(i); + const indices = current.indicesArray(); + const indicesOffset = BigShellProfile.createIndicesVector( + builder, + indices + ); + const bigProfileOffset = BigShellProfile.createBigShellProfile( + builder, + indicesOffset + ); + bigProfiles.push(bigProfileOffset); + } + const bigShellProfilesOffset = Shell.createBigProfilesVector( + builder, + bigProfiles + ); + const bigHolesLength = shell.bigHolesLength(); + for (let i = 0; i < bigHolesLength; i++) { + const current = shell.bigHoles(i); + const indices = current.indicesArray(); + const profileId = current.profileId(); + const indicesOffset = BigShellHole.createIndicesVector( + builder, + indices + ); + const bigHoleOffset = BigShellHole.createBigShellHole( + builder, + indicesOffset, + profileId + ); + bigHoles.push(bigHoleOffset); + } + const bigShellHolesOffset = Shell.createBigHolesVector(builder, bigHoles); + const shellFaceIdsOffset = Shell.createProfilesFaceIdsVector( + builder, + shell.profilesFaceIdsArray() || [] + ); + const shellOffset = Shell.createShell( + builder, + shellProfilesOffset, + shellHolesOffset, + pointsOffset, + bigShellProfilesOffset, + bigShellHolesOffset, + shellType, + shellFaceIdsOffset + ); + return shellOffset; +} +function copyCircleExtrusion(builder, current) { + const radiuses = current.radiusArray(); + const radiusRef = CircleExtrusion.createRadiusVector(builder, radiuses); + const axesLength = current.axesLength(); + const axesOffsets = []; + for (let j = 0; j < axesLength; j++) { + const currentAxis = current.axes(j); + const circleCurvesLength = currentAxis.circleCurvesLength(); + Axis.startCircleCurvesVector(builder, circleCurvesLength); + for (let k = 0; k < circleCurvesLength; k++) { + const h = circleCurvesLength - 1 - k; + const currentCc = currentAxis.circleCurves(h); + const position = currentCc.position(); + const radius = currentCc.radius(); + const aperture = currentCc.aperture(); + const xDir = currentCc.xDirection(); + const yDir = currentCc.yDirection(); + const px = position.x(); + const py = position.y(); + const pz = position.z(); + const dxx = xDir.x(); + const dxy = xDir.y(); + const dxz = xDir.z(); + const dyx = yDir.x(); + const dyy = yDir.y(); + const dyz = yDir.z(); + CircleCurve.createCircleCurve( + builder, + aperture, + px, + py, + pz, + radius, + dxx, + dxy, + dxz, + dyx, + dyy, + dyz + ); + } + const circleCurvesOffset = builder.endVector(); + const wiresLength = currentAxis.wiresLength(); + Axis.startWiresVector(builder, wiresLength); + for (let k = 0; k < wiresLength; k++) { + const h = wiresLength - 1 - k; + const currentWire = currentAxis.wires(h); + const p1 = currentWire.p1(); + const p2 = currentWire.p2(); + Wire.createWire( + builder, + p1.x(), + p1.y(), + p1.z(), + p2.x(), + p2.y(), + p2.z() + ); + } + const wiresOffset = builder.endVector(); + Axis.startWireSetsVector(builder, 0); + const wireSetOffset = builder.endVector(); + const ordersArray = currentAxis.orderArray(); + const ordersOffset = Axis.createOrderVector(builder, ordersArray); + const partsArray = Array.from(currentAxis.partsArray()); + const axisPartsOffset = Axis.createPartsVector(builder, partsArray); + Axis.startAxis(builder); + Axis.addCircleCurves(builder, circleCurvesOffset); + Axis.addOrder(builder, ordersOffset); + Axis.addWires(builder, wiresOffset); + Axis.addWireSets(builder, wireSetOffset); + Axis.addParts(builder, axisPartsOffset); + const axisOffset = Axis.endAxis(builder); + axesOffsets.push(axisOffset); + } + const axesRef = CircleExtrusion.createAxesVector(builder, axesOffsets); + CircleExtrusion.startCircleExtrusion(builder); + CircleExtrusion.addAxes(builder, axesRef); + CircleExtrusion.addRadius(builder, radiusRef); + const ceOffset = CircleExtrusion.endCircleExtrusion(builder); + return ceOffset; +} +function createCircleExtrusion(builder, circleExtrusion) { + const radiuses = circleExtrusion.radius; + const radiusRef = CircleExtrusion.createRadiusVector(builder, radiuses); + const axesOffsets = []; + for (const axis of circleExtrusion.axes) { + const circleCurvesLength = axis.circleCurves.length; + Axis.startCircleCurvesVector(builder, circleCurvesLength); + for (const circleCurve of axis.circleCurves) { + CircleCurve.createCircleCurve( + builder, + circleCurve.aperture, + circleCurve.position[0], + circleCurve.position[1], + circleCurve.position[2], + circleCurve.radius, + circleCurve.xDirection[0], + circleCurve.xDirection[1], + circleCurve.xDirection[2], + circleCurve.yDirection[0], + circleCurve.yDirection[1], + circleCurve.yDirection[2] + ); + } + const circleCurvesOffset = builder.endVector(); + const wiresLength = axis.wires.length; + Axis.startWiresVector(builder, wiresLength); + for (const wire of axis.wires) { + Wire.createWire( + builder, + wire[0], + wire[1], + wire[2], + wire[3], + wire[4], + wire[5] + ); + } + const wiresOffset = builder.endVector(); + const allWireSetsOffsets = []; + for (const wireSet of axis.wireSets) { + WireSet.startPsVector(builder, wireSet.length / 3); + for (let i = 0; i < wireSet.length - 2; i += 3) { + FloatVector.createFloatVector( + builder, + wireSet[i], + wireSet[i + 1], + wireSet[i + 2] + ); + } + const psOffset = builder.endVector(); + WireSet.startWireSet(builder); + WireSet.addPs(builder, psOffset); + const wireSetOffset2 = WireSet.endWireSet(builder); + allWireSetsOffsets.push(wireSetOffset2); + } + const wireSetOffset = Axis.createWireSetsVector( + builder, + allWireSetsOffsets + ); + const ordersOffset = Axis.createOrderVector(builder, axis.order); + const axisPartsOffset = Axis.createPartsVector(builder, axis.parts); + Axis.startAxis(builder); + Axis.addCircleCurves(builder, circleCurvesOffset); + Axis.addOrder(builder, ordersOffset); + Axis.addWires(builder, wiresOffset); + Axis.addWireSets(builder, wireSetOffset); + Axis.addParts(builder, axisPartsOffset); + const axisOffset = Axis.endAxis(builder); + axesOffsets.push(axisOffset); + } + const axesRef = CircleExtrusion.createAxesVector(builder, axesOffsets); + CircleExtrusion.startCircleExtrusion(builder); + CircleExtrusion.addAxes(builder, axesRef); + CircleExtrusion.addRadius(builder, radiusRef); + const ceOffset = CircleExtrusion.endCircleExtrusion(builder); + return ceOffset; +} +function copySpatialStructure(builder, spatialStructure) { + if (!spatialStructure) + return null; + const childrenLength = spatialStructure.childrenLength(); + const childrenOffsets = []; + for (let i = 0; i < childrenLength; i++) { + const current = spatialStructure.children(i); + const childOffset = copySpatialStructure(builder, current); + if (childOffset === null) + continue; + childrenOffsets.push(childOffset); + } + const childrenOffset = SpatialStructure.createChildrenVector( + builder, + childrenOffsets + ); + const localId = spatialStructure.localId(); + const category = spatialStructure.category(); + if (localId !== null) { + SpatialStructure.startSpatialStructure(builder); + SpatialStructure.addLocalId(builder, localId); + SpatialStructure.addChildren(builder, childrenOffset); + return SpatialStructure.endSpatialStructure(builder); + } + if (category !== null) { + const categoryOffset = builder.createSharedString(category); + SpatialStructure.startSpatialStructure(builder); + SpatialStructure.addCategory(builder, categoryOffset); + SpatialStructure.addChildren(builder, childrenOffset); + return SpatialStructure.endSpatialStructure(builder); + } + throw new Error("Spatial structure must have a local id or a category"); +} +function createSpatialStructure(builder, spatialStructure) { + const children = spatialStructure.children ?? []; + const childrenLength = children ? children.length : 0; + const childrenOffsets = []; + for (let i = 0; i < childrenLength; i++) { + const current = children[i]; + const childOffset = createSpatialStructure(builder, current); + if (childOffset === null) + continue; + childrenOffsets.push(childOffset); + } + const childrenOffset = SpatialStructure.createChildrenVector( + builder, + childrenOffsets + ); + const localId = spatialStructure.localId; + const category = spatialStructure.category; + if (localId !== null) { + SpatialStructure.startSpatialStructure(builder); + SpatialStructure.addLocalId(builder, localId); + SpatialStructure.addChildren(builder, childrenOffset); + return SpatialStructure.endSpatialStructure(builder); + } + if (category !== null) { + const categoryOffset = builder.createSharedString(category); + SpatialStructure.startSpatialStructure(builder); + SpatialStructure.addCategory(builder, categoryOffset); + SpatialStructure.addChildren(builder, childrenOffset); + return SpatialStructure.endSpatialStructure(builder); + } + throw new Error("Spatial structure must have a local id or a category"); +} +function buildSample(builder, localIdToIndex, itemId, matId, reprId, ltId) { + if (!localIdToIndex.has(itemId)) { + throw new Error("Invalid sample: item id not found"); + } + if (!localIdToIndex.has(matId)) { + throw new Error("Invalid sample: mat id not found"); + } + if (!localIdToIndex.has(reprId)) { + throw new Error("Invalid sample: repr id not found"); + } + if (!localIdToIndex.has(ltId)) { + throw new Error("Invalid sample: lt id not found"); + } + const itemIndex = localIdToIndex.get(itemId); + const matIndex = localIdToIndex.get(matId); + const reprIndex = localIdToIndex.get(reprId); + const ltIndex = localIdToIndex.get(ltId); + Sample.createSample(builder, itemIndex, matIndex, reprIndex, ltIndex); +} +function buildIndex(builder, data) { + var _a2, _b2; + const nameOffset = builder.createString(data.name); + const { keysOffset, isStringKey } = createKeysVector(builder, data.keys); + const { valuesOffset, isStringValue } = createValuesVector( + builder, + data.values + ); + const endOffset = ((_a2 = data.end) == null ? void 0 : _a2.length) ? ModelIndex.createEndVector(builder, data.end) : null; + const startOffset = ((_b2 = data.start) == null ? void 0 : _b2.length) ? ModelIndex.createStartVector(builder, data.start) : null; + ModelIndex.startModelIndex(builder); + ModelIndex.addName(builder, nameOffset); + if (isStringKey) { + ModelIndex.addStringKeys(builder, keysOffset); + } else { + ModelIndex.addNumberKeys(builder, keysOffset); + } + if (valuesOffset !== null) { + if (isStringValue) { + ModelIndex.addStringValues(builder, valuesOffset); + } else { + ModelIndex.addNumberValues(builder, valuesOffset); + } + } + if (endOffset !== null) + ModelIndex.addEnd(builder, endOffset); + if (startOffset !== null) + ModelIndex.addStart(builder, startOffset); + return ModelIndex.endModelIndex(builder); +} +function copyIndex(builder, src) { + const data = readIndex(src); + return buildIndex(builder, data); +} +function readIndex(src) { + const name = src.name() ?? ""; + const stringKeysLen = src.stringKeysLength(); + const stringValuesLen = src.stringValuesLength(); + const numberValuesLen = src.numberValuesLength(); + const endLen = src.endLength(); + const startLen = src.startLength(); + let keys; + if (stringKeysLen > 0) { + const arr = new Array(stringKeysLen); + for (let i = 0; i < stringKeysLen; i++) + arr[i] = src.stringKeys(i) ?? ""; + keys = arr; + } else { + const numberKeys = src.numberKeysArray(); + keys = numberKeys ? Array.from(numberKeys) : []; + } + let values; + if (stringValuesLen > 0) { + const arr = new Array(stringValuesLen); + for (let i = 0; i < stringValuesLen; i++) { + arr[i] = src.stringValues(i) ?? ""; + } + values = arr; + } else if (numberValuesLen > 0) { + const numberValues = src.numberValuesArray(); + values = numberValues ? Array.from(numberValues) : []; + } + let end; + if (endLen > 0) { + const arr = src.endArray(); + end = arr ? Array.from(arr) : []; + } + let start; + if (startLen > 0) { + const arr = src.startArray(); + start = arr ? Array.from(arr) : []; + } + return { name, keys, values, end, start }; +} +function createKeysVector(builder, keys) { + if (keys.length === 0) { + return { + keysOffset: ModelIndex.createNumberKeysVector(builder, []), + isStringKey: false + }; + } + if (typeof keys[0] === "string") { + const offsets = keys.map((s) => builder.createString(s)); + return { + keysOffset: ModelIndex.createStringKeysVector(builder, offsets), + isStringKey: true + }; + } + return { + keysOffset: ModelIndex.createNumberKeysVector( + builder, + keys + ), + isStringKey: false + }; +} +function createValuesVector(builder, values) { + if (!values || values.length === 0) { + return { valuesOffset: null, isStringValue: false }; + } + if (typeof values[0] === "string") { + const offsets = values.map((s) => builder.createString(s)); + return { + valuesOffset: ModelIndex.createStringValuesVector(builder, offsets), + isStringValue: true + }; + } + return { + valuesOffset: ModelIndex.createNumberValuesVector( + builder, + values + ), + isStringValue: false + }; +} +function getIdsDelta(model, requests) { + const itemIds = /* @__PURE__ */ new Set(); + const globalTranforms = /* @__PURE__ */ new Set(); + const localTransforms = /* @__PURE__ */ new Set(); + const samples = /* @__PURE__ */ new Set(); + const materials = /* @__PURE__ */ new Set(); + const representations = /* @__PURE__ */ new Set(); + const shells = /* @__PURE__ */ new Set(); + const circleExtrusions = /* @__PURE__ */ new Set(); + let createNewSample = false; + let detaDeletedGtsCount = 0; + let detaDeletedLtsCount = 0; + let detaDeletedSamplesCount = 0; + let detaDeletedMaterialsCount = 0; + let detaDeletedRepresentationsCount = 0; + let detaDeletedShellsCount = 0; + let detaDeletedCircleExtrusionsCount = 0; + const deletedSamples = /* @__PURE__ */ new Set(); + const samplesGtIds = /* @__PURE__ */ new Set(); + const samplesLtIds = /* @__PURE__ */ new Set(); + const samplesMaterialIds = /* @__PURE__ */ new Set(); + const samplesRepIds = /* @__PURE__ */ new Set(); + const samplesSamplesIds = /* @__PURE__ */ new Set(); + const samplesItemsIds = /* @__PURE__ */ new Set(); + const meshes = model.meshes(); + const prevGts = new Set(meshes.globalTransformIdsArray()); + const prevLts = new Set(meshes.localTransformIdsArray()); + const prevMaterials = new Set(meshes.materialIdsArray()); + const prevRepresentations = new Set(meshes.representationIdsArray()); + const prevItems = new Set(model.localIdsArray()); + const prevSamples = new Set(meshes.sampleIdsArray()); + const createdSamplesIds = /* @__PURE__ */ new Set(); + for (const request of requests) { + if (request.type === EditRequestType.CREATE_SAMPLE) { + createNewSample = true; + } + if (request.type === EditRequestType.UPDATE_LOCAL_TRANSFORM) { + localTransforms.add(request.localId); + continue; + } + if (request.type === EditRequestType.UPDATE_MATERIAL) { + materials.add(request.localId); + continue; + } + if (request.type === EditRequestType.UPDATE_REPRESENTATION) { + representations.add(request.localId); + continue; + } + if (request.type === EditRequestType.UPDATE_ITEM) { + itemIds.add(request.localId); + continue; + } + if (request.type === EditRequestType.CREATE_GLOBAL_TRANSFORM) { + if (prevItems.has(request.data.itemId)) { + itemIds.add(request.data.itemId); + } + continue; + } + if (request.type === EditRequestType.UPDATE_GLOBAL_TRANSFORM) { + globalTranforms.add(request.localId); + if (prevItems.has(request.data.itemId)) { + itemIds.add(request.data.itemId); + } + continue; + } + if (request.type === EditRequestType.UPDATE_SAMPLE) { + if (!createdSamplesIds.has(request.localId)) { + samples.add(request.localId); + } + if (prevGts.has(request.data.item)) { + globalTranforms.add(request.data.item); + } + if (prevLts.has(request.data.localTransform)) { + samplesLtIds.add(request.data.localTransform); + } + if (prevMaterials.has(request.data.material)) { + samplesMaterialIds.add(request.data.material); + } + if (prevRepresentations.has(request.data.representation)) { + samplesRepIds.add(request.data.representation); + } + continue; + } + if (request.type === EditRequestType.CREATE_SAMPLE) { + createdSamplesIds.add(request.localId); + if (prevGts.has(request.data.item)) { + globalTranforms.add(request.data.item); + } + if (prevLts.has(request.data.localTransform)) { + samplesLtIds.add(request.data.localTransform); + } + if (prevMaterials.has(request.data.material)) { + samplesMaterialIds.add(request.data.material); + } + if (prevRepresentations.has(request.data.representation)) { + samplesRepIds.add(request.data.representation); + } + continue; + } + } + const deletedRepsIds = /* @__PURE__ */ new Set(); + for (const request of requests) { + if (request.type === EditRequestType.DELETE_GLOBAL_TRANSFORM) { + globalTranforms.delete(request.localId); + if (!prevGts.has(request.localId)) { + detaDeletedGtsCount++; + } + continue; + } + if (request.type === EditRequestType.DELETE_LOCAL_TRANSFORM) { + localTransforms.delete(request.localId); + if (!prevLts.has(request.localId)) { + detaDeletedLtsCount++; + } + continue; + } + if (request.type === EditRequestType.DELETE_SAMPLE) { + samples.delete(request.localId); + deletedSamples.add(request.localId); + if (!prevSamples.has(request.localId)) { + detaDeletedSamplesCount++; + } + continue; + } + if (request.type === EditRequestType.DELETE_MATERIAL) { + materials.delete(request.localId); + if (!prevMaterials.has(request.localId)) { + detaDeletedMaterialsCount++; + } + continue; + } + if (request.type === EditRequestType.DELETE_REPRESENTATION) { + representations.delete(request.localId); + deletedRepsIds.add(request.localId); + if (!prevRepresentations.has(request.localId)) { + detaDeletedRepresentationsCount++; + } + continue; + } + if (request.type === EditRequestType.DELETE_ITEM) { + itemIds.delete(request.localId); + continue; + } + } + const deletedReprs = EditUtils.getRepresentations(model, deletedRepsIds); + for (const [id, repr] of deletedReprs) { + if (prevRepresentations.has(id)) + continue; + if (repr.representationClass === RepresentationClass.SHELL) { + detaDeletedShellsCount++; + } else if (repr.representationClass === RepresentationClass.CIRCLE_EXTRUSION) { + detaDeletedCircleExtrusionsCount++; + } else { + throw new Error("Unsupported representation class"); + } + } + for (const request of requests) { + if (request.type === EditRequestType.CREATE_REPRESENTATION) { + if (deletedRepsIds.has(request.localId)) { + if (request.data.representationClass === RepresentationClass.SHELL) { + detaDeletedShellsCount++; + } else if (request.data.representationClass === RepresentationClass.CIRCLE_EXTRUSION) { + detaDeletedCircleExtrusionsCount++; + } else { + throw new Error("Unsupported representation class"); + } + } + } + } + for (let i = 0; i < meshes.samplesLength(); i++) { + const sample = meshes.samples(i); + const gtIndex = sample.item(); + const ltIndex = sample.localTransform(); + const materialIndex = sample.material(); + const repIndex = sample.representation(); + const gtId = meshes.globalTransformIds(gtIndex); + const ltId = meshes.localTransformIds(ltIndex); + const materialId = meshes.materialIds(materialIndex); + const repId = meshes.representationIds(repIndex); + const itemIndex = meshes.meshesItems(gtIndex); + const itemId = model.localIds(itemIndex); + if (globalTranforms.has(gtId) || localTransforms.has(ltId) || materials.has(materialId) || representations.has(repId) || itemIds.has(itemId)) { + if (prevItems.has(itemId)) { + itemIds.add(itemId); + } + } + } + for (let i = 0; i < meshes.samplesLength(); i++) { + const sampleId = meshes.sampleIds(i); + if (deletedSamples.has(sampleId)) { + continue; + } + const sample = meshes.samples(i); + const gtIndex = sample.item(); + const ltIndex = sample.localTransform(); + const materialIndex = sample.material(); + const repIndex = sample.representation(); + const gtId = meshes.globalTransformIds(gtIndex); + const ltId = meshes.localTransformIds(ltIndex); + const materialId = meshes.materialIds(materialIndex); + const repId = meshes.representationIds(repIndex); + const itemIndex = meshes.meshesItems(gtIndex); + const itemId = model.localIds(itemIndex); + if (globalTranforms.has(gtId) || localTransforms.has(ltId) || materials.has(materialId) || representations.has(repId) || itemIds.has(itemId)) { + if (prevGts.has(gtId)) { + samplesGtIds.add(gtId); + } + if (prevLts.has(ltId)) { + samplesLtIds.add(ltId); + } + if (prevMaterials.has(materialId)) { + samplesMaterialIds.add(materialId); + } + if (prevRepresentations.has(repId)) { + samplesRepIds.add(repId); + } + if (prevItems.has(itemId)) { + samplesItemsIds.add(itemId); + } + samplesSamplesIds.add(sampleId); + } + } + prevGts.clear(); + prevLts.clear(); + prevMaterials.clear(); + prevRepresentations.clear(); + prevItems.clear(); + prevSamples.clear(); + for (const id of samplesGtIds) { + globalTranforms.add(id); + } + for (const id of samplesLtIds) { + localTransforms.add(id); + } + for (const id of samplesMaterialIds) { + materials.add(id); + } + for (const id of samplesRepIds) { + representations.add(id); + } + for (const id of samplesSamplesIds) { + samples.add(id); + } + for (const id of samplesItemsIds) { + itemIds.add(id); + } + samplesGtIds.clear(); + samplesLtIds.clear(); + samplesMaterialIds.clear(); + samplesRepIds.clear(); + samplesSamplesIds.clear(); + samplesItemsIds.clear(); + const indices = EditUtils.getGeometryIndicesFromRepresentations( + model, + representations + ); + for (const index of indices.shellsIndices) { + shells.add(index); + } + for (const index of indices.rebarsIndices) { + circleExtrusions.add(index); + } + return { + itemIds, + globalTranforms, + localTransforms, + samples, + materials, + representations, + shells, + // Indices + circleExtrusions, + // Indices + detaDeletedGts: detaDeletedGtsCount, + detaDeletedLts: detaDeletedLtsCount, + detaDeletedSamples: detaDeletedSamplesCount, + detaDeletedMaterials: detaDeletedMaterialsCount, + detaDeletedRepresentations: detaDeletedRepresentationsCount, + detaDeletedShells: detaDeletedShellsCount, + detaDeletedCircleExtrusions: detaDeletedCircleExtrusionsCount, + createNewSample + }; +} +function newModel(config) { + const builder = new Builder(1024); + Meshes.startGlobalTransformsVector(builder, 0); + const globalTransformsRef = builder.endVector(); + const shells = Meshes.createShellsVector(builder, []); + Meshes.startRepresentationsVector(builder, 0); + const representationsRef = builder.endVector(); + Meshes.startSamplesVector(builder, 0); + const samplesOffset = builder.endVector(); + Meshes.startLocalTransformsVector(builder, 0); + const localTransformRef = builder.endVector(); + Meshes.startMaterialsVector(builder, 0); + const materialsRef = builder.endVector(); + const circleExtrusions = Meshes.createCircleExtrusionsVector(builder, []); + const meshesItemsOffset = Meshes.createMeshesItemsVector(builder, []); + const reprLocalIdsOffset = Meshes.createRepresentationIdsVector( + builder, + [] + ); + const sampleLocalIdsOffset = Meshes.createSampleIdsVector(builder, []); + const materialLocalIdsOffset = Meshes.createMaterialIdsVector( + builder, + [] + ); + const ltLocalIdsOffset = Meshes.createLocalTransformIdsVector( + builder, + [] + ); + const gtLocalIdsOffset = Meshes.createGlobalTransformIdsVector( + builder, + [] + ); + Meshes.startMeshes(builder); + const coordinatesRef = createTransform( + { + position: [0, 0, 0], + xDirection: [1, 0, 0], + yDirection: [0, 1, 0] + }, + builder + ); + Meshes.addCoordinates(builder, coordinatesRef); + Meshes.addGlobalTransforms(builder, globalTransformsRef); + Meshes.addShells(builder, shells); + Meshes.addRepresentations(builder, representationsRef); + Meshes.addSamples(builder, samplesOffset); + Meshes.addLocalTransforms(builder, localTransformRef); + Meshes.addMaterials(builder, materialsRef); + Meshes.addCircleExtrusions(builder, circleExtrusions); + Meshes.addMeshesItems(builder, meshesItemsOffset); + Meshes.addRepresentationIds(builder, reprLocalIdsOffset); + Meshes.addSampleIds(builder, sampleLocalIdsOffset); + Meshes.addMaterialIds(builder, materialLocalIdsOffset); + Meshes.addLocalTransformIds(builder, ltLocalIdsOffset); + Meshes.addGlobalTransformIds(builder, gtLocalIdsOffset); + const modelMesh = Meshes.endMeshes(builder); + const metadataOffset = builder.createString("{}"); + const attributesVector = Model.createAttributesVector(builder, []); + const uniqueAttributesVector = Model.createUniqueAttributesVector( + builder, + [] + ); + const relNamesVector = Model.createRelationNamesVector(builder, []); + const localIdsVector = Model.createLocalIdsVector(builder, []); + const categoriesVector = Model.createCategoriesVector(builder, []); + const relIndicesVector = Model.createRelationsItemsVector(builder, []); + const relsVector = Model.createRelationsVector(builder, []); + const guidsItemsVector = Model.createGuidsItemsVector(builder, []); + const guidsVector = Model.createGuidsVector(builder, []); + const guidRef = builder.createString(MathUtils.generateUUID()); + Model.startModel(builder); + Model.addMeshes(builder, modelMesh); + Model.addMetadata(builder, metadataOffset); + Model.addAttributes(builder, attributesVector); + Model.addUniqueAttributes(builder, uniqueAttributesVector); + Model.addRelationNames(builder, relNamesVector); + Model.addLocalIds(builder, localIdsVector); + Model.addCategories(builder, categoriesVector); + Model.addRelationsItems(builder, relIndicesVector); + Model.addRelations(builder, relsVector); + Model.addGuidsItems(builder, guidsItemsVector); + Model.addGuids(builder, guidsVector); + Model.addGuid(builder, guidRef); + Model.addMaxLocalId(builder, 1); + const outData = Model.endModel(builder); + builder.finish(outData); + const outBytes = builder.asUint8Array(); + builder.clear(); + const result = config.raw ? outBytes : pako.deflate(outBytes); + return result; +} +function getAffectedItems(requests, editedSamples, meshes, model, affectedItems) { + for (const request of requests) { + if (request.type === EditRequestType.UPDATE_SAMPLE || request.type === EditRequestType.DELETE_SAMPLE) { + editedSamples.add(request.localId); + } + } + for (let i = 0; i < meshes.sampleIdsLength(); i++) { + const sampleId = meshes.sampleIds(i); + if (editedSamples.has(sampleId)) { + const sample = meshes.samples(i); + const itemIndex = sample.item(); + const ltIndex = meshes.meshesItems(itemIndex); + const localId = model.localIds(ltIndex); + affectedItems.add(localId); + } + } +} +function edit(model, requests, config) { + const meshes = model.meshes(); + const raw = (config == null ? void 0 : config.raw) ?? false; + const delta = (config == null ? void 0 : config.delta) ?? false; + let deltaItemIds = /* @__PURE__ */ new Set(); + let deltaGts = /* @__PURE__ */ new Set(); + let deltaLts = /* @__PURE__ */ new Set(); + let deltaSamples = /* @__PURE__ */ new Set(); + let deltaMaterials = /* @__PURE__ */ new Set(); + let deltaReps = /* @__PURE__ */ new Set(); + let deltaShells = /* @__PURE__ */ new Set(); + let deltaCircleExtrusions = /* @__PURE__ */ new Set(); + let deltaDeletedGts = 0; + let deltaDeletedLts = 0; + let deltaDeletedSamples = 0; + let deltaDeletedMaterials = 0; + let deltaDeletedRepresentations = 0; + let deltaDeletedShells = 0; + let deltaDeletedCircleExtrusions = 0; + if (delta) { + const itemsToInclude = getIdsDelta(model, requests); + deltaItemIds = itemsToInclude.itemIds; + deltaGts = itemsToInclude.globalTranforms; + deltaLts = itemsToInclude.localTransforms; + deltaSamples = itemsToInclude.samples; + deltaMaterials = itemsToInclude.materials; + deltaReps = itemsToInclude.representations; + deltaShells = itemsToInclude.shells; + deltaCircleExtrusions = itemsToInclude.circleExtrusions; + deltaDeletedGts = itemsToInclude.detaDeletedGts; + deltaDeletedLts = itemsToInclude.detaDeletedLts; + deltaDeletedSamples = itemsToInclude.detaDeletedSamples; + deltaDeletedMaterials = itemsToInclude.detaDeletedMaterials; + deltaDeletedRepresentations = itemsToInclude.detaDeletedRepresentations; + deltaDeletedShells = itemsToInclude.detaDeletedShells; + deltaDeletedCircleExtrusions = itemsToInclude.detaDeletedCircleExtrusions; + const createNewSample = itemsToInclude.createNewSample; + if (!createNewSample && deltaItemIds.size === 0 && deltaGts.size === 0 && deltaLts.size === 0 && deltaSamples.size === 0 && deltaMaterials.size === 0 && deltaReps.size === 0 && deltaShells.size === 0 && deltaCircleExtrusions.size === 0) { + const affectedItems2 = /* @__PURE__ */ new Set(); + const editedSamples2 = /* @__PURE__ */ new Set(); + getAffectedItems(requests, editedSamples2, meshes, model, affectedItems2); + return { model: newModel({ raw }), items: Array.from(affectedItems2) }; + } + } + const matsToUpdate = /* @__PURE__ */ new Map(); + const reprsToUpdate = /* @__PURE__ */ new Map(); + const samplesToUpdate = /* @__PURE__ */ new Map(); + const gtsToUpdate = /* @__PURE__ */ new Map(); + const ltsToUpdate = /* @__PURE__ */ new Map(); + const shellsToUpdate = /* @__PURE__ */ new Map(); + const circleExtrusionsToUpdate = /* @__PURE__ */ new Map(); + const itemsToUpdate = /* @__PURE__ */ new Map(); + const relationsToUpdate = /* @__PURE__ */ new Map(); + let metadataToUpdate = null; + let spatialStructureToUpdate = null; + const matsToCreate = /* @__PURE__ */ new Map(); + const reprsToCreate = /* @__PURE__ */ new Map(); + const shellsToCreate = /* @__PURE__ */ new Map(); + const circleExtrusionsToCreate = /* @__PURE__ */ new Map(); + const samplesToCreate = /* @__PURE__ */ new Map(); + const gtsToCreate = /* @__PURE__ */ new Map(); + const ltsToCreate = /* @__PURE__ */ new Map(); + const itemsToCreate = /* @__PURE__ */ new Map(); + const relationsToCreate = /* @__PURE__ */ new Map(); + const matsToDelete = /* @__PURE__ */ new Set(); + const samplesToDelete = /* @__PURE__ */ new Set(); + const reprsToDelete = /* @__PURE__ */ new Set(); + const shellsToDelete = /* @__PURE__ */ new Set(); + const circleExtrusionsToDelete = /* @__PURE__ */ new Set(); + const gtsToDelete = /* @__PURE__ */ new Set(); + const ltsToDelete = /* @__PURE__ */ new Set(); + const itemsToDelete = /* @__PURE__ */ new Set(); + const relationsToDelete = /* @__PURE__ */ new Set(); + const indexesToUpsert = /* @__PURE__ */ new Map(); + const indexesToDelete = /* @__PURE__ */ new Set(); + const prevMatIds = new Set(meshes.materialIdsArray()); + const prevReprIds = new Set(meshes.representationIdsArray()); + const prevSampleIds = new Set(meshes.sampleIdsArray()); + const prevGtIds = new Set(meshes.globalTransformIdsArray()); + const prevLtIds = new Set(meshes.localTransformIdsArray()); + const prevItemIds = new Set(model.localIdsArray()); + let newMaxLocalId = model.maxLocalId(); + for (const request of requests) { + if (request.type === EditRequestType.UPDATE_MATERIAL) { + matsToUpdate.set(request.localId, request.data); + continue; + } + if (request.type === EditRequestType.UPDATE_REPRESENTATION) { + reprsToUpdate.set(request.localId, request.data); + continue; + } + if (request.type === EditRequestType.UPDATE_SAMPLE) { + samplesToUpdate.set( + request.localId, + request.data + ); + continue; + } + if (request.type === EditRequestType.UPDATE_GLOBAL_TRANSFORM) { + gtsToUpdate.set(request.localId, request.data); + continue; + } + if (request.type === EditRequestType.UPDATE_LOCAL_TRANSFORM) { + ltsToUpdate.set(request.localId, request.data); + continue; + } + if (request.type === EditRequestType.UPDATE_ITEM) { + itemsToUpdate.set(request.localId, request.data); + continue; + } + if (request.type === EditRequestType.UPDATE_RELATION) { + relationsToUpdate.set(request.localId, request.data); + continue; + } + if (request.type === EditRequestType.UPDATE_METADATA) { + metadataToUpdate = request.data; + continue; + } + if (request.type === EditRequestType.UPDATE_SPATIAL_STRUCTURE) { + spatialStructureToUpdate = request.data; + continue; + } + if (request.type === EditRequestType.CREATE_MATERIAL) { + const localId = request.localId; + if (prevMatIds.has(localId)) { + continue; + } + matsToCreate.set(localId, request.data); + continue; + } + if (request.type === EditRequestType.CREATE_REPRESENTATION) { + const localId = request.localId; + if (prevReprIds.has(localId)) { + continue; + } + reprsToCreate.set(localId, request.data); + if (request.data.representationClass === RepresentationClass.SHELL) { + shellsToCreate.set( + localId, + request.data.geometry + ); + } else if (request.data.representationClass === RepresentationClass.CIRCLE_EXTRUSION) { + circleExtrusionsToCreate.set( + localId, + request.data.geometry + ); + } + continue; + } + if (request.type === EditRequestType.CREATE_SAMPLE) { + const localId = request.localId; + if (prevSampleIds.has(localId)) { + continue; + } + samplesToCreate.set(localId, request.data); + continue; + } + if (request.type === EditRequestType.CREATE_GLOBAL_TRANSFORM) { + const localId = request.localId; + if (prevGtIds.has(localId)) { + continue; + } + gtsToCreate.set(localId, request.data); + continue; + } + if (request.type === EditRequestType.CREATE_LOCAL_TRANSFORM) { + const localId = request.localId; + if (prevLtIds.has(localId)) { + continue; + } + ltsToCreate.set(localId, request.data); + continue; + } + if (request.type === EditRequestType.CREATE_ITEM) { + const localId = request.localId; + if (prevItemIds.has(localId)) { + continue; + } + itemsToCreate.set(localId, request.data); + } + if (request.type === EditRequestType.CREATE_RELATION) { + const localId = request.localId; + relationsToCreate.set(localId, request.data); + } + if (request.type === EditRequestType.DELETE_MATERIAL) { + matsToDelete.add(request.localId); + continue; + } + if (request.type === EditRequestType.DELETE_REPRESENTATION) { + reprsToDelete.add(request.localId); + continue; + } + if (request.type === EditRequestType.DELETE_SAMPLE) { + samplesToDelete.add(request.localId); + continue; + } + if (request.type === EditRequestType.DELETE_GLOBAL_TRANSFORM) { + gtsToDelete.add(request.localId); + continue; + } + if (request.type === EditRequestType.DELETE_LOCAL_TRANSFORM) { + ltsToDelete.add(request.localId); + continue; + } + if (request.type === EditRequestType.DELETE_ITEM) { + itemsToDelete.add(request.localId); + continue; + } + if (request.type === EditRequestType.UPDATE_MAX_LOCAL_ID) { + newMaxLocalId = request.localId; + continue; + } + if (request.type === EditRequestType.DELETE_RELATION) { + relationsToDelete.add(request.localId); + continue; + } + if (request.type === EditRequestType.CREATE_INDEX || request.type === EditRequestType.UPDATE_INDEX) { + const { keys, values, end, start } = request.data; + const validateNumbers = (items, key) => { + if (!items || items.length === 0 || typeof items[0] !== "number") { + return; + } + const numberErrors = []; + for (let index = 0; index < items.length; index++) { + const value = items[index]; + if (!Number.isInteger(value) || value < 0 || value > 4294967295) { + numberErrors.push({ index, value }); + } + } + if (numberErrors.length) { + throw new Error( + `Invalid index request: ${key} must be non-negative 32-bit integers`, + { + cause: { + type: "invalid-number", + key, + errors: numberErrors + } + } + ); + } + }; + validateNumbers(keys, "keys"); + validateNumbers(values, "values"); + if (values && !end) { + if (values.length !== keys.length) { + throw new Error( + "Invalid index request: unexpected values vector length", + { + cause: { + type: "invalid-length", + key: "values", + expected: keys.length, + actual: values.length + } + } + ); + } + } + if (values && end) { + if (end.length !== keys.length) { + throw new Error( + "Invalid index request: unexpected end vector length", + { + cause: { + type: "invalid-length", + key: "end", + expected: keys.length, + actual: end.length + } + } + ); + } + if (start && start.length !== keys.length) { + throw new Error( + "Invalid index request: unexpected start vector length", + { + cause: { + type: "invalid-length", + key: "start", + expected: keys.length, + actual: start.length + } + } + ); + } + const errors = []; + for (let index = 0; index < keys.length; index++) { + const valuesStart = (start == null ? void 0 : start[index]) ?? end[index - 1] ?? 0; + const valuesEnd = end[index]; + if (valuesStart < 0 || valuesEnd > values.length || valuesStart > valuesEnd) { + errors.push({ + index, + start: valuesStart, + end: valuesEnd + }); + } + } + if (errors.length) { + throw new Error("Invalid index request: out of bounds value slices", { + cause: { + type: "invalid-bounds", + errors + } + }); + } + } + indexesToUpsert.set(request.data.name, request.data); + indexesToDelete.delete(request.data.name); + continue; + } + if (request.type === EditRequestType.DELETE_INDEX) { + indexesToDelete.add(request.name); + indexesToUpsert.delete(request.name); + continue; + } + } + for (let i = 0; i < meshes.representationsLength(); i++) { + const repr = meshes.representations(i); + const geometryIndex = repr.id(); + const reprId = meshes.representationIds(i); + if (delta && !deltaReps.has(reprId)) { + continue; + } + if (reprsToDelete.has(reprId)) { + if (repr.representationClass() === RepresentationClass.SHELL) { + shellsToDelete.add(geometryIndex); + } else if (repr.representationClass() === RepresentationClass.CIRCLE_EXTRUSION) { + circleExtrusionsToDelete.add(geometryIndex); + } else { + throw new Error("Representation class is not supported"); + } + continue; + } + if (!reprsToUpdate.has(reprId)) { + continue; + } + const reprClass = repr.representationClass(); + if (reprClass === RepresentationClass.SHELL) { + shellsToUpdate.set(geometryIndex, reprId); + } else if (reprClass === RepresentationClass.CIRCLE_EXTRUSION) { + circleExtrusionsToUpdate.set(geometryIndex, reprId); + } else { + throw new Error("Representation class is not supported"); + } + } + prevMatIds.clear(); + prevReprIds.clear(); + prevSampleIds.clear(); + prevGtIds.clear(); + prevLtIds.clear(); + prevItemIds.clear(); + const prevMatCount = meshes.materialsLength(); + const includedMatCount = delta ? deltaMaterials.size : prevMatCount; + const deletedMatCount = delta ? deltaDeletedMaterials : matsToDelete.size; + const newMatCount = includedMatCount + matsToCreate.size - deletedMatCount; + const prevReprCount = meshes.representationsLength(); + const includedReprCount = delta ? deltaReps.size : prevReprCount; + const deletedReprCount = delta ? deltaDeletedRepresentations : reprsToDelete.size; + let reprOverlap = 0; + if (delta) { + for (const [id] of reprsToCreate) { + if (deltaReps.has(id)) { + reprOverlap++; + } + } + } + const newReprCount = includedReprCount + reprsToCreate.size - deletedReprCount - reprOverlap; + const prevShellCount = meshes.shellsLength(); + const includedShellCount = delta ? deltaShells.size : prevShellCount; + const deletedShellCount = delta ? deltaDeletedShells : shellsToDelete.size; + const newShellCount = includedShellCount + shellsToCreate.size - deletedShellCount; + const prevCircleExtrusionCount = meshes.circleExtrusionsLength(); + const includedCircleExtrusionCount = delta ? deltaCircleExtrusions.size : prevCircleExtrusionCount; + const deletedCircleExtrusionCount = delta ? deltaDeletedCircleExtrusions : circleExtrusionsToDelete.size; + const newCircleExtrusionCount = includedCircleExtrusionCount + circleExtrusionsToCreate.size - deletedCircleExtrusionCount; + const prevSampleCount = meshes.samplesLength(); + const includedSampleCount = delta ? deltaSamples.size : prevSampleCount; + const deletedSampleCount = delta ? deltaDeletedSamples : samplesToDelete.size; + const newSampleCount = includedSampleCount + samplesToCreate.size - deletedSampleCount; + const prevGtCount = meshes.globalTransformsLength(); + const includedGtCount = delta ? deltaGts.size : prevGtCount; + const deletedGtCount = delta ? deltaDeletedGts : gtsToDelete.size; + const newGtCount = includedGtCount + gtsToCreate.size - deletedGtCount; + const prevLtCount = meshes.localTransformsLength(); + const includedLtCount = delta ? deltaLts.size : prevLtCount; + const deletedLtCount = delta ? deltaDeletedLts : ltsToDelete.size; + const newLtCount = includedLtCount + ltsToCreate.size - deletedLtCount; + if (newGtCount < 0 || newReprCount < 0 || newSampleCount < 0 || newLtCount < 0 || newMatCount < 0 || newShellCount < 0 || newCircleExtrusionCount < 0) { + throw new Error("Invalid number of elements"); + } + const localIdToIndex = /* @__PURE__ */ new Map(); + const finalMaterialIds = []; + const finalReprIds = []; + const finalSampleIds = []; + const finalGtIds = []; + const finalMeshesItems = []; + const finalLtIds = []; + const finalItemIds = []; + let gtCounter = 0; + for (let i = 0; i < meshes.globalTransformsLength(); i++) { + const localId = meshes.globalTransformIds(i); + if (gtsToDelete.has(localId)) { + continue; + } + if (delta && !deltaGts.has(localId)) { + continue; + } + if (localIdToIndex.has(localId)) { + throw new Error("Local id already exists"); + } + localIdToIndex.set(localId, gtCounter++); + finalGtIds.push(localId); + } + for (const [localId] of gtsToCreate) { + if (gtsToDelete.has(localId)) { + continue; + } + if (localIdToIndex.has(localId)) { + throw new Error("Local id already exists"); + } + localIdToIndex.set(localId, gtCounter++); + finalGtIds.push(localId); + } + let matCounter = 0; + for (let i = 0; i < meshes.materialIdsLength(); i++) { + const localId = meshes.materialIds(i); + if (matsToDelete.has(localId)) { + continue; + } + if (delta && !deltaMaterials.has(localId)) { + continue; + } + if (localIdToIndex.has(localId)) { + throw new Error("Local id already exists"); + } + localIdToIndex.set(localId, matCounter++); + finalMaterialIds.push(localId); + } + for (const [localId] of matsToCreate) { + if (matsToDelete.has(localId)) { + continue; + } + if (localIdToIndex.has(localId)) { + throw new Error("Local id already exists"); + } + localIdToIndex.set(localId, matCounter++); + finalMaterialIds.push(localId); + } + let ltCounter = 0; + for (let i = 0; i < meshes.localTransformIdsLength(); i++) { + const localId = meshes.localTransformIds(i); + if (ltsToDelete.has(localId)) { + continue; + } + if (delta && !deltaLts.has(localId)) { + continue; + } + if (localIdToIndex.has(localId)) { + throw new Error("Local id already exists"); + } + localIdToIndex.set(localId, ltCounter++); + finalLtIds.push(localId); + } + for (const [localId] of ltsToCreate) { + if (ltsToDelete.has(localId)) { + continue; + } + if (localIdToIndex.has(localId)) { + throw new Error("Local id already exists"); + } + localIdToIndex.set(localId, ltCounter++); + finalLtIds.push(localId); + } + let reprCounter = 0; + for (let i = 0; i < meshes.representationIdsLength(); i++) { + const localId = meshes.representationIds(i); + if (reprsToDelete.has(localId)) { + continue; + } + if (delta && !deltaReps.has(localId)) { + continue; + } + if (localIdToIndex.has(localId)) { + throw new Error("Local id already exists"); + } + localIdToIndex.set(localId, reprCounter++); + finalReprIds.push(localId); + } + for (const [localId] of reprsToCreate) { + if (reprsToDelete.has(localId)) { + continue; + } + if (localIdToIndex.has(localId)) { + throw new Error("Local id already exists"); + } + localIdToIndex.set(localId, reprCounter++); + finalReprIds.push(localId); + } + for (let i = 0; i < meshes.sampleIdsLength(); i++) { + const localId = meshes.sampleIds(i); + if (samplesToDelete.has(localId)) { + continue; + } + if (delta && !deltaSamples.has(localId)) { + continue; + } + finalSampleIds.push(localId); + } + for (const [localId] of samplesToCreate) { + if (samplesToDelete.has(localId)) { + continue; + } + finalSampleIds.push(localId); + } + let itemsCounter = 0; + for (let i = 0; i < model.localIdsLength(); i++) { + const localId = model.localIds(i); + if (itemsToDelete.has(localId)) { + continue; + } + if (delta && !deltaItemIds.has(localId)) { + continue; + } + localIdToIndex.set(localId, itemsCounter++); + finalItemIds.push(localId); + } + for (const [localId] of itemsToCreate) { + if (itemsToDelete.has(localId)) { + continue; + } + localIdToIndex.set(localId, itemsCounter++); + finalItemIds.push(localId); + } + const builder = new Builder(1024); + Meshes.startGlobalTransformsVector(builder, newGtCount); + const newGtIdSet = Array.from(gtsToCreate.keys()); + for (let i = 0; i < newGtIdSet.length; i++) { + const j = newGtIdSet.length - 1 - i; + const localId = newGtIdSet[j]; + const needsUpdate = gtsToUpdate.has(localId); + const gt = needsUpdate ? gtsToUpdate.get(localId) : gtsToCreate.get(localId); + if (!gt) { + throw new Error(`Global transform not found: ${localId}`); + } + if (gtsToDelete.has(localId)) { + continue; + } + const itemId = gt.itemId; + if (!localIdToIndex.has(itemId)) { + throw new Error("Item id not found for global transform"); + } + const itemIndex = localIdToIndex.get(itemId); + finalMeshesItems.unshift(itemIndex); + createTransform(gt, builder); + } + newGtIdSet.length = 0; + for (let i = 0; i < prevGtCount; i++) { + const j = prevGtCount - 1 - i; + const current = meshes.globalTransforms(j); + const localId = meshes.globalTransformIds(j); + if (gtsToDelete.has(localId)) { + continue; + } + if (delta && !deltaGts.has(localId)) { + continue; + } + const needsUpdate = gtsToUpdate.has(localId); + if (needsUpdate) { + const updated = gtsToUpdate.get(localId); + const itemId = updated.itemId; + if (!localIdToIndex.has(itemId)) { + throw new Error(`Item id not found for global transform: ${localId}`); + } + const newItemIndex = localIdToIndex.get(itemId); + finalMeshesItems.unshift(newItemIndex); + createTransform(updated, builder); + } else { + const prevItemIndex = meshes.meshesItems(j); + const itemId = model.localIds(prevItemIndex); + if (!localIdToIndex.has(itemId)) { + throw new Error(`Item id not found for global transform: ${localId}`); + } + const newItemIndex = localIdToIndex.get(itemId); + finalMeshesItems.unshift(newItemIndex); + copyTransform(builder, current); + } + } + const globalTransformsRef = builder.endVector(); + const shellsOffsets = []; + for (let i = 0; i < prevShellCount; i++) { + if (shellsToDelete.has(i)) { + continue; + } + if (delta && !deltaShells.has(i)) { + continue; + } + if (shellsToUpdate.has(i)) { + const reprId = shellsToUpdate.get(i); + const repr = reprsToUpdate.get(reprId); + const shell2 = repr.geometry; + const shellOffset2 = createShell(builder, shell2); + shellsOffsets.push(shellOffset2); + continue; + } + const shell = meshes.shells(i); + const shellOffset = copyShell(builder, shell); + shellsOffsets.push(shellOffset); + } + for (const [id] of shellsToCreate) { + if (reprsToDelete.has(id)) { + continue; + } + const needsUpdate = reprsToUpdate.has(id); + let shellOffset = 0; + if (needsUpdate) { + const repr = reprsToUpdate.get(id); + const shell = repr.geometry; + shellOffset = createShell(builder, shell); + } else { + const shell = shellsToCreate.get(id); + shellOffset = createShell(builder, shell); + } + shellsOffsets.push(shellOffset); + } + const shells = Meshes.createShellsVector(builder, shellsOffsets); + const circleExtrusionsOffsets = []; + for (let i = 0; i < prevCircleExtrusionCount; i++) { + if (circleExtrusionsToDelete.has(i)) { + continue; + } + if (delta && !deltaCircleExtrusions.has(i)) { + continue; + } + if (circleExtrusionsToUpdate.has(i)) { + const reprId = circleExtrusionsToUpdate.get(i); + const repr = reprsToUpdate.get(reprId); + const circleExtrusion2 = repr.geometry; + const circleExtrusionOffset2 = createCircleExtrusion( + builder, + circleExtrusion2 + ); + circleExtrusionsOffsets.push(circleExtrusionOffset2); + continue; + } + const circleExtrusion = meshes.circleExtrusions(i); + const circleExtrusionOffset = copyCircleExtrusion(builder, circleExtrusion); + circleExtrusionsOffsets.push(circleExtrusionOffset); + } + for (const [id] of circleExtrusionsToCreate) { + if (circleExtrusionsToDelete.has(id)) { + continue; + } + const needsUpdate = reprsToUpdate.has(id); + let circleExtrusionOffset = 0; + if (needsUpdate) { + const repr = reprsToUpdate.get(id); + const circleExtrusion = repr.geometry; + circleExtrusionOffset = createCircleExtrusion(builder, circleExtrusion); + } else { + const circleExtrusion = circleExtrusionsToCreate.get( + id + ); + circleExtrusionOffset = createCircleExtrusion(builder, circleExtrusion); + } + circleExtrusionsOffsets.push(circleExtrusionOffset); + } + const circleExtrusions = Meshes.createCircleExtrusionsVector( + builder, + circleExtrusionsOffsets + ); + Meshes.startRepresentationsVector(builder, newReprCount); + const createdReprsIdSet = Array.from(reprsToCreate.keys()); + let newShellCounter = newShellCount - 1; + let newCircleExtrusionCounter = newCircleExtrusionCount - 1; + for (let i = 0; i < createdReprsIdSet.length; i++) { + const j = createdReprsIdSet.length - 1 - i; + const localId = createdReprsIdSet[j]; + if (reprsToDelete.has(localId)) { + continue; + } + const needsUpdate = reprsToUpdate.has(localId); + const repr = needsUpdate ? reprsToUpdate.get(localId) : reprsToCreate.get(localId); + if (!repr) { + throw new Error(`Representation not found: ${localId}`); + } + const bbox = repr.bbox; + const rClass = repr.representationClass; + let id = 0; + if (repr.representationClass === RepresentationClass.SHELL) { + id = newShellCounter--; + } else if (repr.representationClass === RepresentationClass.CIRCLE_EXTRUSION) { + id = newCircleExtrusionCounter--; + } else { + throw new Error("Representation class is not supported"); + } + Representation.createRepresentation( + builder, + id, + bbox[0], + bbox[1], + bbox[2], + bbox[3], + bbox[4], + bbox[5], + rClass + ); + } + createdReprsIdSet.length = 0; + for (let i = 0; i < prevReprCount; i++) { + const j = prevReprCount - 1 - i; + const current = meshes.representations(j); + const currentId = meshes.representationIds(j); + if (reprsToDelete.has(currentId)) { + continue; + } + if (delta && !deltaReps.has(currentId)) { + continue; + } + const needsUpdate = reprsToUpdate.has(currentId); + if (needsUpdate) { + const updated = reprsToUpdate.get(currentId); + const bbox = updated.bbox; + let id = 0; + if (updated.representationClass === RepresentationClass.SHELL) { + id = newShellCounter--; + } else if (updated.representationClass === RepresentationClass.CIRCLE_EXTRUSION) { + id = newCircleExtrusionCounter--; + } else { + throw new Error("Representation class is not supported"); + } + const rClass = updated.representationClass; + Representation.createRepresentation( + builder, + id, + bbox[0], + bbox[1], + bbox[2], + bbox[3], + bbox[4], + bbox[5], + rClass + ); + } else { + const bbox = current.bbox(); + let id = 0; + if (current.representationClass() === RepresentationClass.SHELL) { + id = newShellCounter--; + } else if (current.representationClass() === RepresentationClass.CIRCLE_EXTRUSION) { + id = newCircleExtrusionCounter--; + } else { + throw new Error("Representation class is not supported"); + } + const rClass = current.representationClass(); + const min = bbox.min(); + const max = bbox.max(); + Representation.createRepresentation( + builder, + id, + min.x(), + min.y(), + min.z(), + max.x(), + max.y(), + max.z(), + rClass + ); + } + } + const representationsRef = builder.endVector(); + Meshes.startSamplesVector(builder, newSampleCount); + const newSamplesIdSet = Array.from(samplesToCreate.keys()); + for (let i = 0; i < newSamplesIdSet.length; i++) { + const j = newSamplesIdSet.length - 1 - i; + const localId = newSamplesIdSet[j]; + if (samplesToDelete.has(localId)) { + continue; + } + const needsUpdate = samplesToUpdate.has(localId); + const sample = needsUpdate ? samplesToUpdate.get(localId) : samplesToCreate.get(localId); + if (!sample) { + throw new Error(`Sample not found: ${localId}`); + } + if (matsToDelete.has(sample.material)) { + throw new Error(`Material to delete found in sample ${localId}`); + } + if (reprsToDelete.has(sample.representation)) { + throw new Error(`Representation to delete found in sample ${localId}`); + } + const gtId = sample.item; + const matId = sample.material; + const reprId = sample.representation; + const ltId = sample.localTransform; + buildSample(builder, localIdToIndex, gtId, matId, reprId, ltId); + } + newSamplesIdSet.length = 0; + for (let i = 0; i < prevSampleCount; i++) { + const j = prevSampleCount - 1 - i; + const current = meshes.samples(j); + const currentId = meshes.sampleIds(j); + if (samplesToDelete.has(currentId)) { + continue; + } + if (delta && !deltaSamples.has(currentId)) { + continue; + } + const needsUpdate = samplesToUpdate.has(currentId); + if (needsUpdate) { + const updated = samplesToUpdate.get(currentId); + const gtId2 = updated.item; + const matId2 = updated.material; + const reprId2 = updated.representation; + const ltId2 = updated.localTransform; + buildSample(builder, localIdToIndex, gtId2, matId2, reprId2, ltId2); + continue; + } + const gtId = meshes.globalTransformIds(current.item()); + const matId = meshes.materialIds(current.material()); + const reprId = meshes.representationIds(current.representation()); + const ltId = meshes.localTransformIds(current.localTransform()); + if (matsToDelete.has(matId)) { + throw new Error(`Material to delete found in sample ${currentId}`); + } + buildSample(builder, localIdToIndex, gtId, matId, reprId, ltId); + } + const samplesOffset = builder.endVector(); + Meshes.startLocalTransformsVector(builder, newLtCount); + const newLtIdSet = Array.from(ltsToCreate.keys()); + for (let i = 0; i < newLtIdSet.length; i++) { + const j = newLtIdSet.length - 1 - i; + const localId = newLtIdSet[j]; + if (ltsToDelete.has(localId)) { + continue; + } + const needsUpdate = ltsToUpdate.has(localId); + const lt = needsUpdate ? ltsToUpdate.get(localId) : ltsToCreate.get(localId); + if (!lt) { + throw new Error(`Local transform not found: ${localId}`); + } + createTransform(lt, builder); + } + newLtIdSet.length = 0; + for (let i = 0; i < prevLtCount; i++) { + const j = prevLtCount - 1 - i; + const current = meshes.localTransforms(j); + const currentId = meshes.localTransformIds(j); + const needsUpdate = ltsToUpdate.has(currentId); + if (ltsToDelete.has(currentId)) { + continue; + } + if (delta && !deltaLts.has(currentId)) { + continue; + } + if (needsUpdate) { + const updated = ltsToUpdate.get(currentId); + createTransform(updated, builder); + } else { + copyTransform(builder, current); + } + } + const localTransformRef = builder.endVector(); + Meshes.startMaterialsVector(builder, newMatCount); + const newMatsIdSet = Array.from(matsToCreate.keys()); + for (let i = 0; i < newMatsIdSet.length; i++) { + const j = newMatsIdSet.length - 1 - i; + const currentId = newMatsIdSet[j]; + if (matsToDelete.has(currentId)) { + continue; + } + const needsUpdate = matsToUpdate.has(currentId); + const material = needsUpdate ? matsToUpdate.get(currentId) : matsToCreate.get(currentId); + if (!material) { + throw new Error(`Material not found: ${currentId}`); + } + const r = material.r; + const g = material.g; + const b = material.b; + const a = material.a; + const stroke = material.stroke; + const renderedFaces = material.renderedFaces; + Material2.createMaterial(builder, r, g, b, a, renderedFaces, stroke); + } + newMatsIdSet.length = 0; + for (let i = 0; i < prevMatCount; i++) { + const j = prevMatCount - 1 - i; + const current = meshes.materials(j); + const currentId = meshes.materialIds(j); + if (matsToDelete.has(currentId)) { + continue; + } + if (delta && !deltaMaterials.has(currentId)) { + continue; + } + const needsUpdate = matsToUpdate.has(currentId); + const updated = matsToUpdate.get(currentId); + const r = needsUpdate ? updated.r : current.r(); + const g = needsUpdate ? updated.g : current.g(); + const b = needsUpdate ? updated.b : current.b(); + const a = needsUpdate ? updated.a : current.a(); + const stroke = needsUpdate ? updated.stroke : current.stroke(); + const renderedFaces = needsUpdate ? updated.renderedFaces : current.renderedFaces(); + Material2.createMaterial(builder, r, g, b, a, renderedFaces, stroke); + } + const materialsRef = builder.endVector(); + const meshesItemsOffset = Meshes.createMeshesItemsVector( + builder, + finalMeshesItems + ); + const reprLocalIdsOffset = Meshes.createRepresentationIdsVector( + builder, + finalReprIds + ); + const sampleLocalIdsOffset = Meshes.createSampleIdsVector( + builder, + finalSampleIds + ); + const materialLocalIdsOffset = Meshes.createMaterialIdsVector( + builder, + finalMaterialIds + ); + const ltLocalIdsOffset = Meshes.createLocalTransformIdsVector( + builder, + finalLtIds + ); + const gtLocalIdsOffset = Meshes.createGlobalTransformIdsVector( + builder, + finalGtIds + ); + Meshes.startMeshes(builder); + const coordinates = meshes.coordinates(); + const coordinatesRef = copyTransform(builder, coordinates); + Meshes.addCoordinates(builder, coordinatesRef); + Meshes.addGlobalTransforms(builder, globalTransformsRef); + Meshes.addShells(builder, shells); + Meshes.addRepresentations(builder, representationsRef); + Meshes.addSamples(builder, samplesOffset); + Meshes.addLocalTransforms(builder, localTransformRef); + Meshes.addMaterials(builder, materialsRef); + Meshes.addCircleExtrusions(builder, circleExtrusions); + Meshes.addMeshesItems(builder, meshesItemsOffset); + Meshes.addRepresentationIds(builder, reprLocalIdsOffset); + Meshes.addSampleIds(builder, sampleLocalIdsOffset); + Meshes.addMaterialIds(builder, materialLocalIdsOffset); + Meshes.addLocalTransformIds(builder, ltLocalIdsOffset); + Meshes.addGlobalTransformIds(builder, gtLocalIdsOffset); + const modelMesh = Meshes.endMeshes(builder); + let metadataOffset; + if (metadataToUpdate) { + const metadata = JSON.stringify(metadataToUpdate); + metadataOffset = builder.createString(metadata); + } else { + const metadata = model.metadata(); + metadataOffset = builder.createString(metadata); + } + const prevAttrLength = model.attributesLength(); + const attributesOffsets = []; + const uniqueAttributes = /* @__PURE__ */ new Set(); + const categoriesOffsets = []; + const guidsOffsets = []; + const guidsItems = []; + const guidsIndicesById = /* @__PURE__ */ new Map(); + for (let i = 0; i < model.guidsItemsLength(); i++) { + const guidLocalId = model.guidsItems(i); + guidsIndicesById.set(guidLocalId, i); + } + for (let i = 0; i < prevAttrLength; i++) { + const currentId = model.localIds(i); + if (itemsToDelete.has(currentId)) { + continue; + } + const current = model.attributes(i); + const dataOffsets = []; + const needsUpdate = itemsToUpdate.has(currentId); + if (needsUpdate) { + const updated = itemsToUpdate.get(currentId); + categoriesOffsets.push(builder.createSharedString(updated.category)); + if (updated.guid) { + guidsOffsets.push(builder.createSharedString(updated.guid)); + guidsItems.push(currentId); + } + for (const attrName in updated.data) { + const { value, type } = updated.data[attrName]; + const attrString = JSON.stringify([attrName, value, type]); + uniqueAttributes.add(attrString); + const dataOffset2 = builder.createSharedString(attrString); + dataOffsets.push(dataOffset2); + } + } else { + const currentCategory = model.categories(i); + categoriesOffsets.push(builder.createSharedString(currentCategory)); + const guidIndex = guidsIndicesById.get(currentId); + if (guidIndex !== void 0) { + const guid = model.guids(guidIndex); + guidsOffsets.push(builder.createSharedString(guid)); + guidsItems.push(currentId); + } + const dataLength = current.dataLength(); + for (let j = 0; j < dataLength; j++) { + const currentData = current.data(j); + uniqueAttributes.add(currentData); + const dataOffset2 = builder.createSharedString(currentData); + dataOffsets.push(dataOffset2); + } + } + const dataOffset = Attribute.createDataVector(builder, dataOffsets); + const attributeOffset = Attribute.createAttribute(builder, dataOffset); + attributesOffsets.push(attributeOffset); + } + for (const [currentId, attributes] of itemsToCreate) { + if (itemsToDelete.has(currentId)) { + continue; + } + categoriesOffsets.push(builder.createSharedString(attributes.category)); + if (attributes.guid) { + guidsOffsets.push(builder.createSharedString(attributes.guid)); + guidsItems.push(currentId); + } + const dataOffsets = []; + for (const attrName in attributes.data) { + const { value, type } = attributes.data[attrName]; + const attrString = JSON.stringify([attrName, value, type]); + uniqueAttributes.add(attrString); + const dataOffset2 = builder.createSharedString(attrString); + dataOffsets.push(dataOffset2); + } + const dataOffset = Attribute.createDataVector(builder, dataOffsets); + const attributeOffset = Attribute.createAttribute(builder, dataOffset); + attributesOffsets.push(attributeOffset); + } + const attributesVector = Model.createAttributesVector( + builder, + attributesOffsets + ); + const uniqueAttrsOffsets = []; + for (const attr of uniqueAttributes) { + const dataOffset = builder.createSharedString(attr); + uniqueAttrsOffsets.push(dataOffset); + } + const uniqueAttributesVector = Model.createUniqueAttributesVector( + builder, + uniqueAttrsOffsets + ); + const relationNamesLength = model.relationNamesLength(); + const relationNamesOffsets = []; + for (let i = 0; i < relationNamesLength; i++) { + const current = model.relationNames(i); + const relationNameOffset = builder.createSharedString(current); + relationNamesOffsets.push(relationNameOffset); + } + const relNamesVector = Model.createRelationNamesVector( + builder, + relationNamesOffsets + ); + const localIdsVector = Model.createLocalIdsVector(builder, finalItemIds); + const categoriesVector = Model.createCategoriesVector( + builder, + categoriesOffsets + ); + const relsOffsets = []; + const newRelationsItems = []; + const existingRelations = /* @__PURE__ */ new Set(); + const relItemsIndices = model.relationsItemsLength(); + const saveRelation = (relationData) => { + const dataOffsets = []; + for (const name in relationData.data) { + const ids = relationData.data[name]; + const filteredIds = ids.filter((id) => !itemsToDelete.has(id)); + if (!filteredIds.length) + continue; + const dataOffset2 = builder.createSharedString( + JSON.stringify([name, ...filteredIds]) + ); + dataOffsets.push(dataOffset2); + } + const dataOffset = Relation.createDataVector(builder, dataOffsets); + const relOffset = Relation.createRelation(builder, dataOffset); + relsOffsets.push(relOffset); + }; + for (let i = 0; i < relItemsIndices; i++) { + const localId = model.relationsItems(i); + existingRelations.add(localId); + if (itemsToDelete.has(localId) || relationsToDelete.has(localId) || !localIdToIndex.has(localId)) { + continue; + } + let relationData; + if (relationsToUpdate.has(localId)) { + relationData = relationsToUpdate.get(localId); + } else { + const current = model.relations(i); + relationData = EditUtils.getRelationData(current); + } + saveRelation(relationData); + newRelationsItems.push(localId); + } + for (const [localId, newRelationData] of relationsToCreate) { + if (itemsToDelete.has(localId) || relationsToDelete.has(localId) || existingRelations.has(localId)) { + continue; + } + let relationData; + if (relationsToUpdate.has(localId)) { + relationData = relationsToUpdate.get(localId); + } else { + relationData = newRelationData; + } + saveRelation(relationData); + newRelationsItems.push(localId); + } + existingRelations.clear(); + const relsVector = Model.createRelationsVector(builder, relsOffsets); + const relIndicesVector = Model.createRelationsItemsVector( + builder, + newRelationsItems + ); + const guidsItemsVector = Model.createGuidsItemsVector( + builder, + guidsItems + ); + const guidsVector = Model.createGuidsVector(builder, guidsOffsets); + let spatialStructureOffset = null; + if (spatialStructureToUpdate) { + spatialStructureOffset = createSpatialStructure( + builder, + spatialStructureToUpdate + ); + } else { + const spatialStruture = model.spatialStructure(); + spatialStructureOffset = copySpatialStructure(builder, spatialStruture); + } + const guidLength = model.guid(); + const guidRef = builder.createString(guidLength); + const indexOffsets = []; + const upsertNames = new Set(indexesToUpsert.keys()); + for (let i = 0; i < model.indexesLength(); i++) { + const existing = model.indexes(i); + if (!existing) + continue; + const name = existing.name(); + if (!name) + continue; + if (indexesToDelete.has(name)) + continue; + if (upsertNames.has(name)) + continue; + indexOffsets.push(copyIndex(builder, existing)); + } + for (const data of indexesToUpsert.values()) { + indexOffsets.push(buildIndex(builder, data)); + } + const indexesVector = indexOffsets.length > 0 ? Model.createIndexesVector(builder, indexOffsets) : null; + Model.startModel(builder); + Model.addMeshes(builder, modelMesh); + Model.addMetadata(builder, metadataOffset); + Model.addAttributes(builder, attributesVector); + Model.addUniqueAttributes(builder, uniqueAttributesVector); + Model.addRelationNames(builder, relNamesVector); + Model.addLocalIds(builder, localIdsVector); + Model.addCategories(builder, categoriesVector); + Model.addRelationsItems(builder, relIndicesVector); + Model.addRelations(builder, relsVector); + Model.addGuidsItems(builder, guidsItemsVector); + Model.addGuids(builder, guidsVector); + if (spatialStructureOffset !== null) { + Model.addSpatialStructure(builder, spatialStructureOffset); + } + Model.addGuid(builder, guidRef); + Model.addMaxLocalId(builder, newMaxLocalId); + if (indexesVector !== null) { + Model.addIndexes(builder, indexesVector); + } + const outData = Model.endModel(builder); + builder.finish(outData); + const outBytes = builder.asUint8Array(); + builder.clear(); + const result = raw ? outBytes : pako.deflate(outBytes); + const affectedItems = new Set(finalItemIds); + const editedSamples = new Set(finalSampleIds); + getAffectedItems(requests, editedSamples, meshes, model, affectedItems); + return { model: result, items: Array.from(affectedItems) }; +} +const DELTA_MODEL_ID = "-DELTA-MODEL-"; +function getRootModelId(modelId) { + if (modelId.includes(DELTA_MODEL_ID)) { + return modelId.substring(0, modelId.indexOf(DELTA_MODEL_ID)); + } + return modelId; +} +function getModelFromBuffer(bytes, raw) { + const byteBuffer = new ByteBuffer(raw ? bytes : pako.inflate(bytes)); + const readModel = Model.getRootAsModel(byteBuffer); + return readModel; +} +function getSampleData(sample) { + return { + item: sample.item(), + localTransform: sample.localTransform(), + material: sample.material(), + representation: sample.representation() + }; +} +function getTransformData(lt) { + const position = lt.position(); + const xDir = lt.xDirection(); + const yDir = lt.yDirection(); + const transform = { + position: [position.x(), position.y(), position.z()], + xDirection: [xDir.x(), xDir.y(), xDir.z()], + yDirection: [yDir.x(), yDir.y(), yDir.z()] + }; + return transform; +} +function getRelationData(relation) { + const result = { + data: {} + }; + const dataLength = relation.dataLength(); + for (let j = 0; j < dataLength; j++) { + const currentData = relation.data(j); + const [name, ...ids] = JSON.parse(currentData); + result.data[name] = ids; + } + return result; +} +function getMaterialData(material) { + return { + r: material.r(), + g: material.g(), + b: material.b(), + a: material.a(), + renderedFaces: material.renderedFaces(), + stroke: material.stroke() + }; +} +function getRepresentationData(representation) { + const bbox = representation.bbox(); + const min = bbox.min(); + const max = bbox.max(); + return { + id: representation.id(), + bbox: [min.x(), min.y(), min.z(), max.x(), max.y(), max.z()], + representationClass: representation.representationClass() + }; +} +function getShellData(shell) { + const points = []; + for (let i = 0; i < shell.pointsLength(); i++) { + const point = shell.points(i); + points.push([point.x(), point.y(), point.z()]); + } + const profiles = /* @__PURE__ */ new Map(); + for (let i = 0; i < shell.profilesLength(); i++) { + const profile = shell.profiles(i); + const indices = Array.from(profile.indicesArray() || []); + profiles.set(i, indices); + } + const holes = /* @__PURE__ */ new Map(); + for (let i = 0; i < shell.holesLength(); i++) { + const hole = shell.holes(i); + const indices = Array.from(hole.indicesArray() || []); + const profileId = hole.profileId(); + if (!holes.has(profileId)) { + holes.set(profileId, []); + } + holes.get(profileId).push(indices); + } + const bigProfiles = /* @__PURE__ */ new Map(); + for (let i = 0; i < shell.bigProfilesLength(); i++) { + const profile = shell.bigProfiles(i); + const indices = Array.from(profile.indicesArray() || []); + bigProfiles.set(i, indices); + } + const bigHoles = /* @__PURE__ */ new Map(); + for (let i = 0; i < shell.bigHolesLength(); i++) { + const hole = shell.bigHoles(i); + const indices = Array.from(hole.indicesArray() || []); + const profileId = hole.profileId(); + if (!bigHoles.has(profileId)) { + bigHoles.set(profileId, []); + } + bigHoles.get(profileId).push(indices); + } + const profilesFaceIds = Array.from(shell.profilesFaceIdsArray() || []); + return { + points, + profiles, + holes, + bigProfiles, + bigHoles, + type: shell.type(), + profilesFaceIds + }; +} +function getCircleExtrusionData(circleExtrusion) { + const result = { + radius: [], + axes: [] + }; + const radius = circleExtrusion.radiusArray(); + result.radius = Array.from(radius); + const axesLength = circleExtrusion.axesLength(); + for (let i = 0; i < axesLength; i++) { + const axis = circleExtrusion.axes(i); + const wiresLength = axis.wiresLength(); + const wires = []; + for (let j = 0; j < wiresLength; j++) { + const wire = axis.wires(j); + const p1 = wire.p1(); + const p2 = wire.p2(); + wires.push([p1.x(), p1.y(), p1.z(), p2.x(), p2.y(), p2.z()]); + } + const orderLength = axis.orderLength(); + const order = []; + for (let j = 0; j < orderLength; j++) { + order.push(axis.order(j)); + } + const partsLength = axis.partsLength(); + const parts = []; + for (let j = 0; j < partsLength; j++) { + parts.push(axis.parts(j)); + } + const wireSetsLength = axis.wireSetsLength(); + const wireSets = []; + for (let j = 0; j < wireSetsLength; j++) { + const wireSet = axis.wireSets(j); + const psLength = wireSet.psLength(); + const ps = []; + for (let k = 0; k < psLength; k++) { + const p = wireSet.ps(k); + ps.push(p.x(), p.y(), p.z()); + } + wireSets.push(ps); + } + const circleCurvesLength = axis.circleCurvesLength(); + const circleCurves = []; + for (let j = 0; j < circleCurvesLength; j++) { + const circleCurve = axis.circleCurves(j); + const aperture = circleCurve.aperture(); + const position = circleCurve.position(); + const px = position.x(); + const py = position.y(); + const pz = position.z(); + const radius2 = circleCurve.radius(); + const xDirection = circleCurve.xDirection(); + const dx = xDirection.x(); + const dy = xDirection.y(); + const dz = xDirection.z(); + const yDirection = circleCurve.yDirection(); + const dyx = yDirection.x(); + const dyy = yDirection.y(); + const dyz = yDirection.z(); + circleCurves.push({ + aperture, + position: [px, py, pz], + radius: radius2, + xDirection: [dx, dy, dz], + yDirection: [dyx, dyy, dyz] + }); + } + result.axes.push({ + wires, + order, + parts, + wireSets, + circleCurves + }); + } + return result; +} +function getMaterialsIds(model) { + const meshes = model.meshes(); + return meshes.materialIdsArray() || []; +} +function getMaterials(model, ids) { + const meshes = model.meshes(); + const source = ids || meshes.materialIdsArray(); + const idsSet = new Set(source); + const tempMaterial = new Material2(); + const materials = /* @__PURE__ */ new Map(); + for (let i = 0; i < meshes.materialsLength(); i++) { + const matLocalId = meshes.materialIds(i); + if (!idsSet.has(matLocalId)) { + continue; + } + meshes.materials(i, tempMaterial); + const material = getMaterialData(tempMaterial); + materials.set(matLocalId, material); + } + return materials; +} +function getRepresentationsIds(model) { + const meshes = model.meshes(); + return meshes.representationIdsArray() || []; +} +function getRepresentations(model, ids) { + const meshes = model.meshes(); + const source = ids || meshes.representationIdsArray(); + const idsSet = new Set(source); + const representations = /* @__PURE__ */ new Map(); + const tempRepresentation = new Representation(); + for (let i = 0; i < meshes.representationsLength(); i++) { + const representationLocalId = meshes.representationIds(i); + if (!idsSet.has(representationLocalId)) { + continue; + } + meshes.representations(i, tempRepresentation); + const repr = getRepresentationData(tempRepresentation); + if (repr.representationClass === RepresentationClass.SHELL) { + const fbshell = meshes.shells(repr.id); + const shell = getShellData(fbshell); + repr.geometry = shell; + } else if (repr.representationClass === RepresentationClass.CIRCLE_EXTRUSION) { + const fbcirclExtrusion = meshes.circleExtrusions(repr.id); + const circleExtrusion = getCircleExtrusionData(fbcirclExtrusion); + repr.geometry = circleExtrusion; + } + representations.set(representationLocalId, repr); + } + return representations; +} +function getGeometryIndicesFromRepresentations(model, ids) { + const meshes = model.meshes(); + const source = ids || meshes.representationIdsArray(); + const idsSet = new Set(source); + const tempRepresentation = new Representation(); + const shells = /* @__PURE__ */ new Set(); + const rebars = /* @__PURE__ */ new Set(); + for (let i = 0; i < meshes.representationsLength(); i++) { + const representationLocalId = meshes.representationIds(i); + if (!idsSet.has(representationLocalId)) { + continue; + } + meshes.representations(i, tempRepresentation); + const repr = getRepresentationData(tempRepresentation); + if (repr.representationClass === RepresentationClass.SHELL) { + shells.add(repr.id); + } else if (repr.representationClass === RepresentationClass.CIRCLE_EXTRUSION) { + rebars.add(repr.id); + } else { + throw new Error("Rebars not supported yet"); + } + } + return { + shellsIndices: shells, + rebarsIndices: rebars + }; +} +function getSerializedAttributes(attributes) { + const datas = []; + for (const name in attributes) { + if (name[0] === "_") { + continue; + } + const current = attributes[name]; + if (Array.isArray(current)) { + continue; + } + const value = current.value; + const type = current.type; + const serialized = JSON.stringify([name, value, type]); + datas.push(serialized); + } + return datas; +} +function itemDataToRawItemData(item) { + const categoryAttr = item._category; + if (!categoryAttr) { + throw new Error("Category is required"); + } + const category = categoryAttr.value; + const guidAttr = item._guid; + const data = {}; + for (const name in item) { + if (name[0] === "_") { + continue; + } + const attr = item[name]; + if (Array.isArray(attr)) { + continue; + } + data[name] = attr; + } + const guid = guidAttr ? guidAttr.value : void 0; + return { + data, + category, + guid + }; +} +function getLocalTransformsIds(model) { + const meshes = model.meshes(); + return meshes.localTransformIdsArray() || []; +} +function getLocalTransforms(model, ids) { + const meshes = model.meshes(); + const source = ids || meshes.localTransformIdsArray(); + const idsSet = new Set(source); + const localTransforms = /* @__PURE__ */ new Map(); + const tempTranform = new Transform(); + for (let i = 0; i < meshes.localTransformsLength(); i++) { + const localTransformLocalId = meshes.localTransformIds(i); + if (!idsSet.has(localTransformLocalId)) { + continue; + } + meshes.localTransforms(i, tempTranform); + const lt = getTransformData(tempTranform); + localTransforms.set(localTransformLocalId, lt); + } + return localTransforms; +} +function getGlobalTransformsIds(model) { + const meshes = model.meshes(); + return meshes.globalTransformIdsArray() || []; +} +function getGlobalTransforms(model, ids) { + const meshes = model.meshes(); + let source = null; + if (ids) { + source = new Set(ids); + } else { + source = new Set(meshes.globalTransformIdsArray()); + } + const globalTransforms = /* @__PURE__ */ new Map(); + const tempTransform = new Transform(); + const gtLength = meshes.globalTransformsLength(); + for (let i = 0; i < gtLength; i++) { + meshes.globalTransforms(i, tempTransform); + const localId = meshes.globalTransformIds(i); + const idIndex = meshes.meshesItems(i); + const itemId = model.localIds(idIndex); + if (!source.has(localId)) + continue; + const gtData = getTransformData(tempTransform); + globalTransforms.set(localId, { ...gtData, itemId }); + } + return globalTransforms; +} +function getSamplesIds(model) { + const meshes = model.meshes(); + const samples = meshes.sampleIdsArray() || []; + return samples; +} +function getSamples(model, ids) { + const meshes = model.meshes(); + const source = ids || meshes.sampleIdsArray(); + const idsSet = new Set(source); + const samples = /* @__PURE__ */ new Map(); + const tempSample = new Sample(); + for (let i = 0; i < meshes.samplesLength(); i++) { + const sampleLocalId = meshes.sampleIds(i); + if (!idsSet.has(sampleLocalId)) { + continue; + } + meshes.samples(i, tempSample); + const sample = getSampleData(tempSample); + sample.item = meshes.globalTransformIds(sample.item); + sample.material = meshes.materialIds(sample.material); + sample.representation = meshes.representationIds(sample.representation); + sample.localTransform = meshes.localTransformIds(sample.localTransform); + samples.set(sampleLocalId, sample); + } + return samples; +} +function getItemsIds(model) { + return model.localIdsArray(); +} +function getItems(model, itemIds) { + let source = /* @__PURE__ */ new Set(); + if (itemIds) { + source = new Set(itemIds); + } else { + for (let i = 0; i < model.localIdsLength(); i++) { + source.add(i); + } + } + const items = /* @__PURE__ */ new Map(); + for (const i of source) { + const localId = model.localIds(i); + const category = model.categories(i); + const guid = model.guids(i); + const attrsData = model.attributes(i); + const data = {}; + for (let j = 0; j < attrsData.dataLength(); j++) { + const attrString = attrsData.data(j); + const [name, value, type] = JSON.parse(attrString); + data[name] = { value, type }; + } + items.set(localId, { data, category, guid }); + } + return items; +} +function getGlobalTranformsIdsOfItems(model, ids) { + const meshes = model.meshes(); + const source = new Set(ids); + const globalIds = /* @__PURE__ */ new Set(); + for (let i = 0; i < meshes.meshesItemsLength(); i++) { + const localIdIndex = meshes.meshesItems(i); + const localId = model.localIds(localIdIndex); + if (source.has(localId)) { + globalIds.add(meshes.globalTransformIds(i)); + } + } + return Array.from(globalIds); +} +function getElementsData(vModel, ids) { + const model = vModel.data; + const meshes = model.meshes(); + const result = {}; + const idSet = new Set(ids); + const tempTransform = new Transform(); + const tempMaterial = new Material2(); + const tempRepresentation = new Representation(); + const tempShell = new Shell(); + for (let i = 0; i < meshes.samplesLength(); i++) { + const sample = meshes.samples(i); + const gtIndex = sample.item(); + const idIndex = meshes.meshesItems(gtIndex); + const localId = model.localIds(idIndex); + if (!idSet.has(localId)) { + continue; + } + if (!result[localId]) { + result[localId] = { + samples: {}, + localTransforms: {}, + globalTransforms: {}, + representations: {}, + materials: {} + }; + } + const current = result[localId]; + const ltIndex = sample.localTransform(); + const materialIndex = sample.material(); + const representationIndex = sample.representation(); + const sampleLocalId = meshes.sampleIds(i); + const gtId = meshes.globalTransformIds(gtIndex); + const ltId = meshes.localTransformIds(ltIndex); + const materialId = meshes.materialIds(materialIndex); + const reprId = meshes.representationIds(representationIndex); + current.samples[sampleLocalId] = { + item: gtId, + localTransform: ltId, + material: materialId, + representation: reprId + }; + meshes.localTransforms(ltIndex, tempTransform); + current.localTransforms[ltId] = getTransformData(tempTransform); + meshes.globalTransforms(gtIndex, tempTransform); + const gTransform = getTransformData(tempTransform); + current.globalTransforms[gtId] = { ...gTransform, itemId: localId }; + meshes.materials(materialIndex, tempMaterial); + current.materials[materialId] = getMaterialData(tempMaterial); + meshes.representations(representationIndex, tempRepresentation); + const repr = getRepresentationData(tempRepresentation); + if (repr.representationClass === RepresentationClass.SHELL) { + meshes.shells(repr.id, tempShell); + const shell = getShellData(tempShell); + repr.geometry = shell; + } + current.representations[reprId] = repr; + } + const relIndicesById = /* @__PURE__ */ new Map(); + for (let i = 0; i < model.relationsItemsLength(); i++) { + const relLocalId = model.relationsItems(i); + relIndicesById.set(relLocalId, i); + } + const localIdsToIndex = /* @__PURE__ */ new Map(); + for (let i = 0; i < model.localIdsLength(); i++) { + const localId = model.localIds(i); + localIdsToIndex.set(localId, i); + } + return result; +} +function getItemSnapData(vModel, itemId) { + const model = vModel.data; + const meshes = model.meshes(); + const sampleIndices = vModel.boxes.sampleOf(itemId); + if (!sampleIndices || sampleIndices.length === 0) + return null; + const result = { + samples: {}, + localTransforms: {}, + globalTransforms: {}, + representations: {}, + materials: {} + }; + const localIdIndex = meshes.meshesItems(itemId); + const localId = localIdIndex !== null ? model.localIds(localIdIndex) ?? itemId : itemId; + const tempTransform = new Transform(); + meshes.globalTransforms(itemId, tempTransform); + const gTransform = getTransformData(tempTransform); + const gtId = meshes.globalTransformIds(itemId); + result.globalTransforms[gtId] = { ...gTransform, itemId: localId }; + const tempRepresentation = new Representation(); + const tempShell = new Shell(); + for (const sampleIndex of sampleIndices) { + const sample = meshes.samples(sampleIndex); + const ltIndex = sample.localTransform(); + const representationIndex = sample.representation(); + const sampleLocalId = meshes.sampleIds(sampleIndex); + const ltId = meshes.localTransformIds(ltIndex); + const reprId = meshes.representationIds(representationIndex); + result.samples[sampleLocalId] = { + item: gtId, + localTransform: ltId, + // Snap doesn't read material; keep the field shape but point + // at a sentinel so callers see a stable type. + material: 0, + representation: reprId + }; + meshes.localTransforms(ltIndex, tempTransform); + result.localTransforms[ltId] = getTransformData(tempTransform); + if (result.representations[reprId]) + continue; + meshes.representations(representationIndex, tempRepresentation); + const repr = getRepresentationData(tempRepresentation); + if (repr.representationClass === RepresentationClass.SHELL) { + meshes.shells(repr.id, tempShell); + const shell = getShellData(tempShell); + repr.geometry = shell; + } + result.representations[reprId] = repr; + } + return result; +} +function solveGtTempId(sample, key, tempIdsToLocalIds) { + const value = sample[key]; + if (typeof value === "string") { + const localId = tempIdsToLocalIds.get(value); + if (localId === void 0) { + throw new Error(`Malformed request: temp id ${sample[key]} not found`); + } + sample[key] = localId; + } +} +function solveSampleTempId(sample, key, tempIdsToLocalIds) { + const value = sample[key]; + if (typeof value === "string") { + const localId = tempIdsToLocalIds.get(value); + if (localId === void 0) { + throw new Error(`Malformed request: temp id ${sample[key]} not found`); + } + sample[key] = localId; + } +} +function solveLocalIdTempId(request, key, tempIdsToLocalIds) { + const value = request[key]; + if (typeof value === "string") { + const localId = tempIdsToLocalIds.get(value); + if (localId === void 0) { + throw new Error(`Malformed request: temp id ${request[key]} not found`); + } + request[key] = localId; + } +} +function solveIds(requests, nextId) { + const tempIds = /* @__PURE__ */ new Map(); + const result = []; + for (const request of requests) { + if (isIndexRequest(request)) + continue; + if (request.localId !== void 0) { + continue; + } + const newId = nextId++; + if (request.tempId) { + tempIds.set(request.tempId, newId); + } + request.localId = newId; + result.push(newId); + } + for (const request of requests) { + if (isIndexRequest(request)) + continue; + if (request.type === EditRequestType.UPDATE_SAMPLE || request.type === EditRequestType.CREATE_SAMPLE) { + const sample = request.data; + solveSampleTempId(sample, "item", tempIds); + solveSampleTempId(sample, "material", tempIds); + solveSampleTempId(sample, "representation", tempIds); + solveSampleTempId(sample, "localTransform", tempIds); + continue; + } + if (request.type === EditRequestType.UPDATE_GLOBAL_TRANSFORM || request.type === EditRequestType.CREATE_GLOBAL_TRANSFORM) { + const gt = request.data; + solveGtTempId(gt, "itemId", tempIds); + continue; + } + solveLocalIdTempId(request, "localId", tempIds); + } + tempIds.clear(); + return result; +} +function applyChangesToRawData(actions, rawData, type, filter) { + const createType = EditRequestType[`CREATE_${type}`]; + const updateType = EditRequestType[`UPDATE_${type}`]; + const deleteType = EditRequestType[`DELETE_${type}`]; + if (actions) { + for (const action of actions) { + if (action.type === createType || action.type === updateType) { + if (filter && !filter.has(action.localId)) { + continue; + } + rawData.set(action.localId, action.data); + continue; + } + if (action.type === deleteType) { + rawData.delete(action.localId); + } + } + } +} +function applyChangesToSpecialData(actions, key) { + const updateType = EditRequestType[`UPDATE_${key}`]; + if (actions) { + for (let i = actions.length - 1; i >= 0; i--) { + const action = actions[i]; + if (action.type === updateType) { + return JSON.parse(JSON.stringify(action.data)); + } + } + } + return null; +} +function applyChangesToIds(actions, ids, key, addCreatedElements) { + const resultSet = new Set(ids); + const deleteType = EditRequestType[`DELETE_${key}`]; + const createType = EditRequestType[`CREATE_${key}`]; + for (const action of actions) { + if (action.type === deleteType) { + resultSet.delete(action.localId); + continue; + } + if (addCreatedElements && action.type === createType) { + resultSet.add(action.localId); + } + } + return Array.from(resultSet); +} +class EditUtils { +} +__publicField(EditUtils, "edit", edit); +__publicField(EditUtils, "solveIds", solveIds); +__publicField(EditUtils, "newModel", newModel); +__publicField(EditUtils, "applyChangesToRawData", applyChangesToRawData); +__publicField(EditUtils, "applyChangesToSpecialData", applyChangesToSpecialData); +__publicField(EditUtils, "applyChangesToIds", applyChangesToIds); +__publicField(EditUtils, "getModelFromBuffer", getModelFromBuffer); +__publicField(EditUtils, "getSampleData", getSampleData); +__publicField(EditUtils, "getTransformData", getTransformData); +__publicField(EditUtils, "getRelationData", getRelationData); +__publicField(EditUtils, "getMaterialData", getMaterialData); +__publicField(EditUtils, "getRepresentationData", getRepresentationData); +__publicField(EditUtils, "getShellData", getShellData); +__publicField(EditUtils, "getMaterialsIds", getMaterialsIds); +__publicField(EditUtils, "getMaterials", getMaterials); +__publicField(EditUtils, "getRepresentationsIds", getRepresentationsIds); +__publicField(EditUtils, "getRepresentations", getRepresentations); +__publicField(EditUtils, "getLocalTransformsIds", getLocalTransformsIds); +__publicField(EditUtils, "getLocalTransforms", getLocalTransforms); +__publicField(EditUtils, "getGlobalTransformsIds", getGlobalTransformsIds); +__publicField(EditUtils, "getGlobalTransforms", getGlobalTransforms); +__publicField(EditUtils, "getSamplesIds", getSamplesIds); +__publicField(EditUtils, "getSamples", getSamples); +__publicField(EditUtils, "getItemsIds", getItemsIds); +__publicField(EditUtils, "getItems", getItems); +__publicField(EditUtils, "getGlobalTranformsIdsOfItems", getGlobalTranformsIdsOfItems); +__publicField(EditUtils, "getElementsData", getElementsData); +__publicField(EditUtils, "getItemSnapData", getItemSnapData); +__publicField(EditUtils, "getGeometryIndicesFromRepresentations", getGeometryIndicesFromRepresentations); +__publicField(EditUtils, "getRootModelId", getRootModelId); +__publicField(EditUtils, "getSerializedAttributes", getSerializedAttributes); +__publicField(EditUtils, "itemDataToRawItemData", itemDataToRawItemData); +__publicField(EditUtils, "DELTA_MODEL_ID", DELTA_MODEL_ID); +var Handle = class { + constructor(value, schema = 2, tapeItem) { + this.value = value; + this.type = 5; + if (tapeItem && (tapeItem == null ? void 0 : tapeItem.type) === 2) + return TypeInitialiser(schema, tapeItem); + } +}; +var NumberHandle = class { + constructor(v, type) { + this.type = 4; + if (type) + this.type = type; + this.value = v; + } + get internalValue() { + return this._internalValue; + } + get value() { + return this._representationValue; + } + set value(v) { + this._representationValue = (this._internalValue = v) === null ? v : parseFloat(v); + } +}; +var IfcLineObject = class { + constructor(expressID = -1) { + this.expressID = expressID; + this.type = 0; + } +}; +var TypeInitialisers = {}; +function TypeInitialiser(schema, tapeItem) { + if (Array.isArray(tapeItem)) + tapeItem.map((p) => TypeInitialiser(schema, p)); + if (tapeItem.typecode) + return TypeInitialisers[schema][tapeItem.typecode](tapeItem.value); + return tapeItem.value; +} +TypeInitialisers[1] = { + 3699917729: (v) => new IFC2X3.IfcAbsorbedDoseMeasure(v), + 4182062534: (v) => new IFC2X3.IfcAccelerationMeasure(v), + 360377573: (v) => new IFC2X3.IfcAmountOfSubstanceMeasure(v), + 632304761: (v) => new IFC2X3.IfcAngularVelocityMeasure(v), + 2650437152: (v) => new IFC2X3.IfcAreaMeasure(v), + 2735952531: (v) => new IFC2X3.IfcBoolean(v), + 1867003952: (v) => new IFC2X3.IfcBoxAlignment(v), + 2991860651: (v) => new IFC2X3.IfcComplexNumber(v.map((x) => x.value)), + 3812528620: (v) => new IFC2X3.IfcCompoundPlaneAngleMeasure(v.map((x) => x.value)), + 3238673880: (v) => new IFC2X3.IfcContextDependentMeasure(v), + 1778710042: (v) => new IFC2X3.IfcCountMeasure(v), + 94842927: (v) => new IFC2X3.IfcCurvatureMeasure(v), + 86635668: (v) => new IFC2X3.IfcDayInMonthNumber(v), + 300323983: (v) => new IFC2X3.IfcDaylightSavingHour(v), + 1514641115: (v) => new IFC2X3.IfcDescriptiveMeasure(v), + 4134073009: (v) => new IFC2X3.IfcDimensionCount(v), + 524656162: (v) => new IFC2X3.IfcDoseEquivalentMeasure(v), + 69416015: (v) => new IFC2X3.IfcDynamicViscosityMeasure(v), + 1827137117: (v) => new IFC2X3.IfcElectricCapacitanceMeasure(v), + 3818826038: (v) => new IFC2X3.IfcElectricChargeMeasure(v), + 2093906313: (v) => new IFC2X3.IfcElectricConductanceMeasure(v), + 3790457270: (v) => new IFC2X3.IfcElectricCurrentMeasure(v), + 2951915441: (v) => new IFC2X3.IfcElectricResistanceMeasure(v), + 2506197118: (v) => new IFC2X3.IfcElectricVoltageMeasure(v), + 2078135608: (v) => new IFC2X3.IfcEnergyMeasure(v), + 1102727119: (v) => new IFC2X3.IfcFontStyle(v), + 2715512545: (v) => new IFC2X3.IfcFontVariant(v), + 2590844177: (v) => new IFC2X3.IfcFontWeight(v), + 1361398929: (v) => new IFC2X3.IfcForceMeasure(v), + 3044325142: (v) => new IFC2X3.IfcFrequencyMeasure(v), + 3064340077: (v) => new IFC2X3.IfcGloballyUniqueId(v), + 3113092358: (v) => new IFC2X3.IfcHeatFluxDensityMeasure(v), + 1158859006: (v) => new IFC2X3.IfcHeatingValueMeasure(v), + 2589826445: (v) => new IFC2X3.IfcHourInDay(v), + 983778844: (v) => new IFC2X3.IfcIdentifier(v), + 3358199106: (v) => new IFC2X3.IfcIlluminanceMeasure(v), + 2679005408: (v) => new IFC2X3.IfcInductanceMeasure(v), + 1939436016: (v) => new IFC2X3.IfcInteger(v), + 3809634241: (v) => new IFC2X3.IfcIntegerCountRateMeasure(v), + 3686016028: (v) => new IFC2X3.IfcIonConcentrationMeasure(v), + 3192672207: (v) => new IFC2X3.IfcIsothermalMoistureCapacityMeasure(v), + 2054016361: (v) => new IFC2X3.IfcKinematicViscosityMeasure(v), + 3258342251: (v) => new IFC2X3.IfcLabel(v), + 1243674935: (v) => new IFC2X3.IfcLengthMeasure(v), + 191860431: (v) => new IFC2X3.IfcLinearForceMeasure(v), + 2128979029: (v) => new IFC2X3.IfcLinearMomentMeasure(v), + 1307019551: (v) => new IFC2X3.IfcLinearStiffnessMeasure(v), + 3086160713: (v) => new IFC2X3.IfcLinearVelocityMeasure(v), + 503418787: (v) => new IFC2X3.IfcLogical(v), + 2095003142: (v) => new IFC2X3.IfcLuminousFluxMeasure(v), + 2755797622: (v) => new IFC2X3.IfcLuminousIntensityDistributionMeasure(v), + 151039812: (v) => new IFC2X3.IfcLuminousIntensityMeasure(v), + 286949696: (v) => new IFC2X3.IfcMagneticFluxDensityMeasure(v), + 2486716878: (v) => new IFC2X3.IfcMagneticFluxMeasure(v), + 1477762836: (v) => new IFC2X3.IfcMassDensityMeasure(v), + 4017473158: (v) => new IFC2X3.IfcMassFlowRateMeasure(v), + 3124614049: (v) => new IFC2X3.IfcMassMeasure(v), + 3531705166: (v) => new IFC2X3.IfcMassPerLengthMeasure(v), + 102610177: (v) => new IFC2X3.IfcMinuteInHour(v), + 3341486342: (v) => new IFC2X3.IfcModulusOfElasticityMeasure(v), + 2173214787: (v) => new IFC2X3.IfcModulusOfLinearSubgradeReactionMeasure(v), + 1052454078: (v) => new IFC2X3.IfcModulusOfRotationalSubgradeReactionMeasure(v), + 1753493141: (v) => new IFC2X3.IfcModulusOfSubgradeReactionMeasure(v), + 3177669450: (v) => new IFC2X3.IfcMoistureDiffusivityMeasure(v), + 1648970520: (v) => new IFC2X3.IfcMolecularWeightMeasure(v), + 3114022597: (v) => new IFC2X3.IfcMomentOfInertiaMeasure(v), + 2615040989: (v) => new IFC2X3.IfcMonetaryMeasure(v), + 765770214: (v) => new IFC2X3.IfcMonthInYearNumber(v), + 2095195183: (v) => new IFC2X3.IfcNormalisedRatioMeasure(v), + 2395907400: (v) => new IFC2X3.IfcNumericMeasure(v), + 929793134: (v) => new IFC2X3.IfcPHMeasure(v), + 2260317790: (v) => new IFC2X3.IfcParameterValue(v), + 2642773653: (v) => new IFC2X3.IfcPlanarForceMeasure(v), + 4042175685: (v) => new IFC2X3.IfcPlaneAngleMeasure(v), + 2815919920: (v) => new IFC2X3.IfcPositiveLengthMeasure(v), + 3054510233: (v) => new IFC2X3.IfcPositivePlaneAngleMeasure(v), + 1245737093: (v) => new IFC2X3.IfcPositiveRatioMeasure(v), + 1364037233: (v) => new IFC2X3.IfcPowerMeasure(v), + 2169031380: (v) => new IFC2X3.IfcPresentableText(v), + 3665567075: (v) => new IFC2X3.IfcPressureMeasure(v), + 3972513137: (v) => new IFC2X3.IfcRadioActivityMeasure(v), + 96294661: (v) => new IFC2X3.IfcRatioMeasure(v), + 200335297: (v) => new IFC2X3.IfcReal(v), + 2133746277: (v) => new IFC2X3.IfcRotationalFrequencyMeasure(v), + 1755127002: (v) => new IFC2X3.IfcRotationalMassMeasure(v), + 3211557302: (v) => new IFC2X3.IfcRotationalStiffnessMeasure(v), + 2766185779: (v) => new IFC2X3.IfcSecondInMinute(v), + 3467162246: (v) => new IFC2X3.IfcSectionModulusMeasure(v), + 2190458107: (v) => new IFC2X3.IfcSectionalAreaIntegralMeasure(v), + 408310005: (v) => new IFC2X3.IfcShearModulusMeasure(v), + 3471399674: (v) => new IFC2X3.IfcSolidAngleMeasure(v), + 846465480: (v) => new IFC2X3.IfcSoundPowerMeasure(v), + 993287707: (v) => new IFC2X3.IfcSoundPressureMeasure(v), + 3477203348: (v) => new IFC2X3.IfcSpecificHeatCapacityMeasure(v), + 2757832317: (v) => new IFC2X3.IfcSpecularExponent(v), + 361837227: (v) => new IFC2X3.IfcSpecularRoughness(v), + 58845555: (v) => new IFC2X3.IfcTemperatureGradientMeasure(v), + 2801250643: (v) => new IFC2X3.IfcText(v), + 1460886941: (v) => new IFC2X3.IfcTextAlignment(v), + 3490877962: (v) => new IFC2X3.IfcTextDecoration(v), + 603696268: (v) => new IFC2X3.IfcTextFontName(v), + 296282323: (v) => new IFC2X3.IfcTextTransformation(v), + 232962298: (v) => new IFC2X3.IfcThermalAdmittanceMeasure(v), + 2645777649: (v) => new IFC2X3.IfcThermalConductivityMeasure(v), + 2281867870: (v) => new IFC2X3.IfcThermalExpansionCoefficientMeasure(v), + 857959152: (v) => new IFC2X3.IfcThermalResistanceMeasure(v), + 2016195849: (v) => new IFC2X3.IfcThermalTransmittanceMeasure(v), + 743184107: (v) => new IFC2X3.IfcThermodynamicTemperatureMeasure(v), + 2726807636: (v) => new IFC2X3.IfcTimeMeasure(v), + 2591213694: (v) => new IFC2X3.IfcTimeStamp(v), + 1278329552: (v) => new IFC2X3.IfcTorqueMeasure(v), + 3345633955: (v) => new IFC2X3.IfcVaporPermeabilityMeasure(v), + 3458127941: (v) => new IFC2X3.IfcVolumeMeasure(v), + 2593997549: (v) => new IFC2X3.IfcVolumetricFlowRateMeasure(v), + 51269191: (v) => new IFC2X3.IfcWarpingConstantMeasure(v), + 1718600412: (v) => new IFC2X3.IfcWarpingMomentMeasure(v), + 4065007721: (v) => new IFC2X3.IfcYearNumber(v) +}; +var IFC2X3; +((IFC2X32) => { + class IfcAbsorbedDoseMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCABSORBEDDOSEMEASURE"; + } + } + IFC2X32.IfcAbsorbedDoseMeasure = IfcAbsorbedDoseMeasure; + class IfcAccelerationMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCACCELERATIONMEASURE"; + } + } + IFC2X32.IfcAccelerationMeasure = IfcAccelerationMeasure; + class IfcAmountOfSubstanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCAMOUNTOFSUBSTANCEMEASURE"; + } + } + IFC2X32.IfcAmountOfSubstanceMeasure = IfcAmountOfSubstanceMeasure; + class IfcAngularVelocityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCANGULARVELOCITYMEASURE"; + } + } + IFC2X32.IfcAngularVelocityMeasure = IfcAngularVelocityMeasure; + class IfcAreaMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCAREAMEASURE"; + } + } + IFC2X32.IfcAreaMeasure = IfcAreaMeasure; + class IfcBoolean { + constructor(v) { + this.type = 3; + this.name = "IFCBOOLEAN"; + this.value = v; + } + } + IFC2X32.IfcBoolean = IfcBoolean; + class IfcBoxAlignment { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCBOXALIGNMENT"; + } + } + IFC2X32.IfcBoxAlignment = IfcBoxAlignment; + class IfcComplexNumber { + constructor(value) { + this.value = value; + this.type = 4; + } + } + IFC2X32.IfcComplexNumber = IfcComplexNumber; + class IfcCompoundPlaneAngleMeasure { + constructor(value) { + this.value = value; + this.type = 10; + } + } + IFC2X32.IfcCompoundPlaneAngleMeasure = IfcCompoundPlaneAngleMeasure; + class IfcContextDependentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCCONTEXTDEPENDENTMEASURE"; + } + } + IFC2X32.IfcContextDependentMeasure = IfcContextDependentMeasure; + class IfcCountMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCCOUNTMEASURE"; + } + } + IFC2X32.IfcCountMeasure = IfcCountMeasure; + class IfcCurvatureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCCURVATUREMEASURE"; + } + } + IFC2X32.IfcCurvatureMeasure = IfcCurvatureMeasure; + class IfcDayInMonthNumber extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCDAYINMONTHNUMBER"; + } + } + IFC2X32.IfcDayInMonthNumber = IfcDayInMonthNumber; + class IfcDaylightSavingHour extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCDAYLIGHTSAVINGHOUR"; + } + } + IFC2X32.IfcDaylightSavingHour = IfcDaylightSavingHour; + class IfcDescriptiveMeasure { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCDESCRIPTIVEMEASURE"; + } + } + IFC2X32.IfcDescriptiveMeasure = IfcDescriptiveMeasure; + class IfcDimensionCount extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCDIMENSIONCOUNT"; + } + } + IFC2X32.IfcDimensionCount = IfcDimensionCount; + class IfcDoseEquivalentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCDOSEEQUIVALENTMEASURE"; + } + } + IFC2X32.IfcDoseEquivalentMeasure = IfcDoseEquivalentMeasure; + class IfcDynamicViscosityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCDYNAMICVISCOSITYMEASURE"; + } + } + IFC2X32.IfcDynamicViscosityMeasure = IfcDynamicViscosityMeasure; + class IfcElectricCapacitanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCAPACITANCEMEASURE"; + } + } + IFC2X32.IfcElectricCapacitanceMeasure = IfcElectricCapacitanceMeasure; + class IfcElectricChargeMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCHARGEMEASURE"; + } + } + IFC2X32.IfcElectricChargeMeasure = IfcElectricChargeMeasure; + class IfcElectricConductanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCONDUCTANCEMEASURE"; + } + } + IFC2X32.IfcElectricConductanceMeasure = IfcElectricConductanceMeasure; + class IfcElectricCurrentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCURRENTMEASURE"; + } + } + IFC2X32.IfcElectricCurrentMeasure = IfcElectricCurrentMeasure; + class IfcElectricResistanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICRESISTANCEMEASURE"; + } + } + IFC2X32.IfcElectricResistanceMeasure = IfcElectricResistanceMeasure; + class IfcElectricVoltageMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICVOLTAGEMEASURE"; + } + } + IFC2X32.IfcElectricVoltageMeasure = IfcElectricVoltageMeasure; + class IfcEnergyMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCENERGYMEASURE"; + } + } + IFC2X32.IfcEnergyMeasure = IfcEnergyMeasure; + class IfcFontStyle { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCFONTSTYLE"; + } + } + IFC2X32.IfcFontStyle = IfcFontStyle; + class IfcFontVariant { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCFONTVARIANT"; + } + } + IFC2X32.IfcFontVariant = IfcFontVariant; + class IfcFontWeight { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCFONTWEIGHT"; + } + } + IFC2X32.IfcFontWeight = IfcFontWeight; + class IfcForceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCFORCEMEASURE"; + } + } + IFC2X32.IfcForceMeasure = IfcForceMeasure; + class IfcFrequencyMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCFREQUENCYMEASURE"; + } + } + IFC2X32.IfcFrequencyMeasure = IfcFrequencyMeasure; + class IfcGloballyUniqueId { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCGLOBALLYUNIQUEID"; + } + } + IFC2X32.IfcGloballyUniqueId = IfcGloballyUniqueId; + class IfcHeatFluxDensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCHEATFLUXDENSITYMEASURE"; + } + } + IFC2X32.IfcHeatFluxDensityMeasure = IfcHeatFluxDensityMeasure; + class IfcHeatingValueMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCHEATINGVALUEMEASURE"; + } + } + IFC2X32.IfcHeatingValueMeasure = IfcHeatingValueMeasure; + class IfcHourInDay extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCHOURINDAY"; + } + } + IFC2X32.IfcHourInDay = IfcHourInDay; + class IfcIdentifier { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCIDENTIFIER"; + } + } + IFC2X32.IfcIdentifier = IfcIdentifier; + class IfcIlluminanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCILLUMINANCEMEASURE"; + } + } + IFC2X32.IfcIlluminanceMeasure = IfcIlluminanceMeasure; + class IfcInductanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCINDUCTANCEMEASURE"; + } + } + IFC2X32.IfcInductanceMeasure = IfcInductanceMeasure; + class IfcInteger extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCINTEGER"; + } + } + IFC2X32.IfcInteger = IfcInteger; + class IfcIntegerCountRateMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCINTEGERCOUNTRATEMEASURE"; + } + } + IFC2X32.IfcIntegerCountRateMeasure = IfcIntegerCountRateMeasure; + class IfcIonConcentrationMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCIONCONCENTRATIONMEASURE"; + } + } + IFC2X32.IfcIonConcentrationMeasure = IfcIonConcentrationMeasure; + class IfcIsothermalMoistureCapacityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCISOTHERMALMOISTURECAPACITYMEASURE"; + } + } + IFC2X32.IfcIsothermalMoistureCapacityMeasure = IfcIsothermalMoistureCapacityMeasure; + class IfcKinematicViscosityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCKINEMATICVISCOSITYMEASURE"; + } + } + IFC2X32.IfcKinematicViscosityMeasure = IfcKinematicViscosityMeasure; + class IfcLabel { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCLABEL"; + } + } + IFC2X32.IfcLabel = IfcLabel; + class IfcLengthMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLENGTHMEASURE"; + } + } + IFC2X32.IfcLengthMeasure = IfcLengthMeasure; + class IfcLinearForceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARFORCEMEASURE"; + } + } + IFC2X32.IfcLinearForceMeasure = IfcLinearForceMeasure; + class IfcLinearMomentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARMOMENTMEASURE"; + } + } + IFC2X32.IfcLinearMomentMeasure = IfcLinearMomentMeasure; + class IfcLinearStiffnessMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARSTIFFNESSMEASURE"; + } + } + IFC2X32.IfcLinearStiffnessMeasure = IfcLinearStiffnessMeasure; + class IfcLinearVelocityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARVELOCITYMEASURE"; + } + } + IFC2X32.IfcLinearVelocityMeasure = IfcLinearVelocityMeasure; + class IfcLogical { + constructor(v) { + this.type = 3; + this.name = "IFCLOGICAL"; + this.value = v; + } + } + IFC2X32.IfcLogical = IfcLogical; + class IfcLuminousFluxMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLUMINOUSFLUXMEASURE"; + } + } + IFC2X32.IfcLuminousFluxMeasure = IfcLuminousFluxMeasure; + class IfcLuminousIntensityDistributionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE"; + } + } + IFC2X32.IfcLuminousIntensityDistributionMeasure = IfcLuminousIntensityDistributionMeasure; + class IfcLuminousIntensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLUMINOUSINTENSITYMEASURE"; + } + } + IFC2X32.IfcLuminousIntensityMeasure = IfcLuminousIntensityMeasure; + class IfcMagneticFluxDensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMAGNETICFLUXDENSITYMEASURE"; + } + } + IFC2X32.IfcMagneticFluxDensityMeasure = IfcMagneticFluxDensityMeasure; + class IfcMagneticFluxMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMAGNETICFLUXMEASURE"; + } + } + IFC2X32.IfcMagneticFluxMeasure = IfcMagneticFluxMeasure; + class IfcMassDensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSDENSITYMEASURE"; + } + } + IFC2X32.IfcMassDensityMeasure = IfcMassDensityMeasure; + class IfcMassFlowRateMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSFLOWRATEMEASURE"; + } + } + IFC2X32.IfcMassFlowRateMeasure = IfcMassFlowRateMeasure; + class IfcMassMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSMEASURE"; + } + } + IFC2X32.IfcMassMeasure = IfcMassMeasure; + class IfcMassPerLengthMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSPERLENGTHMEASURE"; + } + } + IFC2X32.IfcMassPerLengthMeasure = IfcMassPerLengthMeasure; + class IfcMinuteInHour extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCMINUTEINHOUR"; + } + } + IFC2X32.IfcMinuteInHour = IfcMinuteInHour; + class IfcModulusOfElasticityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFELASTICITYMEASURE"; + } + } + IFC2X32.IfcModulusOfElasticityMeasure = IfcModulusOfElasticityMeasure; + class IfcModulusOfLinearSubgradeReactionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE"; + } + } + IFC2X32.IfcModulusOfLinearSubgradeReactionMeasure = IfcModulusOfLinearSubgradeReactionMeasure; + class IfcModulusOfRotationalSubgradeReactionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE"; + } + } + IFC2X32.IfcModulusOfRotationalSubgradeReactionMeasure = IfcModulusOfRotationalSubgradeReactionMeasure; + class IfcModulusOfSubgradeReactionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFSUBGRADEREACTIONMEASURE"; + } + } + IFC2X32.IfcModulusOfSubgradeReactionMeasure = IfcModulusOfSubgradeReactionMeasure; + class IfcMoistureDiffusivityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMOISTUREDIFFUSIVITYMEASURE"; + } + } + IFC2X32.IfcMoistureDiffusivityMeasure = IfcMoistureDiffusivityMeasure; + class IfcMolecularWeightMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMOLECULARWEIGHTMEASURE"; + } + } + IFC2X32.IfcMolecularWeightMeasure = IfcMolecularWeightMeasure; + class IfcMomentOfInertiaMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMOMENTOFINERTIAMEASURE"; + } + } + IFC2X32.IfcMomentOfInertiaMeasure = IfcMomentOfInertiaMeasure; + class IfcMonetaryMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMONETARYMEASURE"; + } + } + IFC2X32.IfcMonetaryMeasure = IfcMonetaryMeasure; + class IfcMonthInYearNumber extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCMONTHINYEARNUMBER"; + } + } + IFC2X32.IfcMonthInYearNumber = IfcMonthInYearNumber; + class IfcNormalisedRatioMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCNORMALISEDRATIOMEASURE"; + } + } + IFC2X32.IfcNormalisedRatioMeasure = IfcNormalisedRatioMeasure; + class IfcNumericMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCNUMERICMEASURE"; + } + } + IFC2X32.IfcNumericMeasure = IfcNumericMeasure; + class IfcPHMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPHMEASURE"; + } + } + IFC2X32.IfcPHMeasure = IfcPHMeasure; + class IfcParameterValue extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPARAMETERVALUE"; + } + } + IFC2X32.IfcParameterValue = IfcParameterValue; + class IfcPlanarForceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPLANARFORCEMEASURE"; + } + } + IFC2X32.IfcPlanarForceMeasure = IfcPlanarForceMeasure; + class IfcPlaneAngleMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPLANEANGLEMEASURE"; + } + } + IFC2X32.IfcPlaneAngleMeasure = IfcPlaneAngleMeasure; + class IfcPositiveLengthMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOSITIVELENGTHMEASURE"; + } + } + IFC2X32.IfcPositiveLengthMeasure = IfcPositiveLengthMeasure; + class IfcPositivePlaneAngleMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOSITIVEPLANEANGLEMEASURE"; + } + } + IFC2X32.IfcPositivePlaneAngleMeasure = IfcPositivePlaneAngleMeasure; + class IfcPositiveRatioMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOSITIVERATIOMEASURE"; + } + } + IFC2X32.IfcPositiveRatioMeasure = IfcPositiveRatioMeasure; + class IfcPowerMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOWERMEASURE"; + } + } + IFC2X32.IfcPowerMeasure = IfcPowerMeasure; + class IfcPresentableText { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCPRESENTABLETEXT"; + } + } + IFC2X32.IfcPresentableText = IfcPresentableText; + class IfcPressureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPRESSUREMEASURE"; + } + } + IFC2X32.IfcPressureMeasure = IfcPressureMeasure; + class IfcRadioActivityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCRADIOACTIVITYMEASURE"; + } + } + IFC2X32.IfcRadioActivityMeasure = IfcRadioActivityMeasure; + class IfcRatioMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCRATIOMEASURE"; + } + } + IFC2X32.IfcRatioMeasure = IfcRatioMeasure; + class IfcReal extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCREAL"; + } + } + IFC2X32.IfcReal = IfcReal; + class IfcRotationalFrequencyMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCROTATIONALFREQUENCYMEASURE"; + } + } + IFC2X32.IfcRotationalFrequencyMeasure = IfcRotationalFrequencyMeasure; + class IfcRotationalMassMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCROTATIONALMASSMEASURE"; + } + } + IFC2X32.IfcRotationalMassMeasure = IfcRotationalMassMeasure; + class IfcRotationalStiffnessMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCROTATIONALSTIFFNESSMEASURE"; + } + } + IFC2X32.IfcRotationalStiffnessMeasure = IfcRotationalStiffnessMeasure; + class IfcSecondInMinute extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSECONDINMINUTE"; + } + } + IFC2X32.IfcSecondInMinute = IfcSecondInMinute; + class IfcSectionModulusMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSECTIONMODULUSMEASURE"; + } + } + IFC2X32.IfcSectionModulusMeasure = IfcSectionModulusMeasure; + class IfcSectionalAreaIntegralMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSECTIONALAREAINTEGRALMEASURE"; + } + } + IFC2X32.IfcSectionalAreaIntegralMeasure = IfcSectionalAreaIntegralMeasure; + class IfcShearModulusMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSHEARMODULUSMEASURE"; + } + } + IFC2X32.IfcShearModulusMeasure = IfcShearModulusMeasure; + class IfcSolidAngleMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOLIDANGLEMEASURE"; + } + } + IFC2X32.IfcSolidAngleMeasure = IfcSolidAngleMeasure; + class IfcSoundPowerMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOUNDPOWERMEASURE"; + } + } + IFC2X32.IfcSoundPowerMeasure = IfcSoundPowerMeasure; + class IfcSoundPressureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOUNDPRESSUREMEASURE"; + } + } + IFC2X32.IfcSoundPressureMeasure = IfcSoundPressureMeasure; + class IfcSpecificHeatCapacityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSPECIFICHEATCAPACITYMEASURE"; + } + } + IFC2X32.IfcSpecificHeatCapacityMeasure = IfcSpecificHeatCapacityMeasure; + class IfcSpecularExponent extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSPECULAREXPONENT"; + } + } + IFC2X32.IfcSpecularExponent = IfcSpecularExponent; + class IfcSpecularRoughness extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSPECULARROUGHNESS"; + } + } + IFC2X32.IfcSpecularRoughness = IfcSpecularRoughness; + class IfcTemperatureGradientMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTEMPERATUREGRADIENTMEASURE"; + } + } + IFC2X32.IfcTemperatureGradientMeasure = IfcTemperatureGradientMeasure; + class IfcText { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXT"; + } + } + IFC2X32.IfcText = IfcText; + class IfcTextAlignment { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTALIGNMENT"; + } + } + IFC2X32.IfcTextAlignment = IfcTextAlignment; + class IfcTextDecoration { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTDECORATION"; + } + } + IFC2X32.IfcTextDecoration = IfcTextDecoration; + class IfcTextFontName { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTFONTNAME"; + } + } + IFC2X32.IfcTextFontName = IfcTextFontName; + class IfcTextTransformation { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTTRANSFORMATION"; + } + } + IFC2X32.IfcTextTransformation = IfcTextTransformation; + class IfcThermalAdmittanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALADMITTANCEMEASURE"; + } + } + IFC2X32.IfcThermalAdmittanceMeasure = IfcThermalAdmittanceMeasure; + class IfcThermalConductivityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALCONDUCTIVITYMEASURE"; + } + } + IFC2X32.IfcThermalConductivityMeasure = IfcThermalConductivityMeasure; + class IfcThermalExpansionCoefficientMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALEXPANSIONCOEFFICIENTMEASURE"; + } + } + IFC2X32.IfcThermalExpansionCoefficientMeasure = IfcThermalExpansionCoefficientMeasure; + class IfcThermalResistanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALRESISTANCEMEASURE"; + } + } + IFC2X32.IfcThermalResistanceMeasure = IfcThermalResistanceMeasure; + class IfcThermalTransmittanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALTRANSMITTANCEMEASURE"; + } + } + IFC2X32.IfcThermalTransmittanceMeasure = IfcThermalTransmittanceMeasure; + class IfcThermodynamicTemperatureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMODYNAMICTEMPERATUREMEASURE"; + } + } + IFC2X32.IfcThermodynamicTemperatureMeasure = IfcThermodynamicTemperatureMeasure; + class IfcTimeMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTIMEMEASURE"; + } + } + IFC2X32.IfcTimeMeasure = IfcTimeMeasure; + class IfcTimeStamp extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCTIMESTAMP"; + } + } + IFC2X32.IfcTimeStamp = IfcTimeStamp; + class IfcTorqueMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTORQUEMEASURE"; + } + } + IFC2X32.IfcTorqueMeasure = IfcTorqueMeasure; + class IfcVaporPermeabilityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCVAPORPERMEABILITYMEASURE"; + } + } + IFC2X32.IfcVaporPermeabilityMeasure = IfcVaporPermeabilityMeasure; + class IfcVolumeMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCVOLUMEMEASURE"; + } + } + IFC2X32.IfcVolumeMeasure = IfcVolumeMeasure; + class IfcVolumetricFlowRateMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCVOLUMETRICFLOWRATEMEASURE"; + } + } + IFC2X32.IfcVolumetricFlowRateMeasure = IfcVolumetricFlowRateMeasure; + class IfcWarpingConstantMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCWARPINGCONSTANTMEASURE"; + } + } + IFC2X32.IfcWarpingConstantMeasure = IfcWarpingConstantMeasure; + class IfcWarpingMomentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCWARPINGMOMENTMEASURE"; + } + } + IFC2X32.IfcWarpingMomentMeasure = IfcWarpingMomentMeasure; + class IfcYearNumber extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCYEARNUMBER"; + } + } + IFC2X32.IfcYearNumber = IfcYearNumber; + const _IfcActionSourceTypeEnum = class _IfcActionSourceTypeEnum { + }; + _IfcActionSourceTypeEnum.DEAD_LOAD_G = { type: 3, value: "DEAD_LOAD_G" }; + _IfcActionSourceTypeEnum.COMPLETION_G1 = { type: 3, value: "COMPLETION_G1" }; + _IfcActionSourceTypeEnum.LIVE_LOAD_Q = { type: 3, value: "LIVE_LOAD_Q" }; + _IfcActionSourceTypeEnum.SNOW_S = { type: 3, value: "SNOW_S" }; + _IfcActionSourceTypeEnum.WIND_W = { type: 3, value: "WIND_W" }; + _IfcActionSourceTypeEnum.PRESTRESSING_P = { type: 3, value: "PRESTRESSING_P" }; + _IfcActionSourceTypeEnum.SETTLEMENT_U = { type: 3, value: "SETTLEMENT_U" }; + _IfcActionSourceTypeEnum.TEMPERATURE_T = { type: 3, value: "TEMPERATURE_T" }; + _IfcActionSourceTypeEnum.EARTHQUAKE_E = { type: 3, value: "EARTHQUAKE_E" }; + _IfcActionSourceTypeEnum.FIRE = { type: 3, value: "FIRE" }; + _IfcActionSourceTypeEnum.IMPULSE = { type: 3, value: "IMPULSE" }; + _IfcActionSourceTypeEnum.IMPACT = { type: 3, value: "IMPACT" }; + _IfcActionSourceTypeEnum.TRANSPORT = { type: 3, value: "TRANSPORT" }; + _IfcActionSourceTypeEnum.ERECTION = { type: 3, value: "ERECTION" }; + _IfcActionSourceTypeEnum.PROPPING = { type: 3, value: "PROPPING" }; + _IfcActionSourceTypeEnum.SYSTEM_IMPERFECTION = { type: 3, value: "SYSTEM_IMPERFECTION" }; + _IfcActionSourceTypeEnum.SHRINKAGE = { type: 3, value: "SHRINKAGE" }; + _IfcActionSourceTypeEnum.CREEP = { type: 3, value: "CREEP" }; + _IfcActionSourceTypeEnum.LACK_OF_FIT = { type: 3, value: "LACK_OF_FIT" }; + _IfcActionSourceTypeEnum.BUOYANCY = { type: 3, value: "BUOYANCY" }; + _IfcActionSourceTypeEnum.ICE = { type: 3, value: "ICE" }; + _IfcActionSourceTypeEnum.CURRENT = { type: 3, value: "CURRENT" }; + _IfcActionSourceTypeEnum.WAVE = { type: 3, value: "WAVE" }; + _IfcActionSourceTypeEnum.RAIN = { type: 3, value: "RAIN" }; + _IfcActionSourceTypeEnum.BRAKES = { type: 3, value: "BRAKES" }; + _IfcActionSourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcActionSourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcActionSourceTypeEnum = _IfcActionSourceTypeEnum; + IFC2X32.IfcActionSourceTypeEnum = IfcActionSourceTypeEnum; + const _IfcActionTypeEnum = class _IfcActionTypeEnum { + }; + _IfcActionTypeEnum.PERMANENT_G = { type: 3, value: "PERMANENT_G" }; + _IfcActionTypeEnum.VARIABLE_Q = { type: 3, value: "VARIABLE_Q" }; + _IfcActionTypeEnum.EXTRAORDINARY_A = { type: 3, value: "EXTRAORDINARY_A" }; + _IfcActionTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcActionTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcActionTypeEnum = _IfcActionTypeEnum; + IFC2X32.IfcActionTypeEnum = IfcActionTypeEnum; + const _IfcActuatorTypeEnum = class _IfcActuatorTypeEnum { + }; + _IfcActuatorTypeEnum.ELECTRICACTUATOR = { type: 3, value: "ELECTRICACTUATOR" }; + _IfcActuatorTypeEnum.HANDOPERATEDACTUATOR = { type: 3, value: "HANDOPERATEDACTUATOR" }; + _IfcActuatorTypeEnum.HYDRAULICACTUATOR = { type: 3, value: "HYDRAULICACTUATOR" }; + _IfcActuatorTypeEnum.PNEUMATICACTUATOR = { type: 3, value: "PNEUMATICACTUATOR" }; + _IfcActuatorTypeEnum.THERMOSTATICACTUATOR = { type: 3, value: "THERMOSTATICACTUATOR" }; + _IfcActuatorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcActuatorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcActuatorTypeEnum = _IfcActuatorTypeEnum; + IFC2X32.IfcActuatorTypeEnum = IfcActuatorTypeEnum; + const _IfcAddressTypeEnum = class _IfcAddressTypeEnum { + }; + _IfcAddressTypeEnum.OFFICE = { type: 3, value: "OFFICE" }; + _IfcAddressTypeEnum.SITE = { type: 3, value: "SITE" }; + _IfcAddressTypeEnum.HOME = { type: 3, value: "HOME" }; + _IfcAddressTypeEnum.DISTRIBUTIONPOINT = { type: 3, value: "DISTRIBUTIONPOINT" }; + _IfcAddressTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcAddressTypeEnum = _IfcAddressTypeEnum; + IFC2X32.IfcAddressTypeEnum = IfcAddressTypeEnum; + const _IfcAheadOrBehind = class _IfcAheadOrBehind { + }; + _IfcAheadOrBehind.AHEAD = { type: 3, value: "AHEAD" }; + _IfcAheadOrBehind.BEHIND = { type: 3, value: "BEHIND" }; + let IfcAheadOrBehind = _IfcAheadOrBehind; + IFC2X32.IfcAheadOrBehind = IfcAheadOrBehind; + const _IfcAirTerminalBoxTypeEnum = class _IfcAirTerminalBoxTypeEnum { + }; + _IfcAirTerminalBoxTypeEnum.CONSTANTFLOW = { type: 3, value: "CONSTANTFLOW" }; + _IfcAirTerminalBoxTypeEnum.VARIABLEFLOWPRESSUREDEPENDANT = { type: 3, value: "VARIABLEFLOWPRESSUREDEPENDANT" }; + _IfcAirTerminalBoxTypeEnum.VARIABLEFLOWPRESSUREINDEPENDANT = { type: 3, value: "VARIABLEFLOWPRESSUREINDEPENDANT" }; + _IfcAirTerminalBoxTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAirTerminalBoxTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAirTerminalBoxTypeEnum = _IfcAirTerminalBoxTypeEnum; + IFC2X32.IfcAirTerminalBoxTypeEnum = IfcAirTerminalBoxTypeEnum; + const _IfcAirTerminalTypeEnum = class _IfcAirTerminalTypeEnum { + }; + _IfcAirTerminalTypeEnum.GRILLE = { type: 3, value: "GRILLE" }; + _IfcAirTerminalTypeEnum.REGISTER = { type: 3, value: "REGISTER" }; + _IfcAirTerminalTypeEnum.DIFFUSER = { type: 3, value: "DIFFUSER" }; + _IfcAirTerminalTypeEnum.EYEBALL = { type: 3, value: "EYEBALL" }; + _IfcAirTerminalTypeEnum.IRIS = { type: 3, value: "IRIS" }; + _IfcAirTerminalTypeEnum.LINEARGRILLE = { type: 3, value: "LINEARGRILLE" }; + _IfcAirTerminalTypeEnum.LINEARDIFFUSER = { type: 3, value: "LINEARDIFFUSER" }; + _IfcAirTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAirTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAirTerminalTypeEnum = _IfcAirTerminalTypeEnum; + IFC2X32.IfcAirTerminalTypeEnum = IfcAirTerminalTypeEnum; + const _IfcAirToAirHeatRecoveryTypeEnum = class _IfcAirToAirHeatRecoveryTypeEnum { + }; + _IfcAirToAirHeatRecoveryTypeEnum.FIXEDPLATECOUNTERFLOWEXCHANGER = { type: 3, value: "FIXEDPLATECOUNTERFLOWEXCHANGER" }; + _IfcAirToAirHeatRecoveryTypeEnum.FIXEDPLATECROSSFLOWEXCHANGER = { type: 3, value: "FIXEDPLATECROSSFLOWEXCHANGER" }; + _IfcAirToAirHeatRecoveryTypeEnum.FIXEDPLATEPARALLELFLOWEXCHANGER = { type: 3, value: "FIXEDPLATEPARALLELFLOWEXCHANGER" }; + _IfcAirToAirHeatRecoveryTypeEnum.ROTARYWHEEL = { type: 3, value: "ROTARYWHEEL" }; + _IfcAirToAirHeatRecoveryTypeEnum.RUNAROUNDCOILLOOP = { type: 3, value: "RUNAROUNDCOILLOOP" }; + _IfcAirToAirHeatRecoveryTypeEnum.HEATPIPE = { type: 3, value: "HEATPIPE" }; + _IfcAirToAirHeatRecoveryTypeEnum.TWINTOWERENTHALPYRECOVERYLOOPS = { type: 3, value: "TWINTOWERENTHALPYRECOVERYLOOPS" }; + _IfcAirToAirHeatRecoveryTypeEnum.THERMOSIPHONSEALEDTUBEHEATEXCHANGERS = { type: 3, value: "THERMOSIPHONSEALEDTUBEHEATEXCHANGERS" }; + _IfcAirToAirHeatRecoveryTypeEnum.THERMOSIPHONCOILTYPEHEATEXCHANGERS = { type: 3, value: "THERMOSIPHONCOILTYPEHEATEXCHANGERS" }; + _IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAirToAirHeatRecoveryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAirToAirHeatRecoveryTypeEnum = _IfcAirToAirHeatRecoveryTypeEnum; + IFC2X32.IfcAirToAirHeatRecoveryTypeEnum = IfcAirToAirHeatRecoveryTypeEnum; + const _IfcAlarmTypeEnum = class _IfcAlarmTypeEnum { + }; + _IfcAlarmTypeEnum.BELL = { type: 3, value: "BELL" }; + _IfcAlarmTypeEnum.BREAKGLASSBUTTON = { type: 3, value: "BREAKGLASSBUTTON" }; + _IfcAlarmTypeEnum.LIGHT = { type: 3, value: "LIGHT" }; + _IfcAlarmTypeEnum.MANUALPULLBOX = { type: 3, value: "MANUALPULLBOX" }; + _IfcAlarmTypeEnum.SIREN = { type: 3, value: "SIREN" }; + _IfcAlarmTypeEnum.WHISTLE = { type: 3, value: "WHISTLE" }; + _IfcAlarmTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAlarmTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAlarmTypeEnum = _IfcAlarmTypeEnum; + IFC2X32.IfcAlarmTypeEnum = IfcAlarmTypeEnum; + const _IfcAnalysisModelTypeEnum = class _IfcAnalysisModelTypeEnum { + }; + _IfcAnalysisModelTypeEnum.IN_PLANE_LOADING_2D = { type: 3, value: "IN_PLANE_LOADING_2D" }; + _IfcAnalysisModelTypeEnum.OUT_PLANE_LOADING_2D = { type: 3, value: "OUT_PLANE_LOADING_2D" }; + _IfcAnalysisModelTypeEnum.LOADING_3D = { type: 3, value: "LOADING_3D" }; + _IfcAnalysisModelTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAnalysisModelTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAnalysisModelTypeEnum = _IfcAnalysisModelTypeEnum; + IFC2X32.IfcAnalysisModelTypeEnum = IfcAnalysisModelTypeEnum; + const _IfcAnalysisTheoryTypeEnum = class _IfcAnalysisTheoryTypeEnum { + }; + _IfcAnalysisTheoryTypeEnum.FIRST_ORDER_THEORY = { type: 3, value: "FIRST_ORDER_THEORY" }; + _IfcAnalysisTheoryTypeEnum.SECOND_ORDER_THEORY = { type: 3, value: "SECOND_ORDER_THEORY" }; + _IfcAnalysisTheoryTypeEnum.THIRD_ORDER_THEORY = { type: 3, value: "THIRD_ORDER_THEORY" }; + _IfcAnalysisTheoryTypeEnum.FULL_NONLINEAR_THEORY = { type: 3, value: "FULL_NONLINEAR_THEORY" }; + _IfcAnalysisTheoryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAnalysisTheoryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAnalysisTheoryTypeEnum = _IfcAnalysisTheoryTypeEnum; + IFC2X32.IfcAnalysisTheoryTypeEnum = IfcAnalysisTheoryTypeEnum; + const _IfcArithmeticOperatorEnum = class _IfcArithmeticOperatorEnum { + }; + _IfcArithmeticOperatorEnum.ADD = { type: 3, value: "ADD" }; + _IfcArithmeticOperatorEnum.DIVIDE = { type: 3, value: "DIVIDE" }; + _IfcArithmeticOperatorEnum.MULTIPLY = { type: 3, value: "MULTIPLY" }; + _IfcArithmeticOperatorEnum.SUBTRACT = { type: 3, value: "SUBTRACT" }; + let IfcArithmeticOperatorEnum = _IfcArithmeticOperatorEnum; + IFC2X32.IfcArithmeticOperatorEnum = IfcArithmeticOperatorEnum; + const _IfcAssemblyPlaceEnum = class _IfcAssemblyPlaceEnum { + }; + _IfcAssemblyPlaceEnum.SITE = { type: 3, value: "SITE" }; + _IfcAssemblyPlaceEnum.FACTORY = { type: 3, value: "FACTORY" }; + _IfcAssemblyPlaceEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAssemblyPlaceEnum = _IfcAssemblyPlaceEnum; + IFC2X32.IfcAssemblyPlaceEnum = IfcAssemblyPlaceEnum; + const _IfcBSplineCurveForm = class _IfcBSplineCurveForm { + }; + _IfcBSplineCurveForm.POLYLINE_FORM = { type: 3, value: "POLYLINE_FORM" }; + _IfcBSplineCurveForm.CIRCULAR_ARC = { type: 3, value: "CIRCULAR_ARC" }; + _IfcBSplineCurveForm.ELLIPTIC_ARC = { type: 3, value: "ELLIPTIC_ARC" }; + _IfcBSplineCurveForm.PARABOLIC_ARC = { type: 3, value: "PARABOLIC_ARC" }; + _IfcBSplineCurveForm.HYPERBOLIC_ARC = { type: 3, value: "HYPERBOLIC_ARC" }; + _IfcBSplineCurveForm.UNSPECIFIED = { type: 3, value: "UNSPECIFIED" }; + let IfcBSplineCurveForm = _IfcBSplineCurveForm; + IFC2X32.IfcBSplineCurveForm = IfcBSplineCurveForm; + const _IfcBeamTypeEnum = class _IfcBeamTypeEnum { + }; + _IfcBeamTypeEnum.BEAM = { type: 3, value: "BEAM" }; + _IfcBeamTypeEnum.JOIST = { type: 3, value: "JOIST" }; + _IfcBeamTypeEnum.LINTEL = { type: 3, value: "LINTEL" }; + _IfcBeamTypeEnum.T_BEAM = { type: 3, value: "T_BEAM" }; + _IfcBeamTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBeamTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBeamTypeEnum = _IfcBeamTypeEnum; + IFC2X32.IfcBeamTypeEnum = IfcBeamTypeEnum; + const _IfcBenchmarkEnum = class _IfcBenchmarkEnum { + }; + _IfcBenchmarkEnum.GREATERTHAN = { type: 3, value: "GREATERTHAN" }; + _IfcBenchmarkEnum.GREATERTHANOREQUALTO = { type: 3, value: "GREATERTHANOREQUALTO" }; + _IfcBenchmarkEnum.LESSTHAN = { type: 3, value: "LESSTHAN" }; + _IfcBenchmarkEnum.LESSTHANOREQUALTO = { type: 3, value: "LESSTHANOREQUALTO" }; + _IfcBenchmarkEnum.EQUALTO = { type: 3, value: "EQUALTO" }; + _IfcBenchmarkEnum.NOTEQUALTO = { type: 3, value: "NOTEQUALTO" }; + let IfcBenchmarkEnum = _IfcBenchmarkEnum; + IFC2X32.IfcBenchmarkEnum = IfcBenchmarkEnum; + const _IfcBoilerTypeEnum = class _IfcBoilerTypeEnum { + }; + _IfcBoilerTypeEnum.WATER = { type: 3, value: "WATER" }; + _IfcBoilerTypeEnum.STEAM = { type: 3, value: "STEAM" }; + _IfcBoilerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBoilerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBoilerTypeEnum = _IfcBoilerTypeEnum; + IFC2X32.IfcBoilerTypeEnum = IfcBoilerTypeEnum; + const _IfcBooleanOperator = class _IfcBooleanOperator { + }; + _IfcBooleanOperator.UNION = { type: 3, value: "UNION" }; + _IfcBooleanOperator.INTERSECTION = { type: 3, value: "INTERSECTION" }; + _IfcBooleanOperator.DIFFERENCE = { type: 3, value: "DIFFERENCE" }; + let IfcBooleanOperator = _IfcBooleanOperator; + IFC2X32.IfcBooleanOperator = IfcBooleanOperator; + const _IfcBuildingElementProxyTypeEnum = class _IfcBuildingElementProxyTypeEnum { + }; + _IfcBuildingElementProxyTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBuildingElementProxyTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBuildingElementProxyTypeEnum = _IfcBuildingElementProxyTypeEnum; + IFC2X32.IfcBuildingElementProxyTypeEnum = IfcBuildingElementProxyTypeEnum; + const _IfcCableCarrierFittingTypeEnum = class _IfcCableCarrierFittingTypeEnum { + }; + _IfcCableCarrierFittingTypeEnum.BEND = { type: 3, value: "BEND" }; + _IfcCableCarrierFittingTypeEnum.CROSS = { type: 3, value: "CROSS" }; + _IfcCableCarrierFittingTypeEnum.REDUCER = { type: 3, value: "REDUCER" }; + _IfcCableCarrierFittingTypeEnum.TEE = { type: 3, value: "TEE" }; + _IfcCableCarrierFittingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCableCarrierFittingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCableCarrierFittingTypeEnum = _IfcCableCarrierFittingTypeEnum; + IFC2X32.IfcCableCarrierFittingTypeEnum = IfcCableCarrierFittingTypeEnum; + const _IfcCableCarrierSegmentTypeEnum = class _IfcCableCarrierSegmentTypeEnum { + }; + _IfcCableCarrierSegmentTypeEnum.CABLELADDERSEGMENT = { type: 3, value: "CABLELADDERSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.CABLETRAYSEGMENT = { type: 3, value: "CABLETRAYSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.CABLETRUNKINGSEGMENT = { type: 3, value: "CABLETRUNKINGSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.CONDUITSEGMENT = { type: 3, value: "CONDUITSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCableCarrierSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCableCarrierSegmentTypeEnum = _IfcCableCarrierSegmentTypeEnum; + IFC2X32.IfcCableCarrierSegmentTypeEnum = IfcCableCarrierSegmentTypeEnum; + const _IfcCableSegmentTypeEnum = class _IfcCableSegmentTypeEnum { + }; + _IfcCableSegmentTypeEnum.CABLESEGMENT = { type: 3, value: "CABLESEGMENT" }; + _IfcCableSegmentTypeEnum.CONDUCTORSEGMENT = { type: 3, value: "CONDUCTORSEGMENT" }; + _IfcCableSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCableSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCableSegmentTypeEnum = _IfcCableSegmentTypeEnum; + IFC2X32.IfcCableSegmentTypeEnum = IfcCableSegmentTypeEnum; + const _IfcChangeActionEnum = class _IfcChangeActionEnum { + }; + _IfcChangeActionEnum.NOCHANGE = { type: 3, value: "NOCHANGE" }; + _IfcChangeActionEnum.MODIFIED = { type: 3, value: "MODIFIED" }; + _IfcChangeActionEnum.ADDED = { type: 3, value: "ADDED" }; + _IfcChangeActionEnum.DELETED = { type: 3, value: "DELETED" }; + _IfcChangeActionEnum.MODIFIEDADDED = { type: 3, value: "MODIFIEDADDED" }; + _IfcChangeActionEnum.MODIFIEDDELETED = { type: 3, value: "MODIFIEDDELETED" }; + let IfcChangeActionEnum = _IfcChangeActionEnum; + IFC2X32.IfcChangeActionEnum = IfcChangeActionEnum; + const _IfcChillerTypeEnum = class _IfcChillerTypeEnum { + }; + _IfcChillerTypeEnum.AIRCOOLED = { type: 3, value: "AIRCOOLED" }; + _IfcChillerTypeEnum.WATERCOOLED = { type: 3, value: "WATERCOOLED" }; + _IfcChillerTypeEnum.HEATRECOVERY = { type: 3, value: "HEATRECOVERY" }; + _IfcChillerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcChillerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcChillerTypeEnum = _IfcChillerTypeEnum; + IFC2X32.IfcChillerTypeEnum = IfcChillerTypeEnum; + const _IfcCoilTypeEnum = class _IfcCoilTypeEnum { + }; + _IfcCoilTypeEnum.DXCOOLINGCOIL = { type: 3, value: "DXCOOLINGCOIL" }; + _IfcCoilTypeEnum.WATERCOOLINGCOIL = { type: 3, value: "WATERCOOLINGCOIL" }; + _IfcCoilTypeEnum.STEAMHEATINGCOIL = { type: 3, value: "STEAMHEATINGCOIL" }; + _IfcCoilTypeEnum.WATERHEATINGCOIL = { type: 3, value: "WATERHEATINGCOIL" }; + _IfcCoilTypeEnum.ELECTRICHEATINGCOIL = { type: 3, value: "ELECTRICHEATINGCOIL" }; + _IfcCoilTypeEnum.GASHEATINGCOIL = { type: 3, value: "GASHEATINGCOIL" }; + _IfcCoilTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCoilTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCoilTypeEnum = _IfcCoilTypeEnum; + IFC2X32.IfcCoilTypeEnum = IfcCoilTypeEnum; + const _IfcColumnTypeEnum = class _IfcColumnTypeEnum { + }; + _IfcColumnTypeEnum.COLUMN = { type: 3, value: "COLUMN" }; + _IfcColumnTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcColumnTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcColumnTypeEnum = _IfcColumnTypeEnum; + IFC2X32.IfcColumnTypeEnum = IfcColumnTypeEnum; + const _IfcCompressorTypeEnum = class _IfcCompressorTypeEnum { + }; + _IfcCompressorTypeEnum.DYNAMIC = { type: 3, value: "DYNAMIC" }; + _IfcCompressorTypeEnum.RECIPROCATING = { type: 3, value: "RECIPROCATING" }; + _IfcCompressorTypeEnum.ROTARY = { type: 3, value: "ROTARY" }; + _IfcCompressorTypeEnum.SCROLL = { type: 3, value: "SCROLL" }; + _IfcCompressorTypeEnum.TROCHOIDAL = { type: 3, value: "TROCHOIDAL" }; + _IfcCompressorTypeEnum.SINGLESTAGE = { type: 3, value: "SINGLESTAGE" }; + _IfcCompressorTypeEnum.BOOSTER = { type: 3, value: "BOOSTER" }; + _IfcCompressorTypeEnum.OPENTYPE = { type: 3, value: "OPENTYPE" }; + _IfcCompressorTypeEnum.HERMETIC = { type: 3, value: "HERMETIC" }; + _IfcCompressorTypeEnum.SEMIHERMETIC = { type: 3, value: "SEMIHERMETIC" }; + _IfcCompressorTypeEnum.WELDEDSHELLHERMETIC = { type: 3, value: "WELDEDSHELLHERMETIC" }; + _IfcCompressorTypeEnum.ROLLINGPISTON = { type: 3, value: "ROLLINGPISTON" }; + _IfcCompressorTypeEnum.ROTARYVANE = { type: 3, value: "ROTARYVANE" }; + _IfcCompressorTypeEnum.SINGLESCREW = { type: 3, value: "SINGLESCREW" }; + _IfcCompressorTypeEnum.TWINSCREW = { type: 3, value: "TWINSCREW" }; + _IfcCompressorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCompressorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCompressorTypeEnum = _IfcCompressorTypeEnum; + IFC2X32.IfcCompressorTypeEnum = IfcCompressorTypeEnum; + const _IfcCondenserTypeEnum = class _IfcCondenserTypeEnum { + }; + _IfcCondenserTypeEnum.WATERCOOLEDSHELLTUBE = { type: 3, value: "WATERCOOLEDSHELLTUBE" }; + _IfcCondenserTypeEnum.WATERCOOLEDSHELLCOIL = { type: 3, value: "WATERCOOLEDSHELLCOIL" }; + _IfcCondenserTypeEnum.WATERCOOLEDTUBEINTUBE = { type: 3, value: "WATERCOOLEDTUBEINTUBE" }; + _IfcCondenserTypeEnum.WATERCOOLEDBRAZEDPLATE = { type: 3, value: "WATERCOOLEDBRAZEDPLATE" }; + _IfcCondenserTypeEnum.AIRCOOLED = { type: 3, value: "AIRCOOLED" }; + _IfcCondenserTypeEnum.EVAPORATIVECOOLED = { type: 3, value: "EVAPORATIVECOOLED" }; + _IfcCondenserTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCondenserTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCondenserTypeEnum = _IfcCondenserTypeEnum; + IFC2X32.IfcCondenserTypeEnum = IfcCondenserTypeEnum; + const _IfcConnectionTypeEnum = class _IfcConnectionTypeEnum { + }; + _IfcConnectionTypeEnum.ATPATH = { type: 3, value: "ATPATH" }; + _IfcConnectionTypeEnum.ATSTART = { type: 3, value: "ATSTART" }; + _IfcConnectionTypeEnum.ATEND = { type: 3, value: "ATEND" }; + _IfcConnectionTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConnectionTypeEnum = _IfcConnectionTypeEnum; + IFC2X32.IfcConnectionTypeEnum = IfcConnectionTypeEnum; + const _IfcConstraintEnum = class _IfcConstraintEnum { + }; + _IfcConstraintEnum.HARD = { type: 3, value: "HARD" }; + _IfcConstraintEnum.SOFT = { type: 3, value: "SOFT" }; + _IfcConstraintEnum.ADVISORY = { type: 3, value: "ADVISORY" }; + _IfcConstraintEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcConstraintEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConstraintEnum = _IfcConstraintEnum; + IFC2X32.IfcConstraintEnum = IfcConstraintEnum; + const _IfcControllerTypeEnum = class _IfcControllerTypeEnum { + }; + _IfcControllerTypeEnum.FLOATING = { type: 3, value: "FLOATING" }; + _IfcControllerTypeEnum.PROPORTIONAL = { type: 3, value: "PROPORTIONAL" }; + _IfcControllerTypeEnum.PROPORTIONALINTEGRAL = { type: 3, value: "PROPORTIONALINTEGRAL" }; + _IfcControllerTypeEnum.PROPORTIONALINTEGRALDERIVATIVE = { type: 3, value: "PROPORTIONALINTEGRALDERIVATIVE" }; + _IfcControllerTypeEnum.TIMEDTWOPOSITION = { type: 3, value: "TIMEDTWOPOSITION" }; + _IfcControllerTypeEnum.TWOPOSITION = { type: 3, value: "TWOPOSITION" }; + _IfcControllerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcControllerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcControllerTypeEnum = _IfcControllerTypeEnum; + IFC2X32.IfcControllerTypeEnum = IfcControllerTypeEnum; + const _IfcCooledBeamTypeEnum = class _IfcCooledBeamTypeEnum { + }; + _IfcCooledBeamTypeEnum.ACTIVE = { type: 3, value: "ACTIVE" }; + _IfcCooledBeamTypeEnum.PASSIVE = { type: 3, value: "PASSIVE" }; + _IfcCooledBeamTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCooledBeamTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCooledBeamTypeEnum = _IfcCooledBeamTypeEnum; + IFC2X32.IfcCooledBeamTypeEnum = IfcCooledBeamTypeEnum; + const _IfcCoolingTowerTypeEnum = class _IfcCoolingTowerTypeEnum { + }; + _IfcCoolingTowerTypeEnum.NATURALDRAFT = { type: 3, value: "NATURALDRAFT" }; + _IfcCoolingTowerTypeEnum.MECHANICALINDUCEDDRAFT = { type: 3, value: "MECHANICALINDUCEDDRAFT" }; + _IfcCoolingTowerTypeEnum.MECHANICALFORCEDDRAFT = { type: 3, value: "MECHANICALFORCEDDRAFT" }; + _IfcCoolingTowerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCoolingTowerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCoolingTowerTypeEnum = _IfcCoolingTowerTypeEnum; + IFC2X32.IfcCoolingTowerTypeEnum = IfcCoolingTowerTypeEnum; + const _IfcCostScheduleTypeEnum = class _IfcCostScheduleTypeEnum { + }; + _IfcCostScheduleTypeEnum.BUDGET = { type: 3, value: "BUDGET" }; + _IfcCostScheduleTypeEnum.COSTPLAN = { type: 3, value: "COSTPLAN" }; + _IfcCostScheduleTypeEnum.ESTIMATE = { type: 3, value: "ESTIMATE" }; + _IfcCostScheduleTypeEnum.TENDER = { type: 3, value: "TENDER" }; + _IfcCostScheduleTypeEnum.PRICEDBILLOFQUANTITIES = { type: 3, value: "PRICEDBILLOFQUANTITIES" }; + _IfcCostScheduleTypeEnum.UNPRICEDBILLOFQUANTITIES = { type: 3, value: "UNPRICEDBILLOFQUANTITIES" }; + _IfcCostScheduleTypeEnum.SCHEDULEOFRATES = { type: 3, value: "SCHEDULEOFRATES" }; + _IfcCostScheduleTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCostScheduleTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCostScheduleTypeEnum = _IfcCostScheduleTypeEnum; + IFC2X32.IfcCostScheduleTypeEnum = IfcCostScheduleTypeEnum; + const _IfcCoveringTypeEnum = class _IfcCoveringTypeEnum { + }; + _IfcCoveringTypeEnum.CEILING = { type: 3, value: "CEILING" }; + _IfcCoveringTypeEnum.FLOORING = { type: 3, value: "FLOORING" }; + _IfcCoveringTypeEnum.CLADDING = { type: 3, value: "CLADDING" }; + _IfcCoveringTypeEnum.ROOFING = { type: 3, value: "ROOFING" }; + _IfcCoveringTypeEnum.INSULATION = { type: 3, value: "INSULATION" }; + _IfcCoveringTypeEnum.MEMBRANE = { type: 3, value: "MEMBRANE" }; + _IfcCoveringTypeEnum.SLEEVING = { type: 3, value: "SLEEVING" }; + _IfcCoveringTypeEnum.WRAPPING = { type: 3, value: "WRAPPING" }; + _IfcCoveringTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCoveringTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCoveringTypeEnum = _IfcCoveringTypeEnum; + IFC2X32.IfcCoveringTypeEnum = IfcCoveringTypeEnum; + const _IfcCurrencyEnum = class _IfcCurrencyEnum { + }; + _IfcCurrencyEnum.AED = { type: 3, value: "AED" }; + _IfcCurrencyEnum.AES = { type: 3, value: "AES" }; + _IfcCurrencyEnum.ATS = { type: 3, value: "ATS" }; + _IfcCurrencyEnum.AUD = { type: 3, value: "AUD" }; + _IfcCurrencyEnum.BBD = { type: 3, value: "BBD" }; + _IfcCurrencyEnum.BEG = { type: 3, value: "BEG" }; + _IfcCurrencyEnum.BGL = { type: 3, value: "BGL" }; + _IfcCurrencyEnum.BHD = { type: 3, value: "BHD" }; + _IfcCurrencyEnum.BMD = { type: 3, value: "BMD" }; + _IfcCurrencyEnum.BND = { type: 3, value: "BND" }; + _IfcCurrencyEnum.BRL = { type: 3, value: "BRL" }; + _IfcCurrencyEnum.BSD = { type: 3, value: "BSD" }; + _IfcCurrencyEnum.BWP = { type: 3, value: "BWP" }; + _IfcCurrencyEnum.BZD = { type: 3, value: "BZD" }; + _IfcCurrencyEnum.CAD = { type: 3, value: "CAD" }; + _IfcCurrencyEnum.CBD = { type: 3, value: "CBD" }; + _IfcCurrencyEnum.CHF = { type: 3, value: "CHF" }; + _IfcCurrencyEnum.CLP = { type: 3, value: "CLP" }; + _IfcCurrencyEnum.CNY = { type: 3, value: "CNY" }; + _IfcCurrencyEnum.CYS = { type: 3, value: "CYS" }; + _IfcCurrencyEnum.CZK = { type: 3, value: "CZK" }; + _IfcCurrencyEnum.DDP = { type: 3, value: "DDP" }; + _IfcCurrencyEnum.DEM = { type: 3, value: "DEM" }; + _IfcCurrencyEnum.DKK = { type: 3, value: "DKK" }; + _IfcCurrencyEnum.EGL = { type: 3, value: "EGL" }; + _IfcCurrencyEnum.EST = { type: 3, value: "EST" }; + _IfcCurrencyEnum.EUR = { type: 3, value: "EUR" }; + _IfcCurrencyEnum.FAK = { type: 3, value: "FAK" }; + _IfcCurrencyEnum.FIM = { type: 3, value: "FIM" }; + _IfcCurrencyEnum.FJD = { type: 3, value: "FJD" }; + _IfcCurrencyEnum.FKP = { type: 3, value: "FKP" }; + _IfcCurrencyEnum.FRF = { type: 3, value: "FRF" }; + _IfcCurrencyEnum.GBP = { type: 3, value: "GBP" }; + _IfcCurrencyEnum.GIP = { type: 3, value: "GIP" }; + _IfcCurrencyEnum.GMD = { type: 3, value: "GMD" }; + _IfcCurrencyEnum.GRX = { type: 3, value: "GRX" }; + _IfcCurrencyEnum.HKD = { type: 3, value: "HKD" }; + _IfcCurrencyEnum.HUF = { type: 3, value: "HUF" }; + _IfcCurrencyEnum.ICK = { type: 3, value: "ICK" }; + _IfcCurrencyEnum.IDR = { type: 3, value: "IDR" }; + _IfcCurrencyEnum.ILS = { type: 3, value: "ILS" }; + _IfcCurrencyEnum.INR = { type: 3, value: "INR" }; + _IfcCurrencyEnum.IRP = { type: 3, value: "IRP" }; + _IfcCurrencyEnum.ITL = { type: 3, value: "ITL" }; + _IfcCurrencyEnum.JMD = { type: 3, value: "JMD" }; + _IfcCurrencyEnum.JOD = { type: 3, value: "JOD" }; + _IfcCurrencyEnum.JPY = { type: 3, value: "JPY" }; + _IfcCurrencyEnum.KES = { type: 3, value: "KES" }; + _IfcCurrencyEnum.KRW = { type: 3, value: "KRW" }; + _IfcCurrencyEnum.KWD = { type: 3, value: "KWD" }; + _IfcCurrencyEnum.KYD = { type: 3, value: "KYD" }; + _IfcCurrencyEnum.LKR = { type: 3, value: "LKR" }; + _IfcCurrencyEnum.LUF = { type: 3, value: "LUF" }; + _IfcCurrencyEnum.MTL = { type: 3, value: "MTL" }; + _IfcCurrencyEnum.MUR = { type: 3, value: "MUR" }; + _IfcCurrencyEnum.MXN = { type: 3, value: "MXN" }; + _IfcCurrencyEnum.MYR = { type: 3, value: "MYR" }; + _IfcCurrencyEnum.NLG = { type: 3, value: "NLG" }; + _IfcCurrencyEnum.NZD = { type: 3, value: "NZD" }; + _IfcCurrencyEnum.OMR = { type: 3, value: "OMR" }; + _IfcCurrencyEnum.PGK = { type: 3, value: "PGK" }; + _IfcCurrencyEnum.PHP = { type: 3, value: "PHP" }; + _IfcCurrencyEnum.PKR = { type: 3, value: "PKR" }; + _IfcCurrencyEnum.PLN = { type: 3, value: "PLN" }; + _IfcCurrencyEnum.PTN = { type: 3, value: "PTN" }; + _IfcCurrencyEnum.QAR = { type: 3, value: "QAR" }; + _IfcCurrencyEnum.RUR = { type: 3, value: "RUR" }; + _IfcCurrencyEnum.SAR = { type: 3, value: "SAR" }; + _IfcCurrencyEnum.SCR = { type: 3, value: "SCR" }; + _IfcCurrencyEnum.SEK = { type: 3, value: "SEK" }; + _IfcCurrencyEnum.SGD = { type: 3, value: "SGD" }; + _IfcCurrencyEnum.SKP = { type: 3, value: "SKP" }; + _IfcCurrencyEnum.THB = { type: 3, value: "THB" }; + _IfcCurrencyEnum.TRL = { type: 3, value: "TRL" }; + _IfcCurrencyEnum.TTD = { type: 3, value: "TTD" }; + _IfcCurrencyEnum.TWD = { type: 3, value: "TWD" }; + _IfcCurrencyEnum.USD = { type: 3, value: "USD" }; + _IfcCurrencyEnum.VEB = { type: 3, value: "VEB" }; + _IfcCurrencyEnum.VND = { type: 3, value: "VND" }; + _IfcCurrencyEnum.XEU = { type: 3, value: "XEU" }; + _IfcCurrencyEnum.ZAR = { type: 3, value: "ZAR" }; + _IfcCurrencyEnum.ZWD = { type: 3, value: "ZWD" }; + _IfcCurrencyEnum.NOK = { type: 3, value: "NOK" }; + let IfcCurrencyEnum = _IfcCurrencyEnum; + IFC2X32.IfcCurrencyEnum = IfcCurrencyEnum; + const _IfcCurtainWallTypeEnum = class _IfcCurtainWallTypeEnum { + }; + _IfcCurtainWallTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCurtainWallTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCurtainWallTypeEnum = _IfcCurtainWallTypeEnum; + IFC2X32.IfcCurtainWallTypeEnum = IfcCurtainWallTypeEnum; + const _IfcDamperTypeEnum = class _IfcDamperTypeEnum { + }; + _IfcDamperTypeEnum.CONTROLDAMPER = { type: 3, value: "CONTROLDAMPER" }; + _IfcDamperTypeEnum.FIREDAMPER = { type: 3, value: "FIREDAMPER" }; + _IfcDamperTypeEnum.SMOKEDAMPER = { type: 3, value: "SMOKEDAMPER" }; + _IfcDamperTypeEnum.FIRESMOKEDAMPER = { type: 3, value: "FIRESMOKEDAMPER" }; + _IfcDamperTypeEnum.BACKDRAFTDAMPER = { type: 3, value: "BACKDRAFTDAMPER" }; + _IfcDamperTypeEnum.RELIEFDAMPER = { type: 3, value: "RELIEFDAMPER" }; + _IfcDamperTypeEnum.BLASTDAMPER = { type: 3, value: "BLASTDAMPER" }; + _IfcDamperTypeEnum.GRAVITYDAMPER = { type: 3, value: "GRAVITYDAMPER" }; + _IfcDamperTypeEnum.GRAVITYRELIEFDAMPER = { type: 3, value: "GRAVITYRELIEFDAMPER" }; + _IfcDamperTypeEnum.BALANCINGDAMPER = { type: 3, value: "BALANCINGDAMPER" }; + _IfcDamperTypeEnum.FUMEHOODEXHAUST = { type: 3, value: "FUMEHOODEXHAUST" }; + _IfcDamperTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDamperTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDamperTypeEnum = _IfcDamperTypeEnum; + IFC2X32.IfcDamperTypeEnum = IfcDamperTypeEnum; + const _IfcDataOriginEnum = class _IfcDataOriginEnum { + }; + _IfcDataOriginEnum.MEASURED = { type: 3, value: "MEASURED" }; + _IfcDataOriginEnum.PREDICTED = { type: 3, value: "PREDICTED" }; + _IfcDataOriginEnum.SIMULATED = { type: 3, value: "SIMULATED" }; + _IfcDataOriginEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDataOriginEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDataOriginEnum = _IfcDataOriginEnum; + IFC2X32.IfcDataOriginEnum = IfcDataOriginEnum; + const _IfcDerivedUnitEnum = class _IfcDerivedUnitEnum { + }; + _IfcDerivedUnitEnum.ANGULARVELOCITYUNIT = { type: 3, value: "ANGULARVELOCITYUNIT" }; + _IfcDerivedUnitEnum.COMPOUNDPLANEANGLEUNIT = { type: 3, value: "COMPOUNDPLANEANGLEUNIT" }; + _IfcDerivedUnitEnum.DYNAMICVISCOSITYUNIT = { type: 3, value: "DYNAMICVISCOSITYUNIT" }; + _IfcDerivedUnitEnum.HEATFLUXDENSITYUNIT = { type: 3, value: "HEATFLUXDENSITYUNIT" }; + _IfcDerivedUnitEnum.INTEGERCOUNTRATEUNIT = { type: 3, value: "INTEGERCOUNTRATEUNIT" }; + _IfcDerivedUnitEnum.ISOTHERMALMOISTURECAPACITYUNIT = { type: 3, value: "ISOTHERMALMOISTURECAPACITYUNIT" }; + _IfcDerivedUnitEnum.KINEMATICVISCOSITYUNIT = { type: 3, value: "KINEMATICVISCOSITYUNIT" }; + _IfcDerivedUnitEnum.LINEARVELOCITYUNIT = { type: 3, value: "LINEARVELOCITYUNIT" }; + _IfcDerivedUnitEnum.MASSDENSITYUNIT = { type: 3, value: "MASSDENSITYUNIT" }; + _IfcDerivedUnitEnum.MASSFLOWRATEUNIT = { type: 3, value: "MASSFLOWRATEUNIT" }; + _IfcDerivedUnitEnum.MOISTUREDIFFUSIVITYUNIT = { type: 3, value: "MOISTUREDIFFUSIVITYUNIT" }; + _IfcDerivedUnitEnum.MOLECULARWEIGHTUNIT = { type: 3, value: "MOLECULARWEIGHTUNIT" }; + _IfcDerivedUnitEnum.SPECIFICHEATCAPACITYUNIT = { type: 3, value: "SPECIFICHEATCAPACITYUNIT" }; + _IfcDerivedUnitEnum.THERMALADMITTANCEUNIT = { type: 3, value: "THERMALADMITTANCEUNIT" }; + _IfcDerivedUnitEnum.THERMALCONDUCTANCEUNIT = { type: 3, value: "THERMALCONDUCTANCEUNIT" }; + _IfcDerivedUnitEnum.THERMALRESISTANCEUNIT = { type: 3, value: "THERMALRESISTANCEUNIT" }; + _IfcDerivedUnitEnum.THERMALTRANSMITTANCEUNIT = { type: 3, value: "THERMALTRANSMITTANCEUNIT" }; + _IfcDerivedUnitEnum.VAPORPERMEABILITYUNIT = { type: 3, value: "VAPORPERMEABILITYUNIT" }; + _IfcDerivedUnitEnum.VOLUMETRICFLOWRATEUNIT = { type: 3, value: "VOLUMETRICFLOWRATEUNIT" }; + _IfcDerivedUnitEnum.ROTATIONALFREQUENCYUNIT = { type: 3, value: "ROTATIONALFREQUENCYUNIT" }; + _IfcDerivedUnitEnum.TORQUEUNIT = { type: 3, value: "TORQUEUNIT" }; + _IfcDerivedUnitEnum.MOMENTOFINERTIAUNIT = { type: 3, value: "MOMENTOFINERTIAUNIT" }; + _IfcDerivedUnitEnum.LINEARMOMENTUNIT = { type: 3, value: "LINEARMOMENTUNIT" }; + _IfcDerivedUnitEnum.LINEARFORCEUNIT = { type: 3, value: "LINEARFORCEUNIT" }; + _IfcDerivedUnitEnum.PLANARFORCEUNIT = { type: 3, value: "PLANARFORCEUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFELASTICITYUNIT = { type: 3, value: "MODULUSOFELASTICITYUNIT" }; + _IfcDerivedUnitEnum.SHEARMODULUSUNIT = { type: 3, value: "SHEARMODULUSUNIT" }; + _IfcDerivedUnitEnum.LINEARSTIFFNESSUNIT = { type: 3, value: "LINEARSTIFFNESSUNIT" }; + _IfcDerivedUnitEnum.ROTATIONALSTIFFNESSUNIT = { type: 3, value: "ROTATIONALSTIFFNESSUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFSUBGRADEREACTIONUNIT = { type: 3, value: "MODULUSOFSUBGRADEREACTIONUNIT" }; + _IfcDerivedUnitEnum.ACCELERATIONUNIT = { type: 3, value: "ACCELERATIONUNIT" }; + _IfcDerivedUnitEnum.CURVATUREUNIT = { type: 3, value: "CURVATUREUNIT" }; + _IfcDerivedUnitEnum.HEATINGVALUEUNIT = { type: 3, value: "HEATINGVALUEUNIT" }; + _IfcDerivedUnitEnum.IONCONCENTRATIONUNIT = { type: 3, value: "IONCONCENTRATIONUNIT" }; + _IfcDerivedUnitEnum.LUMINOUSINTENSITYDISTRIBUTIONUNIT = { type: 3, value: "LUMINOUSINTENSITYDISTRIBUTIONUNIT" }; + _IfcDerivedUnitEnum.MASSPERLENGTHUNIT = { type: 3, value: "MASSPERLENGTHUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFLINEARSUBGRADEREACTIONUNIT = { type: 3, value: "MODULUSOFLINEARSUBGRADEREACTIONUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFROTATIONALSUBGRADEREACTIONUNIT = { type: 3, value: "MODULUSOFROTATIONALSUBGRADEREACTIONUNIT" }; + _IfcDerivedUnitEnum.PHUNIT = { type: 3, value: "PHUNIT" }; + _IfcDerivedUnitEnum.ROTATIONALMASSUNIT = { type: 3, value: "ROTATIONALMASSUNIT" }; + _IfcDerivedUnitEnum.SECTIONAREAINTEGRALUNIT = { type: 3, value: "SECTIONAREAINTEGRALUNIT" }; + _IfcDerivedUnitEnum.SECTIONMODULUSUNIT = { type: 3, value: "SECTIONMODULUSUNIT" }; + _IfcDerivedUnitEnum.SOUNDPOWERUNIT = { type: 3, value: "SOUNDPOWERUNIT" }; + _IfcDerivedUnitEnum.SOUNDPRESSUREUNIT = { type: 3, value: "SOUNDPRESSUREUNIT" }; + _IfcDerivedUnitEnum.TEMPERATUREGRADIENTUNIT = { type: 3, value: "TEMPERATUREGRADIENTUNIT" }; + _IfcDerivedUnitEnum.THERMALEXPANSIONCOEFFICIENTUNIT = { type: 3, value: "THERMALEXPANSIONCOEFFICIENTUNIT" }; + _IfcDerivedUnitEnum.WARPINGCONSTANTUNIT = { type: 3, value: "WARPINGCONSTANTUNIT" }; + _IfcDerivedUnitEnum.WARPINGMOMENTUNIT = { type: 3, value: "WARPINGMOMENTUNIT" }; + _IfcDerivedUnitEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcDerivedUnitEnum = _IfcDerivedUnitEnum; + IFC2X32.IfcDerivedUnitEnum = IfcDerivedUnitEnum; + const _IfcDimensionExtentUsage = class _IfcDimensionExtentUsage { + }; + _IfcDimensionExtentUsage.ORIGIN = { type: 3, value: "ORIGIN" }; + _IfcDimensionExtentUsage.TARGET = { type: 3, value: "TARGET" }; + let IfcDimensionExtentUsage = _IfcDimensionExtentUsage; + IFC2X32.IfcDimensionExtentUsage = IfcDimensionExtentUsage; + const _IfcDirectionSenseEnum = class _IfcDirectionSenseEnum { + }; + _IfcDirectionSenseEnum.POSITIVE = { type: 3, value: "POSITIVE" }; + _IfcDirectionSenseEnum.NEGATIVE = { type: 3, value: "NEGATIVE" }; + let IfcDirectionSenseEnum = _IfcDirectionSenseEnum; + IFC2X32.IfcDirectionSenseEnum = IfcDirectionSenseEnum; + const _IfcDistributionChamberElementTypeEnum = class _IfcDistributionChamberElementTypeEnum { + }; + _IfcDistributionChamberElementTypeEnum.FORMEDDUCT = { type: 3, value: "FORMEDDUCT" }; + _IfcDistributionChamberElementTypeEnum.INSPECTIONCHAMBER = { type: 3, value: "INSPECTIONCHAMBER" }; + _IfcDistributionChamberElementTypeEnum.INSPECTIONPIT = { type: 3, value: "INSPECTIONPIT" }; + _IfcDistributionChamberElementTypeEnum.MANHOLE = { type: 3, value: "MANHOLE" }; + _IfcDistributionChamberElementTypeEnum.METERCHAMBER = { type: 3, value: "METERCHAMBER" }; + _IfcDistributionChamberElementTypeEnum.SUMP = { type: 3, value: "SUMP" }; + _IfcDistributionChamberElementTypeEnum.TRENCH = { type: 3, value: "TRENCH" }; + _IfcDistributionChamberElementTypeEnum.VALVECHAMBER = { type: 3, value: "VALVECHAMBER" }; + _IfcDistributionChamberElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDistributionChamberElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDistributionChamberElementTypeEnum = _IfcDistributionChamberElementTypeEnum; + IFC2X32.IfcDistributionChamberElementTypeEnum = IfcDistributionChamberElementTypeEnum; + const _IfcDocumentConfidentialityEnum = class _IfcDocumentConfidentialityEnum { + }; + _IfcDocumentConfidentialityEnum.PUBLIC = { type: 3, value: "PUBLIC" }; + _IfcDocumentConfidentialityEnum.RESTRICTED = { type: 3, value: "RESTRICTED" }; + _IfcDocumentConfidentialityEnum.CONFIDENTIAL = { type: 3, value: "CONFIDENTIAL" }; + _IfcDocumentConfidentialityEnum.PERSONAL = { type: 3, value: "PERSONAL" }; + _IfcDocumentConfidentialityEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDocumentConfidentialityEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDocumentConfidentialityEnum = _IfcDocumentConfidentialityEnum; + IFC2X32.IfcDocumentConfidentialityEnum = IfcDocumentConfidentialityEnum; + const _IfcDocumentStatusEnum = class _IfcDocumentStatusEnum { + }; + _IfcDocumentStatusEnum.DRAFT = { type: 3, value: "DRAFT" }; + _IfcDocumentStatusEnum.FINALDRAFT = { type: 3, value: "FINALDRAFT" }; + _IfcDocumentStatusEnum.FINAL = { type: 3, value: "FINAL" }; + _IfcDocumentStatusEnum.REVISION = { type: 3, value: "REVISION" }; + _IfcDocumentStatusEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDocumentStatusEnum = _IfcDocumentStatusEnum; + IFC2X32.IfcDocumentStatusEnum = IfcDocumentStatusEnum; + const _IfcDoorPanelOperationEnum = class _IfcDoorPanelOperationEnum { + }; + _IfcDoorPanelOperationEnum.SWINGING = { type: 3, value: "SWINGING" }; + _IfcDoorPanelOperationEnum.DOUBLE_ACTING = { type: 3, value: "DOUBLE_ACTING" }; + _IfcDoorPanelOperationEnum.SLIDING = { type: 3, value: "SLIDING" }; + _IfcDoorPanelOperationEnum.FOLDING = { type: 3, value: "FOLDING" }; + _IfcDoorPanelOperationEnum.REVOLVING = { type: 3, value: "REVOLVING" }; + _IfcDoorPanelOperationEnum.ROLLINGUP = { type: 3, value: "ROLLINGUP" }; + _IfcDoorPanelOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDoorPanelOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorPanelOperationEnum = _IfcDoorPanelOperationEnum; + IFC2X32.IfcDoorPanelOperationEnum = IfcDoorPanelOperationEnum; + const _IfcDoorPanelPositionEnum = class _IfcDoorPanelPositionEnum { + }; + _IfcDoorPanelPositionEnum.LEFT = { type: 3, value: "LEFT" }; + _IfcDoorPanelPositionEnum.MIDDLE = { type: 3, value: "MIDDLE" }; + _IfcDoorPanelPositionEnum.RIGHT = { type: 3, value: "RIGHT" }; + _IfcDoorPanelPositionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorPanelPositionEnum = _IfcDoorPanelPositionEnum; + IFC2X32.IfcDoorPanelPositionEnum = IfcDoorPanelPositionEnum; + const _IfcDoorStyleConstructionEnum = class _IfcDoorStyleConstructionEnum { + }; + _IfcDoorStyleConstructionEnum.ALUMINIUM = { type: 3, value: "ALUMINIUM" }; + _IfcDoorStyleConstructionEnum.HIGH_GRADE_STEEL = { type: 3, value: "HIGH_GRADE_STEEL" }; + _IfcDoorStyleConstructionEnum.STEEL = { type: 3, value: "STEEL" }; + _IfcDoorStyleConstructionEnum.WOOD = { type: 3, value: "WOOD" }; + _IfcDoorStyleConstructionEnum.ALUMINIUM_WOOD = { type: 3, value: "ALUMINIUM_WOOD" }; + _IfcDoorStyleConstructionEnum.ALUMINIUM_PLASTIC = { type: 3, value: "ALUMINIUM_PLASTIC" }; + _IfcDoorStyleConstructionEnum.PLASTIC = { type: 3, value: "PLASTIC" }; + _IfcDoorStyleConstructionEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDoorStyleConstructionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorStyleConstructionEnum = _IfcDoorStyleConstructionEnum; + IFC2X32.IfcDoorStyleConstructionEnum = IfcDoorStyleConstructionEnum; + const _IfcDoorStyleOperationEnum = class _IfcDoorStyleOperationEnum { + }; + _IfcDoorStyleOperationEnum.SINGLE_SWING_LEFT = { type: 3, value: "SINGLE_SWING_LEFT" }; + _IfcDoorStyleOperationEnum.SINGLE_SWING_RIGHT = { type: 3, value: "SINGLE_SWING_RIGHT" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_SINGLE_SWING = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT" }; + _IfcDoorStyleOperationEnum.DOUBLE_SWING_LEFT = { type: 3, value: "DOUBLE_SWING_LEFT" }; + _IfcDoorStyleOperationEnum.DOUBLE_SWING_RIGHT = { type: 3, value: "DOUBLE_SWING_RIGHT" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_DOUBLE_SWING = { type: 3, value: "DOUBLE_DOOR_DOUBLE_SWING" }; + _IfcDoorStyleOperationEnum.SLIDING_TO_LEFT = { type: 3, value: "SLIDING_TO_LEFT" }; + _IfcDoorStyleOperationEnum.SLIDING_TO_RIGHT = { type: 3, value: "SLIDING_TO_RIGHT" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_SLIDING = { type: 3, value: "DOUBLE_DOOR_SLIDING" }; + _IfcDoorStyleOperationEnum.FOLDING_TO_LEFT = { type: 3, value: "FOLDING_TO_LEFT" }; + _IfcDoorStyleOperationEnum.FOLDING_TO_RIGHT = { type: 3, value: "FOLDING_TO_RIGHT" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_FOLDING = { type: 3, value: "DOUBLE_DOOR_FOLDING" }; + _IfcDoorStyleOperationEnum.REVOLVING = { type: 3, value: "REVOLVING" }; + _IfcDoorStyleOperationEnum.ROLLINGUP = { type: 3, value: "ROLLINGUP" }; + _IfcDoorStyleOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDoorStyleOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorStyleOperationEnum = _IfcDoorStyleOperationEnum; + IFC2X32.IfcDoorStyleOperationEnum = IfcDoorStyleOperationEnum; + const _IfcDuctFittingTypeEnum = class _IfcDuctFittingTypeEnum { + }; + _IfcDuctFittingTypeEnum.BEND = { type: 3, value: "BEND" }; + _IfcDuctFittingTypeEnum.CONNECTOR = { type: 3, value: "CONNECTOR" }; + _IfcDuctFittingTypeEnum.ENTRY = { type: 3, value: "ENTRY" }; + _IfcDuctFittingTypeEnum.EXIT = { type: 3, value: "EXIT" }; + _IfcDuctFittingTypeEnum.JUNCTION = { type: 3, value: "JUNCTION" }; + _IfcDuctFittingTypeEnum.OBSTRUCTION = { type: 3, value: "OBSTRUCTION" }; + _IfcDuctFittingTypeEnum.TRANSITION = { type: 3, value: "TRANSITION" }; + _IfcDuctFittingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDuctFittingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDuctFittingTypeEnum = _IfcDuctFittingTypeEnum; + IFC2X32.IfcDuctFittingTypeEnum = IfcDuctFittingTypeEnum; + const _IfcDuctSegmentTypeEnum = class _IfcDuctSegmentTypeEnum { + }; + _IfcDuctSegmentTypeEnum.RIGIDSEGMENT = { type: 3, value: "RIGIDSEGMENT" }; + _IfcDuctSegmentTypeEnum.FLEXIBLESEGMENT = { type: 3, value: "FLEXIBLESEGMENT" }; + _IfcDuctSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDuctSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDuctSegmentTypeEnum = _IfcDuctSegmentTypeEnum; + IFC2X32.IfcDuctSegmentTypeEnum = IfcDuctSegmentTypeEnum; + const _IfcDuctSilencerTypeEnum = class _IfcDuctSilencerTypeEnum { + }; + _IfcDuctSilencerTypeEnum.FLATOVAL = { type: 3, value: "FLATOVAL" }; + _IfcDuctSilencerTypeEnum.RECTANGULAR = { type: 3, value: "RECTANGULAR" }; + _IfcDuctSilencerTypeEnum.ROUND = { type: 3, value: "ROUND" }; + _IfcDuctSilencerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDuctSilencerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDuctSilencerTypeEnum = _IfcDuctSilencerTypeEnum; + IFC2X32.IfcDuctSilencerTypeEnum = IfcDuctSilencerTypeEnum; + const _IfcElectricApplianceTypeEnum = class _IfcElectricApplianceTypeEnum { + }; + _IfcElectricApplianceTypeEnum.COMPUTER = { type: 3, value: "COMPUTER" }; + _IfcElectricApplianceTypeEnum.DIRECTWATERHEATER = { type: 3, value: "DIRECTWATERHEATER" }; + _IfcElectricApplianceTypeEnum.DISHWASHER = { type: 3, value: "DISHWASHER" }; + _IfcElectricApplianceTypeEnum.ELECTRICCOOKER = { type: 3, value: "ELECTRICCOOKER" }; + _IfcElectricApplianceTypeEnum.ELECTRICHEATER = { type: 3, value: "ELECTRICHEATER" }; + _IfcElectricApplianceTypeEnum.FACSIMILE = { type: 3, value: "FACSIMILE" }; + _IfcElectricApplianceTypeEnum.FREESTANDINGFAN = { type: 3, value: "FREESTANDINGFAN" }; + _IfcElectricApplianceTypeEnum.FREEZER = { type: 3, value: "FREEZER" }; + _IfcElectricApplianceTypeEnum.FRIDGE_FREEZER = { type: 3, value: "FRIDGE_FREEZER" }; + _IfcElectricApplianceTypeEnum.HANDDRYER = { type: 3, value: "HANDDRYER" }; + _IfcElectricApplianceTypeEnum.INDIRECTWATERHEATER = { type: 3, value: "INDIRECTWATERHEATER" }; + _IfcElectricApplianceTypeEnum.MICROWAVE = { type: 3, value: "MICROWAVE" }; + _IfcElectricApplianceTypeEnum.PHOTOCOPIER = { type: 3, value: "PHOTOCOPIER" }; + _IfcElectricApplianceTypeEnum.PRINTER = { type: 3, value: "PRINTER" }; + _IfcElectricApplianceTypeEnum.REFRIGERATOR = { type: 3, value: "REFRIGERATOR" }; + _IfcElectricApplianceTypeEnum.RADIANTHEATER = { type: 3, value: "RADIANTHEATER" }; + _IfcElectricApplianceTypeEnum.SCANNER = { type: 3, value: "SCANNER" }; + _IfcElectricApplianceTypeEnum.TELEPHONE = { type: 3, value: "TELEPHONE" }; + _IfcElectricApplianceTypeEnum.TUMBLEDRYER = { type: 3, value: "TUMBLEDRYER" }; + _IfcElectricApplianceTypeEnum.TV = { type: 3, value: "TV" }; + _IfcElectricApplianceTypeEnum.VENDINGMACHINE = { type: 3, value: "VENDINGMACHINE" }; + _IfcElectricApplianceTypeEnum.WASHINGMACHINE = { type: 3, value: "WASHINGMACHINE" }; + _IfcElectricApplianceTypeEnum.WATERHEATER = { type: 3, value: "WATERHEATER" }; + _IfcElectricApplianceTypeEnum.WATERCOOLER = { type: 3, value: "WATERCOOLER" }; + _IfcElectricApplianceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricApplianceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricApplianceTypeEnum = _IfcElectricApplianceTypeEnum; + IFC2X32.IfcElectricApplianceTypeEnum = IfcElectricApplianceTypeEnum; + const _IfcElectricCurrentEnum = class _IfcElectricCurrentEnum { + }; + _IfcElectricCurrentEnum.ALTERNATING = { type: 3, value: "ALTERNATING" }; + _IfcElectricCurrentEnum.DIRECT = { type: 3, value: "DIRECT" }; + _IfcElectricCurrentEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricCurrentEnum = _IfcElectricCurrentEnum; + IFC2X32.IfcElectricCurrentEnum = IfcElectricCurrentEnum; + const _IfcElectricDistributionPointFunctionEnum = class _IfcElectricDistributionPointFunctionEnum { + }; + _IfcElectricDistributionPointFunctionEnum.ALARMPANEL = { type: 3, value: "ALARMPANEL" }; + _IfcElectricDistributionPointFunctionEnum.CONSUMERUNIT = { type: 3, value: "CONSUMERUNIT" }; + _IfcElectricDistributionPointFunctionEnum.CONTROLPANEL = { type: 3, value: "CONTROLPANEL" }; + _IfcElectricDistributionPointFunctionEnum.DISTRIBUTIONBOARD = { type: 3, value: "DISTRIBUTIONBOARD" }; + _IfcElectricDistributionPointFunctionEnum.GASDETECTORPANEL = { type: 3, value: "GASDETECTORPANEL" }; + _IfcElectricDistributionPointFunctionEnum.INDICATORPANEL = { type: 3, value: "INDICATORPANEL" }; + _IfcElectricDistributionPointFunctionEnum.MIMICPANEL = { type: 3, value: "MIMICPANEL" }; + _IfcElectricDistributionPointFunctionEnum.MOTORCONTROLCENTRE = { type: 3, value: "MOTORCONTROLCENTRE" }; + _IfcElectricDistributionPointFunctionEnum.SWITCHBOARD = { type: 3, value: "SWITCHBOARD" }; + _IfcElectricDistributionPointFunctionEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricDistributionPointFunctionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricDistributionPointFunctionEnum = _IfcElectricDistributionPointFunctionEnum; + IFC2X32.IfcElectricDistributionPointFunctionEnum = IfcElectricDistributionPointFunctionEnum; + const _IfcElectricFlowStorageDeviceTypeEnum = class _IfcElectricFlowStorageDeviceTypeEnum { + }; + _IfcElectricFlowStorageDeviceTypeEnum.BATTERY = { type: 3, value: "BATTERY" }; + _IfcElectricFlowStorageDeviceTypeEnum.CAPACITORBANK = { type: 3, value: "CAPACITORBANK" }; + _IfcElectricFlowStorageDeviceTypeEnum.HARMONICFILTER = { type: 3, value: "HARMONICFILTER" }; + _IfcElectricFlowStorageDeviceTypeEnum.INDUCTORBANK = { type: 3, value: "INDUCTORBANK" }; + _IfcElectricFlowStorageDeviceTypeEnum.UPS = { type: 3, value: "UPS" }; + _IfcElectricFlowStorageDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricFlowStorageDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricFlowStorageDeviceTypeEnum = _IfcElectricFlowStorageDeviceTypeEnum; + IFC2X32.IfcElectricFlowStorageDeviceTypeEnum = IfcElectricFlowStorageDeviceTypeEnum; + const _IfcElectricGeneratorTypeEnum = class _IfcElectricGeneratorTypeEnum { + }; + _IfcElectricGeneratorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricGeneratorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricGeneratorTypeEnum = _IfcElectricGeneratorTypeEnum; + IFC2X32.IfcElectricGeneratorTypeEnum = IfcElectricGeneratorTypeEnum; + const _IfcElectricHeaterTypeEnum = class _IfcElectricHeaterTypeEnum { + }; + _IfcElectricHeaterTypeEnum.ELECTRICPOINTHEATER = { type: 3, value: "ELECTRICPOINTHEATER" }; + _IfcElectricHeaterTypeEnum.ELECTRICCABLEHEATER = { type: 3, value: "ELECTRICCABLEHEATER" }; + _IfcElectricHeaterTypeEnum.ELECTRICMATHEATER = { type: 3, value: "ELECTRICMATHEATER" }; + _IfcElectricHeaterTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricHeaterTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricHeaterTypeEnum = _IfcElectricHeaterTypeEnum; + IFC2X32.IfcElectricHeaterTypeEnum = IfcElectricHeaterTypeEnum; + const _IfcElectricMotorTypeEnum = class _IfcElectricMotorTypeEnum { + }; + _IfcElectricMotorTypeEnum.DC = { type: 3, value: "DC" }; + _IfcElectricMotorTypeEnum.INDUCTION = { type: 3, value: "INDUCTION" }; + _IfcElectricMotorTypeEnum.POLYPHASE = { type: 3, value: "POLYPHASE" }; + _IfcElectricMotorTypeEnum.RELUCTANCESYNCHRONOUS = { type: 3, value: "RELUCTANCESYNCHRONOUS" }; + _IfcElectricMotorTypeEnum.SYNCHRONOUS = { type: 3, value: "SYNCHRONOUS" }; + _IfcElectricMotorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricMotorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricMotorTypeEnum = _IfcElectricMotorTypeEnum; + IFC2X32.IfcElectricMotorTypeEnum = IfcElectricMotorTypeEnum; + const _IfcElectricTimeControlTypeEnum = class _IfcElectricTimeControlTypeEnum { + }; + _IfcElectricTimeControlTypeEnum.TIMECLOCK = { type: 3, value: "TIMECLOCK" }; + _IfcElectricTimeControlTypeEnum.TIMEDELAY = { type: 3, value: "TIMEDELAY" }; + _IfcElectricTimeControlTypeEnum.RELAY = { type: 3, value: "RELAY" }; + _IfcElectricTimeControlTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricTimeControlTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricTimeControlTypeEnum = _IfcElectricTimeControlTypeEnum; + IFC2X32.IfcElectricTimeControlTypeEnum = IfcElectricTimeControlTypeEnum; + const _IfcElementAssemblyTypeEnum = class _IfcElementAssemblyTypeEnum { + }; + _IfcElementAssemblyTypeEnum.ACCESSORY_ASSEMBLY = { type: 3, value: "ACCESSORY_ASSEMBLY" }; + _IfcElementAssemblyTypeEnum.ARCH = { type: 3, value: "ARCH" }; + _IfcElementAssemblyTypeEnum.BEAM_GRID = { type: 3, value: "BEAM_GRID" }; + _IfcElementAssemblyTypeEnum.BRACED_FRAME = { type: 3, value: "BRACED_FRAME" }; + _IfcElementAssemblyTypeEnum.GIRDER = { type: 3, value: "GIRDER" }; + _IfcElementAssemblyTypeEnum.REINFORCEMENT_UNIT = { type: 3, value: "REINFORCEMENT_UNIT" }; + _IfcElementAssemblyTypeEnum.RIGID_FRAME = { type: 3, value: "RIGID_FRAME" }; + _IfcElementAssemblyTypeEnum.SLAB_FIELD = { type: 3, value: "SLAB_FIELD" }; + _IfcElementAssemblyTypeEnum.TRUSS = { type: 3, value: "TRUSS" }; + _IfcElementAssemblyTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElementAssemblyTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElementAssemblyTypeEnum = _IfcElementAssemblyTypeEnum; + IFC2X32.IfcElementAssemblyTypeEnum = IfcElementAssemblyTypeEnum; + const _IfcElementCompositionEnum = class _IfcElementCompositionEnum { + }; + _IfcElementCompositionEnum.COMPLEX = { type: 3, value: "COMPLEX" }; + _IfcElementCompositionEnum.ELEMENT = { type: 3, value: "ELEMENT" }; + _IfcElementCompositionEnum.PARTIAL = { type: 3, value: "PARTIAL" }; + let IfcElementCompositionEnum = _IfcElementCompositionEnum; + IFC2X32.IfcElementCompositionEnum = IfcElementCompositionEnum; + const _IfcEnergySequenceEnum = class _IfcEnergySequenceEnum { + }; + _IfcEnergySequenceEnum.PRIMARY = { type: 3, value: "PRIMARY" }; + _IfcEnergySequenceEnum.SECONDARY = { type: 3, value: "SECONDARY" }; + _IfcEnergySequenceEnum.TERTIARY = { type: 3, value: "TERTIARY" }; + _IfcEnergySequenceEnum.AUXILIARY = { type: 3, value: "AUXILIARY" }; + _IfcEnergySequenceEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEnergySequenceEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEnergySequenceEnum = _IfcEnergySequenceEnum; + IFC2X32.IfcEnergySequenceEnum = IfcEnergySequenceEnum; + const _IfcEnvironmentalImpactCategoryEnum = class _IfcEnvironmentalImpactCategoryEnum { + }; + _IfcEnvironmentalImpactCategoryEnum.COMBINEDVALUE = { type: 3, value: "COMBINEDVALUE" }; + _IfcEnvironmentalImpactCategoryEnum.DISPOSAL = { type: 3, value: "DISPOSAL" }; + _IfcEnvironmentalImpactCategoryEnum.EXTRACTION = { type: 3, value: "EXTRACTION" }; + _IfcEnvironmentalImpactCategoryEnum.INSTALLATION = { type: 3, value: "INSTALLATION" }; + _IfcEnvironmentalImpactCategoryEnum.MANUFACTURE = { type: 3, value: "MANUFACTURE" }; + _IfcEnvironmentalImpactCategoryEnum.TRANSPORTATION = { type: 3, value: "TRANSPORTATION" }; + _IfcEnvironmentalImpactCategoryEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEnvironmentalImpactCategoryEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEnvironmentalImpactCategoryEnum = _IfcEnvironmentalImpactCategoryEnum; + IFC2X32.IfcEnvironmentalImpactCategoryEnum = IfcEnvironmentalImpactCategoryEnum; + const _IfcEvaporativeCoolerTypeEnum = class _IfcEvaporativeCoolerTypeEnum { + }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVEAIRWASHER = { type: 3, value: "DIRECTEVAPORATIVEAIRWASHER" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTEVAPORATIVEPACKAGEAIRCOOLER = { type: 3, value: "INDIRECTEVAPORATIVEPACKAGEAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTEVAPORATIVEWETCOIL = { type: 3, value: "INDIRECTEVAPORATIVEWETCOIL" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER = { type: 3, value: "INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTDIRECTCOMBINATION = { type: 3, value: "INDIRECTDIRECTCOMBINATION" }; + _IfcEvaporativeCoolerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEvaporativeCoolerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEvaporativeCoolerTypeEnum = _IfcEvaporativeCoolerTypeEnum; + IFC2X32.IfcEvaporativeCoolerTypeEnum = IfcEvaporativeCoolerTypeEnum; + const _IfcEvaporatorTypeEnum = class _IfcEvaporatorTypeEnum { + }; + _IfcEvaporatorTypeEnum.DIRECTEXPANSIONSHELLANDTUBE = { type: 3, value: "DIRECTEXPANSIONSHELLANDTUBE" }; + _IfcEvaporatorTypeEnum.DIRECTEXPANSIONTUBEINTUBE = { type: 3, value: "DIRECTEXPANSIONTUBEINTUBE" }; + _IfcEvaporatorTypeEnum.DIRECTEXPANSIONBRAZEDPLATE = { type: 3, value: "DIRECTEXPANSIONBRAZEDPLATE" }; + _IfcEvaporatorTypeEnum.FLOODEDSHELLANDTUBE = { type: 3, value: "FLOODEDSHELLANDTUBE" }; + _IfcEvaporatorTypeEnum.SHELLANDCOIL = { type: 3, value: "SHELLANDCOIL" }; + _IfcEvaporatorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEvaporatorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEvaporatorTypeEnum = _IfcEvaporatorTypeEnum; + IFC2X32.IfcEvaporatorTypeEnum = IfcEvaporatorTypeEnum; + const _IfcFanTypeEnum = class _IfcFanTypeEnum { + }; + _IfcFanTypeEnum.CENTRIFUGALFORWARDCURVED = { type: 3, value: "CENTRIFUGALFORWARDCURVED" }; + _IfcFanTypeEnum.CENTRIFUGALRADIAL = { type: 3, value: "CENTRIFUGALRADIAL" }; + _IfcFanTypeEnum.CENTRIFUGALBACKWARDINCLINEDCURVED = { type: 3, value: "CENTRIFUGALBACKWARDINCLINEDCURVED" }; + _IfcFanTypeEnum.CENTRIFUGALAIRFOIL = { type: 3, value: "CENTRIFUGALAIRFOIL" }; + _IfcFanTypeEnum.TUBEAXIAL = { type: 3, value: "TUBEAXIAL" }; + _IfcFanTypeEnum.VANEAXIAL = { type: 3, value: "VANEAXIAL" }; + _IfcFanTypeEnum.PROPELLORAXIAL = { type: 3, value: "PROPELLORAXIAL" }; + _IfcFanTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFanTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFanTypeEnum = _IfcFanTypeEnum; + IFC2X32.IfcFanTypeEnum = IfcFanTypeEnum; + const _IfcFilterTypeEnum = class _IfcFilterTypeEnum { + }; + _IfcFilterTypeEnum.AIRPARTICLEFILTER = { type: 3, value: "AIRPARTICLEFILTER" }; + _IfcFilterTypeEnum.ODORFILTER = { type: 3, value: "ODORFILTER" }; + _IfcFilterTypeEnum.OILFILTER = { type: 3, value: "OILFILTER" }; + _IfcFilterTypeEnum.STRAINER = { type: 3, value: "STRAINER" }; + _IfcFilterTypeEnum.WATERFILTER = { type: 3, value: "WATERFILTER" }; + _IfcFilterTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFilterTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFilterTypeEnum = _IfcFilterTypeEnum; + IFC2X32.IfcFilterTypeEnum = IfcFilterTypeEnum; + const _IfcFireSuppressionTerminalTypeEnum = class _IfcFireSuppressionTerminalTypeEnum { + }; + _IfcFireSuppressionTerminalTypeEnum.BREECHINGINLET = { type: 3, value: "BREECHINGINLET" }; + _IfcFireSuppressionTerminalTypeEnum.FIREHYDRANT = { type: 3, value: "FIREHYDRANT" }; + _IfcFireSuppressionTerminalTypeEnum.HOSEREEL = { type: 3, value: "HOSEREEL" }; + _IfcFireSuppressionTerminalTypeEnum.SPRINKLER = { type: 3, value: "SPRINKLER" }; + _IfcFireSuppressionTerminalTypeEnum.SPRINKLERDEFLECTOR = { type: 3, value: "SPRINKLERDEFLECTOR" }; + _IfcFireSuppressionTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFireSuppressionTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFireSuppressionTerminalTypeEnum = _IfcFireSuppressionTerminalTypeEnum; + IFC2X32.IfcFireSuppressionTerminalTypeEnum = IfcFireSuppressionTerminalTypeEnum; + const _IfcFlowDirectionEnum = class _IfcFlowDirectionEnum { + }; + _IfcFlowDirectionEnum.SOURCE = { type: 3, value: "SOURCE" }; + _IfcFlowDirectionEnum.SINK = { type: 3, value: "SINK" }; + _IfcFlowDirectionEnum.SOURCEANDSINK = { type: 3, value: "SOURCEANDSINK" }; + _IfcFlowDirectionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFlowDirectionEnum = _IfcFlowDirectionEnum; + IFC2X32.IfcFlowDirectionEnum = IfcFlowDirectionEnum; + const _IfcFlowInstrumentTypeEnum = class _IfcFlowInstrumentTypeEnum { + }; + _IfcFlowInstrumentTypeEnum.PRESSUREGAUGE = { type: 3, value: "PRESSUREGAUGE" }; + _IfcFlowInstrumentTypeEnum.THERMOMETER = { type: 3, value: "THERMOMETER" }; + _IfcFlowInstrumentTypeEnum.AMMETER = { type: 3, value: "AMMETER" }; + _IfcFlowInstrumentTypeEnum.FREQUENCYMETER = { type: 3, value: "FREQUENCYMETER" }; + _IfcFlowInstrumentTypeEnum.POWERFACTORMETER = { type: 3, value: "POWERFACTORMETER" }; + _IfcFlowInstrumentTypeEnum.PHASEANGLEMETER = { type: 3, value: "PHASEANGLEMETER" }; + _IfcFlowInstrumentTypeEnum.VOLTMETER_PEAK = { type: 3, value: "VOLTMETER_PEAK" }; + _IfcFlowInstrumentTypeEnum.VOLTMETER_RMS = { type: 3, value: "VOLTMETER_RMS" }; + _IfcFlowInstrumentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFlowInstrumentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFlowInstrumentTypeEnum = _IfcFlowInstrumentTypeEnum; + IFC2X32.IfcFlowInstrumentTypeEnum = IfcFlowInstrumentTypeEnum; + const _IfcFlowMeterTypeEnum = class _IfcFlowMeterTypeEnum { + }; + _IfcFlowMeterTypeEnum.ELECTRICMETER = { type: 3, value: "ELECTRICMETER" }; + _IfcFlowMeterTypeEnum.ENERGYMETER = { type: 3, value: "ENERGYMETER" }; + _IfcFlowMeterTypeEnum.FLOWMETER = { type: 3, value: "FLOWMETER" }; + _IfcFlowMeterTypeEnum.GASMETER = { type: 3, value: "GASMETER" }; + _IfcFlowMeterTypeEnum.OILMETER = { type: 3, value: "OILMETER" }; + _IfcFlowMeterTypeEnum.WATERMETER = { type: 3, value: "WATERMETER" }; + _IfcFlowMeterTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFlowMeterTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFlowMeterTypeEnum = _IfcFlowMeterTypeEnum; + IFC2X32.IfcFlowMeterTypeEnum = IfcFlowMeterTypeEnum; + const _IfcFootingTypeEnum = class _IfcFootingTypeEnum { + }; + _IfcFootingTypeEnum.FOOTING_BEAM = { type: 3, value: "FOOTING_BEAM" }; + _IfcFootingTypeEnum.PAD_FOOTING = { type: 3, value: "PAD_FOOTING" }; + _IfcFootingTypeEnum.PILE_CAP = { type: 3, value: "PILE_CAP" }; + _IfcFootingTypeEnum.STRIP_FOOTING = { type: 3, value: "STRIP_FOOTING" }; + _IfcFootingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFootingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFootingTypeEnum = _IfcFootingTypeEnum; + IFC2X32.IfcFootingTypeEnum = IfcFootingTypeEnum; + const _IfcGasTerminalTypeEnum = class _IfcGasTerminalTypeEnum { + }; + _IfcGasTerminalTypeEnum.GASAPPLIANCE = { type: 3, value: "GASAPPLIANCE" }; + _IfcGasTerminalTypeEnum.GASBOOSTER = { type: 3, value: "GASBOOSTER" }; + _IfcGasTerminalTypeEnum.GASBURNER = { type: 3, value: "GASBURNER" }; + _IfcGasTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcGasTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcGasTerminalTypeEnum = _IfcGasTerminalTypeEnum; + IFC2X32.IfcGasTerminalTypeEnum = IfcGasTerminalTypeEnum; + const _IfcGeometricProjectionEnum = class _IfcGeometricProjectionEnum { + }; + _IfcGeometricProjectionEnum.GRAPH_VIEW = { type: 3, value: "GRAPH_VIEW" }; + _IfcGeometricProjectionEnum.SKETCH_VIEW = { type: 3, value: "SKETCH_VIEW" }; + _IfcGeometricProjectionEnum.MODEL_VIEW = { type: 3, value: "MODEL_VIEW" }; + _IfcGeometricProjectionEnum.PLAN_VIEW = { type: 3, value: "PLAN_VIEW" }; + _IfcGeometricProjectionEnum.REFLECTED_PLAN_VIEW = { type: 3, value: "REFLECTED_PLAN_VIEW" }; + _IfcGeometricProjectionEnum.SECTION_VIEW = { type: 3, value: "SECTION_VIEW" }; + _IfcGeometricProjectionEnum.ELEVATION_VIEW = { type: 3, value: "ELEVATION_VIEW" }; + _IfcGeometricProjectionEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcGeometricProjectionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcGeometricProjectionEnum = _IfcGeometricProjectionEnum; + IFC2X32.IfcGeometricProjectionEnum = IfcGeometricProjectionEnum; + const _IfcGlobalOrLocalEnum = class _IfcGlobalOrLocalEnum { + }; + _IfcGlobalOrLocalEnum.GLOBAL_COORDS = { type: 3, value: "GLOBAL_COORDS" }; + _IfcGlobalOrLocalEnum.LOCAL_COORDS = { type: 3, value: "LOCAL_COORDS" }; + let IfcGlobalOrLocalEnum = _IfcGlobalOrLocalEnum; + IFC2X32.IfcGlobalOrLocalEnum = IfcGlobalOrLocalEnum; + const _IfcHeatExchangerTypeEnum = class _IfcHeatExchangerTypeEnum { + }; + _IfcHeatExchangerTypeEnum.PLATE = { type: 3, value: "PLATE" }; + _IfcHeatExchangerTypeEnum.SHELLANDTUBE = { type: 3, value: "SHELLANDTUBE" }; + _IfcHeatExchangerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcHeatExchangerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcHeatExchangerTypeEnum = _IfcHeatExchangerTypeEnum; + IFC2X32.IfcHeatExchangerTypeEnum = IfcHeatExchangerTypeEnum; + const _IfcHumidifierTypeEnum = class _IfcHumidifierTypeEnum { + }; + _IfcHumidifierTypeEnum.STEAMINJECTION = { type: 3, value: "STEAMINJECTION" }; + _IfcHumidifierTypeEnum.ADIABATICAIRWASHER = { type: 3, value: "ADIABATICAIRWASHER" }; + _IfcHumidifierTypeEnum.ADIABATICPAN = { type: 3, value: "ADIABATICPAN" }; + _IfcHumidifierTypeEnum.ADIABATICWETTEDELEMENT = { type: 3, value: "ADIABATICWETTEDELEMENT" }; + _IfcHumidifierTypeEnum.ADIABATICATOMIZING = { type: 3, value: "ADIABATICATOMIZING" }; + _IfcHumidifierTypeEnum.ADIABATICULTRASONIC = { type: 3, value: "ADIABATICULTRASONIC" }; + _IfcHumidifierTypeEnum.ADIABATICRIGIDMEDIA = { type: 3, value: "ADIABATICRIGIDMEDIA" }; + _IfcHumidifierTypeEnum.ADIABATICCOMPRESSEDAIRNOZZLE = { type: 3, value: "ADIABATICCOMPRESSEDAIRNOZZLE" }; + _IfcHumidifierTypeEnum.ASSISTEDELECTRIC = { type: 3, value: "ASSISTEDELECTRIC" }; + _IfcHumidifierTypeEnum.ASSISTEDNATURALGAS = { type: 3, value: "ASSISTEDNATURALGAS" }; + _IfcHumidifierTypeEnum.ASSISTEDPROPANE = { type: 3, value: "ASSISTEDPROPANE" }; + _IfcHumidifierTypeEnum.ASSISTEDBUTANE = { type: 3, value: "ASSISTEDBUTANE" }; + _IfcHumidifierTypeEnum.ASSISTEDSTEAM = { type: 3, value: "ASSISTEDSTEAM" }; + _IfcHumidifierTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcHumidifierTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcHumidifierTypeEnum = _IfcHumidifierTypeEnum; + IFC2X32.IfcHumidifierTypeEnum = IfcHumidifierTypeEnum; + const _IfcInternalOrExternalEnum = class _IfcInternalOrExternalEnum { + }; + _IfcInternalOrExternalEnum.INTERNAL = { type: 3, value: "INTERNAL" }; + _IfcInternalOrExternalEnum.EXTERNAL = { type: 3, value: "EXTERNAL" }; + _IfcInternalOrExternalEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcInternalOrExternalEnum = _IfcInternalOrExternalEnum; + IFC2X32.IfcInternalOrExternalEnum = IfcInternalOrExternalEnum; + const _IfcInventoryTypeEnum = class _IfcInventoryTypeEnum { + }; + _IfcInventoryTypeEnum.ASSETINVENTORY = { type: 3, value: "ASSETINVENTORY" }; + _IfcInventoryTypeEnum.SPACEINVENTORY = { type: 3, value: "SPACEINVENTORY" }; + _IfcInventoryTypeEnum.FURNITUREINVENTORY = { type: 3, value: "FURNITUREINVENTORY" }; + _IfcInventoryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcInventoryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcInventoryTypeEnum = _IfcInventoryTypeEnum; + IFC2X32.IfcInventoryTypeEnum = IfcInventoryTypeEnum; + const _IfcJunctionBoxTypeEnum = class _IfcJunctionBoxTypeEnum { + }; + _IfcJunctionBoxTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcJunctionBoxTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcJunctionBoxTypeEnum = _IfcJunctionBoxTypeEnum; + IFC2X32.IfcJunctionBoxTypeEnum = IfcJunctionBoxTypeEnum; + const _IfcLampTypeEnum = class _IfcLampTypeEnum { + }; + _IfcLampTypeEnum.COMPACTFLUORESCENT = { type: 3, value: "COMPACTFLUORESCENT" }; + _IfcLampTypeEnum.FLUORESCENT = { type: 3, value: "FLUORESCENT" }; + _IfcLampTypeEnum.HIGHPRESSUREMERCURY = { type: 3, value: "HIGHPRESSUREMERCURY" }; + _IfcLampTypeEnum.HIGHPRESSURESODIUM = { type: 3, value: "HIGHPRESSURESODIUM" }; + _IfcLampTypeEnum.METALHALIDE = { type: 3, value: "METALHALIDE" }; + _IfcLampTypeEnum.TUNGSTENFILAMENT = { type: 3, value: "TUNGSTENFILAMENT" }; + _IfcLampTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLampTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLampTypeEnum = _IfcLampTypeEnum; + IFC2X32.IfcLampTypeEnum = IfcLampTypeEnum; + const _IfcLayerSetDirectionEnum = class _IfcLayerSetDirectionEnum { + }; + _IfcLayerSetDirectionEnum.AXIS1 = { type: 3, value: "AXIS1" }; + _IfcLayerSetDirectionEnum.AXIS2 = { type: 3, value: "AXIS2" }; + _IfcLayerSetDirectionEnum.AXIS3 = { type: 3, value: "AXIS3" }; + let IfcLayerSetDirectionEnum = _IfcLayerSetDirectionEnum; + IFC2X32.IfcLayerSetDirectionEnum = IfcLayerSetDirectionEnum; + const _IfcLightDistributionCurveEnum = class _IfcLightDistributionCurveEnum { + }; + _IfcLightDistributionCurveEnum.TYPE_A = { type: 3, value: "TYPE_A" }; + _IfcLightDistributionCurveEnum.TYPE_B = { type: 3, value: "TYPE_B" }; + _IfcLightDistributionCurveEnum.TYPE_C = { type: 3, value: "TYPE_C" }; + _IfcLightDistributionCurveEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLightDistributionCurveEnum = _IfcLightDistributionCurveEnum; + IFC2X32.IfcLightDistributionCurveEnum = IfcLightDistributionCurveEnum; + const _IfcLightEmissionSourceEnum = class _IfcLightEmissionSourceEnum { + }; + _IfcLightEmissionSourceEnum.COMPACTFLUORESCENT = { type: 3, value: "COMPACTFLUORESCENT" }; + _IfcLightEmissionSourceEnum.FLUORESCENT = { type: 3, value: "FLUORESCENT" }; + _IfcLightEmissionSourceEnum.HIGHPRESSUREMERCURY = { type: 3, value: "HIGHPRESSUREMERCURY" }; + _IfcLightEmissionSourceEnum.HIGHPRESSURESODIUM = { type: 3, value: "HIGHPRESSURESODIUM" }; + _IfcLightEmissionSourceEnum.LIGHTEMITTINGDIODE = { type: 3, value: "LIGHTEMITTINGDIODE" }; + _IfcLightEmissionSourceEnum.LOWPRESSURESODIUM = { type: 3, value: "LOWPRESSURESODIUM" }; + _IfcLightEmissionSourceEnum.LOWVOLTAGEHALOGEN = { type: 3, value: "LOWVOLTAGEHALOGEN" }; + _IfcLightEmissionSourceEnum.MAINVOLTAGEHALOGEN = { type: 3, value: "MAINVOLTAGEHALOGEN" }; + _IfcLightEmissionSourceEnum.METALHALIDE = { type: 3, value: "METALHALIDE" }; + _IfcLightEmissionSourceEnum.TUNGSTENFILAMENT = { type: 3, value: "TUNGSTENFILAMENT" }; + _IfcLightEmissionSourceEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLightEmissionSourceEnum = _IfcLightEmissionSourceEnum; + IFC2X32.IfcLightEmissionSourceEnum = IfcLightEmissionSourceEnum; + const _IfcLightFixtureTypeEnum = class _IfcLightFixtureTypeEnum { + }; + _IfcLightFixtureTypeEnum.POINTSOURCE = { type: 3, value: "POINTSOURCE" }; + _IfcLightFixtureTypeEnum.DIRECTIONSOURCE = { type: 3, value: "DIRECTIONSOURCE" }; + _IfcLightFixtureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLightFixtureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLightFixtureTypeEnum = _IfcLightFixtureTypeEnum; + IFC2X32.IfcLightFixtureTypeEnum = IfcLightFixtureTypeEnum; + const _IfcLoadGroupTypeEnum = class _IfcLoadGroupTypeEnum { + }; + _IfcLoadGroupTypeEnum.LOAD_GROUP = { type: 3, value: "LOAD_GROUP" }; + _IfcLoadGroupTypeEnum.LOAD_CASE = { type: 3, value: "LOAD_CASE" }; + _IfcLoadGroupTypeEnum.LOAD_COMBINATION_GROUP = { type: 3, value: "LOAD_COMBINATION_GROUP" }; + _IfcLoadGroupTypeEnum.LOAD_COMBINATION = { type: 3, value: "LOAD_COMBINATION" }; + _IfcLoadGroupTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLoadGroupTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLoadGroupTypeEnum = _IfcLoadGroupTypeEnum; + IFC2X32.IfcLoadGroupTypeEnum = IfcLoadGroupTypeEnum; + const _IfcLogicalOperatorEnum = class _IfcLogicalOperatorEnum { + }; + _IfcLogicalOperatorEnum.LOGICALAND = { type: 3, value: "LOGICALAND" }; + _IfcLogicalOperatorEnum.LOGICALOR = { type: 3, value: "LOGICALOR" }; + let IfcLogicalOperatorEnum = _IfcLogicalOperatorEnum; + IFC2X32.IfcLogicalOperatorEnum = IfcLogicalOperatorEnum; + const _IfcMemberTypeEnum = class _IfcMemberTypeEnum { + }; + _IfcMemberTypeEnum.BRACE = { type: 3, value: "BRACE" }; + _IfcMemberTypeEnum.CHORD = { type: 3, value: "CHORD" }; + _IfcMemberTypeEnum.COLLAR = { type: 3, value: "COLLAR" }; + _IfcMemberTypeEnum.MEMBER = { type: 3, value: "MEMBER" }; + _IfcMemberTypeEnum.MULLION = { type: 3, value: "MULLION" }; + _IfcMemberTypeEnum.PLATE = { type: 3, value: "PLATE" }; + _IfcMemberTypeEnum.POST = { type: 3, value: "POST" }; + _IfcMemberTypeEnum.PURLIN = { type: 3, value: "PURLIN" }; + _IfcMemberTypeEnum.RAFTER = { type: 3, value: "RAFTER" }; + _IfcMemberTypeEnum.STRINGER = { type: 3, value: "STRINGER" }; + _IfcMemberTypeEnum.STRUT = { type: 3, value: "STRUT" }; + _IfcMemberTypeEnum.STUD = { type: 3, value: "STUD" }; + _IfcMemberTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMemberTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMemberTypeEnum = _IfcMemberTypeEnum; + IFC2X32.IfcMemberTypeEnum = IfcMemberTypeEnum; + const _IfcMotorConnectionTypeEnum = class _IfcMotorConnectionTypeEnum { + }; + _IfcMotorConnectionTypeEnum.BELTDRIVE = { type: 3, value: "BELTDRIVE" }; + _IfcMotorConnectionTypeEnum.COUPLING = { type: 3, value: "COUPLING" }; + _IfcMotorConnectionTypeEnum.DIRECTDRIVE = { type: 3, value: "DIRECTDRIVE" }; + _IfcMotorConnectionTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMotorConnectionTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMotorConnectionTypeEnum = _IfcMotorConnectionTypeEnum; + IFC2X32.IfcMotorConnectionTypeEnum = IfcMotorConnectionTypeEnum; + const _IfcNullStyle = class _IfcNullStyle { + }; + _IfcNullStyle.NULL = { type: 3, value: "NULL" }; + let IfcNullStyle = _IfcNullStyle; + IFC2X32.IfcNullStyle = IfcNullStyle; + const _IfcObjectTypeEnum = class _IfcObjectTypeEnum { + }; + _IfcObjectTypeEnum.PRODUCT = { type: 3, value: "PRODUCT" }; + _IfcObjectTypeEnum.PROCESS = { type: 3, value: "PROCESS" }; + _IfcObjectTypeEnum.CONTROL = { type: 3, value: "CONTROL" }; + _IfcObjectTypeEnum.RESOURCE = { type: 3, value: "RESOURCE" }; + _IfcObjectTypeEnum.ACTOR = { type: 3, value: "ACTOR" }; + _IfcObjectTypeEnum.GROUP = { type: 3, value: "GROUP" }; + _IfcObjectTypeEnum.PROJECT = { type: 3, value: "PROJECT" }; + _IfcObjectTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcObjectTypeEnum = _IfcObjectTypeEnum; + IFC2X32.IfcObjectTypeEnum = IfcObjectTypeEnum; + const _IfcObjectiveEnum = class _IfcObjectiveEnum { + }; + _IfcObjectiveEnum.CODECOMPLIANCE = { type: 3, value: "CODECOMPLIANCE" }; + _IfcObjectiveEnum.DESIGNINTENT = { type: 3, value: "DESIGNINTENT" }; + _IfcObjectiveEnum.HEALTHANDSAFETY = { type: 3, value: "HEALTHANDSAFETY" }; + _IfcObjectiveEnum.REQUIREMENT = { type: 3, value: "REQUIREMENT" }; + _IfcObjectiveEnum.SPECIFICATION = { type: 3, value: "SPECIFICATION" }; + _IfcObjectiveEnum.TRIGGERCONDITION = { type: 3, value: "TRIGGERCONDITION" }; + _IfcObjectiveEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcObjectiveEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcObjectiveEnum = _IfcObjectiveEnum; + IFC2X32.IfcObjectiveEnum = IfcObjectiveEnum; + const _IfcOccupantTypeEnum = class _IfcOccupantTypeEnum { + }; + _IfcOccupantTypeEnum.ASSIGNEE = { type: 3, value: "ASSIGNEE" }; + _IfcOccupantTypeEnum.ASSIGNOR = { type: 3, value: "ASSIGNOR" }; + _IfcOccupantTypeEnum.LESSEE = { type: 3, value: "LESSEE" }; + _IfcOccupantTypeEnum.LESSOR = { type: 3, value: "LESSOR" }; + _IfcOccupantTypeEnum.LETTINGAGENT = { type: 3, value: "LETTINGAGENT" }; + _IfcOccupantTypeEnum.OWNER = { type: 3, value: "OWNER" }; + _IfcOccupantTypeEnum.TENANT = { type: 3, value: "TENANT" }; + _IfcOccupantTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcOccupantTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcOccupantTypeEnum = _IfcOccupantTypeEnum; + IFC2X32.IfcOccupantTypeEnum = IfcOccupantTypeEnum; + const _IfcOutletTypeEnum = class _IfcOutletTypeEnum { + }; + _IfcOutletTypeEnum.AUDIOVISUALOUTLET = { type: 3, value: "AUDIOVISUALOUTLET" }; + _IfcOutletTypeEnum.COMMUNICATIONSOUTLET = { type: 3, value: "COMMUNICATIONSOUTLET" }; + _IfcOutletTypeEnum.POWEROUTLET = { type: 3, value: "POWEROUTLET" }; + _IfcOutletTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcOutletTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcOutletTypeEnum = _IfcOutletTypeEnum; + IFC2X32.IfcOutletTypeEnum = IfcOutletTypeEnum; + const _IfcPermeableCoveringOperationEnum = class _IfcPermeableCoveringOperationEnum { + }; + _IfcPermeableCoveringOperationEnum.GRILL = { type: 3, value: "GRILL" }; + _IfcPermeableCoveringOperationEnum.LOUVER = { type: 3, value: "LOUVER" }; + _IfcPermeableCoveringOperationEnum.SCREEN = { type: 3, value: "SCREEN" }; + _IfcPermeableCoveringOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPermeableCoveringOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPermeableCoveringOperationEnum = _IfcPermeableCoveringOperationEnum; + IFC2X32.IfcPermeableCoveringOperationEnum = IfcPermeableCoveringOperationEnum; + const _IfcPhysicalOrVirtualEnum = class _IfcPhysicalOrVirtualEnum { + }; + _IfcPhysicalOrVirtualEnum.PHYSICAL = { type: 3, value: "PHYSICAL" }; + _IfcPhysicalOrVirtualEnum.VIRTUAL = { type: 3, value: "VIRTUAL" }; + _IfcPhysicalOrVirtualEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPhysicalOrVirtualEnum = _IfcPhysicalOrVirtualEnum; + IFC2X32.IfcPhysicalOrVirtualEnum = IfcPhysicalOrVirtualEnum; + const _IfcPileConstructionEnum = class _IfcPileConstructionEnum { + }; + _IfcPileConstructionEnum.CAST_IN_PLACE = { type: 3, value: "CAST_IN_PLACE" }; + _IfcPileConstructionEnum.COMPOSITE = { type: 3, value: "COMPOSITE" }; + _IfcPileConstructionEnum.PRECAST_CONCRETE = { type: 3, value: "PRECAST_CONCRETE" }; + _IfcPileConstructionEnum.PREFAB_STEEL = { type: 3, value: "PREFAB_STEEL" }; + _IfcPileConstructionEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPileConstructionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPileConstructionEnum = _IfcPileConstructionEnum; + IFC2X32.IfcPileConstructionEnum = IfcPileConstructionEnum; + const _IfcPileTypeEnum = class _IfcPileTypeEnum { + }; + _IfcPileTypeEnum.COHESION = { type: 3, value: "COHESION" }; + _IfcPileTypeEnum.FRICTION = { type: 3, value: "FRICTION" }; + _IfcPileTypeEnum.SUPPORT = { type: 3, value: "SUPPORT" }; + _IfcPileTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPileTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPileTypeEnum = _IfcPileTypeEnum; + IFC2X32.IfcPileTypeEnum = IfcPileTypeEnum; + const _IfcPipeFittingTypeEnum = class _IfcPipeFittingTypeEnum { + }; + _IfcPipeFittingTypeEnum.BEND = { type: 3, value: "BEND" }; + _IfcPipeFittingTypeEnum.CONNECTOR = { type: 3, value: "CONNECTOR" }; + _IfcPipeFittingTypeEnum.ENTRY = { type: 3, value: "ENTRY" }; + _IfcPipeFittingTypeEnum.EXIT = { type: 3, value: "EXIT" }; + _IfcPipeFittingTypeEnum.JUNCTION = { type: 3, value: "JUNCTION" }; + _IfcPipeFittingTypeEnum.OBSTRUCTION = { type: 3, value: "OBSTRUCTION" }; + _IfcPipeFittingTypeEnum.TRANSITION = { type: 3, value: "TRANSITION" }; + _IfcPipeFittingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPipeFittingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPipeFittingTypeEnum = _IfcPipeFittingTypeEnum; + IFC2X32.IfcPipeFittingTypeEnum = IfcPipeFittingTypeEnum; + const _IfcPipeSegmentTypeEnum = class _IfcPipeSegmentTypeEnum { + }; + _IfcPipeSegmentTypeEnum.FLEXIBLESEGMENT = { type: 3, value: "FLEXIBLESEGMENT" }; + _IfcPipeSegmentTypeEnum.RIGIDSEGMENT = { type: 3, value: "RIGIDSEGMENT" }; + _IfcPipeSegmentTypeEnum.GUTTER = { type: 3, value: "GUTTER" }; + _IfcPipeSegmentTypeEnum.SPOOL = { type: 3, value: "SPOOL" }; + _IfcPipeSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPipeSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPipeSegmentTypeEnum = _IfcPipeSegmentTypeEnum; + IFC2X32.IfcPipeSegmentTypeEnum = IfcPipeSegmentTypeEnum; + const _IfcPlateTypeEnum = class _IfcPlateTypeEnum { + }; + _IfcPlateTypeEnum.CURTAIN_PANEL = { type: 3, value: "CURTAIN_PANEL" }; + _IfcPlateTypeEnum.SHEET = { type: 3, value: "SHEET" }; + _IfcPlateTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPlateTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPlateTypeEnum = _IfcPlateTypeEnum; + IFC2X32.IfcPlateTypeEnum = IfcPlateTypeEnum; + const _IfcProcedureTypeEnum = class _IfcProcedureTypeEnum { + }; + _IfcProcedureTypeEnum.ADVICE_CAUTION = { type: 3, value: "ADVICE_CAUTION" }; + _IfcProcedureTypeEnum.ADVICE_NOTE = { type: 3, value: "ADVICE_NOTE" }; + _IfcProcedureTypeEnum.ADVICE_WARNING = { type: 3, value: "ADVICE_WARNING" }; + _IfcProcedureTypeEnum.CALIBRATION = { type: 3, value: "CALIBRATION" }; + _IfcProcedureTypeEnum.DIAGNOSTIC = { type: 3, value: "DIAGNOSTIC" }; + _IfcProcedureTypeEnum.SHUTDOWN = { type: 3, value: "SHUTDOWN" }; + _IfcProcedureTypeEnum.STARTUP = { type: 3, value: "STARTUP" }; + _IfcProcedureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProcedureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProcedureTypeEnum = _IfcProcedureTypeEnum; + IFC2X32.IfcProcedureTypeEnum = IfcProcedureTypeEnum; + const _IfcProfileTypeEnum = class _IfcProfileTypeEnum { + }; + _IfcProfileTypeEnum.CURVE = { type: 3, value: "CURVE" }; + _IfcProfileTypeEnum.AREA = { type: 3, value: "AREA" }; + let IfcProfileTypeEnum = _IfcProfileTypeEnum; + IFC2X32.IfcProfileTypeEnum = IfcProfileTypeEnum; + const _IfcProjectOrderRecordTypeEnum = class _IfcProjectOrderRecordTypeEnum { + }; + _IfcProjectOrderRecordTypeEnum.CHANGE = { type: 3, value: "CHANGE" }; + _IfcProjectOrderRecordTypeEnum.MAINTENANCE = { type: 3, value: "MAINTENANCE" }; + _IfcProjectOrderRecordTypeEnum.MOVE = { type: 3, value: "MOVE" }; + _IfcProjectOrderRecordTypeEnum.PURCHASE = { type: 3, value: "PURCHASE" }; + _IfcProjectOrderRecordTypeEnum.WORK = { type: 3, value: "WORK" }; + _IfcProjectOrderRecordTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProjectOrderRecordTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProjectOrderRecordTypeEnum = _IfcProjectOrderRecordTypeEnum; + IFC2X32.IfcProjectOrderRecordTypeEnum = IfcProjectOrderRecordTypeEnum; + const _IfcProjectOrderTypeEnum = class _IfcProjectOrderTypeEnum { + }; + _IfcProjectOrderTypeEnum.CHANGEORDER = { type: 3, value: "CHANGEORDER" }; + _IfcProjectOrderTypeEnum.MAINTENANCEWORKORDER = { type: 3, value: "MAINTENANCEWORKORDER" }; + _IfcProjectOrderTypeEnum.MOVEORDER = { type: 3, value: "MOVEORDER" }; + _IfcProjectOrderTypeEnum.PURCHASEORDER = { type: 3, value: "PURCHASEORDER" }; + _IfcProjectOrderTypeEnum.WORKORDER = { type: 3, value: "WORKORDER" }; + _IfcProjectOrderTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProjectOrderTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProjectOrderTypeEnum = _IfcProjectOrderTypeEnum; + IFC2X32.IfcProjectOrderTypeEnum = IfcProjectOrderTypeEnum; + const _IfcProjectedOrTrueLengthEnum = class _IfcProjectedOrTrueLengthEnum { + }; + _IfcProjectedOrTrueLengthEnum.PROJECTED_LENGTH = { type: 3, value: "PROJECTED_LENGTH" }; + _IfcProjectedOrTrueLengthEnum.TRUE_LENGTH = { type: 3, value: "TRUE_LENGTH" }; + let IfcProjectedOrTrueLengthEnum = _IfcProjectedOrTrueLengthEnum; + IFC2X32.IfcProjectedOrTrueLengthEnum = IfcProjectedOrTrueLengthEnum; + const _IfcPropertySourceEnum = class _IfcPropertySourceEnum { + }; + _IfcPropertySourceEnum.DESIGN = { type: 3, value: "DESIGN" }; + _IfcPropertySourceEnum.DESIGNMAXIMUM = { type: 3, value: "DESIGNMAXIMUM" }; + _IfcPropertySourceEnum.DESIGNMINIMUM = { type: 3, value: "DESIGNMINIMUM" }; + _IfcPropertySourceEnum.SIMULATED = { type: 3, value: "SIMULATED" }; + _IfcPropertySourceEnum.ASBUILT = { type: 3, value: "ASBUILT" }; + _IfcPropertySourceEnum.COMMISSIONING = { type: 3, value: "COMMISSIONING" }; + _IfcPropertySourceEnum.MEASURED = { type: 3, value: "MEASURED" }; + _IfcPropertySourceEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPropertySourceEnum.NOTKNOWN = { type: 3, value: "NOTKNOWN" }; + let IfcPropertySourceEnum = _IfcPropertySourceEnum; + IFC2X32.IfcPropertySourceEnum = IfcPropertySourceEnum; + const _IfcProtectiveDeviceTypeEnum = class _IfcProtectiveDeviceTypeEnum { + }; + _IfcProtectiveDeviceTypeEnum.FUSEDISCONNECTOR = { type: 3, value: "FUSEDISCONNECTOR" }; + _IfcProtectiveDeviceTypeEnum.CIRCUITBREAKER = { type: 3, value: "CIRCUITBREAKER" }; + _IfcProtectiveDeviceTypeEnum.EARTHFAILUREDEVICE = { type: 3, value: "EARTHFAILUREDEVICE" }; + _IfcProtectiveDeviceTypeEnum.RESIDUALCURRENTCIRCUITBREAKER = { type: 3, value: "RESIDUALCURRENTCIRCUITBREAKER" }; + _IfcProtectiveDeviceTypeEnum.RESIDUALCURRENTSWITCH = { type: 3, value: "RESIDUALCURRENTSWITCH" }; + _IfcProtectiveDeviceTypeEnum.VARISTOR = { type: 3, value: "VARISTOR" }; + _IfcProtectiveDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProtectiveDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProtectiveDeviceTypeEnum = _IfcProtectiveDeviceTypeEnum; + IFC2X32.IfcProtectiveDeviceTypeEnum = IfcProtectiveDeviceTypeEnum; + const _IfcPumpTypeEnum = class _IfcPumpTypeEnum { + }; + _IfcPumpTypeEnum.CIRCULATOR = { type: 3, value: "CIRCULATOR" }; + _IfcPumpTypeEnum.ENDSUCTION = { type: 3, value: "ENDSUCTION" }; + _IfcPumpTypeEnum.SPLITCASE = { type: 3, value: "SPLITCASE" }; + _IfcPumpTypeEnum.VERTICALINLINE = { type: 3, value: "VERTICALINLINE" }; + _IfcPumpTypeEnum.VERTICALTURBINE = { type: 3, value: "VERTICALTURBINE" }; + _IfcPumpTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPumpTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPumpTypeEnum = _IfcPumpTypeEnum; + IFC2X32.IfcPumpTypeEnum = IfcPumpTypeEnum; + const _IfcRailingTypeEnum = class _IfcRailingTypeEnum { + }; + _IfcRailingTypeEnum.HANDRAIL = { type: 3, value: "HANDRAIL" }; + _IfcRailingTypeEnum.GUARDRAIL = { type: 3, value: "GUARDRAIL" }; + _IfcRailingTypeEnum.BALUSTRADE = { type: 3, value: "BALUSTRADE" }; + _IfcRailingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRailingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRailingTypeEnum = _IfcRailingTypeEnum; + IFC2X32.IfcRailingTypeEnum = IfcRailingTypeEnum; + const _IfcRampFlightTypeEnum = class _IfcRampFlightTypeEnum { + }; + _IfcRampFlightTypeEnum.STRAIGHT = { type: 3, value: "STRAIGHT" }; + _IfcRampFlightTypeEnum.SPIRAL = { type: 3, value: "SPIRAL" }; + _IfcRampFlightTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRampFlightTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRampFlightTypeEnum = _IfcRampFlightTypeEnum; + IFC2X32.IfcRampFlightTypeEnum = IfcRampFlightTypeEnum; + const _IfcRampTypeEnum = class _IfcRampTypeEnum { + }; + _IfcRampTypeEnum.STRAIGHT_RUN_RAMP = { type: 3, value: "STRAIGHT_RUN_RAMP" }; + _IfcRampTypeEnum.TWO_STRAIGHT_RUN_RAMP = { type: 3, value: "TWO_STRAIGHT_RUN_RAMP" }; + _IfcRampTypeEnum.QUARTER_TURN_RAMP = { type: 3, value: "QUARTER_TURN_RAMP" }; + _IfcRampTypeEnum.TWO_QUARTER_TURN_RAMP = { type: 3, value: "TWO_QUARTER_TURN_RAMP" }; + _IfcRampTypeEnum.HALF_TURN_RAMP = { type: 3, value: "HALF_TURN_RAMP" }; + _IfcRampTypeEnum.SPIRAL_RAMP = { type: 3, value: "SPIRAL_RAMP" }; + _IfcRampTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRampTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRampTypeEnum = _IfcRampTypeEnum; + IFC2X32.IfcRampTypeEnum = IfcRampTypeEnum; + const _IfcReflectanceMethodEnum = class _IfcReflectanceMethodEnum { + }; + _IfcReflectanceMethodEnum.BLINN = { type: 3, value: "BLINN" }; + _IfcReflectanceMethodEnum.FLAT = { type: 3, value: "FLAT" }; + _IfcReflectanceMethodEnum.GLASS = { type: 3, value: "GLASS" }; + _IfcReflectanceMethodEnum.MATT = { type: 3, value: "MATT" }; + _IfcReflectanceMethodEnum.METAL = { type: 3, value: "METAL" }; + _IfcReflectanceMethodEnum.MIRROR = { type: 3, value: "MIRROR" }; + _IfcReflectanceMethodEnum.PHONG = { type: 3, value: "PHONG" }; + _IfcReflectanceMethodEnum.PLASTIC = { type: 3, value: "PLASTIC" }; + _IfcReflectanceMethodEnum.STRAUSS = { type: 3, value: "STRAUSS" }; + _IfcReflectanceMethodEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReflectanceMethodEnum = _IfcReflectanceMethodEnum; + IFC2X32.IfcReflectanceMethodEnum = IfcReflectanceMethodEnum; + const _IfcReinforcingBarRoleEnum = class _IfcReinforcingBarRoleEnum { + }; + _IfcReinforcingBarRoleEnum.MAIN = { type: 3, value: "MAIN" }; + _IfcReinforcingBarRoleEnum.SHEAR = { type: 3, value: "SHEAR" }; + _IfcReinforcingBarRoleEnum.LIGATURE = { type: 3, value: "LIGATURE" }; + _IfcReinforcingBarRoleEnum.STUD = { type: 3, value: "STUD" }; + _IfcReinforcingBarRoleEnum.PUNCHING = { type: 3, value: "PUNCHING" }; + _IfcReinforcingBarRoleEnum.EDGE = { type: 3, value: "EDGE" }; + _IfcReinforcingBarRoleEnum.RING = { type: 3, value: "RING" }; + _IfcReinforcingBarRoleEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcReinforcingBarRoleEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReinforcingBarRoleEnum = _IfcReinforcingBarRoleEnum; + IFC2X32.IfcReinforcingBarRoleEnum = IfcReinforcingBarRoleEnum; + const _IfcReinforcingBarSurfaceEnum = class _IfcReinforcingBarSurfaceEnum { + }; + _IfcReinforcingBarSurfaceEnum.PLAIN = { type: 3, value: "PLAIN" }; + _IfcReinforcingBarSurfaceEnum.TEXTURED = { type: 3, value: "TEXTURED" }; + let IfcReinforcingBarSurfaceEnum = _IfcReinforcingBarSurfaceEnum; + IFC2X32.IfcReinforcingBarSurfaceEnum = IfcReinforcingBarSurfaceEnum; + const _IfcResourceConsumptionEnum = class _IfcResourceConsumptionEnum { + }; + _IfcResourceConsumptionEnum.CONSUMED = { type: 3, value: "CONSUMED" }; + _IfcResourceConsumptionEnum.PARTIALLYCONSUMED = { type: 3, value: "PARTIALLYCONSUMED" }; + _IfcResourceConsumptionEnum.NOTCONSUMED = { type: 3, value: "NOTCONSUMED" }; + _IfcResourceConsumptionEnum.OCCUPIED = { type: 3, value: "OCCUPIED" }; + _IfcResourceConsumptionEnum.PARTIALLYOCCUPIED = { type: 3, value: "PARTIALLYOCCUPIED" }; + _IfcResourceConsumptionEnum.NOTOCCUPIED = { type: 3, value: "NOTOCCUPIED" }; + _IfcResourceConsumptionEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcResourceConsumptionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcResourceConsumptionEnum = _IfcResourceConsumptionEnum; + IFC2X32.IfcResourceConsumptionEnum = IfcResourceConsumptionEnum; + const _IfcRibPlateDirectionEnum = class _IfcRibPlateDirectionEnum { + }; + _IfcRibPlateDirectionEnum.DIRECTION_X = { type: 3, value: "DIRECTION_X" }; + _IfcRibPlateDirectionEnum.DIRECTION_Y = { type: 3, value: "DIRECTION_Y" }; + let IfcRibPlateDirectionEnum = _IfcRibPlateDirectionEnum; + IFC2X32.IfcRibPlateDirectionEnum = IfcRibPlateDirectionEnum; + const _IfcRoleEnum = class _IfcRoleEnum { + }; + _IfcRoleEnum.SUPPLIER = { type: 3, value: "SUPPLIER" }; + _IfcRoleEnum.MANUFACTURER = { type: 3, value: "MANUFACTURER" }; + _IfcRoleEnum.CONTRACTOR = { type: 3, value: "CONTRACTOR" }; + _IfcRoleEnum.SUBCONTRACTOR = { type: 3, value: "SUBCONTRACTOR" }; + _IfcRoleEnum.ARCHITECT = { type: 3, value: "ARCHITECT" }; + _IfcRoleEnum.STRUCTURALENGINEER = { type: 3, value: "STRUCTURALENGINEER" }; + _IfcRoleEnum.COSTENGINEER = { type: 3, value: "COSTENGINEER" }; + _IfcRoleEnum.CLIENT = { type: 3, value: "CLIENT" }; + _IfcRoleEnum.BUILDINGOWNER = { type: 3, value: "BUILDINGOWNER" }; + _IfcRoleEnum.BUILDINGOPERATOR = { type: 3, value: "BUILDINGOPERATOR" }; + _IfcRoleEnum.MECHANICALENGINEER = { type: 3, value: "MECHANICALENGINEER" }; + _IfcRoleEnum.ELECTRICALENGINEER = { type: 3, value: "ELECTRICALENGINEER" }; + _IfcRoleEnum.PROJECTMANAGER = { type: 3, value: "PROJECTMANAGER" }; + _IfcRoleEnum.FACILITIESMANAGER = { type: 3, value: "FACILITIESMANAGER" }; + _IfcRoleEnum.CIVILENGINEER = { type: 3, value: "CIVILENGINEER" }; + _IfcRoleEnum.COMISSIONINGENGINEER = { type: 3, value: "COMISSIONINGENGINEER" }; + _IfcRoleEnum.ENGINEER = { type: 3, value: "ENGINEER" }; + _IfcRoleEnum.OWNER = { type: 3, value: "OWNER" }; + _IfcRoleEnum.CONSULTANT = { type: 3, value: "CONSULTANT" }; + _IfcRoleEnum.CONSTRUCTIONMANAGER = { type: 3, value: "CONSTRUCTIONMANAGER" }; + _IfcRoleEnum.FIELDCONSTRUCTIONMANAGER = { type: 3, value: "FIELDCONSTRUCTIONMANAGER" }; + _IfcRoleEnum.RESELLER = { type: 3, value: "RESELLER" }; + _IfcRoleEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcRoleEnum = _IfcRoleEnum; + IFC2X32.IfcRoleEnum = IfcRoleEnum; + const _IfcRoofTypeEnum = class _IfcRoofTypeEnum { + }; + _IfcRoofTypeEnum.FLAT_ROOF = { type: 3, value: "FLAT_ROOF" }; + _IfcRoofTypeEnum.SHED_ROOF = { type: 3, value: "SHED_ROOF" }; + _IfcRoofTypeEnum.GABLE_ROOF = { type: 3, value: "GABLE_ROOF" }; + _IfcRoofTypeEnum.HIP_ROOF = { type: 3, value: "HIP_ROOF" }; + _IfcRoofTypeEnum.HIPPED_GABLE_ROOF = { type: 3, value: "HIPPED_GABLE_ROOF" }; + _IfcRoofTypeEnum.GAMBREL_ROOF = { type: 3, value: "GAMBREL_ROOF" }; + _IfcRoofTypeEnum.MANSARD_ROOF = { type: 3, value: "MANSARD_ROOF" }; + _IfcRoofTypeEnum.BARREL_ROOF = { type: 3, value: "BARREL_ROOF" }; + _IfcRoofTypeEnum.RAINBOW_ROOF = { type: 3, value: "RAINBOW_ROOF" }; + _IfcRoofTypeEnum.BUTTERFLY_ROOF = { type: 3, value: "BUTTERFLY_ROOF" }; + _IfcRoofTypeEnum.PAVILION_ROOF = { type: 3, value: "PAVILION_ROOF" }; + _IfcRoofTypeEnum.DOME_ROOF = { type: 3, value: "DOME_ROOF" }; + _IfcRoofTypeEnum.FREEFORM = { type: 3, value: "FREEFORM" }; + _IfcRoofTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRoofTypeEnum = _IfcRoofTypeEnum; + IFC2X32.IfcRoofTypeEnum = IfcRoofTypeEnum; + const _IfcSIPrefix = class _IfcSIPrefix { + }; + _IfcSIPrefix.EXA = { type: 3, value: "EXA" }; + _IfcSIPrefix.PETA = { type: 3, value: "PETA" }; + _IfcSIPrefix.TERA = { type: 3, value: "TERA" }; + _IfcSIPrefix.GIGA = { type: 3, value: "GIGA" }; + _IfcSIPrefix.MEGA = { type: 3, value: "MEGA" }; + _IfcSIPrefix.KILO = { type: 3, value: "KILO" }; + _IfcSIPrefix.HECTO = { type: 3, value: "HECTO" }; + _IfcSIPrefix.DECA = { type: 3, value: "DECA" }; + _IfcSIPrefix.DECI = { type: 3, value: "DECI" }; + _IfcSIPrefix.CENTI = { type: 3, value: "CENTI" }; + _IfcSIPrefix.MILLI = { type: 3, value: "MILLI" }; + _IfcSIPrefix.MICRO = { type: 3, value: "MICRO" }; + _IfcSIPrefix.NANO = { type: 3, value: "NANO" }; + _IfcSIPrefix.PICO = { type: 3, value: "PICO" }; + _IfcSIPrefix.FEMTO = { type: 3, value: "FEMTO" }; + _IfcSIPrefix.ATTO = { type: 3, value: "ATTO" }; + let IfcSIPrefix = _IfcSIPrefix; + IFC2X32.IfcSIPrefix = IfcSIPrefix; + const _IfcSIUnitName = class _IfcSIUnitName { + }; + _IfcSIUnitName.AMPERE = { type: 3, value: "AMPERE" }; + _IfcSIUnitName.BECQUEREL = { type: 3, value: "BECQUEREL" }; + _IfcSIUnitName.CANDELA = { type: 3, value: "CANDELA" }; + _IfcSIUnitName.COULOMB = { type: 3, value: "COULOMB" }; + _IfcSIUnitName.CUBIC_METRE = { type: 3, value: "CUBIC_METRE" }; + _IfcSIUnitName.DEGREE_CELSIUS = { type: 3, value: "DEGREE_CELSIUS" }; + _IfcSIUnitName.FARAD = { type: 3, value: "FARAD" }; + _IfcSIUnitName.GRAM = { type: 3, value: "GRAM" }; + _IfcSIUnitName.GRAY = { type: 3, value: "GRAY" }; + _IfcSIUnitName.HENRY = { type: 3, value: "HENRY" }; + _IfcSIUnitName.HERTZ = { type: 3, value: "HERTZ" }; + _IfcSIUnitName.JOULE = { type: 3, value: "JOULE" }; + _IfcSIUnitName.KELVIN = { type: 3, value: "KELVIN" }; + _IfcSIUnitName.LUMEN = { type: 3, value: "LUMEN" }; + _IfcSIUnitName.LUX = { type: 3, value: "LUX" }; + _IfcSIUnitName.METRE = { type: 3, value: "METRE" }; + _IfcSIUnitName.MOLE = { type: 3, value: "MOLE" }; + _IfcSIUnitName.NEWTON = { type: 3, value: "NEWTON" }; + _IfcSIUnitName.OHM = { type: 3, value: "OHM" }; + _IfcSIUnitName.PASCAL = { type: 3, value: "PASCAL" }; + _IfcSIUnitName.RADIAN = { type: 3, value: "RADIAN" }; + _IfcSIUnitName.SECOND = { type: 3, value: "SECOND" }; + _IfcSIUnitName.SIEMENS = { type: 3, value: "SIEMENS" }; + _IfcSIUnitName.SIEVERT = { type: 3, value: "SIEVERT" }; + _IfcSIUnitName.SQUARE_METRE = { type: 3, value: "SQUARE_METRE" }; + _IfcSIUnitName.STERADIAN = { type: 3, value: "STERADIAN" }; + _IfcSIUnitName.TESLA = { type: 3, value: "TESLA" }; + _IfcSIUnitName.VOLT = { type: 3, value: "VOLT" }; + _IfcSIUnitName.WATT = { type: 3, value: "WATT" }; + _IfcSIUnitName.WEBER = { type: 3, value: "WEBER" }; + let IfcSIUnitName = _IfcSIUnitName; + IFC2X32.IfcSIUnitName = IfcSIUnitName; + const _IfcSanitaryTerminalTypeEnum = class _IfcSanitaryTerminalTypeEnum { + }; + _IfcSanitaryTerminalTypeEnum.BATH = { type: 3, value: "BATH" }; + _IfcSanitaryTerminalTypeEnum.BIDET = { type: 3, value: "BIDET" }; + _IfcSanitaryTerminalTypeEnum.CISTERN = { type: 3, value: "CISTERN" }; + _IfcSanitaryTerminalTypeEnum.SHOWER = { type: 3, value: "SHOWER" }; + _IfcSanitaryTerminalTypeEnum.SINK = { type: 3, value: "SINK" }; + _IfcSanitaryTerminalTypeEnum.SANITARYFOUNTAIN = { type: 3, value: "SANITARYFOUNTAIN" }; + _IfcSanitaryTerminalTypeEnum.TOILETPAN = { type: 3, value: "TOILETPAN" }; + _IfcSanitaryTerminalTypeEnum.URINAL = { type: 3, value: "URINAL" }; + _IfcSanitaryTerminalTypeEnum.WASHHANDBASIN = { type: 3, value: "WASHHANDBASIN" }; + _IfcSanitaryTerminalTypeEnum.WCSEAT = { type: 3, value: "WCSEAT" }; + _IfcSanitaryTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSanitaryTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSanitaryTerminalTypeEnum = _IfcSanitaryTerminalTypeEnum; + IFC2X32.IfcSanitaryTerminalTypeEnum = IfcSanitaryTerminalTypeEnum; + const _IfcSectionTypeEnum = class _IfcSectionTypeEnum { + }; + _IfcSectionTypeEnum.UNIFORM = { type: 3, value: "UNIFORM" }; + _IfcSectionTypeEnum.TAPERED = { type: 3, value: "TAPERED" }; + let IfcSectionTypeEnum = _IfcSectionTypeEnum; + IFC2X32.IfcSectionTypeEnum = IfcSectionTypeEnum; + const _IfcSensorTypeEnum = class _IfcSensorTypeEnum { + }; + _IfcSensorTypeEnum.CO2SENSOR = { type: 3, value: "CO2SENSOR" }; + _IfcSensorTypeEnum.FIRESENSOR = { type: 3, value: "FIRESENSOR" }; + _IfcSensorTypeEnum.FLOWSENSOR = { type: 3, value: "FLOWSENSOR" }; + _IfcSensorTypeEnum.GASSENSOR = { type: 3, value: "GASSENSOR" }; + _IfcSensorTypeEnum.HEATSENSOR = { type: 3, value: "HEATSENSOR" }; + _IfcSensorTypeEnum.HUMIDITYSENSOR = { type: 3, value: "HUMIDITYSENSOR" }; + _IfcSensorTypeEnum.LIGHTSENSOR = { type: 3, value: "LIGHTSENSOR" }; + _IfcSensorTypeEnum.MOISTURESENSOR = { type: 3, value: "MOISTURESENSOR" }; + _IfcSensorTypeEnum.MOVEMENTSENSOR = { type: 3, value: "MOVEMENTSENSOR" }; + _IfcSensorTypeEnum.PRESSURESENSOR = { type: 3, value: "PRESSURESENSOR" }; + _IfcSensorTypeEnum.SMOKESENSOR = { type: 3, value: "SMOKESENSOR" }; + _IfcSensorTypeEnum.SOUNDSENSOR = { type: 3, value: "SOUNDSENSOR" }; + _IfcSensorTypeEnum.TEMPERATURESENSOR = { type: 3, value: "TEMPERATURESENSOR" }; + _IfcSensorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSensorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSensorTypeEnum = _IfcSensorTypeEnum; + IFC2X32.IfcSensorTypeEnum = IfcSensorTypeEnum; + const _IfcSequenceEnum = class _IfcSequenceEnum { + }; + _IfcSequenceEnum.START_START = { type: 3, value: "START_START" }; + _IfcSequenceEnum.START_FINISH = { type: 3, value: "START_FINISH" }; + _IfcSequenceEnum.FINISH_START = { type: 3, value: "FINISH_START" }; + _IfcSequenceEnum.FINISH_FINISH = { type: 3, value: "FINISH_FINISH" }; + _IfcSequenceEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSequenceEnum = _IfcSequenceEnum; + IFC2X32.IfcSequenceEnum = IfcSequenceEnum; + const _IfcServiceLifeFactorTypeEnum = class _IfcServiceLifeFactorTypeEnum { + }; + _IfcServiceLifeFactorTypeEnum.A_QUALITYOFCOMPONENTS = { type: 3, value: "A_QUALITYOFCOMPONENTS" }; + _IfcServiceLifeFactorTypeEnum.B_DESIGNLEVEL = { type: 3, value: "B_DESIGNLEVEL" }; + _IfcServiceLifeFactorTypeEnum.C_WORKEXECUTIONLEVEL = { type: 3, value: "C_WORKEXECUTIONLEVEL" }; + _IfcServiceLifeFactorTypeEnum.D_INDOORENVIRONMENT = { type: 3, value: "D_INDOORENVIRONMENT" }; + _IfcServiceLifeFactorTypeEnum.E_OUTDOORENVIRONMENT = { type: 3, value: "E_OUTDOORENVIRONMENT" }; + _IfcServiceLifeFactorTypeEnum.F_INUSECONDITIONS = { type: 3, value: "F_INUSECONDITIONS" }; + _IfcServiceLifeFactorTypeEnum.G_MAINTENANCELEVEL = { type: 3, value: "G_MAINTENANCELEVEL" }; + _IfcServiceLifeFactorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcServiceLifeFactorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcServiceLifeFactorTypeEnum = _IfcServiceLifeFactorTypeEnum; + IFC2X32.IfcServiceLifeFactorTypeEnum = IfcServiceLifeFactorTypeEnum; + const _IfcServiceLifeTypeEnum = class _IfcServiceLifeTypeEnum { + }; + _IfcServiceLifeTypeEnum.ACTUALSERVICELIFE = { type: 3, value: "ACTUALSERVICELIFE" }; + _IfcServiceLifeTypeEnum.EXPECTEDSERVICELIFE = { type: 3, value: "EXPECTEDSERVICELIFE" }; + _IfcServiceLifeTypeEnum.OPTIMISTICREFERENCESERVICELIFE = { type: 3, value: "OPTIMISTICREFERENCESERVICELIFE" }; + _IfcServiceLifeTypeEnum.PESSIMISTICREFERENCESERVICELIFE = { type: 3, value: "PESSIMISTICREFERENCESERVICELIFE" }; + _IfcServiceLifeTypeEnum.REFERENCESERVICELIFE = { type: 3, value: "REFERENCESERVICELIFE" }; + let IfcServiceLifeTypeEnum = _IfcServiceLifeTypeEnum; + IFC2X32.IfcServiceLifeTypeEnum = IfcServiceLifeTypeEnum; + const _IfcSlabTypeEnum = class _IfcSlabTypeEnum { + }; + _IfcSlabTypeEnum.FLOOR = { type: 3, value: "FLOOR" }; + _IfcSlabTypeEnum.ROOF = { type: 3, value: "ROOF" }; + _IfcSlabTypeEnum.LANDING = { type: 3, value: "LANDING" }; + _IfcSlabTypeEnum.BASESLAB = { type: 3, value: "BASESLAB" }; + _IfcSlabTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSlabTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSlabTypeEnum = _IfcSlabTypeEnum; + IFC2X32.IfcSlabTypeEnum = IfcSlabTypeEnum; + const _IfcSoundScaleEnum = class _IfcSoundScaleEnum { + }; + _IfcSoundScaleEnum.DBA = { type: 3, value: "DBA" }; + _IfcSoundScaleEnum.DBB = { type: 3, value: "DBB" }; + _IfcSoundScaleEnum.DBC = { type: 3, value: "DBC" }; + _IfcSoundScaleEnum.NC = { type: 3, value: "NC" }; + _IfcSoundScaleEnum.NR = { type: 3, value: "NR" }; + _IfcSoundScaleEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSoundScaleEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSoundScaleEnum = _IfcSoundScaleEnum; + IFC2X32.IfcSoundScaleEnum = IfcSoundScaleEnum; + const _IfcSpaceHeaterTypeEnum = class _IfcSpaceHeaterTypeEnum { + }; + _IfcSpaceHeaterTypeEnum.SECTIONALRADIATOR = { type: 3, value: "SECTIONALRADIATOR" }; + _IfcSpaceHeaterTypeEnum.PANELRADIATOR = { type: 3, value: "PANELRADIATOR" }; + _IfcSpaceHeaterTypeEnum.TUBULARRADIATOR = { type: 3, value: "TUBULARRADIATOR" }; + _IfcSpaceHeaterTypeEnum.CONVECTOR = { type: 3, value: "CONVECTOR" }; + _IfcSpaceHeaterTypeEnum.BASEBOARDHEATER = { type: 3, value: "BASEBOARDHEATER" }; + _IfcSpaceHeaterTypeEnum.FINNEDTUBEUNIT = { type: 3, value: "FINNEDTUBEUNIT" }; + _IfcSpaceHeaterTypeEnum.UNITHEATER = { type: 3, value: "UNITHEATER" }; + _IfcSpaceHeaterTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSpaceHeaterTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSpaceHeaterTypeEnum = _IfcSpaceHeaterTypeEnum; + IFC2X32.IfcSpaceHeaterTypeEnum = IfcSpaceHeaterTypeEnum; + const _IfcSpaceTypeEnum = class _IfcSpaceTypeEnum { + }; + _IfcSpaceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSpaceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSpaceTypeEnum = _IfcSpaceTypeEnum; + IFC2X32.IfcSpaceTypeEnum = IfcSpaceTypeEnum; + const _IfcStackTerminalTypeEnum = class _IfcStackTerminalTypeEnum { + }; + _IfcStackTerminalTypeEnum.BIRDCAGE = { type: 3, value: "BIRDCAGE" }; + _IfcStackTerminalTypeEnum.COWL = { type: 3, value: "COWL" }; + _IfcStackTerminalTypeEnum.RAINWATERHOPPER = { type: 3, value: "RAINWATERHOPPER" }; + _IfcStackTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStackTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStackTerminalTypeEnum = _IfcStackTerminalTypeEnum; + IFC2X32.IfcStackTerminalTypeEnum = IfcStackTerminalTypeEnum; + const _IfcStairFlightTypeEnum = class _IfcStairFlightTypeEnum { + }; + _IfcStairFlightTypeEnum.STRAIGHT = { type: 3, value: "STRAIGHT" }; + _IfcStairFlightTypeEnum.WINDER = { type: 3, value: "WINDER" }; + _IfcStairFlightTypeEnum.SPIRAL = { type: 3, value: "SPIRAL" }; + _IfcStairFlightTypeEnum.CURVED = { type: 3, value: "CURVED" }; + _IfcStairFlightTypeEnum.FREEFORM = { type: 3, value: "FREEFORM" }; + _IfcStairFlightTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStairFlightTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStairFlightTypeEnum = _IfcStairFlightTypeEnum; + IFC2X32.IfcStairFlightTypeEnum = IfcStairFlightTypeEnum; + const _IfcStairTypeEnum = class _IfcStairTypeEnum { + }; + _IfcStairTypeEnum.STRAIGHT_RUN_STAIR = { type: 3, value: "STRAIGHT_RUN_STAIR" }; + _IfcStairTypeEnum.TWO_STRAIGHT_RUN_STAIR = { type: 3, value: "TWO_STRAIGHT_RUN_STAIR" }; + _IfcStairTypeEnum.QUARTER_WINDING_STAIR = { type: 3, value: "QUARTER_WINDING_STAIR" }; + _IfcStairTypeEnum.QUARTER_TURN_STAIR = { type: 3, value: "QUARTER_TURN_STAIR" }; + _IfcStairTypeEnum.HALF_WINDING_STAIR = { type: 3, value: "HALF_WINDING_STAIR" }; + _IfcStairTypeEnum.HALF_TURN_STAIR = { type: 3, value: "HALF_TURN_STAIR" }; + _IfcStairTypeEnum.TWO_QUARTER_WINDING_STAIR = { type: 3, value: "TWO_QUARTER_WINDING_STAIR" }; + _IfcStairTypeEnum.TWO_QUARTER_TURN_STAIR = { type: 3, value: "TWO_QUARTER_TURN_STAIR" }; + _IfcStairTypeEnum.THREE_QUARTER_WINDING_STAIR = { type: 3, value: "THREE_QUARTER_WINDING_STAIR" }; + _IfcStairTypeEnum.THREE_QUARTER_TURN_STAIR = { type: 3, value: "THREE_QUARTER_TURN_STAIR" }; + _IfcStairTypeEnum.SPIRAL_STAIR = { type: 3, value: "SPIRAL_STAIR" }; + _IfcStairTypeEnum.DOUBLE_RETURN_STAIR = { type: 3, value: "DOUBLE_RETURN_STAIR" }; + _IfcStairTypeEnum.CURVED_RUN_STAIR = { type: 3, value: "CURVED_RUN_STAIR" }; + _IfcStairTypeEnum.TWO_CURVED_RUN_STAIR = { type: 3, value: "TWO_CURVED_RUN_STAIR" }; + _IfcStairTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStairTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStairTypeEnum = _IfcStairTypeEnum; + IFC2X32.IfcStairTypeEnum = IfcStairTypeEnum; + const _IfcStateEnum = class _IfcStateEnum { + }; + _IfcStateEnum.READWRITE = { type: 3, value: "READWRITE" }; + _IfcStateEnum.READONLY = { type: 3, value: "READONLY" }; + _IfcStateEnum.LOCKED = { type: 3, value: "LOCKED" }; + _IfcStateEnum.READWRITELOCKED = { type: 3, value: "READWRITELOCKED" }; + _IfcStateEnum.READONLYLOCKED = { type: 3, value: "READONLYLOCKED" }; + let IfcStateEnum = _IfcStateEnum; + IFC2X32.IfcStateEnum = IfcStateEnum; + const _IfcStructuralCurveTypeEnum = class _IfcStructuralCurveTypeEnum { + }; + _IfcStructuralCurveTypeEnum.RIGID_JOINED_MEMBER = { type: 3, value: "RIGID_JOINED_MEMBER" }; + _IfcStructuralCurveTypeEnum.PIN_JOINED_MEMBER = { type: 3, value: "PIN_JOINED_MEMBER" }; + _IfcStructuralCurveTypeEnum.CABLE = { type: 3, value: "CABLE" }; + _IfcStructuralCurveTypeEnum.TENSION_MEMBER = { type: 3, value: "TENSION_MEMBER" }; + _IfcStructuralCurveTypeEnum.COMPRESSION_MEMBER = { type: 3, value: "COMPRESSION_MEMBER" }; + _IfcStructuralCurveTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStructuralCurveTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStructuralCurveTypeEnum = _IfcStructuralCurveTypeEnum; + IFC2X32.IfcStructuralCurveTypeEnum = IfcStructuralCurveTypeEnum; + const _IfcStructuralSurfaceTypeEnum = class _IfcStructuralSurfaceTypeEnum { + }; + _IfcStructuralSurfaceTypeEnum.BENDING_ELEMENT = { type: 3, value: "BENDING_ELEMENT" }; + _IfcStructuralSurfaceTypeEnum.MEMBRANE_ELEMENT = { type: 3, value: "MEMBRANE_ELEMENT" }; + _IfcStructuralSurfaceTypeEnum.SHELL = { type: 3, value: "SHELL" }; + _IfcStructuralSurfaceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStructuralSurfaceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStructuralSurfaceTypeEnum = _IfcStructuralSurfaceTypeEnum; + IFC2X32.IfcStructuralSurfaceTypeEnum = IfcStructuralSurfaceTypeEnum; + const _IfcSurfaceSide = class _IfcSurfaceSide { + }; + _IfcSurfaceSide.POSITIVE = { type: 3, value: "POSITIVE" }; + _IfcSurfaceSide.NEGATIVE = { type: 3, value: "NEGATIVE" }; + _IfcSurfaceSide.BOTH = { type: 3, value: "BOTH" }; + let IfcSurfaceSide = _IfcSurfaceSide; + IFC2X32.IfcSurfaceSide = IfcSurfaceSide; + const _IfcSurfaceTextureEnum = class _IfcSurfaceTextureEnum { + }; + _IfcSurfaceTextureEnum.BUMP = { type: 3, value: "BUMP" }; + _IfcSurfaceTextureEnum.OPACITY = { type: 3, value: "OPACITY" }; + _IfcSurfaceTextureEnum.REFLECTION = { type: 3, value: "REFLECTION" }; + _IfcSurfaceTextureEnum.SELFILLUMINATION = { type: 3, value: "SELFILLUMINATION" }; + _IfcSurfaceTextureEnum.SHININESS = { type: 3, value: "SHININESS" }; + _IfcSurfaceTextureEnum.SPECULAR = { type: 3, value: "SPECULAR" }; + _IfcSurfaceTextureEnum.TEXTURE = { type: 3, value: "TEXTURE" }; + _IfcSurfaceTextureEnum.TRANSPARENCYMAP = { type: 3, value: "TRANSPARENCYMAP" }; + _IfcSurfaceTextureEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSurfaceTextureEnum = _IfcSurfaceTextureEnum; + IFC2X32.IfcSurfaceTextureEnum = IfcSurfaceTextureEnum; + const _IfcSwitchingDeviceTypeEnum = class _IfcSwitchingDeviceTypeEnum { + }; + _IfcSwitchingDeviceTypeEnum.CONTACTOR = { type: 3, value: "CONTACTOR" }; + _IfcSwitchingDeviceTypeEnum.EMERGENCYSTOP = { type: 3, value: "EMERGENCYSTOP" }; + _IfcSwitchingDeviceTypeEnum.STARTER = { type: 3, value: "STARTER" }; + _IfcSwitchingDeviceTypeEnum.SWITCHDISCONNECTOR = { type: 3, value: "SWITCHDISCONNECTOR" }; + _IfcSwitchingDeviceTypeEnum.TOGGLESWITCH = { type: 3, value: "TOGGLESWITCH" }; + _IfcSwitchingDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSwitchingDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSwitchingDeviceTypeEnum = _IfcSwitchingDeviceTypeEnum; + IFC2X32.IfcSwitchingDeviceTypeEnum = IfcSwitchingDeviceTypeEnum; + const _IfcTankTypeEnum = class _IfcTankTypeEnum { + }; + _IfcTankTypeEnum.PREFORMED = { type: 3, value: "PREFORMED" }; + _IfcTankTypeEnum.SECTIONAL = { type: 3, value: "SECTIONAL" }; + _IfcTankTypeEnum.EXPANSION = { type: 3, value: "EXPANSION" }; + _IfcTankTypeEnum.PRESSUREVESSEL = { type: 3, value: "PRESSUREVESSEL" }; + _IfcTankTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTankTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTankTypeEnum = _IfcTankTypeEnum; + IFC2X32.IfcTankTypeEnum = IfcTankTypeEnum; + const _IfcTendonTypeEnum = class _IfcTendonTypeEnum { + }; + _IfcTendonTypeEnum.STRAND = { type: 3, value: "STRAND" }; + _IfcTendonTypeEnum.WIRE = { type: 3, value: "WIRE" }; + _IfcTendonTypeEnum.BAR = { type: 3, value: "BAR" }; + _IfcTendonTypeEnum.COATED = { type: 3, value: "COATED" }; + _IfcTendonTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTendonTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTendonTypeEnum = _IfcTendonTypeEnum; + IFC2X32.IfcTendonTypeEnum = IfcTendonTypeEnum; + const _IfcTextPath = class _IfcTextPath { + }; + _IfcTextPath.LEFT = { type: 3, value: "LEFT" }; + _IfcTextPath.RIGHT = { type: 3, value: "RIGHT" }; + _IfcTextPath.UP = { type: 3, value: "UP" }; + _IfcTextPath.DOWN = { type: 3, value: "DOWN" }; + let IfcTextPath = _IfcTextPath; + IFC2X32.IfcTextPath = IfcTextPath; + const _IfcThermalLoadSourceEnum = class _IfcThermalLoadSourceEnum { + }; + _IfcThermalLoadSourceEnum.PEOPLE = { type: 3, value: "PEOPLE" }; + _IfcThermalLoadSourceEnum.LIGHTING = { type: 3, value: "LIGHTING" }; + _IfcThermalLoadSourceEnum.EQUIPMENT = { type: 3, value: "EQUIPMENT" }; + _IfcThermalLoadSourceEnum.VENTILATIONINDOORAIR = { type: 3, value: "VENTILATIONINDOORAIR" }; + _IfcThermalLoadSourceEnum.VENTILATIONOUTSIDEAIR = { type: 3, value: "VENTILATIONOUTSIDEAIR" }; + _IfcThermalLoadSourceEnum.RECIRCULATEDAIR = { type: 3, value: "RECIRCULATEDAIR" }; + _IfcThermalLoadSourceEnum.EXHAUSTAIR = { type: 3, value: "EXHAUSTAIR" }; + _IfcThermalLoadSourceEnum.AIREXCHANGERATE = { type: 3, value: "AIREXCHANGERATE" }; + _IfcThermalLoadSourceEnum.DRYBULBTEMPERATURE = { type: 3, value: "DRYBULBTEMPERATURE" }; + _IfcThermalLoadSourceEnum.RELATIVEHUMIDITY = { type: 3, value: "RELATIVEHUMIDITY" }; + _IfcThermalLoadSourceEnum.INFILTRATION = { type: 3, value: "INFILTRATION" }; + _IfcThermalLoadSourceEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcThermalLoadSourceEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcThermalLoadSourceEnum = _IfcThermalLoadSourceEnum; + IFC2X32.IfcThermalLoadSourceEnum = IfcThermalLoadSourceEnum; + const _IfcThermalLoadTypeEnum = class _IfcThermalLoadTypeEnum { + }; + _IfcThermalLoadTypeEnum.SENSIBLE = { type: 3, value: "SENSIBLE" }; + _IfcThermalLoadTypeEnum.LATENT = { type: 3, value: "LATENT" }; + _IfcThermalLoadTypeEnum.RADIANT = { type: 3, value: "RADIANT" }; + _IfcThermalLoadTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcThermalLoadTypeEnum = _IfcThermalLoadTypeEnum; + IFC2X32.IfcThermalLoadTypeEnum = IfcThermalLoadTypeEnum; + const _IfcTimeSeriesDataTypeEnum = class _IfcTimeSeriesDataTypeEnum { + }; + _IfcTimeSeriesDataTypeEnum.CONTINUOUS = { type: 3, value: "CONTINUOUS" }; + _IfcTimeSeriesDataTypeEnum.DISCRETE = { type: 3, value: "DISCRETE" }; + _IfcTimeSeriesDataTypeEnum.DISCRETEBINARY = { type: 3, value: "DISCRETEBINARY" }; + _IfcTimeSeriesDataTypeEnum.PIECEWISEBINARY = { type: 3, value: "PIECEWISEBINARY" }; + _IfcTimeSeriesDataTypeEnum.PIECEWISECONSTANT = { type: 3, value: "PIECEWISECONSTANT" }; + _IfcTimeSeriesDataTypeEnum.PIECEWISECONTINUOUS = { type: 3, value: "PIECEWISECONTINUOUS" }; + _IfcTimeSeriesDataTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTimeSeriesDataTypeEnum = _IfcTimeSeriesDataTypeEnum; + IFC2X32.IfcTimeSeriesDataTypeEnum = IfcTimeSeriesDataTypeEnum; + const _IfcTimeSeriesScheduleTypeEnum = class _IfcTimeSeriesScheduleTypeEnum { + }; + _IfcTimeSeriesScheduleTypeEnum.ANNUAL = { type: 3, value: "ANNUAL" }; + _IfcTimeSeriesScheduleTypeEnum.MONTHLY = { type: 3, value: "MONTHLY" }; + _IfcTimeSeriesScheduleTypeEnum.WEEKLY = { type: 3, value: "WEEKLY" }; + _IfcTimeSeriesScheduleTypeEnum.DAILY = { type: 3, value: "DAILY" }; + _IfcTimeSeriesScheduleTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTimeSeriesScheduleTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTimeSeriesScheduleTypeEnum = _IfcTimeSeriesScheduleTypeEnum; + IFC2X32.IfcTimeSeriesScheduleTypeEnum = IfcTimeSeriesScheduleTypeEnum; + const _IfcTransformerTypeEnum = class _IfcTransformerTypeEnum { + }; + _IfcTransformerTypeEnum.CURRENT = { type: 3, value: "CURRENT" }; + _IfcTransformerTypeEnum.FREQUENCY = { type: 3, value: "FREQUENCY" }; + _IfcTransformerTypeEnum.VOLTAGE = { type: 3, value: "VOLTAGE" }; + _IfcTransformerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTransformerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTransformerTypeEnum = _IfcTransformerTypeEnum; + IFC2X32.IfcTransformerTypeEnum = IfcTransformerTypeEnum; + const _IfcTransitionCode = class _IfcTransitionCode { + }; + _IfcTransitionCode.DISCONTINUOUS = { type: 3, value: "DISCONTINUOUS" }; + _IfcTransitionCode.CONTINUOUS = { type: 3, value: "CONTINUOUS" }; + _IfcTransitionCode.CONTSAMEGRADIENT = { type: 3, value: "CONTSAMEGRADIENT" }; + _IfcTransitionCode.CONTSAMEGRADIENTSAMECURVATURE = { type: 3, value: "CONTSAMEGRADIENTSAMECURVATURE" }; + let IfcTransitionCode = _IfcTransitionCode; + IFC2X32.IfcTransitionCode = IfcTransitionCode; + const _IfcTransportElementTypeEnum = class _IfcTransportElementTypeEnum { + }; + _IfcTransportElementTypeEnum.ELEVATOR = { type: 3, value: "ELEVATOR" }; + _IfcTransportElementTypeEnum.ESCALATOR = { type: 3, value: "ESCALATOR" }; + _IfcTransportElementTypeEnum.MOVINGWALKWAY = { type: 3, value: "MOVINGWALKWAY" }; + _IfcTransportElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTransportElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTransportElementTypeEnum = _IfcTransportElementTypeEnum; + IFC2X32.IfcTransportElementTypeEnum = IfcTransportElementTypeEnum; + const _IfcTrimmingPreference = class _IfcTrimmingPreference { + }; + _IfcTrimmingPreference.CARTESIAN = { type: 3, value: "CARTESIAN" }; + _IfcTrimmingPreference.PARAMETER = { type: 3, value: "PARAMETER" }; + _IfcTrimmingPreference.UNSPECIFIED = { type: 3, value: "UNSPECIFIED" }; + let IfcTrimmingPreference = _IfcTrimmingPreference; + IFC2X32.IfcTrimmingPreference = IfcTrimmingPreference; + const _IfcTubeBundleTypeEnum = class _IfcTubeBundleTypeEnum { + }; + _IfcTubeBundleTypeEnum.FINNED = { type: 3, value: "FINNED" }; + _IfcTubeBundleTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTubeBundleTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTubeBundleTypeEnum = _IfcTubeBundleTypeEnum; + IFC2X32.IfcTubeBundleTypeEnum = IfcTubeBundleTypeEnum; + const _IfcUnitEnum = class _IfcUnitEnum { + }; + _IfcUnitEnum.ABSORBEDDOSEUNIT = { type: 3, value: "ABSORBEDDOSEUNIT" }; + _IfcUnitEnum.AMOUNTOFSUBSTANCEUNIT = { type: 3, value: "AMOUNTOFSUBSTANCEUNIT" }; + _IfcUnitEnum.AREAUNIT = { type: 3, value: "AREAUNIT" }; + _IfcUnitEnum.DOSEEQUIVALENTUNIT = { type: 3, value: "DOSEEQUIVALENTUNIT" }; + _IfcUnitEnum.ELECTRICCAPACITANCEUNIT = { type: 3, value: "ELECTRICCAPACITANCEUNIT" }; + _IfcUnitEnum.ELECTRICCHARGEUNIT = { type: 3, value: "ELECTRICCHARGEUNIT" }; + _IfcUnitEnum.ELECTRICCONDUCTANCEUNIT = { type: 3, value: "ELECTRICCONDUCTANCEUNIT" }; + _IfcUnitEnum.ELECTRICCURRENTUNIT = { type: 3, value: "ELECTRICCURRENTUNIT" }; + _IfcUnitEnum.ELECTRICRESISTANCEUNIT = { type: 3, value: "ELECTRICRESISTANCEUNIT" }; + _IfcUnitEnum.ELECTRICVOLTAGEUNIT = { type: 3, value: "ELECTRICVOLTAGEUNIT" }; + _IfcUnitEnum.ENERGYUNIT = { type: 3, value: "ENERGYUNIT" }; + _IfcUnitEnum.FORCEUNIT = { type: 3, value: "FORCEUNIT" }; + _IfcUnitEnum.FREQUENCYUNIT = { type: 3, value: "FREQUENCYUNIT" }; + _IfcUnitEnum.ILLUMINANCEUNIT = { type: 3, value: "ILLUMINANCEUNIT" }; + _IfcUnitEnum.INDUCTANCEUNIT = { type: 3, value: "INDUCTANCEUNIT" }; + _IfcUnitEnum.LENGTHUNIT = { type: 3, value: "LENGTHUNIT" }; + _IfcUnitEnum.LUMINOUSFLUXUNIT = { type: 3, value: "LUMINOUSFLUXUNIT" }; + _IfcUnitEnum.LUMINOUSINTENSITYUNIT = { type: 3, value: "LUMINOUSINTENSITYUNIT" }; + _IfcUnitEnum.MAGNETICFLUXDENSITYUNIT = { type: 3, value: "MAGNETICFLUXDENSITYUNIT" }; + _IfcUnitEnum.MAGNETICFLUXUNIT = { type: 3, value: "MAGNETICFLUXUNIT" }; + _IfcUnitEnum.MASSUNIT = { type: 3, value: "MASSUNIT" }; + _IfcUnitEnum.PLANEANGLEUNIT = { type: 3, value: "PLANEANGLEUNIT" }; + _IfcUnitEnum.POWERUNIT = { type: 3, value: "POWERUNIT" }; + _IfcUnitEnum.PRESSUREUNIT = { type: 3, value: "PRESSUREUNIT" }; + _IfcUnitEnum.RADIOACTIVITYUNIT = { type: 3, value: "RADIOACTIVITYUNIT" }; + _IfcUnitEnum.SOLIDANGLEUNIT = { type: 3, value: "SOLIDANGLEUNIT" }; + _IfcUnitEnum.THERMODYNAMICTEMPERATUREUNIT = { type: 3, value: "THERMODYNAMICTEMPERATUREUNIT" }; + _IfcUnitEnum.TIMEUNIT = { type: 3, value: "TIMEUNIT" }; + _IfcUnitEnum.VOLUMEUNIT = { type: 3, value: "VOLUMEUNIT" }; + _IfcUnitEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcUnitEnum = _IfcUnitEnum; + IFC2X32.IfcUnitEnum = IfcUnitEnum; + const _IfcUnitaryEquipmentTypeEnum = class _IfcUnitaryEquipmentTypeEnum { + }; + _IfcUnitaryEquipmentTypeEnum.AIRHANDLER = { type: 3, value: "AIRHANDLER" }; + _IfcUnitaryEquipmentTypeEnum.AIRCONDITIONINGUNIT = { type: 3, value: "AIRCONDITIONINGUNIT" }; + _IfcUnitaryEquipmentTypeEnum.SPLITSYSTEM = { type: 3, value: "SPLITSYSTEM" }; + _IfcUnitaryEquipmentTypeEnum.ROOFTOPUNIT = { type: 3, value: "ROOFTOPUNIT" }; + _IfcUnitaryEquipmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcUnitaryEquipmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcUnitaryEquipmentTypeEnum = _IfcUnitaryEquipmentTypeEnum; + IFC2X32.IfcUnitaryEquipmentTypeEnum = IfcUnitaryEquipmentTypeEnum; + const _IfcValveTypeEnum = class _IfcValveTypeEnum { + }; + _IfcValveTypeEnum.AIRRELEASE = { type: 3, value: "AIRRELEASE" }; + _IfcValveTypeEnum.ANTIVACUUM = { type: 3, value: "ANTIVACUUM" }; + _IfcValveTypeEnum.CHANGEOVER = { type: 3, value: "CHANGEOVER" }; + _IfcValveTypeEnum.CHECK = { type: 3, value: "CHECK" }; + _IfcValveTypeEnum.COMMISSIONING = { type: 3, value: "COMMISSIONING" }; + _IfcValveTypeEnum.DIVERTING = { type: 3, value: "DIVERTING" }; + _IfcValveTypeEnum.DRAWOFFCOCK = { type: 3, value: "DRAWOFFCOCK" }; + _IfcValveTypeEnum.DOUBLECHECK = { type: 3, value: "DOUBLECHECK" }; + _IfcValveTypeEnum.DOUBLEREGULATING = { type: 3, value: "DOUBLEREGULATING" }; + _IfcValveTypeEnum.FAUCET = { type: 3, value: "FAUCET" }; + _IfcValveTypeEnum.FLUSHING = { type: 3, value: "FLUSHING" }; + _IfcValveTypeEnum.GASCOCK = { type: 3, value: "GASCOCK" }; + _IfcValveTypeEnum.GASTAP = { type: 3, value: "GASTAP" }; + _IfcValveTypeEnum.ISOLATING = { type: 3, value: "ISOLATING" }; + _IfcValveTypeEnum.MIXING = { type: 3, value: "MIXING" }; + _IfcValveTypeEnum.PRESSUREREDUCING = { type: 3, value: "PRESSUREREDUCING" }; + _IfcValveTypeEnum.PRESSURERELIEF = { type: 3, value: "PRESSURERELIEF" }; + _IfcValveTypeEnum.REGULATING = { type: 3, value: "REGULATING" }; + _IfcValveTypeEnum.SAFETYCUTOFF = { type: 3, value: "SAFETYCUTOFF" }; + _IfcValveTypeEnum.STEAMTRAP = { type: 3, value: "STEAMTRAP" }; + _IfcValveTypeEnum.STOPCOCK = { type: 3, value: "STOPCOCK" }; + _IfcValveTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcValveTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcValveTypeEnum = _IfcValveTypeEnum; + IFC2X32.IfcValveTypeEnum = IfcValveTypeEnum; + const _IfcVibrationIsolatorTypeEnum = class _IfcVibrationIsolatorTypeEnum { + }; + _IfcVibrationIsolatorTypeEnum.COMPRESSION = { type: 3, value: "COMPRESSION" }; + _IfcVibrationIsolatorTypeEnum.SPRING = { type: 3, value: "SPRING" }; + _IfcVibrationIsolatorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcVibrationIsolatorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcVibrationIsolatorTypeEnum = _IfcVibrationIsolatorTypeEnum; + IFC2X32.IfcVibrationIsolatorTypeEnum = IfcVibrationIsolatorTypeEnum; + const _IfcWallTypeEnum = class _IfcWallTypeEnum { + }; + _IfcWallTypeEnum.STANDARD = { type: 3, value: "STANDARD" }; + _IfcWallTypeEnum.POLYGONAL = { type: 3, value: "POLYGONAL" }; + _IfcWallTypeEnum.SHEAR = { type: 3, value: "SHEAR" }; + _IfcWallTypeEnum.ELEMENTEDWALL = { type: 3, value: "ELEMENTEDWALL" }; + _IfcWallTypeEnum.PLUMBINGWALL = { type: 3, value: "PLUMBINGWALL" }; + _IfcWallTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWallTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWallTypeEnum = _IfcWallTypeEnum; + IFC2X32.IfcWallTypeEnum = IfcWallTypeEnum; + const _IfcWasteTerminalTypeEnum = class _IfcWasteTerminalTypeEnum { + }; + _IfcWasteTerminalTypeEnum.FLOORTRAP = { type: 3, value: "FLOORTRAP" }; + _IfcWasteTerminalTypeEnum.FLOORWASTE = { type: 3, value: "FLOORWASTE" }; + _IfcWasteTerminalTypeEnum.GULLYSUMP = { type: 3, value: "GULLYSUMP" }; + _IfcWasteTerminalTypeEnum.GULLYTRAP = { type: 3, value: "GULLYTRAP" }; + _IfcWasteTerminalTypeEnum.GREASEINTERCEPTOR = { type: 3, value: "GREASEINTERCEPTOR" }; + _IfcWasteTerminalTypeEnum.OILINTERCEPTOR = { type: 3, value: "OILINTERCEPTOR" }; + _IfcWasteTerminalTypeEnum.PETROLINTERCEPTOR = { type: 3, value: "PETROLINTERCEPTOR" }; + _IfcWasteTerminalTypeEnum.ROOFDRAIN = { type: 3, value: "ROOFDRAIN" }; + _IfcWasteTerminalTypeEnum.WASTEDISPOSALUNIT = { type: 3, value: "WASTEDISPOSALUNIT" }; + _IfcWasteTerminalTypeEnum.WASTETRAP = { type: 3, value: "WASTETRAP" }; + _IfcWasteTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWasteTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWasteTerminalTypeEnum = _IfcWasteTerminalTypeEnum; + IFC2X32.IfcWasteTerminalTypeEnum = IfcWasteTerminalTypeEnum; + const _IfcWindowPanelOperationEnum = class _IfcWindowPanelOperationEnum { + }; + _IfcWindowPanelOperationEnum.SIDEHUNGRIGHTHAND = { type: 3, value: "SIDEHUNGRIGHTHAND" }; + _IfcWindowPanelOperationEnum.SIDEHUNGLEFTHAND = { type: 3, value: "SIDEHUNGLEFTHAND" }; + _IfcWindowPanelOperationEnum.TILTANDTURNRIGHTHAND = { type: 3, value: "TILTANDTURNRIGHTHAND" }; + _IfcWindowPanelOperationEnum.TILTANDTURNLEFTHAND = { type: 3, value: "TILTANDTURNLEFTHAND" }; + _IfcWindowPanelOperationEnum.TOPHUNG = { type: 3, value: "TOPHUNG" }; + _IfcWindowPanelOperationEnum.BOTTOMHUNG = { type: 3, value: "BOTTOMHUNG" }; + _IfcWindowPanelOperationEnum.PIVOTHORIZONTAL = { type: 3, value: "PIVOTHORIZONTAL" }; + _IfcWindowPanelOperationEnum.PIVOTVERTICAL = { type: 3, value: "PIVOTVERTICAL" }; + _IfcWindowPanelOperationEnum.SLIDINGHORIZONTAL = { type: 3, value: "SLIDINGHORIZONTAL" }; + _IfcWindowPanelOperationEnum.SLIDINGVERTICAL = { type: 3, value: "SLIDINGVERTICAL" }; + _IfcWindowPanelOperationEnum.REMOVABLECASEMENT = { type: 3, value: "REMOVABLECASEMENT" }; + _IfcWindowPanelOperationEnum.FIXEDCASEMENT = { type: 3, value: "FIXEDCASEMENT" }; + _IfcWindowPanelOperationEnum.OTHEROPERATION = { type: 3, value: "OTHEROPERATION" }; + _IfcWindowPanelOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowPanelOperationEnum = _IfcWindowPanelOperationEnum; + IFC2X32.IfcWindowPanelOperationEnum = IfcWindowPanelOperationEnum; + const _IfcWindowPanelPositionEnum = class _IfcWindowPanelPositionEnum { + }; + _IfcWindowPanelPositionEnum.LEFT = { type: 3, value: "LEFT" }; + _IfcWindowPanelPositionEnum.MIDDLE = { type: 3, value: "MIDDLE" }; + _IfcWindowPanelPositionEnum.RIGHT = { type: 3, value: "RIGHT" }; + _IfcWindowPanelPositionEnum.BOTTOM = { type: 3, value: "BOTTOM" }; + _IfcWindowPanelPositionEnum.TOP = { type: 3, value: "TOP" }; + _IfcWindowPanelPositionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowPanelPositionEnum = _IfcWindowPanelPositionEnum; + IFC2X32.IfcWindowPanelPositionEnum = IfcWindowPanelPositionEnum; + const _IfcWindowStyleConstructionEnum = class _IfcWindowStyleConstructionEnum { + }; + _IfcWindowStyleConstructionEnum.ALUMINIUM = { type: 3, value: "ALUMINIUM" }; + _IfcWindowStyleConstructionEnum.HIGH_GRADE_STEEL = { type: 3, value: "HIGH_GRADE_STEEL" }; + _IfcWindowStyleConstructionEnum.STEEL = { type: 3, value: "STEEL" }; + _IfcWindowStyleConstructionEnum.WOOD = { type: 3, value: "WOOD" }; + _IfcWindowStyleConstructionEnum.ALUMINIUM_WOOD = { type: 3, value: "ALUMINIUM_WOOD" }; + _IfcWindowStyleConstructionEnum.PLASTIC = { type: 3, value: "PLASTIC" }; + _IfcWindowStyleConstructionEnum.OTHER_CONSTRUCTION = { type: 3, value: "OTHER_CONSTRUCTION" }; + _IfcWindowStyleConstructionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowStyleConstructionEnum = _IfcWindowStyleConstructionEnum; + IFC2X32.IfcWindowStyleConstructionEnum = IfcWindowStyleConstructionEnum; + const _IfcWindowStyleOperationEnum = class _IfcWindowStyleOperationEnum { + }; + _IfcWindowStyleOperationEnum.SINGLE_PANEL = { type: 3, value: "SINGLE_PANEL" }; + _IfcWindowStyleOperationEnum.DOUBLE_PANEL_VERTICAL = { type: 3, value: "DOUBLE_PANEL_VERTICAL" }; + _IfcWindowStyleOperationEnum.DOUBLE_PANEL_HORIZONTAL = { type: 3, value: "DOUBLE_PANEL_HORIZONTAL" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_VERTICAL = { type: 3, value: "TRIPLE_PANEL_VERTICAL" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_BOTTOM = { type: 3, value: "TRIPLE_PANEL_BOTTOM" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_TOP = { type: 3, value: "TRIPLE_PANEL_TOP" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_LEFT = { type: 3, value: "TRIPLE_PANEL_LEFT" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_RIGHT = { type: 3, value: "TRIPLE_PANEL_RIGHT" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_HORIZONTAL = { type: 3, value: "TRIPLE_PANEL_HORIZONTAL" }; + _IfcWindowStyleOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWindowStyleOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowStyleOperationEnum = _IfcWindowStyleOperationEnum; + IFC2X32.IfcWindowStyleOperationEnum = IfcWindowStyleOperationEnum; + const _IfcWorkControlTypeEnum = class _IfcWorkControlTypeEnum { + }; + _IfcWorkControlTypeEnum.ACTUAL = { type: 3, value: "ACTUAL" }; + _IfcWorkControlTypeEnum.BASELINE = { type: 3, value: "BASELINE" }; + _IfcWorkControlTypeEnum.PLANNED = { type: 3, value: "PLANNED" }; + _IfcWorkControlTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWorkControlTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWorkControlTypeEnum = _IfcWorkControlTypeEnum; + IFC2X32.IfcWorkControlTypeEnum = IfcWorkControlTypeEnum; + class IfcActorRole extends IfcLineObject { + constructor(Role, UserDefinedRole, Description) { + super(); + this.Role = Role; + this.UserDefinedRole = UserDefinedRole; + this.Description = Description; + this.type = 3630933823; + } + } + IFC2X32.IfcActorRole = IfcActorRole; + class IfcAddress extends IfcLineObject { + constructor(Purpose, Description, UserDefinedPurpose) { + super(); + this.Purpose = Purpose; + this.Description = Description; + this.UserDefinedPurpose = UserDefinedPurpose; + this.type = 618182010; + } + } + IFC2X32.IfcAddress = IfcAddress; + class IfcApplication extends IfcLineObject { + constructor(ApplicationDeveloper, Version, ApplicationFullName, ApplicationIdentifier) { + super(); + this.ApplicationDeveloper = ApplicationDeveloper; + this.Version = Version; + this.ApplicationFullName = ApplicationFullName; + this.ApplicationIdentifier = ApplicationIdentifier; + this.type = 639542469; + } + } + IFC2X32.IfcApplication = IfcApplication; + class IfcAppliedValue extends IfcLineObject { + constructor(Name, Description, AppliedValue, UnitBasis, ApplicableDate, FixedUntilDate) { + super(); + this.Name = Name; + this.Description = Description; + this.AppliedValue = AppliedValue; + this.UnitBasis = UnitBasis; + this.ApplicableDate = ApplicableDate; + this.FixedUntilDate = FixedUntilDate; + this.type = 411424972; + } + } + IFC2X32.IfcAppliedValue = IfcAppliedValue; + class IfcAppliedValueRelationship extends IfcLineObject { + constructor(ComponentOfTotal, Components, ArithmeticOperator, Name, Description) { + super(); + this.ComponentOfTotal = ComponentOfTotal; + this.Components = Components; + this.ArithmeticOperator = ArithmeticOperator; + this.Name = Name; + this.Description = Description; + this.type = 1110488051; + } + } + IFC2X32.IfcAppliedValueRelationship = IfcAppliedValueRelationship; + class IfcApproval extends IfcLineObject { + constructor(Description, ApprovalDateTime, ApprovalStatus, ApprovalLevel, ApprovalQualifier, Name, Identifier) { + super(); + this.Description = Description; + this.ApprovalDateTime = ApprovalDateTime; + this.ApprovalStatus = ApprovalStatus; + this.ApprovalLevel = ApprovalLevel; + this.ApprovalQualifier = ApprovalQualifier; + this.Name = Name; + this.Identifier = Identifier; + this.type = 130549933; + } + } + IFC2X32.IfcApproval = IfcApproval; + class IfcApprovalActorRelationship extends IfcLineObject { + constructor(Actor, Approval, Role) { + super(); + this.Actor = Actor; + this.Approval = Approval; + this.Role = Role; + this.type = 2080292479; + } + } + IFC2X32.IfcApprovalActorRelationship = IfcApprovalActorRelationship; + class IfcApprovalPropertyRelationship extends IfcLineObject { + constructor(ApprovedProperties, Approval) { + super(); + this.ApprovedProperties = ApprovedProperties; + this.Approval = Approval; + this.type = 390851274; + } + } + IFC2X32.IfcApprovalPropertyRelationship = IfcApprovalPropertyRelationship; + class IfcApprovalRelationship extends IfcLineObject { + constructor(RelatedApproval, RelatingApproval, Description, Name) { + super(); + this.RelatedApproval = RelatedApproval; + this.RelatingApproval = RelatingApproval; + this.Description = Description; + this.Name = Name; + this.type = 3869604511; + } + } + IFC2X32.IfcApprovalRelationship = IfcApprovalRelationship; + class IfcBoundaryCondition extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 4037036970; + } + } + IFC2X32.IfcBoundaryCondition = IfcBoundaryCondition; + class IfcBoundaryEdgeCondition extends IfcBoundaryCondition { + constructor(Name, LinearStiffnessByLengthX, LinearStiffnessByLengthY, LinearStiffnessByLengthZ, RotationalStiffnessByLengthX, RotationalStiffnessByLengthY, RotationalStiffnessByLengthZ) { + super(Name); + this.Name = Name; + this.LinearStiffnessByLengthX = LinearStiffnessByLengthX; + this.LinearStiffnessByLengthY = LinearStiffnessByLengthY; + this.LinearStiffnessByLengthZ = LinearStiffnessByLengthZ; + this.RotationalStiffnessByLengthX = RotationalStiffnessByLengthX; + this.RotationalStiffnessByLengthY = RotationalStiffnessByLengthY; + this.RotationalStiffnessByLengthZ = RotationalStiffnessByLengthZ; + this.type = 1560379544; + } + } + IFC2X32.IfcBoundaryEdgeCondition = IfcBoundaryEdgeCondition; + class IfcBoundaryFaceCondition extends IfcBoundaryCondition { + constructor(Name, LinearStiffnessByAreaX, LinearStiffnessByAreaY, LinearStiffnessByAreaZ) { + super(Name); + this.Name = Name; + this.LinearStiffnessByAreaX = LinearStiffnessByAreaX; + this.LinearStiffnessByAreaY = LinearStiffnessByAreaY; + this.LinearStiffnessByAreaZ = LinearStiffnessByAreaZ; + this.type = 3367102660; + } + } + IFC2X32.IfcBoundaryFaceCondition = IfcBoundaryFaceCondition; + class IfcBoundaryNodeCondition extends IfcBoundaryCondition { + constructor(Name, LinearStiffnessX, LinearStiffnessY, LinearStiffnessZ, RotationalStiffnessX, RotationalStiffnessY, RotationalStiffnessZ) { + super(Name); + this.Name = Name; + this.LinearStiffnessX = LinearStiffnessX; + this.LinearStiffnessY = LinearStiffnessY; + this.LinearStiffnessZ = LinearStiffnessZ; + this.RotationalStiffnessX = RotationalStiffnessX; + this.RotationalStiffnessY = RotationalStiffnessY; + this.RotationalStiffnessZ = RotationalStiffnessZ; + this.type = 1387855156; + } + } + IFC2X32.IfcBoundaryNodeCondition = IfcBoundaryNodeCondition; + class IfcBoundaryNodeConditionWarping extends IfcBoundaryNodeCondition { + constructor(Name, LinearStiffnessX, LinearStiffnessY, LinearStiffnessZ, RotationalStiffnessX, RotationalStiffnessY, RotationalStiffnessZ, WarpingStiffness) { + super(Name, LinearStiffnessX, LinearStiffnessY, LinearStiffnessZ, RotationalStiffnessX, RotationalStiffnessY, RotationalStiffnessZ); + this.Name = Name; + this.LinearStiffnessX = LinearStiffnessX; + this.LinearStiffnessY = LinearStiffnessY; + this.LinearStiffnessZ = LinearStiffnessZ; + this.RotationalStiffnessX = RotationalStiffnessX; + this.RotationalStiffnessY = RotationalStiffnessY; + this.RotationalStiffnessZ = RotationalStiffnessZ; + this.WarpingStiffness = WarpingStiffness; + this.type = 2069777674; + } + } + IFC2X32.IfcBoundaryNodeConditionWarping = IfcBoundaryNodeConditionWarping; + class IfcCalendarDate extends IfcLineObject { + constructor(DayComponent, MonthComponent, YearComponent) { + super(); + this.DayComponent = DayComponent; + this.MonthComponent = MonthComponent; + this.YearComponent = YearComponent; + this.type = 622194075; + } + } + IFC2X32.IfcCalendarDate = IfcCalendarDate; + class IfcClassification extends IfcLineObject { + constructor(Source2, Edition, EditionDate, Name) { + super(); + this.Source = Source2; + this.Edition = Edition; + this.EditionDate = EditionDate; + this.Name = Name; + this.type = 747523909; + } + } + IFC2X32.IfcClassification = IfcClassification; + class IfcClassificationItem extends IfcLineObject { + constructor(Notation, ItemOf, Title) { + super(); + this.Notation = Notation; + this.ItemOf = ItemOf; + this.Title = Title; + this.type = 1767535486; + } + } + IFC2X32.IfcClassificationItem = IfcClassificationItem; + class IfcClassificationItemRelationship extends IfcLineObject { + constructor(RelatingItem, RelatedItems) { + super(); + this.RelatingItem = RelatingItem; + this.RelatedItems = RelatedItems; + this.type = 1098599126; + } + } + IFC2X32.IfcClassificationItemRelationship = IfcClassificationItemRelationship; + class IfcClassificationNotation extends IfcLineObject { + constructor(NotationFacets) { + super(); + this.NotationFacets = NotationFacets; + this.type = 938368621; + } + } + IFC2X32.IfcClassificationNotation = IfcClassificationNotation; + class IfcClassificationNotationFacet extends IfcLineObject { + constructor(NotationValue) { + super(); + this.NotationValue = NotationValue; + this.type = 3639012971; + } + } + IFC2X32.IfcClassificationNotationFacet = IfcClassificationNotationFacet; + class IfcColourSpecification extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 3264961684; + } + } + IFC2X32.IfcColourSpecification = IfcColourSpecification; + class IfcConnectionGeometry extends IfcLineObject { + constructor() { + super(); + this.type = 2859738748; + } + } + IFC2X32.IfcConnectionGeometry = IfcConnectionGeometry; + class IfcConnectionPointGeometry extends IfcConnectionGeometry { + constructor(PointOnRelatingElement, PointOnRelatedElement) { + super(); + this.PointOnRelatingElement = PointOnRelatingElement; + this.PointOnRelatedElement = PointOnRelatedElement; + this.type = 2614616156; + } + } + IFC2X32.IfcConnectionPointGeometry = IfcConnectionPointGeometry; + class IfcConnectionPortGeometry extends IfcConnectionGeometry { + constructor(LocationAtRelatingElement, LocationAtRelatedElement, ProfileOfPort) { + super(); + this.LocationAtRelatingElement = LocationAtRelatingElement; + this.LocationAtRelatedElement = LocationAtRelatedElement; + this.ProfileOfPort = ProfileOfPort; + this.type = 4257277454; + } + } + IFC2X32.IfcConnectionPortGeometry = IfcConnectionPortGeometry; + class IfcConnectionSurfaceGeometry extends IfcConnectionGeometry { + constructor(SurfaceOnRelatingElement, SurfaceOnRelatedElement) { + super(); + this.SurfaceOnRelatingElement = SurfaceOnRelatingElement; + this.SurfaceOnRelatedElement = SurfaceOnRelatedElement; + this.type = 2732653382; + } + } + IFC2X32.IfcConnectionSurfaceGeometry = IfcConnectionSurfaceGeometry; + class IfcConstraint extends IfcLineObject { + constructor(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade) { + super(); + this.Name = Name; + this.Description = Description; + this.ConstraintGrade = ConstraintGrade; + this.ConstraintSource = ConstraintSource; + this.CreatingActor = CreatingActor; + this.CreationTime = CreationTime; + this.UserDefinedGrade = UserDefinedGrade; + this.type = 1959218052; + } + } + IFC2X32.IfcConstraint = IfcConstraint; + class IfcConstraintAggregationRelationship extends IfcLineObject { + constructor(Name, Description, RelatingConstraint, RelatedConstraints, LogicalAggregator) { + super(); + this.Name = Name; + this.Description = Description; + this.RelatingConstraint = RelatingConstraint; + this.RelatedConstraints = RelatedConstraints; + this.LogicalAggregator = LogicalAggregator; + this.type = 1658513725; + } + } + IFC2X32.IfcConstraintAggregationRelationship = IfcConstraintAggregationRelationship; + class IfcConstraintClassificationRelationship extends IfcLineObject { + constructor(ClassifiedConstraint, RelatedClassifications) { + super(); + this.ClassifiedConstraint = ClassifiedConstraint; + this.RelatedClassifications = RelatedClassifications; + this.type = 613356794; + } + } + IFC2X32.IfcConstraintClassificationRelationship = IfcConstraintClassificationRelationship; + class IfcConstraintRelationship extends IfcLineObject { + constructor(Name, Description, RelatingConstraint, RelatedConstraints) { + super(); + this.Name = Name; + this.Description = Description; + this.RelatingConstraint = RelatingConstraint; + this.RelatedConstraints = RelatedConstraints; + this.type = 347226245; + } + } + IFC2X32.IfcConstraintRelationship = IfcConstraintRelationship; + class IfcCoordinatedUniversalTimeOffset extends IfcLineObject { + constructor(HourOffset, MinuteOffset, Sense) { + super(); + this.HourOffset = HourOffset; + this.MinuteOffset = MinuteOffset; + this.Sense = Sense; + this.type = 1065062679; + } + } + IFC2X32.IfcCoordinatedUniversalTimeOffset = IfcCoordinatedUniversalTimeOffset; + class IfcCostValue extends IfcAppliedValue { + constructor(Name, Description, AppliedValue, UnitBasis, ApplicableDate, FixedUntilDate, CostType, Condition) { + super(Name, Description, AppliedValue, UnitBasis, ApplicableDate, FixedUntilDate); + this.Name = Name; + this.Description = Description; + this.AppliedValue = AppliedValue; + this.UnitBasis = UnitBasis; + this.ApplicableDate = ApplicableDate; + this.FixedUntilDate = FixedUntilDate; + this.CostType = CostType; + this.Condition = Condition; + this.type = 602808272; + } + } + IFC2X32.IfcCostValue = IfcCostValue; + class IfcCurrencyRelationship extends IfcLineObject { + constructor(RelatingMonetaryUnit, RelatedMonetaryUnit, ExchangeRate, RateDateTime, RateSource) { + super(); + this.RelatingMonetaryUnit = RelatingMonetaryUnit; + this.RelatedMonetaryUnit = RelatedMonetaryUnit; + this.ExchangeRate = ExchangeRate; + this.RateDateTime = RateDateTime; + this.RateSource = RateSource; + this.type = 539742890; + } + } + IFC2X32.IfcCurrencyRelationship = IfcCurrencyRelationship; + class IfcCurveStyleFont extends IfcLineObject { + constructor(Name, PatternList) { + super(); + this.Name = Name; + this.PatternList = PatternList; + this.type = 1105321065; + } + } + IFC2X32.IfcCurveStyleFont = IfcCurveStyleFont; + class IfcCurveStyleFontAndScaling extends IfcLineObject { + constructor(Name, CurveFont, CurveFontScaling) { + super(); + this.Name = Name; + this.CurveFont = CurveFont; + this.CurveFontScaling = CurveFontScaling; + this.type = 2367409068; + } + } + IFC2X32.IfcCurveStyleFontAndScaling = IfcCurveStyleFontAndScaling; + class IfcCurveStyleFontPattern extends IfcLineObject { + constructor(VisibleSegmentLength, InvisibleSegmentLength) { + super(); + this.VisibleSegmentLength = VisibleSegmentLength; + this.InvisibleSegmentLength = InvisibleSegmentLength; + this.type = 3510044353; + } + } + IFC2X32.IfcCurveStyleFontPattern = IfcCurveStyleFontPattern; + class IfcDateAndTime extends IfcLineObject { + constructor(DateComponent, TimeComponent) { + super(); + this.DateComponent = DateComponent; + this.TimeComponent = TimeComponent; + this.type = 1072939445; + } + } + IFC2X32.IfcDateAndTime = IfcDateAndTime; + class IfcDerivedUnit extends IfcLineObject { + constructor(Elements, UnitType, UserDefinedType) { + super(); + this.Elements = Elements; + this.UnitType = UnitType; + this.UserDefinedType = UserDefinedType; + this.type = 1765591967; + } + } + IFC2X32.IfcDerivedUnit = IfcDerivedUnit; + class IfcDerivedUnitElement extends IfcLineObject { + constructor(Unit, Exponent) { + super(); + this.Unit = Unit; + this.Exponent = Exponent; + this.type = 1045800335; + } + } + IFC2X32.IfcDerivedUnitElement = IfcDerivedUnitElement; + class IfcDimensionalExponents extends IfcLineObject { + constructor(LengthExponent, MassExponent, TimeExponent, ElectricCurrentExponent, ThermodynamicTemperatureExponent, AmountOfSubstanceExponent, LuminousIntensityExponent) { + super(); + this.LengthExponent = LengthExponent; + this.MassExponent = MassExponent; + this.TimeExponent = TimeExponent; + this.ElectricCurrentExponent = ElectricCurrentExponent; + this.ThermodynamicTemperatureExponent = ThermodynamicTemperatureExponent; + this.AmountOfSubstanceExponent = AmountOfSubstanceExponent; + this.LuminousIntensityExponent = LuminousIntensityExponent; + this.type = 2949456006; + } + } + IFC2X32.IfcDimensionalExponents = IfcDimensionalExponents; + class IfcDocumentElectronicFormat extends IfcLineObject { + constructor(FileExtension, MimeContentType, MimeSubtype) { + super(); + this.FileExtension = FileExtension; + this.MimeContentType = MimeContentType; + this.MimeSubtype = MimeSubtype; + this.type = 1376555844; + } + } + IFC2X32.IfcDocumentElectronicFormat = IfcDocumentElectronicFormat; + class IfcDocumentInformation extends IfcLineObject { + constructor(DocumentId, Name, Description, DocumentReferences, Purpose, IntendedUse, Scope, Revision, DocumentOwner, Editors, CreationTime, LastRevisionTime, ElectronicFormat, ValidFrom, ValidUntil, Confidentiality, Status) { + super(); + this.DocumentId = DocumentId; + this.Name = Name; + this.Description = Description; + this.DocumentReferences = DocumentReferences; + this.Purpose = Purpose; + this.IntendedUse = IntendedUse; + this.Scope = Scope; + this.Revision = Revision; + this.DocumentOwner = DocumentOwner; + this.Editors = Editors; + this.CreationTime = CreationTime; + this.LastRevisionTime = LastRevisionTime; + this.ElectronicFormat = ElectronicFormat; + this.ValidFrom = ValidFrom; + this.ValidUntil = ValidUntil; + this.Confidentiality = Confidentiality; + this.Status = Status; + this.type = 1154170062; + } + } + IFC2X32.IfcDocumentInformation = IfcDocumentInformation; + class IfcDocumentInformationRelationship extends IfcLineObject { + constructor(RelatingDocument, RelatedDocuments, RelationshipType) { + super(); + this.RelatingDocument = RelatingDocument; + this.RelatedDocuments = RelatedDocuments; + this.RelationshipType = RelationshipType; + this.type = 770865208; + } + } + IFC2X32.IfcDocumentInformationRelationship = IfcDocumentInformationRelationship; + class IfcDraughtingCalloutRelationship extends IfcLineObject { + constructor(Name, Description, RelatingDraughtingCallout, RelatedDraughtingCallout) { + super(); + this.Name = Name; + this.Description = Description; + this.RelatingDraughtingCallout = RelatingDraughtingCallout; + this.RelatedDraughtingCallout = RelatedDraughtingCallout; + this.type = 3796139169; + } + } + IFC2X32.IfcDraughtingCalloutRelationship = IfcDraughtingCalloutRelationship; + class IfcEnvironmentalImpactValue extends IfcAppliedValue { + constructor(Name, Description, AppliedValue, UnitBasis, ApplicableDate, FixedUntilDate, ImpactType, Category, UserDefinedCategory) { + super(Name, Description, AppliedValue, UnitBasis, ApplicableDate, FixedUntilDate); + this.Name = Name; + this.Description = Description; + this.AppliedValue = AppliedValue; + this.UnitBasis = UnitBasis; + this.ApplicableDate = ApplicableDate; + this.FixedUntilDate = FixedUntilDate; + this.ImpactType = ImpactType; + this.Category = Category; + this.UserDefinedCategory = UserDefinedCategory; + this.type = 1648886627; + } + } + IFC2X32.IfcEnvironmentalImpactValue = IfcEnvironmentalImpactValue; + class IfcExternalReference extends IfcLineObject { + constructor(Location, ItemReference, Name) { + super(); + this.Location = Location; + this.ItemReference = ItemReference; + this.Name = Name; + this.type = 3200245327; + } + } + IFC2X32.IfcExternalReference = IfcExternalReference; + class IfcExternallyDefinedHatchStyle extends IfcExternalReference { + constructor(Location, ItemReference, Name) { + super(Location, ItemReference, Name); + this.Location = Location; + this.ItemReference = ItemReference; + this.Name = Name; + this.type = 2242383968; + } + } + IFC2X32.IfcExternallyDefinedHatchStyle = IfcExternallyDefinedHatchStyle; + class IfcExternallyDefinedSurfaceStyle extends IfcExternalReference { + constructor(Location, ItemReference, Name) { + super(Location, ItemReference, Name); + this.Location = Location; + this.ItemReference = ItemReference; + this.Name = Name; + this.type = 1040185647; + } + } + IFC2X32.IfcExternallyDefinedSurfaceStyle = IfcExternallyDefinedSurfaceStyle; + class IfcExternallyDefinedSymbol extends IfcExternalReference { + constructor(Location, ItemReference, Name) { + super(Location, ItemReference, Name); + this.Location = Location; + this.ItemReference = ItemReference; + this.Name = Name; + this.type = 3207319532; + } + } + IFC2X32.IfcExternallyDefinedSymbol = IfcExternallyDefinedSymbol; + class IfcExternallyDefinedTextFont extends IfcExternalReference { + constructor(Location, ItemReference, Name) { + super(Location, ItemReference, Name); + this.Location = Location; + this.ItemReference = ItemReference; + this.Name = Name; + this.type = 3548104201; + } + } + IFC2X32.IfcExternallyDefinedTextFont = IfcExternallyDefinedTextFont; + class IfcGridAxis extends IfcLineObject { + constructor(AxisTag, AxisCurve, SameSense) { + super(); + this.AxisTag = AxisTag; + this.AxisCurve = AxisCurve; + this.SameSense = SameSense; + this.type = 852622518; + } + } + IFC2X32.IfcGridAxis = IfcGridAxis; + class IfcIrregularTimeSeriesValue extends IfcLineObject { + constructor(TimeStamp, ListValues) { + super(); + this.TimeStamp = TimeStamp; + this.ListValues = ListValues; + this.type = 3020489413; + } + } + IFC2X32.IfcIrregularTimeSeriesValue = IfcIrregularTimeSeriesValue; + class IfcLibraryInformation extends IfcLineObject { + constructor(Name, Version, Publisher, VersionDate, LibraryReference) { + super(); + this.Name = Name; + this.Version = Version; + this.Publisher = Publisher; + this.VersionDate = VersionDate; + this.LibraryReference = LibraryReference; + this.type = 2655187982; + } + } + IFC2X32.IfcLibraryInformation = IfcLibraryInformation; + class IfcLibraryReference extends IfcExternalReference { + constructor(Location, ItemReference, Name) { + super(Location, ItemReference, Name); + this.Location = Location; + this.ItemReference = ItemReference; + this.Name = Name; + this.type = 3452421091; + } + } + IFC2X32.IfcLibraryReference = IfcLibraryReference; + class IfcLightDistributionData extends IfcLineObject { + constructor(MainPlaneAngle, SecondaryPlaneAngle, LuminousIntensity) { + super(); + this.MainPlaneAngle = MainPlaneAngle; + this.SecondaryPlaneAngle = SecondaryPlaneAngle; + this.LuminousIntensity = LuminousIntensity; + this.type = 4162380809; + } + } + IFC2X32.IfcLightDistributionData = IfcLightDistributionData; + class IfcLightIntensityDistribution extends IfcLineObject { + constructor(LightDistributionCurve, DistributionData) { + super(); + this.LightDistributionCurve = LightDistributionCurve; + this.DistributionData = DistributionData; + this.type = 1566485204; + } + } + IFC2X32.IfcLightIntensityDistribution = IfcLightIntensityDistribution; + class IfcLocalTime extends IfcLineObject { + constructor(HourComponent, MinuteComponent, SecondComponent, Zone, DaylightSavingOffset) { + super(); + this.HourComponent = HourComponent; + this.MinuteComponent = MinuteComponent; + this.SecondComponent = SecondComponent; + this.Zone = Zone; + this.DaylightSavingOffset = DaylightSavingOffset; + this.type = 30780891; + } + } + IFC2X32.IfcLocalTime = IfcLocalTime; + class IfcMaterial extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 1838606355; + } + } + IFC2X32.IfcMaterial = IfcMaterial; + class IfcMaterialClassificationRelationship extends IfcLineObject { + constructor(MaterialClassifications, ClassifiedMaterial) { + super(); + this.MaterialClassifications = MaterialClassifications; + this.ClassifiedMaterial = ClassifiedMaterial; + this.type = 1847130766; + } + } + IFC2X32.IfcMaterialClassificationRelationship = IfcMaterialClassificationRelationship; + class IfcMaterialLayer extends IfcLineObject { + constructor(Material3, LayerThickness, IsVentilated) { + super(); + this.Material = Material3; + this.LayerThickness = LayerThickness; + this.IsVentilated = IsVentilated; + this.type = 248100487; + } + } + IFC2X32.IfcMaterialLayer = IfcMaterialLayer; + class IfcMaterialLayerSet extends IfcLineObject { + constructor(MaterialLayers, LayerSetName) { + super(); + this.MaterialLayers = MaterialLayers; + this.LayerSetName = LayerSetName; + this.type = 3303938423; + } + } + IFC2X32.IfcMaterialLayerSet = IfcMaterialLayerSet; + class IfcMaterialLayerSetUsage extends IfcLineObject { + constructor(ForLayerSet, LayerSetDirection, DirectionSense, OffsetFromReferenceLine) { + super(); + this.ForLayerSet = ForLayerSet; + this.LayerSetDirection = LayerSetDirection; + this.DirectionSense = DirectionSense; + this.OffsetFromReferenceLine = OffsetFromReferenceLine; + this.type = 1303795690; + } + } + IFC2X32.IfcMaterialLayerSetUsage = IfcMaterialLayerSetUsage; + class IfcMaterialList extends IfcLineObject { + constructor(Materials) { + super(); + this.Materials = Materials; + this.type = 2199411900; + } + } + IFC2X32.IfcMaterialList = IfcMaterialList; + class IfcMaterialProperties extends IfcLineObject { + constructor(Material3) { + super(); + this.Material = Material3; + this.type = 3265635763; + } + } + IFC2X32.IfcMaterialProperties = IfcMaterialProperties; + class IfcMeasureWithUnit extends IfcLineObject { + constructor(ValueComponent, UnitComponent) { + super(); + this.ValueComponent = ValueComponent; + this.UnitComponent = UnitComponent; + this.type = 2597039031; + } + } + IFC2X32.IfcMeasureWithUnit = IfcMeasureWithUnit; + class IfcMechanicalMaterialProperties extends IfcMaterialProperties { + constructor(Material3, DynamicViscosity, YoungModulus, ShearModulus, PoissonRatio, ThermalExpansionCoefficient) { + super(Material3); + this.Material = Material3; + this.DynamicViscosity = DynamicViscosity; + this.YoungModulus = YoungModulus; + this.ShearModulus = ShearModulus; + this.PoissonRatio = PoissonRatio; + this.ThermalExpansionCoefficient = ThermalExpansionCoefficient; + this.type = 4256014907; + } + } + IFC2X32.IfcMechanicalMaterialProperties = IfcMechanicalMaterialProperties; + class IfcMechanicalSteelMaterialProperties extends IfcMechanicalMaterialProperties { + constructor(Material3, DynamicViscosity, YoungModulus, ShearModulus, PoissonRatio, ThermalExpansionCoefficient, YieldStress, UltimateStress, UltimateStrain, HardeningModule, ProportionalStress, PlasticStrain, Relaxations) { + super(Material3, DynamicViscosity, YoungModulus, ShearModulus, PoissonRatio, ThermalExpansionCoefficient); + this.Material = Material3; + this.DynamicViscosity = DynamicViscosity; + this.YoungModulus = YoungModulus; + this.ShearModulus = ShearModulus; + this.PoissonRatio = PoissonRatio; + this.ThermalExpansionCoefficient = ThermalExpansionCoefficient; + this.YieldStress = YieldStress; + this.UltimateStress = UltimateStress; + this.UltimateStrain = UltimateStrain; + this.HardeningModule = HardeningModule; + this.ProportionalStress = ProportionalStress; + this.PlasticStrain = PlasticStrain; + this.Relaxations = Relaxations; + this.type = 677618848; + } + } + IFC2X32.IfcMechanicalSteelMaterialProperties = IfcMechanicalSteelMaterialProperties; + class IfcMetric extends IfcConstraint { + constructor(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade, Benchmark, ValueSource, DataValue) { + super(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade); + this.Name = Name; + this.Description = Description; + this.ConstraintGrade = ConstraintGrade; + this.ConstraintSource = ConstraintSource; + this.CreatingActor = CreatingActor; + this.CreationTime = CreationTime; + this.UserDefinedGrade = UserDefinedGrade; + this.Benchmark = Benchmark; + this.ValueSource = ValueSource; + this.DataValue = DataValue; + this.type = 3368373690; + } + } + IFC2X32.IfcMetric = IfcMetric; + class IfcMonetaryUnit extends IfcLineObject { + constructor(Currency) { + super(); + this.Currency = Currency; + this.type = 2706619895; + } + } + IFC2X32.IfcMonetaryUnit = IfcMonetaryUnit; + class IfcNamedUnit extends IfcLineObject { + constructor(Dimensions, UnitType) { + super(); + this.Dimensions = Dimensions; + this.UnitType = UnitType; + this.type = 1918398963; + } + } + IFC2X32.IfcNamedUnit = IfcNamedUnit; + class IfcObjectPlacement extends IfcLineObject { + constructor() { + super(); + this.type = 3701648758; + } + } + IFC2X32.IfcObjectPlacement = IfcObjectPlacement; + class IfcObjective extends IfcConstraint { + constructor(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade, BenchmarkValues, ResultValues, ObjectiveQualifier, UserDefinedQualifier) { + super(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade); + this.Name = Name; + this.Description = Description; + this.ConstraintGrade = ConstraintGrade; + this.ConstraintSource = ConstraintSource; + this.CreatingActor = CreatingActor; + this.CreationTime = CreationTime; + this.UserDefinedGrade = UserDefinedGrade; + this.BenchmarkValues = BenchmarkValues; + this.ResultValues = ResultValues; + this.ObjectiveQualifier = ObjectiveQualifier; + this.UserDefinedQualifier = UserDefinedQualifier; + this.type = 2251480897; + } + } + IFC2X32.IfcObjective = IfcObjective; + class IfcOpticalMaterialProperties extends IfcMaterialProperties { + constructor(Material3, VisibleTransmittance, SolarTransmittance, ThermalIrTransmittance, ThermalIrEmissivityBack, ThermalIrEmissivityFront, VisibleReflectanceBack, VisibleReflectanceFront, SolarReflectanceFront, SolarReflectanceBack) { + super(Material3); + this.Material = Material3; + this.VisibleTransmittance = VisibleTransmittance; + this.SolarTransmittance = SolarTransmittance; + this.ThermalIrTransmittance = ThermalIrTransmittance; + this.ThermalIrEmissivityBack = ThermalIrEmissivityBack; + this.ThermalIrEmissivityFront = ThermalIrEmissivityFront; + this.VisibleReflectanceBack = VisibleReflectanceBack; + this.VisibleReflectanceFront = VisibleReflectanceFront; + this.SolarReflectanceFront = SolarReflectanceFront; + this.SolarReflectanceBack = SolarReflectanceBack; + this.type = 1227763645; + } + } + IFC2X32.IfcOpticalMaterialProperties = IfcOpticalMaterialProperties; + class IfcOrganization extends IfcLineObject { + constructor(Id, Name, Description, Roles, Addresses) { + super(); + this.Id = Id; + this.Name = Name; + this.Description = Description; + this.Roles = Roles; + this.Addresses = Addresses; + this.type = 4251960020; + } + } + IFC2X32.IfcOrganization = IfcOrganization; + class IfcOrganizationRelationship extends IfcLineObject { + constructor(Name, Description, RelatingOrganization, RelatedOrganizations) { + super(); + this.Name = Name; + this.Description = Description; + this.RelatingOrganization = RelatingOrganization; + this.RelatedOrganizations = RelatedOrganizations; + this.type = 1411181986; + } + } + IFC2X32.IfcOrganizationRelationship = IfcOrganizationRelationship; + class IfcOwnerHistory extends IfcLineObject { + constructor(OwningUser, OwningApplication, State, ChangeAction, LastModifiedDate, LastModifyingUser, LastModifyingApplication, CreationDate) { + super(); + this.OwningUser = OwningUser; + this.OwningApplication = OwningApplication; + this.State = State; + this.ChangeAction = ChangeAction; + this.LastModifiedDate = LastModifiedDate; + this.LastModifyingUser = LastModifyingUser; + this.LastModifyingApplication = LastModifyingApplication; + this.CreationDate = CreationDate; + this.type = 1207048766; + } + } + IFC2X32.IfcOwnerHistory = IfcOwnerHistory; + class IfcPerson extends IfcLineObject { + constructor(Id, FamilyName, GivenName, MiddleNames, PrefixTitles, SuffixTitles, Roles, Addresses) { + super(); + this.Id = Id; + this.FamilyName = FamilyName; + this.GivenName = GivenName; + this.MiddleNames = MiddleNames; + this.PrefixTitles = PrefixTitles; + this.SuffixTitles = SuffixTitles; + this.Roles = Roles; + this.Addresses = Addresses; + this.type = 2077209135; + } + } + IFC2X32.IfcPerson = IfcPerson; + class IfcPersonAndOrganization extends IfcLineObject { + constructor(ThePerson, TheOrganization, Roles) { + super(); + this.ThePerson = ThePerson; + this.TheOrganization = TheOrganization; + this.Roles = Roles; + this.type = 101040310; + } + } + IFC2X32.IfcPersonAndOrganization = IfcPersonAndOrganization; + class IfcPhysicalQuantity extends IfcLineObject { + constructor(Name, Description) { + super(); + this.Name = Name; + this.Description = Description; + this.type = 2483315170; + } + } + IFC2X32.IfcPhysicalQuantity = IfcPhysicalQuantity; + class IfcPhysicalSimpleQuantity extends IfcPhysicalQuantity { + constructor(Name, Description, Unit) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.type = 2226359599; + } + } + IFC2X32.IfcPhysicalSimpleQuantity = IfcPhysicalSimpleQuantity; + class IfcPostalAddress extends IfcAddress { + constructor(Purpose, Description, UserDefinedPurpose, InternalLocation, AddressLines, PostalBox, Town, Region, PostalCode, Country) { + super(Purpose, Description, UserDefinedPurpose); + this.Purpose = Purpose; + this.Description = Description; + this.UserDefinedPurpose = UserDefinedPurpose; + this.InternalLocation = InternalLocation; + this.AddressLines = AddressLines; + this.PostalBox = PostalBox; + this.Town = Town; + this.Region = Region; + this.PostalCode = PostalCode; + this.Country = Country; + this.type = 3355820592; + } + } + IFC2X32.IfcPostalAddress = IfcPostalAddress; + class IfcPreDefinedItem extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 3727388367; + } + } + IFC2X32.IfcPreDefinedItem = IfcPreDefinedItem; + class IfcPreDefinedSymbol extends IfcPreDefinedItem { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 990879717; + } + } + IFC2X32.IfcPreDefinedSymbol = IfcPreDefinedSymbol; + class IfcPreDefinedTerminatorSymbol extends IfcPreDefinedSymbol { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 3213052703; + } + } + IFC2X32.IfcPreDefinedTerminatorSymbol = IfcPreDefinedTerminatorSymbol; + class IfcPreDefinedTextFont extends IfcPreDefinedItem { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 1775413392; + } + } + IFC2X32.IfcPreDefinedTextFont = IfcPreDefinedTextFont; + class IfcPresentationLayerAssignment extends IfcLineObject { + constructor(Name, Description, AssignedItems, Identifier) { + super(); + this.Name = Name; + this.Description = Description; + this.AssignedItems = AssignedItems; + this.Identifier = Identifier; + this.type = 2022622350; + } + } + IFC2X32.IfcPresentationLayerAssignment = IfcPresentationLayerAssignment; + class IfcPresentationLayerWithStyle extends IfcPresentationLayerAssignment { + constructor(Name, Description, AssignedItems, Identifier, LayerOn, LayerFrozen, LayerBlocked, LayerStyles) { + super(Name, Description, AssignedItems, Identifier); + this.Name = Name; + this.Description = Description; + this.AssignedItems = AssignedItems; + this.Identifier = Identifier; + this.LayerOn = LayerOn; + this.LayerFrozen = LayerFrozen; + this.LayerBlocked = LayerBlocked; + this.LayerStyles = LayerStyles; + this.type = 1304840413; + } + } + IFC2X32.IfcPresentationLayerWithStyle = IfcPresentationLayerWithStyle; + class IfcPresentationStyle extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 3119450353; + } + } + IFC2X32.IfcPresentationStyle = IfcPresentationStyle; + class IfcPresentationStyleAssignment extends IfcLineObject { + constructor(Styles) { + super(); + this.Styles = Styles; + this.type = 2417041796; + } + } + IFC2X32.IfcPresentationStyleAssignment = IfcPresentationStyleAssignment; + class IfcProductRepresentation extends IfcLineObject { + constructor(Name, Description, Representations) { + super(); + this.Name = Name; + this.Description = Description; + this.Representations = Representations; + this.type = 2095639259; + } + } + IFC2X32.IfcProductRepresentation = IfcProductRepresentation; + class IfcProductsOfCombustionProperties extends IfcMaterialProperties { + constructor(Material3, SpecificHeatCapacity, N20Content, COContent, CO2Content) { + super(Material3); + this.Material = Material3; + this.SpecificHeatCapacity = SpecificHeatCapacity; + this.N20Content = N20Content; + this.COContent = COContent; + this.CO2Content = CO2Content; + this.type = 2267347899; + } + } + IFC2X32.IfcProductsOfCombustionProperties = IfcProductsOfCombustionProperties; + class IfcProfileDef extends IfcLineObject { + constructor(ProfileType, ProfileName) { + super(); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.type = 3958567839; + } + } + IFC2X32.IfcProfileDef = IfcProfileDef; + class IfcProfileProperties extends IfcLineObject { + constructor(ProfileName, ProfileDefinition) { + super(); + this.ProfileName = ProfileName; + this.ProfileDefinition = ProfileDefinition; + this.type = 2802850158; + } + } + IFC2X32.IfcProfileProperties = IfcProfileProperties; + class IfcProperty extends IfcLineObject { + constructor(Name, Description) { + super(); + this.Name = Name; + this.Description = Description; + this.type = 2598011224; + } + } + IFC2X32.IfcProperty = IfcProperty; + class IfcPropertyConstraintRelationship extends IfcLineObject { + constructor(RelatingConstraint, RelatedProperties, Name, Description) { + super(); + this.RelatingConstraint = RelatingConstraint; + this.RelatedProperties = RelatedProperties; + this.Name = Name; + this.Description = Description; + this.type = 3896028662; + } + } + IFC2X32.IfcPropertyConstraintRelationship = IfcPropertyConstraintRelationship; + class IfcPropertyDependencyRelationship extends IfcLineObject { + constructor(DependingProperty, DependantProperty, Name, Description, Expression) { + super(); + this.DependingProperty = DependingProperty; + this.DependantProperty = DependantProperty; + this.Name = Name; + this.Description = Description; + this.Expression = Expression; + this.type = 148025276; + } + } + IFC2X32.IfcPropertyDependencyRelationship = IfcPropertyDependencyRelationship; + class IfcPropertyEnumeration extends IfcLineObject { + constructor(Name, EnumerationValues, Unit) { + super(); + this.Name = Name; + this.EnumerationValues = EnumerationValues; + this.Unit = Unit; + this.type = 3710013099; + } + } + IFC2X32.IfcPropertyEnumeration = IfcPropertyEnumeration; + class IfcQuantityArea extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, AreaValue) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.AreaValue = AreaValue; + this.type = 2044713172; + } + } + IFC2X32.IfcQuantityArea = IfcQuantityArea; + class IfcQuantityCount extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, CountValue) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.CountValue = CountValue; + this.type = 2093928680; + } + } + IFC2X32.IfcQuantityCount = IfcQuantityCount; + class IfcQuantityLength extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, LengthValue) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.LengthValue = LengthValue; + this.type = 931644368; + } + } + IFC2X32.IfcQuantityLength = IfcQuantityLength; + class IfcQuantityTime extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, TimeValue) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.TimeValue = TimeValue; + this.type = 3252649465; + } + } + IFC2X32.IfcQuantityTime = IfcQuantityTime; + class IfcQuantityVolume extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, VolumeValue) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.VolumeValue = VolumeValue; + this.type = 2405470396; + } + } + IFC2X32.IfcQuantityVolume = IfcQuantityVolume; + class IfcQuantityWeight extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, WeightValue) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.WeightValue = WeightValue; + this.type = 825690147; + } + } + IFC2X32.IfcQuantityWeight = IfcQuantityWeight; + class IfcReferencesValueDocument extends IfcLineObject { + constructor(ReferencedDocument, ReferencingValues, Name, Description) { + super(); + this.ReferencedDocument = ReferencedDocument; + this.ReferencingValues = ReferencingValues; + this.Name = Name; + this.Description = Description; + this.type = 2692823254; + } + } + IFC2X32.IfcReferencesValueDocument = IfcReferencesValueDocument; + class IfcReinforcementBarProperties extends IfcLineObject { + constructor(TotalCrossSectionArea, SteelGrade, BarSurface, EffectiveDepth, NominalBarDiameter, BarCount) { + super(); + this.TotalCrossSectionArea = TotalCrossSectionArea; + this.SteelGrade = SteelGrade; + this.BarSurface = BarSurface; + this.EffectiveDepth = EffectiveDepth; + this.NominalBarDiameter = NominalBarDiameter; + this.BarCount = BarCount; + this.type = 1580146022; + } + } + IFC2X32.IfcReinforcementBarProperties = IfcReinforcementBarProperties; + class IfcRelaxation extends IfcLineObject { + constructor(RelaxationValue, InitialStress) { + super(); + this.RelaxationValue = RelaxationValue; + this.InitialStress = InitialStress; + this.type = 1222501353; + } + } + IFC2X32.IfcRelaxation = IfcRelaxation; + class IfcRepresentation extends IfcLineObject { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 1076942058; + } + } + IFC2X32.IfcRepresentation = IfcRepresentation; + class IfcRepresentationContext extends IfcLineObject { + constructor(ContextIdentifier, ContextType) { + super(); + this.ContextIdentifier = ContextIdentifier; + this.ContextType = ContextType; + this.type = 3377609919; + } + } + IFC2X32.IfcRepresentationContext = IfcRepresentationContext; + class IfcRepresentationItem extends IfcLineObject { + constructor() { + super(); + this.type = 3008791417; + } + } + IFC2X32.IfcRepresentationItem = IfcRepresentationItem; + class IfcRepresentationMap extends IfcLineObject { + constructor(MappingOrigin, MappedRepresentation) { + super(); + this.MappingOrigin = MappingOrigin; + this.MappedRepresentation = MappedRepresentation; + this.type = 1660063152; + } + } + IFC2X32.IfcRepresentationMap = IfcRepresentationMap; + class IfcRibPlateProfileProperties extends IfcProfileProperties { + constructor(ProfileName, ProfileDefinition, Thickness, RibHeight, RibWidth, RibSpacing, Direction) { + super(ProfileName, ProfileDefinition); + this.ProfileName = ProfileName; + this.ProfileDefinition = ProfileDefinition; + this.Thickness = Thickness; + this.RibHeight = RibHeight; + this.RibWidth = RibWidth; + this.RibSpacing = RibSpacing; + this.Direction = Direction; + this.type = 3679540991; + } + } + IFC2X32.IfcRibPlateProfileProperties = IfcRibPlateProfileProperties; + class IfcRoot extends IfcLineObject { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 2341007311; + } + } + IFC2X32.IfcRoot = IfcRoot; + class IfcSIUnit extends IfcNamedUnit { + constructor(UnitType, Prefix, Name) { + super(new Handle(0), UnitType); + this.UnitType = UnitType; + this.Prefix = Prefix; + this.Name = Name; + this.type = 448429030; + } + } + IFC2X32.IfcSIUnit = IfcSIUnit; + class IfcSectionProperties extends IfcLineObject { + constructor(SectionType, StartProfile, EndProfile) { + super(); + this.SectionType = SectionType; + this.StartProfile = StartProfile; + this.EndProfile = EndProfile; + this.type = 2042790032; + } + } + IFC2X32.IfcSectionProperties = IfcSectionProperties; + class IfcSectionReinforcementProperties extends IfcLineObject { + constructor(LongitudinalStartPosition, LongitudinalEndPosition, TransversePosition, ReinforcementRole, SectionDefinition, CrossSectionReinforcementDefinitions) { + super(); + this.LongitudinalStartPosition = LongitudinalStartPosition; + this.LongitudinalEndPosition = LongitudinalEndPosition; + this.TransversePosition = TransversePosition; + this.ReinforcementRole = ReinforcementRole; + this.SectionDefinition = SectionDefinition; + this.CrossSectionReinforcementDefinitions = CrossSectionReinforcementDefinitions; + this.type = 4165799628; + } + } + IFC2X32.IfcSectionReinforcementProperties = IfcSectionReinforcementProperties; + class IfcShapeAspect extends IfcLineObject { + constructor(ShapeRepresentations, Name, Description, ProductDefinitional, PartOfProductDefinitionShape) { + super(); + this.ShapeRepresentations = ShapeRepresentations; + this.Name = Name; + this.Description = Description; + this.ProductDefinitional = ProductDefinitional; + this.PartOfProductDefinitionShape = PartOfProductDefinitionShape; + this.type = 867548509; + } + } + IFC2X32.IfcShapeAspect = IfcShapeAspect; + class IfcShapeModel extends IfcRepresentation { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 3982875396; + } + } + IFC2X32.IfcShapeModel = IfcShapeModel; + class IfcShapeRepresentation extends IfcShapeModel { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 4240577450; + } + } + IFC2X32.IfcShapeRepresentation = IfcShapeRepresentation; + class IfcSimpleProperty extends IfcProperty { + constructor(Name, Description) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.type = 3692461612; + } + } + IFC2X32.IfcSimpleProperty = IfcSimpleProperty; + class IfcStructuralConnectionCondition extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 2273995522; + } + } + IFC2X32.IfcStructuralConnectionCondition = IfcStructuralConnectionCondition; + class IfcStructuralLoad extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 2162789131; + } + } + IFC2X32.IfcStructuralLoad = IfcStructuralLoad; + class IfcStructuralLoadStatic extends IfcStructuralLoad { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 2525727697; + } + } + IFC2X32.IfcStructuralLoadStatic = IfcStructuralLoadStatic; + class IfcStructuralLoadTemperature extends IfcStructuralLoadStatic { + constructor(Name, DeltaT_Constant, DeltaT_Y, DeltaT_Z) { + super(Name); + this.Name = Name; + this.DeltaT_Constant = DeltaT_Constant; + this.DeltaT_Y = DeltaT_Y; + this.DeltaT_Z = DeltaT_Z; + this.type = 3408363356; + } + } + IFC2X32.IfcStructuralLoadTemperature = IfcStructuralLoadTemperature; + class IfcStyleModel extends IfcRepresentation { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 2830218821; + } + } + IFC2X32.IfcStyleModel = IfcStyleModel; + class IfcStyledItem extends IfcRepresentationItem { + constructor(Item, Styles, Name) { + super(); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.type = 3958052878; + } + } + IFC2X32.IfcStyledItem = IfcStyledItem; + class IfcStyledRepresentation extends IfcStyleModel { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 3049322572; + } + } + IFC2X32.IfcStyledRepresentation = IfcStyledRepresentation; + class IfcSurfaceStyle extends IfcPresentationStyle { + constructor(Name, Side, Styles) { + super(Name); + this.Name = Name; + this.Side = Side; + this.Styles = Styles; + this.type = 1300840506; + } + } + IFC2X32.IfcSurfaceStyle = IfcSurfaceStyle; + class IfcSurfaceStyleLighting extends IfcLineObject { + constructor(DiffuseTransmissionColour, DiffuseReflectionColour, TransmissionColour, ReflectanceColour) { + super(); + this.DiffuseTransmissionColour = DiffuseTransmissionColour; + this.DiffuseReflectionColour = DiffuseReflectionColour; + this.TransmissionColour = TransmissionColour; + this.ReflectanceColour = ReflectanceColour; + this.type = 3303107099; + } + } + IFC2X32.IfcSurfaceStyleLighting = IfcSurfaceStyleLighting; + class IfcSurfaceStyleRefraction extends IfcLineObject { + constructor(RefractionIndex, DispersionFactor) { + super(); + this.RefractionIndex = RefractionIndex; + this.DispersionFactor = DispersionFactor; + this.type = 1607154358; + } + } + IFC2X32.IfcSurfaceStyleRefraction = IfcSurfaceStyleRefraction; + class IfcSurfaceStyleShading extends IfcLineObject { + constructor(SurfaceColour) { + super(); + this.SurfaceColour = SurfaceColour; + this.type = 846575682; + } + } + IFC2X32.IfcSurfaceStyleShading = IfcSurfaceStyleShading; + class IfcSurfaceStyleWithTextures extends IfcLineObject { + constructor(Textures) { + super(); + this.Textures = Textures; + this.type = 1351298697; + } + } + IFC2X32.IfcSurfaceStyleWithTextures = IfcSurfaceStyleWithTextures; + class IfcSurfaceTexture extends IfcLineObject { + constructor(RepeatS, RepeatT, TextureType, TextureTransform) { + super(); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.TextureType = TextureType; + this.TextureTransform = TextureTransform; + this.type = 626085974; + } + } + IFC2X32.IfcSurfaceTexture = IfcSurfaceTexture; + class IfcSymbolStyle extends IfcPresentationStyle { + constructor(Name, StyleOfSymbol) { + super(Name); + this.Name = Name; + this.StyleOfSymbol = StyleOfSymbol; + this.type = 1290481447; + } + } + IFC2X32.IfcSymbolStyle = IfcSymbolStyle; + class IfcTable extends IfcLineObject { + constructor(Name, Rows) { + super(); + this.Name = Name; + this.Rows = Rows; + this.type = 985171141; + } + } + IFC2X32.IfcTable = IfcTable; + class IfcTableRow extends IfcLineObject { + constructor(RowCells, IsHeading) { + super(); + this.RowCells = RowCells; + this.IsHeading = IsHeading; + this.type = 531007025; + } + } + IFC2X32.IfcTableRow = IfcTableRow; + class IfcTelecomAddress extends IfcAddress { + constructor(Purpose, Description, UserDefinedPurpose, TelephoneNumbers, FacsimileNumbers, PagerNumber, ElectronicMailAddresses, WWWHomePageURL) { + super(Purpose, Description, UserDefinedPurpose); + this.Purpose = Purpose; + this.Description = Description; + this.UserDefinedPurpose = UserDefinedPurpose; + this.TelephoneNumbers = TelephoneNumbers; + this.FacsimileNumbers = FacsimileNumbers; + this.PagerNumber = PagerNumber; + this.ElectronicMailAddresses = ElectronicMailAddresses; + this.WWWHomePageURL = WWWHomePageURL; + this.type = 912023232; + } + } + IFC2X32.IfcTelecomAddress = IfcTelecomAddress; + class IfcTextStyle extends IfcPresentationStyle { + constructor(Name, TextCharacterAppearance, TextStyle, TextFontStyle) { + super(Name); + this.Name = Name; + this.TextCharacterAppearance = TextCharacterAppearance; + this.TextStyle = TextStyle; + this.TextFontStyle = TextFontStyle; + this.type = 1447204868; + } + } + IFC2X32.IfcTextStyle = IfcTextStyle; + class IfcTextStyleFontModel extends IfcPreDefinedTextFont { + constructor(Name, FontFamily, FontStyle, FontVariant, FontWeight, FontSize) { + super(Name); + this.Name = Name; + this.FontFamily = FontFamily; + this.FontStyle = FontStyle; + this.FontVariant = FontVariant; + this.FontWeight = FontWeight; + this.FontSize = FontSize; + this.type = 1983826977; + } + } + IFC2X32.IfcTextStyleFontModel = IfcTextStyleFontModel; + class IfcTextStyleForDefinedFont extends IfcLineObject { + constructor(Colour, BackgroundColour) { + super(); + this.Colour = Colour; + this.BackgroundColour = BackgroundColour; + this.type = 2636378356; + } + } + IFC2X32.IfcTextStyleForDefinedFont = IfcTextStyleForDefinedFont; + class IfcTextStyleTextModel extends IfcLineObject { + constructor(TextIndent, TextAlign, TextDecoration, LetterSpacing, WordSpacing, TextTransform, LineHeight) { + super(); + this.TextIndent = TextIndent; + this.TextAlign = TextAlign; + this.TextDecoration = TextDecoration; + this.LetterSpacing = LetterSpacing; + this.WordSpacing = WordSpacing; + this.TextTransform = TextTransform; + this.LineHeight = LineHeight; + this.type = 1640371178; + } + } + IFC2X32.IfcTextStyleTextModel = IfcTextStyleTextModel; + class IfcTextStyleWithBoxCharacteristics extends IfcLineObject { + constructor(BoxHeight, BoxWidth, BoxSlantAngle, BoxRotateAngle, CharacterSpacing) { + super(); + this.BoxHeight = BoxHeight; + this.BoxWidth = BoxWidth; + this.BoxSlantAngle = BoxSlantAngle; + this.BoxRotateAngle = BoxRotateAngle; + this.CharacterSpacing = CharacterSpacing; + this.type = 1484833681; + } + } + IFC2X32.IfcTextStyleWithBoxCharacteristics = IfcTextStyleWithBoxCharacteristics; + class IfcTextureCoordinate extends IfcLineObject { + constructor() { + super(); + this.type = 280115917; + } + } + IFC2X32.IfcTextureCoordinate = IfcTextureCoordinate; + class IfcTextureCoordinateGenerator extends IfcTextureCoordinate { + constructor(Mode, Parameter) { + super(); + this.Mode = Mode; + this.Parameter = Parameter; + this.type = 1742049831; + } + } + IFC2X32.IfcTextureCoordinateGenerator = IfcTextureCoordinateGenerator; + class IfcTextureMap extends IfcTextureCoordinate { + constructor(TextureMaps) { + super(); + this.TextureMaps = TextureMaps; + this.type = 2552916305; + } + } + IFC2X32.IfcTextureMap = IfcTextureMap; + class IfcTextureVertex extends IfcLineObject { + constructor(Coordinates) { + super(); + this.Coordinates = Coordinates; + this.type = 1210645708; + } + } + IFC2X32.IfcTextureVertex = IfcTextureVertex; + class IfcThermalMaterialProperties extends IfcMaterialProperties { + constructor(Material3, SpecificHeatCapacity, BoilingPoint, FreezingPoint, ThermalConductivity) { + super(Material3); + this.Material = Material3; + this.SpecificHeatCapacity = SpecificHeatCapacity; + this.BoilingPoint = BoilingPoint; + this.FreezingPoint = FreezingPoint; + this.ThermalConductivity = ThermalConductivity; + this.type = 3317419933; + } + } + IFC2X32.IfcThermalMaterialProperties = IfcThermalMaterialProperties; + class IfcTimeSeries extends IfcLineObject { + constructor(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit) { + super(); + this.Name = Name; + this.Description = Description; + this.StartTime = StartTime; + this.EndTime = EndTime; + this.TimeSeriesDataType = TimeSeriesDataType; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.Unit = Unit; + this.type = 3101149627; + } + } + IFC2X32.IfcTimeSeries = IfcTimeSeries; + class IfcTimeSeriesReferenceRelationship extends IfcLineObject { + constructor(ReferencedTimeSeries, TimeSeriesReferences) { + super(); + this.ReferencedTimeSeries = ReferencedTimeSeries; + this.TimeSeriesReferences = TimeSeriesReferences; + this.type = 1718945513; + } + } + IFC2X32.IfcTimeSeriesReferenceRelationship = IfcTimeSeriesReferenceRelationship; + class IfcTimeSeriesValue extends IfcLineObject { + constructor(ListValues) { + super(); + this.ListValues = ListValues; + this.type = 581633288; + } + } + IFC2X32.IfcTimeSeriesValue = IfcTimeSeriesValue; + class IfcTopologicalRepresentationItem extends IfcRepresentationItem { + constructor() { + super(); + this.type = 1377556343; + } + } + IFC2X32.IfcTopologicalRepresentationItem = IfcTopologicalRepresentationItem; + class IfcTopologyRepresentation extends IfcShapeModel { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 1735638870; + } + } + IFC2X32.IfcTopologyRepresentation = IfcTopologyRepresentation; + class IfcUnitAssignment extends IfcLineObject { + constructor(Units) { + super(); + this.Units = Units; + this.type = 180925521; + } + } + IFC2X32.IfcUnitAssignment = IfcUnitAssignment; + class IfcVertex extends IfcTopologicalRepresentationItem { + constructor() { + super(); + this.type = 2799835756; + } + } + IFC2X32.IfcVertex = IfcVertex; + class IfcVertexBasedTextureMap extends IfcLineObject { + constructor(TextureVertices, TexturePoints) { + super(); + this.TextureVertices = TextureVertices; + this.TexturePoints = TexturePoints; + this.type = 3304826586; + } + } + IFC2X32.IfcVertexBasedTextureMap = IfcVertexBasedTextureMap; + class IfcVertexPoint extends IfcVertex { + constructor(VertexGeometry) { + super(); + this.VertexGeometry = VertexGeometry; + this.type = 1907098498; + } + } + IFC2X32.IfcVertexPoint = IfcVertexPoint; + class IfcVirtualGridIntersection extends IfcLineObject { + constructor(IntersectingAxes, OffsetDistances) { + super(); + this.IntersectingAxes = IntersectingAxes; + this.OffsetDistances = OffsetDistances; + this.type = 891718957; + } + } + IFC2X32.IfcVirtualGridIntersection = IfcVirtualGridIntersection; + class IfcWaterProperties extends IfcMaterialProperties { + constructor(Material3, IsPotable, Hardness, AlkalinityConcentration, AcidityConcentration, ImpuritiesContent, PHLevel, DissolvedSolidsContent) { + super(Material3); + this.Material = Material3; + this.IsPotable = IsPotable; + this.Hardness = Hardness; + this.AlkalinityConcentration = AlkalinityConcentration; + this.AcidityConcentration = AcidityConcentration; + this.ImpuritiesContent = ImpuritiesContent; + this.PHLevel = PHLevel; + this.DissolvedSolidsContent = DissolvedSolidsContent; + this.type = 1065908215; + } + } + IFC2X32.IfcWaterProperties = IfcWaterProperties; + class IfcAnnotationOccurrence extends IfcStyledItem { + constructor(Item, Styles, Name) { + super(Item, Styles, Name); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.type = 2442683028; + } + } + IFC2X32.IfcAnnotationOccurrence = IfcAnnotationOccurrence; + class IfcAnnotationSurfaceOccurrence extends IfcAnnotationOccurrence { + constructor(Item, Styles, Name) { + super(Item, Styles, Name); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.type = 962685235; + } + } + IFC2X32.IfcAnnotationSurfaceOccurrence = IfcAnnotationSurfaceOccurrence; + class IfcAnnotationSymbolOccurrence extends IfcAnnotationOccurrence { + constructor(Item, Styles, Name) { + super(Item, Styles, Name); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.type = 3612888222; + } + } + IFC2X32.IfcAnnotationSymbolOccurrence = IfcAnnotationSymbolOccurrence; + class IfcAnnotationTextOccurrence extends IfcAnnotationOccurrence { + constructor(Item, Styles, Name) { + super(Item, Styles, Name); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.type = 2297822566; + } + } + IFC2X32.IfcAnnotationTextOccurrence = IfcAnnotationTextOccurrence; + class IfcArbitraryClosedProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, OuterCurve) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.OuterCurve = OuterCurve; + this.type = 3798115385; + } + } + IFC2X32.IfcArbitraryClosedProfileDef = IfcArbitraryClosedProfileDef; + class IfcArbitraryOpenProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, Curve) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Curve = Curve; + this.type = 1310608509; + } + } + IFC2X32.IfcArbitraryOpenProfileDef = IfcArbitraryOpenProfileDef; + class IfcArbitraryProfileDefWithVoids extends IfcArbitraryClosedProfileDef { + constructor(ProfileType, ProfileName, OuterCurve, InnerCurves) { + super(ProfileType, ProfileName, OuterCurve); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.OuterCurve = OuterCurve; + this.InnerCurves = InnerCurves; + this.type = 2705031697; + } + } + IFC2X32.IfcArbitraryProfileDefWithVoids = IfcArbitraryProfileDefWithVoids; + class IfcBlobTexture extends IfcSurfaceTexture { + constructor(RepeatS, RepeatT, TextureType, TextureTransform, RasterFormat, RasterCode) { + super(RepeatS, RepeatT, TextureType, TextureTransform); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.TextureType = TextureType; + this.TextureTransform = TextureTransform; + this.RasterFormat = RasterFormat; + this.RasterCode = RasterCode; + this.type = 616511568; + } + } + IFC2X32.IfcBlobTexture = IfcBlobTexture; + class IfcCenterLineProfileDef extends IfcArbitraryOpenProfileDef { + constructor(ProfileType, ProfileName, Curve, Thickness) { + super(ProfileType, ProfileName, Curve); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Curve = Curve; + this.Thickness = Thickness; + this.type = 3150382593; + } + } + IFC2X32.IfcCenterLineProfileDef = IfcCenterLineProfileDef; + class IfcClassificationReference extends IfcExternalReference { + constructor(Location, ItemReference, Name, ReferencedSource) { + super(Location, ItemReference, Name); + this.Location = Location; + this.ItemReference = ItemReference; + this.Name = Name; + this.ReferencedSource = ReferencedSource; + this.type = 647927063; + } + } + IFC2X32.IfcClassificationReference = IfcClassificationReference; + class IfcColourRgb extends IfcColourSpecification { + constructor(Name, Red, Green, Blue) { + super(Name); + this.Name = Name; + this.Red = Red; + this.Green = Green; + this.Blue = Blue; + this.type = 776857604; + } + } + IFC2X32.IfcColourRgb = IfcColourRgb; + class IfcComplexProperty extends IfcProperty { + constructor(Name, Description, UsageName, HasProperties) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.UsageName = UsageName; + this.HasProperties = HasProperties; + this.type = 2542286263; + } + } + IFC2X32.IfcComplexProperty = IfcComplexProperty; + class IfcCompositeProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, Profiles, Label) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Profiles = Profiles; + this.Label = Label; + this.type = 1485152156; + } + } + IFC2X32.IfcCompositeProfileDef = IfcCompositeProfileDef; + class IfcConnectedFaceSet extends IfcTopologicalRepresentationItem { + constructor(CfsFaces) { + super(); + this.CfsFaces = CfsFaces; + this.type = 370225590; + } + } + IFC2X32.IfcConnectedFaceSet = IfcConnectedFaceSet; + class IfcConnectionCurveGeometry extends IfcConnectionGeometry { + constructor(CurveOnRelatingElement, CurveOnRelatedElement) { + super(); + this.CurveOnRelatingElement = CurveOnRelatingElement; + this.CurveOnRelatedElement = CurveOnRelatedElement; + this.type = 1981873012; + } + } + IFC2X32.IfcConnectionCurveGeometry = IfcConnectionCurveGeometry; + class IfcConnectionPointEccentricity extends IfcConnectionPointGeometry { + constructor(PointOnRelatingElement, PointOnRelatedElement, EccentricityInX, EccentricityInY, EccentricityInZ) { + super(PointOnRelatingElement, PointOnRelatedElement); + this.PointOnRelatingElement = PointOnRelatingElement; + this.PointOnRelatedElement = PointOnRelatedElement; + this.EccentricityInX = EccentricityInX; + this.EccentricityInY = EccentricityInY; + this.EccentricityInZ = EccentricityInZ; + this.type = 45288368; + } + } + IFC2X32.IfcConnectionPointEccentricity = IfcConnectionPointEccentricity; + class IfcContextDependentUnit extends IfcNamedUnit { + constructor(Dimensions, UnitType, Name) { + super(Dimensions, UnitType); + this.Dimensions = Dimensions; + this.UnitType = UnitType; + this.Name = Name; + this.type = 3050246964; + } + } + IFC2X32.IfcContextDependentUnit = IfcContextDependentUnit; + class IfcConversionBasedUnit extends IfcNamedUnit { + constructor(Dimensions, UnitType, Name, ConversionFactor) { + super(Dimensions, UnitType); + this.Dimensions = Dimensions; + this.UnitType = UnitType; + this.Name = Name; + this.ConversionFactor = ConversionFactor; + this.type = 2889183280; + } + } + IFC2X32.IfcConversionBasedUnit = IfcConversionBasedUnit; + class IfcCurveStyle extends IfcPresentationStyle { + constructor(Name, CurveFont, CurveWidth, CurveColour) { + super(Name); + this.Name = Name; + this.CurveFont = CurveFont; + this.CurveWidth = CurveWidth; + this.CurveColour = CurveColour; + this.type = 3800577675; + } + } + IFC2X32.IfcCurveStyle = IfcCurveStyle; + class IfcDerivedProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, ParentProfile, Operator, Label) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.ParentProfile = ParentProfile; + this.Operator = Operator; + this.Label = Label; + this.type = 3632507154; + } + } + IFC2X32.IfcDerivedProfileDef = IfcDerivedProfileDef; + class IfcDimensionCalloutRelationship extends IfcDraughtingCalloutRelationship { + constructor(Name, Description, RelatingDraughtingCallout, RelatedDraughtingCallout) { + super(Name, Description, RelatingDraughtingCallout, RelatedDraughtingCallout); + this.Name = Name; + this.Description = Description; + this.RelatingDraughtingCallout = RelatingDraughtingCallout; + this.RelatedDraughtingCallout = RelatedDraughtingCallout; + this.type = 2273265877; + } + } + IFC2X32.IfcDimensionCalloutRelationship = IfcDimensionCalloutRelationship; + class IfcDimensionPair extends IfcDraughtingCalloutRelationship { + constructor(Name, Description, RelatingDraughtingCallout, RelatedDraughtingCallout) { + super(Name, Description, RelatingDraughtingCallout, RelatedDraughtingCallout); + this.Name = Name; + this.Description = Description; + this.RelatingDraughtingCallout = RelatingDraughtingCallout; + this.RelatedDraughtingCallout = RelatedDraughtingCallout; + this.type = 1694125774; + } + } + IFC2X32.IfcDimensionPair = IfcDimensionPair; + class IfcDocumentReference extends IfcExternalReference { + constructor(Location, ItemReference, Name) { + super(Location, ItemReference, Name); + this.Location = Location; + this.ItemReference = ItemReference; + this.Name = Name; + this.type = 3732053477; + } + } + IFC2X32.IfcDocumentReference = IfcDocumentReference; + class IfcDraughtingPreDefinedTextFont extends IfcPreDefinedTextFont { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 4170525392; + } + } + IFC2X32.IfcDraughtingPreDefinedTextFont = IfcDraughtingPreDefinedTextFont; + class IfcEdge extends IfcTopologicalRepresentationItem { + constructor(EdgeStart, EdgeEnd) { + super(); + this.EdgeStart = EdgeStart; + this.EdgeEnd = EdgeEnd; + this.type = 3900360178; + } + } + IFC2X32.IfcEdge = IfcEdge; + class IfcEdgeCurve extends IfcEdge { + constructor(EdgeStart, EdgeEnd, EdgeGeometry, SameSense) { + super(EdgeStart, EdgeEnd); + this.EdgeStart = EdgeStart; + this.EdgeEnd = EdgeEnd; + this.EdgeGeometry = EdgeGeometry; + this.SameSense = SameSense; + this.type = 476780140; + } + } + IFC2X32.IfcEdgeCurve = IfcEdgeCurve; + class IfcExtendedMaterialProperties extends IfcMaterialProperties { + constructor(Material3, ExtendedProperties, Description, Name) { + super(Material3); + this.Material = Material3; + this.ExtendedProperties = ExtendedProperties; + this.Description = Description; + this.Name = Name; + this.type = 1860660968; + } + } + IFC2X32.IfcExtendedMaterialProperties = IfcExtendedMaterialProperties; + class IfcFace extends IfcTopologicalRepresentationItem { + constructor(Bounds) { + super(); + this.Bounds = Bounds; + this.type = 2556980723; + } + } + IFC2X32.IfcFace = IfcFace; + class IfcFaceBound extends IfcTopologicalRepresentationItem { + constructor(Bound, Orientation) { + super(); + this.Bound = Bound; + this.Orientation = Orientation; + this.type = 1809719519; + } + } + IFC2X32.IfcFaceBound = IfcFaceBound; + class IfcFaceOuterBound extends IfcFaceBound { + constructor(Bound, Orientation) { + super(Bound, Orientation); + this.Bound = Bound; + this.Orientation = Orientation; + this.type = 803316827; + } + } + IFC2X32.IfcFaceOuterBound = IfcFaceOuterBound; + class IfcFaceSurface extends IfcFace { + constructor(Bounds, FaceSurface, SameSense) { + super(Bounds); + this.Bounds = Bounds; + this.FaceSurface = FaceSurface; + this.SameSense = SameSense; + this.type = 3008276851; + } + } + IFC2X32.IfcFaceSurface = IfcFaceSurface; + class IfcFailureConnectionCondition extends IfcStructuralConnectionCondition { + constructor(Name, TensionFailureX, TensionFailureY, TensionFailureZ, CompressionFailureX, CompressionFailureY, CompressionFailureZ) { + super(Name); + this.Name = Name; + this.TensionFailureX = TensionFailureX; + this.TensionFailureY = TensionFailureY; + this.TensionFailureZ = TensionFailureZ; + this.CompressionFailureX = CompressionFailureX; + this.CompressionFailureY = CompressionFailureY; + this.CompressionFailureZ = CompressionFailureZ; + this.type = 4219587988; + } + } + IFC2X32.IfcFailureConnectionCondition = IfcFailureConnectionCondition; + class IfcFillAreaStyle extends IfcPresentationStyle { + constructor(Name, FillStyles) { + super(Name); + this.Name = Name; + this.FillStyles = FillStyles; + this.type = 738692330; + } + } + IFC2X32.IfcFillAreaStyle = IfcFillAreaStyle; + class IfcFuelProperties extends IfcMaterialProperties { + constructor(Material3, CombustionTemperature, CarbonContent, LowerHeatingValue, HigherHeatingValue) { + super(Material3); + this.Material = Material3; + this.CombustionTemperature = CombustionTemperature; + this.CarbonContent = CarbonContent; + this.LowerHeatingValue = LowerHeatingValue; + this.HigherHeatingValue = HigherHeatingValue; + this.type = 3857492461; + } + } + IFC2X32.IfcFuelProperties = IfcFuelProperties; + class IfcGeneralMaterialProperties extends IfcMaterialProperties { + constructor(Material3, MolecularWeight, Porosity, MassDensity) { + super(Material3); + this.Material = Material3; + this.MolecularWeight = MolecularWeight; + this.Porosity = Porosity; + this.MassDensity = MassDensity; + this.type = 803998398; + } + } + IFC2X32.IfcGeneralMaterialProperties = IfcGeneralMaterialProperties; + class IfcGeneralProfileProperties extends IfcProfileProperties { + constructor(ProfileName, ProfileDefinition, PhysicalWeight, Perimeter, MinimumPlateThickness, MaximumPlateThickness, CrossSectionArea) { + super(ProfileName, ProfileDefinition); + this.ProfileName = ProfileName; + this.ProfileDefinition = ProfileDefinition; + this.PhysicalWeight = PhysicalWeight; + this.Perimeter = Perimeter; + this.MinimumPlateThickness = MinimumPlateThickness; + this.MaximumPlateThickness = MaximumPlateThickness; + this.CrossSectionArea = CrossSectionArea; + this.type = 1446786286; + } + } + IFC2X32.IfcGeneralProfileProperties = IfcGeneralProfileProperties; + class IfcGeometricRepresentationContext extends IfcRepresentationContext { + constructor(ContextIdentifier, ContextType, CoordinateSpaceDimension, Precision, WorldCoordinateSystem, TrueNorth) { + super(ContextIdentifier, ContextType); + this.ContextIdentifier = ContextIdentifier; + this.ContextType = ContextType; + this.CoordinateSpaceDimension = CoordinateSpaceDimension; + this.Precision = Precision; + this.WorldCoordinateSystem = WorldCoordinateSystem; + this.TrueNorth = TrueNorth; + this.type = 3448662350; + } + } + IFC2X32.IfcGeometricRepresentationContext = IfcGeometricRepresentationContext; + class IfcGeometricRepresentationItem extends IfcRepresentationItem { + constructor() { + super(); + this.type = 2453401579; + } + } + IFC2X32.IfcGeometricRepresentationItem = IfcGeometricRepresentationItem; + class IfcGeometricRepresentationSubContext extends IfcGeometricRepresentationContext { + constructor(ContextIdentifier, ContextType, ParentContext, TargetScale, TargetView, UserDefinedTargetView) { + super(ContextIdentifier, ContextType, new IfcDimensionCount(0), null, new Handle(0), null); + this.ContextIdentifier = ContextIdentifier; + this.ContextType = ContextType; + this.ParentContext = ParentContext; + this.TargetScale = TargetScale; + this.TargetView = TargetView; + this.UserDefinedTargetView = UserDefinedTargetView; + this.type = 4142052618; + } + } + IFC2X32.IfcGeometricRepresentationSubContext = IfcGeometricRepresentationSubContext; + class IfcGeometricSet extends IfcGeometricRepresentationItem { + constructor(Elements) { + super(); + this.Elements = Elements; + this.type = 3590301190; + } + } + IFC2X32.IfcGeometricSet = IfcGeometricSet; + class IfcGridPlacement extends IfcObjectPlacement { + constructor(PlacementLocation, PlacementRefDirection) { + super(); + this.PlacementLocation = PlacementLocation; + this.PlacementRefDirection = PlacementRefDirection; + this.type = 178086475; + } + } + IFC2X32.IfcGridPlacement = IfcGridPlacement; + class IfcHalfSpaceSolid extends IfcGeometricRepresentationItem { + constructor(BaseSurface, AgreementFlag) { + super(); + this.BaseSurface = BaseSurface; + this.AgreementFlag = AgreementFlag; + this.type = 812098782; + } + } + IFC2X32.IfcHalfSpaceSolid = IfcHalfSpaceSolid; + class IfcHygroscopicMaterialProperties extends IfcMaterialProperties { + constructor(Material3, UpperVaporResistanceFactor, LowerVaporResistanceFactor, IsothermalMoistureCapacity, VaporPermeability, MoistureDiffusivity) { + super(Material3); + this.Material = Material3; + this.UpperVaporResistanceFactor = UpperVaporResistanceFactor; + this.LowerVaporResistanceFactor = LowerVaporResistanceFactor; + this.IsothermalMoistureCapacity = IsothermalMoistureCapacity; + this.VaporPermeability = VaporPermeability; + this.MoistureDiffusivity = MoistureDiffusivity; + this.type = 2445078500; + } + } + IFC2X32.IfcHygroscopicMaterialProperties = IfcHygroscopicMaterialProperties; + class IfcImageTexture extends IfcSurfaceTexture { + constructor(RepeatS, RepeatT, TextureType, TextureTransform, UrlReference) { + super(RepeatS, RepeatT, TextureType, TextureTransform); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.TextureType = TextureType; + this.TextureTransform = TextureTransform; + this.UrlReference = UrlReference; + this.type = 3905492369; + } + } + IFC2X32.IfcImageTexture = IfcImageTexture; + class IfcIrregularTimeSeries extends IfcTimeSeries { + constructor(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit, Values) { + super(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit); + this.Name = Name; + this.Description = Description; + this.StartTime = StartTime; + this.EndTime = EndTime; + this.TimeSeriesDataType = TimeSeriesDataType; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.Unit = Unit; + this.Values = Values; + this.type = 3741457305; + } + } + IFC2X32.IfcIrregularTimeSeries = IfcIrregularTimeSeries; + class IfcLightSource extends IfcGeometricRepresentationItem { + constructor(Name, LightColour, AmbientIntensity, Intensity) { + super(); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.type = 1402838566; + } + } + IFC2X32.IfcLightSource = IfcLightSource; + class IfcLightSourceAmbient extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.type = 125510826; + } + } + IFC2X32.IfcLightSourceAmbient = IfcLightSourceAmbient; + class IfcLightSourceDirectional extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity, Orientation) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Orientation = Orientation; + this.type = 2604431987; + } + } + IFC2X32.IfcLightSourceDirectional = IfcLightSourceDirectional; + class IfcLightSourceGoniometric extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity, Position, ColourAppearance, ColourTemperature, LuminousFlux, LightEmissionSource, LightDistributionDataSource) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Position = Position; + this.ColourAppearance = ColourAppearance; + this.ColourTemperature = ColourTemperature; + this.LuminousFlux = LuminousFlux; + this.LightEmissionSource = LightEmissionSource; + this.LightDistributionDataSource = LightDistributionDataSource; + this.type = 4266656042; + } + } + IFC2X32.IfcLightSourceGoniometric = IfcLightSourceGoniometric; + class IfcLightSourcePositional extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity, Position, Radius, ConstantAttenuation, DistanceAttenuation, QuadricAttenuation) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Position = Position; + this.Radius = Radius; + this.ConstantAttenuation = ConstantAttenuation; + this.DistanceAttenuation = DistanceAttenuation; + this.QuadricAttenuation = QuadricAttenuation; + this.type = 1520743889; + } + } + IFC2X32.IfcLightSourcePositional = IfcLightSourcePositional; + class IfcLightSourceSpot extends IfcLightSourcePositional { + constructor(Name, LightColour, AmbientIntensity, Intensity, Position, Radius, ConstantAttenuation, DistanceAttenuation, QuadricAttenuation, Orientation, ConcentrationExponent, SpreadAngle, BeamWidthAngle) { + super(Name, LightColour, AmbientIntensity, Intensity, Position, Radius, ConstantAttenuation, DistanceAttenuation, QuadricAttenuation); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Position = Position; + this.Radius = Radius; + this.ConstantAttenuation = ConstantAttenuation; + this.DistanceAttenuation = DistanceAttenuation; + this.QuadricAttenuation = QuadricAttenuation; + this.Orientation = Orientation; + this.ConcentrationExponent = ConcentrationExponent; + this.SpreadAngle = SpreadAngle; + this.BeamWidthAngle = BeamWidthAngle; + this.type = 3422422726; + } + } + IFC2X32.IfcLightSourceSpot = IfcLightSourceSpot; + class IfcLocalPlacement extends IfcObjectPlacement { + constructor(PlacementRelTo, RelativePlacement) { + super(); + this.PlacementRelTo = PlacementRelTo; + this.RelativePlacement = RelativePlacement; + this.type = 2624227202; + } + } + IFC2X32.IfcLocalPlacement = IfcLocalPlacement; + class IfcLoop extends IfcTopologicalRepresentationItem { + constructor() { + super(); + this.type = 1008929658; + } + } + IFC2X32.IfcLoop = IfcLoop; + class IfcMappedItem extends IfcRepresentationItem { + constructor(MappingSource, MappingTarget) { + super(); + this.MappingSource = MappingSource; + this.MappingTarget = MappingTarget; + this.type = 2347385850; + } + } + IFC2X32.IfcMappedItem = IfcMappedItem; + class IfcMaterialDefinitionRepresentation extends IfcProductRepresentation { + constructor(Name, Description, Representations, RepresentedMaterial) { + super(Name, Description, Representations); + this.Name = Name; + this.Description = Description; + this.Representations = Representations; + this.RepresentedMaterial = RepresentedMaterial; + this.type = 2022407955; + } + } + IFC2X32.IfcMaterialDefinitionRepresentation = IfcMaterialDefinitionRepresentation; + class IfcMechanicalConcreteMaterialProperties extends IfcMechanicalMaterialProperties { + constructor(Material3, DynamicViscosity, YoungModulus, ShearModulus, PoissonRatio, ThermalExpansionCoefficient, CompressiveStrength, MaxAggregateSize, AdmixturesDescription, Workability, ProtectivePoreRatio, WaterImpermeability) { + super(Material3, DynamicViscosity, YoungModulus, ShearModulus, PoissonRatio, ThermalExpansionCoefficient); + this.Material = Material3; + this.DynamicViscosity = DynamicViscosity; + this.YoungModulus = YoungModulus; + this.ShearModulus = ShearModulus; + this.PoissonRatio = PoissonRatio; + this.ThermalExpansionCoefficient = ThermalExpansionCoefficient; + this.CompressiveStrength = CompressiveStrength; + this.MaxAggregateSize = MaxAggregateSize; + this.AdmixturesDescription = AdmixturesDescription; + this.Workability = Workability; + this.ProtectivePoreRatio = ProtectivePoreRatio; + this.WaterImpermeability = WaterImpermeability; + this.type = 1430189142; + } + } + IFC2X32.IfcMechanicalConcreteMaterialProperties = IfcMechanicalConcreteMaterialProperties; + class IfcObjectDefinition extends IfcRoot { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 219451334; + } + } + IFC2X32.IfcObjectDefinition = IfcObjectDefinition; + class IfcOneDirectionRepeatFactor extends IfcGeometricRepresentationItem { + constructor(RepeatFactor) { + super(); + this.RepeatFactor = RepeatFactor; + this.type = 2833995503; + } + } + IFC2X32.IfcOneDirectionRepeatFactor = IfcOneDirectionRepeatFactor; + class IfcOpenShell extends IfcConnectedFaceSet { + constructor(CfsFaces) { + super(CfsFaces); + this.CfsFaces = CfsFaces; + this.type = 2665983363; + } + } + IFC2X32.IfcOpenShell = IfcOpenShell; + class IfcOrientedEdge extends IfcEdge { + constructor(EdgeElement, Orientation) { + super(new Handle(0), new Handle(0)); + this.EdgeElement = EdgeElement; + this.Orientation = Orientation; + this.type = 1029017970; + } + } + IFC2X32.IfcOrientedEdge = IfcOrientedEdge; + class IfcParameterizedProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, Position) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.type = 2529465313; + } + } + IFC2X32.IfcParameterizedProfileDef = IfcParameterizedProfileDef; + class IfcPath extends IfcTopologicalRepresentationItem { + constructor(EdgeList) { + super(); + this.EdgeList = EdgeList; + this.type = 2519244187; + } + } + IFC2X32.IfcPath = IfcPath; + class IfcPhysicalComplexQuantity extends IfcPhysicalQuantity { + constructor(Name, Description, HasQuantities, Discrimination, Quality, Usage) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.HasQuantities = HasQuantities; + this.Discrimination = Discrimination; + this.Quality = Quality; + this.Usage = Usage; + this.type = 3021840470; + } + } + IFC2X32.IfcPhysicalComplexQuantity = IfcPhysicalComplexQuantity; + class IfcPixelTexture extends IfcSurfaceTexture { + constructor(RepeatS, RepeatT, TextureType, TextureTransform, Width, Height, ColourComponents, Pixel) { + super(RepeatS, RepeatT, TextureType, TextureTransform); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.TextureType = TextureType; + this.TextureTransform = TextureTransform; + this.Width = Width; + this.Height = Height; + this.ColourComponents = ColourComponents; + this.Pixel = Pixel; + this.type = 597895409; + } + } + IFC2X32.IfcPixelTexture = IfcPixelTexture; + class IfcPlacement extends IfcGeometricRepresentationItem { + constructor(Location) { + super(); + this.Location = Location; + this.type = 2004835150; + } + } + IFC2X32.IfcPlacement = IfcPlacement; + class IfcPlanarExtent extends IfcGeometricRepresentationItem { + constructor(SizeInX, SizeInY) { + super(); + this.SizeInX = SizeInX; + this.SizeInY = SizeInY; + this.type = 1663979128; + } + } + IFC2X32.IfcPlanarExtent = IfcPlanarExtent; + class IfcPoint extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 2067069095; + } + } + IFC2X32.IfcPoint = IfcPoint; + class IfcPointOnCurve extends IfcPoint { + constructor(BasisCurve, PointParameter) { + super(); + this.BasisCurve = BasisCurve; + this.PointParameter = PointParameter; + this.type = 4022376103; + } + } + IFC2X32.IfcPointOnCurve = IfcPointOnCurve; + class IfcPointOnSurface extends IfcPoint { + constructor(BasisSurface, PointParameterU, PointParameterV) { + super(); + this.BasisSurface = BasisSurface; + this.PointParameterU = PointParameterU; + this.PointParameterV = PointParameterV; + this.type = 1423911732; + } + } + IFC2X32.IfcPointOnSurface = IfcPointOnSurface; + class IfcPolyLoop extends IfcLoop { + constructor(Polygon) { + super(); + this.Polygon = Polygon; + this.type = 2924175390; + } + } + IFC2X32.IfcPolyLoop = IfcPolyLoop; + class IfcPolygonalBoundedHalfSpace extends IfcHalfSpaceSolid { + constructor(BaseSurface, AgreementFlag, Position, PolygonalBoundary) { + super(BaseSurface, AgreementFlag); + this.BaseSurface = BaseSurface; + this.AgreementFlag = AgreementFlag; + this.Position = Position; + this.PolygonalBoundary = PolygonalBoundary; + this.type = 2775532180; + } + } + IFC2X32.IfcPolygonalBoundedHalfSpace = IfcPolygonalBoundedHalfSpace; + class IfcPreDefinedColour extends IfcPreDefinedItem { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 759155922; + } + } + IFC2X32.IfcPreDefinedColour = IfcPreDefinedColour; + class IfcPreDefinedCurveFont extends IfcPreDefinedItem { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 2559016684; + } + } + IFC2X32.IfcPreDefinedCurveFont = IfcPreDefinedCurveFont; + class IfcPreDefinedDimensionSymbol extends IfcPreDefinedSymbol { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 433424934; + } + } + IFC2X32.IfcPreDefinedDimensionSymbol = IfcPreDefinedDimensionSymbol; + class IfcPreDefinedPointMarkerSymbol extends IfcPreDefinedSymbol { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 179317114; + } + } + IFC2X32.IfcPreDefinedPointMarkerSymbol = IfcPreDefinedPointMarkerSymbol; + class IfcProductDefinitionShape extends IfcProductRepresentation { + constructor(Name, Description, Representations) { + super(Name, Description, Representations); + this.Name = Name; + this.Description = Description; + this.Representations = Representations; + this.type = 673634403; + } + } + IFC2X32.IfcProductDefinitionShape = IfcProductDefinitionShape; + class IfcPropertyBoundedValue extends IfcSimpleProperty { + constructor(Name, Description, UpperBoundValue, LowerBoundValue, Unit) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.UpperBoundValue = UpperBoundValue; + this.LowerBoundValue = LowerBoundValue; + this.Unit = Unit; + this.type = 871118103; + } + } + IFC2X32.IfcPropertyBoundedValue = IfcPropertyBoundedValue; + class IfcPropertyDefinition extends IfcRoot { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 1680319473; + } + } + IFC2X32.IfcPropertyDefinition = IfcPropertyDefinition; + class IfcPropertyEnumeratedValue extends IfcSimpleProperty { + constructor(Name, Description, EnumerationValues, EnumerationReference) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.EnumerationValues = EnumerationValues; + this.EnumerationReference = EnumerationReference; + this.type = 4166981789; + } + } + IFC2X32.IfcPropertyEnumeratedValue = IfcPropertyEnumeratedValue; + class IfcPropertyListValue extends IfcSimpleProperty { + constructor(Name, Description, ListValues, Unit) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.ListValues = ListValues; + this.Unit = Unit; + this.type = 2752243245; + } + } + IFC2X32.IfcPropertyListValue = IfcPropertyListValue; + class IfcPropertyReferenceValue extends IfcSimpleProperty { + constructor(Name, Description, UsageName, PropertyReference) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.UsageName = UsageName; + this.PropertyReference = PropertyReference; + this.type = 941946838; + } + } + IFC2X32.IfcPropertyReferenceValue = IfcPropertyReferenceValue; + class IfcPropertySetDefinition extends IfcPropertyDefinition { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 3357820518; + } + } + IFC2X32.IfcPropertySetDefinition = IfcPropertySetDefinition; + class IfcPropertySingleValue extends IfcSimpleProperty { + constructor(Name, Description, NominalValue, Unit) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.NominalValue = NominalValue; + this.Unit = Unit; + this.type = 3650150729; + } + } + IFC2X32.IfcPropertySingleValue = IfcPropertySingleValue; + class IfcPropertyTableValue extends IfcSimpleProperty { + constructor(Name, Description, DefiningValues, DefinedValues, Expression, DefiningUnit, DefinedUnit) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.DefiningValues = DefiningValues; + this.DefinedValues = DefinedValues; + this.Expression = Expression; + this.DefiningUnit = DefiningUnit; + this.DefinedUnit = DefinedUnit; + this.type = 110355661; + } + } + IFC2X32.IfcPropertyTableValue = IfcPropertyTableValue; + class IfcRectangleProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, XDim, YDim) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.XDim = XDim; + this.YDim = YDim; + this.type = 3615266464; + } + } + IFC2X32.IfcRectangleProfileDef = IfcRectangleProfileDef; + class IfcRegularTimeSeries extends IfcTimeSeries { + constructor(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit, TimeStep, Values) { + super(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit); + this.Name = Name; + this.Description = Description; + this.StartTime = StartTime; + this.EndTime = EndTime; + this.TimeSeriesDataType = TimeSeriesDataType; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.Unit = Unit; + this.TimeStep = TimeStep; + this.Values = Values; + this.type = 3413951693; + } + } + IFC2X32.IfcRegularTimeSeries = IfcRegularTimeSeries; + class IfcReinforcementDefinitionProperties extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, DefinitionType, ReinforcementSectionDefinitions) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.DefinitionType = DefinitionType; + this.ReinforcementSectionDefinitions = ReinforcementSectionDefinitions; + this.type = 3765753017; + } + } + IFC2X32.IfcReinforcementDefinitionProperties = IfcReinforcementDefinitionProperties; + class IfcRelationship extends IfcRoot { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 478536968; + } + } + IFC2X32.IfcRelationship = IfcRelationship; + class IfcRoundedRectangleProfileDef extends IfcRectangleProfileDef { + constructor(ProfileType, ProfileName, Position, XDim, YDim, RoundingRadius) { + super(ProfileType, ProfileName, Position, XDim, YDim); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.XDim = XDim; + this.YDim = YDim; + this.RoundingRadius = RoundingRadius; + this.type = 2778083089; + } + } + IFC2X32.IfcRoundedRectangleProfileDef = IfcRoundedRectangleProfileDef; + class IfcSectionedSpine extends IfcGeometricRepresentationItem { + constructor(SpineCurve, CrossSections, CrossSectionPositions) { + super(); + this.SpineCurve = SpineCurve; + this.CrossSections = CrossSections; + this.CrossSectionPositions = CrossSectionPositions; + this.type = 1509187699; + } + } + IFC2X32.IfcSectionedSpine = IfcSectionedSpine; + class IfcServiceLifeFactor extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, PredefinedType, UpperValue, MostUsedValue, LowerValue) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.PredefinedType = PredefinedType; + this.UpperValue = UpperValue; + this.MostUsedValue = MostUsedValue; + this.LowerValue = LowerValue; + this.type = 2411513650; + } + } + IFC2X32.IfcServiceLifeFactor = IfcServiceLifeFactor; + class IfcShellBasedSurfaceModel extends IfcGeometricRepresentationItem { + constructor(SbsmBoundary) { + super(); + this.SbsmBoundary = SbsmBoundary; + this.type = 4124623270; + } + } + IFC2X32.IfcShellBasedSurfaceModel = IfcShellBasedSurfaceModel; + class IfcSlippageConnectionCondition extends IfcStructuralConnectionCondition { + constructor(Name, SlippageX, SlippageY, SlippageZ) { + super(Name); + this.Name = Name; + this.SlippageX = SlippageX; + this.SlippageY = SlippageY; + this.SlippageZ = SlippageZ; + this.type = 2609359061; + } + } + IFC2X32.IfcSlippageConnectionCondition = IfcSlippageConnectionCondition; + class IfcSolidModel extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 723233188; + } + } + IFC2X32.IfcSolidModel = IfcSolidModel; + class IfcSoundProperties extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, IsAttenuating, SoundScale, SoundValues) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.IsAttenuating = IsAttenuating; + this.SoundScale = SoundScale; + this.SoundValues = SoundValues; + this.type = 2485662743; + } + } + IFC2X32.IfcSoundProperties = IfcSoundProperties; + class IfcSoundValue extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, SoundLevelTimeSeries, Frequency, SoundLevelSingleValue) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.SoundLevelTimeSeries = SoundLevelTimeSeries; + this.Frequency = Frequency; + this.SoundLevelSingleValue = SoundLevelSingleValue; + this.type = 1202362311; + } + } + IFC2X32.IfcSoundValue = IfcSoundValue; + class IfcSpaceThermalLoadProperties extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableValueRatio, ThermalLoadSource, PropertySource, SourceDescription, MaximumValue, MinimumValue, ThermalLoadTimeSeriesValues, UserDefinedThermalLoadSource, UserDefinedPropertySource, ThermalLoadType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableValueRatio = ApplicableValueRatio; + this.ThermalLoadSource = ThermalLoadSource; + this.PropertySource = PropertySource; + this.SourceDescription = SourceDescription; + this.MaximumValue = MaximumValue; + this.MinimumValue = MinimumValue; + this.ThermalLoadTimeSeriesValues = ThermalLoadTimeSeriesValues; + this.UserDefinedThermalLoadSource = UserDefinedThermalLoadSource; + this.UserDefinedPropertySource = UserDefinedPropertySource; + this.ThermalLoadType = ThermalLoadType; + this.type = 390701378; + } + } + IFC2X32.IfcSpaceThermalLoadProperties = IfcSpaceThermalLoadProperties; + class IfcStructuralLoadLinearForce extends IfcStructuralLoadStatic { + constructor(Name, LinearForceX, LinearForceY, LinearForceZ, LinearMomentX, LinearMomentY, LinearMomentZ) { + super(Name); + this.Name = Name; + this.LinearForceX = LinearForceX; + this.LinearForceY = LinearForceY; + this.LinearForceZ = LinearForceZ; + this.LinearMomentX = LinearMomentX; + this.LinearMomentY = LinearMomentY; + this.LinearMomentZ = LinearMomentZ; + this.type = 1595516126; + } + } + IFC2X32.IfcStructuralLoadLinearForce = IfcStructuralLoadLinearForce; + class IfcStructuralLoadPlanarForce extends IfcStructuralLoadStatic { + constructor(Name, PlanarForceX, PlanarForceY, PlanarForceZ) { + super(Name); + this.Name = Name; + this.PlanarForceX = PlanarForceX; + this.PlanarForceY = PlanarForceY; + this.PlanarForceZ = PlanarForceZ; + this.type = 2668620305; + } + } + IFC2X32.IfcStructuralLoadPlanarForce = IfcStructuralLoadPlanarForce; + class IfcStructuralLoadSingleDisplacement extends IfcStructuralLoadStatic { + constructor(Name, DisplacementX, DisplacementY, DisplacementZ, RotationalDisplacementRX, RotationalDisplacementRY, RotationalDisplacementRZ) { + super(Name); + this.Name = Name; + this.DisplacementX = DisplacementX; + this.DisplacementY = DisplacementY; + this.DisplacementZ = DisplacementZ; + this.RotationalDisplacementRX = RotationalDisplacementRX; + this.RotationalDisplacementRY = RotationalDisplacementRY; + this.RotationalDisplacementRZ = RotationalDisplacementRZ; + this.type = 2473145415; + } + } + IFC2X32.IfcStructuralLoadSingleDisplacement = IfcStructuralLoadSingleDisplacement; + class IfcStructuralLoadSingleDisplacementDistortion extends IfcStructuralLoadSingleDisplacement { + constructor(Name, DisplacementX, DisplacementY, DisplacementZ, RotationalDisplacementRX, RotationalDisplacementRY, RotationalDisplacementRZ, Distortion) { + super(Name, DisplacementX, DisplacementY, DisplacementZ, RotationalDisplacementRX, RotationalDisplacementRY, RotationalDisplacementRZ); + this.Name = Name; + this.DisplacementX = DisplacementX; + this.DisplacementY = DisplacementY; + this.DisplacementZ = DisplacementZ; + this.RotationalDisplacementRX = RotationalDisplacementRX; + this.RotationalDisplacementRY = RotationalDisplacementRY; + this.RotationalDisplacementRZ = RotationalDisplacementRZ; + this.Distortion = Distortion; + this.type = 1973038258; + } + } + IFC2X32.IfcStructuralLoadSingleDisplacementDistortion = IfcStructuralLoadSingleDisplacementDistortion; + class IfcStructuralLoadSingleForce extends IfcStructuralLoadStatic { + constructor(Name, ForceX, ForceY, ForceZ, MomentX, MomentY, MomentZ) { + super(Name); + this.Name = Name; + this.ForceX = ForceX; + this.ForceY = ForceY; + this.ForceZ = ForceZ; + this.MomentX = MomentX; + this.MomentY = MomentY; + this.MomentZ = MomentZ; + this.type = 1597423693; + } + } + IFC2X32.IfcStructuralLoadSingleForce = IfcStructuralLoadSingleForce; + class IfcStructuralLoadSingleForceWarping extends IfcStructuralLoadSingleForce { + constructor(Name, ForceX, ForceY, ForceZ, MomentX, MomentY, MomentZ, WarpingMoment) { + super(Name, ForceX, ForceY, ForceZ, MomentX, MomentY, MomentZ); + this.Name = Name; + this.ForceX = ForceX; + this.ForceY = ForceY; + this.ForceZ = ForceZ; + this.MomentX = MomentX; + this.MomentY = MomentY; + this.MomentZ = MomentZ; + this.WarpingMoment = WarpingMoment; + this.type = 1190533807; + } + } + IFC2X32.IfcStructuralLoadSingleForceWarping = IfcStructuralLoadSingleForceWarping; + class IfcStructuralProfileProperties extends IfcGeneralProfileProperties { + constructor(ProfileName, ProfileDefinition, PhysicalWeight, Perimeter, MinimumPlateThickness, MaximumPlateThickness, CrossSectionArea, TorsionalConstantX, MomentOfInertiaYZ, MomentOfInertiaY, MomentOfInertiaZ, WarpingConstant, ShearCentreZ, ShearCentreY, ShearDeformationAreaZ, ShearDeformationAreaY, MaximumSectionModulusY, MinimumSectionModulusY, MaximumSectionModulusZ, MinimumSectionModulusZ, TorsionalSectionModulus, CentreOfGravityInX, CentreOfGravityInY) { + super(ProfileName, ProfileDefinition, PhysicalWeight, Perimeter, MinimumPlateThickness, MaximumPlateThickness, CrossSectionArea); + this.ProfileName = ProfileName; + this.ProfileDefinition = ProfileDefinition; + this.PhysicalWeight = PhysicalWeight; + this.Perimeter = Perimeter; + this.MinimumPlateThickness = MinimumPlateThickness; + this.MaximumPlateThickness = MaximumPlateThickness; + this.CrossSectionArea = CrossSectionArea; + this.TorsionalConstantX = TorsionalConstantX; + this.MomentOfInertiaYZ = MomentOfInertiaYZ; + this.MomentOfInertiaY = MomentOfInertiaY; + this.MomentOfInertiaZ = MomentOfInertiaZ; + this.WarpingConstant = WarpingConstant; + this.ShearCentreZ = ShearCentreZ; + this.ShearCentreY = ShearCentreY; + this.ShearDeformationAreaZ = ShearDeformationAreaZ; + this.ShearDeformationAreaY = ShearDeformationAreaY; + this.MaximumSectionModulusY = MaximumSectionModulusY; + this.MinimumSectionModulusY = MinimumSectionModulusY; + this.MaximumSectionModulusZ = MaximumSectionModulusZ; + this.MinimumSectionModulusZ = MinimumSectionModulusZ; + this.TorsionalSectionModulus = TorsionalSectionModulus; + this.CentreOfGravityInX = CentreOfGravityInX; + this.CentreOfGravityInY = CentreOfGravityInY; + this.type = 3843319758; + } + } + IFC2X32.IfcStructuralProfileProperties = IfcStructuralProfileProperties; + class IfcStructuralSteelProfileProperties extends IfcStructuralProfileProperties { + constructor(ProfileName, ProfileDefinition, PhysicalWeight, Perimeter, MinimumPlateThickness, MaximumPlateThickness, CrossSectionArea, TorsionalConstantX, MomentOfInertiaYZ, MomentOfInertiaY, MomentOfInertiaZ, WarpingConstant, ShearCentreZ, ShearCentreY, ShearDeformationAreaZ, ShearDeformationAreaY, MaximumSectionModulusY, MinimumSectionModulusY, MaximumSectionModulusZ, MinimumSectionModulusZ, TorsionalSectionModulus, CentreOfGravityInX, CentreOfGravityInY, ShearAreaZ, ShearAreaY, PlasticShapeFactorY, PlasticShapeFactorZ) { + super(ProfileName, ProfileDefinition, PhysicalWeight, Perimeter, MinimumPlateThickness, MaximumPlateThickness, CrossSectionArea, TorsionalConstantX, MomentOfInertiaYZ, MomentOfInertiaY, MomentOfInertiaZ, WarpingConstant, ShearCentreZ, ShearCentreY, ShearDeformationAreaZ, ShearDeformationAreaY, MaximumSectionModulusY, MinimumSectionModulusY, MaximumSectionModulusZ, MinimumSectionModulusZ, TorsionalSectionModulus, CentreOfGravityInX, CentreOfGravityInY); + this.ProfileName = ProfileName; + this.ProfileDefinition = ProfileDefinition; + this.PhysicalWeight = PhysicalWeight; + this.Perimeter = Perimeter; + this.MinimumPlateThickness = MinimumPlateThickness; + this.MaximumPlateThickness = MaximumPlateThickness; + this.CrossSectionArea = CrossSectionArea; + this.TorsionalConstantX = TorsionalConstantX; + this.MomentOfInertiaYZ = MomentOfInertiaYZ; + this.MomentOfInertiaY = MomentOfInertiaY; + this.MomentOfInertiaZ = MomentOfInertiaZ; + this.WarpingConstant = WarpingConstant; + this.ShearCentreZ = ShearCentreZ; + this.ShearCentreY = ShearCentreY; + this.ShearDeformationAreaZ = ShearDeformationAreaZ; + this.ShearDeformationAreaY = ShearDeformationAreaY; + this.MaximumSectionModulusY = MaximumSectionModulusY; + this.MinimumSectionModulusY = MinimumSectionModulusY; + this.MaximumSectionModulusZ = MaximumSectionModulusZ; + this.MinimumSectionModulusZ = MinimumSectionModulusZ; + this.TorsionalSectionModulus = TorsionalSectionModulus; + this.CentreOfGravityInX = CentreOfGravityInX; + this.CentreOfGravityInY = CentreOfGravityInY; + this.ShearAreaZ = ShearAreaZ; + this.ShearAreaY = ShearAreaY; + this.PlasticShapeFactorY = PlasticShapeFactorY; + this.PlasticShapeFactorZ = PlasticShapeFactorZ; + this.type = 3653947884; + } + } + IFC2X32.IfcStructuralSteelProfileProperties = IfcStructuralSteelProfileProperties; + class IfcSubedge extends IfcEdge { + constructor(EdgeStart, EdgeEnd, ParentEdge) { + super(EdgeStart, EdgeEnd); + this.EdgeStart = EdgeStart; + this.EdgeEnd = EdgeEnd; + this.ParentEdge = ParentEdge; + this.type = 2233826070; + } + } + IFC2X32.IfcSubedge = IfcSubedge; + class IfcSurface extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 2513912981; + } + } + IFC2X32.IfcSurface = IfcSurface; + class IfcSurfaceStyleRendering extends IfcSurfaceStyleShading { + constructor(SurfaceColour, Transparency, DiffuseColour, TransmissionColour, DiffuseTransmissionColour, ReflectionColour, SpecularColour, SpecularHighlight, ReflectanceMethod) { + super(SurfaceColour); + this.SurfaceColour = SurfaceColour; + this.Transparency = Transparency; + this.DiffuseColour = DiffuseColour; + this.TransmissionColour = TransmissionColour; + this.DiffuseTransmissionColour = DiffuseTransmissionColour; + this.ReflectionColour = ReflectionColour; + this.SpecularColour = SpecularColour; + this.SpecularHighlight = SpecularHighlight; + this.ReflectanceMethod = ReflectanceMethod; + this.type = 1878645084; + } + } + IFC2X32.IfcSurfaceStyleRendering = IfcSurfaceStyleRendering; + class IfcSweptAreaSolid extends IfcSolidModel { + constructor(SweptArea, Position) { + super(); + this.SweptArea = SweptArea; + this.Position = Position; + this.type = 2247615214; + } + } + IFC2X32.IfcSweptAreaSolid = IfcSweptAreaSolid; + class IfcSweptDiskSolid extends IfcSolidModel { + constructor(Directrix, Radius, InnerRadius, StartParam, EndParam) { + super(); + this.Directrix = Directrix; + this.Radius = Radius; + this.InnerRadius = InnerRadius; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.type = 1260650574; + } + } + IFC2X32.IfcSweptDiskSolid = IfcSweptDiskSolid; + class IfcSweptSurface extends IfcSurface { + constructor(SweptCurve, Position) { + super(); + this.SweptCurve = SweptCurve; + this.Position = Position; + this.type = 230924584; + } + } + IFC2X32.IfcSweptSurface = IfcSweptSurface; + class IfcTShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, FlangeWidth, WebThickness, FlangeThickness, FilletRadius, FlangeEdgeRadius, WebEdgeRadius, WebSlope, FlangeSlope, CentreOfGravityInY) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.FlangeWidth = FlangeWidth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.FlangeEdgeRadius = FlangeEdgeRadius; + this.WebEdgeRadius = WebEdgeRadius; + this.WebSlope = WebSlope; + this.FlangeSlope = FlangeSlope; + this.CentreOfGravityInY = CentreOfGravityInY; + this.type = 3071757647; + } + } + IFC2X32.IfcTShapeProfileDef = IfcTShapeProfileDef; + class IfcTerminatorSymbol extends IfcAnnotationSymbolOccurrence { + constructor(Item, Styles, Name, AnnotatedCurve) { + super(Item, Styles, Name); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.AnnotatedCurve = AnnotatedCurve; + this.type = 3028897424; + } + } + IFC2X32.IfcTerminatorSymbol = IfcTerminatorSymbol; + class IfcTextLiteral extends IfcGeometricRepresentationItem { + constructor(Literal, Placement, Path) { + super(); + this.Literal = Literal; + this.Placement = Placement; + this.Path = Path; + this.type = 4282788508; + } + } + IFC2X32.IfcTextLiteral = IfcTextLiteral; + class IfcTextLiteralWithExtent extends IfcTextLiteral { + constructor(Literal, Placement, Path, Extent, BoxAlignment) { + super(Literal, Placement, Path); + this.Literal = Literal; + this.Placement = Placement; + this.Path = Path; + this.Extent = Extent; + this.BoxAlignment = BoxAlignment; + this.type = 3124975700; + } + } + IFC2X32.IfcTextLiteralWithExtent = IfcTextLiteralWithExtent; + class IfcTrapeziumProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, BottomXDim, TopXDim, YDim, TopXOffset) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.BottomXDim = BottomXDim; + this.TopXDim = TopXDim; + this.YDim = YDim; + this.TopXOffset = TopXOffset; + this.type = 2715220739; + } + } + IFC2X32.IfcTrapeziumProfileDef = IfcTrapeziumProfileDef; + class IfcTwoDirectionRepeatFactor extends IfcOneDirectionRepeatFactor { + constructor(RepeatFactor, SecondRepeatFactor) { + super(RepeatFactor); + this.RepeatFactor = RepeatFactor; + this.SecondRepeatFactor = SecondRepeatFactor; + this.type = 1345879162; + } + } + IFC2X32.IfcTwoDirectionRepeatFactor = IfcTwoDirectionRepeatFactor; + class IfcTypeObject extends IfcObjectDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.type = 1628702193; + } + } + IFC2X32.IfcTypeObject = IfcTypeObject; + class IfcTypeProduct extends IfcTypeObject { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.type = 2347495698; + } + } + IFC2X32.IfcTypeProduct = IfcTypeProduct; + class IfcUShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, FlangeWidth, WebThickness, FlangeThickness, FilletRadius, EdgeRadius, FlangeSlope, CentreOfGravityInX) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.FlangeWidth = FlangeWidth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.EdgeRadius = EdgeRadius; + this.FlangeSlope = FlangeSlope; + this.CentreOfGravityInX = CentreOfGravityInX; + this.type = 427810014; + } + } + IFC2X32.IfcUShapeProfileDef = IfcUShapeProfileDef; + class IfcVector extends IfcGeometricRepresentationItem { + constructor(Orientation, Magnitude) { + super(); + this.Orientation = Orientation; + this.Magnitude = Magnitude; + this.type = 1417489154; + } + } + IFC2X32.IfcVector = IfcVector; + class IfcVertexLoop extends IfcLoop { + constructor(LoopVertex) { + super(); + this.LoopVertex = LoopVertex; + this.type = 2759199220; + } + } + IFC2X32.IfcVertexLoop = IfcVertexLoop; + class IfcWindowLiningProperties extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, LiningDepth, LiningThickness, TransomThickness, MullionThickness, FirstTransomOffset, SecondTransomOffset, FirstMullionOffset, SecondMullionOffset, ShapeAspectStyle) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.LiningDepth = LiningDepth; + this.LiningThickness = LiningThickness; + this.TransomThickness = TransomThickness; + this.MullionThickness = MullionThickness; + this.FirstTransomOffset = FirstTransomOffset; + this.SecondTransomOffset = SecondTransomOffset; + this.FirstMullionOffset = FirstMullionOffset; + this.SecondMullionOffset = SecondMullionOffset; + this.ShapeAspectStyle = ShapeAspectStyle; + this.type = 336235671; + } + } + IFC2X32.IfcWindowLiningProperties = IfcWindowLiningProperties; + class IfcWindowPanelProperties extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, OperationType, PanelPosition, FrameDepth, FrameThickness, ShapeAspectStyle) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.OperationType = OperationType; + this.PanelPosition = PanelPosition; + this.FrameDepth = FrameDepth; + this.FrameThickness = FrameThickness; + this.ShapeAspectStyle = ShapeAspectStyle; + this.type = 512836454; + } + } + IFC2X32.IfcWindowPanelProperties = IfcWindowPanelProperties; + class IfcWindowStyle extends IfcTypeProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ConstructionType, OperationType, ParameterTakesPrecedence, Sizeable) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ConstructionType = ConstructionType; + this.OperationType = OperationType; + this.ParameterTakesPrecedence = ParameterTakesPrecedence; + this.Sizeable = Sizeable; + this.type = 1299126871; + } + } + IFC2X32.IfcWindowStyle = IfcWindowStyle; + class IfcZShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, FlangeWidth, WebThickness, FlangeThickness, FilletRadius, EdgeRadius) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.FlangeWidth = FlangeWidth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.EdgeRadius = EdgeRadius; + this.type = 2543172580; + } + } + IFC2X32.IfcZShapeProfileDef = IfcZShapeProfileDef; + class IfcAnnotationCurveOccurrence extends IfcAnnotationOccurrence { + constructor(Item, Styles, Name) { + super(Item, Styles, Name); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.type = 3288037868; + } + } + IFC2X32.IfcAnnotationCurveOccurrence = IfcAnnotationCurveOccurrence; + class IfcAnnotationFillArea extends IfcGeometricRepresentationItem { + constructor(OuterBoundary, InnerBoundaries) { + super(); + this.OuterBoundary = OuterBoundary; + this.InnerBoundaries = InnerBoundaries; + this.type = 669184980; + } + } + IFC2X32.IfcAnnotationFillArea = IfcAnnotationFillArea; + class IfcAnnotationFillAreaOccurrence extends IfcAnnotationOccurrence { + constructor(Item, Styles, Name, FillStyleTarget, GlobalOrLocal) { + super(Item, Styles, Name); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.FillStyleTarget = FillStyleTarget; + this.GlobalOrLocal = GlobalOrLocal; + this.type = 2265737646; + } + } + IFC2X32.IfcAnnotationFillAreaOccurrence = IfcAnnotationFillAreaOccurrence; + class IfcAnnotationSurface extends IfcGeometricRepresentationItem { + constructor(Item, TextureCoordinates) { + super(); + this.Item = Item; + this.TextureCoordinates = TextureCoordinates; + this.type = 1302238472; + } + } + IFC2X32.IfcAnnotationSurface = IfcAnnotationSurface; + class IfcAxis1Placement extends IfcPlacement { + constructor(Location, Axis2) { + super(Location); + this.Location = Location; + this.Axis = Axis2; + this.type = 4261334040; + } + } + IFC2X32.IfcAxis1Placement = IfcAxis1Placement; + class IfcAxis2Placement2D extends IfcPlacement { + constructor(Location, RefDirection) { + super(Location); + this.Location = Location; + this.RefDirection = RefDirection; + this.type = 3125803723; + } + } + IFC2X32.IfcAxis2Placement2D = IfcAxis2Placement2D; + class IfcAxis2Placement3D extends IfcPlacement { + constructor(Location, Axis2, RefDirection) { + super(Location); + this.Location = Location; + this.Axis = Axis2; + this.RefDirection = RefDirection; + this.type = 2740243338; + } + } + IFC2X32.IfcAxis2Placement3D = IfcAxis2Placement3D; + class IfcBooleanResult extends IfcGeometricRepresentationItem { + constructor(Operator, FirstOperand, SecondOperand) { + super(); + this.Operator = Operator; + this.FirstOperand = FirstOperand; + this.SecondOperand = SecondOperand; + this.type = 2736907675; + } + } + IFC2X32.IfcBooleanResult = IfcBooleanResult; + class IfcBoundedSurface extends IfcSurface { + constructor() { + super(); + this.type = 4182860854; + } + } + IFC2X32.IfcBoundedSurface = IfcBoundedSurface; + class IfcBoundingBox extends IfcGeometricRepresentationItem { + constructor(Corner, XDim, YDim, ZDim) { + super(); + this.Corner = Corner; + this.XDim = XDim; + this.YDim = YDim; + this.ZDim = ZDim; + this.type = 2581212453; + } + } + IFC2X32.IfcBoundingBox = IfcBoundingBox; + class IfcBoxedHalfSpace extends IfcHalfSpaceSolid { + constructor(BaseSurface, AgreementFlag, Enclosure) { + super(BaseSurface, AgreementFlag); + this.BaseSurface = BaseSurface; + this.AgreementFlag = AgreementFlag; + this.Enclosure = Enclosure; + this.type = 2713105998; + } + } + IFC2X32.IfcBoxedHalfSpace = IfcBoxedHalfSpace; + class IfcCShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, Width, WallThickness, Girth, InternalFilletRadius, CentreOfGravityInX) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.Width = Width; + this.WallThickness = WallThickness; + this.Girth = Girth; + this.InternalFilletRadius = InternalFilletRadius; + this.CentreOfGravityInX = CentreOfGravityInX; + this.type = 2898889636; + } + } + IFC2X32.IfcCShapeProfileDef = IfcCShapeProfileDef; + class IfcCartesianPoint extends IfcPoint { + constructor(Coordinates) { + super(); + this.Coordinates = Coordinates; + this.type = 1123145078; + } + } + IFC2X32.IfcCartesianPoint = IfcCartesianPoint; + class IfcCartesianTransformationOperator extends IfcGeometricRepresentationItem { + constructor(Axis1, Axis2, LocalOrigin, Scale) { + super(); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.type = 59481748; + } + } + IFC2X32.IfcCartesianTransformationOperator = IfcCartesianTransformationOperator; + class IfcCartesianTransformationOperator2D extends IfcCartesianTransformationOperator { + constructor(Axis1, Axis2, LocalOrigin, Scale) { + super(Axis1, Axis2, LocalOrigin, Scale); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.type = 3749851601; + } + } + IFC2X32.IfcCartesianTransformationOperator2D = IfcCartesianTransformationOperator2D; + class IfcCartesianTransformationOperator2DnonUniform extends IfcCartesianTransformationOperator2D { + constructor(Axis1, Axis2, LocalOrigin, Scale, Scale2) { + super(Axis1, Axis2, LocalOrigin, Scale); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.Scale2 = Scale2; + this.type = 3486308946; + } + } + IFC2X32.IfcCartesianTransformationOperator2DnonUniform = IfcCartesianTransformationOperator2DnonUniform; + class IfcCartesianTransformationOperator3D extends IfcCartesianTransformationOperator { + constructor(Axis1, Axis2, LocalOrigin, Scale, Axis3) { + super(Axis1, Axis2, LocalOrigin, Scale); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.Axis3 = Axis3; + this.type = 3331915920; + } + } + IFC2X32.IfcCartesianTransformationOperator3D = IfcCartesianTransformationOperator3D; + class IfcCartesianTransformationOperator3DnonUniform extends IfcCartesianTransformationOperator3D { + constructor(Axis1, Axis2, LocalOrigin, Scale, Axis3, Scale2, Scale3) { + super(Axis1, Axis2, LocalOrigin, Scale, Axis3); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.Axis3 = Axis3; + this.Scale2 = Scale2; + this.Scale3 = Scale3; + this.type = 1416205885; + } + } + IFC2X32.IfcCartesianTransformationOperator3DnonUniform = IfcCartesianTransformationOperator3DnonUniform; + class IfcCircleProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Radius) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Radius = Radius; + this.type = 1383045692; + } + } + IFC2X32.IfcCircleProfileDef = IfcCircleProfileDef; + class IfcClosedShell extends IfcConnectedFaceSet { + constructor(CfsFaces) { + super(CfsFaces); + this.CfsFaces = CfsFaces; + this.type = 2205249479; + } + } + IFC2X32.IfcClosedShell = IfcClosedShell; + class IfcCompositeCurveSegment extends IfcGeometricRepresentationItem { + constructor(Transition, SameSense, ParentCurve) { + super(); + this.Transition = Transition; + this.SameSense = SameSense; + this.ParentCurve = ParentCurve; + this.type = 2485617015; + } + } + IFC2X32.IfcCompositeCurveSegment = IfcCompositeCurveSegment; + class IfcCraneRailAShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, OverallHeight, BaseWidth2, Radius, HeadWidth, HeadDepth2, HeadDepth3, WebThickness, BaseWidth4, BaseDepth1, BaseDepth2, BaseDepth3, CentreOfGravityInY) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.OverallHeight = OverallHeight; + this.BaseWidth2 = BaseWidth2; + this.Radius = Radius; + this.HeadWidth = HeadWidth; + this.HeadDepth2 = HeadDepth2; + this.HeadDepth3 = HeadDepth3; + this.WebThickness = WebThickness; + this.BaseWidth4 = BaseWidth4; + this.BaseDepth1 = BaseDepth1; + this.BaseDepth2 = BaseDepth2; + this.BaseDepth3 = BaseDepth3; + this.CentreOfGravityInY = CentreOfGravityInY; + this.type = 4133800736; + } + } + IFC2X32.IfcCraneRailAShapeProfileDef = IfcCraneRailAShapeProfileDef; + class IfcCraneRailFShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, OverallHeight, HeadWidth, Radius, HeadDepth2, HeadDepth3, WebThickness, BaseDepth1, BaseDepth2, CentreOfGravityInY) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.OverallHeight = OverallHeight; + this.HeadWidth = HeadWidth; + this.Radius = Radius; + this.HeadDepth2 = HeadDepth2; + this.HeadDepth3 = HeadDepth3; + this.WebThickness = WebThickness; + this.BaseDepth1 = BaseDepth1; + this.BaseDepth2 = BaseDepth2; + this.CentreOfGravityInY = CentreOfGravityInY; + this.type = 194851669; + } + } + IFC2X32.IfcCraneRailFShapeProfileDef = IfcCraneRailFShapeProfileDef; + class IfcCsgPrimitive3D extends IfcGeometricRepresentationItem { + constructor(Position) { + super(); + this.Position = Position; + this.type = 2506170314; + } + } + IFC2X32.IfcCsgPrimitive3D = IfcCsgPrimitive3D; + class IfcCsgSolid extends IfcSolidModel { + constructor(TreeRootExpression) { + super(); + this.TreeRootExpression = TreeRootExpression; + this.type = 2147822146; + } + } + IFC2X32.IfcCsgSolid = IfcCsgSolid; + class IfcCurve extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 2601014836; + } + } + IFC2X32.IfcCurve = IfcCurve; + class IfcCurveBoundedPlane extends IfcBoundedSurface { + constructor(BasisSurface, OuterBoundary, InnerBoundaries) { + super(); + this.BasisSurface = BasisSurface; + this.OuterBoundary = OuterBoundary; + this.InnerBoundaries = InnerBoundaries; + this.type = 2827736869; + } + } + IFC2X32.IfcCurveBoundedPlane = IfcCurveBoundedPlane; + class IfcDefinedSymbol extends IfcGeometricRepresentationItem { + constructor(Definition, Target) { + super(); + this.Definition = Definition; + this.Target = Target; + this.type = 693772133; + } + } + IFC2X32.IfcDefinedSymbol = IfcDefinedSymbol; + class IfcDimensionCurve extends IfcAnnotationCurveOccurrence { + constructor(Item, Styles, Name) { + super(Item, Styles, Name); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.type = 606661476; + } + } + IFC2X32.IfcDimensionCurve = IfcDimensionCurve; + class IfcDimensionCurveTerminator extends IfcTerminatorSymbol { + constructor(Item, Styles, Name, AnnotatedCurve, Role) { + super(Item, Styles, Name, AnnotatedCurve); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.AnnotatedCurve = AnnotatedCurve; + this.Role = Role; + this.type = 4054601972; + } + } + IFC2X32.IfcDimensionCurveTerminator = IfcDimensionCurveTerminator; + class IfcDirection extends IfcGeometricRepresentationItem { + constructor(DirectionRatios) { + super(); + this.DirectionRatios = DirectionRatios; + this.type = 32440307; + } + } + IFC2X32.IfcDirection = IfcDirection; + class IfcDoorLiningProperties extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, LiningDepth, LiningThickness, ThresholdDepth, ThresholdThickness, TransomThickness, TransomOffset, LiningOffset, ThresholdOffset, CasingThickness, CasingDepth, ShapeAspectStyle) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.LiningDepth = LiningDepth; + this.LiningThickness = LiningThickness; + this.ThresholdDepth = ThresholdDepth; + this.ThresholdThickness = ThresholdThickness; + this.TransomThickness = TransomThickness; + this.TransomOffset = TransomOffset; + this.LiningOffset = LiningOffset; + this.ThresholdOffset = ThresholdOffset; + this.CasingThickness = CasingThickness; + this.CasingDepth = CasingDepth; + this.ShapeAspectStyle = ShapeAspectStyle; + this.type = 2963535650; + } + } + IFC2X32.IfcDoorLiningProperties = IfcDoorLiningProperties; + class IfcDoorPanelProperties extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, PanelDepth, PanelOperation, PanelWidth, PanelPosition, ShapeAspectStyle) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.PanelDepth = PanelDepth; + this.PanelOperation = PanelOperation; + this.PanelWidth = PanelWidth; + this.PanelPosition = PanelPosition; + this.ShapeAspectStyle = ShapeAspectStyle; + this.type = 1714330368; + } + } + IFC2X32.IfcDoorPanelProperties = IfcDoorPanelProperties; + class IfcDoorStyle extends IfcTypeProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, OperationType, ConstructionType, ParameterTakesPrecedence, Sizeable) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.OperationType = OperationType; + this.ConstructionType = ConstructionType; + this.ParameterTakesPrecedence = ParameterTakesPrecedence; + this.Sizeable = Sizeable; + this.type = 526551008; + } + } + IFC2X32.IfcDoorStyle = IfcDoorStyle; + class IfcDraughtingCallout extends IfcGeometricRepresentationItem { + constructor(Contents) { + super(); + this.Contents = Contents; + this.type = 3073041342; + } + } + IFC2X32.IfcDraughtingCallout = IfcDraughtingCallout; + class IfcDraughtingPreDefinedColour extends IfcPreDefinedColour { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 445594917; + } + } + IFC2X32.IfcDraughtingPreDefinedColour = IfcDraughtingPreDefinedColour; + class IfcDraughtingPreDefinedCurveFont extends IfcPreDefinedCurveFont { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 4006246654; + } + } + IFC2X32.IfcDraughtingPreDefinedCurveFont = IfcDraughtingPreDefinedCurveFont; + class IfcEdgeLoop extends IfcLoop { + constructor(EdgeList) { + super(); + this.EdgeList = EdgeList; + this.type = 1472233963; + } + } + IFC2X32.IfcEdgeLoop = IfcEdgeLoop; + class IfcElementQuantity extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, MethodOfMeasurement, Quantities) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.MethodOfMeasurement = MethodOfMeasurement; + this.Quantities = Quantities; + this.type = 1883228015; + } + } + IFC2X32.IfcElementQuantity = IfcElementQuantity; + class IfcElementType extends IfcTypeProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 339256511; + } + } + IFC2X32.IfcElementType = IfcElementType; + class IfcElementarySurface extends IfcSurface { + constructor(Position) { + super(); + this.Position = Position; + this.type = 2777663545; + } + } + IFC2X32.IfcElementarySurface = IfcElementarySurface; + class IfcEllipseProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, SemiAxis1, SemiAxis2) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.SemiAxis1 = SemiAxis1; + this.SemiAxis2 = SemiAxis2; + this.type = 2835456948; + } + } + IFC2X32.IfcEllipseProfileDef = IfcEllipseProfileDef; + class IfcEnergyProperties extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, EnergySequence, UserDefinedEnergySequence) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.EnergySequence = EnergySequence; + this.UserDefinedEnergySequence = UserDefinedEnergySequence; + this.type = 80994333; + } + } + IFC2X32.IfcEnergyProperties = IfcEnergyProperties; + class IfcExtrudedAreaSolid extends IfcSweptAreaSolid { + constructor(SweptArea, Position, ExtrudedDirection, Depth) { + super(SweptArea, Position); + this.SweptArea = SweptArea; + this.Position = Position; + this.ExtrudedDirection = ExtrudedDirection; + this.Depth = Depth; + this.type = 477187591; + } + } + IFC2X32.IfcExtrudedAreaSolid = IfcExtrudedAreaSolid; + class IfcFaceBasedSurfaceModel extends IfcGeometricRepresentationItem { + constructor(FbsmFaces) { + super(); + this.FbsmFaces = FbsmFaces; + this.type = 2047409740; + } + } + IFC2X32.IfcFaceBasedSurfaceModel = IfcFaceBasedSurfaceModel; + class IfcFillAreaStyleHatching extends IfcGeometricRepresentationItem { + constructor(HatchLineAppearance, StartOfNextHatchLine, PointOfReferenceHatchLine, PatternStart, HatchLineAngle) { + super(); + this.HatchLineAppearance = HatchLineAppearance; + this.StartOfNextHatchLine = StartOfNextHatchLine; + this.PointOfReferenceHatchLine = PointOfReferenceHatchLine; + this.PatternStart = PatternStart; + this.HatchLineAngle = HatchLineAngle; + this.type = 374418227; + } + } + IFC2X32.IfcFillAreaStyleHatching = IfcFillAreaStyleHatching; + class IfcFillAreaStyleTileSymbolWithStyle extends IfcGeometricRepresentationItem { + constructor(Symbol2) { + super(); + this.Symbol = Symbol2; + this.type = 4203026998; + } + } + IFC2X32.IfcFillAreaStyleTileSymbolWithStyle = IfcFillAreaStyleTileSymbolWithStyle; + class IfcFillAreaStyleTiles extends IfcGeometricRepresentationItem { + constructor(TilingPattern, Tiles, TilingScale) { + super(); + this.TilingPattern = TilingPattern; + this.Tiles = Tiles; + this.TilingScale = TilingScale; + this.type = 315944413; + } + } + IFC2X32.IfcFillAreaStyleTiles = IfcFillAreaStyleTiles; + class IfcFluidFlowProperties extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, PropertySource, FlowConditionTimeSeries, VelocityTimeSeries, FlowrateTimeSeries, Fluid, PressureTimeSeries, UserDefinedPropertySource, TemperatureSingleValue, WetBulbTemperatureSingleValue, WetBulbTemperatureTimeSeries, TemperatureTimeSeries, FlowrateSingleValue, FlowConditionSingleValue, VelocitySingleValue, PressureSingleValue) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.PropertySource = PropertySource; + this.FlowConditionTimeSeries = FlowConditionTimeSeries; + this.VelocityTimeSeries = VelocityTimeSeries; + this.FlowrateTimeSeries = FlowrateTimeSeries; + this.Fluid = Fluid; + this.PressureTimeSeries = PressureTimeSeries; + this.UserDefinedPropertySource = UserDefinedPropertySource; + this.TemperatureSingleValue = TemperatureSingleValue; + this.WetBulbTemperatureSingleValue = WetBulbTemperatureSingleValue; + this.WetBulbTemperatureTimeSeries = WetBulbTemperatureTimeSeries; + this.TemperatureTimeSeries = TemperatureTimeSeries; + this.FlowrateSingleValue = FlowrateSingleValue; + this.FlowConditionSingleValue = FlowConditionSingleValue; + this.VelocitySingleValue = VelocitySingleValue; + this.PressureSingleValue = PressureSingleValue; + this.type = 3455213021; + } + } + IFC2X32.IfcFluidFlowProperties = IfcFluidFlowProperties; + class IfcFurnishingElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 4238390223; + } + } + IFC2X32.IfcFurnishingElementType = IfcFurnishingElementType; + class IfcFurnitureType extends IfcFurnishingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, AssemblyPlace) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.AssemblyPlace = AssemblyPlace; + this.type = 1268542332; + } + } + IFC2X32.IfcFurnitureType = IfcFurnitureType; + class IfcGeometricCurveSet extends IfcGeometricSet { + constructor(Elements) { + super(Elements); + this.Elements = Elements; + this.type = 987898635; + } + } + IFC2X32.IfcGeometricCurveSet = IfcGeometricCurveSet; + class IfcIShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, OverallWidth, OverallDepth, WebThickness, FlangeThickness, FilletRadius) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.OverallWidth = OverallWidth; + this.OverallDepth = OverallDepth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.type = 1484403080; + } + } + IFC2X32.IfcIShapeProfileDef = IfcIShapeProfileDef; + class IfcLShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, Width, Thickness, FilletRadius, EdgeRadius, LegSlope, CentreOfGravityInX, CentreOfGravityInY) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.Width = Width; + this.Thickness = Thickness; + this.FilletRadius = FilletRadius; + this.EdgeRadius = EdgeRadius; + this.LegSlope = LegSlope; + this.CentreOfGravityInX = CentreOfGravityInX; + this.CentreOfGravityInY = CentreOfGravityInY; + this.type = 572779678; + } + } + IFC2X32.IfcLShapeProfileDef = IfcLShapeProfileDef; + class IfcLine extends IfcCurve { + constructor(Pnt, Dir) { + super(); + this.Pnt = Pnt; + this.Dir = Dir; + this.type = 1281925730; + } + } + IFC2X32.IfcLine = IfcLine; + class IfcManifoldSolidBrep extends IfcSolidModel { + constructor(Outer) { + super(); + this.Outer = Outer; + this.type = 1425443689; + } + } + IFC2X32.IfcManifoldSolidBrep = IfcManifoldSolidBrep; + class IfcObject extends IfcObjectDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 3888040117; + } + } + IFC2X32.IfcObject = IfcObject; + class IfcOffsetCurve2D extends IfcCurve { + constructor(BasisCurve, Distance, SelfIntersect) { + super(); + this.BasisCurve = BasisCurve; + this.Distance = Distance; + this.SelfIntersect = SelfIntersect; + this.type = 3388369263; + } + } + IFC2X32.IfcOffsetCurve2D = IfcOffsetCurve2D; + class IfcOffsetCurve3D extends IfcCurve { + constructor(BasisCurve, Distance, SelfIntersect, RefDirection) { + super(); + this.BasisCurve = BasisCurve; + this.Distance = Distance; + this.SelfIntersect = SelfIntersect; + this.RefDirection = RefDirection; + this.type = 3505215534; + } + } + IFC2X32.IfcOffsetCurve3D = IfcOffsetCurve3D; + class IfcPermeableCoveringProperties extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, OperationType, PanelPosition, FrameDepth, FrameThickness, ShapeAspectStyle) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.OperationType = OperationType; + this.PanelPosition = PanelPosition; + this.FrameDepth = FrameDepth; + this.FrameThickness = FrameThickness; + this.ShapeAspectStyle = ShapeAspectStyle; + this.type = 3566463478; + } + } + IFC2X32.IfcPermeableCoveringProperties = IfcPermeableCoveringProperties; + class IfcPlanarBox extends IfcPlanarExtent { + constructor(SizeInX, SizeInY, Placement) { + super(SizeInX, SizeInY); + this.SizeInX = SizeInX; + this.SizeInY = SizeInY; + this.Placement = Placement; + this.type = 603570806; + } + } + IFC2X32.IfcPlanarBox = IfcPlanarBox; + class IfcPlane extends IfcElementarySurface { + constructor(Position) { + super(Position); + this.Position = Position; + this.type = 220341763; + } + } + IFC2X32.IfcPlane = IfcPlane; + class IfcProcess extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 2945172077; + } + } + IFC2X32.IfcProcess = IfcProcess; + class IfcProduct extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 4208778838; + } + } + IFC2X32.IfcProduct = IfcProduct; + class IfcProject extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, Phase, RepresentationContexts, UnitsInContext) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.Phase = Phase; + this.RepresentationContexts = RepresentationContexts; + this.UnitsInContext = UnitsInContext; + this.type = 103090709; + } + } + IFC2X32.IfcProject = IfcProject; + class IfcProjectionCurve extends IfcAnnotationCurveOccurrence { + constructor(Item, Styles, Name) { + super(Item, Styles, Name); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.type = 4194566429; + } + } + IFC2X32.IfcProjectionCurve = IfcProjectionCurve; + class IfcPropertySet extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, HasProperties) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.HasProperties = HasProperties; + this.type = 1451395588; + } + } + IFC2X32.IfcPropertySet = IfcPropertySet; + class IfcProxy extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, ProxyType, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.ProxyType = ProxyType; + this.Tag = Tag; + this.type = 3219374653; + } + } + IFC2X32.IfcProxy = IfcProxy; + class IfcRectangleHollowProfileDef extends IfcRectangleProfileDef { + constructor(ProfileType, ProfileName, Position, XDim, YDim, WallThickness, InnerFilletRadius, OuterFilletRadius) { + super(ProfileType, ProfileName, Position, XDim, YDim); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.XDim = XDim; + this.YDim = YDim; + this.WallThickness = WallThickness; + this.InnerFilletRadius = InnerFilletRadius; + this.OuterFilletRadius = OuterFilletRadius; + this.type = 2770003689; + } + } + IFC2X32.IfcRectangleHollowProfileDef = IfcRectangleHollowProfileDef; + class IfcRectangularPyramid extends IfcCsgPrimitive3D { + constructor(Position, XLength, YLength, Height) { + super(Position); + this.Position = Position; + this.XLength = XLength; + this.YLength = YLength; + this.Height = Height; + this.type = 2798486643; + } + } + IFC2X32.IfcRectangularPyramid = IfcRectangularPyramid; + class IfcRectangularTrimmedSurface extends IfcBoundedSurface { + constructor(BasisSurface, U1, V1, U2, V2, Usense, Vsense) { + super(); + this.BasisSurface = BasisSurface; + this.U1 = U1; + this.V1 = V1; + this.U2 = U2; + this.V2 = V2; + this.Usense = Usense; + this.Vsense = Vsense; + this.type = 3454111270; + } + } + IFC2X32.IfcRectangularTrimmedSurface = IfcRectangularTrimmedSurface; + class IfcRelAssigns extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.type = 3939117080; + } + } + IFC2X32.IfcRelAssigns = IfcRelAssigns; + class IfcRelAssignsToActor extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingActor, ActingRole) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingActor = RelatingActor; + this.ActingRole = ActingRole; + this.type = 1683148259; + } + } + IFC2X32.IfcRelAssignsToActor = IfcRelAssignsToActor; + class IfcRelAssignsToControl extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingControl) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingControl = RelatingControl; + this.type = 2495723537; + } + } + IFC2X32.IfcRelAssignsToControl = IfcRelAssignsToControl; + class IfcRelAssignsToGroup extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingGroup) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingGroup = RelatingGroup; + this.type = 1307041759; + } + } + IFC2X32.IfcRelAssignsToGroup = IfcRelAssignsToGroup; + class IfcRelAssignsToProcess extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingProcess, QuantityInProcess) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingProcess = RelatingProcess; + this.QuantityInProcess = QuantityInProcess; + this.type = 4278684876; + } + } + IFC2X32.IfcRelAssignsToProcess = IfcRelAssignsToProcess; + class IfcRelAssignsToProduct extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingProduct) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingProduct = RelatingProduct; + this.type = 2857406711; + } + } + IFC2X32.IfcRelAssignsToProduct = IfcRelAssignsToProduct; + class IfcRelAssignsToProjectOrder extends IfcRelAssignsToControl { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingControl) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingControl); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingControl = RelatingControl; + this.type = 3372526763; + } + } + IFC2X32.IfcRelAssignsToProjectOrder = IfcRelAssignsToProjectOrder; + class IfcRelAssignsToResource extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingResource) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingResource = RelatingResource; + this.type = 205026976; + } + } + IFC2X32.IfcRelAssignsToResource = IfcRelAssignsToResource; + class IfcRelAssociates extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.type = 1865459582; + } + } + IFC2X32.IfcRelAssociates = IfcRelAssociates; + class IfcRelAssociatesAppliedValue extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingAppliedValue) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingAppliedValue = RelatingAppliedValue; + this.type = 1327628568; + } + } + IFC2X32.IfcRelAssociatesAppliedValue = IfcRelAssociatesAppliedValue; + class IfcRelAssociatesApproval extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingApproval) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingApproval = RelatingApproval; + this.type = 4095574036; + } + } + IFC2X32.IfcRelAssociatesApproval = IfcRelAssociatesApproval; + class IfcRelAssociatesClassification extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingClassification) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingClassification = RelatingClassification; + this.type = 919958153; + } + } + IFC2X32.IfcRelAssociatesClassification = IfcRelAssociatesClassification; + class IfcRelAssociatesConstraint extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, Intent, RelatingConstraint) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.Intent = Intent; + this.RelatingConstraint = RelatingConstraint; + this.type = 2728634034; + } + } + IFC2X32.IfcRelAssociatesConstraint = IfcRelAssociatesConstraint; + class IfcRelAssociatesDocument extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingDocument) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingDocument = RelatingDocument; + this.type = 982818633; + } + } + IFC2X32.IfcRelAssociatesDocument = IfcRelAssociatesDocument; + class IfcRelAssociatesLibrary extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingLibrary) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingLibrary = RelatingLibrary; + this.type = 3840914261; + } + } + IFC2X32.IfcRelAssociatesLibrary = IfcRelAssociatesLibrary; + class IfcRelAssociatesMaterial extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingMaterial) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingMaterial = RelatingMaterial; + this.type = 2655215786; + } + } + IFC2X32.IfcRelAssociatesMaterial = IfcRelAssociatesMaterial; + class IfcRelAssociatesProfileProperties extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingProfileProperties, ProfileSectionLocation, ProfileOrientation) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingProfileProperties = RelatingProfileProperties; + this.ProfileSectionLocation = ProfileSectionLocation; + this.ProfileOrientation = ProfileOrientation; + this.type = 2851387026; + } + } + IFC2X32.IfcRelAssociatesProfileProperties = IfcRelAssociatesProfileProperties; + class IfcRelConnects extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 826625072; + } + } + IFC2X32.IfcRelConnects = IfcRelConnects; + class IfcRelConnectsElements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ConnectionGeometry = ConnectionGeometry; + this.RelatingElement = RelatingElement; + this.RelatedElement = RelatedElement; + this.type = 1204542856; + } + } + IFC2X32.IfcRelConnectsElements = IfcRelConnectsElements; + class IfcRelConnectsPathElements extends IfcRelConnectsElements { + constructor(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement, RelatingPriorities, RelatedPriorities, RelatedConnectionType, RelatingConnectionType) { + super(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ConnectionGeometry = ConnectionGeometry; + this.RelatingElement = RelatingElement; + this.RelatedElement = RelatedElement; + this.RelatingPriorities = RelatingPriorities; + this.RelatedPriorities = RelatedPriorities; + this.RelatedConnectionType = RelatedConnectionType; + this.RelatingConnectionType = RelatingConnectionType; + this.type = 3945020480; + } + } + IFC2X32.IfcRelConnectsPathElements = IfcRelConnectsPathElements; + class IfcRelConnectsPortToElement extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingPort, RelatedElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingPort = RelatingPort; + this.RelatedElement = RelatedElement; + this.type = 4201705270; + } + } + IFC2X32.IfcRelConnectsPortToElement = IfcRelConnectsPortToElement; + class IfcRelConnectsPorts extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingPort, RelatedPort, RealizingElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingPort = RelatingPort; + this.RelatedPort = RelatedPort; + this.RealizingElement = RealizingElement; + this.type = 3190031847; + } + } + IFC2X32.IfcRelConnectsPorts = IfcRelConnectsPorts; + class IfcRelConnectsStructuralActivity extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingElement, RelatedStructuralActivity) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingElement = RelatingElement; + this.RelatedStructuralActivity = RelatedStructuralActivity; + this.type = 2127690289; + } + } + IFC2X32.IfcRelConnectsStructuralActivity = IfcRelConnectsStructuralActivity; + class IfcRelConnectsStructuralElement extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingElement, RelatedStructuralMember) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingElement = RelatingElement; + this.RelatedStructuralMember = RelatedStructuralMember; + this.type = 3912681535; + } + } + IFC2X32.IfcRelConnectsStructuralElement = IfcRelConnectsStructuralElement; + class IfcRelConnectsStructuralMember extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingStructuralMember, RelatedStructuralConnection, AppliedCondition, AdditionalConditions, SupportedLength, ConditionCoordinateSystem) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingStructuralMember = RelatingStructuralMember; + this.RelatedStructuralConnection = RelatedStructuralConnection; + this.AppliedCondition = AppliedCondition; + this.AdditionalConditions = AdditionalConditions; + this.SupportedLength = SupportedLength; + this.ConditionCoordinateSystem = ConditionCoordinateSystem; + this.type = 1638771189; + } + } + IFC2X32.IfcRelConnectsStructuralMember = IfcRelConnectsStructuralMember; + class IfcRelConnectsWithEccentricity extends IfcRelConnectsStructuralMember { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingStructuralMember, RelatedStructuralConnection, AppliedCondition, AdditionalConditions, SupportedLength, ConditionCoordinateSystem, ConnectionConstraint) { + super(GlobalId, OwnerHistory, Name, Description, RelatingStructuralMember, RelatedStructuralConnection, AppliedCondition, AdditionalConditions, SupportedLength, ConditionCoordinateSystem); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingStructuralMember = RelatingStructuralMember; + this.RelatedStructuralConnection = RelatedStructuralConnection; + this.AppliedCondition = AppliedCondition; + this.AdditionalConditions = AdditionalConditions; + this.SupportedLength = SupportedLength; + this.ConditionCoordinateSystem = ConditionCoordinateSystem; + this.ConnectionConstraint = ConnectionConstraint; + this.type = 504942748; + } + } + IFC2X32.IfcRelConnectsWithEccentricity = IfcRelConnectsWithEccentricity; + class IfcRelConnectsWithRealizingElements extends IfcRelConnectsElements { + constructor(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement, RealizingElements, ConnectionType) { + super(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ConnectionGeometry = ConnectionGeometry; + this.RelatingElement = RelatingElement; + this.RelatedElement = RelatedElement; + this.RealizingElements = RealizingElements; + this.ConnectionType = ConnectionType; + this.type = 3678494232; + } + } + IFC2X32.IfcRelConnectsWithRealizingElements = IfcRelConnectsWithRealizingElements; + class IfcRelContainedInSpatialStructure extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedElements, RelatingStructure) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedElements = RelatedElements; + this.RelatingStructure = RelatingStructure; + this.type = 3242617779; + } + } + IFC2X32.IfcRelContainedInSpatialStructure = IfcRelContainedInSpatialStructure; + class IfcRelCoversBldgElements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingBuildingElement, RelatedCoverings) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingBuildingElement = RelatingBuildingElement; + this.RelatedCoverings = RelatedCoverings; + this.type = 886880790; + } + } + IFC2X32.IfcRelCoversBldgElements = IfcRelCoversBldgElements; + class IfcRelCoversSpaces extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedSpace, RelatedCoverings) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedSpace = RelatedSpace; + this.RelatedCoverings = RelatedCoverings; + this.type = 2802773753; + } + } + IFC2X32.IfcRelCoversSpaces = IfcRelCoversSpaces; + class IfcRelDecomposes extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingObject, RelatedObjects) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingObject = RelatingObject; + this.RelatedObjects = RelatedObjects; + this.type = 2551354335; + } + } + IFC2X32.IfcRelDecomposes = IfcRelDecomposes; + class IfcRelDefines extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.type = 693640335; + } + } + IFC2X32.IfcRelDefines = IfcRelDefines; + class IfcRelDefinesByProperties extends IfcRelDefines { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingPropertyDefinition) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingPropertyDefinition = RelatingPropertyDefinition; + this.type = 4186316022; + } + } + IFC2X32.IfcRelDefinesByProperties = IfcRelDefinesByProperties; + class IfcRelDefinesByType extends IfcRelDefines { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingType) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingType = RelatingType; + this.type = 781010003; + } + } + IFC2X32.IfcRelDefinesByType = IfcRelDefinesByType; + class IfcRelFillsElement extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingOpeningElement, RelatedBuildingElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingOpeningElement = RelatingOpeningElement; + this.RelatedBuildingElement = RelatedBuildingElement; + this.type = 3940055652; + } + } + IFC2X32.IfcRelFillsElement = IfcRelFillsElement; + class IfcRelFlowControlElements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedControlElements, RelatingFlowElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedControlElements = RelatedControlElements; + this.RelatingFlowElement = RelatingFlowElement; + this.type = 279856033; + } + } + IFC2X32.IfcRelFlowControlElements = IfcRelFlowControlElements; + class IfcRelInteractionRequirements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, DailyInteraction, ImportanceRating, LocationOfInteraction, RelatedSpaceProgram, RelatingSpaceProgram) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.DailyInteraction = DailyInteraction; + this.ImportanceRating = ImportanceRating; + this.LocationOfInteraction = LocationOfInteraction; + this.RelatedSpaceProgram = RelatedSpaceProgram; + this.RelatingSpaceProgram = RelatingSpaceProgram; + this.type = 4189434867; + } + } + IFC2X32.IfcRelInteractionRequirements = IfcRelInteractionRequirements; + class IfcRelNests extends IfcRelDecomposes { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingObject, RelatedObjects) { + super(GlobalId, OwnerHistory, Name, Description, RelatingObject, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingObject = RelatingObject; + this.RelatedObjects = RelatedObjects; + this.type = 3268803585; + } + } + IFC2X32.IfcRelNests = IfcRelNests; + class IfcRelOccupiesSpaces extends IfcRelAssignsToActor { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingActor, ActingRole) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingActor, ActingRole); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingActor = RelatingActor; + this.ActingRole = ActingRole; + this.type = 2051452291; + } + } + IFC2X32.IfcRelOccupiesSpaces = IfcRelOccupiesSpaces; + class IfcRelOverridesProperties extends IfcRelDefinesByProperties { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingPropertyDefinition, OverridingProperties) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingPropertyDefinition); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingPropertyDefinition = RelatingPropertyDefinition; + this.OverridingProperties = OverridingProperties; + this.type = 202636808; + } + } + IFC2X32.IfcRelOverridesProperties = IfcRelOverridesProperties; + class IfcRelProjectsElement extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingElement, RelatedFeatureElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingElement = RelatingElement; + this.RelatedFeatureElement = RelatedFeatureElement; + this.type = 750771296; + } + } + IFC2X32.IfcRelProjectsElement = IfcRelProjectsElement; + class IfcRelReferencedInSpatialStructure extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedElements, RelatingStructure) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedElements = RelatedElements; + this.RelatingStructure = RelatingStructure; + this.type = 1245217292; + } + } + IFC2X32.IfcRelReferencedInSpatialStructure = IfcRelReferencedInSpatialStructure; + class IfcRelSchedulesCostItems extends IfcRelAssignsToControl { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingControl) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingControl); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingControl = RelatingControl; + this.type = 1058617721; + } + } + IFC2X32.IfcRelSchedulesCostItems = IfcRelSchedulesCostItems; + class IfcRelSequence extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingProcess, RelatedProcess, TimeLag, SequenceType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingProcess = RelatingProcess; + this.RelatedProcess = RelatedProcess; + this.TimeLag = TimeLag; + this.SequenceType = SequenceType; + this.type = 4122056220; + } + } + IFC2X32.IfcRelSequence = IfcRelSequence; + class IfcRelServicesBuildings extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSystem, RelatedBuildings) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSystem = RelatingSystem; + this.RelatedBuildings = RelatedBuildings; + this.type = 366585022; + } + } + IFC2X32.IfcRelServicesBuildings = IfcRelServicesBuildings; + class IfcRelSpaceBoundary extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedBuildingElement, ConnectionGeometry, PhysicalOrVirtualBoundary, InternalOrExternalBoundary) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSpace = RelatingSpace; + this.RelatedBuildingElement = RelatedBuildingElement; + this.ConnectionGeometry = ConnectionGeometry; + this.PhysicalOrVirtualBoundary = PhysicalOrVirtualBoundary; + this.InternalOrExternalBoundary = InternalOrExternalBoundary; + this.type = 3451746338; + } + } + IFC2X32.IfcRelSpaceBoundary = IfcRelSpaceBoundary; + class IfcRelVoidsElement extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingBuildingElement, RelatedOpeningElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingBuildingElement = RelatingBuildingElement; + this.RelatedOpeningElement = RelatedOpeningElement; + this.type = 1401173127; + } + } + IFC2X32.IfcRelVoidsElement = IfcRelVoidsElement; + class IfcResource extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 2914609552; + } + } + IFC2X32.IfcResource = IfcResource; + class IfcRevolvedAreaSolid extends IfcSweptAreaSolid { + constructor(SweptArea, Position, Axis2, Angle) { + super(SweptArea, Position); + this.SweptArea = SweptArea; + this.Position = Position; + this.Axis = Axis2; + this.Angle = Angle; + this.type = 1856042241; + } + } + IFC2X32.IfcRevolvedAreaSolid = IfcRevolvedAreaSolid; + class IfcRightCircularCone extends IfcCsgPrimitive3D { + constructor(Position, Height, BottomRadius) { + super(Position); + this.Position = Position; + this.Height = Height; + this.BottomRadius = BottomRadius; + this.type = 4158566097; + } + } + IFC2X32.IfcRightCircularCone = IfcRightCircularCone; + class IfcRightCircularCylinder extends IfcCsgPrimitive3D { + constructor(Position, Height, Radius) { + super(Position); + this.Position = Position; + this.Height = Height; + this.Radius = Radius; + this.type = 3626867408; + } + } + IFC2X32.IfcRightCircularCylinder = IfcRightCircularCylinder; + class IfcSpatialStructureElement extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.type = 2706606064; + } + } + IFC2X32.IfcSpatialStructureElement = IfcSpatialStructureElement; + class IfcSpatialStructureElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3893378262; + } + } + IFC2X32.IfcSpatialStructureElementType = IfcSpatialStructureElementType; + class IfcSphere extends IfcCsgPrimitive3D { + constructor(Position, Radius) { + super(Position); + this.Position = Position; + this.Radius = Radius; + this.type = 451544542; + } + } + IFC2X32.IfcSphere = IfcSphere; + class IfcStructuralActivity extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.type = 3544373492; + } + } + IFC2X32.IfcStructuralActivity = IfcStructuralActivity; + class IfcStructuralItem extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 3136571912; + } + } + IFC2X32.IfcStructuralItem = IfcStructuralItem; + class IfcStructuralMember extends IfcStructuralItem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 530289379; + } + } + IFC2X32.IfcStructuralMember = IfcStructuralMember; + class IfcStructuralReaction extends IfcStructuralActivity { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.type = 3689010777; + } + } + IFC2X32.IfcStructuralReaction = IfcStructuralReaction; + class IfcStructuralSurfaceMember extends IfcStructuralMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Thickness) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.Thickness = Thickness; + this.type = 3979015343; + } + } + IFC2X32.IfcStructuralSurfaceMember = IfcStructuralSurfaceMember; + class IfcStructuralSurfaceMemberVarying extends IfcStructuralSurfaceMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Thickness, SubsequentThickness, VaryingThicknessLocation) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Thickness); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.Thickness = Thickness; + this.SubsequentThickness = SubsequentThickness; + this.VaryingThicknessLocation = VaryingThicknessLocation; + this.type = 2218152070; + } + } + IFC2X32.IfcStructuralSurfaceMemberVarying = IfcStructuralSurfaceMemberVarying; + class IfcStructuredDimensionCallout extends IfcDraughtingCallout { + constructor(Contents) { + super(Contents); + this.Contents = Contents; + this.type = 4070609034; + } + } + IFC2X32.IfcStructuredDimensionCallout = IfcStructuredDimensionCallout; + class IfcSurfaceCurveSweptAreaSolid extends IfcSweptAreaSolid { + constructor(SweptArea, Position, Directrix, StartParam, EndParam, ReferenceSurface) { + super(SweptArea, Position); + this.SweptArea = SweptArea; + this.Position = Position; + this.Directrix = Directrix; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.ReferenceSurface = ReferenceSurface; + this.type = 2028607225; + } + } + IFC2X32.IfcSurfaceCurveSweptAreaSolid = IfcSurfaceCurveSweptAreaSolid; + class IfcSurfaceOfLinearExtrusion extends IfcSweptSurface { + constructor(SweptCurve, Position, ExtrudedDirection, Depth) { + super(SweptCurve, Position); + this.SweptCurve = SweptCurve; + this.Position = Position; + this.ExtrudedDirection = ExtrudedDirection; + this.Depth = Depth; + this.type = 2809605785; + } + } + IFC2X32.IfcSurfaceOfLinearExtrusion = IfcSurfaceOfLinearExtrusion; + class IfcSurfaceOfRevolution extends IfcSweptSurface { + constructor(SweptCurve, Position, AxisPosition) { + super(SweptCurve, Position); + this.SweptCurve = SweptCurve; + this.Position = Position; + this.AxisPosition = AxisPosition; + this.type = 4124788165; + } + } + IFC2X32.IfcSurfaceOfRevolution = IfcSurfaceOfRevolution; + class IfcSystemFurnitureElementType extends IfcFurnishingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1580310250; + } + } + IFC2X32.IfcSystemFurnitureElementType = IfcSystemFurnitureElementType; + class IfcTask extends IfcProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TaskId, Status, WorkMethod, IsMilestone, Priority) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TaskId = TaskId; + this.Status = Status; + this.WorkMethod = WorkMethod; + this.IsMilestone = IsMilestone; + this.Priority = Priority; + this.type = 3473067441; + } + } + IFC2X32.IfcTask = IfcTask; + class IfcTransportElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2097647324; + } + } + IFC2X32.IfcTransportElementType = IfcTransportElementType; + class IfcActor extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TheActor) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TheActor = TheActor; + this.type = 2296667514; + } + } + IFC2X32.IfcActor = IfcActor; + class IfcAnnotation extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 1674181508; + } + } + IFC2X32.IfcAnnotation = IfcAnnotation; + class IfcAsymmetricIShapeProfileDef extends IfcIShapeProfileDef { + constructor(ProfileType, ProfileName, Position, OverallWidth, OverallDepth, WebThickness, FlangeThickness, FilletRadius, TopFlangeWidth, TopFlangeThickness, TopFlangeFilletRadius, CentreOfGravityInY) { + super(ProfileType, ProfileName, Position, OverallWidth, OverallDepth, WebThickness, FlangeThickness, FilletRadius); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.OverallWidth = OverallWidth; + this.OverallDepth = OverallDepth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.TopFlangeWidth = TopFlangeWidth; + this.TopFlangeThickness = TopFlangeThickness; + this.TopFlangeFilletRadius = TopFlangeFilletRadius; + this.CentreOfGravityInY = CentreOfGravityInY; + this.type = 3207858831; + } + } + IFC2X32.IfcAsymmetricIShapeProfileDef = IfcAsymmetricIShapeProfileDef; + class IfcBlock extends IfcCsgPrimitive3D { + constructor(Position, XLength, YLength, ZLength) { + super(Position); + this.Position = Position; + this.XLength = XLength; + this.YLength = YLength; + this.ZLength = ZLength; + this.type = 1334484129; + } + } + IFC2X32.IfcBlock = IfcBlock; + class IfcBooleanClippingResult extends IfcBooleanResult { + constructor(Operator, FirstOperand, SecondOperand) { + super(Operator, FirstOperand, SecondOperand); + this.Operator = Operator; + this.FirstOperand = FirstOperand; + this.SecondOperand = SecondOperand; + this.type = 3649129432; + } + } + IFC2X32.IfcBooleanClippingResult = IfcBooleanClippingResult; + class IfcBoundedCurve extends IfcCurve { + constructor() { + super(); + this.type = 1260505505; + } + } + IFC2X32.IfcBoundedCurve = IfcBoundedCurve; + class IfcBuilding extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, ElevationOfRefHeight, ElevationOfTerrain, BuildingAddress) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.ElevationOfRefHeight = ElevationOfRefHeight; + this.ElevationOfTerrain = ElevationOfTerrain; + this.BuildingAddress = BuildingAddress; + this.type = 4031249490; + } + } + IFC2X32.IfcBuilding = IfcBuilding; + class IfcBuildingElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1950629157; + } + } + IFC2X32.IfcBuildingElementType = IfcBuildingElementType; + class IfcBuildingStorey extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, Elevation) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.Elevation = Elevation; + this.type = 3124254112; + } + } + IFC2X32.IfcBuildingStorey = IfcBuildingStorey; + class IfcCircleHollowProfileDef extends IfcCircleProfileDef { + constructor(ProfileType, ProfileName, Position, Radius, WallThickness) { + super(ProfileType, ProfileName, Position, Radius); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Radius = Radius; + this.WallThickness = WallThickness; + this.type = 2937912522; + } + } + IFC2X32.IfcCircleHollowProfileDef = IfcCircleHollowProfileDef; + class IfcColumnType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 300633059; + } + } + IFC2X32.IfcColumnType = IfcColumnType; + class IfcCompositeCurve extends IfcBoundedCurve { + constructor(Segments, SelfIntersect) { + super(); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 3732776249; + } + } + IFC2X32.IfcCompositeCurve = IfcCompositeCurve; + class IfcConic extends IfcCurve { + constructor(Position) { + super(); + this.Position = Position; + this.type = 2510884976; + } + } + IFC2X32.IfcConic = IfcConic; + class IfcConstructionResource extends IfcResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ResourceIdentifier = ResourceIdentifier; + this.ResourceGroup = ResourceGroup; + this.ResourceConsumption = ResourceConsumption; + this.BaseQuantity = BaseQuantity; + this.type = 2559216714; + } + } + IFC2X32.IfcConstructionResource = IfcConstructionResource; + class IfcControl extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 3293443760; + } + } + IFC2X32.IfcControl = IfcControl; + class IfcCostItem extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 3895139033; + } + } + IFC2X32.IfcCostItem = IfcCostItem; + class IfcCostSchedule extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, SubmittedBy, PreparedBy, SubmittedOn, Status, TargetUsers, UpdateDate, ID, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.SubmittedBy = SubmittedBy; + this.PreparedBy = PreparedBy; + this.SubmittedOn = SubmittedOn; + this.Status = Status; + this.TargetUsers = TargetUsers; + this.UpdateDate = UpdateDate; + this.ID = ID; + this.PredefinedType = PredefinedType; + this.type = 1419761937; + } + } + IFC2X32.IfcCostSchedule = IfcCostSchedule; + class IfcCoveringType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1916426348; + } + } + IFC2X32.IfcCoveringType = IfcCoveringType; + class IfcCrewResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ResourceIdentifier = ResourceIdentifier; + this.ResourceGroup = ResourceGroup; + this.ResourceConsumption = ResourceConsumption; + this.BaseQuantity = BaseQuantity; + this.type = 3295246426; + } + } + IFC2X32.IfcCrewResource = IfcCrewResource; + class IfcCurtainWallType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1457835157; + } + } + IFC2X32.IfcCurtainWallType = IfcCurtainWallType; + class IfcDimensionCurveDirectedCallout extends IfcDraughtingCallout { + constructor(Contents) { + super(Contents); + this.Contents = Contents; + this.type = 681481545; + } + } + IFC2X32.IfcDimensionCurveDirectedCallout = IfcDimensionCurveDirectedCallout; + class IfcDistributionElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3256556792; + } + } + IFC2X32.IfcDistributionElementType = IfcDistributionElementType; + class IfcDistributionFlowElementType extends IfcDistributionElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3849074793; + } + } + IFC2X32.IfcDistributionFlowElementType = IfcDistributionFlowElementType; + class IfcElectricalBaseProperties extends IfcEnergyProperties { + constructor(GlobalId, OwnerHistory, Name, Description, EnergySequence, UserDefinedEnergySequence, ElectricCurrentType, InputVoltage, InputFrequency, FullLoadCurrent, MinimumCircuitCurrent, MaximumPowerInput, RatedPowerInput, InputPhase) { + super(GlobalId, OwnerHistory, Name, Description, EnergySequence, UserDefinedEnergySequence); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.EnergySequence = EnergySequence; + this.UserDefinedEnergySequence = UserDefinedEnergySequence; + this.ElectricCurrentType = ElectricCurrentType; + this.InputVoltage = InputVoltage; + this.InputFrequency = InputFrequency; + this.FullLoadCurrent = FullLoadCurrent; + this.MinimumCircuitCurrent = MinimumCircuitCurrent; + this.MaximumPowerInput = MaximumPowerInput; + this.RatedPowerInput = RatedPowerInput; + this.InputPhase = InputPhase; + this.type = 360485395; + } + } + IFC2X32.IfcElectricalBaseProperties = IfcElectricalBaseProperties; + class IfcElement extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1758889154; + } + } + IFC2X32.IfcElement = IfcElement; + class IfcElementAssembly extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, AssemblyPlace, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.AssemblyPlace = AssemblyPlace; + this.PredefinedType = PredefinedType; + this.type = 4123344466; + } + } + IFC2X32.IfcElementAssembly = IfcElementAssembly; + class IfcElementComponent extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1623761950; + } + } + IFC2X32.IfcElementComponent = IfcElementComponent; + class IfcElementComponentType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2590856083; + } + } + IFC2X32.IfcElementComponentType = IfcElementComponentType; + class IfcEllipse extends IfcConic { + constructor(Position, SemiAxis1, SemiAxis2) { + super(Position); + this.Position = Position; + this.SemiAxis1 = SemiAxis1; + this.SemiAxis2 = SemiAxis2; + this.type = 1704287377; + } + } + IFC2X32.IfcEllipse = IfcEllipse; + class IfcEnergyConversionDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2107101300; + } + } + IFC2X32.IfcEnergyConversionDeviceType = IfcEnergyConversionDeviceType; + class IfcEquipmentElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1962604670; + } + } + IFC2X32.IfcEquipmentElement = IfcEquipmentElement; + class IfcEquipmentStandard extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 3272907226; + } + } + IFC2X32.IfcEquipmentStandard = IfcEquipmentStandard; + class IfcEvaporativeCoolerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3174744832; + } + } + IFC2X32.IfcEvaporativeCoolerType = IfcEvaporativeCoolerType; + class IfcEvaporatorType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3390157468; + } + } + IFC2X32.IfcEvaporatorType = IfcEvaporatorType; + class IfcFacetedBrep extends IfcManifoldSolidBrep { + constructor(Outer) { + super(Outer); + this.Outer = Outer; + this.type = 807026263; + } + } + IFC2X32.IfcFacetedBrep = IfcFacetedBrep; + class IfcFacetedBrepWithVoids extends IfcManifoldSolidBrep { + constructor(Outer, Voids) { + super(Outer); + this.Outer = Outer; + this.Voids = Voids; + this.type = 3737207727; + } + } + IFC2X32.IfcFacetedBrepWithVoids = IfcFacetedBrepWithVoids; + class IfcFastener extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 647756555; + } + } + IFC2X32.IfcFastener = IfcFastener; + class IfcFastenerType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2489546625; + } + } + IFC2X32.IfcFastenerType = IfcFastenerType; + class IfcFeatureElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2827207264; + } + } + IFC2X32.IfcFeatureElement = IfcFeatureElement; + class IfcFeatureElementAddition extends IfcFeatureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2143335405; + } + } + IFC2X32.IfcFeatureElementAddition = IfcFeatureElementAddition; + class IfcFeatureElementSubtraction extends IfcFeatureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1287392070; + } + } + IFC2X32.IfcFeatureElementSubtraction = IfcFeatureElementSubtraction; + class IfcFlowControllerType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3907093117; + } + } + IFC2X32.IfcFlowControllerType = IfcFlowControllerType; + class IfcFlowFittingType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3198132628; + } + } + IFC2X32.IfcFlowFittingType = IfcFlowFittingType; + class IfcFlowMeterType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3815607619; + } + } + IFC2X32.IfcFlowMeterType = IfcFlowMeterType; + class IfcFlowMovingDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1482959167; + } + } + IFC2X32.IfcFlowMovingDeviceType = IfcFlowMovingDeviceType; + class IfcFlowSegmentType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1834744321; + } + } + IFC2X32.IfcFlowSegmentType = IfcFlowSegmentType; + class IfcFlowStorageDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1339347760; + } + } + IFC2X32.IfcFlowStorageDeviceType = IfcFlowStorageDeviceType; + class IfcFlowTerminalType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2297155007; + } + } + IFC2X32.IfcFlowTerminalType = IfcFlowTerminalType; + class IfcFlowTreatmentDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3009222698; + } + } + IFC2X32.IfcFlowTreatmentDeviceType = IfcFlowTreatmentDeviceType; + class IfcFurnishingElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 263784265; + } + } + IFC2X32.IfcFurnishingElement = IfcFurnishingElement; + class IfcFurnitureStandard extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 814719939; + } + } + IFC2X32.IfcFurnitureStandard = IfcFurnitureStandard; + class IfcGasTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 200128114; + } + } + IFC2X32.IfcGasTerminalType = IfcGasTerminalType; + class IfcGrid extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, UAxes, VAxes, WAxes) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.UAxes = UAxes; + this.VAxes = VAxes; + this.WAxes = WAxes; + this.type = 3009204131; + } + } + IFC2X32.IfcGrid = IfcGrid; + class IfcGroup extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 2706460486; + } + } + IFC2X32.IfcGroup = IfcGroup; + class IfcHeatExchangerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1251058090; + } + } + IFC2X32.IfcHeatExchangerType = IfcHeatExchangerType; + class IfcHumidifierType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1806887404; + } + } + IFC2X32.IfcHumidifierType = IfcHumidifierType; + class IfcInventory extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, InventoryType, Jurisdiction, ResponsiblePersons, LastUpdateDate, CurrentValue, OriginalValue) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.InventoryType = InventoryType; + this.Jurisdiction = Jurisdiction; + this.ResponsiblePersons = ResponsiblePersons; + this.LastUpdateDate = LastUpdateDate; + this.CurrentValue = CurrentValue; + this.OriginalValue = OriginalValue; + this.type = 2391368822; + } + } + IFC2X32.IfcInventory = IfcInventory; + class IfcJunctionBoxType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4288270099; + } + } + IFC2X32.IfcJunctionBoxType = IfcJunctionBoxType; + class IfcLaborResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity, SkillSet) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ResourceIdentifier = ResourceIdentifier; + this.ResourceGroup = ResourceGroup; + this.ResourceConsumption = ResourceConsumption; + this.BaseQuantity = BaseQuantity; + this.SkillSet = SkillSet; + this.type = 3827777499; + } + } + IFC2X32.IfcLaborResource = IfcLaborResource; + class IfcLampType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1051575348; + } + } + IFC2X32.IfcLampType = IfcLampType; + class IfcLightFixtureType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1161773419; + } + } + IFC2X32.IfcLightFixtureType = IfcLightFixtureType; + class IfcLinearDimension extends IfcDimensionCurveDirectedCallout { + constructor(Contents) { + super(Contents); + this.Contents = Contents; + this.type = 2506943328; + } + } + IFC2X32.IfcLinearDimension = IfcLinearDimension; + class IfcMechanicalFastener extends IfcFastener { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, NominalDiameter, NominalLength) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.NominalDiameter = NominalDiameter; + this.NominalLength = NominalLength; + this.type = 377706215; + } + } + IFC2X32.IfcMechanicalFastener = IfcMechanicalFastener; + class IfcMechanicalFastenerType extends IfcFastenerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2108223431; + } + } + IFC2X32.IfcMechanicalFastenerType = IfcMechanicalFastenerType; + class IfcMemberType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3181161470; + } + } + IFC2X32.IfcMemberType = IfcMemberType; + class IfcMotorConnectionType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 977012517; + } + } + IFC2X32.IfcMotorConnectionType = IfcMotorConnectionType; + class IfcMove extends IfcTask { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TaskId, Status, WorkMethod, IsMilestone, Priority, MoveFrom, MoveTo, PunchList) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, TaskId, Status, WorkMethod, IsMilestone, Priority); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TaskId = TaskId; + this.Status = Status; + this.WorkMethod = WorkMethod; + this.IsMilestone = IsMilestone; + this.Priority = Priority; + this.MoveFrom = MoveFrom; + this.MoveTo = MoveTo; + this.PunchList = PunchList; + this.type = 1916936684; + } + } + IFC2X32.IfcMove = IfcMove; + class IfcOccupant extends IfcActor { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TheActor, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, TheActor); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TheActor = TheActor; + this.PredefinedType = PredefinedType; + this.type = 4143007308; + } + } + IFC2X32.IfcOccupant = IfcOccupant; + class IfcOpeningElement extends IfcFeatureElementSubtraction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3588315303; + } + } + IFC2X32.IfcOpeningElement = IfcOpeningElement; + class IfcOrderAction extends IfcTask { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TaskId, Status, WorkMethod, IsMilestone, Priority, ActionID) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, TaskId, Status, WorkMethod, IsMilestone, Priority); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TaskId = TaskId; + this.Status = Status; + this.WorkMethod = WorkMethod; + this.IsMilestone = IsMilestone; + this.Priority = Priority; + this.ActionID = ActionID; + this.type = 3425660407; + } + } + IFC2X32.IfcOrderAction = IfcOrderAction; + class IfcOutletType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2837617999; + } + } + IFC2X32.IfcOutletType = IfcOutletType; + class IfcPerformanceHistory extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LifeCyclePhase) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LifeCyclePhase = LifeCyclePhase; + this.type = 2382730787; + } + } + IFC2X32.IfcPerformanceHistory = IfcPerformanceHistory; + class IfcPermit extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PermitID) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PermitID = PermitID; + this.type = 3327091369; + } + } + IFC2X32.IfcPermit = IfcPermit; + class IfcPipeFittingType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 804291784; + } + } + IFC2X32.IfcPipeFittingType = IfcPipeFittingType; + class IfcPipeSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4231323485; + } + } + IFC2X32.IfcPipeSegmentType = IfcPipeSegmentType; + class IfcPlateType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4017108033; + } + } + IFC2X32.IfcPlateType = IfcPlateType; + class IfcPolyline extends IfcBoundedCurve { + constructor(Points2) { + super(); + this.Points = Points2; + this.type = 3724593414; + } + } + IFC2X32.IfcPolyline = IfcPolyline; + class IfcPort extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 3740093272; + } + } + IFC2X32.IfcPort = IfcPort; + class IfcProcedure extends IfcProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ProcedureID, ProcedureType, UserDefinedProcedureType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ProcedureID = ProcedureID; + this.ProcedureType = ProcedureType; + this.UserDefinedProcedureType = UserDefinedProcedureType; + this.type = 2744685151; + } + } + IFC2X32.IfcProcedure = IfcProcedure; + class IfcProjectOrder extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ID, PredefinedType, Status) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ID = ID; + this.PredefinedType = PredefinedType; + this.Status = Status; + this.type = 2904328755; + } + } + IFC2X32.IfcProjectOrder = IfcProjectOrder; + class IfcProjectOrderRecord extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Records, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Records = Records; + this.PredefinedType = PredefinedType; + this.type = 3642467123; + } + } + IFC2X32.IfcProjectOrderRecord = IfcProjectOrderRecord; + class IfcProjectionElement extends IfcFeatureElementAddition { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3651124850; + } + } + IFC2X32.IfcProjectionElement = IfcProjectionElement; + class IfcProtectiveDeviceType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1842657554; + } + } + IFC2X32.IfcProtectiveDeviceType = IfcProtectiveDeviceType; + class IfcPumpType extends IfcFlowMovingDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2250791053; + } + } + IFC2X32.IfcPumpType = IfcPumpType; + class IfcRadiusDimension extends IfcDimensionCurveDirectedCallout { + constructor(Contents) { + super(Contents); + this.Contents = Contents; + this.type = 3248260540; + } + } + IFC2X32.IfcRadiusDimension = IfcRadiusDimension; + class IfcRailingType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2893384427; + } + } + IFC2X32.IfcRailingType = IfcRailingType; + class IfcRampFlightType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2324767716; + } + } + IFC2X32.IfcRampFlightType = IfcRampFlightType; + class IfcRelAggregates extends IfcRelDecomposes { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingObject, RelatedObjects) { + super(GlobalId, OwnerHistory, Name, Description, RelatingObject, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingObject = RelatingObject; + this.RelatedObjects = RelatedObjects; + this.type = 160246688; + } + } + IFC2X32.IfcRelAggregates = IfcRelAggregates; + class IfcRelAssignsTasks extends IfcRelAssignsToControl { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingControl, TimeForTask) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingControl); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingControl = RelatingControl; + this.TimeForTask = TimeForTask; + this.type = 2863920197; + } + } + IFC2X32.IfcRelAssignsTasks = IfcRelAssignsTasks; + class IfcSanitaryTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1768891740; + } + } + IFC2X32.IfcSanitaryTerminalType = IfcSanitaryTerminalType; + class IfcScheduleTimeControl extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ActualStart, EarlyStart, LateStart, ScheduleStart, ActualFinish, EarlyFinish, LateFinish, ScheduleFinish, ScheduleDuration, ActualDuration, RemainingTime, FreeFloat, TotalFloat, IsCritical, StatusTime, StartFloat, FinishFloat, Completion) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ActualStart = ActualStart; + this.EarlyStart = EarlyStart; + this.LateStart = LateStart; + this.ScheduleStart = ScheduleStart; + this.ActualFinish = ActualFinish; + this.EarlyFinish = EarlyFinish; + this.LateFinish = LateFinish; + this.ScheduleFinish = ScheduleFinish; + this.ScheduleDuration = ScheduleDuration; + this.ActualDuration = ActualDuration; + this.RemainingTime = RemainingTime; + this.FreeFloat = FreeFloat; + this.TotalFloat = TotalFloat; + this.IsCritical = IsCritical; + this.StatusTime = StatusTime; + this.StartFloat = StartFloat; + this.FinishFloat = FinishFloat; + this.Completion = Completion; + this.type = 3517283431; + } + } + IFC2X32.IfcScheduleTimeControl = IfcScheduleTimeControl; + class IfcServiceLife extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ServiceLifeType, ServiceLifeDuration) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ServiceLifeType = ServiceLifeType; + this.ServiceLifeDuration = ServiceLifeDuration; + this.type = 4105383287; + } + } + IFC2X32.IfcServiceLife = IfcServiceLife; + class IfcSite extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, RefLatitude, RefLongitude, RefElevation, LandTitleNumber, SiteAddress) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.RefLatitude = RefLatitude; + this.RefLongitude = RefLongitude; + this.RefElevation = RefElevation; + this.LandTitleNumber = LandTitleNumber; + this.SiteAddress = SiteAddress; + this.type = 4097777520; + } + } + IFC2X32.IfcSite = IfcSite; + class IfcSlabType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2533589738; + } + } + IFC2X32.IfcSlabType = IfcSlabType; + class IfcSpace extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, InteriorOrExteriorSpace, ElevationWithFlooring) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.InteriorOrExteriorSpace = InteriorOrExteriorSpace; + this.ElevationWithFlooring = ElevationWithFlooring; + this.type = 3856911033; + } + } + IFC2X32.IfcSpace = IfcSpace; + class IfcSpaceHeaterType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1305183839; + } + } + IFC2X32.IfcSpaceHeaterType = IfcSpaceHeaterType; + class IfcSpaceProgram extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, SpaceProgramIdentifier, MaxRequiredArea, MinRequiredArea, RequestedLocation, StandardRequiredArea) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.SpaceProgramIdentifier = SpaceProgramIdentifier; + this.MaxRequiredArea = MaxRequiredArea; + this.MinRequiredArea = MinRequiredArea; + this.RequestedLocation = RequestedLocation; + this.StandardRequiredArea = StandardRequiredArea; + this.type = 652456506; + } + } + IFC2X32.IfcSpaceProgram = IfcSpaceProgram; + class IfcSpaceType extends IfcSpatialStructureElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3812236995; + } + } + IFC2X32.IfcSpaceType = IfcSpaceType; + class IfcStackTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3112655638; + } + } + IFC2X32.IfcStackTerminalType = IfcStackTerminalType; + class IfcStairFlightType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1039846685; + } + } + IFC2X32.IfcStairFlightType = IfcStairFlightType; + class IfcStructuralAction extends IfcStructuralActivity { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, CausedBy) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.CausedBy = CausedBy; + this.type = 682877961; + } + } + IFC2X32.IfcStructuralAction = IfcStructuralAction; + class IfcStructuralConnection extends IfcStructuralItem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.type = 1179482911; + } + } + IFC2X32.IfcStructuralConnection = IfcStructuralConnection; + class IfcStructuralCurveConnection extends IfcStructuralConnection { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.type = 4243806635; + } + } + IFC2X32.IfcStructuralCurveConnection = IfcStructuralCurveConnection; + class IfcStructuralCurveMember extends IfcStructuralMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.type = 214636428; + } + } + IFC2X32.IfcStructuralCurveMember = IfcStructuralCurveMember; + class IfcStructuralCurveMemberVarying extends IfcStructuralCurveMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.type = 2445595289; + } + } + IFC2X32.IfcStructuralCurveMemberVarying = IfcStructuralCurveMemberVarying; + class IfcStructuralLinearAction extends IfcStructuralAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, CausedBy, ProjectedOrTrue) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, CausedBy); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.CausedBy = CausedBy; + this.ProjectedOrTrue = ProjectedOrTrue; + this.type = 1807405624; + } + } + IFC2X32.IfcStructuralLinearAction = IfcStructuralLinearAction; + class IfcStructuralLinearActionVarying extends IfcStructuralLinearAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, CausedBy, ProjectedOrTrue, VaryingAppliedLoadLocation, SubsequentAppliedLoads) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, CausedBy, ProjectedOrTrue); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.CausedBy = CausedBy; + this.ProjectedOrTrue = ProjectedOrTrue; + this.VaryingAppliedLoadLocation = VaryingAppliedLoadLocation; + this.SubsequentAppliedLoads = SubsequentAppliedLoads; + this.type = 1721250024; + } + } + IFC2X32.IfcStructuralLinearActionVarying = IfcStructuralLinearActionVarying; + class IfcStructuralLoadGroup extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, ActionType, ActionSource, Coefficient, Purpose) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.ActionType = ActionType; + this.ActionSource = ActionSource; + this.Coefficient = Coefficient; + this.Purpose = Purpose; + this.type = 1252848954; + } + } + IFC2X32.IfcStructuralLoadGroup = IfcStructuralLoadGroup; + class IfcStructuralPlanarAction extends IfcStructuralAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, CausedBy, ProjectedOrTrue) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, CausedBy); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.CausedBy = CausedBy; + this.ProjectedOrTrue = ProjectedOrTrue; + this.type = 1621171031; + } + } + IFC2X32.IfcStructuralPlanarAction = IfcStructuralPlanarAction; + class IfcStructuralPlanarActionVarying extends IfcStructuralPlanarAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, CausedBy, ProjectedOrTrue, VaryingAppliedLoadLocation, SubsequentAppliedLoads) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, CausedBy, ProjectedOrTrue); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.CausedBy = CausedBy; + this.ProjectedOrTrue = ProjectedOrTrue; + this.VaryingAppliedLoadLocation = VaryingAppliedLoadLocation; + this.SubsequentAppliedLoads = SubsequentAppliedLoads; + this.type = 3987759626; + } + } + IFC2X32.IfcStructuralPlanarActionVarying = IfcStructuralPlanarActionVarying; + class IfcStructuralPointAction extends IfcStructuralAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, CausedBy) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, CausedBy); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.CausedBy = CausedBy; + this.type = 2082059205; + } + } + IFC2X32.IfcStructuralPointAction = IfcStructuralPointAction; + class IfcStructuralPointConnection extends IfcStructuralConnection { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.type = 734778138; + } + } + IFC2X32.IfcStructuralPointConnection = IfcStructuralPointConnection; + class IfcStructuralPointReaction extends IfcStructuralReaction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.type = 1235345126; + } + } + IFC2X32.IfcStructuralPointReaction = IfcStructuralPointReaction; + class IfcStructuralResultGroup extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TheoryType, ResultForLoadGroup, IsLinear) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TheoryType = TheoryType; + this.ResultForLoadGroup = ResultForLoadGroup; + this.IsLinear = IsLinear; + this.type = 2986769608; + } + } + IFC2X32.IfcStructuralResultGroup = IfcStructuralResultGroup; + class IfcStructuralSurfaceConnection extends IfcStructuralConnection { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.type = 1975003073; + } + } + IFC2X32.IfcStructuralSurfaceConnection = IfcStructuralSurfaceConnection; + class IfcSubContractResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity, SubContractor, JobDescription) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ResourceIdentifier = ResourceIdentifier; + this.ResourceGroup = ResourceGroup; + this.ResourceConsumption = ResourceConsumption; + this.BaseQuantity = BaseQuantity; + this.SubContractor = SubContractor; + this.JobDescription = JobDescription; + this.type = 148013059; + } + } + IFC2X32.IfcSubContractResource = IfcSubContractResource; + class IfcSwitchingDeviceType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2315554128; + } + } + IFC2X32.IfcSwitchingDeviceType = IfcSwitchingDeviceType; + class IfcSystem extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 2254336722; + } + } + IFC2X32.IfcSystem = IfcSystem; + class IfcTankType extends IfcFlowStorageDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 5716631; + } + } + IFC2X32.IfcTankType = IfcTankType; + class IfcTimeSeriesSchedule extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ApplicableDates, TimeSeriesScheduleType, TimeSeries) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ApplicableDates = ApplicableDates; + this.TimeSeriesScheduleType = TimeSeriesScheduleType; + this.TimeSeries = TimeSeries; + this.type = 1637806684; + } + } + IFC2X32.IfcTimeSeriesSchedule = IfcTimeSeriesSchedule; + class IfcTransformerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1692211062; + } + } + IFC2X32.IfcTransformerType = IfcTransformerType; + class IfcTransportElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, OperationType, CapacityByWeight, CapacityByNumber) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.OperationType = OperationType; + this.CapacityByWeight = CapacityByWeight; + this.CapacityByNumber = CapacityByNumber; + this.type = 1620046519; + } + } + IFC2X32.IfcTransportElement = IfcTransportElement; + class IfcTrimmedCurve extends IfcBoundedCurve { + constructor(BasisCurve, Trim1, Trim2, SenseAgreement, MasterRepresentation) { + super(); + this.BasisCurve = BasisCurve; + this.Trim1 = Trim1; + this.Trim2 = Trim2; + this.SenseAgreement = SenseAgreement; + this.MasterRepresentation = MasterRepresentation; + this.type = 3593883385; + } + } + IFC2X32.IfcTrimmedCurve = IfcTrimmedCurve; + class IfcTubeBundleType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1600972822; + } + } + IFC2X32.IfcTubeBundleType = IfcTubeBundleType; + class IfcUnitaryEquipmentType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1911125066; + } + } + IFC2X32.IfcUnitaryEquipmentType = IfcUnitaryEquipmentType; + class IfcValveType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 728799441; + } + } + IFC2X32.IfcValveType = IfcValveType; + class IfcVirtualElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2769231204; + } + } + IFC2X32.IfcVirtualElement = IfcVirtualElement; + class IfcWallType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1898987631; + } + } + IFC2X32.IfcWallType = IfcWallType; + class IfcWasteTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1133259667; + } + } + IFC2X32.IfcWasteTerminalType = IfcWasteTerminalType; + class IfcWorkControl extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identifier, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime, WorkControlType, UserDefinedControlType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identifier = Identifier; + this.CreationDate = CreationDate; + this.Creators = Creators; + this.Purpose = Purpose; + this.Duration = Duration; + this.TotalFloat = TotalFloat; + this.StartTime = StartTime; + this.FinishTime = FinishTime; + this.WorkControlType = WorkControlType; + this.UserDefinedControlType = UserDefinedControlType; + this.type = 1028945134; + } + } + IFC2X32.IfcWorkControl = IfcWorkControl; + class IfcWorkPlan extends IfcWorkControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identifier, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime, WorkControlType, UserDefinedControlType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identifier, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime, WorkControlType, UserDefinedControlType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identifier = Identifier; + this.CreationDate = CreationDate; + this.Creators = Creators; + this.Purpose = Purpose; + this.Duration = Duration; + this.TotalFloat = TotalFloat; + this.StartTime = StartTime; + this.FinishTime = FinishTime; + this.WorkControlType = WorkControlType; + this.UserDefinedControlType = UserDefinedControlType; + this.type = 4218914973; + } + } + IFC2X32.IfcWorkPlan = IfcWorkPlan; + class IfcWorkSchedule extends IfcWorkControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identifier, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime, WorkControlType, UserDefinedControlType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identifier, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime, WorkControlType, UserDefinedControlType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identifier = Identifier; + this.CreationDate = CreationDate; + this.Creators = Creators; + this.Purpose = Purpose; + this.Duration = Duration; + this.TotalFloat = TotalFloat; + this.StartTime = StartTime; + this.FinishTime = FinishTime; + this.WorkControlType = WorkControlType; + this.UserDefinedControlType = UserDefinedControlType; + this.type = 3342526732; + } + } + IFC2X32.IfcWorkSchedule = IfcWorkSchedule; + class IfcZone extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 1033361043; + } + } + IFC2X32.IfcZone = IfcZone; + class Ifc2DCompositeCurve extends IfcCompositeCurve { + constructor(Segments, SelfIntersect) { + super(Segments, SelfIntersect); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 1213861670; + } + } + IFC2X32.Ifc2DCompositeCurve = Ifc2DCompositeCurve; + class IfcActionRequest extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, RequestID) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.RequestID = RequestID; + this.type = 3821786052; + } + } + IFC2X32.IfcActionRequest = IfcActionRequest; + class IfcAirTerminalBoxType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1411407467; + } + } + IFC2X32.IfcAirTerminalBoxType = IfcAirTerminalBoxType; + class IfcAirTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3352864051; + } + } + IFC2X32.IfcAirTerminalType = IfcAirTerminalType; + class IfcAirToAirHeatRecoveryType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1871374353; + } + } + IFC2X32.IfcAirToAirHeatRecoveryType = IfcAirToAirHeatRecoveryType; + class IfcAngularDimension extends IfcDimensionCurveDirectedCallout { + constructor(Contents) { + super(Contents); + this.Contents = Contents; + this.type = 2470393545; + } + } + IFC2X32.IfcAngularDimension = IfcAngularDimension; + class IfcAsset extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, AssetID, OriginalValue, CurrentValue, TotalReplacementCost, Owner, User, ResponsiblePerson, IncorporationDate, DepreciatedValue) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.AssetID = AssetID; + this.OriginalValue = OriginalValue; + this.CurrentValue = CurrentValue; + this.TotalReplacementCost = TotalReplacementCost; + this.Owner = Owner; + this.User = User; + this.ResponsiblePerson = ResponsiblePerson; + this.IncorporationDate = IncorporationDate; + this.DepreciatedValue = DepreciatedValue; + this.type = 3460190687; + } + } + IFC2X32.IfcAsset = IfcAsset; + class IfcBSplineCurve extends IfcBoundedCurve { + constructor(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect) { + super(); + this.Degree = Degree; + this.ControlPointsList = ControlPointsList; + this.CurveForm = CurveForm; + this.ClosedCurve = ClosedCurve; + this.SelfIntersect = SelfIntersect; + this.type = 1967976161; + } + } + IFC2X32.IfcBSplineCurve = IfcBSplineCurve; + class IfcBeamType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 819618141; + } + } + IFC2X32.IfcBeamType = IfcBeamType; + class IfcBezierCurve extends IfcBSplineCurve { + constructor(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect) { + super(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect); + this.Degree = Degree; + this.ControlPointsList = ControlPointsList; + this.CurveForm = CurveForm; + this.ClosedCurve = ClosedCurve; + this.SelfIntersect = SelfIntersect; + this.type = 1916977116; + } + } + IFC2X32.IfcBezierCurve = IfcBezierCurve; + class IfcBoilerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 231477066; + } + } + IFC2X32.IfcBoilerType = IfcBoilerType; + class IfcBuildingElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3299480353; + } + } + IFC2X32.IfcBuildingElement = IfcBuildingElement; + class IfcBuildingElementComponent extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 52481810; + } + } + IFC2X32.IfcBuildingElementComponent = IfcBuildingElementComponent; + class IfcBuildingElementPart extends IfcBuildingElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2979338954; + } + } + IFC2X32.IfcBuildingElementPart = IfcBuildingElementPart; + class IfcBuildingElementProxy extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, CompositionType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.CompositionType = CompositionType; + this.type = 1095909175; + } + } + IFC2X32.IfcBuildingElementProxy = IfcBuildingElementProxy; + class IfcBuildingElementProxyType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1909888760; + } + } + IFC2X32.IfcBuildingElementProxyType = IfcBuildingElementProxyType; + class IfcCableCarrierFittingType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 395041908; + } + } + IFC2X32.IfcCableCarrierFittingType = IfcCableCarrierFittingType; + class IfcCableCarrierSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3293546465; + } + } + IFC2X32.IfcCableCarrierSegmentType = IfcCableCarrierSegmentType; + class IfcCableSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1285652485; + } + } + IFC2X32.IfcCableSegmentType = IfcCableSegmentType; + class IfcChillerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2951183804; + } + } + IFC2X32.IfcChillerType = IfcChillerType; + class IfcCircle extends IfcConic { + constructor(Position, Radius) { + super(Position); + this.Position = Position; + this.Radius = Radius; + this.type = 2611217952; + } + } + IFC2X32.IfcCircle = IfcCircle; + class IfcCoilType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2301859152; + } + } + IFC2X32.IfcCoilType = IfcCoilType; + class IfcColumn extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 843113511; + } + } + IFC2X32.IfcColumn = IfcColumn; + class IfcCompressorType extends IfcFlowMovingDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3850581409; + } + } + IFC2X32.IfcCompressorType = IfcCompressorType; + class IfcCondenserType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2816379211; + } + } + IFC2X32.IfcCondenserType = IfcCondenserType; + class IfcCondition extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 2188551683; + } + } + IFC2X32.IfcCondition = IfcCondition; + class IfcConditionCriterion extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Criterion, CriterionDateTime) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Criterion = Criterion; + this.CriterionDateTime = CriterionDateTime; + this.type = 1163958913; + } + } + IFC2X32.IfcConditionCriterion = IfcConditionCriterion; + class IfcConstructionEquipmentResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ResourceIdentifier = ResourceIdentifier; + this.ResourceGroup = ResourceGroup; + this.ResourceConsumption = ResourceConsumption; + this.BaseQuantity = BaseQuantity; + this.type = 3898045240; + } + } + IFC2X32.IfcConstructionEquipmentResource = IfcConstructionEquipmentResource; + class IfcConstructionMaterialResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity, Suppliers, UsageRatio) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ResourceIdentifier = ResourceIdentifier; + this.ResourceGroup = ResourceGroup; + this.ResourceConsumption = ResourceConsumption; + this.BaseQuantity = BaseQuantity; + this.Suppliers = Suppliers; + this.UsageRatio = UsageRatio; + this.type = 1060000209; + } + } + IFC2X32.IfcConstructionMaterialResource = IfcConstructionMaterialResource; + class IfcConstructionProductResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ResourceIdentifier, ResourceGroup, ResourceConsumption, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ResourceIdentifier = ResourceIdentifier; + this.ResourceGroup = ResourceGroup; + this.ResourceConsumption = ResourceConsumption; + this.BaseQuantity = BaseQuantity; + this.type = 488727124; + } + } + IFC2X32.IfcConstructionProductResource = IfcConstructionProductResource; + class IfcCooledBeamType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 335055490; + } + } + IFC2X32.IfcCooledBeamType = IfcCooledBeamType; + class IfcCoolingTowerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2954562838; + } + } + IFC2X32.IfcCoolingTowerType = IfcCoolingTowerType; + class IfcCovering extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1973544240; + } + } + IFC2X32.IfcCovering = IfcCovering; + class IfcCurtainWall extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3495092785; + } + } + IFC2X32.IfcCurtainWall = IfcCurtainWall; + class IfcDamperType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3961806047; + } + } + IFC2X32.IfcDamperType = IfcDamperType; + class IfcDiameterDimension extends IfcDimensionCurveDirectedCallout { + constructor(Contents) { + super(Contents); + this.Contents = Contents; + this.type = 4147604152; + } + } + IFC2X32.IfcDiameterDimension = IfcDiameterDimension; + class IfcDiscreteAccessory extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1335981549; + } + } + IFC2X32.IfcDiscreteAccessory = IfcDiscreteAccessory; + class IfcDiscreteAccessoryType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2635815018; + } + } + IFC2X32.IfcDiscreteAccessoryType = IfcDiscreteAccessoryType; + class IfcDistributionChamberElementType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1599208980; + } + } + IFC2X32.IfcDistributionChamberElementType = IfcDistributionChamberElementType; + class IfcDistributionControlElementType extends IfcDistributionElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2063403501; + } + } + IFC2X32.IfcDistributionControlElementType = IfcDistributionControlElementType; + class IfcDistributionElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1945004755; + } + } + IFC2X32.IfcDistributionElement = IfcDistributionElement; + class IfcDistributionFlowElement extends IfcDistributionElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3040386961; + } + } + IFC2X32.IfcDistributionFlowElement = IfcDistributionFlowElement; + class IfcDistributionPort extends IfcPort { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, FlowDirection) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.FlowDirection = FlowDirection; + this.type = 3041715199; + } + } + IFC2X32.IfcDistributionPort = IfcDistributionPort; + class IfcDoor extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, OverallHeight, OverallWidth) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.OverallHeight = OverallHeight; + this.OverallWidth = OverallWidth; + this.type = 395920057; + } + } + IFC2X32.IfcDoor = IfcDoor; + class IfcDuctFittingType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 869906466; + } + } + IFC2X32.IfcDuctFittingType = IfcDuctFittingType; + class IfcDuctSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3760055223; + } + } + IFC2X32.IfcDuctSegmentType = IfcDuctSegmentType; + class IfcDuctSilencerType extends IfcFlowTreatmentDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2030761528; + } + } + IFC2X32.IfcDuctSilencerType = IfcDuctSilencerType; + class IfcEdgeFeature extends IfcFeatureElementSubtraction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, FeatureLength) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.FeatureLength = FeatureLength; + this.type = 855621170; + } + } + IFC2X32.IfcEdgeFeature = IfcEdgeFeature; + class IfcElectricApplianceType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 663422040; + } + } + IFC2X32.IfcElectricApplianceType = IfcElectricApplianceType; + class IfcElectricFlowStorageDeviceType extends IfcFlowStorageDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3277789161; + } + } + IFC2X32.IfcElectricFlowStorageDeviceType = IfcElectricFlowStorageDeviceType; + class IfcElectricGeneratorType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1534661035; + } + } + IFC2X32.IfcElectricGeneratorType = IfcElectricGeneratorType; + class IfcElectricHeaterType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1365060375; + } + } + IFC2X32.IfcElectricHeaterType = IfcElectricHeaterType; + class IfcElectricMotorType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1217240411; + } + } + IFC2X32.IfcElectricMotorType = IfcElectricMotorType; + class IfcElectricTimeControlType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 712377611; + } + } + IFC2X32.IfcElectricTimeControlType = IfcElectricTimeControlType; + class IfcElectricalCircuit extends IfcSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 1634875225; + } + } + IFC2X32.IfcElectricalCircuit = IfcElectricalCircuit; + class IfcElectricalElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 857184966; + } + } + IFC2X32.IfcElectricalElement = IfcElectricalElement; + class IfcEnergyConversionDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1658829314; + } + } + IFC2X32.IfcEnergyConversionDevice = IfcEnergyConversionDevice; + class IfcFanType extends IfcFlowMovingDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 346874300; + } + } + IFC2X32.IfcFanType = IfcFanType; + class IfcFilterType extends IfcFlowTreatmentDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1810631287; + } + } + IFC2X32.IfcFilterType = IfcFilterType; + class IfcFireSuppressionTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4222183408; + } + } + IFC2X32.IfcFireSuppressionTerminalType = IfcFireSuppressionTerminalType; + class IfcFlowController extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2058353004; + } + } + IFC2X32.IfcFlowController = IfcFlowController; + class IfcFlowFitting extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 4278956645; + } + } + IFC2X32.IfcFlowFitting = IfcFlowFitting; + class IfcFlowInstrumentType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4037862832; + } + } + IFC2X32.IfcFlowInstrumentType = IfcFlowInstrumentType; + class IfcFlowMovingDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3132237377; + } + } + IFC2X32.IfcFlowMovingDevice = IfcFlowMovingDevice; + class IfcFlowSegment extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 987401354; + } + } + IFC2X32.IfcFlowSegment = IfcFlowSegment; + class IfcFlowStorageDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 707683696; + } + } + IFC2X32.IfcFlowStorageDevice = IfcFlowStorageDevice; + class IfcFlowTerminal extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2223149337; + } + } + IFC2X32.IfcFlowTerminal = IfcFlowTerminal; + class IfcFlowTreatmentDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3508470533; + } + } + IFC2X32.IfcFlowTreatmentDevice = IfcFlowTreatmentDevice; + class IfcFooting extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 900683007; + } + } + IFC2X32.IfcFooting = IfcFooting; + class IfcMember extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1073191201; + } + } + IFC2X32.IfcMember = IfcMember; + class IfcPile extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType, ConstructionType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.ConstructionType = ConstructionType; + this.type = 1687234759; + } + } + IFC2X32.IfcPile = IfcPile; + class IfcPlate extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3171933400; + } + } + IFC2X32.IfcPlate = IfcPlate; + class IfcRailing extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2262370178; + } + } + IFC2X32.IfcRailing = IfcRailing; + class IfcRamp extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, ShapeType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.ShapeType = ShapeType; + this.type = 3024970846; + } + } + IFC2X32.IfcRamp = IfcRamp; + class IfcRampFlight extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3283111854; + } + } + IFC2X32.IfcRampFlight = IfcRampFlight; + class IfcRationalBezierCurve extends IfcBezierCurve { + constructor(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect, WeightsData) { + super(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect); + this.Degree = Degree; + this.ControlPointsList = ControlPointsList; + this.CurveForm = CurveForm; + this.ClosedCurve = ClosedCurve; + this.SelfIntersect = SelfIntersect; + this.WeightsData = WeightsData; + this.type = 3055160366; + } + } + IFC2X32.IfcRationalBezierCurve = IfcRationalBezierCurve; + class IfcReinforcingElement extends IfcBuildingElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.type = 3027567501; + } + } + IFC2X32.IfcReinforcingElement = IfcReinforcingElement; + class IfcReinforcingMesh extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, MeshLength, MeshWidth, LongitudinalBarNominalDiameter, TransverseBarNominalDiameter, LongitudinalBarCrossSectionArea, TransverseBarCrossSectionArea, LongitudinalBarSpacing, TransverseBarSpacing) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.MeshLength = MeshLength; + this.MeshWidth = MeshWidth; + this.LongitudinalBarNominalDiameter = LongitudinalBarNominalDiameter; + this.TransverseBarNominalDiameter = TransverseBarNominalDiameter; + this.LongitudinalBarCrossSectionArea = LongitudinalBarCrossSectionArea; + this.TransverseBarCrossSectionArea = TransverseBarCrossSectionArea; + this.LongitudinalBarSpacing = LongitudinalBarSpacing; + this.TransverseBarSpacing = TransverseBarSpacing; + this.type = 2320036040; + } + } + IFC2X32.IfcReinforcingMesh = IfcReinforcingMesh; + class IfcRoof extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, ShapeType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.ShapeType = ShapeType; + this.type = 2016517767; + } + } + IFC2X32.IfcRoof = IfcRoof; + class IfcRoundedEdgeFeature extends IfcEdgeFeature { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, FeatureLength, Radius) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, FeatureLength); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.FeatureLength = FeatureLength; + this.Radius = Radius; + this.type = 1376911519; + } + } + IFC2X32.IfcRoundedEdgeFeature = IfcRoundedEdgeFeature; + class IfcSensorType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1783015770; + } + } + IFC2X32.IfcSensorType = IfcSensorType; + class IfcSlab extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1529196076; + } + } + IFC2X32.IfcSlab = IfcSlab; + class IfcStair extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, ShapeType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.ShapeType = ShapeType; + this.type = 331165859; + } + } + IFC2X32.IfcStair = IfcStair; + class IfcStairFlight extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, NumberOfRiser, NumberOfTreads, RiserHeight, TreadLength) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.NumberOfRiser = NumberOfRiser; + this.NumberOfTreads = NumberOfTreads; + this.RiserHeight = RiserHeight; + this.TreadLength = TreadLength; + this.type = 4252922144; + } + } + IFC2X32.IfcStairFlight = IfcStairFlight; + class IfcStructuralAnalysisModel extends IfcSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, OrientationOf2DPlane, LoadedBy, HasResults) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.OrientationOf2DPlane = OrientationOf2DPlane; + this.LoadedBy = LoadedBy; + this.HasResults = HasResults; + this.type = 2515109513; + } + } + IFC2X32.IfcStructuralAnalysisModel = IfcStructuralAnalysisModel; + class IfcTendon extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, PredefinedType, NominalDiameter, CrossSectionArea, TensionForce, PreStress, FrictionCoefficient, AnchorageSlip, MinCurvatureRadius) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.PredefinedType = PredefinedType; + this.NominalDiameter = NominalDiameter; + this.CrossSectionArea = CrossSectionArea; + this.TensionForce = TensionForce; + this.PreStress = PreStress; + this.FrictionCoefficient = FrictionCoefficient; + this.AnchorageSlip = AnchorageSlip; + this.MinCurvatureRadius = MinCurvatureRadius; + this.type = 3824725483; + } + } + IFC2X32.IfcTendon = IfcTendon; + class IfcTendonAnchor extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.type = 2347447852; + } + } + IFC2X32.IfcTendonAnchor = IfcTendonAnchor; + class IfcVibrationIsolatorType extends IfcDiscreteAccessoryType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3313531582; + } + } + IFC2X32.IfcVibrationIsolatorType = IfcVibrationIsolatorType; + class IfcWall extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2391406946; + } + } + IFC2X32.IfcWall = IfcWall; + class IfcWallStandardCase extends IfcWall { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3512223829; + } + } + IFC2X32.IfcWallStandardCase = IfcWallStandardCase; + class IfcWindow extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, OverallHeight, OverallWidth) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.OverallHeight = OverallHeight; + this.OverallWidth = OverallWidth; + this.type = 3304561284; + } + } + IFC2X32.IfcWindow = IfcWindow; + class IfcActuatorType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2874132201; + } + } + IFC2X32.IfcActuatorType = IfcActuatorType; + class IfcAlarmType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3001207471; + } + } + IFC2X32.IfcAlarmType = IfcAlarmType; + class IfcBeam extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 753842376; + } + } + IFC2X32.IfcBeam = IfcBeam; + class IfcChamferEdgeFeature extends IfcEdgeFeature { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, FeatureLength, Width, Height) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, FeatureLength); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.FeatureLength = FeatureLength; + this.Width = Width; + this.Height = Height; + this.type = 2454782716; + } + } + IFC2X32.IfcChamferEdgeFeature = IfcChamferEdgeFeature; + class IfcControllerType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 578613899; + } + } + IFC2X32.IfcControllerType = IfcControllerType; + class IfcDistributionChamberElement extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1052013943; + } + } + IFC2X32.IfcDistributionChamberElement = IfcDistributionChamberElement; + class IfcDistributionControlElement extends IfcDistributionElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, ControlElementId) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.ControlElementId = ControlElementId; + this.type = 1062813311; + } + } + IFC2X32.IfcDistributionControlElement = IfcDistributionControlElement; + class IfcElectricDistributionPoint extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, DistributionPointFunction, UserDefinedFunction) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.DistributionPointFunction = DistributionPointFunction; + this.UserDefinedFunction = UserDefinedFunction; + this.type = 3700593921; + } + } + IFC2X32.IfcElectricDistributionPoint = IfcElectricDistributionPoint; + class IfcReinforcingBar extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, NominalDiameter, CrossSectionArea, BarLength, BarRole, BarSurface) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.NominalDiameter = NominalDiameter; + this.CrossSectionArea = CrossSectionArea; + this.BarLength = BarLength; + this.BarRole = BarRole; + this.BarSurface = BarSurface; + this.type = 979691226; + } + } + IFC2X32.IfcReinforcingBar = IfcReinforcingBar; +})(IFC2X3 || (IFC2X3 = {})); +TypeInitialisers[2] = { + 3699917729: (v) => new IFC4.IfcAbsorbedDoseMeasure(v), + 4182062534: (v) => new IFC4.IfcAccelerationMeasure(v), + 360377573: (v) => new IFC4.IfcAmountOfSubstanceMeasure(v), + 632304761: (v) => new IFC4.IfcAngularVelocityMeasure(v), + 3683503648: (v) => new IFC4.IfcArcIndex(v.map((x) => x.value)), + 1500781891: (v) => new IFC4.IfcAreaDensityMeasure(v), + 2650437152: (v) => new IFC4.IfcAreaMeasure(v), + 2314439260: (v) => new IFC4.IfcBinary(v), + 2735952531: (v) => new IFC4.IfcBoolean(v), + 1867003952: (v) => new IFC4.IfcBoxAlignment(v), + 1683019596: (v) => new IFC4.IfcCardinalPointReference(v), + 2991860651: (v) => new IFC4.IfcComplexNumber(v.map((x) => x.value)), + 3812528620: (v) => new IFC4.IfcCompoundPlaneAngleMeasure(v.map((x) => x.value)), + 3238673880: (v) => new IFC4.IfcContextDependentMeasure(v), + 1778710042: (v) => new IFC4.IfcCountMeasure(v), + 94842927: (v) => new IFC4.IfcCurvatureMeasure(v), + 937566702: (v) => new IFC4.IfcDate(v), + 2195413836: (v) => new IFC4.IfcDateTime(v), + 86635668: (v) => new IFC4.IfcDayInMonthNumber(v), + 3701338814: (v) => new IFC4.IfcDayInWeekNumber(v), + 1514641115: (v) => new IFC4.IfcDescriptiveMeasure(v), + 4134073009: (v) => new IFC4.IfcDimensionCount(v), + 524656162: (v) => new IFC4.IfcDoseEquivalentMeasure(v), + 2541165894: (v) => new IFC4.IfcDuration(v), + 69416015: (v) => new IFC4.IfcDynamicViscosityMeasure(v), + 1827137117: (v) => new IFC4.IfcElectricCapacitanceMeasure(v), + 3818826038: (v) => new IFC4.IfcElectricChargeMeasure(v), + 2093906313: (v) => new IFC4.IfcElectricConductanceMeasure(v), + 3790457270: (v) => new IFC4.IfcElectricCurrentMeasure(v), + 2951915441: (v) => new IFC4.IfcElectricResistanceMeasure(v), + 2506197118: (v) => new IFC4.IfcElectricVoltageMeasure(v), + 2078135608: (v) => new IFC4.IfcEnergyMeasure(v), + 1102727119: (v) => new IFC4.IfcFontStyle(v), + 2715512545: (v) => new IFC4.IfcFontVariant(v), + 2590844177: (v) => new IFC4.IfcFontWeight(v), + 1361398929: (v) => new IFC4.IfcForceMeasure(v), + 3044325142: (v) => new IFC4.IfcFrequencyMeasure(v), + 3064340077: (v) => new IFC4.IfcGloballyUniqueId(v), + 3113092358: (v) => new IFC4.IfcHeatFluxDensityMeasure(v), + 1158859006: (v) => new IFC4.IfcHeatingValueMeasure(v), + 983778844: (v) => new IFC4.IfcIdentifier(v), + 3358199106: (v) => new IFC4.IfcIlluminanceMeasure(v), + 2679005408: (v) => new IFC4.IfcInductanceMeasure(v), + 1939436016: (v) => new IFC4.IfcInteger(v), + 3809634241: (v) => new IFC4.IfcIntegerCountRateMeasure(v), + 3686016028: (v) => new IFC4.IfcIonConcentrationMeasure(v), + 3192672207: (v) => new IFC4.IfcIsothermalMoistureCapacityMeasure(v), + 2054016361: (v) => new IFC4.IfcKinematicViscosityMeasure(v), + 3258342251: (v) => new IFC4.IfcLabel(v), + 1275358634: (v) => new IFC4.IfcLanguageId(v), + 1243674935: (v) => new IFC4.IfcLengthMeasure(v), + 1774176899: (v) => new IFC4.IfcLineIndex(v.map((x) => x.value)), + 191860431: (v) => new IFC4.IfcLinearForceMeasure(v), + 2128979029: (v) => new IFC4.IfcLinearMomentMeasure(v), + 1307019551: (v) => new IFC4.IfcLinearStiffnessMeasure(v), + 3086160713: (v) => new IFC4.IfcLinearVelocityMeasure(v), + 503418787: (v) => new IFC4.IfcLogical(v), + 2095003142: (v) => new IFC4.IfcLuminousFluxMeasure(v), + 2755797622: (v) => new IFC4.IfcLuminousIntensityDistributionMeasure(v), + 151039812: (v) => new IFC4.IfcLuminousIntensityMeasure(v), + 286949696: (v) => new IFC4.IfcMagneticFluxDensityMeasure(v), + 2486716878: (v) => new IFC4.IfcMagneticFluxMeasure(v), + 1477762836: (v) => new IFC4.IfcMassDensityMeasure(v), + 4017473158: (v) => new IFC4.IfcMassFlowRateMeasure(v), + 3124614049: (v) => new IFC4.IfcMassMeasure(v), + 3531705166: (v) => new IFC4.IfcMassPerLengthMeasure(v), + 3341486342: (v) => new IFC4.IfcModulusOfElasticityMeasure(v), + 2173214787: (v) => new IFC4.IfcModulusOfLinearSubgradeReactionMeasure(v), + 1052454078: (v) => new IFC4.IfcModulusOfRotationalSubgradeReactionMeasure(v), + 1753493141: (v) => new IFC4.IfcModulusOfSubgradeReactionMeasure(v), + 3177669450: (v) => new IFC4.IfcMoistureDiffusivityMeasure(v), + 1648970520: (v) => new IFC4.IfcMolecularWeightMeasure(v), + 3114022597: (v) => new IFC4.IfcMomentOfInertiaMeasure(v), + 2615040989: (v) => new IFC4.IfcMonetaryMeasure(v), + 765770214: (v) => new IFC4.IfcMonthInYearNumber(v), + 525895558: (v) => new IFC4.IfcNonNegativeLengthMeasure(v), + 2095195183: (v) => new IFC4.IfcNormalisedRatioMeasure(v), + 2395907400: (v) => new IFC4.IfcNumericMeasure(v), + 929793134: (v) => new IFC4.IfcPHMeasure(v), + 2260317790: (v) => new IFC4.IfcParameterValue(v), + 2642773653: (v) => new IFC4.IfcPlanarForceMeasure(v), + 4042175685: (v) => new IFC4.IfcPlaneAngleMeasure(v), + 1790229001: (v) => new IFC4.IfcPositiveInteger(v), + 2815919920: (v) => new IFC4.IfcPositiveLengthMeasure(v), + 3054510233: (v) => new IFC4.IfcPositivePlaneAngleMeasure(v), + 1245737093: (v) => new IFC4.IfcPositiveRatioMeasure(v), + 1364037233: (v) => new IFC4.IfcPowerMeasure(v), + 2169031380: (v) => new IFC4.IfcPresentableText(v), + 3665567075: (v) => new IFC4.IfcPressureMeasure(v), + 2798247006: (v) => new IFC4.IfcPropertySetDefinitionSet(v.map((x) => x.value)), + 3972513137: (v) => new IFC4.IfcRadioActivityMeasure(v), + 96294661: (v) => new IFC4.IfcRatioMeasure(v), + 200335297: (v) => new IFC4.IfcReal(v), + 2133746277: (v) => new IFC4.IfcRotationalFrequencyMeasure(v), + 1755127002: (v) => new IFC4.IfcRotationalMassMeasure(v), + 3211557302: (v) => new IFC4.IfcRotationalStiffnessMeasure(v), + 3467162246: (v) => new IFC4.IfcSectionModulusMeasure(v), + 2190458107: (v) => new IFC4.IfcSectionalAreaIntegralMeasure(v), + 408310005: (v) => new IFC4.IfcShearModulusMeasure(v), + 3471399674: (v) => new IFC4.IfcSolidAngleMeasure(v), + 4157543285: (v) => new IFC4.IfcSoundPowerLevelMeasure(v), + 846465480: (v) => new IFC4.IfcSoundPowerMeasure(v), + 3457685358: (v) => new IFC4.IfcSoundPressureLevelMeasure(v), + 993287707: (v) => new IFC4.IfcSoundPressureMeasure(v), + 3477203348: (v) => new IFC4.IfcSpecificHeatCapacityMeasure(v), + 2757832317: (v) => new IFC4.IfcSpecularExponent(v), + 361837227: (v) => new IFC4.IfcSpecularRoughness(v), + 58845555: (v) => new IFC4.IfcTemperatureGradientMeasure(v), + 1209108979: (v) => new IFC4.IfcTemperatureRateOfChangeMeasure(v), + 2801250643: (v) => new IFC4.IfcText(v), + 1460886941: (v) => new IFC4.IfcTextAlignment(v), + 3490877962: (v) => new IFC4.IfcTextDecoration(v), + 603696268: (v) => new IFC4.IfcTextFontName(v), + 296282323: (v) => new IFC4.IfcTextTransformation(v), + 232962298: (v) => new IFC4.IfcThermalAdmittanceMeasure(v), + 2645777649: (v) => new IFC4.IfcThermalConductivityMeasure(v), + 2281867870: (v) => new IFC4.IfcThermalExpansionCoefficientMeasure(v), + 857959152: (v) => new IFC4.IfcThermalResistanceMeasure(v), + 2016195849: (v) => new IFC4.IfcThermalTransmittanceMeasure(v), + 743184107: (v) => new IFC4.IfcThermodynamicTemperatureMeasure(v), + 4075327185: (v) => new IFC4.IfcTime(v), + 2726807636: (v) => new IFC4.IfcTimeMeasure(v), + 2591213694: (v) => new IFC4.IfcTimeStamp(v), + 1278329552: (v) => new IFC4.IfcTorqueMeasure(v), + 950732822: (v) => new IFC4.IfcURIReference(v), + 3345633955: (v) => new IFC4.IfcVaporPermeabilityMeasure(v), + 3458127941: (v) => new IFC4.IfcVolumeMeasure(v), + 2593997549: (v) => new IFC4.IfcVolumetricFlowRateMeasure(v), + 51269191: (v) => new IFC4.IfcWarpingConstantMeasure(v), + 1718600412: (v) => new IFC4.IfcWarpingMomentMeasure(v) +}; +var IFC4; +((IFC42) => { + class IfcAbsorbedDoseMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCABSORBEDDOSEMEASURE"; + } + } + IFC42.IfcAbsorbedDoseMeasure = IfcAbsorbedDoseMeasure; + class IfcAccelerationMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCACCELERATIONMEASURE"; + } + } + IFC42.IfcAccelerationMeasure = IfcAccelerationMeasure; + class IfcAmountOfSubstanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCAMOUNTOFSUBSTANCEMEASURE"; + } + } + IFC42.IfcAmountOfSubstanceMeasure = IfcAmountOfSubstanceMeasure; + class IfcAngularVelocityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCANGULARVELOCITYMEASURE"; + } + } + IFC42.IfcAngularVelocityMeasure = IfcAngularVelocityMeasure; + class IfcArcIndex { + constructor(value) { + this.value = value; + this.type = 5; + } + } + IFC42.IfcArcIndex = IfcArcIndex; + class IfcAreaDensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCAREADENSITYMEASURE"; + } + } + IFC42.IfcAreaDensityMeasure = IfcAreaDensityMeasure; + class IfcAreaMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCAREAMEASURE"; + } + } + IFC42.IfcAreaMeasure = IfcAreaMeasure; + class IfcBinary extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCBINARY"; + } + } + IFC42.IfcBinary = IfcBinary; + class IfcBoolean { + constructor(v) { + this.type = 3; + this.name = "IFCBOOLEAN"; + this.value = v; + } + } + IFC42.IfcBoolean = IfcBoolean; + class IfcBoxAlignment { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCBOXALIGNMENT"; + } + } + IFC42.IfcBoxAlignment = IfcBoxAlignment; + class IfcCardinalPointReference extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCCARDINALPOINTREFERENCE"; + } + } + IFC42.IfcCardinalPointReference = IfcCardinalPointReference; + class IfcComplexNumber { + constructor(value) { + this.value = value; + this.type = 4; + } + } + IFC42.IfcComplexNumber = IfcComplexNumber; + class IfcCompoundPlaneAngleMeasure { + constructor(value) { + this.value = value; + this.type = 10; + } + } + IFC42.IfcCompoundPlaneAngleMeasure = IfcCompoundPlaneAngleMeasure; + class IfcContextDependentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCCONTEXTDEPENDENTMEASURE"; + } + } + IFC42.IfcContextDependentMeasure = IfcContextDependentMeasure; + class IfcCountMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCCOUNTMEASURE"; + } + } + IFC42.IfcCountMeasure = IfcCountMeasure; + class IfcCurvatureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCCURVATUREMEASURE"; + } + } + IFC42.IfcCurvatureMeasure = IfcCurvatureMeasure; + class IfcDate { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCDATE"; + } + } + IFC42.IfcDate = IfcDate; + class IfcDateTime { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCDATETIME"; + } + } + IFC42.IfcDateTime = IfcDateTime; + class IfcDayInMonthNumber extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCDAYINMONTHNUMBER"; + } + } + IFC42.IfcDayInMonthNumber = IfcDayInMonthNumber; + class IfcDayInWeekNumber extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCDAYINWEEKNUMBER"; + } + } + IFC42.IfcDayInWeekNumber = IfcDayInWeekNumber; + class IfcDescriptiveMeasure { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCDESCRIPTIVEMEASURE"; + } + } + IFC42.IfcDescriptiveMeasure = IfcDescriptiveMeasure; + class IfcDimensionCount extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCDIMENSIONCOUNT"; + } + } + IFC42.IfcDimensionCount = IfcDimensionCount; + class IfcDoseEquivalentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCDOSEEQUIVALENTMEASURE"; + } + } + IFC42.IfcDoseEquivalentMeasure = IfcDoseEquivalentMeasure; + class IfcDuration { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCDURATION"; + } + } + IFC42.IfcDuration = IfcDuration; + class IfcDynamicViscosityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCDYNAMICVISCOSITYMEASURE"; + } + } + IFC42.IfcDynamicViscosityMeasure = IfcDynamicViscosityMeasure; + class IfcElectricCapacitanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCAPACITANCEMEASURE"; + } + } + IFC42.IfcElectricCapacitanceMeasure = IfcElectricCapacitanceMeasure; + class IfcElectricChargeMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCHARGEMEASURE"; + } + } + IFC42.IfcElectricChargeMeasure = IfcElectricChargeMeasure; + class IfcElectricConductanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCONDUCTANCEMEASURE"; + } + } + IFC42.IfcElectricConductanceMeasure = IfcElectricConductanceMeasure; + class IfcElectricCurrentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCURRENTMEASURE"; + } + } + IFC42.IfcElectricCurrentMeasure = IfcElectricCurrentMeasure; + class IfcElectricResistanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICRESISTANCEMEASURE"; + } + } + IFC42.IfcElectricResistanceMeasure = IfcElectricResistanceMeasure; + class IfcElectricVoltageMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICVOLTAGEMEASURE"; + } + } + IFC42.IfcElectricVoltageMeasure = IfcElectricVoltageMeasure; + class IfcEnergyMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCENERGYMEASURE"; + } + } + IFC42.IfcEnergyMeasure = IfcEnergyMeasure; + class IfcFontStyle { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCFONTSTYLE"; + } + } + IFC42.IfcFontStyle = IfcFontStyle; + class IfcFontVariant { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCFONTVARIANT"; + } + } + IFC42.IfcFontVariant = IfcFontVariant; + class IfcFontWeight { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCFONTWEIGHT"; + } + } + IFC42.IfcFontWeight = IfcFontWeight; + class IfcForceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCFORCEMEASURE"; + } + } + IFC42.IfcForceMeasure = IfcForceMeasure; + class IfcFrequencyMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCFREQUENCYMEASURE"; + } + } + IFC42.IfcFrequencyMeasure = IfcFrequencyMeasure; + class IfcGloballyUniqueId { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCGLOBALLYUNIQUEID"; + } + } + IFC42.IfcGloballyUniqueId = IfcGloballyUniqueId; + class IfcHeatFluxDensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCHEATFLUXDENSITYMEASURE"; + } + } + IFC42.IfcHeatFluxDensityMeasure = IfcHeatFluxDensityMeasure; + class IfcHeatingValueMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCHEATINGVALUEMEASURE"; + } + } + IFC42.IfcHeatingValueMeasure = IfcHeatingValueMeasure; + class IfcIdentifier { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCIDENTIFIER"; + } + } + IFC42.IfcIdentifier = IfcIdentifier; + class IfcIlluminanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCILLUMINANCEMEASURE"; + } + } + IFC42.IfcIlluminanceMeasure = IfcIlluminanceMeasure; + class IfcInductanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCINDUCTANCEMEASURE"; + } + } + IFC42.IfcInductanceMeasure = IfcInductanceMeasure; + class IfcInteger extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCINTEGER"; + } + } + IFC42.IfcInteger = IfcInteger; + class IfcIntegerCountRateMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCINTEGERCOUNTRATEMEASURE"; + } + } + IFC42.IfcIntegerCountRateMeasure = IfcIntegerCountRateMeasure; + class IfcIonConcentrationMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCIONCONCENTRATIONMEASURE"; + } + } + IFC42.IfcIonConcentrationMeasure = IfcIonConcentrationMeasure; + class IfcIsothermalMoistureCapacityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCISOTHERMALMOISTURECAPACITYMEASURE"; + } + } + IFC42.IfcIsothermalMoistureCapacityMeasure = IfcIsothermalMoistureCapacityMeasure; + class IfcKinematicViscosityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCKINEMATICVISCOSITYMEASURE"; + } + } + IFC42.IfcKinematicViscosityMeasure = IfcKinematicViscosityMeasure; + class IfcLabel { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCLABEL"; + } + } + IFC42.IfcLabel = IfcLabel; + class IfcLanguageId { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCLANGUAGEID"; + } + } + IFC42.IfcLanguageId = IfcLanguageId; + class IfcLengthMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLENGTHMEASURE"; + } + } + IFC42.IfcLengthMeasure = IfcLengthMeasure; + class IfcLineIndex { + constructor(value) { + this.value = value; + this.type = 5; + } + } + IFC42.IfcLineIndex = IfcLineIndex; + class IfcLinearForceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARFORCEMEASURE"; + } + } + IFC42.IfcLinearForceMeasure = IfcLinearForceMeasure; + class IfcLinearMomentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARMOMENTMEASURE"; + } + } + IFC42.IfcLinearMomentMeasure = IfcLinearMomentMeasure; + class IfcLinearStiffnessMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARSTIFFNESSMEASURE"; + } + } + IFC42.IfcLinearStiffnessMeasure = IfcLinearStiffnessMeasure; + class IfcLinearVelocityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARVELOCITYMEASURE"; + } + } + IFC42.IfcLinearVelocityMeasure = IfcLinearVelocityMeasure; + class IfcLogical { + constructor(v) { + this.type = 3; + this.name = "IFCLOGICAL"; + this.value = v; + } + } + IFC42.IfcLogical = IfcLogical; + class IfcLuminousFluxMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLUMINOUSFLUXMEASURE"; + } + } + IFC42.IfcLuminousFluxMeasure = IfcLuminousFluxMeasure; + class IfcLuminousIntensityDistributionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE"; + } + } + IFC42.IfcLuminousIntensityDistributionMeasure = IfcLuminousIntensityDistributionMeasure; + class IfcLuminousIntensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLUMINOUSINTENSITYMEASURE"; + } + } + IFC42.IfcLuminousIntensityMeasure = IfcLuminousIntensityMeasure; + class IfcMagneticFluxDensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMAGNETICFLUXDENSITYMEASURE"; + } + } + IFC42.IfcMagneticFluxDensityMeasure = IfcMagneticFluxDensityMeasure; + class IfcMagneticFluxMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMAGNETICFLUXMEASURE"; + } + } + IFC42.IfcMagneticFluxMeasure = IfcMagneticFluxMeasure; + class IfcMassDensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSDENSITYMEASURE"; + } + } + IFC42.IfcMassDensityMeasure = IfcMassDensityMeasure; + class IfcMassFlowRateMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSFLOWRATEMEASURE"; + } + } + IFC42.IfcMassFlowRateMeasure = IfcMassFlowRateMeasure; + class IfcMassMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSMEASURE"; + } + } + IFC42.IfcMassMeasure = IfcMassMeasure; + class IfcMassPerLengthMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSPERLENGTHMEASURE"; + } + } + IFC42.IfcMassPerLengthMeasure = IfcMassPerLengthMeasure; + class IfcModulusOfElasticityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFELASTICITYMEASURE"; + } + } + IFC42.IfcModulusOfElasticityMeasure = IfcModulusOfElasticityMeasure; + class IfcModulusOfLinearSubgradeReactionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE"; + } + } + IFC42.IfcModulusOfLinearSubgradeReactionMeasure = IfcModulusOfLinearSubgradeReactionMeasure; + class IfcModulusOfRotationalSubgradeReactionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE"; + } + } + IFC42.IfcModulusOfRotationalSubgradeReactionMeasure = IfcModulusOfRotationalSubgradeReactionMeasure; + class IfcModulusOfSubgradeReactionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFSUBGRADEREACTIONMEASURE"; + } + } + IFC42.IfcModulusOfSubgradeReactionMeasure = IfcModulusOfSubgradeReactionMeasure; + class IfcMoistureDiffusivityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMOISTUREDIFFUSIVITYMEASURE"; + } + } + IFC42.IfcMoistureDiffusivityMeasure = IfcMoistureDiffusivityMeasure; + class IfcMolecularWeightMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMOLECULARWEIGHTMEASURE"; + } + } + IFC42.IfcMolecularWeightMeasure = IfcMolecularWeightMeasure; + class IfcMomentOfInertiaMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMOMENTOFINERTIAMEASURE"; + } + } + IFC42.IfcMomentOfInertiaMeasure = IfcMomentOfInertiaMeasure; + class IfcMonetaryMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMONETARYMEASURE"; + } + } + IFC42.IfcMonetaryMeasure = IfcMonetaryMeasure; + class IfcMonthInYearNumber extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCMONTHINYEARNUMBER"; + } + } + IFC42.IfcMonthInYearNumber = IfcMonthInYearNumber; + class IfcNonNegativeLengthMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCNONNEGATIVELENGTHMEASURE"; + } + } + IFC42.IfcNonNegativeLengthMeasure = IfcNonNegativeLengthMeasure; + class IfcNormalisedRatioMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCNORMALISEDRATIOMEASURE"; + } + } + IFC42.IfcNormalisedRatioMeasure = IfcNormalisedRatioMeasure; + class IfcNumericMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCNUMERICMEASURE"; + } + } + IFC42.IfcNumericMeasure = IfcNumericMeasure; + class IfcPHMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPHMEASURE"; + } + } + IFC42.IfcPHMeasure = IfcPHMeasure; + class IfcParameterValue extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPARAMETERVALUE"; + } + } + IFC42.IfcParameterValue = IfcParameterValue; + class IfcPlanarForceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPLANARFORCEMEASURE"; + } + } + IFC42.IfcPlanarForceMeasure = IfcPlanarForceMeasure; + class IfcPlaneAngleMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPLANEANGLEMEASURE"; + } + } + IFC42.IfcPlaneAngleMeasure = IfcPlaneAngleMeasure; + class IfcPositiveInteger extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCPOSITIVEINTEGER"; + } + } + IFC42.IfcPositiveInteger = IfcPositiveInteger; + class IfcPositiveLengthMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOSITIVELENGTHMEASURE"; + } + } + IFC42.IfcPositiveLengthMeasure = IfcPositiveLengthMeasure; + class IfcPositivePlaneAngleMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOSITIVEPLANEANGLEMEASURE"; + } + } + IFC42.IfcPositivePlaneAngleMeasure = IfcPositivePlaneAngleMeasure; + class IfcPositiveRatioMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOSITIVERATIOMEASURE"; + } + } + IFC42.IfcPositiveRatioMeasure = IfcPositiveRatioMeasure; + class IfcPowerMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOWERMEASURE"; + } + } + IFC42.IfcPowerMeasure = IfcPowerMeasure; + class IfcPresentableText { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCPRESENTABLETEXT"; + } + } + IFC42.IfcPresentableText = IfcPresentableText; + class IfcPressureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPRESSUREMEASURE"; + } + } + IFC42.IfcPressureMeasure = IfcPressureMeasure; + class IfcPropertySetDefinitionSet { + constructor(value) { + this.value = value; + this.type = 5; + } + } + IFC42.IfcPropertySetDefinitionSet = IfcPropertySetDefinitionSet; + class IfcRadioActivityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCRADIOACTIVITYMEASURE"; + } + } + IFC42.IfcRadioActivityMeasure = IfcRadioActivityMeasure; + class IfcRatioMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCRATIOMEASURE"; + } + } + IFC42.IfcRatioMeasure = IfcRatioMeasure; + class IfcReal extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCREAL"; + } + } + IFC42.IfcReal = IfcReal; + class IfcRotationalFrequencyMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCROTATIONALFREQUENCYMEASURE"; + } + } + IFC42.IfcRotationalFrequencyMeasure = IfcRotationalFrequencyMeasure; + class IfcRotationalMassMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCROTATIONALMASSMEASURE"; + } + } + IFC42.IfcRotationalMassMeasure = IfcRotationalMassMeasure; + class IfcRotationalStiffnessMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCROTATIONALSTIFFNESSMEASURE"; + } + } + IFC42.IfcRotationalStiffnessMeasure = IfcRotationalStiffnessMeasure; + class IfcSectionModulusMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSECTIONMODULUSMEASURE"; + } + } + IFC42.IfcSectionModulusMeasure = IfcSectionModulusMeasure; + class IfcSectionalAreaIntegralMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSECTIONALAREAINTEGRALMEASURE"; + } + } + IFC42.IfcSectionalAreaIntegralMeasure = IfcSectionalAreaIntegralMeasure; + class IfcShearModulusMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSHEARMODULUSMEASURE"; + } + } + IFC42.IfcShearModulusMeasure = IfcShearModulusMeasure; + class IfcSolidAngleMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOLIDANGLEMEASURE"; + } + } + IFC42.IfcSolidAngleMeasure = IfcSolidAngleMeasure; + class IfcSoundPowerLevelMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOUNDPOWERLEVELMEASURE"; + } + } + IFC42.IfcSoundPowerLevelMeasure = IfcSoundPowerLevelMeasure; + class IfcSoundPowerMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOUNDPOWERMEASURE"; + } + } + IFC42.IfcSoundPowerMeasure = IfcSoundPowerMeasure; + class IfcSoundPressureLevelMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOUNDPRESSURELEVELMEASURE"; + } + } + IFC42.IfcSoundPressureLevelMeasure = IfcSoundPressureLevelMeasure; + class IfcSoundPressureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOUNDPRESSUREMEASURE"; + } + } + IFC42.IfcSoundPressureMeasure = IfcSoundPressureMeasure; + class IfcSpecificHeatCapacityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSPECIFICHEATCAPACITYMEASURE"; + } + } + IFC42.IfcSpecificHeatCapacityMeasure = IfcSpecificHeatCapacityMeasure; + class IfcSpecularExponent extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSPECULAREXPONENT"; + } + } + IFC42.IfcSpecularExponent = IfcSpecularExponent; + class IfcSpecularRoughness extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSPECULARROUGHNESS"; + } + } + IFC42.IfcSpecularRoughness = IfcSpecularRoughness; + class IfcTemperatureGradientMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTEMPERATUREGRADIENTMEASURE"; + } + } + IFC42.IfcTemperatureGradientMeasure = IfcTemperatureGradientMeasure; + class IfcTemperatureRateOfChangeMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTEMPERATURERATEOFCHANGEMEASURE"; + } + } + IFC42.IfcTemperatureRateOfChangeMeasure = IfcTemperatureRateOfChangeMeasure; + class IfcText { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXT"; + } + } + IFC42.IfcText = IfcText; + class IfcTextAlignment { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTALIGNMENT"; + } + } + IFC42.IfcTextAlignment = IfcTextAlignment; + class IfcTextDecoration { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTDECORATION"; + } + } + IFC42.IfcTextDecoration = IfcTextDecoration; + class IfcTextFontName { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTFONTNAME"; + } + } + IFC42.IfcTextFontName = IfcTextFontName; + class IfcTextTransformation { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTTRANSFORMATION"; + } + } + IFC42.IfcTextTransformation = IfcTextTransformation; + class IfcThermalAdmittanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALADMITTANCEMEASURE"; + } + } + IFC42.IfcThermalAdmittanceMeasure = IfcThermalAdmittanceMeasure; + class IfcThermalConductivityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALCONDUCTIVITYMEASURE"; + } + } + IFC42.IfcThermalConductivityMeasure = IfcThermalConductivityMeasure; + class IfcThermalExpansionCoefficientMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALEXPANSIONCOEFFICIENTMEASURE"; + } + } + IFC42.IfcThermalExpansionCoefficientMeasure = IfcThermalExpansionCoefficientMeasure; + class IfcThermalResistanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALRESISTANCEMEASURE"; + } + } + IFC42.IfcThermalResistanceMeasure = IfcThermalResistanceMeasure; + class IfcThermalTransmittanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALTRANSMITTANCEMEASURE"; + } + } + IFC42.IfcThermalTransmittanceMeasure = IfcThermalTransmittanceMeasure; + class IfcThermodynamicTemperatureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMODYNAMICTEMPERATUREMEASURE"; + } + } + IFC42.IfcThermodynamicTemperatureMeasure = IfcThermodynamicTemperatureMeasure; + class IfcTime { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTIME"; + } + } + IFC42.IfcTime = IfcTime; + class IfcTimeMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTIMEMEASURE"; + } + } + IFC42.IfcTimeMeasure = IfcTimeMeasure; + class IfcTimeStamp extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCTIMESTAMP"; + } + } + IFC42.IfcTimeStamp = IfcTimeStamp; + class IfcTorqueMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTORQUEMEASURE"; + } + } + IFC42.IfcTorqueMeasure = IfcTorqueMeasure; + class IfcURIReference { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCURIREFERENCE"; + } + } + IFC42.IfcURIReference = IfcURIReference; + class IfcVaporPermeabilityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCVAPORPERMEABILITYMEASURE"; + } + } + IFC42.IfcVaporPermeabilityMeasure = IfcVaporPermeabilityMeasure; + class IfcVolumeMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCVOLUMEMEASURE"; + } + } + IFC42.IfcVolumeMeasure = IfcVolumeMeasure; + class IfcVolumetricFlowRateMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCVOLUMETRICFLOWRATEMEASURE"; + } + } + IFC42.IfcVolumetricFlowRateMeasure = IfcVolumetricFlowRateMeasure; + class IfcWarpingConstantMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCWARPINGCONSTANTMEASURE"; + } + } + IFC42.IfcWarpingConstantMeasure = IfcWarpingConstantMeasure; + class IfcWarpingMomentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCWARPINGMOMENTMEASURE"; + } + } + IFC42.IfcWarpingMomentMeasure = IfcWarpingMomentMeasure; + const _IfcActionRequestTypeEnum = class _IfcActionRequestTypeEnum { + }; + _IfcActionRequestTypeEnum.EMAIL = { type: 3, value: "EMAIL" }; + _IfcActionRequestTypeEnum.FAX = { type: 3, value: "FAX" }; + _IfcActionRequestTypeEnum.PHONE = { type: 3, value: "PHONE" }; + _IfcActionRequestTypeEnum.POST = { type: 3, value: "POST" }; + _IfcActionRequestTypeEnum.VERBAL = { type: 3, value: "VERBAL" }; + _IfcActionRequestTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcActionRequestTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcActionRequestTypeEnum = _IfcActionRequestTypeEnum; + IFC42.IfcActionRequestTypeEnum = IfcActionRequestTypeEnum; + const _IfcActionSourceTypeEnum = class _IfcActionSourceTypeEnum { + }; + _IfcActionSourceTypeEnum.DEAD_LOAD_G = { type: 3, value: "DEAD_LOAD_G" }; + _IfcActionSourceTypeEnum.COMPLETION_G1 = { type: 3, value: "COMPLETION_G1" }; + _IfcActionSourceTypeEnum.LIVE_LOAD_Q = { type: 3, value: "LIVE_LOAD_Q" }; + _IfcActionSourceTypeEnum.SNOW_S = { type: 3, value: "SNOW_S" }; + _IfcActionSourceTypeEnum.WIND_W = { type: 3, value: "WIND_W" }; + _IfcActionSourceTypeEnum.PRESTRESSING_P = { type: 3, value: "PRESTRESSING_P" }; + _IfcActionSourceTypeEnum.SETTLEMENT_U = { type: 3, value: "SETTLEMENT_U" }; + _IfcActionSourceTypeEnum.TEMPERATURE_T = { type: 3, value: "TEMPERATURE_T" }; + _IfcActionSourceTypeEnum.EARTHQUAKE_E = { type: 3, value: "EARTHQUAKE_E" }; + _IfcActionSourceTypeEnum.FIRE = { type: 3, value: "FIRE" }; + _IfcActionSourceTypeEnum.IMPULSE = { type: 3, value: "IMPULSE" }; + _IfcActionSourceTypeEnum.IMPACT = { type: 3, value: "IMPACT" }; + _IfcActionSourceTypeEnum.TRANSPORT = { type: 3, value: "TRANSPORT" }; + _IfcActionSourceTypeEnum.ERECTION = { type: 3, value: "ERECTION" }; + _IfcActionSourceTypeEnum.PROPPING = { type: 3, value: "PROPPING" }; + _IfcActionSourceTypeEnum.SYSTEM_IMPERFECTION = { type: 3, value: "SYSTEM_IMPERFECTION" }; + _IfcActionSourceTypeEnum.SHRINKAGE = { type: 3, value: "SHRINKAGE" }; + _IfcActionSourceTypeEnum.CREEP = { type: 3, value: "CREEP" }; + _IfcActionSourceTypeEnum.LACK_OF_FIT = { type: 3, value: "LACK_OF_FIT" }; + _IfcActionSourceTypeEnum.BUOYANCY = { type: 3, value: "BUOYANCY" }; + _IfcActionSourceTypeEnum.ICE = { type: 3, value: "ICE" }; + _IfcActionSourceTypeEnum.CURRENT = { type: 3, value: "CURRENT" }; + _IfcActionSourceTypeEnum.WAVE = { type: 3, value: "WAVE" }; + _IfcActionSourceTypeEnum.RAIN = { type: 3, value: "RAIN" }; + _IfcActionSourceTypeEnum.BRAKES = { type: 3, value: "BRAKES" }; + _IfcActionSourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcActionSourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcActionSourceTypeEnum = _IfcActionSourceTypeEnum; + IFC42.IfcActionSourceTypeEnum = IfcActionSourceTypeEnum; + const _IfcActionTypeEnum = class _IfcActionTypeEnum { + }; + _IfcActionTypeEnum.PERMANENT_G = { type: 3, value: "PERMANENT_G" }; + _IfcActionTypeEnum.VARIABLE_Q = { type: 3, value: "VARIABLE_Q" }; + _IfcActionTypeEnum.EXTRAORDINARY_A = { type: 3, value: "EXTRAORDINARY_A" }; + _IfcActionTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcActionTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcActionTypeEnum = _IfcActionTypeEnum; + IFC42.IfcActionTypeEnum = IfcActionTypeEnum; + const _IfcActuatorTypeEnum = class _IfcActuatorTypeEnum { + }; + _IfcActuatorTypeEnum.ELECTRICACTUATOR = { type: 3, value: "ELECTRICACTUATOR" }; + _IfcActuatorTypeEnum.HANDOPERATEDACTUATOR = { type: 3, value: "HANDOPERATEDACTUATOR" }; + _IfcActuatorTypeEnum.HYDRAULICACTUATOR = { type: 3, value: "HYDRAULICACTUATOR" }; + _IfcActuatorTypeEnum.PNEUMATICACTUATOR = { type: 3, value: "PNEUMATICACTUATOR" }; + _IfcActuatorTypeEnum.THERMOSTATICACTUATOR = { type: 3, value: "THERMOSTATICACTUATOR" }; + _IfcActuatorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcActuatorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcActuatorTypeEnum = _IfcActuatorTypeEnum; + IFC42.IfcActuatorTypeEnum = IfcActuatorTypeEnum; + const _IfcAddressTypeEnum = class _IfcAddressTypeEnum { + }; + _IfcAddressTypeEnum.OFFICE = { type: 3, value: "OFFICE" }; + _IfcAddressTypeEnum.SITE = { type: 3, value: "SITE" }; + _IfcAddressTypeEnum.HOME = { type: 3, value: "HOME" }; + _IfcAddressTypeEnum.DISTRIBUTIONPOINT = { type: 3, value: "DISTRIBUTIONPOINT" }; + _IfcAddressTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcAddressTypeEnum = _IfcAddressTypeEnum; + IFC42.IfcAddressTypeEnum = IfcAddressTypeEnum; + const _IfcAirTerminalBoxTypeEnum = class _IfcAirTerminalBoxTypeEnum { + }; + _IfcAirTerminalBoxTypeEnum.CONSTANTFLOW = { type: 3, value: "CONSTANTFLOW" }; + _IfcAirTerminalBoxTypeEnum.VARIABLEFLOWPRESSUREDEPENDANT = { type: 3, value: "VARIABLEFLOWPRESSUREDEPENDANT" }; + _IfcAirTerminalBoxTypeEnum.VARIABLEFLOWPRESSUREINDEPENDANT = { type: 3, value: "VARIABLEFLOWPRESSUREINDEPENDANT" }; + _IfcAirTerminalBoxTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAirTerminalBoxTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAirTerminalBoxTypeEnum = _IfcAirTerminalBoxTypeEnum; + IFC42.IfcAirTerminalBoxTypeEnum = IfcAirTerminalBoxTypeEnum; + const _IfcAirTerminalTypeEnum = class _IfcAirTerminalTypeEnum { + }; + _IfcAirTerminalTypeEnum.DIFFUSER = { type: 3, value: "DIFFUSER" }; + _IfcAirTerminalTypeEnum.GRILLE = { type: 3, value: "GRILLE" }; + _IfcAirTerminalTypeEnum.LOUVRE = { type: 3, value: "LOUVRE" }; + _IfcAirTerminalTypeEnum.REGISTER = { type: 3, value: "REGISTER" }; + _IfcAirTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAirTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAirTerminalTypeEnum = _IfcAirTerminalTypeEnum; + IFC42.IfcAirTerminalTypeEnum = IfcAirTerminalTypeEnum; + const _IfcAirToAirHeatRecoveryTypeEnum = class _IfcAirToAirHeatRecoveryTypeEnum { + }; + _IfcAirToAirHeatRecoveryTypeEnum.FIXEDPLATECOUNTERFLOWEXCHANGER = { type: 3, value: "FIXEDPLATECOUNTERFLOWEXCHANGER" }; + _IfcAirToAirHeatRecoveryTypeEnum.FIXEDPLATECROSSFLOWEXCHANGER = { type: 3, value: "FIXEDPLATECROSSFLOWEXCHANGER" }; + _IfcAirToAirHeatRecoveryTypeEnum.FIXEDPLATEPARALLELFLOWEXCHANGER = { type: 3, value: "FIXEDPLATEPARALLELFLOWEXCHANGER" }; + _IfcAirToAirHeatRecoveryTypeEnum.ROTARYWHEEL = { type: 3, value: "ROTARYWHEEL" }; + _IfcAirToAirHeatRecoveryTypeEnum.RUNAROUNDCOILLOOP = { type: 3, value: "RUNAROUNDCOILLOOP" }; + _IfcAirToAirHeatRecoveryTypeEnum.HEATPIPE = { type: 3, value: "HEATPIPE" }; + _IfcAirToAirHeatRecoveryTypeEnum.TWINTOWERENTHALPYRECOVERYLOOPS = { type: 3, value: "TWINTOWERENTHALPYRECOVERYLOOPS" }; + _IfcAirToAirHeatRecoveryTypeEnum.THERMOSIPHONSEALEDTUBEHEATEXCHANGERS = { type: 3, value: "THERMOSIPHONSEALEDTUBEHEATEXCHANGERS" }; + _IfcAirToAirHeatRecoveryTypeEnum.THERMOSIPHONCOILTYPEHEATEXCHANGERS = { type: 3, value: "THERMOSIPHONCOILTYPEHEATEXCHANGERS" }; + _IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAirToAirHeatRecoveryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAirToAirHeatRecoveryTypeEnum = _IfcAirToAirHeatRecoveryTypeEnum; + IFC42.IfcAirToAirHeatRecoveryTypeEnum = IfcAirToAirHeatRecoveryTypeEnum; + const _IfcAlarmTypeEnum = class _IfcAlarmTypeEnum { + }; + _IfcAlarmTypeEnum.BELL = { type: 3, value: "BELL" }; + _IfcAlarmTypeEnum.BREAKGLASSBUTTON = { type: 3, value: "BREAKGLASSBUTTON" }; + _IfcAlarmTypeEnum.LIGHT = { type: 3, value: "LIGHT" }; + _IfcAlarmTypeEnum.MANUALPULLBOX = { type: 3, value: "MANUALPULLBOX" }; + _IfcAlarmTypeEnum.SIREN = { type: 3, value: "SIREN" }; + _IfcAlarmTypeEnum.WHISTLE = { type: 3, value: "WHISTLE" }; + _IfcAlarmTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAlarmTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAlarmTypeEnum = _IfcAlarmTypeEnum; + IFC42.IfcAlarmTypeEnum = IfcAlarmTypeEnum; + const _IfcAnalysisModelTypeEnum = class _IfcAnalysisModelTypeEnum { + }; + _IfcAnalysisModelTypeEnum.IN_PLANE_LOADING_2D = { type: 3, value: "IN_PLANE_LOADING_2D" }; + _IfcAnalysisModelTypeEnum.OUT_PLANE_LOADING_2D = { type: 3, value: "OUT_PLANE_LOADING_2D" }; + _IfcAnalysisModelTypeEnum.LOADING_3D = { type: 3, value: "LOADING_3D" }; + _IfcAnalysisModelTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAnalysisModelTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAnalysisModelTypeEnum = _IfcAnalysisModelTypeEnum; + IFC42.IfcAnalysisModelTypeEnum = IfcAnalysisModelTypeEnum; + const _IfcAnalysisTheoryTypeEnum = class _IfcAnalysisTheoryTypeEnum { + }; + _IfcAnalysisTheoryTypeEnum.FIRST_ORDER_THEORY = { type: 3, value: "FIRST_ORDER_THEORY" }; + _IfcAnalysisTheoryTypeEnum.SECOND_ORDER_THEORY = { type: 3, value: "SECOND_ORDER_THEORY" }; + _IfcAnalysisTheoryTypeEnum.THIRD_ORDER_THEORY = { type: 3, value: "THIRD_ORDER_THEORY" }; + _IfcAnalysisTheoryTypeEnum.FULL_NONLINEAR_THEORY = { type: 3, value: "FULL_NONLINEAR_THEORY" }; + _IfcAnalysisTheoryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAnalysisTheoryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAnalysisTheoryTypeEnum = _IfcAnalysisTheoryTypeEnum; + IFC42.IfcAnalysisTheoryTypeEnum = IfcAnalysisTheoryTypeEnum; + const _IfcArithmeticOperatorEnum = class _IfcArithmeticOperatorEnum { + }; + _IfcArithmeticOperatorEnum.ADD = { type: 3, value: "ADD" }; + _IfcArithmeticOperatorEnum.DIVIDE = { type: 3, value: "DIVIDE" }; + _IfcArithmeticOperatorEnum.MULTIPLY = { type: 3, value: "MULTIPLY" }; + _IfcArithmeticOperatorEnum.SUBTRACT = { type: 3, value: "SUBTRACT" }; + let IfcArithmeticOperatorEnum = _IfcArithmeticOperatorEnum; + IFC42.IfcArithmeticOperatorEnum = IfcArithmeticOperatorEnum; + const _IfcAssemblyPlaceEnum = class _IfcAssemblyPlaceEnum { + }; + _IfcAssemblyPlaceEnum.SITE = { type: 3, value: "SITE" }; + _IfcAssemblyPlaceEnum.FACTORY = { type: 3, value: "FACTORY" }; + _IfcAssemblyPlaceEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAssemblyPlaceEnum = _IfcAssemblyPlaceEnum; + IFC42.IfcAssemblyPlaceEnum = IfcAssemblyPlaceEnum; + const _IfcAudioVisualApplianceTypeEnum = class _IfcAudioVisualApplianceTypeEnum { + }; + _IfcAudioVisualApplianceTypeEnum.AMPLIFIER = { type: 3, value: "AMPLIFIER" }; + _IfcAudioVisualApplianceTypeEnum.CAMERA = { type: 3, value: "CAMERA" }; + _IfcAudioVisualApplianceTypeEnum.DISPLAY = { type: 3, value: "DISPLAY" }; + _IfcAudioVisualApplianceTypeEnum.MICROPHONE = { type: 3, value: "MICROPHONE" }; + _IfcAudioVisualApplianceTypeEnum.PLAYER = { type: 3, value: "PLAYER" }; + _IfcAudioVisualApplianceTypeEnum.PROJECTOR = { type: 3, value: "PROJECTOR" }; + _IfcAudioVisualApplianceTypeEnum.RECEIVER = { type: 3, value: "RECEIVER" }; + _IfcAudioVisualApplianceTypeEnum.SPEAKER = { type: 3, value: "SPEAKER" }; + _IfcAudioVisualApplianceTypeEnum.SWITCHER = { type: 3, value: "SWITCHER" }; + _IfcAudioVisualApplianceTypeEnum.TELEPHONE = { type: 3, value: "TELEPHONE" }; + _IfcAudioVisualApplianceTypeEnum.TUNER = { type: 3, value: "TUNER" }; + _IfcAudioVisualApplianceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAudioVisualApplianceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAudioVisualApplianceTypeEnum = _IfcAudioVisualApplianceTypeEnum; + IFC42.IfcAudioVisualApplianceTypeEnum = IfcAudioVisualApplianceTypeEnum; + const _IfcBSplineCurveForm = class _IfcBSplineCurveForm { + }; + _IfcBSplineCurveForm.POLYLINE_FORM = { type: 3, value: "POLYLINE_FORM" }; + _IfcBSplineCurveForm.CIRCULAR_ARC = { type: 3, value: "CIRCULAR_ARC" }; + _IfcBSplineCurveForm.ELLIPTIC_ARC = { type: 3, value: "ELLIPTIC_ARC" }; + _IfcBSplineCurveForm.PARABOLIC_ARC = { type: 3, value: "PARABOLIC_ARC" }; + _IfcBSplineCurveForm.HYPERBOLIC_ARC = { type: 3, value: "HYPERBOLIC_ARC" }; + _IfcBSplineCurveForm.UNSPECIFIED = { type: 3, value: "UNSPECIFIED" }; + let IfcBSplineCurveForm = _IfcBSplineCurveForm; + IFC42.IfcBSplineCurveForm = IfcBSplineCurveForm; + const _IfcBSplineSurfaceForm = class _IfcBSplineSurfaceForm { + }; + _IfcBSplineSurfaceForm.PLANE_SURF = { type: 3, value: "PLANE_SURF" }; + _IfcBSplineSurfaceForm.CYLINDRICAL_SURF = { type: 3, value: "CYLINDRICAL_SURF" }; + _IfcBSplineSurfaceForm.CONICAL_SURF = { type: 3, value: "CONICAL_SURF" }; + _IfcBSplineSurfaceForm.SPHERICAL_SURF = { type: 3, value: "SPHERICAL_SURF" }; + _IfcBSplineSurfaceForm.TOROIDAL_SURF = { type: 3, value: "TOROIDAL_SURF" }; + _IfcBSplineSurfaceForm.SURF_OF_REVOLUTION = { type: 3, value: "SURF_OF_REVOLUTION" }; + _IfcBSplineSurfaceForm.RULED_SURF = { type: 3, value: "RULED_SURF" }; + _IfcBSplineSurfaceForm.GENERALISED_CONE = { type: 3, value: "GENERALISED_CONE" }; + _IfcBSplineSurfaceForm.QUADRIC_SURF = { type: 3, value: "QUADRIC_SURF" }; + _IfcBSplineSurfaceForm.SURF_OF_LINEAR_EXTRUSION = { type: 3, value: "SURF_OF_LINEAR_EXTRUSION" }; + _IfcBSplineSurfaceForm.UNSPECIFIED = { type: 3, value: "UNSPECIFIED" }; + let IfcBSplineSurfaceForm = _IfcBSplineSurfaceForm; + IFC42.IfcBSplineSurfaceForm = IfcBSplineSurfaceForm; + const _IfcBeamTypeEnum = class _IfcBeamTypeEnum { + }; + _IfcBeamTypeEnum.BEAM = { type: 3, value: "BEAM" }; + _IfcBeamTypeEnum.JOIST = { type: 3, value: "JOIST" }; + _IfcBeamTypeEnum.HOLLOWCORE = { type: 3, value: "HOLLOWCORE" }; + _IfcBeamTypeEnum.LINTEL = { type: 3, value: "LINTEL" }; + _IfcBeamTypeEnum.SPANDREL = { type: 3, value: "SPANDREL" }; + _IfcBeamTypeEnum.T_BEAM = { type: 3, value: "T_BEAM" }; + _IfcBeamTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBeamTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBeamTypeEnum = _IfcBeamTypeEnum; + IFC42.IfcBeamTypeEnum = IfcBeamTypeEnum; + const _IfcBenchmarkEnum = class _IfcBenchmarkEnum { + }; + _IfcBenchmarkEnum.GREATERTHAN = { type: 3, value: "GREATERTHAN" }; + _IfcBenchmarkEnum.GREATERTHANOREQUALTO = { type: 3, value: "GREATERTHANOREQUALTO" }; + _IfcBenchmarkEnum.LESSTHAN = { type: 3, value: "LESSTHAN" }; + _IfcBenchmarkEnum.LESSTHANOREQUALTO = { type: 3, value: "LESSTHANOREQUALTO" }; + _IfcBenchmarkEnum.EQUALTO = { type: 3, value: "EQUALTO" }; + _IfcBenchmarkEnum.NOTEQUALTO = { type: 3, value: "NOTEQUALTO" }; + _IfcBenchmarkEnum.INCLUDES = { type: 3, value: "INCLUDES" }; + _IfcBenchmarkEnum.NOTINCLUDES = { type: 3, value: "NOTINCLUDES" }; + _IfcBenchmarkEnum.INCLUDEDIN = { type: 3, value: "INCLUDEDIN" }; + _IfcBenchmarkEnum.NOTINCLUDEDIN = { type: 3, value: "NOTINCLUDEDIN" }; + let IfcBenchmarkEnum = _IfcBenchmarkEnum; + IFC42.IfcBenchmarkEnum = IfcBenchmarkEnum; + const _IfcBoilerTypeEnum = class _IfcBoilerTypeEnum { + }; + _IfcBoilerTypeEnum.WATER = { type: 3, value: "WATER" }; + _IfcBoilerTypeEnum.STEAM = { type: 3, value: "STEAM" }; + _IfcBoilerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBoilerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBoilerTypeEnum = _IfcBoilerTypeEnum; + IFC42.IfcBoilerTypeEnum = IfcBoilerTypeEnum; + const _IfcBooleanOperator = class _IfcBooleanOperator { + }; + _IfcBooleanOperator.UNION = { type: 3, value: "UNION" }; + _IfcBooleanOperator.INTERSECTION = { type: 3, value: "INTERSECTION" }; + _IfcBooleanOperator.DIFFERENCE = { type: 3, value: "DIFFERENCE" }; + let IfcBooleanOperator = _IfcBooleanOperator; + IFC42.IfcBooleanOperator = IfcBooleanOperator; + const _IfcBuildingElementPartTypeEnum = class _IfcBuildingElementPartTypeEnum { + }; + _IfcBuildingElementPartTypeEnum.INSULATION = { type: 3, value: "INSULATION" }; + _IfcBuildingElementPartTypeEnum.PRECASTPANEL = { type: 3, value: "PRECASTPANEL" }; + _IfcBuildingElementPartTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBuildingElementPartTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBuildingElementPartTypeEnum = _IfcBuildingElementPartTypeEnum; + IFC42.IfcBuildingElementPartTypeEnum = IfcBuildingElementPartTypeEnum; + const _IfcBuildingElementProxyTypeEnum = class _IfcBuildingElementProxyTypeEnum { + }; + _IfcBuildingElementProxyTypeEnum.COMPLEX = { type: 3, value: "COMPLEX" }; + _IfcBuildingElementProxyTypeEnum.ELEMENT = { type: 3, value: "ELEMENT" }; + _IfcBuildingElementProxyTypeEnum.PARTIAL = { type: 3, value: "PARTIAL" }; + _IfcBuildingElementProxyTypeEnum.PROVISIONFORVOID = { type: 3, value: "PROVISIONFORVOID" }; + _IfcBuildingElementProxyTypeEnum.PROVISIONFORSPACE = { type: 3, value: "PROVISIONFORSPACE" }; + _IfcBuildingElementProxyTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBuildingElementProxyTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBuildingElementProxyTypeEnum = _IfcBuildingElementProxyTypeEnum; + IFC42.IfcBuildingElementProxyTypeEnum = IfcBuildingElementProxyTypeEnum; + const _IfcBuildingSystemTypeEnum = class _IfcBuildingSystemTypeEnum { + }; + _IfcBuildingSystemTypeEnum.FENESTRATION = { type: 3, value: "FENESTRATION" }; + _IfcBuildingSystemTypeEnum.FOUNDATION = { type: 3, value: "FOUNDATION" }; + _IfcBuildingSystemTypeEnum.LOADBEARING = { type: 3, value: "LOADBEARING" }; + _IfcBuildingSystemTypeEnum.OUTERSHELL = { type: 3, value: "OUTERSHELL" }; + _IfcBuildingSystemTypeEnum.SHADING = { type: 3, value: "SHADING" }; + _IfcBuildingSystemTypeEnum.TRANSPORT = { type: 3, value: "TRANSPORT" }; + _IfcBuildingSystemTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBuildingSystemTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBuildingSystemTypeEnum = _IfcBuildingSystemTypeEnum; + IFC42.IfcBuildingSystemTypeEnum = IfcBuildingSystemTypeEnum; + const _IfcBurnerTypeEnum = class _IfcBurnerTypeEnum { + }; + _IfcBurnerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBurnerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBurnerTypeEnum = _IfcBurnerTypeEnum; + IFC42.IfcBurnerTypeEnum = IfcBurnerTypeEnum; + const _IfcCableCarrierFittingTypeEnum = class _IfcCableCarrierFittingTypeEnum { + }; + _IfcCableCarrierFittingTypeEnum.BEND = { type: 3, value: "BEND" }; + _IfcCableCarrierFittingTypeEnum.CROSS = { type: 3, value: "CROSS" }; + _IfcCableCarrierFittingTypeEnum.REDUCER = { type: 3, value: "REDUCER" }; + _IfcCableCarrierFittingTypeEnum.TEE = { type: 3, value: "TEE" }; + _IfcCableCarrierFittingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCableCarrierFittingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCableCarrierFittingTypeEnum = _IfcCableCarrierFittingTypeEnum; + IFC42.IfcCableCarrierFittingTypeEnum = IfcCableCarrierFittingTypeEnum; + const _IfcCableCarrierSegmentTypeEnum = class _IfcCableCarrierSegmentTypeEnum { + }; + _IfcCableCarrierSegmentTypeEnum.CABLELADDERSEGMENT = { type: 3, value: "CABLELADDERSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.CABLETRAYSEGMENT = { type: 3, value: "CABLETRAYSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.CABLETRUNKINGSEGMENT = { type: 3, value: "CABLETRUNKINGSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.CONDUITSEGMENT = { type: 3, value: "CONDUITSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCableCarrierSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCableCarrierSegmentTypeEnum = _IfcCableCarrierSegmentTypeEnum; + IFC42.IfcCableCarrierSegmentTypeEnum = IfcCableCarrierSegmentTypeEnum; + const _IfcCableFittingTypeEnum = class _IfcCableFittingTypeEnum { + }; + _IfcCableFittingTypeEnum.CONNECTOR = { type: 3, value: "CONNECTOR" }; + _IfcCableFittingTypeEnum.ENTRY = { type: 3, value: "ENTRY" }; + _IfcCableFittingTypeEnum.EXIT = { type: 3, value: "EXIT" }; + _IfcCableFittingTypeEnum.JUNCTION = { type: 3, value: "JUNCTION" }; + _IfcCableFittingTypeEnum.TRANSITION = { type: 3, value: "TRANSITION" }; + _IfcCableFittingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCableFittingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCableFittingTypeEnum = _IfcCableFittingTypeEnum; + IFC42.IfcCableFittingTypeEnum = IfcCableFittingTypeEnum; + const _IfcCableSegmentTypeEnum = class _IfcCableSegmentTypeEnum { + }; + _IfcCableSegmentTypeEnum.BUSBARSEGMENT = { type: 3, value: "BUSBARSEGMENT" }; + _IfcCableSegmentTypeEnum.CABLESEGMENT = { type: 3, value: "CABLESEGMENT" }; + _IfcCableSegmentTypeEnum.CONDUCTORSEGMENT = { type: 3, value: "CONDUCTORSEGMENT" }; + _IfcCableSegmentTypeEnum.CORESEGMENT = { type: 3, value: "CORESEGMENT" }; + _IfcCableSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCableSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCableSegmentTypeEnum = _IfcCableSegmentTypeEnum; + IFC42.IfcCableSegmentTypeEnum = IfcCableSegmentTypeEnum; + const _IfcChangeActionEnum = class _IfcChangeActionEnum { + }; + _IfcChangeActionEnum.NOCHANGE = { type: 3, value: "NOCHANGE" }; + _IfcChangeActionEnum.MODIFIED = { type: 3, value: "MODIFIED" }; + _IfcChangeActionEnum.ADDED = { type: 3, value: "ADDED" }; + _IfcChangeActionEnum.DELETED = { type: 3, value: "DELETED" }; + _IfcChangeActionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcChangeActionEnum = _IfcChangeActionEnum; + IFC42.IfcChangeActionEnum = IfcChangeActionEnum; + const _IfcChillerTypeEnum = class _IfcChillerTypeEnum { + }; + _IfcChillerTypeEnum.AIRCOOLED = { type: 3, value: "AIRCOOLED" }; + _IfcChillerTypeEnum.WATERCOOLED = { type: 3, value: "WATERCOOLED" }; + _IfcChillerTypeEnum.HEATRECOVERY = { type: 3, value: "HEATRECOVERY" }; + _IfcChillerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcChillerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcChillerTypeEnum = _IfcChillerTypeEnum; + IFC42.IfcChillerTypeEnum = IfcChillerTypeEnum; + const _IfcChimneyTypeEnum = class _IfcChimneyTypeEnum { + }; + _IfcChimneyTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcChimneyTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcChimneyTypeEnum = _IfcChimneyTypeEnum; + IFC42.IfcChimneyTypeEnum = IfcChimneyTypeEnum; + const _IfcCoilTypeEnum = class _IfcCoilTypeEnum { + }; + _IfcCoilTypeEnum.DXCOOLINGCOIL = { type: 3, value: "DXCOOLINGCOIL" }; + _IfcCoilTypeEnum.ELECTRICHEATINGCOIL = { type: 3, value: "ELECTRICHEATINGCOIL" }; + _IfcCoilTypeEnum.GASHEATINGCOIL = { type: 3, value: "GASHEATINGCOIL" }; + _IfcCoilTypeEnum.HYDRONICCOIL = { type: 3, value: "HYDRONICCOIL" }; + _IfcCoilTypeEnum.STEAMHEATINGCOIL = { type: 3, value: "STEAMHEATINGCOIL" }; + _IfcCoilTypeEnum.WATERCOOLINGCOIL = { type: 3, value: "WATERCOOLINGCOIL" }; + _IfcCoilTypeEnum.WATERHEATINGCOIL = { type: 3, value: "WATERHEATINGCOIL" }; + _IfcCoilTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCoilTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCoilTypeEnum = _IfcCoilTypeEnum; + IFC42.IfcCoilTypeEnum = IfcCoilTypeEnum; + const _IfcColumnTypeEnum = class _IfcColumnTypeEnum { + }; + _IfcColumnTypeEnum.COLUMN = { type: 3, value: "COLUMN" }; + _IfcColumnTypeEnum.PILASTER = { type: 3, value: "PILASTER" }; + _IfcColumnTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcColumnTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcColumnTypeEnum = _IfcColumnTypeEnum; + IFC42.IfcColumnTypeEnum = IfcColumnTypeEnum; + const _IfcCommunicationsApplianceTypeEnum = class _IfcCommunicationsApplianceTypeEnum { + }; + _IfcCommunicationsApplianceTypeEnum.ANTENNA = { type: 3, value: "ANTENNA" }; + _IfcCommunicationsApplianceTypeEnum.COMPUTER = { type: 3, value: "COMPUTER" }; + _IfcCommunicationsApplianceTypeEnum.FAX = { type: 3, value: "FAX" }; + _IfcCommunicationsApplianceTypeEnum.GATEWAY = { type: 3, value: "GATEWAY" }; + _IfcCommunicationsApplianceTypeEnum.MODEM = { type: 3, value: "MODEM" }; + _IfcCommunicationsApplianceTypeEnum.NETWORKAPPLIANCE = { type: 3, value: "NETWORKAPPLIANCE" }; + _IfcCommunicationsApplianceTypeEnum.NETWORKBRIDGE = { type: 3, value: "NETWORKBRIDGE" }; + _IfcCommunicationsApplianceTypeEnum.NETWORKHUB = { type: 3, value: "NETWORKHUB" }; + _IfcCommunicationsApplianceTypeEnum.PRINTER = { type: 3, value: "PRINTER" }; + _IfcCommunicationsApplianceTypeEnum.REPEATER = { type: 3, value: "REPEATER" }; + _IfcCommunicationsApplianceTypeEnum.ROUTER = { type: 3, value: "ROUTER" }; + _IfcCommunicationsApplianceTypeEnum.SCANNER = { type: 3, value: "SCANNER" }; + _IfcCommunicationsApplianceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCommunicationsApplianceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCommunicationsApplianceTypeEnum = _IfcCommunicationsApplianceTypeEnum; + IFC42.IfcCommunicationsApplianceTypeEnum = IfcCommunicationsApplianceTypeEnum; + const _IfcComplexPropertyTemplateTypeEnum = class _IfcComplexPropertyTemplateTypeEnum { + }; + _IfcComplexPropertyTemplateTypeEnum.P_COMPLEX = { type: 3, value: "P_COMPLEX" }; + _IfcComplexPropertyTemplateTypeEnum.Q_COMPLEX = { type: 3, value: "Q_COMPLEX" }; + let IfcComplexPropertyTemplateTypeEnum = _IfcComplexPropertyTemplateTypeEnum; + IFC42.IfcComplexPropertyTemplateTypeEnum = IfcComplexPropertyTemplateTypeEnum; + const _IfcCompressorTypeEnum = class _IfcCompressorTypeEnum { + }; + _IfcCompressorTypeEnum.DYNAMIC = { type: 3, value: "DYNAMIC" }; + _IfcCompressorTypeEnum.RECIPROCATING = { type: 3, value: "RECIPROCATING" }; + _IfcCompressorTypeEnum.ROTARY = { type: 3, value: "ROTARY" }; + _IfcCompressorTypeEnum.SCROLL = { type: 3, value: "SCROLL" }; + _IfcCompressorTypeEnum.TROCHOIDAL = { type: 3, value: "TROCHOIDAL" }; + _IfcCompressorTypeEnum.SINGLESTAGE = { type: 3, value: "SINGLESTAGE" }; + _IfcCompressorTypeEnum.BOOSTER = { type: 3, value: "BOOSTER" }; + _IfcCompressorTypeEnum.OPENTYPE = { type: 3, value: "OPENTYPE" }; + _IfcCompressorTypeEnum.HERMETIC = { type: 3, value: "HERMETIC" }; + _IfcCompressorTypeEnum.SEMIHERMETIC = { type: 3, value: "SEMIHERMETIC" }; + _IfcCompressorTypeEnum.WELDEDSHELLHERMETIC = { type: 3, value: "WELDEDSHELLHERMETIC" }; + _IfcCompressorTypeEnum.ROLLINGPISTON = { type: 3, value: "ROLLINGPISTON" }; + _IfcCompressorTypeEnum.ROTARYVANE = { type: 3, value: "ROTARYVANE" }; + _IfcCompressorTypeEnum.SINGLESCREW = { type: 3, value: "SINGLESCREW" }; + _IfcCompressorTypeEnum.TWINSCREW = { type: 3, value: "TWINSCREW" }; + _IfcCompressorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCompressorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCompressorTypeEnum = _IfcCompressorTypeEnum; + IFC42.IfcCompressorTypeEnum = IfcCompressorTypeEnum; + const _IfcCondenserTypeEnum = class _IfcCondenserTypeEnum { + }; + _IfcCondenserTypeEnum.AIRCOOLED = { type: 3, value: "AIRCOOLED" }; + _IfcCondenserTypeEnum.EVAPORATIVECOOLED = { type: 3, value: "EVAPORATIVECOOLED" }; + _IfcCondenserTypeEnum.WATERCOOLED = { type: 3, value: "WATERCOOLED" }; + _IfcCondenserTypeEnum.WATERCOOLEDBRAZEDPLATE = { type: 3, value: "WATERCOOLEDBRAZEDPLATE" }; + _IfcCondenserTypeEnum.WATERCOOLEDSHELLCOIL = { type: 3, value: "WATERCOOLEDSHELLCOIL" }; + _IfcCondenserTypeEnum.WATERCOOLEDSHELLTUBE = { type: 3, value: "WATERCOOLEDSHELLTUBE" }; + _IfcCondenserTypeEnum.WATERCOOLEDTUBEINTUBE = { type: 3, value: "WATERCOOLEDTUBEINTUBE" }; + _IfcCondenserTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCondenserTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCondenserTypeEnum = _IfcCondenserTypeEnum; + IFC42.IfcCondenserTypeEnum = IfcCondenserTypeEnum; + const _IfcConnectionTypeEnum = class _IfcConnectionTypeEnum { + }; + _IfcConnectionTypeEnum.ATPATH = { type: 3, value: "ATPATH" }; + _IfcConnectionTypeEnum.ATSTART = { type: 3, value: "ATSTART" }; + _IfcConnectionTypeEnum.ATEND = { type: 3, value: "ATEND" }; + _IfcConnectionTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConnectionTypeEnum = _IfcConnectionTypeEnum; + IFC42.IfcConnectionTypeEnum = IfcConnectionTypeEnum; + const _IfcConstraintEnum = class _IfcConstraintEnum { + }; + _IfcConstraintEnum.HARD = { type: 3, value: "HARD" }; + _IfcConstraintEnum.SOFT = { type: 3, value: "SOFT" }; + _IfcConstraintEnum.ADVISORY = { type: 3, value: "ADVISORY" }; + _IfcConstraintEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcConstraintEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConstraintEnum = _IfcConstraintEnum; + IFC42.IfcConstraintEnum = IfcConstraintEnum; + const _IfcConstructionEquipmentResourceTypeEnum = class _IfcConstructionEquipmentResourceTypeEnum { + }; + _IfcConstructionEquipmentResourceTypeEnum.DEMOLISHING = { type: 3, value: "DEMOLISHING" }; + _IfcConstructionEquipmentResourceTypeEnum.EARTHMOVING = { type: 3, value: "EARTHMOVING" }; + _IfcConstructionEquipmentResourceTypeEnum.ERECTING = { type: 3, value: "ERECTING" }; + _IfcConstructionEquipmentResourceTypeEnum.HEATING = { type: 3, value: "HEATING" }; + _IfcConstructionEquipmentResourceTypeEnum.LIGHTING = { type: 3, value: "LIGHTING" }; + _IfcConstructionEquipmentResourceTypeEnum.PAVING = { type: 3, value: "PAVING" }; + _IfcConstructionEquipmentResourceTypeEnum.PUMPING = { type: 3, value: "PUMPING" }; + _IfcConstructionEquipmentResourceTypeEnum.TRANSPORTING = { type: 3, value: "TRANSPORTING" }; + _IfcConstructionEquipmentResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcConstructionEquipmentResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConstructionEquipmentResourceTypeEnum = _IfcConstructionEquipmentResourceTypeEnum; + IFC42.IfcConstructionEquipmentResourceTypeEnum = IfcConstructionEquipmentResourceTypeEnum; + const _IfcConstructionMaterialResourceTypeEnum = class _IfcConstructionMaterialResourceTypeEnum { + }; + _IfcConstructionMaterialResourceTypeEnum.AGGREGATES = { type: 3, value: "AGGREGATES" }; + _IfcConstructionMaterialResourceTypeEnum.CONCRETE = { type: 3, value: "CONCRETE" }; + _IfcConstructionMaterialResourceTypeEnum.DRYWALL = { type: 3, value: "DRYWALL" }; + _IfcConstructionMaterialResourceTypeEnum.FUEL = { type: 3, value: "FUEL" }; + _IfcConstructionMaterialResourceTypeEnum.GYPSUM = { type: 3, value: "GYPSUM" }; + _IfcConstructionMaterialResourceTypeEnum.MASONRY = { type: 3, value: "MASONRY" }; + _IfcConstructionMaterialResourceTypeEnum.METAL = { type: 3, value: "METAL" }; + _IfcConstructionMaterialResourceTypeEnum.PLASTIC = { type: 3, value: "PLASTIC" }; + _IfcConstructionMaterialResourceTypeEnum.WOOD = { type: 3, value: "WOOD" }; + _IfcConstructionMaterialResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + _IfcConstructionMaterialResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcConstructionMaterialResourceTypeEnum = _IfcConstructionMaterialResourceTypeEnum; + IFC42.IfcConstructionMaterialResourceTypeEnum = IfcConstructionMaterialResourceTypeEnum; + const _IfcConstructionProductResourceTypeEnum = class _IfcConstructionProductResourceTypeEnum { + }; + _IfcConstructionProductResourceTypeEnum.ASSEMBLY = { type: 3, value: "ASSEMBLY" }; + _IfcConstructionProductResourceTypeEnum.FORMWORK = { type: 3, value: "FORMWORK" }; + _IfcConstructionProductResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcConstructionProductResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConstructionProductResourceTypeEnum = _IfcConstructionProductResourceTypeEnum; + IFC42.IfcConstructionProductResourceTypeEnum = IfcConstructionProductResourceTypeEnum; + const _IfcControllerTypeEnum = class _IfcControllerTypeEnum { + }; + _IfcControllerTypeEnum.FLOATING = { type: 3, value: "FLOATING" }; + _IfcControllerTypeEnum.PROGRAMMABLE = { type: 3, value: "PROGRAMMABLE" }; + _IfcControllerTypeEnum.PROPORTIONAL = { type: 3, value: "PROPORTIONAL" }; + _IfcControllerTypeEnum.MULTIPOSITION = { type: 3, value: "MULTIPOSITION" }; + _IfcControllerTypeEnum.TWOPOSITION = { type: 3, value: "TWOPOSITION" }; + _IfcControllerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcControllerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcControllerTypeEnum = _IfcControllerTypeEnum; + IFC42.IfcControllerTypeEnum = IfcControllerTypeEnum; + const _IfcCooledBeamTypeEnum = class _IfcCooledBeamTypeEnum { + }; + _IfcCooledBeamTypeEnum.ACTIVE = { type: 3, value: "ACTIVE" }; + _IfcCooledBeamTypeEnum.PASSIVE = { type: 3, value: "PASSIVE" }; + _IfcCooledBeamTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCooledBeamTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCooledBeamTypeEnum = _IfcCooledBeamTypeEnum; + IFC42.IfcCooledBeamTypeEnum = IfcCooledBeamTypeEnum; + const _IfcCoolingTowerTypeEnum = class _IfcCoolingTowerTypeEnum { + }; + _IfcCoolingTowerTypeEnum.NATURALDRAFT = { type: 3, value: "NATURALDRAFT" }; + _IfcCoolingTowerTypeEnum.MECHANICALINDUCEDDRAFT = { type: 3, value: "MECHANICALINDUCEDDRAFT" }; + _IfcCoolingTowerTypeEnum.MECHANICALFORCEDDRAFT = { type: 3, value: "MECHANICALFORCEDDRAFT" }; + _IfcCoolingTowerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCoolingTowerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCoolingTowerTypeEnum = _IfcCoolingTowerTypeEnum; + IFC42.IfcCoolingTowerTypeEnum = IfcCoolingTowerTypeEnum; + const _IfcCostItemTypeEnum = class _IfcCostItemTypeEnum { + }; + _IfcCostItemTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCostItemTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCostItemTypeEnum = _IfcCostItemTypeEnum; + IFC42.IfcCostItemTypeEnum = IfcCostItemTypeEnum; + const _IfcCostScheduleTypeEnum = class _IfcCostScheduleTypeEnum { + }; + _IfcCostScheduleTypeEnum.BUDGET = { type: 3, value: "BUDGET" }; + _IfcCostScheduleTypeEnum.COSTPLAN = { type: 3, value: "COSTPLAN" }; + _IfcCostScheduleTypeEnum.ESTIMATE = { type: 3, value: "ESTIMATE" }; + _IfcCostScheduleTypeEnum.TENDER = { type: 3, value: "TENDER" }; + _IfcCostScheduleTypeEnum.PRICEDBILLOFQUANTITIES = { type: 3, value: "PRICEDBILLOFQUANTITIES" }; + _IfcCostScheduleTypeEnum.UNPRICEDBILLOFQUANTITIES = { type: 3, value: "UNPRICEDBILLOFQUANTITIES" }; + _IfcCostScheduleTypeEnum.SCHEDULEOFRATES = { type: 3, value: "SCHEDULEOFRATES" }; + _IfcCostScheduleTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCostScheduleTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCostScheduleTypeEnum = _IfcCostScheduleTypeEnum; + IFC42.IfcCostScheduleTypeEnum = IfcCostScheduleTypeEnum; + const _IfcCoveringTypeEnum = class _IfcCoveringTypeEnum { + }; + _IfcCoveringTypeEnum.CEILING = { type: 3, value: "CEILING" }; + _IfcCoveringTypeEnum.FLOORING = { type: 3, value: "FLOORING" }; + _IfcCoveringTypeEnum.CLADDING = { type: 3, value: "CLADDING" }; + _IfcCoveringTypeEnum.ROOFING = { type: 3, value: "ROOFING" }; + _IfcCoveringTypeEnum.MOLDING = { type: 3, value: "MOLDING" }; + _IfcCoveringTypeEnum.SKIRTINGBOARD = { type: 3, value: "SKIRTINGBOARD" }; + _IfcCoveringTypeEnum.INSULATION = { type: 3, value: "INSULATION" }; + _IfcCoveringTypeEnum.MEMBRANE = { type: 3, value: "MEMBRANE" }; + _IfcCoveringTypeEnum.SLEEVING = { type: 3, value: "SLEEVING" }; + _IfcCoveringTypeEnum.WRAPPING = { type: 3, value: "WRAPPING" }; + _IfcCoveringTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCoveringTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCoveringTypeEnum = _IfcCoveringTypeEnum; + IFC42.IfcCoveringTypeEnum = IfcCoveringTypeEnum; + const _IfcCrewResourceTypeEnum = class _IfcCrewResourceTypeEnum { + }; + _IfcCrewResourceTypeEnum.OFFICE = { type: 3, value: "OFFICE" }; + _IfcCrewResourceTypeEnum.SITE = { type: 3, value: "SITE" }; + _IfcCrewResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCrewResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCrewResourceTypeEnum = _IfcCrewResourceTypeEnum; + IFC42.IfcCrewResourceTypeEnum = IfcCrewResourceTypeEnum; + const _IfcCurtainWallTypeEnum = class _IfcCurtainWallTypeEnum { + }; + _IfcCurtainWallTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCurtainWallTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCurtainWallTypeEnum = _IfcCurtainWallTypeEnum; + IFC42.IfcCurtainWallTypeEnum = IfcCurtainWallTypeEnum; + const _IfcCurveInterpolationEnum = class _IfcCurveInterpolationEnum { + }; + _IfcCurveInterpolationEnum.LINEAR = { type: 3, value: "LINEAR" }; + _IfcCurveInterpolationEnum.LOG_LINEAR = { type: 3, value: "LOG_LINEAR" }; + _IfcCurveInterpolationEnum.LOG_LOG = { type: 3, value: "LOG_LOG" }; + _IfcCurveInterpolationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCurveInterpolationEnum = _IfcCurveInterpolationEnum; + IFC42.IfcCurveInterpolationEnum = IfcCurveInterpolationEnum; + const _IfcDamperTypeEnum = class _IfcDamperTypeEnum { + }; + _IfcDamperTypeEnum.BACKDRAFTDAMPER = { type: 3, value: "BACKDRAFTDAMPER" }; + _IfcDamperTypeEnum.BALANCINGDAMPER = { type: 3, value: "BALANCINGDAMPER" }; + _IfcDamperTypeEnum.BLASTDAMPER = { type: 3, value: "BLASTDAMPER" }; + _IfcDamperTypeEnum.CONTROLDAMPER = { type: 3, value: "CONTROLDAMPER" }; + _IfcDamperTypeEnum.FIREDAMPER = { type: 3, value: "FIREDAMPER" }; + _IfcDamperTypeEnum.FIRESMOKEDAMPER = { type: 3, value: "FIRESMOKEDAMPER" }; + _IfcDamperTypeEnum.FUMEHOODEXHAUST = { type: 3, value: "FUMEHOODEXHAUST" }; + _IfcDamperTypeEnum.GRAVITYDAMPER = { type: 3, value: "GRAVITYDAMPER" }; + _IfcDamperTypeEnum.GRAVITYRELIEFDAMPER = { type: 3, value: "GRAVITYRELIEFDAMPER" }; + _IfcDamperTypeEnum.RELIEFDAMPER = { type: 3, value: "RELIEFDAMPER" }; + _IfcDamperTypeEnum.SMOKEDAMPER = { type: 3, value: "SMOKEDAMPER" }; + _IfcDamperTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDamperTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDamperTypeEnum = _IfcDamperTypeEnum; + IFC42.IfcDamperTypeEnum = IfcDamperTypeEnum; + const _IfcDataOriginEnum = class _IfcDataOriginEnum { + }; + _IfcDataOriginEnum.MEASURED = { type: 3, value: "MEASURED" }; + _IfcDataOriginEnum.PREDICTED = { type: 3, value: "PREDICTED" }; + _IfcDataOriginEnum.SIMULATED = { type: 3, value: "SIMULATED" }; + _IfcDataOriginEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDataOriginEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDataOriginEnum = _IfcDataOriginEnum; + IFC42.IfcDataOriginEnum = IfcDataOriginEnum; + const _IfcDerivedUnitEnum = class _IfcDerivedUnitEnum { + }; + _IfcDerivedUnitEnum.ANGULARVELOCITYUNIT = { type: 3, value: "ANGULARVELOCITYUNIT" }; + _IfcDerivedUnitEnum.AREADENSITYUNIT = { type: 3, value: "AREADENSITYUNIT" }; + _IfcDerivedUnitEnum.COMPOUNDPLANEANGLEUNIT = { type: 3, value: "COMPOUNDPLANEANGLEUNIT" }; + _IfcDerivedUnitEnum.DYNAMICVISCOSITYUNIT = { type: 3, value: "DYNAMICVISCOSITYUNIT" }; + _IfcDerivedUnitEnum.HEATFLUXDENSITYUNIT = { type: 3, value: "HEATFLUXDENSITYUNIT" }; + _IfcDerivedUnitEnum.INTEGERCOUNTRATEUNIT = { type: 3, value: "INTEGERCOUNTRATEUNIT" }; + _IfcDerivedUnitEnum.ISOTHERMALMOISTURECAPACITYUNIT = { type: 3, value: "ISOTHERMALMOISTURECAPACITYUNIT" }; + _IfcDerivedUnitEnum.KINEMATICVISCOSITYUNIT = { type: 3, value: "KINEMATICVISCOSITYUNIT" }; + _IfcDerivedUnitEnum.LINEARVELOCITYUNIT = { type: 3, value: "LINEARVELOCITYUNIT" }; + _IfcDerivedUnitEnum.MASSDENSITYUNIT = { type: 3, value: "MASSDENSITYUNIT" }; + _IfcDerivedUnitEnum.MASSFLOWRATEUNIT = { type: 3, value: "MASSFLOWRATEUNIT" }; + _IfcDerivedUnitEnum.MOISTUREDIFFUSIVITYUNIT = { type: 3, value: "MOISTUREDIFFUSIVITYUNIT" }; + _IfcDerivedUnitEnum.MOLECULARWEIGHTUNIT = { type: 3, value: "MOLECULARWEIGHTUNIT" }; + _IfcDerivedUnitEnum.SPECIFICHEATCAPACITYUNIT = { type: 3, value: "SPECIFICHEATCAPACITYUNIT" }; + _IfcDerivedUnitEnum.THERMALADMITTANCEUNIT = { type: 3, value: "THERMALADMITTANCEUNIT" }; + _IfcDerivedUnitEnum.THERMALCONDUCTANCEUNIT = { type: 3, value: "THERMALCONDUCTANCEUNIT" }; + _IfcDerivedUnitEnum.THERMALRESISTANCEUNIT = { type: 3, value: "THERMALRESISTANCEUNIT" }; + _IfcDerivedUnitEnum.THERMALTRANSMITTANCEUNIT = { type: 3, value: "THERMALTRANSMITTANCEUNIT" }; + _IfcDerivedUnitEnum.VAPORPERMEABILITYUNIT = { type: 3, value: "VAPORPERMEABILITYUNIT" }; + _IfcDerivedUnitEnum.VOLUMETRICFLOWRATEUNIT = { type: 3, value: "VOLUMETRICFLOWRATEUNIT" }; + _IfcDerivedUnitEnum.ROTATIONALFREQUENCYUNIT = { type: 3, value: "ROTATIONALFREQUENCYUNIT" }; + _IfcDerivedUnitEnum.TORQUEUNIT = { type: 3, value: "TORQUEUNIT" }; + _IfcDerivedUnitEnum.MOMENTOFINERTIAUNIT = { type: 3, value: "MOMENTOFINERTIAUNIT" }; + _IfcDerivedUnitEnum.LINEARMOMENTUNIT = { type: 3, value: "LINEARMOMENTUNIT" }; + _IfcDerivedUnitEnum.LINEARFORCEUNIT = { type: 3, value: "LINEARFORCEUNIT" }; + _IfcDerivedUnitEnum.PLANARFORCEUNIT = { type: 3, value: "PLANARFORCEUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFELASTICITYUNIT = { type: 3, value: "MODULUSOFELASTICITYUNIT" }; + _IfcDerivedUnitEnum.SHEARMODULUSUNIT = { type: 3, value: "SHEARMODULUSUNIT" }; + _IfcDerivedUnitEnum.LINEARSTIFFNESSUNIT = { type: 3, value: "LINEARSTIFFNESSUNIT" }; + _IfcDerivedUnitEnum.ROTATIONALSTIFFNESSUNIT = { type: 3, value: "ROTATIONALSTIFFNESSUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFSUBGRADEREACTIONUNIT = { type: 3, value: "MODULUSOFSUBGRADEREACTIONUNIT" }; + _IfcDerivedUnitEnum.ACCELERATIONUNIT = { type: 3, value: "ACCELERATIONUNIT" }; + _IfcDerivedUnitEnum.CURVATUREUNIT = { type: 3, value: "CURVATUREUNIT" }; + _IfcDerivedUnitEnum.HEATINGVALUEUNIT = { type: 3, value: "HEATINGVALUEUNIT" }; + _IfcDerivedUnitEnum.IONCONCENTRATIONUNIT = { type: 3, value: "IONCONCENTRATIONUNIT" }; + _IfcDerivedUnitEnum.LUMINOUSINTENSITYDISTRIBUTIONUNIT = { type: 3, value: "LUMINOUSINTENSITYDISTRIBUTIONUNIT" }; + _IfcDerivedUnitEnum.MASSPERLENGTHUNIT = { type: 3, value: "MASSPERLENGTHUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFLINEARSUBGRADEREACTIONUNIT = { type: 3, value: "MODULUSOFLINEARSUBGRADEREACTIONUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFROTATIONALSUBGRADEREACTIONUNIT = { type: 3, value: "MODULUSOFROTATIONALSUBGRADEREACTIONUNIT" }; + _IfcDerivedUnitEnum.PHUNIT = { type: 3, value: "PHUNIT" }; + _IfcDerivedUnitEnum.ROTATIONALMASSUNIT = { type: 3, value: "ROTATIONALMASSUNIT" }; + _IfcDerivedUnitEnum.SECTIONAREAINTEGRALUNIT = { type: 3, value: "SECTIONAREAINTEGRALUNIT" }; + _IfcDerivedUnitEnum.SECTIONMODULUSUNIT = { type: 3, value: "SECTIONMODULUSUNIT" }; + _IfcDerivedUnitEnum.SOUNDPOWERLEVELUNIT = { type: 3, value: "SOUNDPOWERLEVELUNIT" }; + _IfcDerivedUnitEnum.SOUNDPOWERUNIT = { type: 3, value: "SOUNDPOWERUNIT" }; + _IfcDerivedUnitEnum.SOUNDPRESSURELEVELUNIT = { type: 3, value: "SOUNDPRESSURELEVELUNIT" }; + _IfcDerivedUnitEnum.SOUNDPRESSUREUNIT = { type: 3, value: "SOUNDPRESSUREUNIT" }; + _IfcDerivedUnitEnum.TEMPERATUREGRADIENTUNIT = { type: 3, value: "TEMPERATUREGRADIENTUNIT" }; + _IfcDerivedUnitEnum.TEMPERATURERATEOFCHANGEUNIT = { type: 3, value: "TEMPERATURERATEOFCHANGEUNIT" }; + _IfcDerivedUnitEnum.THERMALEXPANSIONCOEFFICIENTUNIT = { type: 3, value: "THERMALEXPANSIONCOEFFICIENTUNIT" }; + _IfcDerivedUnitEnum.WARPINGCONSTANTUNIT = { type: 3, value: "WARPINGCONSTANTUNIT" }; + _IfcDerivedUnitEnum.WARPINGMOMENTUNIT = { type: 3, value: "WARPINGMOMENTUNIT" }; + _IfcDerivedUnitEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcDerivedUnitEnum = _IfcDerivedUnitEnum; + IFC42.IfcDerivedUnitEnum = IfcDerivedUnitEnum; + const _IfcDirectionSenseEnum = class _IfcDirectionSenseEnum { + }; + _IfcDirectionSenseEnum.POSITIVE = { type: 3, value: "POSITIVE" }; + _IfcDirectionSenseEnum.NEGATIVE = { type: 3, value: "NEGATIVE" }; + let IfcDirectionSenseEnum = _IfcDirectionSenseEnum; + IFC42.IfcDirectionSenseEnum = IfcDirectionSenseEnum; + const _IfcDiscreteAccessoryTypeEnum = class _IfcDiscreteAccessoryTypeEnum { + }; + _IfcDiscreteAccessoryTypeEnum.ANCHORPLATE = { type: 3, value: "ANCHORPLATE" }; + _IfcDiscreteAccessoryTypeEnum.BRACKET = { type: 3, value: "BRACKET" }; + _IfcDiscreteAccessoryTypeEnum.SHOE = { type: 3, value: "SHOE" }; + _IfcDiscreteAccessoryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDiscreteAccessoryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDiscreteAccessoryTypeEnum = _IfcDiscreteAccessoryTypeEnum; + IFC42.IfcDiscreteAccessoryTypeEnum = IfcDiscreteAccessoryTypeEnum; + const _IfcDistributionChamberElementTypeEnum = class _IfcDistributionChamberElementTypeEnum { + }; + _IfcDistributionChamberElementTypeEnum.FORMEDDUCT = { type: 3, value: "FORMEDDUCT" }; + _IfcDistributionChamberElementTypeEnum.INSPECTIONCHAMBER = { type: 3, value: "INSPECTIONCHAMBER" }; + _IfcDistributionChamberElementTypeEnum.INSPECTIONPIT = { type: 3, value: "INSPECTIONPIT" }; + _IfcDistributionChamberElementTypeEnum.MANHOLE = { type: 3, value: "MANHOLE" }; + _IfcDistributionChamberElementTypeEnum.METERCHAMBER = { type: 3, value: "METERCHAMBER" }; + _IfcDistributionChamberElementTypeEnum.SUMP = { type: 3, value: "SUMP" }; + _IfcDistributionChamberElementTypeEnum.TRENCH = { type: 3, value: "TRENCH" }; + _IfcDistributionChamberElementTypeEnum.VALVECHAMBER = { type: 3, value: "VALVECHAMBER" }; + _IfcDistributionChamberElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDistributionChamberElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDistributionChamberElementTypeEnum = _IfcDistributionChamberElementTypeEnum; + IFC42.IfcDistributionChamberElementTypeEnum = IfcDistributionChamberElementTypeEnum; + const _IfcDistributionPortTypeEnum = class _IfcDistributionPortTypeEnum { + }; + _IfcDistributionPortTypeEnum.CABLE = { type: 3, value: "CABLE" }; + _IfcDistributionPortTypeEnum.CABLECARRIER = { type: 3, value: "CABLECARRIER" }; + _IfcDistributionPortTypeEnum.DUCT = { type: 3, value: "DUCT" }; + _IfcDistributionPortTypeEnum.PIPE = { type: 3, value: "PIPE" }; + _IfcDistributionPortTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDistributionPortTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDistributionPortTypeEnum = _IfcDistributionPortTypeEnum; + IFC42.IfcDistributionPortTypeEnum = IfcDistributionPortTypeEnum; + const _IfcDistributionSystemEnum = class _IfcDistributionSystemEnum { + }; + _IfcDistributionSystemEnum.AIRCONDITIONING = { type: 3, value: "AIRCONDITIONING" }; + _IfcDistributionSystemEnum.AUDIOVISUAL = { type: 3, value: "AUDIOVISUAL" }; + _IfcDistributionSystemEnum.CHEMICAL = { type: 3, value: "CHEMICAL" }; + _IfcDistributionSystemEnum.CHILLEDWATER = { type: 3, value: "CHILLEDWATER" }; + _IfcDistributionSystemEnum.COMMUNICATION = { type: 3, value: "COMMUNICATION" }; + _IfcDistributionSystemEnum.COMPRESSEDAIR = { type: 3, value: "COMPRESSEDAIR" }; + _IfcDistributionSystemEnum.CONDENSERWATER = { type: 3, value: "CONDENSERWATER" }; + _IfcDistributionSystemEnum.CONTROL = { type: 3, value: "CONTROL" }; + _IfcDistributionSystemEnum.CONVEYING = { type: 3, value: "CONVEYING" }; + _IfcDistributionSystemEnum.DATA = { type: 3, value: "DATA" }; + _IfcDistributionSystemEnum.DISPOSAL = { type: 3, value: "DISPOSAL" }; + _IfcDistributionSystemEnum.DOMESTICCOLDWATER = { type: 3, value: "DOMESTICCOLDWATER" }; + _IfcDistributionSystemEnum.DOMESTICHOTWATER = { type: 3, value: "DOMESTICHOTWATER" }; + _IfcDistributionSystemEnum.DRAINAGE = { type: 3, value: "DRAINAGE" }; + _IfcDistributionSystemEnum.EARTHING = { type: 3, value: "EARTHING" }; + _IfcDistributionSystemEnum.ELECTRICAL = { type: 3, value: "ELECTRICAL" }; + _IfcDistributionSystemEnum.ELECTROACOUSTIC = { type: 3, value: "ELECTROACOUSTIC" }; + _IfcDistributionSystemEnum.EXHAUST = { type: 3, value: "EXHAUST" }; + _IfcDistributionSystemEnum.FIREPROTECTION = { type: 3, value: "FIREPROTECTION" }; + _IfcDistributionSystemEnum.FUEL = { type: 3, value: "FUEL" }; + _IfcDistributionSystemEnum.GAS = { type: 3, value: "GAS" }; + _IfcDistributionSystemEnum.HAZARDOUS = { type: 3, value: "HAZARDOUS" }; + _IfcDistributionSystemEnum.HEATING = { type: 3, value: "HEATING" }; + _IfcDistributionSystemEnum.LIGHTING = { type: 3, value: "LIGHTING" }; + _IfcDistributionSystemEnum.LIGHTNINGPROTECTION = { type: 3, value: "LIGHTNINGPROTECTION" }; + _IfcDistributionSystemEnum.MUNICIPALSOLIDWASTE = { type: 3, value: "MUNICIPALSOLIDWASTE" }; + _IfcDistributionSystemEnum.OIL = { type: 3, value: "OIL" }; + _IfcDistributionSystemEnum.OPERATIONAL = { type: 3, value: "OPERATIONAL" }; + _IfcDistributionSystemEnum.POWERGENERATION = { type: 3, value: "POWERGENERATION" }; + _IfcDistributionSystemEnum.RAINWATER = { type: 3, value: "RAINWATER" }; + _IfcDistributionSystemEnum.REFRIGERATION = { type: 3, value: "REFRIGERATION" }; + _IfcDistributionSystemEnum.SECURITY = { type: 3, value: "SECURITY" }; + _IfcDistributionSystemEnum.SEWAGE = { type: 3, value: "SEWAGE" }; + _IfcDistributionSystemEnum.SIGNAL = { type: 3, value: "SIGNAL" }; + _IfcDistributionSystemEnum.STORMWATER = { type: 3, value: "STORMWATER" }; + _IfcDistributionSystemEnum.TELEPHONE = { type: 3, value: "TELEPHONE" }; + _IfcDistributionSystemEnum.TV = { type: 3, value: "TV" }; + _IfcDistributionSystemEnum.VACUUM = { type: 3, value: "VACUUM" }; + _IfcDistributionSystemEnum.VENT = { type: 3, value: "VENT" }; + _IfcDistributionSystemEnum.VENTILATION = { type: 3, value: "VENTILATION" }; + _IfcDistributionSystemEnum.WASTEWATER = { type: 3, value: "WASTEWATER" }; + _IfcDistributionSystemEnum.WATERSUPPLY = { type: 3, value: "WATERSUPPLY" }; + _IfcDistributionSystemEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDistributionSystemEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDistributionSystemEnum = _IfcDistributionSystemEnum; + IFC42.IfcDistributionSystemEnum = IfcDistributionSystemEnum; + const _IfcDocumentConfidentialityEnum = class _IfcDocumentConfidentialityEnum { + }; + _IfcDocumentConfidentialityEnum.PUBLIC = { type: 3, value: "PUBLIC" }; + _IfcDocumentConfidentialityEnum.RESTRICTED = { type: 3, value: "RESTRICTED" }; + _IfcDocumentConfidentialityEnum.CONFIDENTIAL = { type: 3, value: "CONFIDENTIAL" }; + _IfcDocumentConfidentialityEnum.PERSONAL = { type: 3, value: "PERSONAL" }; + _IfcDocumentConfidentialityEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDocumentConfidentialityEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDocumentConfidentialityEnum = _IfcDocumentConfidentialityEnum; + IFC42.IfcDocumentConfidentialityEnum = IfcDocumentConfidentialityEnum; + const _IfcDocumentStatusEnum = class _IfcDocumentStatusEnum { + }; + _IfcDocumentStatusEnum.DRAFT = { type: 3, value: "DRAFT" }; + _IfcDocumentStatusEnum.FINALDRAFT = { type: 3, value: "FINALDRAFT" }; + _IfcDocumentStatusEnum.FINAL = { type: 3, value: "FINAL" }; + _IfcDocumentStatusEnum.REVISION = { type: 3, value: "REVISION" }; + _IfcDocumentStatusEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDocumentStatusEnum = _IfcDocumentStatusEnum; + IFC42.IfcDocumentStatusEnum = IfcDocumentStatusEnum; + const _IfcDoorPanelOperationEnum = class _IfcDoorPanelOperationEnum { + }; + _IfcDoorPanelOperationEnum.SWINGING = { type: 3, value: "SWINGING" }; + _IfcDoorPanelOperationEnum.DOUBLE_ACTING = { type: 3, value: "DOUBLE_ACTING" }; + _IfcDoorPanelOperationEnum.SLIDING = { type: 3, value: "SLIDING" }; + _IfcDoorPanelOperationEnum.FOLDING = { type: 3, value: "FOLDING" }; + _IfcDoorPanelOperationEnum.REVOLVING = { type: 3, value: "REVOLVING" }; + _IfcDoorPanelOperationEnum.ROLLINGUP = { type: 3, value: "ROLLINGUP" }; + _IfcDoorPanelOperationEnum.FIXEDPANEL = { type: 3, value: "FIXEDPANEL" }; + _IfcDoorPanelOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDoorPanelOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorPanelOperationEnum = _IfcDoorPanelOperationEnum; + IFC42.IfcDoorPanelOperationEnum = IfcDoorPanelOperationEnum; + const _IfcDoorPanelPositionEnum = class _IfcDoorPanelPositionEnum { + }; + _IfcDoorPanelPositionEnum.LEFT = { type: 3, value: "LEFT" }; + _IfcDoorPanelPositionEnum.MIDDLE = { type: 3, value: "MIDDLE" }; + _IfcDoorPanelPositionEnum.RIGHT = { type: 3, value: "RIGHT" }; + _IfcDoorPanelPositionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorPanelPositionEnum = _IfcDoorPanelPositionEnum; + IFC42.IfcDoorPanelPositionEnum = IfcDoorPanelPositionEnum; + const _IfcDoorStyleConstructionEnum = class _IfcDoorStyleConstructionEnum { + }; + _IfcDoorStyleConstructionEnum.ALUMINIUM = { type: 3, value: "ALUMINIUM" }; + _IfcDoorStyleConstructionEnum.HIGH_GRADE_STEEL = { type: 3, value: "HIGH_GRADE_STEEL" }; + _IfcDoorStyleConstructionEnum.STEEL = { type: 3, value: "STEEL" }; + _IfcDoorStyleConstructionEnum.WOOD = { type: 3, value: "WOOD" }; + _IfcDoorStyleConstructionEnum.ALUMINIUM_WOOD = { type: 3, value: "ALUMINIUM_WOOD" }; + _IfcDoorStyleConstructionEnum.ALUMINIUM_PLASTIC = { type: 3, value: "ALUMINIUM_PLASTIC" }; + _IfcDoorStyleConstructionEnum.PLASTIC = { type: 3, value: "PLASTIC" }; + _IfcDoorStyleConstructionEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDoorStyleConstructionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorStyleConstructionEnum = _IfcDoorStyleConstructionEnum; + IFC42.IfcDoorStyleConstructionEnum = IfcDoorStyleConstructionEnum; + const _IfcDoorStyleOperationEnum = class _IfcDoorStyleOperationEnum { + }; + _IfcDoorStyleOperationEnum.SINGLE_SWING_LEFT = { type: 3, value: "SINGLE_SWING_LEFT" }; + _IfcDoorStyleOperationEnum.SINGLE_SWING_RIGHT = { type: 3, value: "SINGLE_SWING_RIGHT" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_SINGLE_SWING = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT" }; + _IfcDoorStyleOperationEnum.DOUBLE_SWING_LEFT = { type: 3, value: "DOUBLE_SWING_LEFT" }; + _IfcDoorStyleOperationEnum.DOUBLE_SWING_RIGHT = { type: 3, value: "DOUBLE_SWING_RIGHT" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_DOUBLE_SWING = { type: 3, value: "DOUBLE_DOOR_DOUBLE_SWING" }; + _IfcDoorStyleOperationEnum.SLIDING_TO_LEFT = { type: 3, value: "SLIDING_TO_LEFT" }; + _IfcDoorStyleOperationEnum.SLIDING_TO_RIGHT = { type: 3, value: "SLIDING_TO_RIGHT" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_SLIDING = { type: 3, value: "DOUBLE_DOOR_SLIDING" }; + _IfcDoorStyleOperationEnum.FOLDING_TO_LEFT = { type: 3, value: "FOLDING_TO_LEFT" }; + _IfcDoorStyleOperationEnum.FOLDING_TO_RIGHT = { type: 3, value: "FOLDING_TO_RIGHT" }; + _IfcDoorStyleOperationEnum.DOUBLE_DOOR_FOLDING = { type: 3, value: "DOUBLE_DOOR_FOLDING" }; + _IfcDoorStyleOperationEnum.REVOLVING = { type: 3, value: "REVOLVING" }; + _IfcDoorStyleOperationEnum.ROLLINGUP = { type: 3, value: "ROLLINGUP" }; + _IfcDoorStyleOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDoorStyleOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorStyleOperationEnum = _IfcDoorStyleOperationEnum; + IFC42.IfcDoorStyleOperationEnum = IfcDoorStyleOperationEnum; + const _IfcDoorTypeEnum = class _IfcDoorTypeEnum { + }; + _IfcDoorTypeEnum.DOOR = { type: 3, value: "DOOR" }; + _IfcDoorTypeEnum.GATE = { type: 3, value: "GATE" }; + _IfcDoorTypeEnum.TRAPDOOR = { type: 3, value: "TRAPDOOR" }; + _IfcDoorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDoorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorTypeEnum = _IfcDoorTypeEnum; + IFC42.IfcDoorTypeEnum = IfcDoorTypeEnum; + const _IfcDoorTypeOperationEnum = class _IfcDoorTypeOperationEnum { + }; + _IfcDoorTypeOperationEnum.SINGLE_SWING_LEFT = { type: 3, value: "SINGLE_SWING_LEFT" }; + _IfcDoorTypeOperationEnum.SINGLE_SWING_RIGHT = { type: 3, value: "SINGLE_SWING_RIGHT" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT" }; + _IfcDoorTypeOperationEnum.DOUBLE_SWING_LEFT = { type: 3, value: "DOUBLE_SWING_LEFT" }; + _IfcDoorTypeOperationEnum.DOUBLE_SWING_RIGHT = { type: 3, value: "DOUBLE_SWING_RIGHT" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_DOUBLE_SWING = { type: 3, value: "DOUBLE_DOOR_DOUBLE_SWING" }; + _IfcDoorTypeOperationEnum.SLIDING_TO_LEFT = { type: 3, value: "SLIDING_TO_LEFT" }; + _IfcDoorTypeOperationEnum.SLIDING_TO_RIGHT = { type: 3, value: "SLIDING_TO_RIGHT" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_SLIDING = { type: 3, value: "DOUBLE_DOOR_SLIDING" }; + _IfcDoorTypeOperationEnum.FOLDING_TO_LEFT = { type: 3, value: "FOLDING_TO_LEFT" }; + _IfcDoorTypeOperationEnum.FOLDING_TO_RIGHT = { type: 3, value: "FOLDING_TO_RIGHT" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_FOLDING = { type: 3, value: "DOUBLE_DOOR_FOLDING" }; + _IfcDoorTypeOperationEnum.REVOLVING = { type: 3, value: "REVOLVING" }; + _IfcDoorTypeOperationEnum.ROLLINGUP = { type: 3, value: "ROLLINGUP" }; + _IfcDoorTypeOperationEnum.SWING_FIXED_LEFT = { type: 3, value: "SWING_FIXED_LEFT" }; + _IfcDoorTypeOperationEnum.SWING_FIXED_RIGHT = { type: 3, value: "SWING_FIXED_RIGHT" }; + _IfcDoorTypeOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDoorTypeOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorTypeOperationEnum = _IfcDoorTypeOperationEnum; + IFC42.IfcDoorTypeOperationEnum = IfcDoorTypeOperationEnum; + const _IfcDuctFittingTypeEnum = class _IfcDuctFittingTypeEnum { + }; + _IfcDuctFittingTypeEnum.BEND = { type: 3, value: "BEND" }; + _IfcDuctFittingTypeEnum.CONNECTOR = { type: 3, value: "CONNECTOR" }; + _IfcDuctFittingTypeEnum.ENTRY = { type: 3, value: "ENTRY" }; + _IfcDuctFittingTypeEnum.EXIT = { type: 3, value: "EXIT" }; + _IfcDuctFittingTypeEnum.JUNCTION = { type: 3, value: "JUNCTION" }; + _IfcDuctFittingTypeEnum.OBSTRUCTION = { type: 3, value: "OBSTRUCTION" }; + _IfcDuctFittingTypeEnum.TRANSITION = { type: 3, value: "TRANSITION" }; + _IfcDuctFittingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDuctFittingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDuctFittingTypeEnum = _IfcDuctFittingTypeEnum; + IFC42.IfcDuctFittingTypeEnum = IfcDuctFittingTypeEnum; + const _IfcDuctSegmentTypeEnum = class _IfcDuctSegmentTypeEnum { + }; + _IfcDuctSegmentTypeEnum.RIGIDSEGMENT = { type: 3, value: "RIGIDSEGMENT" }; + _IfcDuctSegmentTypeEnum.FLEXIBLESEGMENT = { type: 3, value: "FLEXIBLESEGMENT" }; + _IfcDuctSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDuctSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDuctSegmentTypeEnum = _IfcDuctSegmentTypeEnum; + IFC42.IfcDuctSegmentTypeEnum = IfcDuctSegmentTypeEnum; + const _IfcDuctSilencerTypeEnum = class _IfcDuctSilencerTypeEnum { + }; + _IfcDuctSilencerTypeEnum.FLATOVAL = { type: 3, value: "FLATOVAL" }; + _IfcDuctSilencerTypeEnum.RECTANGULAR = { type: 3, value: "RECTANGULAR" }; + _IfcDuctSilencerTypeEnum.ROUND = { type: 3, value: "ROUND" }; + _IfcDuctSilencerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDuctSilencerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDuctSilencerTypeEnum = _IfcDuctSilencerTypeEnum; + IFC42.IfcDuctSilencerTypeEnum = IfcDuctSilencerTypeEnum; + const _IfcElectricApplianceTypeEnum = class _IfcElectricApplianceTypeEnum { + }; + _IfcElectricApplianceTypeEnum.DISHWASHER = { type: 3, value: "DISHWASHER" }; + _IfcElectricApplianceTypeEnum.ELECTRICCOOKER = { type: 3, value: "ELECTRICCOOKER" }; + _IfcElectricApplianceTypeEnum.FREESTANDINGELECTRICHEATER = { type: 3, value: "FREESTANDINGELECTRICHEATER" }; + _IfcElectricApplianceTypeEnum.FREESTANDINGFAN = { type: 3, value: "FREESTANDINGFAN" }; + _IfcElectricApplianceTypeEnum.FREESTANDINGWATERHEATER = { type: 3, value: "FREESTANDINGWATERHEATER" }; + _IfcElectricApplianceTypeEnum.FREESTANDINGWATERCOOLER = { type: 3, value: "FREESTANDINGWATERCOOLER" }; + _IfcElectricApplianceTypeEnum.FREEZER = { type: 3, value: "FREEZER" }; + _IfcElectricApplianceTypeEnum.FRIDGE_FREEZER = { type: 3, value: "FRIDGE_FREEZER" }; + _IfcElectricApplianceTypeEnum.HANDDRYER = { type: 3, value: "HANDDRYER" }; + _IfcElectricApplianceTypeEnum.KITCHENMACHINE = { type: 3, value: "KITCHENMACHINE" }; + _IfcElectricApplianceTypeEnum.MICROWAVE = { type: 3, value: "MICROWAVE" }; + _IfcElectricApplianceTypeEnum.PHOTOCOPIER = { type: 3, value: "PHOTOCOPIER" }; + _IfcElectricApplianceTypeEnum.REFRIGERATOR = { type: 3, value: "REFRIGERATOR" }; + _IfcElectricApplianceTypeEnum.TUMBLEDRYER = { type: 3, value: "TUMBLEDRYER" }; + _IfcElectricApplianceTypeEnum.VENDINGMACHINE = { type: 3, value: "VENDINGMACHINE" }; + _IfcElectricApplianceTypeEnum.WASHINGMACHINE = { type: 3, value: "WASHINGMACHINE" }; + _IfcElectricApplianceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricApplianceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricApplianceTypeEnum = _IfcElectricApplianceTypeEnum; + IFC42.IfcElectricApplianceTypeEnum = IfcElectricApplianceTypeEnum; + const _IfcElectricDistributionBoardTypeEnum = class _IfcElectricDistributionBoardTypeEnum { + }; + _IfcElectricDistributionBoardTypeEnum.CONSUMERUNIT = { type: 3, value: "CONSUMERUNIT" }; + _IfcElectricDistributionBoardTypeEnum.DISTRIBUTIONBOARD = { type: 3, value: "DISTRIBUTIONBOARD" }; + _IfcElectricDistributionBoardTypeEnum.MOTORCONTROLCENTRE = { type: 3, value: "MOTORCONTROLCENTRE" }; + _IfcElectricDistributionBoardTypeEnum.SWITCHBOARD = { type: 3, value: "SWITCHBOARD" }; + _IfcElectricDistributionBoardTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricDistributionBoardTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricDistributionBoardTypeEnum = _IfcElectricDistributionBoardTypeEnum; + IFC42.IfcElectricDistributionBoardTypeEnum = IfcElectricDistributionBoardTypeEnum; + const _IfcElectricFlowStorageDeviceTypeEnum = class _IfcElectricFlowStorageDeviceTypeEnum { + }; + _IfcElectricFlowStorageDeviceTypeEnum.BATTERY = { type: 3, value: "BATTERY" }; + _IfcElectricFlowStorageDeviceTypeEnum.CAPACITORBANK = { type: 3, value: "CAPACITORBANK" }; + _IfcElectricFlowStorageDeviceTypeEnum.HARMONICFILTER = { type: 3, value: "HARMONICFILTER" }; + _IfcElectricFlowStorageDeviceTypeEnum.INDUCTORBANK = { type: 3, value: "INDUCTORBANK" }; + _IfcElectricFlowStorageDeviceTypeEnum.UPS = { type: 3, value: "UPS" }; + _IfcElectricFlowStorageDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricFlowStorageDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricFlowStorageDeviceTypeEnum = _IfcElectricFlowStorageDeviceTypeEnum; + IFC42.IfcElectricFlowStorageDeviceTypeEnum = IfcElectricFlowStorageDeviceTypeEnum; + const _IfcElectricGeneratorTypeEnum = class _IfcElectricGeneratorTypeEnum { + }; + _IfcElectricGeneratorTypeEnum.CHP = { type: 3, value: "CHP" }; + _IfcElectricGeneratorTypeEnum.ENGINEGENERATOR = { type: 3, value: "ENGINEGENERATOR" }; + _IfcElectricGeneratorTypeEnum.STANDALONE = { type: 3, value: "STANDALONE" }; + _IfcElectricGeneratorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricGeneratorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricGeneratorTypeEnum = _IfcElectricGeneratorTypeEnum; + IFC42.IfcElectricGeneratorTypeEnum = IfcElectricGeneratorTypeEnum; + const _IfcElectricMotorTypeEnum = class _IfcElectricMotorTypeEnum { + }; + _IfcElectricMotorTypeEnum.DC = { type: 3, value: "DC" }; + _IfcElectricMotorTypeEnum.INDUCTION = { type: 3, value: "INDUCTION" }; + _IfcElectricMotorTypeEnum.POLYPHASE = { type: 3, value: "POLYPHASE" }; + _IfcElectricMotorTypeEnum.RELUCTANCESYNCHRONOUS = { type: 3, value: "RELUCTANCESYNCHRONOUS" }; + _IfcElectricMotorTypeEnum.SYNCHRONOUS = { type: 3, value: "SYNCHRONOUS" }; + _IfcElectricMotorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricMotorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricMotorTypeEnum = _IfcElectricMotorTypeEnum; + IFC42.IfcElectricMotorTypeEnum = IfcElectricMotorTypeEnum; + const _IfcElectricTimeControlTypeEnum = class _IfcElectricTimeControlTypeEnum { + }; + _IfcElectricTimeControlTypeEnum.TIMECLOCK = { type: 3, value: "TIMECLOCK" }; + _IfcElectricTimeControlTypeEnum.TIMEDELAY = { type: 3, value: "TIMEDELAY" }; + _IfcElectricTimeControlTypeEnum.RELAY = { type: 3, value: "RELAY" }; + _IfcElectricTimeControlTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricTimeControlTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricTimeControlTypeEnum = _IfcElectricTimeControlTypeEnum; + IFC42.IfcElectricTimeControlTypeEnum = IfcElectricTimeControlTypeEnum; + const _IfcElementAssemblyTypeEnum = class _IfcElementAssemblyTypeEnum { + }; + _IfcElementAssemblyTypeEnum.ACCESSORY_ASSEMBLY = { type: 3, value: "ACCESSORY_ASSEMBLY" }; + _IfcElementAssemblyTypeEnum.ARCH = { type: 3, value: "ARCH" }; + _IfcElementAssemblyTypeEnum.BEAM_GRID = { type: 3, value: "BEAM_GRID" }; + _IfcElementAssemblyTypeEnum.BRACED_FRAME = { type: 3, value: "BRACED_FRAME" }; + _IfcElementAssemblyTypeEnum.GIRDER = { type: 3, value: "GIRDER" }; + _IfcElementAssemblyTypeEnum.REINFORCEMENT_UNIT = { type: 3, value: "REINFORCEMENT_UNIT" }; + _IfcElementAssemblyTypeEnum.RIGID_FRAME = { type: 3, value: "RIGID_FRAME" }; + _IfcElementAssemblyTypeEnum.SLAB_FIELD = { type: 3, value: "SLAB_FIELD" }; + _IfcElementAssemblyTypeEnum.TRUSS = { type: 3, value: "TRUSS" }; + _IfcElementAssemblyTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElementAssemblyTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElementAssemblyTypeEnum = _IfcElementAssemblyTypeEnum; + IFC42.IfcElementAssemblyTypeEnum = IfcElementAssemblyTypeEnum; + const _IfcElementCompositionEnum = class _IfcElementCompositionEnum { + }; + _IfcElementCompositionEnum.COMPLEX = { type: 3, value: "COMPLEX" }; + _IfcElementCompositionEnum.ELEMENT = { type: 3, value: "ELEMENT" }; + _IfcElementCompositionEnum.PARTIAL = { type: 3, value: "PARTIAL" }; + let IfcElementCompositionEnum = _IfcElementCompositionEnum; + IFC42.IfcElementCompositionEnum = IfcElementCompositionEnum; + const _IfcEngineTypeEnum = class _IfcEngineTypeEnum { + }; + _IfcEngineTypeEnum.EXTERNALCOMBUSTION = { type: 3, value: "EXTERNALCOMBUSTION" }; + _IfcEngineTypeEnum.INTERNALCOMBUSTION = { type: 3, value: "INTERNALCOMBUSTION" }; + _IfcEngineTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEngineTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEngineTypeEnum = _IfcEngineTypeEnum; + IFC42.IfcEngineTypeEnum = IfcEngineTypeEnum; + const _IfcEvaporativeCoolerTypeEnum = class _IfcEvaporativeCoolerTypeEnum { + }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVEAIRWASHER = { type: 3, value: "DIRECTEVAPORATIVEAIRWASHER" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTEVAPORATIVEPACKAGEAIRCOOLER = { type: 3, value: "INDIRECTEVAPORATIVEPACKAGEAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTEVAPORATIVEWETCOIL = { type: 3, value: "INDIRECTEVAPORATIVEWETCOIL" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER = { type: 3, value: "INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTDIRECTCOMBINATION = { type: 3, value: "INDIRECTDIRECTCOMBINATION" }; + _IfcEvaporativeCoolerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEvaporativeCoolerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEvaporativeCoolerTypeEnum = _IfcEvaporativeCoolerTypeEnum; + IFC42.IfcEvaporativeCoolerTypeEnum = IfcEvaporativeCoolerTypeEnum; + const _IfcEvaporatorTypeEnum = class _IfcEvaporatorTypeEnum { + }; + _IfcEvaporatorTypeEnum.DIRECTEXPANSION = { type: 3, value: "DIRECTEXPANSION" }; + _IfcEvaporatorTypeEnum.DIRECTEXPANSIONSHELLANDTUBE = { type: 3, value: "DIRECTEXPANSIONSHELLANDTUBE" }; + _IfcEvaporatorTypeEnum.DIRECTEXPANSIONTUBEINTUBE = { type: 3, value: "DIRECTEXPANSIONTUBEINTUBE" }; + _IfcEvaporatorTypeEnum.DIRECTEXPANSIONBRAZEDPLATE = { type: 3, value: "DIRECTEXPANSIONBRAZEDPLATE" }; + _IfcEvaporatorTypeEnum.FLOODEDSHELLANDTUBE = { type: 3, value: "FLOODEDSHELLANDTUBE" }; + _IfcEvaporatorTypeEnum.SHELLANDCOIL = { type: 3, value: "SHELLANDCOIL" }; + _IfcEvaporatorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEvaporatorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEvaporatorTypeEnum = _IfcEvaporatorTypeEnum; + IFC42.IfcEvaporatorTypeEnum = IfcEvaporatorTypeEnum; + const _IfcEventTriggerTypeEnum = class _IfcEventTriggerTypeEnum { + }; + _IfcEventTriggerTypeEnum.EVENTRULE = { type: 3, value: "EVENTRULE" }; + _IfcEventTriggerTypeEnum.EVENTMESSAGE = { type: 3, value: "EVENTMESSAGE" }; + _IfcEventTriggerTypeEnum.EVENTTIME = { type: 3, value: "EVENTTIME" }; + _IfcEventTriggerTypeEnum.EVENTCOMPLEX = { type: 3, value: "EVENTCOMPLEX" }; + _IfcEventTriggerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEventTriggerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEventTriggerTypeEnum = _IfcEventTriggerTypeEnum; + IFC42.IfcEventTriggerTypeEnum = IfcEventTriggerTypeEnum; + const _IfcEventTypeEnum = class _IfcEventTypeEnum { + }; + _IfcEventTypeEnum.STARTEVENT = { type: 3, value: "STARTEVENT" }; + _IfcEventTypeEnum.ENDEVENT = { type: 3, value: "ENDEVENT" }; + _IfcEventTypeEnum.INTERMEDIATEEVENT = { type: 3, value: "INTERMEDIATEEVENT" }; + _IfcEventTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEventTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEventTypeEnum = _IfcEventTypeEnum; + IFC42.IfcEventTypeEnum = IfcEventTypeEnum; + const _IfcExternalSpatialElementTypeEnum = class _IfcExternalSpatialElementTypeEnum { + }; + _IfcExternalSpatialElementTypeEnum.EXTERNAL = { type: 3, value: "EXTERNAL" }; + _IfcExternalSpatialElementTypeEnum.EXTERNAL_EARTH = { type: 3, value: "EXTERNAL_EARTH" }; + _IfcExternalSpatialElementTypeEnum.EXTERNAL_WATER = { type: 3, value: "EXTERNAL_WATER" }; + _IfcExternalSpatialElementTypeEnum.EXTERNAL_FIRE = { type: 3, value: "EXTERNAL_FIRE" }; + _IfcExternalSpatialElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcExternalSpatialElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcExternalSpatialElementTypeEnum = _IfcExternalSpatialElementTypeEnum; + IFC42.IfcExternalSpatialElementTypeEnum = IfcExternalSpatialElementTypeEnum; + const _IfcFanTypeEnum = class _IfcFanTypeEnum { + }; + _IfcFanTypeEnum.CENTRIFUGALFORWARDCURVED = { type: 3, value: "CENTRIFUGALFORWARDCURVED" }; + _IfcFanTypeEnum.CENTRIFUGALRADIAL = { type: 3, value: "CENTRIFUGALRADIAL" }; + _IfcFanTypeEnum.CENTRIFUGALBACKWARDINCLINEDCURVED = { type: 3, value: "CENTRIFUGALBACKWARDINCLINEDCURVED" }; + _IfcFanTypeEnum.CENTRIFUGALAIRFOIL = { type: 3, value: "CENTRIFUGALAIRFOIL" }; + _IfcFanTypeEnum.TUBEAXIAL = { type: 3, value: "TUBEAXIAL" }; + _IfcFanTypeEnum.VANEAXIAL = { type: 3, value: "VANEAXIAL" }; + _IfcFanTypeEnum.PROPELLORAXIAL = { type: 3, value: "PROPELLORAXIAL" }; + _IfcFanTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFanTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFanTypeEnum = _IfcFanTypeEnum; + IFC42.IfcFanTypeEnum = IfcFanTypeEnum; + const _IfcFastenerTypeEnum = class _IfcFastenerTypeEnum { + }; + _IfcFastenerTypeEnum.GLUE = { type: 3, value: "GLUE" }; + _IfcFastenerTypeEnum.MORTAR = { type: 3, value: "MORTAR" }; + _IfcFastenerTypeEnum.WELD = { type: 3, value: "WELD" }; + _IfcFastenerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFastenerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFastenerTypeEnum = _IfcFastenerTypeEnum; + IFC42.IfcFastenerTypeEnum = IfcFastenerTypeEnum; + const _IfcFilterTypeEnum = class _IfcFilterTypeEnum { + }; + _IfcFilterTypeEnum.AIRPARTICLEFILTER = { type: 3, value: "AIRPARTICLEFILTER" }; + _IfcFilterTypeEnum.COMPRESSEDAIRFILTER = { type: 3, value: "COMPRESSEDAIRFILTER" }; + _IfcFilterTypeEnum.ODORFILTER = { type: 3, value: "ODORFILTER" }; + _IfcFilterTypeEnum.OILFILTER = { type: 3, value: "OILFILTER" }; + _IfcFilterTypeEnum.STRAINER = { type: 3, value: "STRAINER" }; + _IfcFilterTypeEnum.WATERFILTER = { type: 3, value: "WATERFILTER" }; + _IfcFilterTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFilterTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFilterTypeEnum = _IfcFilterTypeEnum; + IFC42.IfcFilterTypeEnum = IfcFilterTypeEnum; + const _IfcFireSuppressionTerminalTypeEnum = class _IfcFireSuppressionTerminalTypeEnum { + }; + _IfcFireSuppressionTerminalTypeEnum.BREECHINGINLET = { type: 3, value: "BREECHINGINLET" }; + _IfcFireSuppressionTerminalTypeEnum.FIREHYDRANT = { type: 3, value: "FIREHYDRANT" }; + _IfcFireSuppressionTerminalTypeEnum.HOSEREEL = { type: 3, value: "HOSEREEL" }; + _IfcFireSuppressionTerminalTypeEnum.SPRINKLER = { type: 3, value: "SPRINKLER" }; + _IfcFireSuppressionTerminalTypeEnum.SPRINKLERDEFLECTOR = { type: 3, value: "SPRINKLERDEFLECTOR" }; + _IfcFireSuppressionTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFireSuppressionTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFireSuppressionTerminalTypeEnum = _IfcFireSuppressionTerminalTypeEnum; + IFC42.IfcFireSuppressionTerminalTypeEnum = IfcFireSuppressionTerminalTypeEnum; + const _IfcFlowDirectionEnum = class _IfcFlowDirectionEnum { + }; + _IfcFlowDirectionEnum.SOURCE = { type: 3, value: "SOURCE" }; + _IfcFlowDirectionEnum.SINK = { type: 3, value: "SINK" }; + _IfcFlowDirectionEnum.SOURCEANDSINK = { type: 3, value: "SOURCEANDSINK" }; + _IfcFlowDirectionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFlowDirectionEnum = _IfcFlowDirectionEnum; + IFC42.IfcFlowDirectionEnum = IfcFlowDirectionEnum; + const _IfcFlowInstrumentTypeEnum = class _IfcFlowInstrumentTypeEnum { + }; + _IfcFlowInstrumentTypeEnum.PRESSUREGAUGE = { type: 3, value: "PRESSUREGAUGE" }; + _IfcFlowInstrumentTypeEnum.THERMOMETER = { type: 3, value: "THERMOMETER" }; + _IfcFlowInstrumentTypeEnum.AMMETER = { type: 3, value: "AMMETER" }; + _IfcFlowInstrumentTypeEnum.FREQUENCYMETER = { type: 3, value: "FREQUENCYMETER" }; + _IfcFlowInstrumentTypeEnum.POWERFACTORMETER = { type: 3, value: "POWERFACTORMETER" }; + _IfcFlowInstrumentTypeEnum.PHASEANGLEMETER = { type: 3, value: "PHASEANGLEMETER" }; + _IfcFlowInstrumentTypeEnum.VOLTMETER_PEAK = { type: 3, value: "VOLTMETER_PEAK" }; + _IfcFlowInstrumentTypeEnum.VOLTMETER_RMS = { type: 3, value: "VOLTMETER_RMS" }; + _IfcFlowInstrumentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFlowInstrumentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFlowInstrumentTypeEnum = _IfcFlowInstrumentTypeEnum; + IFC42.IfcFlowInstrumentTypeEnum = IfcFlowInstrumentTypeEnum; + const _IfcFlowMeterTypeEnum = class _IfcFlowMeterTypeEnum { + }; + _IfcFlowMeterTypeEnum.ENERGYMETER = { type: 3, value: "ENERGYMETER" }; + _IfcFlowMeterTypeEnum.GASMETER = { type: 3, value: "GASMETER" }; + _IfcFlowMeterTypeEnum.OILMETER = { type: 3, value: "OILMETER" }; + _IfcFlowMeterTypeEnum.WATERMETER = { type: 3, value: "WATERMETER" }; + _IfcFlowMeterTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFlowMeterTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFlowMeterTypeEnum = _IfcFlowMeterTypeEnum; + IFC42.IfcFlowMeterTypeEnum = IfcFlowMeterTypeEnum; + const _IfcFootingTypeEnum = class _IfcFootingTypeEnum { + }; + _IfcFootingTypeEnum.CAISSON_FOUNDATION = { type: 3, value: "CAISSON_FOUNDATION" }; + _IfcFootingTypeEnum.FOOTING_BEAM = { type: 3, value: "FOOTING_BEAM" }; + _IfcFootingTypeEnum.PAD_FOOTING = { type: 3, value: "PAD_FOOTING" }; + _IfcFootingTypeEnum.PILE_CAP = { type: 3, value: "PILE_CAP" }; + _IfcFootingTypeEnum.STRIP_FOOTING = { type: 3, value: "STRIP_FOOTING" }; + _IfcFootingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFootingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFootingTypeEnum = _IfcFootingTypeEnum; + IFC42.IfcFootingTypeEnum = IfcFootingTypeEnum; + const _IfcFurnitureTypeEnum = class _IfcFurnitureTypeEnum { + }; + _IfcFurnitureTypeEnum.CHAIR = { type: 3, value: "CHAIR" }; + _IfcFurnitureTypeEnum.TABLE = { type: 3, value: "TABLE" }; + _IfcFurnitureTypeEnum.DESK = { type: 3, value: "DESK" }; + _IfcFurnitureTypeEnum.BED = { type: 3, value: "BED" }; + _IfcFurnitureTypeEnum.FILECABINET = { type: 3, value: "FILECABINET" }; + _IfcFurnitureTypeEnum.SHELF = { type: 3, value: "SHELF" }; + _IfcFurnitureTypeEnum.SOFA = { type: 3, value: "SOFA" }; + _IfcFurnitureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFurnitureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFurnitureTypeEnum = _IfcFurnitureTypeEnum; + IFC42.IfcFurnitureTypeEnum = IfcFurnitureTypeEnum; + const _IfcGeographicElementTypeEnum = class _IfcGeographicElementTypeEnum { + }; + _IfcGeographicElementTypeEnum.TERRAIN = { type: 3, value: "TERRAIN" }; + _IfcGeographicElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcGeographicElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcGeographicElementTypeEnum = _IfcGeographicElementTypeEnum; + IFC42.IfcGeographicElementTypeEnum = IfcGeographicElementTypeEnum; + const _IfcGeometricProjectionEnum = class _IfcGeometricProjectionEnum { + }; + _IfcGeometricProjectionEnum.GRAPH_VIEW = { type: 3, value: "GRAPH_VIEW" }; + _IfcGeometricProjectionEnum.SKETCH_VIEW = { type: 3, value: "SKETCH_VIEW" }; + _IfcGeometricProjectionEnum.MODEL_VIEW = { type: 3, value: "MODEL_VIEW" }; + _IfcGeometricProjectionEnum.PLAN_VIEW = { type: 3, value: "PLAN_VIEW" }; + _IfcGeometricProjectionEnum.REFLECTED_PLAN_VIEW = { type: 3, value: "REFLECTED_PLAN_VIEW" }; + _IfcGeometricProjectionEnum.SECTION_VIEW = { type: 3, value: "SECTION_VIEW" }; + _IfcGeometricProjectionEnum.ELEVATION_VIEW = { type: 3, value: "ELEVATION_VIEW" }; + _IfcGeometricProjectionEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcGeometricProjectionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcGeometricProjectionEnum = _IfcGeometricProjectionEnum; + IFC42.IfcGeometricProjectionEnum = IfcGeometricProjectionEnum; + const _IfcGlobalOrLocalEnum = class _IfcGlobalOrLocalEnum { + }; + _IfcGlobalOrLocalEnum.GLOBAL_COORDS = { type: 3, value: "GLOBAL_COORDS" }; + _IfcGlobalOrLocalEnum.LOCAL_COORDS = { type: 3, value: "LOCAL_COORDS" }; + let IfcGlobalOrLocalEnum = _IfcGlobalOrLocalEnum; + IFC42.IfcGlobalOrLocalEnum = IfcGlobalOrLocalEnum; + const _IfcGridTypeEnum = class _IfcGridTypeEnum { + }; + _IfcGridTypeEnum.RECTANGULAR = { type: 3, value: "RECTANGULAR" }; + _IfcGridTypeEnum.RADIAL = { type: 3, value: "RADIAL" }; + _IfcGridTypeEnum.TRIANGULAR = { type: 3, value: "TRIANGULAR" }; + _IfcGridTypeEnum.IRREGULAR = { type: 3, value: "IRREGULAR" }; + _IfcGridTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcGridTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcGridTypeEnum = _IfcGridTypeEnum; + IFC42.IfcGridTypeEnum = IfcGridTypeEnum; + const _IfcHeatExchangerTypeEnum = class _IfcHeatExchangerTypeEnum { + }; + _IfcHeatExchangerTypeEnum.PLATE = { type: 3, value: "PLATE" }; + _IfcHeatExchangerTypeEnum.SHELLANDTUBE = { type: 3, value: "SHELLANDTUBE" }; + _IfcHeatExchangerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcHeatExchangerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcHeatExchangerTypeEnum = _IfcHeatExchangerTypeEnum; + IFC42.IfcHeatExchangerTypeEnum = IfcHeatExchangerTypeEnum; + const _IfcHumidifierTypeEnum = class _IfcHumidifierTypeEnum { + }; + _IfcHumidifierTypeEnum.STEAMINJECTION = { type: 3, value: "STEAMINJECTION" }; + _IfcHumidifierTypeEnum.ADIABATICAIRWASHER = { type: 3, value: "ADIABATICAIRWASHER" }; + _IfcHumidifierTypeEnum.ADIABATICPAN = { type: 3, value: "ADIABATICPAN" }; + _IfcHumidifierTypeEnum.ADIABATICWETTEDELEMENT = { type: 3, value: "ADIABATICWETTEDELEMENT" }; + _IfcHumidifierTypeEnum.ADIABATICATOMIZING = { type: 3, value: "ADIABATICATOMIZING" }; + _IfcHumidifierTypeEnum.ADIABATICULTRASONIC = { type: 3, value: "ADIABATICULTRASONIC" }; + _IfcHumidifierTypeEnum.ADIABATICRIGIDMEDIA = { type: 3, value: "ADIABATICRIGIDMEDIA" }; + _IfcHumidifierTypeEnum.ADIABATICCOMPRESSEDAIRNOZZLE = { type: 3, value: "ADIABATICCOMPRESSEDAIRNOZZLE" }; + _IfcHumidifierTypeEnum.ASSISTEDELECTRIC = { type: 3, value: "ASSISTEDELECTRIC" }; + _IfcHumidifierTypeEnum.ASSISTEDNATURALGAS = { type: 3, value: "ASSISTEDNATURALGAS" }; + _IfcHumidifierTypeEnum.ASSISTEDPROPANE = { type: 3, value: "ASSISTEDPROPANE" }; + _IfcHumidifierTypeEnum.ASSISTEDBUTANE = { type: 3, value: "ASSISTEDBUTANE" }; + _IfcHumidifierTypeEnum.ASSISTEDSTEAM = { type: 3, value: "ASSISTEDSTEAM" }; + _IfcHumidifierTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcHumidifierTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcHumidifierTypeEnum = _IfcHumidifierTypeEnum; + IFC42.IfcHumidifierTypeEnum = IfcHumidifierTypeEnum; + const _IfcInterceptorTypeEnum = class _IfcInterceptorTypeEnum { + }; + _IfcInterceptorTypeEnum.CYCLONIC = { type: 3, value: "CYCLONIC" }; + _IfcInterceptorTypeEnum.GREASE = { type: 3, value: "GREASE" }; + _IfcInterceptorTypeEnum.OIL = { type: 3, value: "OIL" }; + _IfcInterceptorTypeEnum.PETROL = { type: 3, value: "PETROL" }; + _IfcInterceptorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcInterceptorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcInterceptorTypeEnum = _IfcInterceptorTypeEnum; + IFC42.IfcInterceptorTypeEnum = IfcInterceptorTypeEnum; + const _IfcInternalOrExternalEnum = class _IfcInternalOrExternalEnum { + }; + _IfcInternalOrExternalEnum.INTERNAL = { type: 3, value: "INTERNAL" }; + _IfcInternalOrExternalEnum.EXTERNAL = { type: 3, value: "EXTERNAL" }; + _IfcInternalOrExternalEnum.EXTERNAL_EARTH = { type: 3, value: "EXTERNAL_EARTH" }; + _IfcInternalOrExternalEnum.EXTERNAL_WATER = { type: 3, value: "EXTERNAL_WATER" }; + _IfcInternalOrExternalEnum.EXTERNAL_FIRE = { type: 3, value: "EXTERNAL_FIRE" }; + _IfcInternalOrExternalEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcInternalOrExternalEnum = _IfcInternalOrExternalEnum; + IFC42.IfcInternalOrExternalEnum = IfcInternalOrExternalEnum; + const _IfcInventoryTypeEnum = class _IfcInventoryTypeEnum { + }; + _IfcInventoryTypeEnum.ASSETINVENTORY = { type: 3, value: "ASSETINVENTORY" }; + _IfcInventoryTypeEnum.SPACEINVENTORY = { type: 3, value: "SPACEINVENTORY" }; + _IfcInventoryTypeEnum.FURNITUREINVENTORY = { type: 3, value: "FURNITUREINVENTORY" }; + _IfcInventoryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcInventoryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcInventoryTypeEnum = _IfcInventoryTypeEnum; + IFC42.IfcInventoryTypeEnum = IfcInventoryTypeEnum; + const _IfcJunctionBoxTypeEnum = class _IfcJunctionBoxTypeEnum { + }; + _IfcJunctionBoxTypeEnum.DATA = { type: 3, value: "DATA" }; + _IfcJunctionBoxTypeEnum.POWER = { type: 3, value: "POWER" }; + _IfcJunctionBoxTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcJunctionBoxTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcJunctionBoxTypeEnum = _IfcJunctionBoxTypeEnum; + IFC42.IfcJunctionBoxTypeEnum = IfcJunctionBoxTypeEnum; + const _IfcKnotType = class _IfcKnotType { + }; + _IfcKnotType.UNIFORM_KNOTS = { type: 3, value: "UNIFORM_KNOTS" }; + _IfcKnotType.QUASI_UNIFORM_KNOTS = { type: 3, value: "QUASI_UNIFORM_KNOTS" }; + _IfcKnotType.PIECEWISE_BEZIER_KNOTS = { type: 3, value: "PIECEWISE_BEZIER_KNOTS" }; + _IfcKnotType.UNSPECIFIED = { type: 3, value: "UNSPECIFIED" }; + let IfcKnotType = _IfcKnotType; + IFC42.IfcKnotType = IfcKnotType; + const _IfcLaborResourceTypeEnum = class _IfcLaborResourceTypeEnum { + }; + _IfcLaborResourceTypeEnum.ADMINISTRATION = { type: 3, value: "ADMINISTRATION" }; + _IfcLaborResourceTypeEnum.CARPENTRY = { type: 3, value: "CARPENTRY" }; + _IfcLaborResourceTypeEnum.CLEANING = { type: 3, value: "CLEANING" }; + _IfcLaborResourceTypeEnum.CONCRETE = { type: 3, value: "CONCRETE" }; + _IfcLaborResourceTypeEnum.DRYWALL = { type: 3, value: "DRYWALL" }; + _IfcLaborResourceTypeEnum.ELECTRIC = { type: 3, value: "ELECTRIC" }; + _IfcLaborResourceTypeEnum.FINISHING = { type: 3, value: "FINISHING" }; + _IfcLaborResourceTypeEnum.FLOORING = { type: 3, value: "FLOORING" }; + _IfcLaborResourceTypeEnum.GENERAL = { type: 3, value: "GENERAL" }; + _IfcLaborResourceTypeEnum.HVAC = { type: 3, value: "HVAC" }; + _IfcLaborResourceTypeEnum.LANDSCAPING = { type: 3, value: "LANDSCAPING" }; + _IfcLaborResourceTypeEnum.MASONRY = { type: 3, value: "MASONRY" }; + _IfcLaborResourceTypeEnum.PAINTING = { type: 3, value: "PAINTING" }; + _IfcLaborResourceTypeEnum.PAVING = { type: 3, value: "PAVING" }; + _IfcLaborResourceTypeEnum.PLUMBING = { type: 3, value: "PLUMBING" }; + _IfcLaborResourceTypeEnum.ROOFING = { type: 3, value: "ROOFING" }; + _IfcLaborResourceTypeEnum.SITEGRADING = { type: 3, value: "SITEGRADING" }; + _IfcLaborResourceTypeEnum.STEELWORK = { type: 3, value: "STEELWORK" }; + _IfcLaborResourceTypeEnum.SURVEYING = { type: 3, value: "SURVEYING" }; + _IfcLaborResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLaborResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLaborResourceTypeEnum = _IfcLaborResourceTypeEnum; + IFC42.IfcLaborResourceTypeEnum = IfcLaborResourceTypeEnum; + const _IfcLampTypeEnum = class _IfcLampTypeEnum { + }; + _IfcLampTypeEnum.COMPACTFLUORESCENT = { type: 3, value: "COMPACTFLUORESCENT" }; + _IfcLampTypeEnum.FLUORESCENT = { type: 3, value: "FLUORESCENT" }; + _IfcLampTypeEnum.HALOGEN = { type: 3, value: "HALOGEN" }; + _IfcLampTypeEnum.HIGHPRESSUREMERCURY = { type: 3, value: "HIGHPRESSUREMERCURY" }; + _IfcLampTypeEnum.HIGHPRESSURESODIUM = { type: 3, value: "HIGHPRESSURESODIUM" }; + _IfcLampTypeEnum.LED = { type: 3, value: "LED" }; + _IfcLampTypeEnum.METALHALIDE = { type: 3, value: "METALHALIDE" }; + _IfcLampTypeEnum.OLED = { type: 3, value: "OLED" }; + _IfcLampTypeEnum.TUNGSTENFILAMENT = { type: 3, value: "TUNGSTENFILAMENT" }; + _IfcLampTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLampTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLampTypeEnum = _IfcLampTypeEnum; + IFC42.IfcLampTypeEnum = IfcLampTypeEnum; + const _IfcLayerSetDirectionEnum = class _IfcLayerSetDirectionEnum { + }; + _IfcLayerSetDirectionEnum.AXIS1 = { type: 3, value: "AXIS1" }; + _IfcLayerSetDirectionEnum.AXIS2 = { type: 3, value: "AXIS2" }; + _IfcLayerSetDirectionEnum.AXIS3 = { type: 3, value: "AXIS3" }; + let IfcLayerSetDirectionEnum = _IfcLayerSetDirectionEnum; + IFC42.IfcLayerSetDirectionEnum = IfcLayerSetDirectionEnum; + const _IfcLightDistributionCurveEnum = class _IfcLightDistributionCurveEnum { + }; + _IfcLightDistributionCurveEnum.TYPE_A = { type: 3, value: "TYPE_A" }; + _IfcLightDistributionCurveEnum.TYPE_B = { type: 3, value: "TYPE_B" }; + _IfcLightDistributionCurveEnum.TYPE_C = { type: 3, value: "TYPE_C" }; + _IfcLightDistributionCurveEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLightDistributionCurveEnum = _IfcLightDistributionCurveEnum; + IFC42.IfcLightDistributionCurveEnum = IfcLightDistributionCurveEnum; + const _IfcLightEmissionSourceEnum = class _IfcLightEmissionSourceEnum { + }; + _IfcLightEmissionSourceEnum.COMPACTFLUORESCENT = { type: 3, value: "COMPACTFLUORESCENT" }; + _IfcLightEmissionSourceEnum.FLUORESCENT = { type: 3, value: "FLUORESCENT" }; + _IfcLightEmissionSourceEnum.HIGHPRESSUREMERCURY = { type: 3, value: "HIGHPRESSUREMERCURY" }; + _IfcLightEmissionSourceEnum.HIGHPRESSURESODIUM = { type: 3, value: "HIGHPRESSURESODIUM" }; + _IfcLightEmissionSourceEnum.LIGHTEMITTINGDIODE = { type: 3, value: "LIGHTEMITTINGDIODE" }; + _IfcLightEmissionSourceEnum.LOWPRESSURESODIUM = { type: 3, value: "LOWPRESSURESODIUM" }; + _IfcLightEmissionSourceEnum.LOWVOLTAGEHALOGEN = { type: 3, value: "LOWVOLTAGEHALOGEN" }; + _IfcLightEmissionSourceEnum.MAINVOLTAGEHALOGEN = { type: 3, value: "MAINVOLTAGEHALOGEN" }; + _IfcLightEmissionSourceEnum.METALHALIDE = { type: 3, value: "METALHALIDE" }; + _IfcLightEmissionSourceEnum.TUNGSTENFILAMENT = { type: 3, value: "TUNGSTENFILAMENT" }; + _IfcLightEmissionSourceEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLightEmissionSourceEnum = _IfcLightEmissionSourceEnum; + IFC42.IfcLightEmissionSourceEnum = IfcLightEmissionSourceEnum; + const _IfcLightFixtureTypeEnum = class _IfcLightFixtureTypeEnum { + }; + _IfcLightFixtureTypeEnum.POINTSOURCE = { type: 3, value: "POINTSOURCE" }; + _IfcLightFixtureTypeEnum.DIRECTIONSOURCE = { type: 3, value: "DIRECTIONSOURCE" }; + _IfcLightFixtureTypeEnum.SECURITYLIGHTING = { type: 3, value: "SECURITYLIGHTING" }; + _IfcLightFixtureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLightFixtureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLightFixtureTypeEnum = _IfcLightFixtureTypeEnum; + IFC42.IfcLightFixtureTypeEnum = IfcLightFixtureTypeEnum; + const _IfcLoadGroupTypeEnum = class _IfcLoadGroupTypeEnum { + }; + _IfcLoadGroupTypeEnum.LOAD_GROUP = { type: 3, value: "LOAD_GROUP" }; + _IfcLoadGroupTypeEnum.LOAD_CASE = { type: 3, value: "LOAD_CASE" }; + _IfcLoadGroupTypeEnum.LOAD_COMBINATION = { type: 3, value: "LOAD_COMBINATION" }; + _IfcLoadGroupTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLoadGroupTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLoadGroupTypeEnum = _IfcLoadGroupTypeEnum; + IFC42.IfcLoadGroupTypeEnum = IfcLoadGroupTypeEnum; + const _IfcLogicalOperatorEnum = class _IfcLogicalOperatorEnum { + }; + _IfcLogicalOperatorEnum.LOGICALAND = { type: 3, value: "LOGICALAND" }; + _IfcLogicalOperatorEnum.LOGICALOR = { type: 3, value: "LOGICALOR" }; + _IfcLogicalOperatorEnum.LOGICALXOR = { type: 3, value: "LOGICALXOR" }; + _IfcLogicalOperatorEnum.LOGICALNOTAND = { type: 3, value: "LOGICALNOTAND" }; + _IfcLogicalOperatorEnum.LOGICALNOTOR = { type: 3, value: "LOGICALNOTOR" }; + let IfcLogicalOperatorEnum = _IfcLogicalOperatorEnum; + IFC42.IfcLogicalOperatorEnum = IfcLogicalOperatorEnum; + const _IfcMechanicalFastenerTypeEnum = class _IfcMechanicalFastenerTypeEnum { + }; + _IfcMechanicalFastenerTypeEnum.ANCHORBOLT = { type: 3, value: "ANCHORBOLT" }; + _IfcMechanicalFastenerTypeEnum.BOLT = { type: 3, value: "BOLT" }; + _IfcMechanicalFastenerTypeEnum.DOWEL = { type: 3, value: "DOWEL" }; + _IfcMechanicalFastenerTypeEnum.NAIL = { type: 3, value: "NAIL" }; + _IfcMechanicalFastenerTypeEnum.NAILPLATE = { type: 3, value: "NAILPLATE" }; + _IfcMechanicalFastenerTypeEnum.RIVET = { type: 3, value: "RIVET" }; + _IfcMechanicalFastenerTypeEnum.SCREW = { type: 3, value: "SCREW" }; + _IfcMechanicalFastenerTypeEnum.SHEARCONNECTOR = { type: 3, value: "SHEARCONNECTOR" }; + _IfcMechanicalFastenerTypeEnum.STAPLE = { type: 3, value: "STAPLE" }; + _IfcMechanicalFastenerTypeEnum.STUDSHEARCONNECTOR = { type: 3, value: "STUDSHEARCONNECTOR" }; + _IfcMechanicalFastenerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMechanicalFastenerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMechanicalFastenerTypeEnum = _IfcMechanicalFastenerTypeEnum; + IFC42.IfcMechanicalFastenerTypeEnum = IfcMechanicalFastenerTypeEnum; + const _IfcMedicalDeviceTypeEnum = class _IfcMedicalDeviceTypeEnum { + }; + _IfcMedicalDeviceTypeEnum.AIRSTATION = { type: 3, value: "AIRSTATION" }; + _IfcMedicalDeviceTypeEnum.FEEDAIRUNIT = { type: 3, value: "FEEDAIRUNIT" }; + _IfcMedicalDeviceTypeEnum.OXYGENGENERATOR = { type: 3, value: "OXYGENGENERATOR" }; + _IfcMedicalDeviceTypeEnum.OXYGENPLANT = { type: 3, value: "OXYGENPLANT" }; + _IfcMedicalDeviceTypeEnum.VACUUMSTATION = { type: 3, value: "VACUUMSTATION" }; + _IfcMedicalDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMedicalDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMedicalDeviceTypeEnum = _IfcMedicalDeviceTypeEnum; + IFC42.IfcMedicalDeviceTypeEnum = IfcMedicalDeviceTypeEnum; + const _IfcMemberTypeEnum = class _IfcMemberTypeEnum { + }; + _IfcMemberTypeEnum.BRACE = { type: 3, value: "BRACE" }; + _IfcMemberTypeEnum.CHORD = { type: 3, value: "CHORD" }; + _IfcMemberTypeEnum.COLLAR = { type: 3, value: "COLLAR" }; + _IfcMemberTypeEnum.MEMBER = { type: 3, value: "MEMBER" }; + _IfcMemberTypeEnum.MULLION = { type: 3, value: "MULLION" }; + _IfcMemberTypeEnum.PLATE = { type: 3, value: "PLATE" }; + _IfcMemberTypeEnum.POST = { type: 3, value: "POST" }; + _IfcMemberTypeEnum.PURLIN = { type: 3, value: "PURLIN" }; + _IfcMemberTypeEnum.RAFTER = { type: 3, value: "RAFTER" }; + _IfcMemberTypeEnum.STRINGER = { type: 3, value: "STRINGER" }; + _IfcMemberTypeEnum.STRUT = { type: 3, value: "STRUT" }; + _IfcMemberTypeEnum.STUD = { type: 3, value: "STUD" }; + _IfcMemberTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMemberTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMemberTypeEnum = _IfcMemberTypeEnum; + IFC42.IfcMemberTypeEnum = IfcMemberTypeEnum; + const _IfcMotorConnectionTypeEnum = class _IfcMotorConnectionTypeEnum { + }; + _IfcMotorConnectionTypeEnum.BELTDRIVE = { type: 3, value: "BELTDRIVE" }; + _IfcMotorConnectionTypeEnum.COUPLING = { type: 3, value: "COUPLING" }; + _IfcMotorConnectionTypeEnum.DIRECTDRIVE = { type: 3, value: "DIRECTDRIVE" }; + _IfcMotorConnectionTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMotorConnectionTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMotorConnectionTypeEnum = _IfcMotorConnectionTypeEnum; + IFC42.IfcMotorConnectionTypeEnum = IfcMotorConnectionTypeEnum; + const _IfcNullStyle = class _IfcNullStyle { + }; + _IfcNullStyle.NULL = { type: 3, value: "NULL" }; + let IfcNullStyle = _IfcNullStyle; + IFC42.IfcNullStyle = IfcNullStyle; + const _IfcObjectTypeEnum = class _IfcObjectTypeEnum { + }; + _IfcObjectTypeEnum.PRODUCT = { type: 3, value: "PRODUCT" }; + _IfcObjectTypeEnum.PROCESS = { type: 3, value: "PROCESS" }; + _IfcObjectTypeEnum.CONTROL = { type: 3, value: "CONTROL" }; + _IfcObjectTypeEnum.RESOURCE = { type: 3, value: "RESOURCE" }; + _IfcObjectTypeEnum.ACTOR = { type: 3, value: "ACTOR" }; + _IfcObjectTypeEnum.GROUP = { type: 3, value: "GROUP" }; + _IfcObjectTypeEnum.PROJECT = { type: 3, value: "PROJECT" }; + _IfcObjectTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcObjectTypeEnum = _IfcObjectTypeEnum; + IFC42.IfcObjectTypeEnum = IfcObjectTypeEnum; + const _IfcObjectiveEnum = class _IfcObjectiveEnum { + }; + _IfcObjectiveEnum.CODECOMPLIANCE = { type: 3, value: "CODECOMPLIANCE" }; + _IfcObjectiveEnum.CODEWAIVER = { type: 3, value: "CODEWAIVER" }; + _IfcObjectiveEnum.DESIGNINTENT = { type: 3, value: "DESIGNINTENT" }; + _IfcObjectiveEnum.EXTERNAL = { type: 3, value: "EXTERNAL" }; + _IfcObjectiveEnum.HEALTHANDSAFETY = { type: 3, value: "HEALTHANDSAFETY" }; + _IfcObjectiveEnum.MERGECONFLICT = { type: 3, value: "MERGECONFLICT" }; + _IfcObjectiveEnum.MODELVIEW = { type: 3, value: "MODELVIEW" }; + _IfcObjectiveEnum.PARAMETER = { type: 3, value: "PARAMETER" }; + _IfcObjectiveEnum.REQUIREMENT = { type: 3, value: "REQUIREMENT" }; + _IfcObjectiveEnum.SPECIFICATION = { type: 3, value: "SPECIFICATION" }; + _IfcObjectiveEnum.TRIGGERCONDITION = { type: 3, value: "TRIGGERCONDITION" }; + _IfcObjectiveEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcObjectiveEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcObjectiveEnum = _IfcObjectiveEnum; + IFC42.IfcObjectiveEnum = IfcObjectiveEnum; + const _IfcOccupantTypeEnum = class _IfcOccupantTypeEnum { + }; + _IfcOccupantTypeEnum.ASSIGNEE = { type: 3, value: "ASSIGNEE" }; + _IfcOccupantTypeEnum.ASSIGNOR = { type: 3, value: "ASSIGNOR" }; + _IfcOccupantTypeEnum.LESSEE = { type: 3, value: "LESSEE" }; + _IfcOccupantTypeEnum.LESSOR = { type: 3, value: "LESSOR" }; + _IfcOccupantTypeEnum.LETTINGAGENT = { type: 3, value: "LETTINGAGENT" }; + _IfcOccupantTypeEnum.OWNER = { type: 3, value: "OWNER" }; + _IfcOccupantTypeEnum.TENANT = { type: 3, value: "TENANT" }; + _IfcOccupantTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcOccupantTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcOccupantTypeEnum = _IfcOccupantTypeEnum; + IFC42.IfcOccupantTypeEnum = IfcOccupantTypeEnum; + const _IfcOpeningElementTypeEnum = class _IfcOpeningElementTypeEnum { + }; + _IfcOpeningElementTypeEnum.OPENING = { type: 3, value: "OPENING" }; + _IfcOpeningElementTypeEnum.RECESS = { type: 3, value: "RECESS" }; + _IfcOpeningElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcOpeningElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcOpeningElementTypeEnum = _IfcOpeningElementTypeEnum; + IFC42.IfcOpeningElementTypeEnum = IfcOpeningElementTypeEnum; + const _IfcOutletTypeEnum = class _IfcOutletTypeEnum { + }; + _IfcOutletTypeEnum.AUDIOVISUALOUTLET = { type: 3, value: "AUDIOVISUALOUTLET" }; + _IfcOutletTypeEnum.COMMUNICATIONSOUTLET = { type: 3, value: "COMMUNICATIONSOUTLET" }; + _IfcOutletTypeEnum.POWEROUTLET = { type: 3, value: "POWEROUTLET" }; + _IfcOutletTypeEnum.DATAOUTLET = { type: 3, value: "DATAOUTLET" }; + _IfcOutletTypeEnum.TELEPHONEOUTLET = { type: 3, value: "TELEPHONEOUTLET" }; + _IfcOutletTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcOutletTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcOutletTypeEnum = _IfcOutletTypeEnum; + IFC42.IfcOutletTypeEnum = IfcOutletTypeEnum; + const _IfcPerformanceHistoryTypeEnum = class _IfcPerformanceHistoryTypeEnum { + }; + _IfcPerformanceHistoryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPerformanceHistoryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPerformanceHistoryTypeEnum = _IfcPerformanceHistoryTypeEnum; + IFC42.IfcPerformanceHistoryTypeEnum = IfcPerformanceHistoryTypeEnum; + const _IfcPermeableCoveringOperationEnum = class _IfcPermeableCoveringOperationEnum { + }; + _IfcPermeableCoveringOperationEnum.GRILL = { type: 3, value: "GRILL" }; + _IfcPermeableCoveringOperationEnum.LOUVER = { type: 3, value: "LOUVER" }; + _IfcPermeableCoveringOperationEnum.SCREEN = { type: 3, value: "SCREEN" }; + _IfcPermeableCoveringOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPermeableCoveringOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPermeableCoveringOperationEnum = _IfcPermeableCoveringOperationEnum; + IFC42.IfcPermeableCoveringOperationEnum = IfcPermeableCoveringOperationEnum; + const _IfcPermitTypeEnum = class _IfcPermitTypeEnum { + }; + _IfcPermitTypeEnum.ACCESS = { type: 3, value: "ACCESS" }; + _IfcPermitTypeEnum.BUILDING = { type: 3, value: "BUILDING" }; + _IfcPermitTypeEnum.WORK = { type: 3, value: "WORK" }; + _IfcPermitTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPermitTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPermitTypeEnum = _IfcPermitTypeEnum; + IFC42.IfcPermitTypeEnum = IfcPermitTypeEnum; + const _IfcPhysicalOrVirtualEnum = class _IfcPhysicalOrVirtualEnum { + }; + _IfcPhysicalOrVirtualEnum.PHYSICAL = { type: 3, value: "PHYSICAL" }; + _IfcPhysicalOrVirtualEnum.VIRTUAL = { type: 3, value: "VIRTUAL" }; + _IfcPhysicalOrVirtualEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPhysicalOrVirtualEnum = _IfcPhysicalOrVirtualEnum; + IFC42.IfcPhysicalOrVirtualEnum = IfcPhysicalOrVirtualEnum; + const _IfcPileConstructionEnum = class _IfcPileConstructionEnum { + }; + _IfcPileConstructionEnum.CAST_IN_PLACE = { type: 3, value: "CAST_IN_PLACE" }; + _IfcPileConstructionEnum.COMPOSITE = { type: 3, value: "COMPOSITE" }; + _IfcPileConstructionEnum.PRECAST_CONCRETE = { type: 3, value: "PRECAST_CONCRETE" }; + _IfcPileConstructionEnum.PREFAB_STEEL = { type: 3, value: "PREFAB_STEEL" }; + _IfcPileConstructionEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPileConstructionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPileConstructionEnum = _IfcPileConstructionEnum; + IFC42.IfcPileConstructionEnum = IfcPileConstructionEnum; + const _IfcPileTypeEnum = class _IfcPileTypeEnum { + }; + _IfcPileTypeEnum.BORED = { type: 3, value: "BORED" }; + _IfcPileTypeEnum.DRIVEN = { type: 3, value: "DRIVEN" }; + _IfcPileTypeEnum.JETGROUTING = { type: 3, value: "JETGROUTING" }; + _IfcPileTypeEnum.COHESION = { type: 3, value: "COHESION" }; + _IfcPileTypeEnum.FRICTION = { type: 3, value: "FRICTION" }; + _IfcPileTypeEnum.SUPPORT = { type: 3, value: "SUPPORT" }; + _IfcPileTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPileTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPileTypeEnum = _IfcPileTypeEnum; + IFC42.IfcPileTypeEnum = IfcPileTypeEnum; + const _IfcPipeFittingTypeEnum = class _IfcPipeFittingTypeEnum { + }; + _IfcPipeFittingTypeEnum.BEND = { type: 3, value: "BEND" }; + _IfcPipeFittingTypeEnum.CONNECTOR = { type: 3, value: "CONNECTOR" }; + _IfcPipeFittingTypeEnum.ENTRY = { type: 3, value: "ENTRY" }; + _IfcPipeFittingTypeEnum.EXIT = { type: 3, value: "EXIT" }; + _IfcPipeFittingTypeEnum.JUNCTION = { type: 3, value: "JUNCTION" }; + _IfcPipeFittingTypeEnum.OBSTRUCTION = { type: 3, value: "OBSTRUCTION" }; + _IfcPipeFittingTypeEnum.TRANSITION = { type: 3, value: "TRANSITION" }; + _IfcPipeFittingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPipeFittingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPipeFittingTypeEnum = _IfcPipeFittingTypeEnum; + IFC42.IfcPipeFittingTypeEnum = IfcPipeFittingTypeEnum; + const _IfcPipeSegmentTypeEnum = class _IfcPipeSegmentTypeEnum { + }; + _IfcPipeSegmentTypeEnum.CULVERT = { type: 3, value: "CULVERT" }; + _IfcPipeSegmentTypeEnum.FLEXIBLESEGMENT = { type: 3, value: "FLEXIBLESEGMENT" }; + _IfcPipeSegmentTypeEnum.RIGIDSEGMENT = { type: 3, value: "RIGIDSEGMENT" }; + _IfcPipeSegmentTypeEnum.GUTTER = { type: 3, value: "GUTTER" }; + _IfcPipeSegmentTypeEnum.SPOOL = { type: 3, value: "SPOOL" }; + _IfcPipeSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPipeSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPipeSegmentTypeEnum = _IfcPipeSegmentTypeEnum; + IFC42.IfcPipeSegmentTypeEnum = IfcPipeSegmentTypeEnum; + const _IfcPlateTypeEnum = class _IfcPlateTypeEnum { + }; + _IfcPlateTypeEnum.CURTAIN_PANEL = { type: 3, value: "CURTAIN_PANEL" }; + _IfcPlateTypeEnum.SHEET = { type: 3, value: "SHEET" }; + _IfcPlateTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPlateTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPlateTypeEnum = _IfcPlateTypeEnum; + IFC42.IfcPlateTypeEnum = IfcPlateTypeEnum; + const _IfcPreferredSurfaceCurveRepresentation = class _IfcPreferredSurfaceCurveRepresentation { + }; + _IfcPreferredSurfaceCurveRepresentation.CURVE3D = { type: 3, value: "CURVE3D" }; + _IfcPreferredSurfaceCurveRepresentation.PCURVE_S1 = { type: 3, value: "PCURVE_S1" }; + _IfcPreferredSurfaceCurveRepresentation.PCURVE_S2 = { type: 3, value: "PCURVE_S2" }; + let IfcPreferredSurfaceCurveRepresentation = _IfcPreferredSurfaceCurveRepresentation; + IFC42.IfcPreferredSurfaceCurveRepresentation = IfcPreferredSurfaceCurveRepresentation; + const _IfcProcedureTypeEnum = class _IfcProcedureTypeEnum { + }; + _IfcProcedureTypeEnum.ADVICE_CAUTION = { type: 3, value: "ADVICE_CAUTION" }; + _IfcProcedureTypeEnum.ADVICE_NOTE = { type: 3, value: "ADVICE_NOTE" }; + _IfcProcedureTypeEnum.ADVICE_WARNING = { type: 3, value: "ADVICE_WARNING" }; + _IfcProcedureTypeEnum.CALIBRATION = { type: 3, value: "CALIBRATION" }; + _IfcProcedureTypeEnum.DIAGNOSTIC = { type: 3, value: "DIAGNOSTIC" }; + _IfcProcedureTypeEnum.SHUTDOWN = { type: 3, value: "SHUTDOWN" }; + _IfcProcedureTypeEnum.STARTUP = { type: 3, value: "STARTUP" }; + _IfcProcedureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProcedureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProcedureTypeEnum = _IfcProcedureTypeEnum; + IFC42.IfcProcedureTypeEnum = IfcProcedureTypeEnum; + const _IfcProfileTypeEnum = class _IfcProfileTypeEnum { + }; + _IfcProfileTypeEnum.CURVE = { type: 3, value: "CURVE" }; + _IfcProfileTypeEnum.AREA = { type: 3, value: "AREA" }; + let IfcProfileTypeEnum = _IfcProfileTypeEnum; + IFC42.IfcProfileTypeEnum = IfcProfileTypeEnum; + const _IfcProjectOrderTypeEnum = class _IfcProjectOrderTypeEnum { + }; + _IfcProjectOrderTypeEnum.CHANGEORDER = { type: 3, value: "CHANGEORDER" }; + _IfcProjectOrderTypeEnum.MAINTENANCEWORKORDER = { type: 3, value: "MAINTENANCEWORKORDER" }; + _IfcProjectOrderTypeEnum.MOVEORDER = { type: 3, value: "MOVEORDER" }; + _IfcProjectOrderTypeEnum.PURCHASEORDER = { type: 3, value: "PURCHASEORDER" }; + _IfcProjectOrderTypeEnum.WORKORDER = { type: 3, value: "WORKORDER" }; + _IfcProjectOrderTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProjectOrderTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProjectOrderTypeEnum = _IfcProjectOrderTypeEnum; + IFC42.IfcProjectOrderTypeEnum = IfcProjectOrderTypeEnum; + const _IfcProjectedOrTrueLengthEnum = class _IfcProjectedOrTrueLengthEnum { + }; + _IfcProjectedOrTrueLengthEnum.PROJECTED_LENGTH = { type: 3, value: "PROJECTED_LENGTH" }; + _IfcProjectedOrTrueLengthEnum.TRUE_LENGTH = { type: 3, value: "TRUE_LENGTH" }; + let IfcProjectedOrTrueLengthEnum = _IfcProjectedOrTrueLengthEnum; + IFC42.IfcProjectedOrTrueLengthEnum = IfcProjectedOrTrueLengthEnum; + const _IfcProjectionElementTypeEnum = class _IfcProjectionElementTypeEnum { + }; + _IfcProjectionElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProjectionElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProjectionElementTypeEnum = _IfcProjectionElementTypeEnum; + IFC42.IfcProjectionElementTypeEnum = IfcProjectionElementTypeEnum; + const _IfcPropertySetTemplateTypeEnum = class _IfcPropertySetTemplateTypeEnum { + }; + _IfcPropertySetTemplateTypeEnum.PSET_TYPEDRIVENONLY = { type: 3, value: "PSET_TYPEDRIVENONLY" }; + _IfcPropertySetTemplateTypeEnum.PSET_TYPEDRIVENOVERRIDE = { type: 3, value: "PSET_TYPEDRIVENOVERRIDE" }; + _IfcPropertySetTemplateTypeEnum.PSET_OCCURRENCEDRIVEN = { type: 3, value: "PSET_OCCURRENCEDRIVEN" }; + _IfcPropertySetTemplateTypeEnum.PSET_PERFORMANCEDRIVEN = { type: 3, value: "PSET_PERFORMANCEDRIVEN" }; + _IfcPropertySetTemplateTypeEnum.QTO_TYPEDRIVENONLY = { type: 3, value: "QTO_TYPEDRIVENONLY" }; + _IfcPropertySetTemplateTypeEnum.QTO_TYPEDRIVENOVERRIDE = { type: 3, value: "QTO_TYPEDRIVENOVERRIDE" }; + _IfcPropertySetTemplateTypeEnum.QTO_OCCURRENCEDRIVEN = { type: 3, value: "QTO_OCCURRENCEDRIVEN" }; + _IfcPropertySetTemplateTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPropertySetTemplateTypeEnum = _IfcPropertySetTemplateTypeEnum; + IFC42.IfcPropertySetTemplateTypeEnum = IfcPropertySetTemplateTypeEnum; + const _IfcProtectiveDeviceTrippingUnitTypeEnum = class _IfcProtectiveDeviceTrippingUnitTypeEnum { + }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.ELECTRONIC = { type: 3, value: "ELECTRONIC" }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.ELECTROMAGNETIC = { type: 3, value: "ELECTROMAGNETIC" }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.RESIDUALCURRENT = { type: 3, value: "RESIDUALCURRENT" }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.THERMAL = { type: 3, value: "THERMAL" }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProtectiveDeviceTrippingUnitTypeEnum = _IfcProtectiveDeviceTrippingUnitTypeEnum; + IFC42.IfcProtectiveDeviceTrippingUnitTypeEnum = IfcProtectiveDeviceTrippingUnitTypeEnum; + const _IfcProtectiveDeviceTypeEnum = class _IfcProtectiveDeviceTypeEnum { + }; + _IfcProtectiveDeviceTypeEnum.CIRCUITBREAKER = { type: 3, value: "CIRCUITBREAKER" }; + _IfcProtectiveDeviceTypeEnum.EARTHLEAKAGECIRCUITBREAKER = { type: 3, value: "EARTHLEAKAGECIRCUITBREAKER" }; + _IfcProtectiveDeviceTypeEnum.EARTHINGSWITCH = { type: 3, value: "EARTHINGSWITCH" }; + _IfcProtectiveDeviceTypeEnum.FUSEDISCONNECTOR = { type: 3, value: "FUSEDISCONNECTOR" }; + _IfcProtectiveDeviceTypeEnum.RESIDUALCURRENTCIRCUITBREAKER = { type: 3, value: "RESIDUALCURRENTCIRCUITBREAKER" }; + _IfcProtectiveDeviceTypeEnum.RESIDUALCURRENTSWITCH = { type: 3, value: "RESIDUALCURRENTSWITCH" }; + _IfcProtectiveDeviceTypeEnum.VARISTOR = { type: 3, value: "VARISTOR" }; + _IfcProtectiveDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProtectiveDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProtectiveDeviceTypeEnum = _IfcProtectiveDeviceTypeEnum; + IFC42.IfcProtectiveDeviceTypeEnum = IfcProtectiveDeviceTypeEnum; + const _IfcPumpTypeEnum = class _IfcPumpTypeEnum { + }; + _IfcPumpTypeEnum.CIRCULATOR = { type: 3, value: "CIRCULATOR" }; + _IfcPumpTypeEnum.ENDSUCTION = { type: 3, value: "ENDSUCTION" }; + _IfcPumpTypeEnum.SPLITCASE = { type: 3, value: "SPLITCASE" }; + _IfcPumpTypeEnum.SUBMERSIBLEPUMP = { type: 3, value: "SUBMERSIBLEPUMP" }; + _IfcPumpTypeEnum.SUMPPUMP = { type: 3, value: "SUMPPUMP" }; + _IfcPumpTypeEnum.VERTICALINLINE = { type: 3, value: "VERTICALINLINE" }; + _IfcPumpTypeEnum.VERTICALTURBINE = { type: 3, value: "VERTICALTURBINE" }; + _IfcPumpTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPumpTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPumpTypeEnum = _IfcPumpTypeEnum; + IFC42.IfcPumpTypeEnum = IfcPumpTypeEnum; + const _IfcRailingTypeEnum = class _IfcRailingTypeEnum { + }; + _IfcRailingTypeEnum.HANDRAIL = { type: 3, value: "HANDRAIL" }; + _IfcRailingTypeEnum.GUARDRAIL = { type: 3, value: "GUARDRAIL" }; + _IfcRailingTypeEnum.BALUSTRADE = { type: 3, value: "BALUSTRADE" }; + _IfcRailingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRailingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRailingTypeEnum = _IfcRailingTypeEnum; + IFC42.IfcRailingTypeEnum = IfcRailingTypeEnum; + const _IfcRampFlightTypeEnum = class _IfcRampFlightTypeEnum { + }; + _IfcRampFlightTypeEnum.STRAIGHT = { type: 3, value: "STRAIGHT" }; + _IfcRampFlightTypeEnum.SPIRAL = { type: 3, value: "SPIRAL" }; + _IfcRampFlightTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRampFlightTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRampFlightTypeEnum = _IfcRampFlightTypeEnum; + IFC42.IfcRampFlightTypeEnum = IfcRampFlightTypeEnum; + const _IfcRampTypeEnum = class _IfcRampTypeEnum { + }; + _IfcRampTypeEnum.STRAIGHT_RUN_RAMP = { type: 3, value: "STRAIGHT_RUN_RAMP" }; + _IfcRampTypeEnum.TWO_STRAIGHT_RUN_RAMP = { type: 3, value: "TWO_STRAIGHT_RUN_RAMP" }; + _IfcRampTypeEnum.QUARTER_TURN_RAMP = { type: 3, value: "QUARTER_TURN_RAMP" }; + _IfcRampTypeEnum.TWO_QUARTER_TURN_RAMP = { type: 3, value: "TWO_QUARTER_TURN_RAMP" }; + _IfcRampTypeEnum.HALF_TURN_RAMP = { type: 3, value: "HALF_TURN_RAMP" }; + _IfcRampTypeEnum.SPIRAL_RAMP = { type: 3, value: "SPIRAL_RAMP" }; + _IfcRampTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRampTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRampTypeEnum = _IfcRampTypeEnum; + IFC42.IfcRampTypeEnum = IfcRampTypeEnum; + const _IfcRecurrenceTypeEnum = class _IfcRecurrenceTypeEnum { + }; + _IfcRecurrenceTypeEnum.DAILY = { type: 3, value: "DAILY" }; + _IfcRecurrenceTypeEnum.WEEKLY = { type: 3, value: "WEEKLY" }; + _IfcRecurrenceTypeEnum.MONTHLY_BY_DAY_OF_MONTH = { type: 3, value: "MONTHLY_BY_DAY_OF_MONTH" }; + _IfcRecurrenceTypeEnum.MONTHLY_BY_POSITION = { type: 3, value: "MONTHLY_BY_POSITION" }; + _IfcRecurrenceTypeEnum.BY_DAY_COUNT = { type: 3, value: "BY_DAY_COUNT" }; + _IfcRecurrenceTypeEnum.BY_WEEKDAY_COUNT = { type: 3, value: "BY_WEEKDAY_COUNT" }; + _IfcRecurrenceTypeEnum.YEARLY_BY_DAY_OF_MONTH = { type: 3, value: "YEARLY_BY_DAY_OF_MONTH" }; + _IfcRecurrenceTypeEnum.YEARLY_BY_POSITION = { type: 3, value: "YEARLY_BY_POSITION" }; + let IfcRecurrenceTypeEnum = _IfcRecurrenceTypeEnum; + IFC42.IfcRecurrenceTypeEnum = IfcRecurrenceTypeEnum; + const _IfcReflectanceMethodEnum = class _IfcReflectanceMethodEnum { + }; + _IfcReflectanceMethodEnum.BLINN = { type: 3, value: "BLINN" }; + _IfcReflectanceMethodEnum.FLAT = { type: 3, value: "FLAT" }; + _IfcReflectanceMethodEnum.GLASS = { type: 3, value: "GLASS" }; + _IfcReflectanceMethodEnum.MATT = { type: 3, value: "MATT" }; + _IfcReflectanceMethodEnum.METAL = { type: 3, value: "METAL" }; + _IfcReflectanceMethodEnum.MIRROR = { type: 3, value: "MIRROR" }; + _IfcReflectanceMethodEnum.PHONG = { type: 3, value: "PHONG" }; + _IfcReflectanceMethodEnum.PLASTIC = { type: 3, value: "PLASTIC" }; + _IfcReflectanceMethodEnum.STRAUSS = { type: 3, value: "STRAUSS" }; + _IfcReflectanceMethodEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReflectanceMethodEnum = _IfcReflectanceMethodEnum; + IFC42.IfcReflectanceMethodEnum = IfcReflectanceMethodEnum; + const _IfcReinforcingBarRoleEnum = class _IfcReinforcingBarRoleEnum { + }; + _IfcReinforcingBarRoleEnum.MAIN = { type: 3, value: "MAIN" }; + _IfcReinforcingBarRoleEnum.SHEAR = { type: 3, value: "SHEAR" }; + _IfcReinforcingBarRoleEnum.LIGATURE = { type: 3, value: "LIGATURE" }; + _IfcReinforcingBarRoleEnum.STUD = { type: 3, value: "STUD" }; + _IfcReinforcingBarRoleEnum.PUNCHING = { type: 3, value: "PUNCHING" }; + _IfcReinforcingBarRoleEnum.EDGE = { type: 3, value: "EDGE" }; + _IfcReinforcingBarRoleEnum.RING = { type: 3, value: "RING" }; + _IfcReinforcingBarRoleEnum.ANCHORING = { type: 3, value: "ANCHORING" }; + _IfcReinforcingBarRoleEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcReinforcingBarRoleEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReinforcingBarRoleEnum = _IfcReinforcingBarRoleEnum; + IFC42.IfcReinforcingBarRoleEnum = IfcReinforcingBarRoleEnum; + const _IfcReinforcingBarSurfaceEnum = class _IfcReinforcingBarSurfaceEnum { + }; + _IfcReinforcingBarSurfaceEnum.PLAIN = { type: 3, value: "PLAIN" }; + _IfcReinforcingBarSurfaceEnum.TEXTURED = { type: 3, value: "TEXTURED" }; + let IfcReinforcingBarSurfaceEnum = _IfcReinforcingBarSurfaceEnum; + IFC42.IfcReinforcingBarSurfaceEnum = IfcReinforcingBarSurfaceEnum; + const _IfcReinforcingBarTypeEnum = class _IfcReinforcingBarTypeEnum { + }; + _IfcReinforcingBarTypeEnum.ANCHORING = { type: 3, value: "ANCHORING" }; + _IfcReinforcingBarTypeEnum.EDGE = { type: 3, value: "EDGE" }; + _IfcReinforcingBarTypeEnum.LIGATURE = { type: 3, value: "LIGATURE" }; + _IfcReinforcingBarTypeEnum.MAIN = { type: 3, value: "MAIN" }; + _IfcReinforcingBarTypeEnum.PUNCHING = { type: 3, value: "PUNCHING" }; + _IfcReinforcingBarTypeEnum.RING = { type: 3, value: "RING" }; + _IfcReinforcingBarTypeEnum.SHEAR = { type: 3, value: "SHEAR" }; + _IfcReinforcingBarTypeEnum.STUD = { type: 3, value: "STUD" }; + _IfcReinforcingBarTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcReinforcingBarTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReinforcingBarTypeEnum = _IfcReinforcingBarTypeEnum; + IFC42.IfcReinforcingBarTypeEnum = IfcReinforcingBarTypeEnum; + const _IfcReinforcingMeshTypeEnum = class _IfcReinforcingMeshTypeEnum { + }; + _IfcReinforcingMeshTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcReinforcingMeshTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReinforcingMeshTypeEnum = _IfcReinforcingMeshTypeEnum; + IFC42.IfcReinforcingMeshTypeEnum = IfcReinforcingMeshTypeEnum; + const _IfcRoleEnum = class _IfcRoleEnum { + }; + _IfcRoleEnum.SUPPLIER = { type: 3, value: "SUPPLIER" }; + _IfcRoleEnum.MANUFACTURER = { type: 3, value: "MANUFACTURER" }; + _IfcRoleEnum.CONTRACTOR = { type: 3, value: "CONTRACTOR" }; + _IfcRoleEnum.SUBCONTRACTOR = { type: 3, value: "SUBCONTRACTOR" }; + _IfcRoleEnum.ARCHITECT = { type: 3, value: "ARCHITECT" }; + _IfcRoleEnum.STRUCTURALENGINEER = { type: 3, value: "STRUCTURALENGINEER" }; + _IfcRoleEnum.COSTENGINEER = { type: 3, value: "COSTENGINEER" }; + _IfcRoleEnum.CLIENT = { type: 3, value: "CLIENT" }; + _IfcRoleEnum.BUILDINGOWNER = { type: 3, value: "BUILDINGOWNER" }; + _IfcRoleEnum.BUILDINGOPERATOR = { type: 3, value: "BUILDINGOPERATOR" }; + _IfcRoleEnum.MECHANICALENGINEER = { type: 3, value: "MECHANICALENGINEER" }; + _IfcRoleEnum.ELECTRICALENGINEER = { type: 3, value: "ELECTRICALENGINEER" }; + _IfcRoleEnum.PROJECTMANAGER = { type: 3, value: "PROJECTMANAGER" }; + _IfcRoleEnum.FACILITIESMANAGER = { type: 3, value: "FACILITIESMANAGER" }; + _IfcRoleEnum.CIVILENGINEER = { type: 3, value: "CIVILENGINEER" }; + _IfcRoleEnum.COMMISSIONINGENGINEER = { type: 3, value: "COMMISSIONINGENGINEER" }; + _IfcRoleEnum.ENGINEER = { type: 3, value: "ENGINEER" }; + _IfcRoleEnum.OWNER = { type: 3, value: "OWNER" }; + _IfcRoleEnum.CONSULTANT = { type: 3, value: "CONSULTANT" }; + _IfcRoleEnum.CONSTRUCTIONMANAGER = { type: 3, value: "CONSTRUCTIONMANAGER" }; + _IfcRoleEnum.FIELDCONSTRUCTIONMANAGER = { type: 3, value: "FIELDCONSTRUCTIONMANAGER" }; + _IfcRoleEnum.RESELLER = { type: 3, value: "RESELLER" }; + _IfcRoleEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcRoleEnum = _IfcRoleEnum; + IFC42.IfcRoleEnum = IfcRoleEnum; + const _IfcRoofTypeEnum = class _IfcRoofTypeEnum { + }; + _IfcRoofTypeEnum.FLAT_ROOF = { type: 3, value: "FLAT_ROOF" }; + _IfcRoofTypeEnum.SHED_ROOF = { type: 3, value: "SHED_ROOF" }; + _IfcRoofTypeEnum.GABLE_ROOF = { type: 3, value: "GABLE_ROOF" }; + _IfcRoofTypeEnum.HIP_ROOF = { type: 3, value: "HIP_ROOF" }; + _IfcRoofTypeEnum.HIPPED_GABLE_ROOF = { type: 3, value: "HIPPED_GABLE_ROOF" }; + _IfcRoofTypeEnum.GAMBREL_ROOF = { type: 3, value: "GAMBREL_ROOF" }; + _IfcRoofTypeEnum.MANSARD_ROOF = { type: 3, value: "MANSARD_ROOF" }; + _IfcRoofTypeEnum.BARREL_ROOF = { type: 3, value: "BARREL_ROOF" }; + _IfcRoofTypeEnum.RAINBOW_ROOF = { type: 3, value: "RAINBOW_ROOF" }; + _IfcRoofTypeEnum.BUTTERFLY_ROOF = { type: 3, value: "BUTTERFLY_ROOF" }; + _IfcRoofTypeEnum.PAVILION_ROOF = { type: 3, value: "PAVILION_ROOF" }; + _IfcRoofTypeEnum.DOME_ROOF = { type: 3, value: "DOME_ROOF" }; + _IfcRoofTypeEnum.FREEFORM = { type: 3, value: "FREEFORM" }; + _IfcRoofTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRoofTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRoofTypeEnum = _IfcRoofTypeEnum; + IFC42.IfcRoofTypeEnum = IfcRoofTypeEnum; + const _IfcSIPrefix = class _IfcSIPrefix { + }; + _IfcSIPrefix.EXA = { type: 3, value: "EXA" }; + _IfcSIPrefix.PETA = { type: 3, value: "PETA" }; + _IfcSIPrefix.TERA = { type: 3, value: "TERA" }; + _IfcSIPrefix.GIGA = { type: 3, value: "GIGA" }; + _IfcSIPrefix.MEGA = { type: 3, value: "MEGA" }; + _IfcSIPrefix.KILO = { type: 3, value: "KILO" }; + _IfcSIPrefix.HECTO = { type: 3, value: "HECTO" }; + _IfcSIPrefix.DECA = { type: 3, value: "DECA" }; + _IfcSIPrefix.DECI = { type: 3, value: "DECI" }; + _IfcSIPrefix.CENTI = { type: 3, value: "CENTI" }; + _IfcSIPrefix.MILLI = { type: 3, value: "MILLI" }; + _IfcSIPrefix.MICRO = { type: 3, value: "MICRO" }; + _IfcSIPrefix.NANO = { type: 3, value: "NANO" }; + _IfcSIPrefix.PICO = { type: 3, value: "PICO" }; + _IfcSIPrefix.FEMTO = { type: 3, value: "FEMTO" }; + _IfcSIPrefix.ATTO = { type: 3, value: "ATTO" }; + let IfcSIPrefix = _IfcSIPrefix; + IFC42.IfcSIPrefix = IfcSIPrefix; + const _IfcSIUnitName = class _IfcSIUnitName { + }; + _IfcSIUnitName.AMPERE = { type: 3, value: "AMPERE" }; + _IfcSIUnitName.BECQUEREL = { type: 3, value: "BECQUEREL" }; + _IfcSIUnitName.CANDELA = { type: 3, value: "CANDELA" }; + _IfcSIUnitName.COULOMB = { type: 3, value: "COULOMB" }; + _IfcSIUnitName.CUBIC_METRE = { type: 3, value: "CUBIC_METRE" }; + _IfcSIUnitName.DEGREE_CELSIUS = { type: 3, value: "DEGREE_CELSIUS" }; + _IfcSIUnitName.FARAD = { type: 3, value: "FARAD" }; + _IfcSIUnitName.GRAM = { type: 3, value: "GRAM" }; + _IfcSIUnitName.GRAY = { type: 3, value: "GRAY" }; + _IfcSIUnitName.HENRY = { type: 3, value: "HENRY" }; + _IfcSIUnitName.HERTZ = { type: 3, value: "HERTZ" }; + _IfcSIUnitName.JOULE = { type: 3, value: "JOULE" }; + _IfcSIUnitName.KELVIN = { type: 3, value: "KELVIN" }; + _IfcSIUnitName.LUMEN = { type: 3, value: "LUMEN" }; + _IfcSIUnitName.LUX = { type: 3, value: "LUX" }; + _IfcSIUnitName.METRE = { type: 3, value: "METRE" }; + _IfcSIUnitName.MOLE = { type: 3, value: "MOLE" }; + _IfcSIUnitName.NEWTON = { type: 3, value: "NEWTON" }; + _IfcSIUnitName.OHM = { type: 3, value: "OHM" }; + _IfcSIUnitName.PASCAL = { type: 3, value: "PASCAL" }; + _IfcSIUnitName.RADIAN = { type: 3, value: "RADIAN" }; + _IfcSIUnitName.SECOND = { type: 3, value: "SECOND" }; + _IfcSIUnitName.SIEMENS = { type: 3, value: "SIEMENS" }; + _IfcSIUnitName.SIEVERT = { type: 3, value: "SIEVERT" }; + _IfcSIUnitName.SQUARE_METRE = { type: 3, value: "SQUARE_METRE" }; + _IfcSIUnitName.STERADIAN = { type: 3, value: "STERADIAN" }; + _IfcSIUnitName.TESLA = { type: 3, value: "TESLA" }; + _IfcSIUnitName.VOLT = { type: 3, value: "VOLT" }; + _IfcSIUnitName.WATT = { type: 3, value: "WATT" }; + _IfcSIUnitName.WEBER = { type: 3, value: "WEBER" }; + let IfcSIUnitName = _IfcSIUnitName; + IFC42.IfcSIUnitName = IfcSIUnitName; + const _IfcSanitaryTerminalTypeEnum = class _IfcSanitaryTerminalTypeEnum { + }; + _IfcSanitaryTerminalTypeEnum.BATH = { type: 3, value: "BATH" }; + _IfcSanitaryTerminalTypeEnum.BIDET = { type: 3, value: "BIDET" }; + _IfcSanitaryTerminalTypeEnum.CISTERN = { type: 3, value: "CISTERN" }; + _IfcSanitaryTerminalTypeEnum.SHOWER = { type: 3, value: "SHOWER" }; + _IfcSanitaryTerminalTypeEnum.SINK = { type: 3, value: "SINK" }; + _IfcSanitaryTerminalTypeEnum.SANITARYFOUNTAIN = { type: 3, value: "SANITARYFOUNTAIN" }; + _IfcSanitaryTerminalTypeEnum.TOILETPAN = { type: 3, value: "TOILETPAN" }; + _IfcSanitaryTerminalTypeEnum.URINAL = { type: 3, value: "URINAL" }; + _IfcSanitaryTerminalTypeEnum.WASHHANDBASIN = { type: 3, value: "WASHHANDBASIN" }; + _IfcSanitaryTerminalTypeEnum.WCSEAT = { type: 3, value: "WCSEAT" }; + _IfcSanitaryTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSanitaryTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSanitaryTerminalTypeEnum = _IfcSanitaryTerminalTypeEnum; + IFC42.IfcSanitaryTerminalTypeEnum = IfcSanitaryTerminalTypeEnum; + const _IfcSectionTypeEnum = class _IfcSectionTypeEnum { + }; + _IfcSectionTypeEnum.UNIFORM = { type: 3, value: "UNIFORM" }; + _IfcSectionTypeEnum.TAPERED = { type: 3, value: "TAPERED" }; + let IfcSectionTypeEnum = _IfcSectionTypeEnum; + IFC42.IfcSectionTypeEnum = IfcSectionTypeEnum; + const _IfcSensorTypeEnum = class _IfcSensorTypeEnum { + }; + _IfcSensorTypeEnum.COSENSOR = { type: 3, value: "COSENSOR" }; + _IfcSensorTypeEnum.CO2SENSOR = { type: 3, value: "CO2SENSOR" }; + _IfcSensorTypeEnum.CONDUCTANCESENSOR = { type: 3, value: "CONDUCTANCESENSOR" }; + _IfcSensorTypeEnum.CONTACTSENSOR = { type: 3, value: "CONTACTSENSOR" }; + _IfcSensorTypeEnum.FIRESENSOR = { type: 3, value: "FIRESENSOR" }; + _IfcSensorTypeEnum.FLOWSENSOR = { type: 3, value: "FLOWSENSOR" }; + _IfcSensorTypeEnum.FROSTSENSOR = { type: 3, value: "FROSTSENSOR" }; + _IfcSensorTypeEnum.GASSENSOR = { type: 3, value: "GASSENSOR" }; + _IfcSensorTypeEnum.HEATSENSOR = { type: 3, value: "HEATSENSOR" }; + _IfcSensorTypeEnum.HUMIDITYSENSOR = { type: 3, value: "HUMIDITYSENSOR" }; + _IfcSensorTypeEnum.IDENTIFIERSENSOR = { type: 3, value: "IDENTIFIERSENSOR" }; + _IfcSensorTypeEnum.IONCONCENTRATIONSENSOR = { type: 3, value: "IONCONCENTRATIONSENSOR" }; + _IfcSensorTypeEnum.LEVELSENSOR = { type: 3, value: "LEVELSENSOR" }; + _IfcSensorTypeEnum.LIGHTSENSOR = { type: 3, value: "LIGHTSENSOR" }; + _IfcSensorTypeEnum.MOISTURESENSOR = { type: 3, value: "MOISTURESENSOR" }; + _IfcSensorTypeEnum.MOVEMENTSENSOR = { type: 3, value: "MOVEMENTSENSOR" }; + _IfcSensorTypeEnum.PHSENSOR = { type: 3, value: "PHSENSOR" }; + _IfcSensorTypeEnum.PRESSURESENSOR = { type: 3, value: "PRESSURESENSOR" }; + _IfcSensorTypeEnum.RADIATIONSENSOR = { type: 3, value: "RADIATIONSENSOR" }; + _IfcSensorTypeEnum.RADIOACTIVITYSENSOR = { type: 3, value: "RADIOACTIVITYSENSOR" }; + _IfcSensorTypeEnum.SMOKESENSOR = { type: 3, value: "SMOKESENSOR" }; + _IfcSensorTypeEnum.SOUNDSENSOR = { type: 3, value: "SOUNDSENSOR" }; + _IfcSensorTypeEnum.TEMPERATURESENSOR = { type: 3, value: "TEMPERATURESENSOR" }; + _IfcSensorTypeEnum.WINDSENSOR = { type: 3, value: "WINDSENSOR" }; + _IfcSensorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSensorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSensorTypeEnum = _IfcSensorTypeEnum; + IFC42.IfcSensorTypeEnum = IfcSensorTypeEnum; + const _IfcSequenceEnum = class _IfcSequenceEnum { + }; + _IfcSequenceEnum.START_START = { type: 3, value: "START_START" }; + _IfcSequenceEnum.START_FINISH = { type: 3, value: "START_FINISH" }; + _IfcSequenceEnum.FINISH_START = { type: 3, value: "FINISH_START" }; + _IfcSequenceEnum.FINISH_FINISH = { type: 3, value: "FINISH_FINISH" }; + _IfcSequenceEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSequenceEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSequenceEnum = _IfcSequenceEnum; + IFC42.IfcSequenceEnum = IfcSequenceEnum; + const _IfcShadingDeviceTypeEnum = class _IfcShadingDeviceTypeEnum { + }; + _IfcShadingDeviceTypeEnum.JALOUSIE = { type: 3, value: "JALOUSIE" }; + _IfcShadingDeviceTypeEnum.SHUTTER = { type: 3, value: "SHUTTER" }; + _IfcShadingDeviceTypeEnum.AWNING = { type: 3, value: "AWNING" }; + _IfcShadingDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcShadingDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcShadingDeviceTypeEnum = _IfcShadingDeviceTypeEnum; + IFC42.IfcShadingDeviceTypeEnum = IfcShadingDeviceTypeEnum; + const _IfcSimplePropertyTemplateTypeEnum = class _IfcSimplePropertyTemplateTypeEnum { + }; + _IfcSimplePropertyTemplateTypeEnum.P_SINGLEVALUE = { type: 3, value: "P_SINGLEVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.P_ENUMERATEDVALUE = { type: 3, value: "P_ENUMERATEDVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.P_BOUNDEDVALUE = { type: 3, value: "P_BOUNDEDVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.P_LISTVALUE = { type: 3, value: "P_LISTVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.P_TABLEVALUE = { type: 3, value: "P_TABLEVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.P_REFERENCEVALUE = { type: 3, value: "P_REFERENCEVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.Q_LENGTH = { type: 3, value: "Q_LENGTH" }; + _IfcSimplePropertyTemplateTypeEnum.Q_AREA = { type: 3, value: "Q_AREA" }; + _IfcSimplePropertyTemplateTypeEnum.Q_VOLUME = { type: 3, value: "Q_VOLUME" }; + _IfcSimplePropertyTemplateTypeEnum.Q_COUNT = { type: 3, value: "Q_COUNT" }; + _IfcSimplePropertyTemplateTypeEnum.Q_WEIGHT = { type: 3, value: "Q_WEIGHT" }; + _IfcSimplePropertyTemplateTypeEnum.Q_TIME = { type: 3, value: "Q_TIME" }; + let IfcSimplePropertyTemplateTypeEnum = _IfcSimplePropertyTemplateTypeEnum; + IFC42.IfcSimplePropertyTemplateTypeEnum = IfcSimplePropertyTemplateTypeEnum; + const _IfcSlabTypeEnum = class _IfcSlabTypeEnum { + }; + _IfcSlabTypeEnum.FLOOR = { type: 3, value: "FLOOR" }; + _IfcSlabTypeEnum.ROOF = { type: 3, value: "ROOF" }; + _IfcSlabTypeEnum.LANDING = { type: 3, value: "LANDING" }; + _IfcSlabTypeEnum.BASESLAB = { type: 3, value: "BASESLAB" }; + _IfcSlabTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSlabTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSlabTypeEnum = _IfcSlabTypeEnum; + IFC42.IfcSlabTypeEnum = IfcSlabTypeEnum; + const _IfcSolarDeviceTypeEnum = class _IfcSolarDeviceTypeEnum { + }; + _IfcSolarDeviceTypeEnum.SOLARCOLLECTOR = { type: 3, value: "SOLARCOLLECTOR" }; + _IfcSolarDeviceTypeEnum.SOLARPANEL = { type: 3, value: "SOLARPANEL" }; + _IfcSolarDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSolarDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSolarDeviceTypeEnum = _IfcSolarDeviceTypeEnum; + IFC42.IfcSolarDeviceTypeEnum = IfcSolarDeviceTypeEnum; + const _IfcSpaceHeaterTypeEnum = class _IfcSpaceHeaterTypeEnum { + }; + _IfcSpaceHeaterTypeEnum.CONVECTOR = { type: 3, value: "CONVECTOR" }; + _IfcSpaceHeaterTypeEnum.RADIATOR = { type: 3, value: "RADIATOR" }; + _IfcSpaceHeaterTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSpaceHeaterTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSpaceHeaterTypeEnum = _IfcSpaceHeaterTypeEnum; + IFC42.IfcSpaceHeaterTypeEnum = IfcSpaceHeaterTypeEnum; + const _IfcSpaceTypeEnum = class _IfcSpaceTypeEnum { + }; + _IfcSpaceTypeEnum.SPACE = { type: 3, value: "SPACE" }; + _IfcSpaceTypeEnum.PARKING = { type: 3, value: "PARKING" }; + _IfcSpaceTypeEnum.GFA = { type: 3, value: "GFA" }; + _IfcSpaceTypeEnum.INTERNAL = { type: 3, value: "INTERNAL" }; + _IfcSpaceTypeEnum.EXTERNAL = { type: 3, value: "EXTERNAL" }; + _IfcSpaceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSpaceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSpaceTypeEnum = _IfcSpaceTypeEnum; + IFC42.IfcSpaceTypeEnum = IfcSpaceTypeEnum; + const _IfcSpatialZoneTypeEnum = class _IfcSpatialZoneTypeEnum { + }; + _IfcSpatialZoneTypeEnum.CONSTRUCTION = { type: 3, value: "CONSTRUCTION" }; + _IfcSpatialZoneTypeEnum.FIRESAFETY = { type: 3, value: "FIRESAFETY" }; + _IfcSpatialZoneTypeEnum.LIGHTING = { type: 3, value: "LIGHTING" }; + _IfcSpatialZoneTypeEnum.OCCUPANCY = { type: 3, value: "OCCUPANCY" }; + _IfcSpatialZoneTypeEnum.SECURITY = { type: 3, value: "SECURITY" }; + _IfcSpatialZoneTypeEnum.THERMAL = { type: 3, value: "THERMAL" }; + _IfcSpatialZoneTypeEnum.TRANSPORT = { type: 3, value: "TRANSPORT" }; + _IfcSpatialZoneTypeEnum.VENTILATION = { type: 3, value: "VENTILATION" }; + _IfcSpatialZoneTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSpatialZoneTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSpatialZoneTypeEnum = _IfcSpatialZoneTypeEnum; + IFC42.IfcSpatialZoneTypeEnum = IfcSpatialZoneTypeEnum; + const _IfcStackTerminalTypeEnum = class _IfcStackTerminalTypeEnum { + }; + _IfcStackTerminalTypeEnum.BIRDCAGE = { type: 3, value: "BIRDCAGE" }; + _IfcStackTerminalTypeEnum.COWL = { type: 3, value: "COWL" }; + _IfcStackTerminalTypeEnum.RAINWATERHOPPER = { type: 3, value: "RAINWATERHOPPER" }; + _IfcStackTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStackTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStackTerminalTypeEnum = _IfcStackTerminalTypeEnum; + IFC42.IfcStackTerminalTypeEnum = IfcStackTerminalTypeEnum; + const _IfcStairFlightTypeEnum = class _IfcStairFlightTypeEnum { + }; + _IfcStairFlightTypeEnum.STRAIGHT = { type: 3, value: "STRAIGHT" }; + _IfcStairFlightTypeEnum.WINDER = { type: 3, value: "WINDER" }; + _IfcStairFlightTypeEnum.SPIRAL = { type: 3, value: "SPIRAL" }; + _IfcStairFlightTypeEnum.CURVED = { type: 3, value: "CURVED" }; + _IfcStairFlightTypeEnum.FREEFORM = { type: 3, value: "FREEFORM" }; + _IfcStairFlightTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStairFlightTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStairFlightTypeEnum = _IfcStairFlightTypeEnum; + IFC42.IfcStairFlightTypeEnum = IfcStairFlightTypeEnum; + const _IfcStairTypeEnum = class _IfcStairTypeEnum { + }; + _IfcStairTypeEnum.STRAIGHT_RUN_STAIR = { type: 3, value: "STRAIGHT_RUN_STAIR" }; + _IfcStairTypeEnum.TWO_STRAIGHT_RUN_STAIR = { type: 3, value: "TWO_STRAIGHT_RUN_STAIR" }; + _IfcStairTypeEnum.QUARTER_WINDING_STAIR = { type: 3, value: "QUARTER_WINDING_STAIR" }; + _IfcStairTypeEnum.QUARTER_TURN_STAIR = { type: 3, value: "QUARTER_TURN_STAIR" }; + _IfcStairTypeEnum.HALF_WINDING_STAIR = { type: 3, value: "HALF_WINDING_STAIR" }; + _IfcStairTypeEnum.HALF_TURN_STAIR = { type: 3, value: "HALF_TURN_STAIR" }; + _IfcStairTypeEnum.TWO_QUARTER_WINDING_STAIR = { type: 3, value: "TWO_QUARTER_WINDING_STAIR" }; + _IfcStairTypeEnum.TWO_QUARTER_TURN_STAIR = { type: 3, value: "TWO_QUARTER_TURN_STAIR" }; + _IfcStairTypeEnum.THREE_QUARTER_WINDING_STAIR = { type: 3, value: "THREE_QUARTER_WINDING_STAIR" }; + _IfcStairTypeEnum.THREE_QUARTER_TURN_STAIR = { type: 3, value: "THREE_QUARTER_TURN_STAIR" }; + _IfcStairTypeEnum.SPIRAL_STAIR = { type: 3, value: "SPIRAL_STAIR" }; + _IfcStairTypeEnum.DOUBLE_RETURN_STAIR = { type: 3, value: "DOUBLE_RETURN_STAIR" }; + _IfcStairTypeEnum.CURVED_RUN_STAIR = { type: 3, value: "CURVED_RUN_STAIR" }; + _IfcStairTypeEnum.TWO_CURVED_RUN_STAIR = { type: 3, value: "TWO_CURVED_RUN_STAIR" }; + _IfcStairTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStairTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStairTypeEnum = _IfcStairTypeEnum; + IFC42.IfcStairTypeEnum = IfcStairTypeEnum; + const _IfcStateEnum = class _IfcStateEnum { + }; + _IfcStateEnum.READWRITE = { type: 3, value: "READWRITE" }; + _IfcStateEnum.READONLY = { type: 3, value: "READONLY" }; + _IfcStateEnum.LOCKED = { type: 3, value: "LOCKED" }; + _IfcStateEnum.READWRITELOCKED = { type: 3, value: "READWRITELOCKED" }; + _IfcStateEnum.READONLYLOCKED = { type: 3, value: "READONLYLOCKED" }; + let IfcStateEnum = _IfcStateEnum; + IFC42.IfcStateEnum = IfcStateEnum; + const _IfcStructuralCurveActivityTypeEnum = class _IfcStructuralCurveActivityTypeEnum { + }; + _IfcStructuralCurveActivityTypeEnum.CONST = { type: 3, value: "CONST" }; + _IfcStructuralCurveActivityTypeEnum.LINEAR = { type: 3, value: "LINEAR" }; + _IfcStructuralCurveActivityTypeEnum.POLYGONAL = { type: 3, value: "POLYGONAL" }; + _IfcStructuralCurveActivityTypeEnum.EQUIDISTANT = { type: 3, value: "EQUIDISTANT" }; + _IfcStructuralCurveActivityTypeEnum.SINUS = { type: 3, value: "SINUS" }; + _IfcStructuralCurveActivityTypeEnum.PARABOLA = { type: 3, value: "PARABOLA" }; + _IfcStructuralCurveActivityTypeEnum.DISCRETE = { type: 3, value: "DISCRETE" }; + _IfcStructuralCurveActivityTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStructuralCurveActivityTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStructuralCurveActivityTypeEnum = _IfcStructuralCurveActivityTypeEnum; + IFC42.IfcStructuralCurveActivityTypeEnum = IfcStructuralCurveActivityTypeEnum; + const _IfcStructuralCurveMemberTypeEnum = class _IfcStructuralCurveMemberTypeEnum { + }; + _IfcStructuralCurveMemberTypeEnum.RIGID_JOINED_MEMBER = { type: 3, value: "RIGID_JOINED_MEMBER" }; + _IfcStructuralCurveMemberTypeEnum.PIN_JOINED_MEMBER = { type: 3, value: "PIN_JOINED_MEMBER" }; + _IfcStructuralCurveMemberTypeEnum.CABLE = { type: 3, value: "CABLE" }; + _IfcStructuralCurveMemberTypeEnum.TENSION_MEMBER = { type: 3, value: "TENSION_MEMBER" }; + _IfcStructuralCurveMemberTypeEnum.COMPRESSION_MEMBER = { type: 3, value: "COMPRESSION_MEMBER" }; + _IfcStructuralCurveMemberTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStructuralCurveMemberTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStructuralCurveMemberTypeEnum = _IfcStructuralCurveMemberTypeEnum; + IFC42.IfcStructuralCurveMemberTypeEnum = IfcStructuralCurveMemberTypeEnum; + const _IfcStructuralSurfaceActivityTypeEnum = class _IfcStructuralSurfaceActivityTypeEnum { + }; + _IfcStructuralSurfaceActivityTypeEnum.CONST = { type: 3, value: "CONST" }; + _IfcStructuralSurfaceActivityTypeEnum.BILINEAR = { type: 3, value: "BILINEAR" }; + _IfcStructuralSurfaceActivityTypeEnum.DISCRETE = { type: 3, value: "DISCRETE" }; + _IfcStructuralSurfaceActivityTypeEnum.ISOCONTOUR = { type: 3, value: "ISOCONTOUR" }; + _IfcStructuralSurfaceActivityTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStructuralSurfaceActivityTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStructuralSurfaceActivityTypeEnum = _IfcStructuralSurfaceActivityTypeEnum; + IFC42.IfcStructuralSurfaceActivityTypeEnum = IfcStructuralSurfaceActivityTypeEnum; + const _IfcStructuralSurfaceMemberTypeEnum = class _IfcStructuralSurfaceMemberTypeEnum { + }; + _IfcStructuralSurfaceMemberTypeEnum.BENDING_ELEMENT = { type: 3, value: "BENDING_ELEMENT" }; + _IfcStructuralSurfaceMemberTypeEnum.MEMBRANE_ELEMENT = { type: 3, value: "MEMBRANE_ELEMENT" }; + _IfcStructuralSurfaceMemberTypeEnum.SHELL = { type: 3, value: "SHELL" }; + _IfcStructuralSurfaceMemberTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStructuralSurfaceMemberTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStructuralSurfaceMemberTypeEnum = _IfcStructuralSurfaceMemberTypeEnum; + IFC42.IfcStructuralSurfaceMemberTypeEnum = IfcStructuralSurfaceMemberTypeEnum; + const _IfcSubContractResourceTypeEnum = class _IfcSubContractResourceTypeEnum { + }; + _IfcSubContractResourceTypeEnum.PURCHASE = { type: 3, value: "PURCHASE" }; + _IfcSubContractResourceTypeEnum.WORK = { type: 3, value: "WORK" }; + _IfcSubContractResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSubContractResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSubContractResourceTypeEnum = _IfcSubContractResourceTypeEnum; + IFC42.IfcSubContractResourceTypeEnum = IfcSubContractResourceTypeEnum; + const _IfcSurfaceFeatureTypeEnum = class _IfcSurfaceFeatureTypeEnum { + }; + _IfcSurfaceFeatureTypeEnum.MARK = { type: 3, value: "MARK" }; + _IfcSurfaceFeatureTypeEnum.TAG = { type: 3, value: "TAG" }; + _IfcSurfaceFeatureTypeEnum.TREATMENT = { type: 3, value: "TREATMENT" }; + _IfcSurfaceFeatureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSurfaceFeatureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSurfaceFeatureTypeEnum = _IfcSurfaceFeatureTypeEnum; + IFC42.IfcSurfaceFeatureTypeEnum = IfcSurfaceFeatureTypeEnum; + const _IfcSurfaceSide = class _IfcSurfaceSide { + }; + _IfcSurfaceSide.POSITIVE = { type: 3, value: "POSITIVE" }; + _IfcSurfaceSide.NEGATIVE = { type: 3, value: "NEGATIVE" }; + _IfcSurfaceSide.BOTH = { type: 3, value: "BOTH" }; + let IfcSurfaceSide = _IfcSurfaceSide; + IFC42.IfcSurfaceSide = IfcSurfaceSide; + const _IfcSwitchingDeviceTypeEnum = class _IfcSwitchingDeviceTypeEnum { + }; + _IfcSwitchingDeviceTypeEnum.CONTACTOR = { type: 3, value: "CONTACTOR" }; + _IfcSwitchingDeviceTypeEnum.DIMMERSWITCH = { type: 3, value: "DIMMERSWITCH" }; + _IfcSwitchingDeviceTypeEnum.EMERGENCYSTOP = { type: 3, value: "EMERGENCYSTOP" }; + _IfcSwitchingDeviceTypeEnum.KEYPAD = { type: 3, value: "KEYPAD" }; + _IfcSwitchingDeviceTypeEnum.MOMENTARYSWITCH = { type: 3, value: "MOMENTARYSWITCH" }; + _IfcSwitchingDeviceTypeEnum.SELECTORSWITCH = { type: 3, value: "SELECTORSWITCH" }; + _IfcSwitchingDeviceTypeEnum.STARTER = { type: 3, value: "STARTER" }; + _IfcSwitchingDeviceTypeEnum.SWITCHDISCONNECTOR = { type: 3, value: "SWITCHDISCONNECTOR" }; + _IfcSwitchingDeviceTypeEnum.TOGGLESWITCH = { type: 3, value: "TOGGLESWITCH" }; + _IfcSwitchingDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSwitchingDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSwitchingDeviceTypeEnum = _IfcSwitchingDeviceTypeEnum; + IFC42.IfcSwitchingDeviceTypeEnum = IfcSwitchingDeviceTypeEnum; + const _IfcSystemFurnitureElementTypeEnum = class _IfcSystemFurnitureElementTypeEnum { + }; + _IfcSystemFurnitureElementTypeEnum.PANEL = { type: 3, value: "PANEL" }; + _IfcSystemFurnitureElementTypeEnum.WORKSURFACE = { type: 3, value: "WORKSURFACE" }; + _IfcSystemFurnitureElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSystemFurnitureElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSystemFurnitureElementTypeEnum = _IfcSystemFurnitureElementTypeEnum; + IFC42.IfcSystemFurnitureElementTypeEnum = IfcSystemFurnitureElementTypeEnum; + const _IfcTankTypeEnum = class _IfcTankTypeEnum { + }; + _IfcTankTypeEnum.BASIN = { type: 3, value: "BASIN" }; + _IfcTankTypeEnum.BREAKPRESSURE = { type: 3, value: "BREAKPRESSURE" }; + _IfcTankTypeEnum.EXPANSION = { type: 3, value: "EXPANSION" }; + _IfcTankTypeEnum.FEEDANDEXPANSION = { type: 3, value: "FEEDANDEXPANSION" }; + _IfcTankTypeEnum.PRESSUREVESSEL = { type: 3, value: "PRESSUREVESSEL" }; + _IfcTankTypeEnum.STORAGE = { type: 3, value: "STORAGE" }; + _IfcTankTypeEnum.VESSEL = { type: 3, value: "VESSEL" }; + _IfcTankTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTankTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTankTypeEnum = _IfcTankTypeEnum; + IFC42.IfcTankTypeEnum = IfcTankTypeEnum; + const _IfcTaskDurationEnum = class _IfcTaskDurationEnum { + }; + _IfcTaskDurationEnum.ELAPSEDTIME = { type: 3, value: "ELAPSEDTIME" }; + _IfcTaskDurationEnum.WORKTIME = { type: 3, value: "WORKTIME" }; + _IfcTaskDurationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTaskDurationEnum = _IfcTaskDurationEnum; + IFC42.IfcTaskDurationEnum = IfcTaskDurationEnum; + const _IfcTaskTypeEnum = class _IfcTaskTypeEnum { + }; + _IfcTaskTypeEnum.ATTENDANCE = { type: 3, value: "ATTENDANCE" }; + _IfcTaskTypeEnum.CONSTRUCTION = { type: 3, value: "CONSTRUCTION" }; + _IfcTaskTypeEnum.DEMOLITION = { type: 3, value: "DEMOLITION" }; + _IfcTaskTypeEnum.DISMANTLE = { type: 3, value: "DISMANTLE" }; + _IfcTaskTypeEnum.DISPOSAL = { type: 3, value: "DISPOSAL" }; + _IfcTaskTypeEnum.INSTALLATION = { type: 3, value: "INSTALLATION" }; + _IfcTaskTypeEnum.LOGISTIC = { type: 3, value: "LOGISTIC" }; + _IfcTaskTypeEnum.MAINTENANCE = { type: 3, value: "MAINTENANCE" }; + _IfcTaskTypeEnum.MOVE = { type: 3, value: "MOVE" }; + _IfcTaskTypeEnum.OPERATION = { type: 3, value: "OPERATION" }; + _IfcTaskTypeEnum.REMOVAL = { type: 3, value: "REMOVAL" }; + _IfcTaskTypeEnum.RENOVATION = { type: 3, value: "RENOVATION" }; + _IfcTaskTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTaskTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTaskTypeEnum = _IfcTaskTypeEnum; + IFC42.IfcTaskTypeEnum = IfcTaskTypeEnum; + const _IfcTendonAnchorTypeEnum = class _IfcTendonAnchorTypeEnum { + }; + _IfcTendonAnchorTypeEnum.COUPLER = { type: 3, value: "COUPLER" }; + _IfcTendonAnchorTypeEnum.FIXED_END = { type: 3, value: "FIXED_END" }; + _IfcTendonAnchorTypeEnum.TENSIONING_END = { type: 3, value: "TENSIONING_END" }; + _IfcTendonAnchorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTendonAnchorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTendonAnchorTypeEnum = _IfcTendonAnchorTypeEnum; + IFC42.IfcTendonAnchorTypeEnum = IfcTendonAnchorTypeEnum; + const _IfcTendonTypeEnum = class _IfcTendonTypeEnum { + }; + _IfcTendonTypeEnum.BAR = { type: 3, value: "BAR" }; + _IfcTendonTypeEnum.COATED = { type: 3, value: "COATED" }; + _IfcTendonTypeEnum.STRAND = { type: 3, value: "STRAND" }; + _IfcTendonTypeEnum.WIRE = { type: 3, value: "WIRE" }; + _IfcTendonTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTendonTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTendonTypeEnum = _IfcTendonTypeEnum; + IFC42.IfcTendonTypeEnum = IfcTendonTypeEnum; + const _IfcTextPath = class _IfcTextPath { + }; + _IfcTextPath.LEFT = { type: 3, value: "LEFT" }; + _IfcTextPath.RIGHT = { type: 3, value: "RIGHT" }; + _IfcTextPath.UP = { type: 3, value: "UP" }; + _IfcTextPath.DOWN = { type: 3, value: "DOWN" }; + let IfcTextPath = _IfcTextPath; + IFC42.IfcTextPath = IfcTextPath; + const _IfcTimeSeriesDataTypeEnum = class _IfcTimeSeriesDataTypeEnum { + }; + _IfcTimeSeriesDataTypeEnum.CONTINUOUS = { type: 3, value: "CONTINUOUS" }; + _IfcTimeSeriesDataTypeEnum.DISCRETE = { type: 3, value: "DISCRETE" }; + _IfcTimeSeriesDataTypeEnum.DISCRETEBINARY = { type: 3, value: "DISCRETEBINARY" }; + _IfcTimeSeriesDataTypeEnum.PIECEWISEBINARY = { type: 3, value: "PIECEWISEBINARY" }; + _IfcTimeSeriesDataTypeEnum.PIECEWISECONSTANT = { type: 3, value: "PIECEWISECONSTANT" }; + _IfcTimeSeriesDataTypeEnum.PIECEWISECONTINUOUS = { type: 3, value: "PIECEWISECONTINUOUS" }; + _IfcTimeSeriesDataTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTimeSeriesDataTypeEnum = _IfcTimeSeriesDataTypeEnum; + IFC42.IfcTimeSeriesDataTypeEnum = IfcTimeSeriesDataTypeEnum; + const _IfcTransformerTypeEnum = class _IfcTransformerTypeEnum { + }; + _IfcTransformerTypeEnum.CURRENT = { type: 3, value: "CURRENT" }; + _IfcTransformerTypeEnum.FREQUENCY = { type: 3, value: "FREQUENCY" }; + _IfcTransformerTypeEnum.INVERTER = { type: 3, value: "INVERTER" }; + _IfcTransformerTypeEnum.RECTIFIER = { type: 3, value: "RECTIFIER" }; + _IfcTransformerTypeEnum.VOLTAGE = { type: 3, value: "VOLTAGE" }; + _IfcTransformerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTransformerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTransformerTypeEnum = _IfcTransformerTypeEnum; + IFC42.IfcTransformerTypeEnum = IfcTransformerTypeEnum; + const _IfcTransitionCode = class _IfcTransitionCode { + }; + _IfcTransitionCode.DISCONTINUOUS = { type: 3, value: "DISCONTINUOUS" }; + _IfcTransitionCode.CONTINUOUS = { type: 3, value: "CONTINUOUS" }; + _IfcTransitionCode.CONTSAMEGRADIENT = { type: 3, value: "CONTSAMEGRADIENT" }; + _IfcTransitionCode.CONTSAMEGRADIENTSAMECURVATURE = { type: 3, value: "CONTSAMEGRADIENTSAMECURVATURE" }; + let IfcTransitionCode = _IfcTransitionCode; + IFC42.IfcTransitionCode = IfcTransitionCode; + const _IfcTransportElementTypeEnum = class _IfcTransportElementTypeEnum { + }; + _IfcTransportElementTypeEnum.ELEVATOR = { type: 3, value: "ELEVATOR" }; + _IfcTransportElementTypeEnum.ESCALATOR = { type: 3, value: "ESCALATOR" }; + _IfcTransportElementTypeEnum.MOVINGWALKWAY = { type: 3, value: "MOVINGWALKWAY" }; + _IfcTransportElementTypeEnum.CRANEWAY = { type: 3, value: "CRANEWAY" }; + _IfcTransportElementTypeEnum.LIFTINGGEAR = { type: 3, value: "LIFTINGGEAR" }; + _IfcTransportElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTransportElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTransportElementTypeEnum = _IfcTransportElementTypeEnum; + IFC42.IfcTransportElementTypeEnum = IfcTransportElementTypeEnum; + const _IfcTrimmingPreference = class _IfcTrimmingPreference { + }; + _IfcTrimmingPreference.CARTESIAN = { type: 3, value: "CARTESIAN" }; + _IfcTrimmingPreference.PARAMETER = { type: 3, value: "PARAMETER" }; + _IfcTrimmingPreference.UNSPECIFIED = { type: 3, value: "UNSPECIFIED" }; + let IfcTrimmingPreference = _IfcTrimmingPreference; + IFC42.IfcTrimmingPreference = IfcTrimmingPreference; + const _IfcTubeBundleTypeEnum = class _IfcTubeBundleTypeEnum { + }; + _IfcTubeBundleTypeEnum.FINNED = { type: 3, value: "FINNED" }; + _IfcTubeBundleTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTubeBundleTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTubeBundleTypeEnum = _IfcTubeBundleTypeEnum; + IFC42.IfcTubeBundleTypeEnum = IfcTubeBundleTypeEnum; + const _IfcUnitEnum = class _IfcUnitEnum { + }; + _IfcUnitEnum.ABSORBEDDOSEUNIT = { type: 3, value: "ABSORBEDDOSEUNIT" }; + _IfcUnitEnum.AMOUNTOFSUBSTANCEUNIT = { type: 3, value: "AMOUNTOFSUBSTANCEUNIT" }; + _IfcUnitEnum.AREAUNIT = { type: 3, value: "AREAUNIT" }; + _IfcUnitEnum.DOSEEQUIVALENTUNIT = { type: 3, value: "DOSEEQUIVALENTUNIT" }; + _IfcUnitEnum.ELECTRICCAPACITANCEUNIT = { type: 3, value: "ELECTRICCAPACITANCEUNIT" }; + _IfcUnitEnum.ELECTRICCHARGEUNIT = { type: 3, value: "ELECTRICCHARGEUNIT" }; + _IfcUnitEnum.ELECTRICCONDUCTANCEUNIT = { type: 3, value: "ELECTRICCONDUCTANCEUNIT" }; + _IfcUnitEnum.ELECTRICCURRENTUNIT = { type: 3, value: "ELECTRICCURRENTUNIT" }; + _IfcUnitEnum.ELECTRICRESISTANCEUNIT = { type: 3, value: "ELECTRICRESISTANCEUNIT" }; + _IfcUnitEnum.ELECTRICVOLTAGEUNIT = { type: 3, value: "ELECTRICVOLTAGEUNIT" }; + _IfcUnitEnum.ENERGYUNIT = { type: 3, value: "ENERGYUNIT" }; + _IfcUnitEnum.FORCEUNIT = { type: 3, value: "FORCEUNIT" }; + _IfcUnitEnum.FREQUENCYUNIT = { type: 3, value: "FREQUENCYUNIT" }; + _IfcUnitEnum.ILLUMINANCEUNIT = { type: 3, value: "ILLUMINANCEUNIT" }; + _IfcUnitEnum.INDUCTANCEUNIT = { type: 3, value: "INDUCTANCEUNIT" }; + _IfcUnitEnum.LENGTHUNIT = { type: 3, value: "LENGTHUNIT" }; + _IfcUnitEnum.LUMINOUSFLUXUNIT = { type: 3, value: "LUMINOUSFLUXUNIT" }; + _IfcUnitEnum.LUMINOUSINTENSITYUNIT = { type: 3, value: "LUMINOUSINTENSITYUNIT" }; + _IfcUnitEnum.MAGNETICFLUXDENSITYUNIT = { type: 3, value: "MAGNETICFLUXDENSITYUNIT" }; + _IfcUnitEnum.MAGNETICFLUXUNIT = { type: 3, value: "MAGNETICFLUXUNIT" }; + _IfcUnitEnum.MASSUNIT = { type: 3, value: "MASSUNIT" }; + _IfcUnitEnum.PLANEANGLEUNIT = { type: 3, value: "PLANEANGLEUNIT" }; + _IfcUnitEnum.POWERUNIT = { type: 3, value: "POWERUNIT" }; + _IfcUnitEnum.PRESSUREUNIT = { type: 3, value: "PRESSUREUNIT" }; + _IfcUnitEnum.RADIOACTIVITYUNIT = { type: 3, value: "RADIOACTIVITYUNIT" }; + _IfcUnitEnum.SOLIDANGLEUNIT = { type: 3, value: "SOLIDANGLEUNIT" }; + _IfcUnitEnum.THERMODYNAMICTEMPERATUREUNIT = { type: 3, value: "THERMODYNAMICTEMPERATUREUNIT" }; + _IfcUnitEnum.TIMEUNIT = { type: 3, value: "TIMEUNIT" }; + _IfcUnitEnum.VOLUMEUNIT = { type: 3, value: "VOLUMEUNIT" }; + _IfcUnitEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcUnitEnum = _IfcUnitEnum; + IFC42.IfcUnitEnum = IfcUnitEnum; + const _IfcUnitaryControlElementTypeEnum = class _IfcUnitaryControlElementTypeEnum { + }; + _IfcUnitaryControlElementTypeEnum.ALARMPANEL = { type: 3, value: "ALARMPANEL" }; + _IfcUnitaryControlElementTypeEnum.CONTROLPANEL = { type: 3, value: "CONTROLPANEL" }; + _IfcUnitaryControlElementTypeEnum.GASDETECTIONPANEL = { type: 3, value: "GASDETECTIONPANEL" }; + _IfcUnitaryControlElementTypeEnum.INDICATORPANEL = { type: 3, value: "INDICATORPANEL" }; + _IfcUnitaryControlElementTypeEnum.MIMICPANEL = { type: 3, value: "MIMICPANEL" }; + _IfcUnitaryControlElementTypeEnum.HUMIDISTAT = { type: 3, value: "HUMIDISTAT" }; + _IfcUnitaryControlElementTypeEnum.THERMOSTAT = { type: 3, value: "THERMOSTAT" }; + _IfcUnitaryControlElementTypeEnum.WEATHERSTATION = { type: 3, value: "WEATHERSTATION" }; + _IfcUnitaryControlElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcUnitaryControlElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcUnitaryControlElementTypeEnum = _IfcUnitaryControlElementTypeEnum; + IFC42.IfcUnitaryControlElementTypeEnum = IfcUnitaryControlElementTypeEnum; + const _IfcUnitaryEquipmentTypeEnum = class _IfcUnitaryEquipmentTypeEnum { + }; + _IfcUnitaryEquipmentTypeEnum.AIRHANDLER = { type: 3, value: "AIRHANDLER" }; + _IfcUnitaryEquipmentTypeEnum.AIRCONDITIONINGUNIT = { type: 3, value: "AIRCONDITIONINGUNIT" }; + _IfcUnitaryEquipmentTypeEnum.DEHUMIDIFIER = { type: 3, value: "DEHUMIDIFIER" }; + _IfcUnitaryEquipmentTypeEnum.SPLITSYSTEM = { type: 3, value: "SPLITSYSTEM" }; + _IfcUnitaryEquipmentTypeEnum.ROOFTOPUNIT = { type: 3, value: "ROOFTOPUNIT" }; + _IfcUnitaryEquipmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcUnitaryEquipmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcUnitaryEquipmentTypeEnum = _IfcUnitaryEquipmentTypeEnum; + IFC42.IfcUnitaryEquipmentTypeEnum = IfcUnitaryEquipmentTypeEnum; + const _IfcValveTypeEnum = class _IfcValveTypeEnum { + }; + _IfcValveTypeEnum.AIRRELEASE = { type: 3, value: "AIRRELEASE" }; + _IfcValveTypeEnum.ANTIVACUUM = { type: 3, value: "ANTIVACUUM" }; + _IfcValveTypeEnum.CHANGEOVER = { type: 3, value: "CHANGEOVER" }; + _IfcValveTypeEnum.CHECK = { type: 3, value: "CHECK" }; + _IfcValveTypeEnum.COMMISSIONING = { type: 3, value: "COMMISSIONING" }; + _IfcValveTypeEnum.DIVERTING = { type: 3, value: "DIVERTING" }; + _IfcValveTypeEnum.DRAWOFFCOCK = { type: 3, value: "DRAWOFFCOCK" }; + _IfcValveTypeEnum.DOUBLECHECK = { type: 3, value: "DOUBLECHECK" }; + _IfcValveTypeEnum.DOUBLEREGULATING = { type: 3, value: "DOUBLEREGULATING" }; + _IfcValveTypeEnum.FAUCET = { type: 3, value: "FAUCET" }; + _IfcValveTypeEnum.FLUSHING = { type: 3, value: "FLUSHING" }; + _IfcValveTypeEnum.GASCOCK = { type: 3, value: "GASCOCK" }; + _IfcValveTypeEnum.GASTAP = { type: 3, value: "GASTAP" }; + _IfcValveTypeEnum.ISOLATING = { type: 3, value: "ISOLATING" }; + _IfcValveTypeEnum.MIXING = { type: 3, value: "MIXING" }; + _IfcValveTypeEnum.PRESSUREREDUCING = { type: 3, value: "PRESSUREREDUCING" }; + _IfcValveTypeEnum.PRESSURERELIEF = { type: 3, value: "PRESSURERELIEF" }; + _IfcValveTypeEnum.REGULATING = { type: 3, value: "REGULATING" }; + _IfcValveTypeEnum.SAFETYCUTOFF = { type: 3, value: "SAFETYCUTOFF" }; + _IfcValveTypeEnum.STEAMTRAP = { type: 3, value: "STEAMTRAP" }; + _IfcValveTypeEnum.STOPCOCK = { type: 3, value: "STOPCOCK" }; + _IfcValveTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcValveTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcValveTypeEnum = _IfcValveTypeEnum; + IFC42.IfcValveTypeEnum = IfcValveTypeEnum; + const _IfcVibrationIsolatorTypeEnum = class _IfcVibrationIsolatorTypeEnum { + }; + _IfcVibrationIsolatorTypeEnum.COMPRESSION = { type: 3, value: "COMPRESSION" }; + _IfcVibrationIsolatorTypeEnum.SPRING = { type: 3, value: "SPRING" }; + _IfcVibrationIsolatorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcVibrationIsolatorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcVibrationIsolatorTypeEnum = _IfcVibrationIsolatorTypeEnum; + IFC42.IfcVibrationIsolatorTypeEnum = IfcVibrationIsolatorTypeEnum; + const _IfcVoidingFeatureTypeEnum = class _IfcVoidingFeatureTypeEnum { + }; + _IfcVoidingFeatureTypeEnum.CUTOUT = { type: 3, value: "CUTOUT" }; + _IfcVoidingFeatureTypeEnum.NOTCH = { type: 3, value: "NOTCH" }; + _IfcVoidingFeatureTypeEnum.HOLE = { type: 3, value: "HOLE" }; + _IfcVoidingFeatureTypeEnum.MITER = { type: 3, value: "MITER" }; + _IfcVoidingFeatureTypeEnum.CHAMFER = { type: 3, value: "CHAMFER" }; + _IfcVoidingFeatureTypeEnum.EDGE = { type: 3, value: "EDGE" }; + _IfcVoidingFeatureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcVoidingFeatureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcVoidingFeatureTypeEnum = _IfcVoidingFeatureTypeEnum; + IFC42.IfcVoidingFeatureTypeEnum = IfcVoidingFeatureTypeEnum; + const _IfcWallTypeEnum = class _IfcWallTypeEnum { + }; + _IfcWallTypeEnum.MOVABLE = { type: 3, value: "MOVABLE" }; + _IfcWallTypeEnum.PARAPET = { type: 3, value: "PARAPET" }; + _IfcWallTypeEnum.PARTITIONING = { type: 3, value: "PARTITIONING" }; + _IfcWallTypeEnum.PLUMBINGWALL = { type: 3, value: "PLUMBINGWALL" }; + _IfcWallTypeEnum.SHEAR = { type: 3, value: "SHEAR" }; + _IfcWallTypeEnum.SOLIDWALL = { type: 3, value: "SOLIDWALL" }; + _IfcWallTypeEnum.STANDARD = { type: 3, value: "STANDARD" }; + _IfcWallTypeEnum.POLYGONAL = { type: 3, value: "POLYGONAL" }; + _IfcWallTypeEnum.ELEMENTEDWALL = { type: 3, value: "ELEMENTEDWALL" }; + _IfcWallTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWallTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWallTypeEnum = _IfcWallTypeEnum; + IFC42.IfcWallTypeEnum = IfcWallTypeEnum; + const _IfcWasteTerminalTypeEnum = class _IfcWasteTerminalTypeEnum { + }; + _IfcWasteTerminalTypeEnum.FLOORTRAP = { type: 3, value: "FLOORTRAP" }; + _IfcWasteTerminalTypeEnum.FLOORWASTE = { type: 3, value: "FLOORWASTE" }; + _IfcWasteTerminalTypeEnum.GULLYSUMP = { type: 3, value: "GULLYSUMP" }; + _IfcWasteTerminalTypeEnum.GULLYTRAP = { type: 3, value: "GULLYTRAP" }; + _IfcWasteTerminalTypeEnum.ROOFDRAIN = { type: 3, value: "ROOFDRAIN" }; + _IfcWasteTerminalTypeEnum.WASTEDISPOSALUNIT = { type: 3, value: "WASTEDISPOSALUNIT" }; + _IfcWasteTerminalTypeEnum.WASTETRAP = { type: 3, value: "WASTETRAP" }; + _IfcWasteTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWasteTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWasteTerminalTypeEnum = _IfcWasteTerminalTypeEnum; + IFC42.IfcWasteTerminalTypeEnum = IfcWasteTerminalTypeEnum; + const _IfcWindowPanelOperationEnum = class _IfcWindowPanelOperationEnum { + }; + _IfcWindowPanelOperationEnum.SIDEHUNGRIGHTHAND = { type: 3, value: "SIDEHUNGRIGHTHAND" }; + _IfcWindowPanelOperationEnum.SIDEHUNGLEFTHAND = { type: 3, value: "SIDEHUNGLEFTHAND" }; + _IfcWindowPanelOperationEnum.TILTANDTURNRIGHTHAND = { type: 3, value: "TILTANDTURNRIGHTHAND" }; + _IfcWindowPanelOperationEnum.TILTANDTURNLEFTHAND = { type: 3, value: "TILTANDTURNLEFTHAND" }; + _IfcWindowPanelOperationEnum.TOPHUNG = { type: 3, value: "TOPHUNG" }; + _IfcWindowPanelOperationEnum.BOTTOMHUNG = { type: 3, value: "BOTTOMHUNG" }; + _IfcWindowPanelOperationEnum.PIVOTHORIZONTAL = { type: 3, value: "PIVOTHORIZONTAL" }; + _IfcWindowPanelOperationEnum.PIVOTVERTICAL = { type: 3, value: "PIVOTVERTICAL" }; + _IfcWindowPanelOperationEnum.SLIDINGHORIZONTAL = { type: 3, value: "SLIDINGHORIZONTAL" }; + _IfcWindowPanelOperationEnum.SLIDINGVERTICAL = { type: 3, value: "SLIDINGVERTICAL" }; + _IfcWindowPanelOperationEnum.REMOVABLECASEMENT = { type: 3, value: "REMOVABLECASEMENT" }; + _IfcWindowPanelOperationEnum.FIXEDCASEMENT = { type: 3, value: "FIXEDCASEMENT" }; + _IfcWindowPanelOperationEnum.OTHEROPERATION = { type: 3, value: "OTHEROPERATION" }; + _IfcWindowPanelOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowPanelOperationEnum = _IfcWindowPanelOperationEnum; + IFC42.IfcWindowPanelOperationEnum = IfcWindowPanelOperationEnum; + const _IfcWindowPanelPositionEnum = class _IfcWindowPanelPositionEnum { + }; + _IfcWindowPanelPositionEnum.LEFT = { type: 3, value: "LEFT" }; + _IfcWindowPanelPositionEnum.MIDDLE = { type: 3, value: "MIDDLE" }; + _IfcWindowPanelPositionEnum.RIGHT = { type: 3, value: "RIGHT" }; + _IfcWindowPanelPositionEnum.BOTTOM = { type: 3, value: "BOTTOM" }; + _IfcWindowPanelPositionEnum.TOP = { type: 3, value: "TOP" }; + _IfcWindowPanelPositionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowPanelPositionEnum = _IfcWindowPanelPositionEnum; + IFC42.IfcWindowPanelPositionEnum = IfcWindowPanelPositionEnum; + const _IfcWindowStyleConstructionEnum = class _IfcWindowStyleConstructionEnum { + }; + _IfcWindowStyleConstructionEnum.ALUMINIUM = { type: 3, value: "ALUMINIUM" }; + _IfcWindowStyleConstructionEnum.HIGH_GRADE_STEEL = { type: 3, value: "HIGH_GRADE_STEEL" }; + _IfcWindowStyleConstructionEnum.STEEL = { type: 3, value: "STEEL" }; + _IfcWindowStyleConstructionEnum.WOOD = { type: 3, value: "WOOD" }; + _IfcWindowStyleConstructionEnum.ALUMINIUM_WOOD = { type: 3, value: "ALUMINIUM_WOOD" }; + _IfcWindowStyleConstructionEnum.PLASTIC = { type: 3, value: "PLASTIC" }; + _IfcWindowStyleConstructionEnum.OTHER_CONSTRUCTION = { type: 3, value: "OTHER_CONSTRUCTION" }; + _IfcWindowStyleConstructionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowStyleConstructionEnum = _IfcWindowStyleConstructionEnum; + IFC42.IfcWindowStyleConstructionEnum = IfcWindowStyleConstructionEnum; + const _IfcWindowStyleOperationEnum = class _IfcWindowStyleOperationEnum { + }; + _IfcWindowStyleOperationEnum.SINGLE_PANEL = { type: 3, value: "SINGLE_PANEL" }; + _IfcWindowStyleOperationEnum.DOUBLE_PANEL_VERTICAL = { type: 3, value: "DOUBLE_PANEL_VERTICAL" }; + _IfcWindowStyleOperationEnum.DOUBLE_PANEL_HORIZONTAL = { type: 3, value: "DOUBLE_PANEL_HORIZONTAL" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_VERTICAL = { type: 3, value: "TRIPLE_PANEL_VERTICAL" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_BOTTOM = { type: 3, value: "TRIPLE_PANEL_BOTTOM" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_TOP = { type: 3, value: "TRIPLE_PANEL_TOP" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_LEFT = { type: 3, value: "TRIPLE_PANEL_LEFT" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_RIGHT = { type: 3, value: "TRIPLE_PANEL_RIGHT" }; + _IfcWindowStyleOperationEnum.TRIPLE_PANEL_HORIZONTAL = { type: 3, value: "TRIPLE_PANEL_HORIZONTAL" }; + _IfcWindowStyleOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWindowStyleOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowStyleOperationEnum = _IfcWindowStyleOperationEnum; + IFC42.IfcWindowStyleOperationEnum = IfcWindowStyleOperationEnum; + const _IfcWindowTypeEnum = class _IfcWindowTypeEnum { + }; + _IfcWindowTypeEnum.WINDOW = { type: 3, value: "WINDOW" }; + _IfcWindowTypeEnum.SKYLIGHT = { type: 3, value: "SKYLIGHT" }; + _IfcWindowTypeEnum.LIGHTDOME = { type: 3, value: "LIGHTDOME" }; + _IfcWindowTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWindowTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowTypeEnum = _IfcWindowTypeEnum; + IFC42.IfcWindowTypeEnum = IfcWindowTypeEnum; + const _IfcWindowTypePartitioningEnum = class _IfcWindowTypePartitioningEnum { + }; + _IfcWindowTypePartitioningEnum.SINGLE_PANEL = { type: 3, value: "SINGLE_PANEL" }; + _IfcWindowTypePartitioningEnum.DOUBLE_PANEL_VERTICAL = { type: 3, value: "DOUBLE_PANEL_VERTICAL" }; + _IfcWindowTypePartitioningEnum.DOUBLE_PANEL_HORIZONTAL = { type: 3, value: "DOUBLE_PANEL_HORIZONTAL" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_VERTICAL = { type: 3, value: "TRIPLE_PANEL_VERTICAL" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_BOTTOM = { type: 3, value: "TRIPLE_PANEL_BOTTOM" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_TOP = { type: 3, value: "TRIPLE_PANEL_TOP" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_LEFT = { type: 3, value: "TRIPLE_PANEL_LEFT" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_RIGHT = { type: 3, value: "TRIPLE_PANEL_RIGHT" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_HORIZONTAL = { type: 3, value: "TRIPLE_PANEL_HORIZONTAL" }; + _IfcWindowTypePartitioningEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWindowTypePartitioningEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowTypePartitioningEnum = _IfcWindowTypePartitioningEnum; + IFC42.IfcWindowTypePartitioningEnum = IfcWindowTypePartitioningEnum; + const _IfcWorkCalendarTypeEnum = class _IfcWorkCalendarTypeEnum { + }; + _IfcWorkCalendarTypeEnum.FIRSTSHIFT = { type: 3, value: "FIRSTSHIFT" }; + _IfcWorkCalendarTypeEnum.SECONDSHIFT = { type: 3, value: "SECONDSHIFT" }; + _IfcWorkCalendarTypeEnum.THIRDSHIFT = { type: 3, value: "THIRDSHIFT" }; + _IfcWorkCalendarTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWorkCalendarTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWorkCalendarTypeEnum = _IfcWorkCalendarTypeEnum; + IFC42.IfcWorkCalendarTypeEnum = IfcWorkCalendarTypeEnum; + const _IfcWorkPlanTypeEnum = class _IfcWorkPlanTypeEnum { + }; + _IfcWorkPlanTypeEnum.ACTUAL = { type: 3, value: "ACTUAL" }; + _IfcWorkPlanTypeEnum.BASELINE = { type: 3, value: "BASELINE" }; + _IfcWorkPlanTypeEnum.PLANNED = { type: 3, value: "PLANNED" }; + _IfcWorkPlanTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWorkPlanTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWorkPlanTypeEnum = _IfcWorkPlanTypeEnum; + IFC42.IfcWorkPlanTypeEnum = IfcWorkPlanTypeEnum; + const _IfcWorkScheduleTypeEnum = class _IfcWorkScheduleTypeEnum { + }; + _IfcWorkScheduleTypeEnum.ACTUAL = { type: 3, value: "ACTUAL" }; + _IfcWorkScheduleTypeEnum.BASELINE = { type: 3, value: "BASELINE" }; + _IfcWorkScheduleTypeEnum.PLANNED = { type: 3, value: "PLANNED" }; + _IfcWorkScheduleTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWorkScheduleTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWorkScheduleTypeEnum = _IfcWorkScheduleTypeEnum; + IFC42.IfcWorkScheduleTypeEnum = IfcWorkScheduleTypeEnum; + class IfcActorRole extends IfcLineObject { + constructor(Role, UserDefinedRole, Description) { + super(); + this.Role = Role; + this.UserDefinedRole = UserDefinedRole; + this.Description = Description; + this.type = 3630933823; + } + } + IFC42.IfcActorRole = IfcActorRole; + class IfcAddress extends IfcLineObject { + constructor(Purpose, Description, UserDefinedPurpose) { + super(); + this.Purpose = Purpose; + this.Description = Description; + this.UserDefinedPurpose = UserDefinedPurpose; + this.type = 618182010; + } + } + IFC42.IfcAddress = IfcAddress; + class IfcApplication extends IfcLineObject { + constructor(ApplicationDeveloper, Version, ApplicationFullName, ApplicationIdentifier) { + super(); + this.ApplicationDeveloper = ApplicationDeveloper; + this.Version = Version; + this.ApplicationFullName = ApplicationFullName; + this.ApplicationIdentifier = ApplicationIdentifier; + this.type = 639542469; + } + } + IFC42.IfcApplication = IfcApplication; + class IfcAppliedValue extends IfcLineObject { + constructor(Name, Description, AppliedValue, UnitBasis, ApplicableDate, FixedUntilDate, Category, Condition, ArithmeticOperator, Components) { + super(); + this.Name = Name; + this.Description = Description; + this.AppliedValue = AppliedValue; + this.UnitBasis = UnitBasis; + this.ApplicableDate = ApplicableDate; + this.FixedUntilDate = FixedUntilDate; + this.Category = Category; + this.Condition = Condition; + this.ArithmeticOperator = ArithmeticOperator; + this.Components = Components; + this.type = 411424972; + } + } + IFC42.IfcAppliedValue = IfcAppliedValue; + class IfcApproval extends IfcLineObject { + constructor(Identifier, Name, Description, TimeOfApproval, Status, Level, Qualifier, RequestingApproval, GivingApproval) { + super(); + this.Identifier = Identifier; + this.Name = Name; + this.Description = Description; + this.TimeOfApproval = TimeOfApproval; + this.Status = Status; + this.Level = Level; + this.Qualifier = Qualifier; + this.RequestingApproval = RequestingApproval; + this.GivingApproval = GivingApproval; + this.type = 130549933; + } + } + IFC42.IfcApproval = IfcApproval; + class IfcBoundaryCondition extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 4037036970; + } + } + IFC42.IfcBoundaryCondition = IfcBoundaryCondition; + class IfcBoundaryEdgeCondition extends IfcBoundaryCondition { + constructor(Name, TranslationalStiffnessByLengthX, TranslationalStiffnessByLengthY, TranslationalStiffnessByLengthZ, RotationalStiffnessByLengthX, RotationalStiffnessByLengthY, RotationalStiffnessByLengthZ) { + super(Name); + this.Name = Name; + this.TranslationalStiffnessByLengthX = TranslationalStiffnessByLengthX; + this.TranslationalStiffnessByLengthY = TranslationalStiffnessByLengthY; + this.TranslationalStiffnessByLengthZ = TranslationalStiffnessByLengthZ; + this.RotationalStiffnessByLengthX = RotationalStiffnessByLengthX; + this.RotationalStiffnessByLengthY = RotationalStiffnessByLengthY; + this.RotationalStiffnessByLengthZ = RotationalStiffnessByLengthZ; + this.type = 1560379544; + } + } + IFC42.IfcBoundaryEdgeCondition = IfcBoundaryEdgeCondition; + class IfcBoundaryFaceCondition extends IfcBoundaryCondition { + constructor(Name, TranslationalStiffnessByAreaX, TranslationalStiffnessByAreaY, TranslationalStiffnessByAreaZ) { + super(Name); + this.Name = Name; + this.TranslationalStiffnessByAreaX = TranslationalStiffnessByAreaX; + this.TranslationalStiffnessByAreaY = TranslationalStiffnessByAreaY; + this.TranslationalStiffnessByAreaZ = TranslationalStiffnessByAreaZ; + this.type = 3367102660; + } + } + IFC42.IfcBoundaryFaceCondition = IfcBoundaryFaceCondition; + class IfcBoundaryNodeCondition extends IfcBoundaryCondition { + constructor(Name, TranslationalStiffnessX, TranslationalStiffnessY, TranslationalStiffnessZ, RotationalStiffnessX, RotationalStiffnessY, RotationalStiffnessZ) { + super(Name); + this.Name = Name; + this.TranslationalStiffnessX = TranslationalStiffnessX; + this.TranslationalStiffnessY = TranslationalStiffnessY; + this.TranslationalStiffnessZ = TranslationalStiffnessZ; + this.RotationalStiffnessX = RotationalStiffnessX; + this.RotationalStiffnessY = RotationalStiffnessY; + this.RotationalStiffnessZ = RotationalStiffnessZ; + this.type = 1387855156; + } + } + IFC42.IfcBoundaryNodeCondition = IfcBoundaryNodeCondition; + class IfcBoundaryNodeConditionWarping extends IfcBoundaryNodeCondition { + constructor(Name, TranslationalStiffnessX, TranslationalStiffnessY, TranslationalStiffnessZ, RotationalStiffnessX, RotationalStiffnessY, RotationalStiffnessZ, WarpingStiffness) { + super(Name, TranslationalStiffnessX, TranslationalStiffnessY, TranslationalStiffnessZ, RotationalStiffnessX, RotationalStiffnessY, RotationalStiffnessZ); + this.Name = Name; + this.TranslationalStiffnessX = TranslationalStiffnessX; + this.TranslationalStiffnessY = TranslationalStiffnessY; + this.TranslationalStiffnessZ = TranslationalStiffnessZ; + this.RotationalStiffnessX = RotationalStiffnessX; + this.RotationalStiffnessY = RotationalStiffnessY; + this.RotationalStiffnessZ = RotationalStiffnessZ; + this.WarpingStiffness = WarpingStiffness; + this.type = 2069777674; + } + } + IFC42.IfcBoundaryNodeConditionWarping = IfcBoundaryNodeConditionWarping; + class IfcConnectionGeometry extends IfcLineObject { + constructor() { + super(); + this.type = 2859738748; + } + } + IFC42.IfcConnectionGeometry = IfcConnectionGeometry; + class IfcConnectionPointGeometry extends IfcConnectionGeometry { + constructor(PointOnRelatingElement, PointOnRelatedElement) { + super(); + this.PointOnRelatingElement = PointOnRelatingElement; + this.PointOnRelatedElement = PointOnRelatedElement; + this.type = 2614616156; + } + } + IFC42.IfcConnectionPointGeometry = IfcConnectionPointGeometry; + class IfcConnectionSurfaceGeometry extends IfcConnectionGeometry { + constructor(SurfaceOnRelatingElement, SurfaceOnRelatedElement) { + super(); + this.SurfaceOnRelatingElement = SurfaceOnRelatingElement; + this.SurfaceOnRelatedElement = SurfaceOnRelatedElement; + this.type = 2732653382; + } + } + IFC42.IfcConnectionSurfaceGeometry = IfcConnectionSurfaceGeometry; + class IfcConnectionVolumeGeometry extends IfcConnectionGeometry { + constructor(VolumeOnRelatingElement, VolumeOnRelatedElement) { + super(); + this.VolumeOnRelatingElement = VolumeOnRelatingElement; + this.VolumeOnRelatedElement = VolumeOnRelatedElement; + this.type = 775493141; + } + } + IFC42.IfcConnectionVolumeGeometry = IfcConnectionVolumeGeometry; + class IfcConstraint extends IfcLineObject { + constructor(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade) { + super(); + this.Name = Name; + this.Description = Description; + this.ConstraintGrade = ConstraintGrade; + this.ConstraintSource = ConstraintSource; + this.CreatingActor = CreatingActor; + this.CreationTime = CreationTime; + this.UserDefinedGrade = UserDefinedGrade; + this.type = 1959218052; + } + } + IFC42.IfcConstraint = IfcConstraint; + class IfcCoordinateOperation extends IfcLineObject { + constructor(SourceCRS, TargetCRS) { + super(); + this.SourceCRS = SourceCRS; + this.TargetCRS = TargetCRS; + this.type = 1785450214; + } + } + IFC42.IfcCoordinateOperation = IfcCoordinateOperation; + class IfcCoordinateReferenceSystem extends IfcLineObject { + constructor(Name, Description, GeodeticDatum, VerticalDatum) { + super(); + this.Name = Name; + this.Description = Description; + this.GeodeticDatum = GeodeticDatum; + this.VerticalDatum = VerticalDatum; + this.type = 1466758467; + } + } + IFC42.IfcCoordinateReferenceSystem = IfcCoordinateReferenceSystem; + class IfcCostValue extends IfcAppliedValue { + constructor(Name, Description, AppliedValue, UnitBasis, ApplicableDate, FixedUntilDate, Category, Condition, ArithmeticOperator, Components) { + super(Name, Description, AppliedValue, UnitBasis, ApplicableDate, FixedUntilDate, Category, Condition, ArithmeticOperator, Components); + this.Name = Name; + this.Description = Description; + this.AppliedValue = AppliedValue; + this.UnitBasis = UnitBasis; + this.ApplicableDate = ApplicableDate; + this.FixedUntilDate = FixedUntilDate; + this.Category = Category; + this.Condition = Condition; + this.ArithmeticOperator = ArithmeticOperator; + this.Components = Components; + this.type = 602808272; + } + } + IFC42.IfcCostValue = IfcCostValue; + class IfcDerivedUnit extends IfcLineObject { + constructor(Elements, UnitType, UserDefinedType) { + super(); + this.Elements = Elements; + this.UnitType = UnitType; + this.UserDefinedType = UserDefinedType; + this.type = 1765591967; + } + } + IFC42.IfcDerivedUnit = IfcDerivedUnit; + class IfcDerivedUnitElement extends IfcLineObject { + constructor(Unit, Exponent) { + super(); + this.Unit = Unit; + this.Exponent = Exponent; + this.type = 1045800335; + } + } + IFC42.IfcDerivedUnitElement = IfcDerivedUnitElement; + class IfcDimensionalExponents extends IfcLineObject { + constructor(LengthExponent, MassExponent, TimeExponent, ElectricCurrentExponent, ThermodynamicTemperatureExponent, AmountOfSubstanceExponent, LuminousIntensityExponent) { + super(); + this.LengthExponent = LengthExponent; + this.MassExponent = MassExponent; + this.TimeExponent = TimeExponent; + this.ElectricCurrentExponent = ElectricCurrentExponent; + this.ThermodynamicTemperatureExponent = ThermodynamicTemperatureExponent; + this.AmountOfSubstanceExponent = AmountOfSubstanceExponent; + this.LuminousIntensityExponent = LuminousIntensityExponent; + this.type = 2949456006; + } + } + IFC42.IfcDimensionalExponents = IfcDimensionalExponents; + class IfcExternalInformation extends IfcLineObject { + constructor() { + super(); + this.type = 4294318154; + } + } + IFC42.IfcExternalInformation = IfcExternalInformation; + class IfcExternalReference extends IfcLineObject { + constructor(Location, Identification, Name) { + super(); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.type = 3200245327; + } + } + IFC42.IfcExternalReference = IfcExternalReference; + class IfcExternallyDefinedHatchStyle extends IfcExternalReference { + constructor(Location, Identification, Name) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.type = 2242383968; + } + } + IFC42.IfcExternallyDefinedHatchStyle = IfcExternallyDefinedHatchStyle; + class IfcExternallyDefinedSurfaceStyle extends IfcExternalReference { + constructor(Location, Identification, Name) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.type = 1040185647; + } + } + IFC42.IfcExternallyDefinedSurfaceStyle = IfcExternallyDefinedSurfaceStyle; + class IfcExternallyDefinedTextFont extends IfcExternalReference { + constructor(Location, Identification, Name) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.type = 3548104201; + } + } + IFC42.IfcExternallyDefinedTextFont = IfcExternallyDefinedTextFont; + class IfcGridAxis extends IfcLineObject { + constructor(AxisTag, AxisCurve, SameSense) { + super(); + this.AxisTag = AxisTag; + this.AxisCurve = AxisCurve; + this.SameSense = SameSense; + this.type = 852622518; + } + } + IFC42.IfcGridAxis = IfcGridAxis; + class IfcIrregularTimeSeriesValue extends IfcLineObject { + constructor(TimeStamp, ListValues) { + super(); + this.TimeStamp = TimeStamp; + this.ListValues = ListValues; + this.type = 3020489413; + } + } + IFC42.IfcIrregularTimeSeriesValue = IfcIrregularTimeSeriesValue; + class IfcLibraryInformation extends IfcExternalInformation { + constructor(Name, Version, Publisher, VersionDate, Location, Description) { + super(); + this.Name = Name; + this.Version = Version; + this.Publisher = Publisher; + this.VersionDate = VersionDate; + this.Location = Location; + this.Description = Description; + this.type = 2655187982; + } + } + IFC42.IfcLibraryInformation = IfcLibraryInformation; + class IfcLibraryReference extends IfcExternalReference { + constructor(Location, Identification, Name, Description, Language, ReferencedLibrary) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.Description = Description; + this.Language = Language; + this.ReferencedLibrary = ReferencedLibrary; + this.type = 3452421091; + } + } + IFC42.IfcLibraryReference = IfcLibraryReference; + class IfcLightDistributionData extends IfcLineObject { + constructor(MainPlaneAngle, SecondaryPlaneAngle, LuminousIntensity) { + super(); + this.MainPlaneAngle = MainPlaneAngle; + this.SecondaryPlaneAngle = SecondaryPlaneAngle; + this.LuminousIntensity = LuminousIntensity; + this.type = 4162380809; + } + } + IFC42.IfcLightDistributionData = IfcLightDistributionData; + class IfcLightIntensityDistribution extends IfcLineObject { + constructor(LightDistributionCurve, DistributionData) { + super(); + this.LightDistributionCurve = LightDistributionCurve; + this.DistributionData = DistributionData; + this.type = 1566485204; + } + } + IFC42.IfcLightIntensityDistribution = IfcLightIntensityDistribution; + class IfcMapConversion extends IfcCoordinateOperation { + constructor(SourceCRS, TargetCRS, Eastings, Northings, OrthogonalHeight, XAxisAbscissa, XAxisOrdinate, Scale) { + super(SourceCRS, TargetCRS); + this.SourceCRS = SourceCRS; + this.TargetCRS = TargetCRS; + this.Eastings = Eastings; + this.Northings = Northings; + this.OrthogonalHeight = OrthogonalHeight; + this.XAxisAbscissa = XAxisAbscissa; + this.XAxisOrdinate = XAxisOrdinate; + this.Scale = Scale; + this.type = 3057273783; + } + } + IFC42.IfcMapConversion = IfcMapConversion; + class IfcMaterialClassificationRelationship extends IfcLineObject { + constructor(MaterialClassifications, ClassifiedMaterial) { + super(); + this.MaterialClassifications = MaterialClassifications; + this.ClassifiedMaterial = ClassifiedMaterial; + this.type = 1847130766; + } + } + IFC42.IfcMaterialClassificationRelationship = IfcMaterialClassificationRelationship; + class IfcMaterialDefinition extends IfcLineObject { + constructor() { + super(); + this.type = 760658860; + } + } + IFC42.IfcMaterialDefinition = IfcMaterialDefinition; + class IfcMaterialLayer extends IfcMaterialDefinition { + constructor(Material3, LayerThickness, IsVentilated, Name, Description, Category, Priority) { + super(); + this.Material = Material3; + this.LayerThickness = LayerThickness; + this.IsVentilated = IsVentilated; + this.Name = Name; + this.Description = Description; + this.Category = Category; + this.Priority = Priority; + this.type = 248100487; + } + } + IFC42.IfcMaterialLayer = IfcMaterialLayer; + class IfcMaterialLayerSet extends IfcMaterialDefinition { + constructor(MaterialLayers, LayerSetName, Description) { + super(); + this.MaterialLayers = MaterialLayers; + this.LayerSetName = LayerSetName; + this.Description = Description; + this.type = 3303938423; + } + } + IFC42.IfcMaterialLayerSet = IfcMaterialLayerSet; + class IfcMaterialLayerWithOffsets extends IfcMaterialLayer { + constructor(Material3, LayerThickness, IsVentilated, Name, Description, Category, Priority, OffsetDirection, OffsetValues) { + super(Material3, LayerThickness, IsVentilated, Name, Description, Category, Priority); + this.Material = Material3; + this.LayerThickness = LayerThickness; + this.IsVentilated = IsVentilated; + this.Name = Name; + this.Description = Description; + this.Category = Category; + this.Priority = Priority; + this.OffsetDirection = OffsetDirection; + this.OffsetValues = OffsetValues; + this.type = 1847252529; + } + } + IFC42.IfcMaterialLayerWithOffsets = IfcMaterialLayerWithOffsets; + class IfcMaterialList extends IfcLineObject { + constructor(Materials) { + super(); + this.Materials = Materials; + this.type = 2199411900; + } + } + IFC42.IfcMaterialList = IfcMaterialList; + class IfcMaterialProfile extends IfcMaterialDefinition { + constructor(Name, Description, Material3, Profile, Priority, Category) { + super(); + this.Name = Name; + this.Description = Description; + this.Material = Material3; + this.Profile = Profile; + this.Priority = Priority; + this.Category = Category; + this.type = 2235152071; + } + } + IFC42.IfcMaterialProfile = IfcMaterialProfile; + class IfcMaterialProfileSet extends IfcMaterialDefinition { + constructor(Name, Description, MaterialProfiles, CompositeProfile) { + super(); + this.Name = Name; + this.Description = Description; + this.MaterialProfiles = MaterialProfiles; + this.CompositeProfile = CompositeProfile; + this.type = 164193824; + } + } + IFC42.IfcMaterialProfileSet = IfcMaterialProfileSet; + class IfcMaterialProfileWithOffsets extends IfcMaterialProfile { + constructor(Name, Description, Material3, Profile, Priority, Category, OffsetValues) { + super(Name, Description, Material3, Profile, Priority, Category); + this.Name = Name; + this.Description = Description; + this.Material = Material3; + this.Profile = Profile; + this.Priority = Priority; + this.Category = Category; + this.OffsetValues = OffsetValues; + this.type = 552965576; + } + } + IFC42.IfcMaterialProfileWithOffsets = IfcMaterialProfileWithOffsets; + class IfcMaterialUsageDefinition extends IfcLineObject { + constructor() { + super(); + this.type = 1507914824; + } + } + IFC42.IfcMaterialUsageDefinition = IfcMaterialUsageDefinition; + class IfcMeasureWithUnit extends IfcLineObject { + constructor(ValueComponent, UnitComponent) { + super(); + this.ValueComponent = ValueComponent; + this.UnitComponent = UnitComponent; + this.type = 2597039031; + } + } + IFC42.IfcMeasureWithUnit = IfcMeasureWithUnit; + class IfcMetric extends IfcConstraint { + constructor(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade, Benchmark, ValueSource, DataValue, ReferencePath) { + super(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade); + this.Name = Name; + this.Description = Description; + this.ConstraintGrade = ConstraintGrade; + this.ConstraintSource = ConstraintSource; + this.CreatingActor = CreatingActor; + this.CreationTime = CreationTime; + this.UserDefinedGrade = UserDefinedGrade; + this.Benchmark = Benchmark; + this.ValueSource = ValueSource; + this.DataValue = DataValue; + this.ReferencePath = ReferencePath; + this.type = 3368373690; + } + } + IFC42.IfcMetric = IfcMetric; + class IfcMonetaryUnit extends IfcLineObject { + constructor(Currency) { + super(); + this.Currency = Currency; + this.type = 2706619895; + } + } + IFC42.IfcMonetaryUnit = IfcMonetaryUnit; + class IfcNamedUnit extends IfcLineObject { + constructor(Dimensions, UnitType) { + super(); + this.Dimensions = Dimensions; + this.UnitType = UnitType; + this.type = 1918398963; + } + } + IFC42.IfcNamedUnit = IfcNamedUnit; + class IfcObjectPlacement extends IfcLineObject { + constructor() { + super(); + this.type = 3701648758; + } + } + IFC42.IfcObjectPlacement = IfcObjectPlacement; + class IfcObjective extends IfcConstraint { + constructor(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade, BenchmarkValues, LogicalAggregator, ObjectiveQualifier, UserDefinedQualifier) { + super(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade); + this.Name = Name; + this.Description = Description; + this.ConstraintGrade = ConstraintGrade; + this.ConstraintSource = ConstraintSource; + this.CreatingActor = CreatingActor; + this.CreationTime = CreationTime; + this.UserDefinedGrade = UserDefinedGrade; + this.BenchmarkValues = BenchmarkValues; + this.LogicalAggregator = LogicalAggregator; + this.ObjectiveQualifier = ObjectiveQualifier; + this.UserDefinedQualifier = UserDefinedQualifier; + this.type = 2251480897; + } + } + IFC42.IfcObjective = IfcObjective; + class IfcOrganization extends IfcLineObject { + constructor(Identification, Name, Description, Roles, Addresses) { + super(); + this.Identification = Identification; + this.Name = Name; + this.Description = Description; + this.Roles = Roles; + this.Addresses = Addresses; + this.type = 4251960020; + } + } + IFC42.IfcOrganization = IfcOrganization; + class IfcOwnerHistory extends IfcLineObject { + constructor(OwningUser, OwningApplication, State, ChangeAction, LastModifiedDate, LastModifyingUser, LastModifyingApplication, CreationDate) { + super(); + this.OwningUser = OwningUser; + this.OwningApplication = OwningApplication; + this.State = State; + this.ChangeAction = ChangeAction; + this.LastModifiedDate = LastModifiedDate; + this.LastModifyingUser = LastModifyingUser; + this.LastModifyingApplication = LastModifyingApplication; + this.CreationDate = CreationDate; + this.type = 1207048766; + } + } + IFC42.IfcOwnerHistory = IfcOwnerHistory; + class IfcPerson extends IfcLineObject { + constructor(Identification, FamilyName, GivenName, MiddleNames, PrefixTitles, SuffixTitles, Roles, Addresses) { + super(); + this.Identification = Identification; + this.FamilyName = FamilyName; + this.GivenName = GivenName; + this.MiddleNames = MiddleNames; + this.PrefixTitles = PrefixTitles; + this.SuffixTitles = SuffixTitles; + this.Roles = Roles; + this.Addresses = Addresses; + this.type = 2077209135; + } + } + IFC42.IfcPerson = IfcPerson; + class IfcPersonAndOrganization extends IfcLineObject { + constructor(ThePerson, TheOrganization, Roles) { + super(); + this.ThePerson = ThePerson; + this.TheOrganization = TheOrganization; + this.Roles = Roles; + this.type = 101040310; + } + } + IFC42.IfcPersonAndOrganization = IfcPersonAndOrganization; + class IfcPhysicalQuantity extends IfcLineObject { + constructor(Name, Description) { + super(); + this.Name = Name; + this.Description = Description; + this.type = 2483315170; + } + } + IFC42.IfcPhysicalQuantity = IfcPhysicalQuantity; + class IfcPhysicalSimpleQuantity extends IfcPhysicalQuantity { + constructor(Name, Description, Unit) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.type = 2226359599; + } + } + IFC42.IfcPhysicalSimpleQuantity = IfcPhysicalSimpleQuantity; + class IfcPostalAddress extends IfcAddress { + constructor(Purpose, Description, UserDefinedPurpose, InternalLocation, AddressLines, PostalBox, Town, Region, PostalCode, Country) { + super(Purpose, Description, UserDefinedPurpose); + this.Purpose = Purpose; + this.Description = Description; + this.UserDefinedPurpose = UserDefinedPurpose; + this.InternalLocation = InternalLocation; + this.AddressLines = AddressLines; + this.PostalBox = PostalBox; + this.Town = Town; + this.Region = Region; + this.PostalCode = PostalCode; + this.Country = Country; + this.type = 3355820592; + } + } + IFC42.IfcPostalAddress = IfcPostalAddress; + class IfcPresentationItem extends IfcLineObject { + constructor() { + super(); + this.type = 677532197; + } + } + IFC42.IfcPresentationItem = IfcPresentationItem; + class IfcPresentationLayerAssignment extends IfcLineObject { + constructor(Name, Description, AssignedItems, Identifier) { + super(); + this.Name = Name; + this.Description = Description; + this.AssignedItems = AssignedItems; + this.Identifier = Identifier; + this.type = 2022622350; + } + } + IFC42.IfcPresentationLayerAssignment = IfcPresentationLayerAssignment; + class IfcPresentationLayerWithStyle extends IfcPresentationLayerAssignment { + constructor(Name, Description, AssignedItems, Identifier, LayerOn, LayerFrozen, LayerBlocked, LayerStyles) { + super(Name, Description, AssignedItems, Identifier); + this.Name = Name; + this.Description = Description; + this.AssignedItems = AssignedItems; + this.Identifier = Identifier; + this.LayerOn = LayerOn; + this.LayerFrozen = LayerFrozen; + this.LayerBlocked = LayerBlocked; + this.LayerStyles = LayerStyles; + this.type = 1304840413; + } + } + IFC42.IfcPresentationLayerWithStyle = IfcPresentationLayerWithStyle; + class IfcPresentationStyle extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 3119450353; + } + } + IFC42.IfcPresentationStyle = IfcPresentationStyle; + class IfcPresentationStyleAssignment extends IfcLineObject { + constructor(Styles) { + super(); + this.Styles = Styles; + this.type = 2417041796; + } + } + IFC42.IfcPresentationStyleAssignment = IfcPresentationStyleAssignment; + class IfcProductRepresentation extends IfcLineObject { + constructor(Name, Description, Representations) { + super(); + this.Name = Name; + this.Description = Description; + this.Representations = Representations; + this.type = 2095639259; + } + } + IFC42.IfcProductRepresentation = IfcProductRepresentation; + class IfcProfileDef extends IfcLineObject { + constructor(ProfileType, ProfileName) { + super(); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.type = 3958567839; + } + } + IFC42.IfcProfileDef = IfcProfileDef; + class IfcProjectedCRS extends IfcCoordinateReferenceSystem { + constructor(Name, Description, GeodeticDatum, VerticalDatum, MapProjection, MapZone, MapUnit) { + super(Name, Description, GeodeticDatum, VerticalDatum); + this.Name = Name; + this.Description = Description; + this.GeodeticDatum = GeodeticDatum; + this.VerticalDatum = VerticalDatum; + this.MapProjection = MapProjection; + this.MapZone = MapZone; + this.MapUnit = MapUnit; + this.type = 3843373140; + } + } + IFC42.IfcProjectedCRS = IfcProjectedCRS; + class IfcPropertyAbstraction extends IfcLineObject { + constructor() { + super(); + this.type = 986844984; + } + } + IFC42.IfcPropertyAbstraction = IfcPropertyAbstraction; + class IfcPropertyEnumeration extends IfcPropertyAbstraction { + constructor(Name, EnumerationValues, Unit) { + super(); + this.Name = Name; + this.EnumerationValues = EnumerationValues; + this.Unit = Unit; + this.type = 3710013099; + } + } + IFC42.IfcPropertyEnumeration = IfcPropertyEnumeration; + class IfcQuantityArea extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, AreaValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.AreaValue = AreaValue; + this.Formula = Formula; + this.type = 2044713172; + } + } + IFC42.IfcQuantityArea = IfcQuantityArea; + class IfcQuantityCount extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, CountValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.CountValue = CountValue; + this.Formula = Formula; + this.type = 2093928680; + } + } + IFC42.IfcQuantityCount = IfcQuantityCount; + class IfcQuantityLength extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, LengthValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.LengthValue = LengthValue; + this.Formula = Formula; + this.type = 931644368; + } + } + IFC42.IfcQuantityLength = IfcQuantityLength; + class IfcQuantityTime extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, TimeValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.TimeValue = TimeValue; + this.Formula = Formula; + this.type = 3252649465; + } + } + IFC42.IfcQuantityTime = IfcQuantityTime; + class IfcQuantityVolume extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, VolumeValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.VolumeValue = VolumeValue; + this.Formula = Formula; + this.type = 2405470396; + } + } + IFC42.IfcQuantityVolume = IfcQuantityVolume; + class IfcQuantityWeight extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, WeightValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.WeightValue = WeightValue; + this.Formula = Formula; + this.type = 825690147; + } + } + IFC42.IfcQuantityWeight = IfcQuantityWeight; + class IfcRecurrencePattern extends IfcLineObject { + constructor(RecurrenceType, DayComponent, WeekdayComponent, MonthComponent, Position, Interval, Occurrences, TimePeriods) { + super(); + this.RecurrenceType = RecurrenceType; + this.DayComponent = DayComponent; + this.WeekdayComponent = WeekdayComponent; + this.MonthComponent = MonthComponent; + this.Position = Position; + this.Interval = Interval; + this.Occurrences = Occurrences; + this.TimePeriods = TimePeriods; + this.type = 3915482550; + } + } + IFC42.IfcRecurrencePattern = IfcRecurrencePattern; + class IfcReference extends IfcLineObject { + constructor(TypeIdentifier, AttributeIdentifier, InstanceName, ListPositions, InnerReference) { + super(); + this.TypeIdentifier = TypeIdentifier; + this.AttributeIdentifier = AttributeIdentifier; + this.InstanceName = InstanceName; + this.ListPositions = ListPositions; + this.InnerReference = InnerReference; + this.type = 2433181523; + } + } + IFC42.IfcReference = IfcReference; + class IfcRepresentation extends IfcLineObject { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 1076942058; + } + } + IFC42.IfcRepresentation = IfcRepresentation; + class IfcRepresentationContext extends IfcLineObject { + constructor(ContextIdentifier, ContextType) { + super(); + this.ContextIdentifier = ContextIdentifier; + this.ContextType = ContextType; + this.type = 3377609919; + } + } + IFC42.IfcRepresentationContext = IfcRepresentationContext; + class IfcRepresentationItem extends IfcLineObject { + constructor() { + super(); + this.type = 3008791417; + } + } + IFC42.IfcRepresentationItem = IfcRepresentationItem; + class IfcRepresentationMap extends IfcLineObject { + constructor(MappingOrigin, MappedRepresentation) { + super(); + this.MappingOrigin = MappingOrigin; + this.MappedRepresentation = MappedRepresentation; + this.type = 1660063152; + } + } + IFC42.IfcRepresentationMap = IfcRepresentationMap; + class IfcResourceLevelRelationship extends IfcLineObject { + constructor(Name, Description) { + super(); + this.Name = Name; + this.Description = Description; + this.type = 2439245199; + } + } + IFC42.IfcResourceLevelRelationship = IfcResourceLevelRelationship; + class IfcRoot extends IfcLineObject { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 2341007311; + } + } + IFC42.IfcRoot = IfcRoot; + class IfcSIUnit extends IfcNamedUnit { + constructor(UnitType, Prefix, Name) { + super(new Handle(0), UnitType); + this.UnitType = UnitType; + this.Prefix = Prefix; + this.Name = Name; + this.type = 448429030; + } + } + IFC42.IfcSIUnit = IfcSIUnit; + class IfcSchedulingTime extends IfcLineObject { + constructor(Name, DataOrigin, UserDefinedDataOrigin) { + super(); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.type = 1054537805; + } + } + IFC42.IfcSchedulingTime = IfcSchedulingTime; + class IfcShapeAspect extends IfcLineObject { + constructor(ShapeRepresentations, Name, Description, ProductDefinitional, PartOfProductDefinitionShape) { + super(); + this.ShapeRepresentations = ShapeRepresentations; + this.Name = Name; + this.Description = Description; + this.ProductDefinitional = ProductDefinitional; + this.PartOfProductDefinitionShape = PartOfProductDefinitionShape; + this.type = 867548509; + } + } + IFC42.IfcShapeAspect = IfcShapeAspect; + class IfcShapeModel extends IfcRepresentation { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 3982875396; + } + } + IFC42.IfcShapeModel = IfcShapeModel; + class IfcShapeRepresentation extends IfcShapeModel { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 4240577450; + } + } + IFC42.IfcShapeRepresentation = IfcShapeRepresentation; + class IfcStructuralConnectionCondition extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 2273995522; + } + } + IFC42.IfcStructuralConnectionCondition = IfcStructuralConnectionCondition; + class IfcStructuralLoad extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 2162789131; + } + } + IFC42.IfcStructuralLoad = IfcStructuralLoad; + class IfcStructuralLoadConfiguration extends IfcStructuralLoad { + constructor(Name, Values, Locations) { + super(Name); + this.Name = Name; + this.Values = Values; + this.Locations = Locations; + this.type = 3478079324; + } + } + IFC42.IfcStructuralLoadConfiguration = IfcStructuralLoadConfiguration; + class IfcStructuralLoadOrResult extends IfcStructuralLoad { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 609421318; + } + } + IFC42.IfcStructuralLoadOrResult = IfcStructuralLoadOrResult; + class IfcStructuralLoadStatic extends IfcStructuralLoadOrResult { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 2525727697; + } + } + IFC42.IfcStructuralLoadStatic = IfcStructuralLoadStatic; + class IfcStructuralLoadTemperature extends IfcStructuralLoadStatic { + constructor(Name, DeltaTConstant, DeltaTY, DeltaTZ) { + super(Name); + this.Name = Name; + this.DeltaTConstant = DeltaTConstant; + this.DeltaTY = DeltaTY; + this.DeltaTZ = DeltaTZ; + this.type = 3408363356; + } + } + IFC42.IfcStructuralLoadTemperature = IfcStructuralLoadTemperature; + class IfcStyleModel extends IfcRepresentation { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 2830218821; + } + } + IFC42.IfcStyleModel = IfcStyleModel; + class IfcStyledItem extends IfcRepresentationItem { + constructor(Item, Styles, Name) { + super(); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.type = 3958052878; + } + } + IFC42.IfcStyledItem = IfcStyledItem; + class IfcStyledRepresentation extends IfcStyleModel { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 3049322572; + } + } + IFC42.IfcStyledRepresentation = IfcStyledRepresentation; + class IfcSurfaceReinforcementArea extends IfcStructuralLoadOrResult { + constructor(Name, SurfaceReinforcement1, SurfaceReinforcement2, ShearReinforcement) { + super(Name); + this.Name = Name; + this.SurfaceReinforcement1 = SurfaceReinforcement1; + this.SurfaceReinforcement2 = SurfaceReinforcement2; + this.ShearReinforcement = ShearReinforcement; + this.type = 2934153892; + } + } + IFC42.IfcSurfaceReinforcementArea = IfcSurfaceReinforcementArea; + class IfcSurfaceStyle extends IfcPresentationStyle { + constructor(Name, Side, Styles) { + super(Name); + this.Name = Name; + this.Side = Side; + this.Styles = Styles; + this.type = 1300840506; + } + } + IFC42.IfcSurfaceStyle = IfcSurfaceStyle; + class IfcSurfaceStyleLighting extends IfcPresentationItem { + constructor(DiffuseTransmissionColour, DiffuseReflectionColour, TransmissionColour, ReflectanceColour) { + super(); + this.DiffuseTransmissionColour = DiffuseTransmissionColour; + this.DiffuseReflectionColour = DiffuseReflectionColour; + this.TransmissionColour = TransmissionColour; + this.ReflectanceColour = ReflectanceColour; + this.type = 3303107099; + } + } + IFC42.IfcSurfaceStyleLighting = IfcSurfaceStyleLighting; + class IfcSurfaceStyleRefraction extends IfcPresentationItem { + constructor(RefractionIndex, DispersionFactor) { + super(); + this.RefractionIndex = RefractionIndex; + this.DispersionFactor = DispersionFactor; + this.type = 1607154358; + } + } + IFC42.IfcSurfaceStyleRefraction = IfcSurfaceStyleRefraction; + class IfcSurfaceStyleShading extends IfcPresentationItem { + constructor(SurfaceColour, Transparency) { + super(); + this.SurfaceColour = SurfaceColour; + this.Transparency = Transparency; + this.type = 846575682; + } + } + IFC42.IfcSurfaceStyleShading = IfcSurfaceStyleShading; + class IfcSurfaceStyleWithTextures extends IfcPresentationItem { + constructor(Textures) { + super(); + this.Textures = Textures; + this.type = 1351298697; + } + } + IFC42.IfcSurfaceStyleWithTextures = IfcSurfaceStyleWithTextures; + class IfcSurfaceTexture extends IfcPresentationItem { + constructor(RepeatS, RepeatT, Mode, TextureTransform, Parameter) { + super(); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.Mode = Mode; + this.TextureTransform = TextureTransform; + this.Parameter = Parameter; + this.type = 626085974; + } + } + IFC42.IfcSurfaceTexture = IfcSurfaceTexture; + class IfcTable extends IfcLineObject { + constructor(Name, Rows, Columns) { + super(); + this.Name = Name; + this.Rows = Rows; + this.Columns = Columns; + this.type = 985171141; + } + } + IFC42.IfcTable = IfcTable; + class IfcTableColumn extends IfcLineObject { + constructor(Identifier, Name, Description, Unit, ReferencePath) { + super(); + this.Identifier = Identifier; + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.ReferencePath = ReferencePath; + this.type = 2043862942; + } + } + IFC42.IfcTableColumn = IfcTableColumn; + class IfcTableRow extends IfcLineObject { + constructor(RowCells, IsHeading) { + super(); + this.RowCells = RowCells; + this.IsHeading = IsHeading; + this.type = 531007025; + } + } + IFC42.IfcTableRow = IfcTableRow; + class IfcTaskTime extends IfcSchedulingTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, DurationType, ScheduleDuration, ScheduleStart, ScheduleFinish, EarlyStart, EarlyFinish, LateStart, LateFinish, FreeFloat, TotalFloat, IsCritical, StatusTime, ActualDuration, ActualStart, ActualFinish, RemainingTime, Completion) { + super(Name, DataOrigin, UserDefinedDataOrigin); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.DurationType = DurationType; + this.ScheduleDuration = ScheduleDuration; + this.ScheduleStart = ScheduleStart; + this.ScheduleFinish = ScheduleFinish; + this.EarlyStart = EarlyStart; + this.EarlyFinish = EarlyFinish; + this.LateStart = LateStart; + this.LateFinish = LateFinish; + this.FreeFloat = FreeFloat; + this.TotalFloat = TotalFloat; + this.IsCritical = IsCritical; + this.StatusTime = StatusTime; + this.ActualDuration = ActualDuration; + this.ActualStart = ActualStart; + this.ActualFinish = ActualFinish; + this.RemainingTime = RemainingTime; + this.Completion = Completion; + this.type = 1549132990; + } + } + IFC42.IfcTaskTime = IfcTaskTime; + class IfcTaskTimeRecurring extends IfcTaskTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, DurationType, ScheduleDuration, ScheduleStart, ScheduleFinish, EarlyStart, EarlyFinish, LateStart, LateFinish, FreeFloat, TotalFloat, IsCritical, StatusTime, ActualDuration, ActualStart, ActualFinish, RemainingTime, Completion, Recurrence) { + super(Name, DataOrigin, UserDefinedDataOrigin, DurationType, ScheduleDuration, ScheduleStart, ScheduleFinish, EarlyStart, EarlyFinish, LateStart, LateFinish, FreeFloat, TotalFloat, IsCritical, StatusTime, ActualDuration, ActualStart, ActualFinish, RemainingTime, Completion); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.DurationType = DurationType; + this.ScheduleDuration = ScheduleDuration; + this.ScheduleStart = ScheduleStart; + this.ScheduleFinish = ScheduleFinish; + this.EarlyStart = EarlyStart; + this.EarlyFinish = EarlyFinish; + this.LateStart = LateStart; + this.LateFinish = LateFinish; + this.FreeFloat = FreeFloat; + this.TotalFloat = TotalFloat; + this.IsCritical = IsCritical; + this.StatusTime = StatusTime; + this.ActualDuration = ActualDuration; + this.ActualStart = ActualStart; + this.ActualFinish = ActualFinish; + this.RemainingTime = RemainingTime; + this.Completion = Completion; + this.Recurrence = Recurrence; + this.type = 2771591690; + } + } + IFC42.IfcTaskTimeRecurring = IfcTaskTimeRecurring; + class IfcTelecomAddress extends IfcAddress { + constructor(Purpose, Description, UserDefinedPurpose, TelephoneNumbers, FacsimileNumbers, PagerNumber, ElectronicMailAddresses, WWWHomePageURL, MessagingIDs) { + super(Purpose, Description, UserDefinedPurpose); + this.Purpose = Purpose; + this.Description = Description; + this.UserDefinedPurpose = UserDefinedPurpose; + this.TelephoneNumbers = TelephoneNumbers; + this.FacsimileNumbers = FacsimileNumbers; + this.PagerNumber = PagerNumber; + this.ElectronicMailAddresses = ElectronicMailAddresses; + this.WWWHomePageURL = WWWHomePageURL; + this.MessagingIDs = MessagingIDs; + this.type = 912023232; + } + } + IFC42.IfcTelecomAddress = IfcTelecomAddress; + class IfcTextStyle extends IfcPresentationStyle { + constructor(Name, TextCharacterAppearance, TextStyle, TextFontStyle, ModelOrDraughting) { + super(Name); + this.Name = Name; + this.TextCharacterAppearance = TextCharacterAppearance; + this.TextStyle = TextStyle; + this.TextFontStyle = TextFontStyle; + this.ModelOrDraughting = ModelOrDraughting; + this.type = 1447204868; + } + } + IFC42.IfcTextStyle = IfcTextStyle; + class IfcTextStyleForDefinedFont extends IfcPresentationItem { + constructor(Colour, BackgroundColour) { + super(); + this.Colour = Colour; + this.BackgroundColour = BackgroundColour; + this.type = 2636378356; + } + } + IFC42.IfcTextStyleForDefinedFont = IfcTextStyleForDefinedFont; + class IfcTextStyleTextModel extends IfcPresentationItem { + constructor(TextIndent, TextAlign, TextDecoration, LetterSpacing, WordSpacing, TextTransform, LineHeight) { + super(); + this.TextIndent = TextIndent; + this.TextAlign = TextAlign; + this.TextDecoration = TextDecoration; + this.LetterSpacing = LetterSpacing; + this.WordSpacing = WordSpacing; + this.TextTransform = TextTransform; + this.LineHeight = LineHeight; + this.type = 1640371178; + } + } + IFC42.IfcTextStyleTextModel = IfcTextStyleTextModel; + class IfcTextureCoordinate extends IfcPresentationItem { + constructor(Maps) { + super(); + this.Maps = Maps; + this.type = 280115917; + } + } + IFC42.IfcTextureCoordinate = IfcTextureCoordinate; + class IfcTextureCoordinateGenerator extends IfcTextureCoordinate { + constructor(Maps, Mode, Parameter) { + super(Maps); + this.Maps = Maps; + this.Mode = Mode; + this.Parameter = Parameter; + this.type = 1742049831; + } + } + IFC42.IfcTextureCoordinateGenerator = IfcTextureCoordinateGenerator; + class IfcTextureMap extends IfcTextureCoordinate { + constructor(Maps, Vertices, MappedTo) { + super(Maps); + this.Maps = Maps; + this.Vertices = Vertices; + this.MappedTo = MappedTo; + this.type = 2552916305; + } + } + IFC42.IfcTextureMap = IfcTextureMap; + class IfcTextureVertex extends IfcPresentationItem { + constructor(Coordinates) { + super(); + this.Coordinates = Coordinates; + this.type = 1210645708; + } + } + IFC42.IfcTextureVertex = IfcTextureVertex; + class IfcTextureVertexList extends IfcPresentationItem { + constructor(TexCoordsList) { + super(); + this.TexCoordsList = TexCoordsList; + this.type = 3611470254; + } + } + IFC42.IfcTextureVertexList = IfcTextureVertexList; + class IfcTimePeriod extends IfcLineObject { + constructor(StartTime, EndTime) { + super(); + this.StartTime = StartTime; + this.EndTime = EndTime; + this.type = 1199560280; + } + } + IFC42.IfcTimePeriod = IfcTimePeriod; + class IfcTimeSeries extends IfcLineObject { + constructor(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit) { + super(); + this.Name = Name; + this.Description = Description; + this.StartTime = StartTime; + this.EndTime = EndTime; + this.TimeSeriesDataType = TimeSeriesDataType; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.Unit = Unit; + this.type = 3101149627; + } + } + IFC42.IfcTimeSeries = IfcTimeSeries; + class IfcTimeSeriesValue extends IfcLineObject { + constructor(ListValues) { + super(); + this.ListValues = ListValues; + this.type = 581633288; + } + } + IFC42.IfcTimeSeriesValue = IfcTimeSeriesValue; + class IfcTopologicalRepresentationItem extends IfcRepresentationItem { + constructor() { + super(); + this.type = 1377556343; + } + } + IFC42.IfcTopologicalRepresentationItem = IfcTopologicalRepresentationItem; + class IfcTopologyRepresentation extends IfcShapeModel { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 1735638870; + } + } + IFC42.IfcTopologyRepresentation = IfcTopologyRepresentation; + class IfcUnitAssignment extends IfcLineObject { + constructor(Units) { + super(); + this.Units = Units; + this.type = 180925521; + } + } + IFC42.IfcUnitAssignment = IfcUnitAssignment; + class IfcVertex extends IfcTopologicalRepresentationItem { + constructor() { + super(); + this.type = 2799835756; + } + } + IFC42.IfcVertex = IfcVertex; + class IfcVertexPoint extends IfcVertex { + constructor(VertexGeometry) { + super(); + this.VertexGeometry = VertexGeometry; + this.type = 1907098498; + } + } + IFC42.IfcVertexPoint = IfcVertexPoint; + class IfcVirtualGridIntersection extends IfcLineObject { + constructor(IntersectingAxes, OffsetDistances) { + super(); + this.IntersectingAxes = IntersectingAxes; + this.OffsetDistances = OffsetDistances; + this.type = 891718957; + } + } + IFC42.IfcVirtualGridIntersection = IfcVirtualGridIntersection; + class IfcWorkTime extends IfcSchedulingTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, RecurrencePattern, Start, Finish) { + super(Name, DataOrigin, UserDefinedDataOrigin); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.RecurrencePattern = RecurrencePattern; + this.Start = Start; + this.Finish = Finish; + this.type = 1236880293; + } + } + IFC42.IfcWorkTime = IfcWorkTime; + class IfcApprovalRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingApproval, RelatedApprovals) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingApproval = RelatingApproval; + this.RelatedApprovals = RelatedApprovals; + this.type = 3869604511; + } + } + IFC42.IfcApprovalRelationship = IfcApprovalRelationship; + class IfcArbitraryClosedProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, OuterCurve) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.OuterCurve = OuterCurve; + this.type = 3798115385; + } + } + IFC42.IfcArbitraryClosedProfileDef = IfcArbitraryClosedProfileDef; + class IfcArbitraryOpenProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, Curve) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Curve = Curve; + this.type = 1310608509; + } + } + IFC42.IfcArbitraryOpenProfileDef = IfcArbitraryOpenProfileDef; + class IfcArbitraryProfileDefWithVoids extends IfcArbitraryClosedProfileDef { + constructor(ProfileType, ProfileName, OuterCurve, InnerCurves) { + super(ProfileType, ProfileName, OuterCurve); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.OuterCurve = OuterCurve; + this.InnerCurves = InnerCurves; + this.type = 2705031697; + } + } + IFC42.IfcArbitraryProfileDefWithVoids = IfcArbitraryProfileDefWithVoids; + class IfcBlobTexture extends IfcSurfaceTexture { + constructor(RepeatS, RepeatT, Mode, TextureTransform, Parameter, RasterFormat, RasterCode) { + super(RepeatS, RepeatT, Mode, TextureTransform, Parameter); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.Mode = Mode; + this.TextureTransform = TextureTransform; + this.Parameter = Parameter; + this.RasterFormat = RasterFormat; + this.RasterCode = RasterCode; + this.type = 616511568; + } + } + IFC42.IfcBlobTexture = IfcBlobTexture; + class IfcCenterLineProfileDef extends IfcArbitraryOpenProfileDef { + constructor(ProfileType, ProfileName, Curve, Thickness) { + super(ProfileType, ProfileName, Curve); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Curve = Curve; + this.Thickness = Thickness; + this.type = 3150382593; + } + } + IFC42.IfcCenterLineProfileDef = IfcCenterLineProfileDef; + class IfcClassification extends IfcExternalInformation { + constructor(Source2, Edition, EditionDate, Name, Description, Location, ReferenceTokens) { + super(); + this.Source = Source2; + this.Edition = Edition; + this.EditionDate = EditionDate; + this.Name = Name; + this.Description = Description; + this.Location = Location; + this.ReferenceTokens = ReferenceTokens; + this.type = 747523909; + } + } + IFC42.IfcClassification = IfcClassification; + class IfcClassificationReference extends IfcExternalReference { + constructor(Location, Identification, Name, ReferencedSource, Description, Sort) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.ReferencedSource = ReferencedSource; + this.Description = Description; + this.Sort = Sort; + this.type = 647927063; + } + } + IFC42.IfcClassificationReference = IfcClassificationReference; + class IfcColourRgbList extends IfcPresentationItem { + constructor(ColourList) { + super(); + this.ColourList = ColourList; + this.type = 3285139300; + } + } + IFC42.IfcColourRgbList = IfcColourRgbList; + class IfcColourSpecification extends IfcPresentationItem { + constructor(Name) { + super(); + this.Name = Name; + this.type = 3264961684; + } + } + IFC42.IfcColourSpecification = IfcColourSpecification; + class IfcCompositeProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, Profiles, Label) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Profiles = Profiles; + this.Label = Label; + this.type = 1485152156; + } + } + IFC42.IfcCompositeProfileDef = IfcCompositeProfileDef; + class IfcConnectedFaceSet extends IfcTopologicalRepresentationItem { + constructor(CfsFaces) { + super(); + this.CfsFaces = CfsFaces; + this.type = 370225590; + } + } + IFC42.IfcConnectedFaceSet = IfcConnectedFaceSet; + class IfcConnectionCurveGeometry extends IfcConnectionGeometry { + constructor(CurveOnRelatingElement, CurveOnRelatedElement) { + super(); + this.CurveOnRelatingElement = CurveOnRelatingElement; + this.CurveOnRelatedElement = CurveOnRelatedElement; + this.type = 1981873012; + } + } + IFC42.IfcConnectionCurveGeometry = IfcConnectionCurveGeometry; + class IfcConnectionPointEccentricity extends IfcConnectionPointGeometry { + constructor(PointOnRelatingElement, PointOnRelatedElement, EccentricityInX, EccentricityInY, EccentricityInZ) { + super(PointOnRelatingElement, PointOnRelatedElement); + this.PointOnRelatingElement = PointOnRelatingElement; + this.PointOnRelatedElement = PointOnRelatedElement; + this.EccentricityInX = EccentricityInX; + this.EccentricityInY = EccentricityInY; + this.EccentricityInZ = EccentricityInZ; + this.type = 45288368; + } + } + IFC42.IfcConnectionPointEccentricity = IfcConnectionPointEccentricity; + class IfcContextDependentUnit extends IfcNamedUnit { + constructor(Dimensions, UnitType, Name) { + super(Dimensions, UnitType); + this.Dimensions = Dimensions; + this.UnitType = UnitType; + this.Name = Name; + this.type = 3050246964; + } + } + IFC42.IfcContextDependentUnit = IfcContextDependentUnit; + class IfcConversionBasedUnit extends IfcNamedUnit { + constructor(Dimensions, UnitType, Name, ConversionFactor) { + super(Dimensions, UnitType); + this.Dimensions = Dimensions; + this.UnitType = UnitType; + this.Name = Name; + this.ConversionFactor = ConversionFactor; + this.type = 2889183280; + } + } + IFC42.IfcConversionBasedUnit = IfcConversionBasedUnit; + class IfcConversionBasedUnitWithOffset extends IfcConversionBasedUnit { + constructor(Dimensions, UnitType, Name, ConversionFactor, ConversionOffset) { + super(Dimensions, UnitType, Name, ConversionFactor); + this.Dimensions = Dimensions; + this.UnitType = UnitType; + this.Name = Name; + this.ConversionFactor = ConversionFactor; + this.ConversionOffset = ConversionOffset; + this.type = 2713554722; + } + } + IFC42.IfcConversionBasedUnitWithOffset = IfcConversionBasedUnitWithOffset; + class IfcCurrencyRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingMonetaryUnit, RelatedMonetaryUnit, ExchangeRate, RateDateTime, RateSource) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingMonetaryUnit = RelatingMonetaryUnit; + this.RelatedMonetaryUnit = RelatedMonetaryUnit; + this.ExchangeRate = ExchangeRate; + this.RateDateTime = RateDateTime; + this.RateSource = RateSource; + this.type = 539742890; + } + } + IFC42.IfcCurrencyRelationship = IfcCurrencyRelationship; + class IfcCurveStyle extends IfcPresentationStyle { + constructor(Name, CurveFont, CurveWidth, CurveColour, ModelOrDraughting) { + super(Name); + this.Name = Name; + this.CurveFont = CurveFont; + this.CurveWidth = CurveWidth; + this.CurveColour = CurveColour; + this.ModelOrDraughting = ModelOrDraughting; + this.type = 3800577675; + } + } + IFC42.IfcCurveStyle = IfcCurveStyle; + class IfcCurveStyleFont extends IfcPresentationItem { + constructor(Name, PatternList) { + super(); + this.Name = Name; + this.PatternList = PatternList; + this.type = 1105321065; + } + } + IFC42.IfcCurveStyleFont = IfcCurveStyleFont; + class IfcCurveStyleFontAndScaling extends IfcPresentationItem { + constructor(Name, CurveFont, CurveFontScaling) { + super(); + this.Name = Name; + this.CurveFont = CurveFont; + this.CurveFontScaling = CurveFontScaling; + this.type = 2367409068; + } + } + IFC42.IfcCurveStyleFontAndScaling = IfcCurveStyleFontAndScaling; + class IfcCurveStyleFontPattern extends IfcPresentationItem { + constructor(VisibleSegmentLength, InvisibleSegmentLength) { + super(); + this.VisibleSegmentLength = VisibleSegmentLength; + this.InvisibleSegmentLength = InvisibleSegmentLength; + this.type = 3510044353; + } + } + IFC42.IfcCurveStyleFontPattern = IfcCurveStyleFontPattern; + class IfcDerivedProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, ParentProfile, Operator, Label) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.ParentProfile = ParentProfile; + this.Operator = Operator; + this.Label = Label; + this.type = 3632507154; + } + } + IFC42.IfcDerivedProfileDef = IfcDerivedProfileDef; + class IfcDocumentInformation extends IfcExternalInformation { + constructor(Identification, Name, Description, Location, Purpose, IntendedUse, Scope, Revision, DocumentOwner, Editors, CreationTime, LastRevisionTime, ElectronicFormat, ValidFrom, ValidUntil, Confidentiality, Status) { + super(); + this.Identification = Identification; + this.Name = Name; + this.Description = Description; + this.Location = Location; + this.Purpose = Purpose; + this.IntendedUse = IntendedUse; + this.Scope = Scope; + this.Revision = Revision; + this.DocumentOwner = DocumentOwner; + this.Editors = Editors; + this.CreationTime = CreationTime; + this.LastRevisionTime = LastRevisionTime; + this.ElectronicFormat = ElectronicFormat; + this.ValidFrom = ValidFrom; + this.ValidUntil = ValidUntil; + this.Confidentiality = Confidentiality; + this.Status = Status; + this.type = 1154170062; + } + } + IFC42.IfcDocumentInformation = IfcDocumentInformation; + class IfcDocumentInformationRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingDocument, RelatedDocuments, RelationshipType) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingDocument = RelatingDocument; + this.RelatedDocuments = RelatedDocuments; + this.RelationshipType = RelationshipType; + this.type = 770865208; + } + } + IFC42.IfcDocumentInformationRelationship = IfcDocumentInformationRelationship; + class IfcDocumentReference extends IfcExternalReference { + constructor(Location, Identification, Name, Description, ReferencedDocument) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.Description = Description; + this.ReferencedDocument = ReferencedDocument; + this.type = 3732053477; + } + } + IFC42.IfcDocumentReference = IfcDocumentReference; + class IfcEdge extends IfcTopologicalRepresentationItem { + constructor(EdgeStart, EdgeEnd) { + super(); + this.EdgeStart = EdgeStart; + this.EdgeEnd = EdgeEnd; + this.type = 3900360178; + } + } + IFC42.IfcEdge = IfcEdge; + class IfcEdgeCurve extends IfcEdge { + constructor(EdgeStart, EdgeEnd, EdgeGeometry, SameSense) { + super(EdgeStart, EdgeEnd); + this.EdgeStart = EdgeStart; + this.EdgeEnd = EdgeEnd; + this.EdgeGeometry = EdgeGeometry; + this.SameSense = SameSense; + this.type = 476780140; + } + } + IFC42.IfcEdgeCurve = IfcEdgeCurve; + class IfcEventTime extends IfcSchedulingTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, ActualDate, EarlyDate, LateDate, ScheduleDate) { + super(Name, DataOrigin, UserDefinedDataOrigin); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.ActualDate = ActualDate; + this.EarlyDate = EarlyDate; + this.LateDate = LateDate; + this.ScheduleDate = ScheduleDate; + this.type = 211053100; + } + } + IFC42.IfcEventTime = IfcEventTime; + class IfcExtendedProperties extends IfcPropertyAbstraction { + constructor(Name, Description, Properties2) { + super(); + this.Name = Name; + this.Description = Description; + this.Properties = Properties2; + this.type = 297599258; + } + } + IFC42.IfcExtendedProperties = IfcExtendedProperties; + class IfcExternalReferenceRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingReference, RelatedResourceObjects) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingReference = RelatingReference; + this.RelatedResourceObjects = RelatedResourceObjects; + this.type = 1437805879; + } + } + IFC42.IfcExternalReferenceRelationship = IfcExternalReferenceRelationship; + class IfcFace extends IfcTopologicalRepresentationItem { + constructor(Bounds) { + super(); + this.Bounds = Bounds; + this.type = 2556980723; + } + } + IFC42.IfcFace = IfcFace; + class IfcFaceBound extends IfcTopologicalRepresentationItem { + constructor(Bound, Orientation) { + super(); + this.Bound = Bound; + this.Orientation = Orientation; + this.type = 1809719519; + } + } + IFC42.IfcFaceBound = IfcFaceBound; + class IfcFaceOuterBound extends IfcFaceBound { + constructor(Bound, Orientation) { + super(Bound, Orientation); + this.Bound = Bound; + this.Orientation = Orientation; + this.type = 803316827; + } + } + IFC42.IfcFaceOuterBound = IfcFaceOuterBound; + class IfcFaceSurface extends IfcFace { + constructor(Bounds, FaceSurface, SameSense) { + super(Bounds); + this.Bounds = Bounds; + this.FaceSurface = FaceSurface; + this.SameSense = SameSense; + this.type = 3008276851; + } + } + IFC42.IfcFaceSurface = IfcFaceSurface; + class IfcFailureConnectionCondition extends IfcStructuralConnectionCondition { + constructor(Name, TensionFailureX, TensionFailureY, TensionFailureZ, CompressionFailureX, CompressionFailureY, CompressionFailureZ) { + super(Name); + this.Name = Name; + this.TensionFailureX = TensionFailureX; + this.TensionFailureY = TensionFailureY; + this.TensionFailureZ = TensionFailureZ; + this.CompressionFailureX = CompressionFailureX; + this.CompressionFailureY = CompressionFailureY; + this.CompressionFailureZ = CompressionFailureZ; + this.type = 4219587988; + } + } + IFC42.IfcFailureConnectionCondition = IfcFailureConnectionCondition; + class IfcFillAreaStyle extends IfcPresentationStyle { + constructor(Name, FillStyles, ModelorDraughting) { + super(Name); + this.Name = Name; + this.FillStyles = FillStyles; + this.ModelorDraughting = ModelorDraughting; + this.type = 738692330; + } + } + IFC42.IfcFillAreaStyle = IfcFillAreaStyle; + class IfcGeometricRepresentationContext extends IfcRepresentationContext { + constructor(ContextIdentifier, ContextType, CoordinateSpaceDimension, Precision, WorldCoordinateSystem, TrueNorth) { + super(ContextIdentifier, ContextType); + this.ContextIdentifier = ContextIdentifier; + this.ContextType = ContextType; + this.CoordinateSpaceDimension = CoordinateSpaceDimension; + this.Precision = Precision; + this.WorldCoordinateSystem = WorldCoordinateSystem; + this.TrueNorth = TrueNorth; + this.type = 3448662350; + } + } + IFC42.IfcGeometricRepresentationContext = IfcGeometricRepresentationContext; + class IfcGeometricRepresentationItem extends IfcRepresentationItem { + constructor() { + super(); + this.type = 2453401579; + } + } + IFC42.IfcGeometricRepresentationItem = IfcGeometricRepresentationItem; + class IfcGeometricRepresentationSubContext extends IfcGeometricRepresentationContext { + constructor(ContextIdentifier, ContextType, ParentContext, TargetScale, TargetView, UserDefinedTargetView) { + super(ContextIdentifier, ContextType, new IfcDimensionCount(0), null, new Handle(0), null); + this.ContextIdentifier = ContextIdentifier; + this.ContextType = ContextType; + this.ParentContext = ParentContext; + this.TargetScale = TargetScale; + this.TargetView = TargetView; + this.UserDefinedTargetView = UserDefinedTargetView; + this.type = 4142052618; + } + } + IFC42.IfcGeometricRepresentationSubContext = IfcGeometricRepresentationSubContext; + class IfcGeometricSet extends IfcGeometricRepresentationItem { + constructor(Elements) { + super(); + this.Elements = Elements; + this.type = 3590301190; + } + } + IFC42.IfcGeometricSet = IfcGeometricSet; + class IfcGridPlacement extends IfcObjectPlacement { + constructor(PlacementLocation, PlacementRefDirection) { + super(); + this.PlacementLocation = PlacementLocation; + this.PlacementRefDirection = PlacementRefDirection; + this.type = 178086475; + } + } + IFC42.IfcGridPlacement = IfcGridPlacement; + class IfcHalfSpaceSolid extends IfcGeometricRepresentationItem { + constructor(BaseSurface, AgreementFlag) { + super(); + this.BaseSurface = BaseSurface; + this.AgreementFlag = AgreementFlag; + this.type = 812098782; + } + } + IFC42.IfcHalfSpaceSolid = IfcHalfSpaceSolid; + class IfcImageTexture extends IfcSurfaceTexture { + constructor(RepeatS, RepeatT, Mode, TextureTransform, Parameter, URLReference) { + super(RepeatS, RepeatT, Mode, TextureTransform, Parameter); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.Mode = Mode; + this.TextureTransform = TextureTransform; + this.Parameter = Parameter; + this.URLReference = URLReference; + this.type = 3905492369; + } + } + IFC42.IfcImageTexture = IfcImageTexture; + class IfcIndexedColourMap extends IfcPresentationItem { + constructor(MappedTo, Opacity, Colours, ColourIndex) { + super(); + this.MappedTo = MappedTo; + this.Opacity = Opacity; + this.Colours = Colours; + this.ColourIndex = ColourIndex; + this.type = 3570813810; + } + } + IFC42.IfcIndexedColourMap = IfcIndexedColourMap; + class IfcIndexedTextureMap extends IfcTextureCoordinate { + constructor(Maps, MappedTo, TexCoords) { + super(Maps); + this.Maps = Maps; + this.MappedTo = MappedTo; + this.TexCoords = TexCoords; + this.type = 1437953363; + } + } + IFC42.IfcIndexedTextureMap = IfcIndexedTextureMap; + class IfcIndexedTriangleTextureMap extends IfcIndexedTextureMap { + constructor(Maps, MappedTo, TexCoords, TexCoordIndex) { + super(Maps, MappedTo, TexCoords); + this.Maps = Maps; + this.MappedTo = MappedTo; + this.TexCoords = TexCoords; + this.TexCoordIndex = TexCoordIndex; + this.type = 2133299955; + } + } + IFC42.IfcIndexedTriangleTextureMap = IfcIndexedTriangleTextureMap; + class IfcIrregularTimeSeries extends IfcTimeSeries { + constructor(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit, Values) { + super(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit); + this.Name = Name; + this.Description = Description; + this.StartTime = StartTime; + this.EndTime = EndTime; + this.TimeSeriesDataType = TimeSeriesDataType; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.Unit = Unit; + this.Values = Values; + this.type = 3741457305; + } + } + IFC42.IfcIrregularTimeSeries = IfcIrregularTimeSeries; + class IfcLagTime extends IfcSchedulingTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, LagValue, DurationType) { + super(Name, DataOrigin, UserDefinedDataOrigin); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.LagValue = LagValue; + this.DurationType = DurationType; + this.type = 1585845231; + } + } + IFC42.IfcLagTime = IfcLagTime; + class IfcLightSource extends IfcGeometricRepresentationItem { + constructor(Name, LightColour, AmbientIntensity, Intensity) { + super(); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.type = 1402838566; + } + } + IFC42.IfcLightSource = IfcLightSource; + class IfcLightSourceAmbient extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.type = 125510826; + } + } + IFC42.IfcLightSourceAmbient = IfcLightSourceAmbient; + class IfcLightSourceDirectional extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity, Orientation) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Orientation = Orientation; + this.type = 2604431987; + } + } + IFC42.IfcLightSourceDirectional = IfcLightSourceDirectional; + class IfcLightSourceGoniometric extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity, Position, ColourAppearance, ColourTemperature, LuminousFlux, LightEmissionSource, LightDistributionDataSource) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Position = Position; + this.ColourAppearance = ColourAppearance; + this.ColourTemperature = ColourTemperature; + this.LuminousFlux = LuminousFlux; + this.LightEmissionSource = LightEmissionSource; + this.LightDistributionDataSource = LightDistributionDataSource; + this.type = 4266656042; + } + } + IFC42.IfcLightSourceGoniometric = IfcLightSourceGoniometric; + class IfcLightSourcePositional extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity, Position, Radius, ConstantAttenuation, DistanceAttenuation, QuadricAttenuation) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Position = Position; + this.Radius = Radius; + this.ConstantAttenuation = ConstantAttenuation; + this.DistanceAttenuation = DistanceAttenuation; + this.QuadricAttenuation = QuadricAttenuation; + this.type = 1520743889; + } + } + IFC42.IfcLightSourcePositional = IfcLightSourcePositional; + class IfcLightSourceSpot extends IfcLightSourcePositional { + constructor(Name, LightColour, AmbientIntensity, Intensity, Position, Radius, ConstantAttenuation, DistanceAttenuation, QuadricAttenuation, Orientation, ConcentrationExponent, SpreadAngle, BeamWidthAngle) { + super(Name, LightColour, AmbientIntensity, Intensity, Position, Radius, ConstantAttenuation, DistanceAttenuation, QuadricAttenuation); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Position = Position; + this.Radius = Radius; + this.ConstantAttenuation = ConstantAttenuation; + this.DistanceAttenuation = DistanceAttenuation; + this.QuadricAttenuation = QuadricAttenuation; + this.Orientation = Orientation; + this.ConcentrationExponent = ConcentrationExponent; + this.SpreadAngle = SpreadAngle; + this.BeamWidthAngle = BeamWidthAngle; + this.type = 3422422726; + } + } + IFC42.IfcLightSourceSpot = IfcLightSourceSpot; + class IfcLocalPlacement extends IfcObjectPlacement { + constructor(PlacementRelTo, RelativePlacement) { + super(); + this.PlacementRelTo = PlacementRelTo; + this.RelativePlacement = RelativePlacement; + this.type = 2624227202; + } + } + IFC42.IfcLocalPlacement = IfcLocalPlacement; + class IfcLoop extends IfcTopologicalRepresentationItem { + constructor() { + super(); + this.type = 1008929658; + } + } + IFC42.IfcLoop = IfcLoop; + class IfcMappedItem extends IfcRepresentationItem { + constructor(MappingSource, MappingTarget) { + super(); + this.MappingSource = MappingSource; + this.MappingTarget = MappingTarget; + this.type = 2347385850; + } + } + IFC42.IfcMappedItem = IfcMappedItem; + class IfcMaterial extends IfcMaterialDefinition { + constructor(Name, Description, Category) { + super(); + this.Name = Name; + this.Description = Description; + this.Category = Category; + this.type = 1838606355; + } + } + IFC42.IfcMaterial = IfcMaterial; + class IfcMaterialConstituent extends IfcMaterialDefinition { + constructor(Name, Description, Material3, Fraction, Category) { + super(); + this.Name = Name; + this.Description = Description; + this.Material = Material3; + this.Fraction = Fraction; + this.Category = Category; + this.type = 3708119e3; + } + } + IFC42.IfcMaterialConstituent = IfcMaterialConstituent; + class IfcMaterialConstituentSet extends IfcMaterialDefinition { + constructor(Name, Description, MaterialConstituents) { + super(); + this.Name = Name; + this.Description = Description; + this.MaterialConstituents = MaterialConstituents; + this.type = 2852063980; + } + } + IFC42.IfcMaterialConstituentSet = IfcMaterialConstituentSet; + class IfcMaterialDefinitionRepresentation extends IfcProductRepresentation { + constructor(Name, Description, Representations, RepresentedMaterial) { + super(Name, Description, Representations); + this.Name = Name; + this.Description = Description; + this.Representations = Representations; + this.RepresentedMaterial = RepresentedMaterial; + this.type = 2022407955; + } + } + IFC42.IfcMaterialDefinitionRepresentation = IfcMaterialDefinitionRepresentation; + class IfcMaterialLayerSetUsage extends IfcMaterialUsageDefinition { + constructor(ForLayerSet, LayerSetDirection, DirectionSense, OffsetFromReferenceLine, ReferenceExtent) { + super(); + this.ForLayerSet = ForLayerSet; + this.LayerSetDirection = LayerSetDirection; + this.DirectionSense = DirectionSense; + this.OffsetFromReferenceLine = OffsetFromReferenceLine; + this.ReferenceExtent = ReferenceExtent; + this.type = 1303795690; + } + } + IFC42.IfcMaterialLayerSetUsage = IfcMaterialLayerSetUsage; + class IfcMaterialProfileSetUsage extends IfcMaterialUsageDefinition { + constructor(ForProfileSet, CardinalPoint, ReferenceExtent) { + super(); + this.ForProfileSet = ForProfileSet; + this.CardinalPoint = CardinalPoint; + this.ReferenceExtent = ReferenceExtent; + this.type = 3079605661; + } + } + IFC42.IfcMaterialProfileSetUsage = IfcMaterialProfileSetUsage; + class IfcMaterialProfileSetUsageTapering extends IfcMaterialProfileSetUsage { + constructor(ForProfileSet, CardinalPoint, ReferenceExtent, ForProfileEndSet, CardinalEndPoint) { + super(ForProfileSet, CardinalPoint, ReferenceExtent); + this.ForProfileSet = ForProfileSet; + this.CardinalPoint = CardinalPoint; + this.ReferenceExtent = ReferenceExtent; + this.ForProfileEndSet = ForProfileEndSet; + this.CardinalEndPoint = CardinalEndPoint; + this.type = 3404854881; + } + } + IFC42.IfcMaterialProfileSetUsageTapering = IfcMaterialProfileSetUsageTapering; + class IfcMaterialProperties extends IfcExtendedProperties { + constructor(Name, Description, Properties2, Material3) { + super(Name, Description, Properties2); + this.Name = Name; + this.Description = Description; + this.Properties = Properties2; + this.Material = Material3; + this.type = 3265635763; + } + } + IFC42.IfcMaterialProperties = IfcMaterialProperties; + class IfcMaterialRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingMaterial, RelatedMaterials, Expression) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingMaterial = RelatingMaterial; + this.RelatedMaterials = RelatedMaterials; + this.Expression = Expression; + this.type = 853536259; + } + } + IFC42.IfcMaterialRelationship = IfcMaterialRelationship; + class IfcMirroredProfileDef extends IfcDerivedProfileDef { + constructor(ProfileType, ProfileName, ParentProfile, Label) { + super(ProfileType, ProfileName, ParentProfile, new Handle(0), Label); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.ParentProfile = ParentProfile; + this.Label = Label; + this.type = 2998442950; + } + } + IFC42.IfcMirroredProfileDef = IfcMirroredProfileDef; + class IfcObjectDefinition extends IfcRoot { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 219451334; + } + } + IFC42.IfcObjectDefinition = IfcObjectDefinition; + class IfcOpenShell extends IfcConnectedFaceSet { + constructor(CfsFaces) { + super(CfsFaces); + this.CfsFaces = CfsFaces; + this.type = 2665983363; + } + } + IFC42.IfcOpenShell = IfcOpenShell; + class IfcOrganizationRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingOrganization, RelatedOrganizations) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingOrganization = RelatingOrganization; + this.RelatedOrganizations = RelatedOrganizations; + this.type = 1411181986; + } + } + IFC42.IfcOrganizationRelationship = IfcOrganizationRelationship; + class IfcOrientedEdge extends IfcEdge { + constructor(EdgeElement, Orientation) { + super(new Handle(0), new Handle(0)); + this.EdgeElement = EdgeElement; + this.Orientation = Orientation; + this.type = 1029017970; + } + } + IFC42.IfcOrientedEdge = IfcOrientedEdge; + class IfcParameterizedProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, Position) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.type = 2529465313; + } + } + IFC42.IfcParameterizedProfileDef = IfcParameterizedProfileDef; + class IfcPath extends IfcTopologicalRepresentationItem { + constructor(EdgeList) { + super(); + this.EdgeList = EdgeList; + this.type = 2519244187; + } + } + IFC42.IfcPath = IfcPath; + class IfcPhysicalComplexQuantity extends IfcPhysicalQuantity { + constructor(Name, Description, HasQuantities, Discrimination, Quality, Usage) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.HasQuantities = HasQuantities; + this.Discrimination = Discrimination; + this.Quality = Quality; + this.Usage = Usage; + this.type = 3021840470; + } + } + IFC42.IfcPhysicalComplexQuantity = IfcPhysicalComplexQuantity; + class IfcPixelTexture extends IfcSurfaceTexture { + constructor(RepeatS, RepeatT, Mode, TextureTransform, Parameter, Width, Height, ColourComponents, Pixel) { + super(RepeatS, RepeatT, Mode, TextureTransform, Parameter); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.Mode = Mode; + this.TextureTransform = TextureTransform; + this.Parameter = Parameter; + this.Width = Width; + this.Height = Height; + this.ColourComponents = ColourComponents; + this.Pixel = Pixel; + this.type = 597895409; + } + } + IFC42.IfcPixelTexture = IfcPixelTexture; + class IfcPlacement extends IfcGeometricRepresentationItem { + constructor(Location) { + super(); + this.Location = Location; + this.type = 2004835150; + } + } + IFC42.IfcPlacement = IfcPlacement; + class IfcPlanarExtent extends IfcGeometricRepresentationItem { + constructor(SizeInX, SizeInY) { + super(); + this.SizeInX = SizeInX; + this.SizeInY = SizeInY; + this.type = 1663979128; + } + } + IFC42.IfcPlanarExtent = IfcPlanarExtent; + class IfcPoint extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 2067069095; + } + } + IFC42.IfcPoint = IfcPoint; + class IfcPointOnCurve extends IfcPoint { + constructor(BasisCurve, PointParameter) { + super(); + this.BasisCurve = BasisCurve; + this.PointParameter = PointParameter; + this.type = 4022376103; + } + } + IFC42.IfcPointOnCurve = IfcPointOnCurve; + class IfcPointOnSurface extends IfcPoint { + constructor(BasisSurface, PointParameterU, PointParameterV) { + super(); + this.BasisSurface = BasisSurface; + this.PointParameterU = PointParameterU; + this.PointParameterV = PointParameterV; + this.type = 1423911732; + } + } + IFC42.IfcPointOnSurface = IfcPointOnSurface; + class IfcPolyLoop extends IfcLoop { + constructor(Polygon) { + super(); + this.Polygon = Polygon; + this.type = 2924175390; + } + } + IFC42.IfcPolyLoop = IfcPolyLoop; + class IfcPolygonalBoundedHalfSpace extends IfcHalfSpaceSolid { + constructor(BaseSurface, AgreementFlag, Position, PolygonalBoundary) { + super(BaseSurface, AgreementFlag); + this.BaseSurface = BaseSurface; + this.AgreementFlag = AgreementFlag; + this.Position = Position; + this.PolygonalBoundary = PolygonalBoundary; + this.type = 2775532180; + } + } + IFC42.IfcPolygonalBoundedHalfSpace = IfcPolygonalBoundedHalfSpace; + class IfcPreDefinedItem extends IfcPresentationItem { + constructor(Name) { + super(); + this.Name = Name; + this.type = 3727388367; + } + } + IFC42.IfcPreDefinedItem = IfcPreDefinedItem; + class IfcPreDefinedProperties extends IfcPropertyAbstraction { + constructor() { + super(); + this.type = 3778827333; + } + } + IFC42.IfcPreDefinedProperties = IfcPreDefinedProperties; + class IfcPreDefinedTextFont extends IfcPreDefinedItem { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 1775413392; + } + } + IFC42.IfcPreDefinedTextFont = IfcPreDefinedTextFont; + class IfcProductDefinitionShape extends IfcProductRepresentation { + constructor(Name, Description, Representations) { + super(Name, Description, Representations); + this.Name = Name; + this.Description = Description; + this.Representations = Representations; + this.type = 673634403; + } + } + IFC42.IfcProductDefinitionShape = IfcProductDefinitionShape; + class IfcProfileProperties extends IfcExtendedProperties { + constructor(Name, Description, Properties2, ProfileDefinition) { + super(Name, Description, Properties2); + this.Name = Name; + this.Description = Description; + this.Properties = Properties2; + this.ProfileDefinition = ProfileDefinition; + this.type = 2802850158; + } + } + IFC42.IfcProfileProperties = IfcProfileProperties; + class IfcProperty extends IfcPropertyAbstraction { + constructor(Name, Description) { + super(); + this.Name = Name; + this.Description = Description; + this.type = 2598011224; + } + } + IFC42.IfcProperty = IfcProperty; + class IfcPropertyDefinition extends IfcRoot { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 1680319473; + } + } + IFC42.IfcPropertyDefinition = IfcPropertyDefinition; + class IfcPropertyDependencyRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, DependingProperty, DependantProperty, Expression) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.DependingProperty = DependingProperty; + this.DependantProperty = DependantProperty; + this.Expression = Expression; + this.type = 148025276; + } + } + IFC42.IfcPropertyDependencyRelationship = IfcPropertyDependencyRelationship; + class IfcPropertySetDefinition extends IfcPropertyDefinition { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 3357820518; + } + } + IFC42.IfcPropertySetDefinition = IfcPropertySetDefinition; + class IfcPropertyTemplateDefinition extends IfcPropertyDefinition { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 1482703590; + } + } + IFC42.IfcPropertyTemplateDefinition = IfcPropertyTemplateDefinition; + class IfcQuantitySet extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 2090586900; + } + } + IFC42.IfcQuantitySet = IfcQuantitySet; + class IfcRectangleProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, XDim, YDim) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.XDim = XDim; + this.YDim = YDim; + this.type = 3615266464; + } + } + IFC42.IfcRectangleProfileDef = IfcRectangleProfileDef; + class IfcRegularTimeSeries extends IfcTimeSeries { + constructor(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit, TimeStep, Values) { + super(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit); + this.Name = Name; + this.Description = Description; + this.StartTime = StartTime; + this.EndTime = EndTime; + this.TimeSeriesDataType = TimeSeriesDataType; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.Unit = Unit; + this.TimeStep = TimeStep; + this.Values = Values; + this.type = 3413951693; + } + } + IFC42.IfcRegularTimeSeries = IfcRegularTimeSeries; + class IfcReinforcementBarProperties extends IfcPreDefinedProperties { + constructor(TotalCrossSectionArea, SteelGrade, BarSurface, EffectiveDepth, NominalBarDiameter, BarCount) { + super(); + this.TotalCrossSectionArea = TotalCrossSectionArea; + this.SteelGrade = SteelGrade; + this.BarSurface = BarSurface; + this.EffectiveDepth = EffectiveDepth; + this.NominalBarDiameter = NominalBarDiameter; + this.BarCount = BarCount; + this.type = 1580146022; + } + } + IFC42.IfcReinforcementBarProperties = IfcReinforcementBarProperties; + class IfcRelationship extends IfcRoot { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 478536968; + } + } + IFC42.IfcRelationship = IfcRelationship; + class IfcResourceApprovalRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatedResourceObjects, RelatingApproval) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatedResourceObjects = RelatedResourceObjects; + this.RelatingApproval = RelatingApproval; + this.type = 2943643501; + } + } + IFC42.IfcResourceApprovalRelationship = IfcResourceApprovalRelationship; + class IfcResourceConstraintRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingConstraint, RelatedResourceObjects) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingConstraint = RelatingConstraint; + this.RelatedResourceObjects = RelatedResourceObjects; + this.type = 1608871552; + } + } + IFC42.IfcResourceConstraintRelationship = IfcResourceConstraintRelationship; + class IfcResourceTime extends IfcSchedulingTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, ScheduleWork, ScheduleUsage, ScheduleStart, ScheduleFinish, ScheduleContour, LevelingDelay, IsOverAllocated, StatusTime, ActualWork, ActualUsage, ActualStart, ActualFinish, RemainingWork, RemainingUsage, Completion) { + super(Name, DataOrigin, UserDefinedDataOrigin); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.ScheduleWork = ScheduleWork; + this.ScheduleUsage = ScheduleUsage; + this.ScheduleStart = ScheduleStart; + this.ScheduleFinish = ScheduleFinish; + this.ScheduleContour = ScheduleContour; + this.LevelingDelay = LevelingDelay; + this.IsOverAllocated = IsOverAllocated; + this.StatusTime = StatusTime; + this.ActualWork = ActualWork; + this.ActualUsage = ActualUsage; + this.ActualStart = ActualStart; + this.ActualFinish = ActualFinish; + this.RemainingWork = RemainingWork; + this.RemainingUsage = RemainingUsage; + this.Completion = Completion; + this.type = 1042787934; + } + } + IFC42.IfcResourceTime = IfcResourceTime; + class IfcRoundedRectangleProfileDef extends IfcRectangleProfileDef { + constructor(ProfileType, ProfileName, Position, XDim, YDim, RoundingRadius) { + super(ProfileType, ProfileName, Position, XDim, YDim); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.XDim = XDim; + this.YDim = YDim; + this.RoundingRadius = RoundingRadius; + this.type = 2778083089; + } + } + IFC42.IfcRoundedRectangleProfileDef = IfcRoundedRectangleProfileDef; + class IfcSectionProperties extends IfcPreDefinedProperties { + constructor(SectionType, StartProfile, EndProfile) { + super(); + this.SectionType = SectionType; + this.StartProfile = StartProfile; + this.EndProfile = EndProfile; + this.type = 2042790032; + } + } + IFC42.IfcSectionProperties = IfcSectionProperties; + class IfcSectionReinforcementProperties extends IfcPreDefinedProperties { + constructor(LongitudinalStartPosition, LongitudinalEndPosition, TransversePosition, ReinforcementRole, SectionDefinition, CrossSectionReinforcementDefinitions) { + super(); + this.LongitudinalStartPosition = LongitudinalStartPosition; + this.LongitudinalEndPosition = LongitudinalEndPosition; + this.TransversePosition = TransversePosition; + this.ReinforcementRole = ReinforcementRole; + this.SectionDefinition = SectionDefinition; + this.CrossSectionReinforcementDefinitions = CrossSectionReinforcementDefinitions; + this.type = 4165799628; + } + } + IFC42.IfcSectionReinforcementProperties = IfcSectionReinforcementProperties; + class IfcSectionedSpine extends IfcGeometricRepresentationItem { + constructor(SpineCurve, CrossSections, CrossSectionPositions) { + super(); + this.SpineCurve = SpineCurve; + this.CrossSections = CrossSections; + this.CrossSectionPositions = CrossSectionPositions; + this.type = 1509187699; + } + } + IFC42.IfcSectionedSpine = IfcSectionedSpine; + class IfcShellBasedSurfaceModel extends IfcGeometricRepresentationItem { + constructor(SbsmBoundary) { + super(); + this.SbsmBoundary = SbsmBoundary; + this.type = 4124623270; + } + } + IFC42.IfcShellBasedSurfaceModel = IfcShellBasedSurfaceModel; + class IfcSimpleProperty extends IfcProperty { + constructor(Name, Description) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.type = 3692461612; + } + } + IFC42.IfcSimpleProperty = IfcSimpleProperty; + class IfcSlippageConnectionCondition extends IfcStructuralConnectionCondition { + constructor(Name, SlippageX, SlippageY, SlippageZ) { + super(Name); + this.Name = Name; + this.SlippageX = SlippageX; + this.SlippageY = SlippageY; + this.SlippageZ = SlippageZ; + this.type = 2609359061; + } + } + IFC42.IfcSlippageConnectionCondition = IfcSlippageConnectionCondition; + class IfcSolidModel extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 723233188; + } + } + IFC42.IfcSolidModel = IfcSolidModel; + class IfcStructuralLoadLinearForce extends IfcStructuralLoadStatic { + constructor(Name, LinearForceX, LinearForceY, LinearForceZ, LinearMomentX, LinearMomentY, LinearMomentZ) { + super(Name); + this.Name = Name; + this.LinearForceX = LinearForceX; + this.LinearForceY = LinearForceY; + this.LinearForceZ = LinearForceZ; + this.LinearMomentX = LinearMomentX; + this.LinearMomentY = LinearMomentY; + this.LinearMomentZ = LinearMomentZ; + this.type = 1595516126; + } + } + IFC42.IfcStructuralLoadLinearForce = IfcStructuralLoadLinearForce; + class IfcStructuralLoadPlanarForce extends IfcStructuralLoadStatic { + constructor(Name, PlanarForceX, PlanarForceY, PlanarForceZ) { + super(Name); + this.Name = Name; + this.PlanarForceX = PlanarForceX; + this.PlanarForceY = PlanarForceY; + this.PlanarForceZ = PlanarForceZ; + this.type = 2668620305; + } + } + IFC42.IfcStructuralLoadPlanarForce = IfcStructuralLoadPlanarForce; + class IfcStructuralLoadSingleDisplacement extends IfcStructuralLoadStatic { + constructor(Name, DisplacementX, DisplacementY, DisplacementZ, RotationalDisplacementRX, RotationalDisplacementRY, RotationalDisplacementRZ) { + super(Name); + this.Name = Name; + this.DisplacementX = DisplacementX; + this.DisplacementY = DisplacementY; + this.DisplacementZ = DisplacementZ; + this.RotationalDisplacementRX = RotationalDisplacementRX; + this.RotationalDisplacementRY = RotationalDisplacementRY; + this.RotationalDisplacementRZ = RotationalDisplacementRZ; + this.type = 2473145415; + } + } + IFC42.IfcStructuralLoadSingleDisplacement = IfcStructuralLoadSingleDisplacement; + class IfcStructuralLoadSingleDisplacementDistortion extends IfcStructuralLoadSingleDisplacement { + constructor(Name, DisplacementX, DisplacementY, DisplacementZ, RotationalDisplacementRX, RotationalDisplacementRY, RotationalDisplacementRZ, Distortion) { + super(Name, DisplacementX, DisplacementY, DisplacementZ, RotationalDisplacementRX, RotationalDisplacementRY, RotationalDisplacementRZ); + this.Name = Name; + this.DisplacementX = DisplacementX; + this.DisplacementY = DisplacementY; + this.DisplacementZ = DisplacementZ; + this.RotationalDisplacementRX = RotationalDisplacementRX; + this.RotationalDisplacementRY = RotationalDisplacementRY; + this.RotationalDisplacementRZ = RotationalDisplacementRZ; + this.Distortion = Distortion; + this.type = 1973038258; + } + } + IFC42.IfcStructuralLoadSingleDisplacementDistortion = IfcStructuralLoadSingleDisplacementDistortion; + class IfcStructuralLoadSingleForce extends IfcStructuralLoadStatic { + constructor(Name, ForceX, ForceY, ForceZ, MomentX, MomentY, MomentZ) { + super(Name); + this.Name = Name; + this.ForceX = ForceX; + this.ForceY = ForceY; + this.ForceZ = ForceZ; + this.MomentX = MomentX; + this.MomentY = MomentY; + this.MomentZ = MomentZ; + this.type = 1597423693; + } + } + IFC42.IfcStructuralLoadSingleForce = IfcStructuralLoadSingleForce; + class IfcStructuralLoadSingleForceWarping extends IfcStructuralLoadSingleForce { + constructor(Name, ForceX, ForceY, ForceZ, MomentX, MomentY, MomentZ, WarpingMoment) { + super(Name, ForceX, ForceY, ForceZ, MomentX, MomentY, MomentZ); + this.Name = Name; + this.ForceX = ForceX; + this.ForceY = ForceY; + this.ForceZ = ForceZ; + this.MomentX = MomentX; + this.MomentY = MomentY; + this.MomentZ = MomentZ; + this.WarpingMoment = WarpingMoment; + this.type = 1190533807; + } + } + IFC42.IfcStructuralLoadSingleForceWarping = IfcStructuralLoadSingleForceWarping; + class IfcSubedge extends IfcEdge { + constructor(EdgeStart, EdgeEnd, ParentEdge) { + super(EdgeStart, EdgeEnd); + this.EdgeStart = EdgeStart; + this.EdgeEnd = EdgeEnd; + this.ParentEdge = ParentEdge; + this.type = 2233826070; + } + } + IFC42.IfcSubedge = IfcSubedge; + class IfcSurface extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 2513912981; + } + } + IFC42.IfcSurface = IfcSurface; + class IfcSurfaceStyleRendering extends IfcSurfaceStyleShading { + constructor(SurfaceColour, Transparency, DiffuseColour, TransmissionColour, DiffuseTransmissionColour, ReflectionColour, SpecularColour, SpecularHighlight, ReflectanceMethod) { + super(SurfaceColour, Transparency); + this.SurfaceColour = SurfaceColour; + this.Transparency = Transparency; + this.DiffuseColour = DiffuseColour; + this.TransmissionColour = TransmissionColour; + this.DiffuseTransmissionColour = DiffuseTransmissionColour; + this.ReflectionColour = ReflectionColour; + this.SpecularColour = SpecularColour; + this.SpecularHighlight = SpecularHighlight; + this.ReflectanceMethod = ReflectanceMethod; + this.type = 1878645084; + } + } + IFC42.IfcSurfaceStyleRendering = IfcSurfaceStyleRendering; + class IfcSweptAreaSolid extends IfcSolidModel { + constructor(SweptArea, Position) { + super(); + this.SweptArea = SweptArea; + this.Position = Position; + this.type = 2247615214; + } + } + IFC42.IfcSweptAreaSolid = IfcSweptAreaSolid; + class IfcSweptDiskSolid extends IfcSolidModel { + constructor(Directrix, Radius, InnerRadius, StartParam, EndParam) { + super(); + this.Directrix = Directrix; + this.Radius = Radius; + this.InnerRadius = InnerRadius; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.type = 1260650574; + } + } + IFC42.IfcSweptDiskSolid = IfcSweptDiskSolid; + class IfcSweptDiskSolidPolygonal extends IfcSweptDiskSolid { + constructor(Directrix, Radius, InnerRadius, StartParam, EndParam, FilletRadius) { + super(Directrix, Radius, InnerRadius, StartParam, EndParam); + this.Directrix = Directrix; + this.Radius = Radius; + this.InnerRadius = InnerRadius; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.FilletRadius = FilletRadius; + this.type = 1096409881; + } + } + IFC42.IfcSweptDiskSolidPolygonal = IfcSweptDiskSolidPolygonal; + class IfcSweptSurface extends IfcSurface { + constructor(SweptCurve, Position) { + super(); + this.SweptCurve = SweptCurve; + this.Position = Position; + this.type = 230924584; + } + } + IFC42.IfcSweptSurface = IfcSweptSurface; + class IfcTShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, FlangeWidth, WebThickness, FlangeThickness, FilletRadius, FlangeEdgeRadius, WebEdgeRadius, WebSlope, FlangeSlope) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.FlangeWidth = FlangeWidth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.FlangeEdgeRadius = FlangeEdgeRadius; + this.WebEdgeRadius = WebEdgeRadius; + this.WebSlope = WebSlope; + this.FlangeSlope = FlangeSlope; + this.type = 3071757647; + } + } + IFC42.IfcTShapeProfileDef = IfcTShapeProfileDef; + class IfcTessellatedItem extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 901063453; + } + } + IFC42.IfcTessellatedItem = IfcTessellatedItem; + class IfcTextLiteral extends IfcGeometricRepresentationItem { + constructor(Literal, Placement, Path) { + super(); + this.Literal = Literal; + this.Placement = Placement; + this.Path = Path; + this.type = 4282788508; + } + } + IFC42.IfcTextLiteral = IfcTextLiteral; + class IfcTextLiteralWithExtent extends IfcTextLiteral { + constructor(Literal, Placement, Path, Extent, BoxAlignment) { + super(Literal, Placement, Path); + this.Literal = Literal; + this.Placement = Placement; + this.Path = Path; + this.Extent = Extent; + this.BoxAlignment = BoxAlignment; + this.type = 3124975700; + } + } + IFC42.IfcTextLiteralWithExtent = IfcTextLiteralWithExtent; + class IfcTextStyleFontModel extends IfcPreDefinedTextFont { + constructor(Name, FontFamily, FontStyle, FontVariant, FontWeight, FontSize) { + super(Name); + this.Name = Name; + this.FontFamily = FontFamily; + this.FontStyle = FontStyle; + this.FontVariant = FontVariant; + this.FontWeight = FontWeight; + this.FontSize = FontSize; + this.type = 1983826977; + } + } + IFC42.IfcTextStyleFontModel = IfcTextStyleFontModel; + class IfcTrapeziumProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, BottomXDim, TopXDim, YDim, TopXOffset) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.BottomXDim = BottomXDim; + this.TopXDim = TopXDim; + this.YDim = YDim; + this.TopXOffset = TopXOffset; + this.type = 2715220739; + } + } + IFC42.IfcTrapeziumProfileDef = IfcTrapeziumProfileDef; + class IfcTypeObject extends IfcObjectDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.type = 1628702193; + } + } + IFC42.IfcTypeObject = IfcTypeObject; + class IfcTypeProcess extends IfcTypeObject { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ProcessType = ProcessType; + this.type = 3736923433; + } + } + IFC42.IfcTypeProcess = IfcTypeProcess; + class IfcTypeProduct extends IfcTypeObject { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.type = 2347495698; + } + } + IFC42.IfcTypeProduct = IfcTypeProduct; + class IfcTypeResource extends IfcTypeObject { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.type = 3698973494; + } + } + IFC42.IfcTypeResource = IfcTypeResource; + class IfcUShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, FlangeWidth, WebThickness, FlangeThickness, FilletRadius, EdgeRadius, FlangeSlope) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.FlangeWidth = FlangeWidth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.EdgeRadius = EdgeRadius; + this.FlangeSlope = FlangeSlope; + this.type = 427810014; + } + } + IFC42.IfcUShapeProfileDef = IfcUShapeProfileDef; + class IfcVector extends IfcGeometricRepresentationItem { + constructor(Orientation, Magnitude) { + super(); + this.Orientation = Orientation; + this.Magnitude = Magnitude; + this.type = 1417489154; + } + } + IFC42.IfcVector = IfcVector; + class IfcVertexLoop extends IfcLoop { + constructor(LoopVertex) { + super(); + this.LoopVertex = LoopVertex; + this.type = 2759199220; + } + } + IFC42.IfcVertexLoop = IfcVertexLoop; + class IfcWindowStyle extends IfcTypeProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ConstructionType, OperationType, ParameterTakesPrecedence, Sizeable) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ConstructionType = ConstructionType; + this.OperationType = OperationType; + this.ParameterTakesPrecedence = ParameterTakesPrecedence; + this.Sizeable = Sizeable; + this.type = 1299126871; + } + } + IFC42.IfcWindowStyle = IfcWindowStyle; + class IfcZShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, FlangeWidth, WebThickness, FlangeThickness, FilletRadius, EdgeRadius) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.FlangeWidth = FlangeWidth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.EdgeRadius = EdgeRadius; + this.type = 2543172580; + } + } + IFC42.IfcZShapeProfileDef = IfcZShapeProfileDef; + class IfcAdvancedFace extends IfcFaceSurface { + constructor(Bounds, FaceSurface, SameSense) { + super(Bounds, FaceSurface, SameSense); + this.Bounds = Bounds; + this.FaceSurface = FaceSurface; + this.SameSense = SameSense; + this.type = 3406155212; + } + } + IFC42.IfcAdvancedFace = IfcAdvancedFace; + class IfcAnnotationFillArea extends IfcGeometricRepresentationItem { + constructor(OuterBoundary, InnerBoundaries) { + super(); + this.OuterBoundary = OuterBoundary; + this.InnerBoundaries = InnerBoundaries; + this.type = 669184980; + } + } + IFC42.IfcAnnotationFillArea = IfcAnnotationFillArea; + class IfcAsymmetricIShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, BottomFlangeWidth, OverallDepth, WebThickness, BottomFlangeThickness, BottomFlangeFilletRadius, TopFlangeWidth, TopFlangeThickness, TopFlangeFilletRadius, BottomFlangeEdgeRadius, BottomFlangeSlope, TopFlangeEdgeRadius, TopFlangeSlope) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.BottomFlangeWidth = BottomFlangeWidth; + this.OverallDepth = OverallDepth; + this.WebThickness = WebThickness; + this.BottomFlangeThickness = BottomFlangeThickness; + this.BottomFlangeFilletRadius = BottomFlangeFilletRadius; + this.TopFlangeWidth = TopFlangeWidth; + this.TopFlangeThickness = TopFlangeThickness; + this.TopFlangeFilletRadius = TopFlangeFilletRadius; + this.BottomFlangeEdgeRadius = BottomFlangeEdgeRadius; + this.BottomFlangeSlope = BottomFlangeSlope; + this.TopFlangeEdgeRadius = TopFlangeEdgeRadius; + this.TopFlangeSlope = TopFlangeSlope; + this.type = 3207858831; + } + } + IFC42.IfcAsymmetricIShapeProfileDef = IfcAsymmetricIShapeProfileDef; + class IfcAxis1Placement extends IfcPlacement { + constructor(Location, Axis2) { + super(Location); + this.Location = Location; + this.Axis = Axis2; + this.type = 4261334040; + } + } + IFC42.IfcAxis1Placement = IfcAxis1Placement; + class IfcAxis2Placement2D extends IfcPlacement { + constructor(Location, RefDirection) { + super(Location); + this.Location = Location; + this.RefDirection = RefDirection; + this.type = 3125803723; + } + } + IFC42.IfcAxis2Placement2D = IfcAxis2Placement2D; + class IfcAxis2Placement3D extends IfcPlacement { + constructor(Location, Axis2, RefDirection) { + super(Location); + this.Location = Location; + this.Axis = Axis2; + this.RefDirection = RefDirection; + this.type = 2740243338; + } + } + IFC42.IfcAxis2Placement3D = IfcAxis2Placement3D; + class IfcBooleanResult extends IfcGeometricRepresentationItem { + constructor(Operator, FirstOperand, SecondOperand) { + super(); + this.Operator = Operator; + this.FirstOperand = FirstOperand; + this.SecondOperand = SecondOperand; + this.type = 2736907675; + } + } + IFC42.IfcBooleanResult = IfcBooleanResult; + class IfcBoundedSurface extends IfcSurface { + constructor() { + super(); + this.type = 4182860854; + } + } + IFC42.IfcBoundedSurface = IfcBoundedSurface; + class IfcBoundingBox extends IfcGeometricRepresentationItem { + constructor(Corner, XDim, YDim, ZDim) { + super(); + this.Corner = Corner; + this.XDim = XDim; + this.YDim = YDim; + this.ZDim = ZDim; + this.type = 2581212453; + } + } + IFC42.IfcBoundingBox = IfcBoundingBox; + class IfcBoxedHalfSpace extends IfcHalfSpaceSolid { + constructor(BaseSurface, AgreementFlag, Enclosure) { + super(BaseSurface, AgreementFlag); + this.BaseSurface = BaseSurface; + this.AgreementFlag = AgreementFlag; + this.Enclosure = Enclosure; + this.type = 2713105998; + } + } + IFC42.IfcBoxedHalfSpace = IfcBoxedHalfSpace; + class IfcCShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, Width, WallThickness, Girth, InternalFilletRadius) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.Width = Width; + this.WallThickness = WallThickness; + this.Girth = Girth; + this.InternalFilletRadius = InternalFilletRadius; + this.type = 2898889636; + } + } + IFC42.IfcCShapeProfileDef = IfcCShapeProfileDef; + class IfcCartesianPoint extends IfcPoint { + constructor(Coordinates) { + super(); + this.Coordinates = Coordinates; + this.type = 1123145078; + } + } + IFC42.IfcCartesianPoint = IfcCartesianPoint; + class IfcCartesianPointList extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 574549367; + } + } + IFC42.IfcCartesianPointList = IfcCartesianPointList; + class IfcCartesianPointList2D extends IfcCartesianPointList { + constructor(CoordList) { + super(); + this.CoordList = CoordList; + this.type = 1675464909; + } + } + IFC42.IfcCartesianPointList2D = IfcCartesianPointList2D; + class IfcCartesianPointList3D extends IfcCartesianPointList { + constructor(CoordList) { + super(); + this.CoordList = CoordList; + this.type = 2059837836; + } + } + IFC42.IfcCartesianPointList3D = IfcCartesianPointList3D; + class IfcCartesianTransformationOperator extends IfcGeometricRepresentationItem { + constructor(Axis1, Axis2, LocalOrigin, Scale) { + super(); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.type = 59481748; + } + } + IFC42.IfcCartesianTransformationOperator = IfcCartesianTransformationOperator; + class IfcCartesianTransformationOperator2D extends IfcCartesianTransformationOperator { + constructor(Axis1, Axis2, LocalOrigin, Scale) { + super(Axis1, Axis2, LocalOrigin, Scale); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.type = 3749851601; + } + } + IFC42.IfcCartesianTransformationOperator2D = IfcCartesianTransformationOperator2D; + class IfcCartesianTransformationOperator2DnonUniform extends IfcCartesianTransformationOperator2D { + constructor(Axis1, Axis2, LocalOrigin, Scale, Scale2) { + super(Axis1, Axis2, LocalOrigin, Scale); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.Scale2 = Scale2; + this.type = 3486308946; + } + } + IFC42.IfcCartesianTransformationOperator2DnonUniform = IfcCartesianTransformationOperator2DnonUniform; + class IfcCartesianTransformationOperator3D extends IfcCartesianTransformationOperator { + constructor(Axis1, Axis2, LocalOrigin, Scale, Axis3) { + super(Axis1, Axis2, LocalOrigin, Scale); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.Axis3 = Axis3; + this.type = 3331915920; + } + } + IFC42.IfcCartesianTransformationOperator3D = IfcCartesianTransformationOperator3D; + class IfcCartesianTransformationOperator3DnonUniform extends IfcCartesianTransformationOperator3D { + constructor(Axis1, Axis2, LocalOrigin, Scale, Axis3, Scale2, Scale3) { + super(Axis1, Axis2, LocalOrigin, Scale, Axis3); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.Axis3 = Axis3; + this.Scale2 = Scale2; + this.Scale3 = Scale3; + this.type = 1416205885; + } + } + IFC42.IfcCartesianTransformationOperator3DnonUniform = IfcCartesianTransformationOperator3DnonUniform; + class IfcCircleProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Radius) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Radius = Radius; + this.type = 1383045692; + } + } + IFC42.IfcCircleProfileDef = IfcCircleProfileDef; + class IfcClosedShell extends IfcConnectedFaceSet { + constructor(CfsFaces) { + super(CfsFaces); + this.CfsFaces = CfsFaces; + this.type = 2205249479; + } + } + IFC42.IfcClosedShell = IfcClosedShell; + class IfcColourRgb extends IfcColourSpecification { + constructor(Name, Red, Green, Blue) { + super(Name); + this.Name = Name; + this.Red = Red; + this.Green = Green; + this.Blue = Blue; + this.type = 776857604; + } + } + IFC42.IfcColourRgb = IfcColourRgb; + class IfcComplexProperty extends IfcProperty { + constructor(Name, Description, UsageName, HasProperties) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.UsageName = UsageName; + this.HasProperties = HasProperties; + this.type = 2542286263; + } + } + IFC42.IfcComplexProperty = IfcComplexProperty; + class IfcCompositeCurveSegment extends IfcGeometricRepresentationItem { + constructor(Transition, SameSense, ParentCurve) { + super(); + this.Transition = Transition; + this.SameSense = SameSense; + this.ParentCurve = ParentCurve; + this.type = 2485617015; + } + } + IFC42.IfcCompositeCurveSegment = IfcCompositeCurveSegment; + class IfcConstructionResourceType extends IfcTypeResource { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.type = 2574617495; + } + } + IFC42.IfcConstructionResourceType = IfcConstructionResourceType; + class IfcContext extends IfcObjectDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, Phase, RepresentationContexts, UnitsInContext) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.Phase = Phase; + this.RepresentationContexts = RepresentationContexts; + this.UnitsInContext = UnitsInContext; + this.type = 3419103109; + } + } + IFC42.IfcContext = IfcContext; + class IfcCrewResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 1815067380; + } + } + IFC42.IfcCrewResourceType = IfcCrewResourceType; + class IfcCsgPrimitive3D extends IfcGeometricRepresentationItem { + constructor(Position) { + super(); + this.Position = Position; + this.type = 2506170314; + } + } + IFC42.IfcCsgPrimitive3D = IfcCsgPrimitive3D; + class IfcCsgSolid extends IfcSolidModel { + constructor(TreeRootExpression) { + super(); + this.TreeRootExpression = TreeRootExpression; + this.type = 2147822146; + } + } + IFC42.IfcCsgSolid = IfcCsgSolid; + class IfcCurve extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 2601014836; + } + } + IFC42.IfcCurve = IfcCurve; + class IfcCurveBoundedPlane extends IfcBoundedSurface { + constructor(BasisSurface, OuterBoundary, InnerBoundaries) { + super(); + this.BasisSurface = BasisSurface; + this.OuterBoundary = OuterBoundary; + this.InnerBoundaries = InnerBoundaries; + this.type = 2827736869; + } + } + IFC42.IfcCurveBoundedPlane = IfcCurveBoundedPlane; + class IfcCurveBoundedSurface extends IfcBoundedSurface { + constructor(BasisSurface, Boundaries, ImplicitOuter) { + super(); + this.BasisSurface = BasisSurface; + this.Boundaries = Boundaries; + this.ImplicitOuter = ImplicitOuter; + this.type = 2629017746; + } + } + IFC42.IfcCurveBoundedSurface = IfcCurveBoundedSurface; + class IfcDirection extends IfcGeometricRepresentationItem { + constructor(DirectionRatios) { + super(); + this.DirectionRatios = DirectionRatios; + this.type = 32440307; + } + } + IFC42.IfcDirection = IfcDirection; + class IfcDoorStyle extends IfcTypeProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, OperationType, ConstructionType, ParameterTakesPrecedence, Sizeable) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.OperationType = OperationType; + this.ConstructionType = ConstructionType; + this.ParameterTakesPrecedence = ParameterTakesPrecedence; + this.Sizeable = Sizeable; + this.type = 526551008; + } + } + IFC42.IfcDoorStyle = IfcDoorStyle; + class IfcEdgeLoop extends IfcLoop { + constructor(EdgeList) { + super(); + this.EdgeList = EdgeList; + this.type = 1472233963; + } + } + IFC42.IfcEdgeLoop = IfcEdgeLoop; + class IfcElementQuantity extends IfcQuantitySet { + constructor(GlobalId, OwnerHistory, Name, Description, MethodOfMeasurement, Quantities) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.MethodOfMeasurement = MethodOfMeasurement; + this.Quantities = Quantities; + this.type = 1883228015; + } + } + IFC42.IfcElementQuantity = IfcElementQuantity; + class IfcElementType extends IfcTypeProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 339256511; + } + } + IFC42.IfcElementType = IfcElementType; + class IfcElementarySurface extends IfcSurface { + constructor(Position) { + super(); + this.Position = Position; + this.type = 2777663545; + } + } + IFC42.IfcElementarySurface = IfcElementarySurface; + class IfcEllipseProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, SemiAxis1, SemiAxis2) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.SemiAxis1 = SemiAxis1; + this.SemiAxis2 = SemiAxis2; + this.type = 2835456948; + } + } + IFC42.IfcEllipseProfileDef = IfcEllipseProfileDef; + class IfcEventType extends IfcTypeProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType, PredefinedType, EventTriggerType, UserDefinedEventTriggerType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ProcessType = ProcessType; + this.PredefinedType = PredefinedType; + this.EventTriggerType = EventTriggerType; + this.UserDefinedEventTriggerType = UserDefinedEventTriggerType; + this.type = 4024345920; + } + } + IFC42.IfcEventType = IfcEventType; + class IfcExtrudedAreaSolid extends IfcSweptAreaSolid { + constructor(SweptArea, Position, ExtrudedDirection, Depth) { + super(SweptArea, Position); + this.SweptArea = SweptArea; + this.Position = Position; + this.ExtrudedDirection = ExtrudedDirection; + this.Depth = Depth; + this.type = 477187591; + } + } + IFC42.IfcExtrudedAreaSolid = IfcExtrudedAreaSolid; + class IfcExtrudedAreaSolidTapered extends IfcExtrudedAreaSolid { + constructor(SweptArea, Position, ExtrudedDirection, Depth, EndSweptArea) { + super(SweptArea, Position, ExtrudedDirection, Depth); + this.SweptArea = SweptArea; + this.Position = Position; + this.ExtrudedDirection = ExtrudedDirection; + this.Depth = Depth; + this.EndSweptArea = EndSweptArea; + this.type = 2804161546; + } + } + IFC42.IfcExtrudedAreaSolidTapered = IfcExtrudedAreaSolidTapered; + class IfcFaceBasedSurfaceModel extends IfcGeometricRepresentationItem { + constructor(FbsmFaces) { + super(); + this.FbsmFaces = FbsmFaces; + this.type = 2047409740; + } + } + IFC42.IfcFaceBasedSurfaceModel = IfcFaceBasedSurfaceModel; + class IfcFillAreaStyleHatching extends IfcGeometricRepresentationItem { + constructor(HatchLineAppearance, StartOfNextHatchLine, PointOfReferenceHatchLine, PatternStart, HatchLineAngle) { + super(); + this.HatchLineAppearance = HatchLineAppearance; + this.StartOfNextHatchLine = StartOfNextHatchLine; + this.PointOfReferenceHatchLine = PointOfReferenceHatchLine; + this.PatternStart = PatternStart; + this.HatchLineAngle = HatchLineAngle; + this.type = 374418227; + } + } + IFC42.IfcFillAreaStyleHatching = IfcFillAreaStyleHatching; + class IfcFillAreaStyleTiles extends IfcGeometricRepresentationItem { + constructor(TilingPattern, Tiles, TilingScale) { + super(); + this.TilingPattern = TilingPattern; + this.Tiles = Tiles; + this.TilingScale = TilingScale; + this.type = 315944413; + } + } + IFC42.IfcFillAreaStyleTiles = IfcFillAreaStyleTiles; + class IfcFixedReferenceSweptAreaSolid extends IfcSweptAreaSolid { + constructor(SweptArea, Position, Directrix, StartParam, EndParam, FixedReference) { + super(SweptArea, Position); + this.SweptArea = SweptArea; + this.Position = Position; + this.Directrix = Directrix; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.FixedReference = FixedReference; + this.type = 2652556860; + } + } + IFC42.IfcFixedReferenceSweptAreaSolid = IfcFixedReferenceSweptAreaSolid; + class IfcFurnishingElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 4238390223; + } + } + IFC42.IfcFurnishingElementType = IfcFurnishingElementType; + class IfcFurnitureType extends IfcFurnishingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, AssemblyPlace, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.AssemblyPlace = AssemblyPlace; + this.PredefinedType = PredefinedType; + this.type = 1268542332; + } + } + IFC42.IfcFurnitureType = IfcFurnitureType; + class IfcGeographicElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4095422895; + } + } + IFC42.IfcGeographicElementType = IfcGeographicElementType; + class IfcGeometricCurveSet extends IfcGeometricSet { + constructor(Elements) { + super(Elements); + this.Elements = Elements; + this.type = 987898635; + } + } + IFC42.IfcGeometricCurveSet = IfcGeometricCurveSet; + class IfcIShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, OverallWidth, OverallDepth, WebThickness, FlangeThickness, FilletRadius, FlangeEdgeRadius, FlangeSlope) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.OverallWidth = OverallWidth; + this.OverallDepth = OverallDepth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.FlangeEdgeRadius = FlangeEdgeRadius; + this.FlangeSlope = FlangeSlope; + this.type = 1484403080; + } + } + IFC42.IfcIShapeProfileDef = IfcIShapeProfileDef; + class IfcIndexedPolygonalFace extends IfcTessellatedItem { + constructor(CoordIndex) { + super(); + this.CoordIndex = CoordIndex; + this.type = 178912537; + } + } + IFC42.IfcIndexedPolygonalFace = IfcIndexedPolygonalFace; + class IfcIndexedPolygonalFaceWithVoids extends IfcIndexedPolygonalFace { + constructor(CoordIndex, InnerCoordIndices) { + super(CoordIndex); + this.CoordIndex = CoordIndex; + this.InnerCoordIndices = InnerCoordIndices; + this.type = 2294589976; + } + } + IFC42.IfcIndexedPolygonalFaceWithVoids = IfcIndexedPolygonalFaceWithVoids; + class IfcLShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, Width, Thickness, FilletRadius, EdgeRadius, LegSlope) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.Width = Width; + this.Thickness = Thickness; + this.FilletRadius = FilletRadius; + this.EdgeRadius = EdgeRadius; + this.LegSlope = LegSlope; + this.type = 572779678; + } + } + IFC42.IfcLShapeProfileDef = IfcLShapeProfileDef; + class IfcLaborResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 428585644; + } + } + IFC42.IfcLaborResourceType = IfcLaborResourceType; + class IfcLine extends IfcCurve { + constructor(Pnt, Dir) { + super(); + this.Pnt = Pnt; + this.Dir = Dir; + this.type = 1281925730; + } + } + IFC42.IfcLine = IfcLine; + class IfcManifoldSolidBrep extends IfcSolidModel { + constructor(Outer) { + super(); + this.Outer = Outer; + this.type = 1425443689; + } + } + IFC42.IfcManifoldSolidBrep = IfcManifoldSolidBrep; + class IfcObject extends IfcObjectDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 3888040117; + } + } + IFC42.IfcObject = IfcObject; + class IfcOffsetCurve2D extends IfcCurve { + constructor(BasisCurve, Distance, SelfIntersect) { + super(); + this.BasisCurve = BasisCurve; + this.Distance = Distance; + this.SelfIntersect = SelfIntersect; + this.type = 3388369263; + } + } + IFC42.IfcOffsetCurve2D = IfcOffsetCurve2D; + class IfcOffsetCurve3D extends IfcCurve { + constructor(BasisCurve, Distance, SelfIntersect, RefDirection) { + super(); + this.BasisCurve = BasisCurve; + this.Distance = Distance; + this.SelfIntersect = SelfIntersect; + this.RefDirection = RefDirection; + this.type = 3505215534; + } + } + IFC42.IfcOffsetCurve3D = IfcOffsetCurve3D; + class IfcPcurve extends IfcCurve { + constructor(BasisSurface, ReferenceCurve) { + super(); + this.BasisSurface = BasisSurface; + this.ReferenceCurve = ReferenceCurve; + this.type = 1682466193; + } + } + IFC42.IfcPcurve = IfcPcurve; + class IfcPlanarBox extends IfcPlanarExtent { + constructor(SizeInX, SizeInY, Placement) { + super(SizeInX, SizeInY); + this.SizeInX = SizeInX; + this.SizeInY = SizeInY; + this.Placement = Placement; + this.type = 603570806; + } + } + IFC42.IfcPlanarBox = IfcPlanarBox; + class IfcPlane extends IfcElementarySurface { + constructor(Position) { + super(Position); + this.Position = Position; + this.type = 220341763; + } + } + IFC42.IfcPlane = IfcPlane; + class IfcPreDefinedColour extends IfcPreDefinedItem { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 759155922; + } + } + IFC42.IfcPreDefinedColour = IfcPreDefinedColour; + class IfcPreDefinedCurveFont extends IfcPreDefinedItem { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 2559016684; + } + } + IFC42.IfcPreDefinedCurveFont = IfcPreDefinedCurveFont; + class IfcPreDefinedPropertySet extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 3967405729; + } + } + IFC42.IfcPreDefinedPropertySet = IfcPreDefinedPropertySet; + class IfcProcedureType extends IfcTypeProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ProcessType = ProcessType; + this.PredefinedType = PredefinedType; + this.type = 569719735; + } + } + IFC42.IfcProcedureType = IfcProcedureType; + class IfcProcess extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.type = 2945172077; + } + } + IFC42.IfcProcess = IfcProcess; + class IfcProduct extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 4208778838; + } + } + IFC42.IfcProduct = IfcProduct; + class IfcProject extends IfcContext { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, Phase, RepresentationContexts, UnitsInContext) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, Phase, RepresentationContexts, UnitsInContext); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.Phase = Phase; + this.RepresentationContexts = RepresentationContexts; + this.UnitsInContext = UnitsInContext; + this.type = 103090709; + } + } + IFC42.IfcProject = IfcProject; + class IfcProjectLibrary extends IfcContext { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, Phase, RepresentationContexts, UnitsInContext) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, Phase, RepresentationContexts, UnitsInContext); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.Phase = Phase; + this.RepresentationContexts = RepresentationContexts; + this.UnitsInContext = UnitsInContext; + this.type = 653396225; + } + } + IFC42.IfcProjectLibrary = IfcProjectLibrary; + class IfcPropertyBoundedValue extends IfcSimpleProperty { + constructor(Name, Description, UpperBoundValue, LowerBoundValue, Unit, SetPointValue) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.UpperBoundValue = UpperBoundValue; + this.LowerBoundValue = LowerBoundValue; + this.Unit = Unit; + this.SetPointValue = SetPointValue; + this.type = 871118103; + } + } + IFC42.IfcPropertyBoundedValue = IfcPropertyBoundedValue; + class IfcPropertyEnumeratedValue extends IfcSimpleProperty { + constructor(Name, Description, EnumerationValues, EnumerationReference) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.EnumerationValues = EnumerationValues; + this.EnumerationReference = EnumerationReference; + this.type = 4166981789; + } + } + IFC42.IfcPropertyEnumeratedValue = IfcPropertyEnumeratedValue; + class IfcPropertyListValue extends IfcSimpleProperty { + constructor(Name, Description, ListValues, Unit) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.ListValues = ListValues; + this.Unit = Unit; + this.type = 2752243245; + } + } + IFC42.IfcPropertyListValue = IfcPropertyListValue; + class IfcPropertyReferenceValue extends IfcSimpleProperty { + constructor(Name, Description, UsageName, PropertyReference) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.UsageName = UsageName; + this.PropertyReference = PropertyReference; + this.type = 941946838; + } + } + IFC42.IfcPropertyReferenceValue = IfcPropertyReferenceValue; + class IfcPropertySet extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, HasProperties) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.HasProperties = HasProperties; + this.type = 1451395588; + } + } + IFC42.IfcPropertySet = IfcPropertySet; + class IfcPropertySetTemplate extends IfcPropertyTemplateDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, TemplateType, ApplicableEntity, HasPropertyTemplates) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.TemplateType = TemplateType; + this.ApplicableEntity = ApplicableEntity; + this.HasPropertyTemplates = HasPropertyTemplates; + this.type = 492091185; + } + } + IFC42.IfcPropertySetTemplate = IfcPropertySetTemplate; + class IfcPropertySingleValue extends IfcSimpleProperty { + constructor(Name, Description, NominalValue, Unit) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.NominalValue = NominalValue; + this.Unit = Unit; + this.type = 3650150729; + } + } + IFC42.IfcPropertySingleValue = IfcPropertySingleValue; + class IfcPropertyTableValue extends IfcSimpleProperty { + constructor(Name, Description, DefiningValues, DefinedValues, Expression, DefiningUnit, DefinedUnit, CurveInterpolation) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.DefiningValues = DefiningValues; + this.DefinedValues = DefinedValues; + this.Expression = Expression; + this.DefiningUnit = DefiningUnit; + this.DefinedUnit = DefinedUnit; + this.CurveInterpolation = CurveInterpolation; + this.type = 110355661; + } + } + IFC42.IfcPropertyTableValue = IfcPropertyTableValue; + class IfcPropertyTemplate extends IfcPropertyTemplateDefinition { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 3521284610; + } + } + IFC42.IfcPropertyTemplate = IfcPropertyTemplate; + class IfcProxy extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, ProxyType, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.ProxyType = ProxyType; + this.Tag = Tag; + this.type = 3219374653; + } + } + IFC42.IfcProxy = IfcProxy; + class IfcRectangleHollowProfileDef extends IfcRectangleProfileDef { + constructor(ProfileType, ProfileName, Position, XDim, YDim, WallThickness, InnerFilletRadius, OuterFilletRadius) { + super(ProfileType, ProfileName, Position, XDim, YDim); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.XDim = XDim; + this.YDim = YDim; + this.WallThickness = WallThickness; + this.InnerFilletRadius = InnerFilletRadius; + this.OuterFilletRadius = OuterFilletRadius; + this.type = 2770003689; + } + } + IFC42.IfcRectangleHollowProfileDef = IfcRectangleHollowProfileDef; + class IfcRectangularPyramid extends IfcCsgPrimitive3D { + constructor(Position, XLength, YLength, Height) { + super(Position); + this.Position = Position; + this.XLength = XLength; + this.YLength = YLength; + this.Height = Height; + this.type = 2798486643; + } + } + IFC42.IfcRectangularPyramid = IfcRectangularPyramid; + class IfcRectangularTrimmedSurface extends IfcBoundedSurface { + constructor(BasisSurface, U1, V1, U2, V2, Usense, Vsense) { + super(); + this.BasisSurface = BasisSurface; + this.U1 = U1; + this.V1 = V1; + this.U2 = U2; + this.V2 = V2; + this.Usense = Usense; + this.Vsense = Vsense; + this.type = 3454111270; + } + } + IFC42.IfcRectangularTrimmedSurface = IfcRectangularTrimmedSurface; + class IfcReinforcementDefinitionProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, DefinitionType, ReinforcementSectionDefinitions) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.DefinitionType = DefinitionType; + this.ReinforcementSectionDefinitions = ReinforcementSectionDefinitions; + this.type = 3765753017; + } + } + IFC42.IfcReinforcementDefinitionProperties = IfcReinforcementDefinitionProperties; + class IfcRelAssigns extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.type = 3939117080; + } + } + IFC42.IfcRelAssigns = IfcRelAssigns; + class IfcRelAssignsToActor extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingActor, ActingRole) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingActor = RelatingActor; + this.ActingRole = ActingRole; + this.type = 1683148259; + } + } + IFC42.IfcRelAssignsToActor = IfcRelAssignsToActor; + class IfcRelAssignsToControl extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingControl) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingControl = RelatingControl; + this.type = 2495723537; + } + } + IFC42.IfcRelAssignsToControl = IfcRelAssignsToControl; + class IfcRelAssignsToGroup extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingGroup) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingGroup = RelatingGroup; + this.type = 1307041759; + } + } + IFC42.IfcRelAssignsToGroup = IfcRelAssignsToGroup; + class IfcRelAssignsToGroupByFactor extends IfcRelAssignsToGroup { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingGroup, Factor) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingGroup); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingGroup = RelatingGroup; + this.Factor = Factor; + this.type = 1027710054; + } + } + IFC42.IfcRelAssignsToGroupByFactor = IfcRelAssignsToGroupByFactor; + class IfcRelAssignsToProcess extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingProcess, QuantityInProcess) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingProcess = RelatingProcess; + this.QuantityInProcess = QuantityInProcess; + this.type = 4278684876; + } + } + IFC42.IfcRelAssignsToProcess = IfcRelAssignsToProcess; + class IfcRelAssignsToProduct extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingProduct) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingProduct = RelatingProduct; + this.type = 2857406711; + } + } + IFC42.IfcRelAssignsToProduct = IfcRelAssignsToProduct; + class IfcRelAssignsToResource extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingResource) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingResource = RelatingResource; + this.type = 205026976; + } + } + IFC42.IfcRelAssignsToResource = IfcRelAssignsToResource; + class IfcRelAssociates extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.type = 1865459582; + } + } + IFC42.IfcRelAssociates = IfcRelAssociates; + class IfcRelAssociatesApproval extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingApproval) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingApproval = RelatingApproval; + this.type = 4095574036; + } + } + IFC42.IfcRelAssociatesApproval = IfcRelAssociatesApproval; + class IfcRelAssociatesClassification extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingClassification) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingClassification = RelatingClassification; + this.type = 919958153; + } + } + IFC42.IfcRelAssociatesClassification = IfcRelAssociatesClassification; + class IfcRelAssociatesConstraint extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, Intent, RelatingConstraint) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.Intent = Intent; + this.RelatingConstraint = RelatingConstraint; + this.type = 2728634034; + } + } + IFC42.IfcRelAssociatesConstraint = IfcRelAssociatesConstraint; + class IfcRelAssociatesDocument extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingDocument) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingDocument = RelatingDocument; + this.type = 982818633; + } + } + IFC42.IfcRelAssociatesDocument = IfcRelAssociatesDocument; + class IfcRelAssociatesLibrary extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingLibrary) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingLibrary = RelatingLibrary; + this.type = 3840914261; + } + } + IFC42.IfcRelAssociatesLibrary = IfcRelAssociatesLibrary; + class IfcRelAssociatesMaterial extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingMaterial) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingMaterial = RelatingMaterial; + this.type = 2655215786; + } + } + IFC42.IfcRelAssociatesMaterial = IfcRelAssociatesMaterial; + class IfcRelConnects extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 826625072; + } + } + IFC42.IfcRelConnects = IfcRelConnects; + class IfcRelConnectsElements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ConnectionGeometry = ConnectionGeometry; + this.RelatingElement = RelatingElement; + this.RelatedElement = RelatedElement; + this.type = 1204542856; + } + } + IFC42.IfcRelConnectsElements = IfcRelConnectsElements; + class IfcRelConnectsPathElements extends IfcRelConnectsElements { + constructor(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement, RelatingPriorities, RelatedPriorities, RelatedConnectionType, RelatingConnectionType) { + super(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ConnectionGeometry = ConnectionGeometry; + this.RelatingElement = RelatingElement; + this.RelatedElement = RelatedElement; + this.RelatingPriorities = RelatingPriorities; + this.RelatedPriorities = RelatedPriorities; + this.RelatedConnectionType = RelatedConnectionType; + this.RelatingConnectionType = RelatingConnectionType; + this.type = 3945020480; + } + } + IFC42.IfcRelConnectsPathElements = IfcRelConnectsPathElements; + class IfcRelConnectsPortToElement extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingPort, RelatedElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingPort = RelatingPort; + this.RelatedElement = RelatedElement; + this.type = 4201705270; + } + } + IFC42.IfcRelConnectsPortToElement = IfcRelConnectsPortToElement; + class IfcRelConnectsPorts extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingPort, RelatedPort, RealizingElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingPort = RelatingPort; + this.RelatedPort = RelatedPort; + this.RealizingElement = RealizingElement; + this.type = 3190031847; + } + } + IFC42.IfcRelConnectsPorts = IfcRelConnectsPorts; + class IfcRelConnectsStructuralActivity extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingElement, RelatedStructuralActivity) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingElement = RelatingElement; + this.RelatedStructuralActivity = RelatedStructuralActivity; + this.type = 2127690289; + } + } + IFC42.IfcRelConnectsStructuralActivity = IfcRelConnectsStructuralActivity; + class IfcRelConnectsStructuralMember extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingStructuralMember, RelatedStructuralConnection, AppliedCondition, AdditionalConditions, SupportedLength, ConditionCoordinateSystem) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingStructuralMember = RelatingStructuralMember; + this.RelatedStructuralConnection = RelatedStructuralConnection; + this.AppliedCondition = AppliedCondition; + this.AdditionalConditions = AdditionalConditions; + this.SupportedLength = SupportedLength; + this.ConditionCoordinateSystem = ConditionCoordinateSystem; + this.type = 1638771189; + } + } + IFC42.IfcRelConnectsStructuralMember = IfcRelConnectsStructuralMember; + class IfcRelConnectsWithEccentricity extends IfcRelConnectsStructuralMember { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingStructuralMember, RelatedStructuralConnection, AppliedCondition, AdditionalConditions, SupportedLength, ConditionCoordinateSystem, ConnectionConstraint) { + super(GlobalId, OwnerHistory, Name, Description, RelatingStructuralMember, RelatedStructuralConnection, AppliedCondition, AdditionalConditions, SupportedLength, ConditionCoordinateSystem); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingStructuralMember = RelatingStructuralMember; + this.RelatedStructuralConnection = RelatedStructuralConnection; + this.AppliedCondition = AppliedCondition; + this.AdditionalConditions = AdditionalConditions; + this.SupportedLength = SupportedLength; + this.ConditionCoordinateSystem = ConditionCoordinateSystem; + this.ConnectionConstraint = ConnectionConstraint; + this.type = 504942748; + } + } + IFC42.IfcRelConnectsWithEccentricity = IfcRelConnectsWithEccentricity; + class IfcRelConnectsWithRealizingElements extends IfcRelConnectsElements { + constructor(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement, RealizingElements, ConnectionType) { + super(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ConnectionGeometry = ConnectionGeometry; + this.RelatingElement = RelatingElement; + this.RelatedElement = RelatedElement; + this.RealizingElements = RealizingElements; + this.ConnectionType = ConnectionType; + this.type = 3678494232; + } + } + IFC42.IfcRelConnectsWithRealizingElements = IfcRelConnectsWithRealizingElements; + class IfcRelContainedInSpatialStructure extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedElements, RelatingStructure) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedElements = RelatedElements; + this.RelatingStructure = RelatingStructure; + this.type = 3242617779; + } + } + IFC42.IfcRelContainedInSpatialStructure = IfcRelContainedInSpatialStructure; + class IfcRelCoversBldgElements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingBuildingElement, RelatedCoverings) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingBuildingElement = RelatingBuildingElement; + this.RelatedCoverings = RelatedCoverings; + this.type = 886880790; + } + } + IFC42.IfcRelCoversBldgElements = IfcRelCoversBldgElements; + class IfcRelCoversSpaces extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedCoverings) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSpace = RelatingSpace; + this.RelatedCoverings = RelatedCoverings; + this.type = 2802773753; + } + } + IFC42.IfcRelCoversSpaces = IfcRelCoversSpaces; + class IfcRelDeclares extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingContext, RelatedDefinitions) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingContext = RelatingContext; + this.RelatedDefinitions = RelatedDefinitions; + this.type = 2565941209; + } + } + IFC42.IfcRelDeclares = IfcRelDeclares; + class IfcRelDecomposes extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 2551354335; + } + } + IFC42.IfcRelDecomposes = IfcRelDecomposes; + class IfcRelDefines extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 693640335; + } + } + IFC42.IfcRelDefines = IfcRelDefines; + class IfcRelDefinesByObject extends IfcRelDefines { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingObject) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingObject = RelatingObject; + this.type = 1462361463; + } + } + IFC42.IfcRelDefinesByObject = IfcRelDefinesByObject; + class IfcRelDefinesByProperties extends IfcRelDefines { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingPropertyDefinition) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingPropertyDefinition = RelatingPropertyDefinition; + this.type = 4186316022; + } + } + IFC42.IfcRelDefinesByProperties = IfcRelDefinesByProperties; + class IfcRelDefinesByTemplate extends IfcRelDefines { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedPropertySets, RelatingTemplate) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedPropertySets = RelatedPropertySets; + this.RelatingTemplate = RelatingTemplate; + this.type = 307848117; + } + } + IFC42.IfcRelDefinesByTemplate = IfcRelDefinesByTemplate; + class IfcRelDefinesByType extends IfcRelDefines { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingType = RelatingType; + this.type = 781010003; + } + } + IFC42.IfcRelDefinesByType = IfcRelDefinesByType; + class IfcRelFillsElement extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingOpeningElement, RelatedBuildingElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingOpeningElement = RelatingOpeningElement; + this.RelatedBuildingElement = RelatedBuildingElement; + this.type = 3940055652; + } + } + IFC42.IfcRelFillsElement = IfcRelFillsElement; + class IfcRelFlowControlElements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedControlElements, RelatingFlowElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedControlElements = RelatedControlElements; + this.RelatingFlowElement = RelatingFlowElement; + this.type = 279856033; + } + } + IFC42.IfcRelFlowControlElements = IfcRelFlowControlElements; + class IfcRelInterferesElements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingElement, RelatedElement, InterferenceGeometry, InterferenceType, ImpliedOrder) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingElement = RelatingElement; + this.RelatedElement = RelatedElement; + this.InterferenceGeometry = InterferenceGeometry; + this.InterferenceType = InterferenceType; + this.ImpliedOrder = ImpliedOrder; + this.type = 427948657; + } + } + IFC42.IfcRelInterferesElements = IfcRelInterferesElements; + class IfcRelNests extends IfcRelDecomposes { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingObject, RelatedObjects) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingObject = RelatingObject; + this.RelatedObjects = RelatedObjects; + this.type = 3268803585; + } + } + IFC42.IfcRelNests = IfcRelNests; + class IfcRelProjectsElement extends IfcRelDecomposes { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingElement, RelatedFeatureElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingElement = RelatingElement; + this.RelatedFeatureElement = RelatedFeatureElement; + this.type = 750771296; + } + } + IFC42.IfcRelProjectsElement = IfcRelProjectsElement; + class IfcRelReferencedInSpatialStructure extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedElements, RelatingStructure) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedElements = RelatedElements; + this.RelatingStructure = RelatingStructure; + this.type = 1245217292; + } + } + IFC42.IfcRelReferencedInSpatialStructure = IfcRelReferencedInSpatialStructure; + class IfcRelSequence extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingProcess, RelatedProcess, TimeLag, SequenceType, UserDefinedSequenceType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingProcess = RelatingProcess; + this.RelatedProcess = RelatedProcess; + this.TimeLag = TimeLag; + this.SequenceType = SequenceType; + this.UserDefinedSequenceType = UserDefinedSequenceType; + this.type = 4122056220; + } + } + IFC42.IfcRelSequence = IfcRelSequence; + class IfcRelServicesBuildings extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSystem, RelatedBuildings) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSystem = RelatingSystem; + this.RelatedBuildings = RelatedBuildings; + this.type = 366585022; + } + } + IFC42.IfcRelServicesBuildings = IfcRelServicesBuildings; + class IfcRelSpaceBoundary extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedBuildingElement, ConnectionGeometry, PhysicalOrVirtualBoundary, InternalOrExternalBoundary) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSpace = RelatingSpace; + this.RelatedBuildingElement = RelatedBuildingElement; + this.ConnectionGeometry = ConnectionGeometry; + this.PhysicalOrVirtualBoundary = PhysicalOrVirtualBoundary; + this.InternalOrExternalBoundary = InternalOrExternalBoundary; + this.type = 3451746338; + } + } + IFC42.IfcRelSpaceBoundary = IfcRelSpaceBoundary; + class IfcRelSpaceBoundary1stLevel extends IfcRelSpaceBoundary { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedBuildingElement, ConnectionGeometry, PhysicalOrVirtualBoundary, InternalOrExternalBoundary, ParentBoundary) { + super(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedBuildingElement, ConnectionGeometry, PhysicalOrVirtualBoundary, InternalOrExternalBoundary); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSpace = RelatingSpace; + this.RelatedBuildingElement = RelatedBuildingElement; + this.ConnectionGeometry = ConnectionGeometry; + this.PhysicalOrVirtualBoundary = PhysicalOrVirtualBoundary; + this.InternalOrExternalBoundary = InternalOrExternalBoundary; + this.ParentBoundary = ParentBoundary; + this.type = 3523091289; + } + } + IFC42.IfcRelSpaceBoundary1stLevel = IfcRelSpaceBoundary1stLevel; + class IfcRelSpaceBoundary2ndLevel extends IfcRelSpaceBoundary1stLevel { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedBuildingElement, ConnectionGeometry, PhysicalOrVirtualBoundary, InternalOrExternalBoundary, ParentBoundary, CorrespondingBoundary) { + super(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedBuildingElement, ConnectionGeometry, PhysicalOrVirtualBoundary, InternalOrExternalBoundary, ParentBoundary); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSpace = RelatingSpace; + this.RelatedBuildingElement = RelatedBuildingElement; + this.ConnectionGeometry = ConnectionGeometry; + this.PhysicalOrVirtualBoundary = PhysicalOrVirtualBoundary; + this.InternalOrExternalBoundary = InternalOrExternalBoundary; + this.ParentBoundary = ParentBoundary; + this.CorrespondingBoundary = CorrespondingBoundary; + this.type = 1521410863; + } + } + IFC42.IfcRelSpaceBoundary2ndLevel = IfcRelSpaceBoundary2ndLevel; + class IfcRelVoidsElement extends IfcRelDecomposes { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingBuildingElement, RelatedOpeningElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingBuildingElement = RelatingBuildingElement; + this.RelatedOpeningElement = RelatedOpeningElement; + this.type = 1401173127; + } + } + IFC42.IfcRelVoidsElement = IfcRelVoidsElement; + class IfcReparametrisedCompositeCurveSegment extends IfcCompositeCurveSegment { + constructor(Transition, SameSense, ParentCurve, ParamLength) { + super(Transition, SameSense, ParentCurve); + this.Transition = Transition; + this.SameSense = SameSense; + this.ParentCurve = ParentCurve; + this.ParamLength = ParamLength; + this.type = 816062949; + } + } + IFC42.IfcReparametrisedCompositeCurveSegment = IfcReparametrisedCompositeCurveSegment; + class IfcResource extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.type = 2914609552; + } + } + IFC42.IfcResource = IfcResource; + class IfcRevolvedAreaSolid extends IfcSweptAreaSolid { + constructor(SweptArea, Position, Axis2, Angle) { + super(SweptArea, Position); + this.SweptArea = SweptArea; + this.Position = Position; + this.Axis = Axis2; + this.Angle = Angle; + this.type = 1856042241; + } + } + IFC42.IfcRevolvedAreaSolid = IfcRevolvedAreaSolid; + class IfcRevolvedAreaSolidTapered extends IfcRevolvedAreaSolid { + constructor(SweptArea, Position, Axis2, Angle, EndSweptArea) { + super(SweptArea, Position, Axis2, Angle); + this.SweptArea = SweptArea; + this.Position = Position; + this.Axis = Axis2; + this.Angle = Angle; + this.EndSweptArea = EndSweptArea; + this.type = 3243963512; + } + } + IFC42.IfcRevolvedAreaSolidTapered = IfcRevolvedAreaSolidTapered; + class IfcRightCircularCone extends IfcCsgPrimitive3D { + constructor(Position, Height, BottomRadius) { + super(Position); + this.Position = Position; + this.Height = Height; + this.BottomRadius = BottomRadius; + this.type = 4158566097; + } + } + IFC42.IfcRightCircularCone = IfcRightCircularCone; + class IfcRightCircularCylinder extends IfcCsgPrimitive3D { + constructor(Position, Height, Radius) { + super(Position); + this.Position = Position; + this.Height = Height; + this.Radius = Radius; + this.type = 3626867408; + } + } + IFC42.IfcRightCircularCylinder = IfcRightCircularCylinder; + class IfcSimplePropertyTemplate extends IfcPropertyTemplate { + constructor(GlobalId, OwnerHistory, Name, Description, TemplateType, PrimaryMeasureType, SecondaryMeasureType, Enumerators, PrimaryUnit, SecondaryUnit, Expression, AccessState) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.TemplateType = TemplateType; + this.PrimaryMeasureType = PrimaryMeasureType; + this.SecondaryMeasureType = SecondaryMeasureType; + this.Enumerators = Enumerators; + this.PrimaryUnit = PrimaryUnit; + this.SecondaryUnit = SecondaryUnit; + this.Expression = Expression; + this.AccessState = AccessState; + this.type = 3663146110; + } + } + IFC42.IfcSimplePropertyTemplate = IfcSimplePropertyTemplate; + class IfcSpatialElement extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.type = 1412071761; + } + } + IFC42.IfcSpatialElement = IfcSpatialElement; + class IfcSpatialElementType extends IfcTypeProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 710998568; + } + } + IFC42.IfcSpatialElementType = IfcSpatialElementType; + class IfcSpatialStructureElement extends IfcSpatialElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.type = 2706606064; + } + } + IFC42.IfcSpatialStructureElement = IfcSpatialStructureElement; + class IfcSpatialStructureElementType extends IfcSpatialElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3893378262; + } + } + IFC42.IfcSpatialStructureElementType = IfcSpatialStructureElementType; + class IfcSpatialZone extends IfcSpatialElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.PredefinedType = PredefinedType; + this.type = 463610769; + } + } + IFC42.IfcSpatialZone = IfcSpatialZone; + class IfcSpatialZoneType extends IfcSpatialElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.LongName = LongName; + this.type = 2481509218; + } + } + IFC42.IfcSpatialZoneType = IfcSpatialZoneType; + class IfcSphere extends IfcCsgPrimitive3D { + constructor(Position, Radius) { + super(Position); + this.Position = Position; + this.Radius = Radius; + this.type = 451544542; + } + } + IFC42.IfcSphere = IfcSphere; + class IfcSphericalSurface extends IfcElementarySurface { + constructor(Position, Radius) { + super(Position); + this.Position = Position; + this.Radius = Radius; + this.type = 4015995234; + } + } + IFC42.IfcSphericalSurface = IfcSphericalSurface; + class IfcStructuralActivity extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.type = 3544373492; + } + } + IFC42.IfcStructuralActivity = IfcStructuralActivity; + class IfcStructuralItem extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 3136571912; + } + } + IFC42.IfcStructuralItem = IfcStructuralItem; + class IfcStructuralMember extends IfcStructuralItem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 530289379; + } + } + IFC42.IfcStructuralMember = IfcStructuralMember; + class IfcStructuralReaction extends IfcStructuralActivity { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.type = 3689010777; + } + } + IFC42.IfcStructuralReaction = IfcStructuralReaction; + class IfcStructuralSurfaceMember extends IfcStructuralMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Thickness) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.Thickness = Thickness; + this.type = 3979015343; + } + } + IFC42.IfcStructuralSurfaceMember = IfcStructuralSurfaceMember; + class IfcStructuralSurfaceMemberVarying extends IfcStructuralSurfaceMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Thickness) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Thickness); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.Thickness = Thickness; + this.type = 2218152070; + } + } + IFC42.IfcStructuralSurfaceMemberVarying = IfcStructuralSurfaceMemberVarying; + class IfcStructuralSurfaceReaction extends IfcStructuralReaction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.PredefinedType = PredefinedType; + this.type = 603775116; + } + } + IFC42.IfcStructuralSurfaceReaction = IfcStructuralSurfaceReaction; + class IfcSubContractResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 4095615324; + } + } + IFC42.IfcSubContractResourceType = IfcSubContractResourceType; + class IfcSurfaceCurve extends IfcCurve { + constructor(Curve3D, AssociatedGeometry, MasterRepresentation) { + super(); + this.Curve3D = Curve3D; + this.AssociatedGeometry = AssociatedGeometry; + this.MasterRepresentation = MasterRepresentation; + this.type = 699246055; + } + } + IFC42.IfcSurfaceCurve = IfcSurfaceCurve; + class IfcSurfaceCurveSweptAreaSolid extends IfcSweptAreaSolid { + constructor(SweptArea, Position, Directrix, StartParam, EndParam, ReferenceSurface) { + super(SweptArea, Position); + this.SweptArea = SweptArea; + this.Position = Position; + this.Directrix = Directrix; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.ReferenceSurface = ReferenceSurface; + this.type = 2028607225; + } + } + IFC42.IfcSurfaceCurveSweptAreaSolid = IfcSurfaceCurveSweptAreaSolid; + class IfcSurfaceOfLinearExtrusion extends IfcSweptSurface { + constructor(SweptCurve, Position, ExtrudedDirection, Depth) { + super(SweptCurve, Position); + this.SweptCurve = SweptCurve; + this.Position = Position; + this.ExtrudedDirection = ExtrudedDirection; + this.Depth = Depth; + this.type = 2809605785; + } + } + IFC42.IfcSurfaceOfLinearExtrusion = IfcSurfaceOfLinearExtrusion; + class IfcSurfaceOfRevolution extends IfcSweptSurface { + constructor(SweptCurve, Position, AxisPosition) { + super(SweptCurve, Position); + this.SweptCurve = SweptCurve; + this.Position = Position; + this.AxisPosition = AxisPosition; + this.type = 4124788165; + } + } + IFC42.IfcSurfaceOfRevolution = IfcSurfaceOfRevolution; + class IfcSystemFurnitureElementType extends IfcFurnishingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1580310250; + } + } + IFC42.IfcSystemFurnitureElementType = IfcSystemFurnitureElementType; + class IfcTask extends IfcProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Status, WorkMethod, IsMilestone, Priority, TaskTime, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Status = Status; + this.WorkMethod = WorkMethod; + this.IsMilestone = IsMilestone; + this.Priority = Priority; + this.TaskTime = TaskTime; + this.PredefinedType = PredefinedType; + this.type = 3473067441; + } + } + IFC42.IfcTask = IfcTask; + class IfcTaskType extends IfcTypeProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType, PredefinedType, WorkMethod) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ProcessType = ProcessType; + this.PredefinedType = PredefinedType; + this.WorkMethod = WorkMethod; + this.type = 3206491090; + } + } + IFC42.IfcTaskType = IfcTaskType; + class IfcTessellatedFaceSet extends IfcTessellatedItem { + constructor(Coordinates) { + super(); + this.Coordinates = Coordinates; + this.type = 2387106220; + } + } + IFC42.IfcTessellatedFaceSet = IfcTessellatedFaceSet; + class IfcToroidalSurface extends IfcElementarySurface { + constructor(Position, MajorRadius, MinorRadius) { + super(Position); + this.Position = Position; + this.MajorRadius = MajorRadius; + this.MinorRadius = MinorRadius; + this.type = 1935646853; + } + } + IFC42.IfcToroidalSurface = IfcToroidalSurface; + class IfcTransportElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2097647324; + } + } + IFC42.IfcTransportElementType = IfcTransportElementType; + class IfcTriangulatedFaceSet extends IfcTessellatedFaceSet { + constructor(Coordinates, Normals, Closed, CoordIndex, PnIndex) { + super(Coordinates); + this.Coordinates = Coordinates; + this.Normals = Normals; + this.Closed = Closed; + this.CoordIndex = CoordIndex; + this.PnIndex = PnIndex; + this.type = 2916149573; + } + } + IFC42.IfcTriangulatedFaceSet = IfcTriangulatedFaceSet; + class IfcWindowLiningProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, LiningDepth, LiningThickness, TransomThickness, MullionThickness, FirstTransomOffset, SecondTransomOffset, FirstMullionOffset, SecondMullionOffset, ShapeAspectStyle, LiningOffset, LiningToPanelOffsetX, LiningToPanelOffsetY) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.LiningDepth = LiningDepth; + this.LiningThickness = LiningThickness; + this.TransomThickness = TransomThickness; + this.MullionThickness = MullionThickness; + this.FirstTransomOffset = FirstTransomOffset; + this.SecondTransomOffset = SecondTransomOffset; + this.FirstMullionOffset = FirstMullionOffset; + this.SecondMullionOffset = SecondMullionOffset; + this.ShapeAspectStyle = ShapeAspectStyle; + this.LiningOffset = LiningOffset; + this.LiningToPanelOffsetX = LiningToPanelOffsetX; + this.LiningToPanelOffsetY = LiningToPanelOffsetY; + this.type = 336235671; + } + } + IFC42.IfcWindowLiningProperties = IfcWindowLiningProperties; + class IfcWindowPanelProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, OperationType, PanelPosition, FrameDepth, FrameThickness, ShapeAspectStyle) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.OperationType = OperationType; + this.PanelPosition = PanelPosition; + this.FrameDepth = FrameDepth; + this.FrameThickness = FrameThickness; + this.ShapeAspectStyle = ShapeAspectStyle; + this.type = 512836454; + } + } + IFC42.IfcWindowPanelProperties = IfcWindowPanelProperties; + class IfcActor extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TheActor) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TheActor = TheActor; + this.type = 2296667514; + } + } + IFC42.IfcActor = IfcActor; + class IfcAdvancedBrep extends IfcManifoldSolidBrep { + constructor(Outer) { + super(Outer); + this.Outer = Outer; + this.type = 1635779807; + } + } + IFC42.IfcAdvancedBrep = IfcAdvancedBrep; + class IfcAdvancedBrepWithVoids extends IfcAdvancedBrep { + constructor(Outer, Voids) { + super(Outer); + this.Outer = Outer; + this.Voids = Voids; + this.type = 2603310189; + } + } + IFC42.IfcAdvancedBrepWithVoids = IfcAdvancedBrepWithVoids; + class IfcAnnotation extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 1674181508; + } + } + IFC42.IfcAnnotation = IfcAnnotation; + class IfcBSplineSurface extends IfcBoundedSurface { + constructor(UDegree, VDegree, ControlPointsList, SurfaceForm, UClosed, VClosed, SelfIntersect) { + super(); + this.UDegree = UDegree; + this.VDegree = VDegree; + this.ControlPointsList = ControlPointsList; + this.SurfaceForm = SurfaceForm; + this.UClosed = UClosed; + this.VClosed = VClosed; + this.SelfIntersect = SelfIntersect; + this.type = 2887950389; + } + } + IFC42.IfcBSplineSurface = IfcBSplineSurface; + class IfcBSplineSurfaceWithKnots extends IfcBSplineSurface { + constructor(UDegree, VDegree, ControlPointsList, SurfaceForm, UClosed, VClosed, SelfIntersect, UMultiplicities, VMultiplicities, UKnots, VKnots, KnotSpec) { + super(UDegree, VDegree, ControlPointsList, SurfaceForm, UClosed, VClosed, SelfIntersect); + this.UDegree = UDegree; + this.VDegree = VDegree; + this.ControlPointsList = ControlPointsList; + this.SurfaceForm = SurfaceForm; + this.UClosed = UClosed; + this.VClosed = VClosed; + this.SelfIntersect = SelfIntersect; + this.UMultiplicities = UMultiplicities; + this.VMultiplicities = VMultiplicities; + this.UKnots = UKnots; + this.VKnots = VKnots; + this.KnotSpec = KnotSpec; + this.type = 167062518; + } + } + IFC42.IfcBSplineSurfaceWithKnots = IfcBSplineSurfaceWithKnots; + class IfcBlock extends IfcCsgPrimitive3D { + constructor(Position, XLength, YLength, ZLength) { + super(Position); + this.Position = Position; + this.XLength = XLength; + this.YLength = YLength; + this.ZLength = ZLength; + this.type = 1334484129; + } + } + IFC42.IfcBlock = IfcBlock; + class IfcBooleanClippingResult extends IfcBooleanResult { + constructor(Operator, FirstOperand, SecondOperand) { + super(Operator, FirstOperand, SecondOperand); + this.Operator = Operator; + this.FirstOperand = FirstOperand; + this.SecondOperand = SecondOperand; + this.type = 3649129432; + } + } + IFC42.IfcBooleanClippingResult = IfcBooleanClippingResult; + class IfcBoundedCurve extends IfcCurve { + constructor() { + super(); + this.type = 1260505505; + } + } + IFC42.IfcBoundedCurve = IfcBoundedCurve; + class IfcBuilding extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, ElevationOfRefHeight, ElevationOfTerrain, BuildingAddress) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.ElevationOfRefHeight = ElevationOfRefHeight; + this.ElevationOfTerrain = ElevationOfTerrain; + this.BuildingAddress = BuildingAddress; + this.type = 4031249490; + } + } + IFC42.IfcBuilding = IfcBuilding; + class IfcBuildingElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1950629157; + } + } + IFC42.IfcBuildingElementType = IfcBuildingElementType; + class IfcBuildingStorey extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, Elevation) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.Elevation = Elevation; + this.type = 3124254112; + } + } + IFC42.IfcBuildingStorey = IfcBuildingStorey; + class IfcChimneyType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2197970202; + } + } + IFC42.IfcChimneyType = IfcChimneyType; + class IfcCircleHollowProfileDef extends IfcCircleProfileDef { + constructor(ProfileType, ProfileName, Position, Radius, WallThickness) { + super(ProfileType, ProfileName, Position, Radius); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Radius = Radius; + this.WallThickness = WallThickness; + this.type = 2937912522; + } + } + IFC42.IfcCircleHollowProfileDef = IfcCircleHollowProfileDef; + class IfcCivilElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3893394355; + } + } + IFC42.IfcCivilElementType = IfcCivilElementType; + class IfcColumnType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 300633059; + } + } + IFC42.IfcColumnType = IfcColumnType; + class IfcComplexPropertyTemplate extends IfcPropertyTemplate { + constructor(GlobalId, OwnerHistory, Name, Description, UsageName, TemplateType, HasPropertyTemplates) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.UsageName = UsageName; + this.TemplateType = TemplateType; + this.HasPropertyTemplates = HasPropertyTemplates; + this.type = 3875453745; + } + } + IFC42.IfcComplexPropertyTemplate = IfcComplexPropertyTemplate; + class IfcCompositeCurve extends IfcBoundedCurve { + constructor(Segments, SelfIntersect) { + super(); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 3732776249; + } + } + IFC42.IfcCompositeCurve = IfcCompositeCurve; + class IfcCompositeCurveOnSurface extends IfcCompositeCurve { + constructor(Segments, SelfIntersect) { + super(Segments, SelfIntersect); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 15328376; + } + } + IFC42.IfcCompositeCurveOnSurface = IfcCompositeCurveOnSurface; + class IfcConic extends IfcCurve { + constructor(Position) { + super(); + this.Position = Position; + this.type = 2510884976; + } + } + IFC42.IfcConic = IfcConic; + class IfcConstructionEquipmentResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 2185764099; + } + } + IFC42.IfcConstructionEquipmentResourceType = IfcConstructionEquipmentResourceType; + class IfcConstructionMaterialResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 4105962743; + } + } + IFC42.IfcConstructionMaterialResourceType = IfcConstructionMaterialResourceType; + class IfcConstructionProductResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 1525564444; + } + } + IFC42.IfcConstructionProductResourceType = IfcConstructionProductResourceType; + class IfcConstructionResource extends IfcResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.type = 2559216714; + } + } + IFC42.IfcConstructionResource = IfcConstructionResource; + class IfcControl extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.type = 3293443760; + } + } + IFC42.IfcControl = IfcControl; + class IfcCostItem extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, PredefinedType, CostValues, CostQuantities) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.PredefinedType = PredefinedType; + this.CostValues = CostValues; + this.CostQuantities = CostQuantities; + this.type = 3895139033; + } + } + IFC42.IfcCostItem = IfcCostItem; + class IfcCostSchedule extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, PredefinedType, Status, SubmittedOn, UpdateDate) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.PredefinedType = PredefinedType; + this.Status = Status; + this.SubmittedOn = SubmittedOn; + this.UpdateDate = UpdateDate; + this.type = 1419761937; + } + } + IFC42.IfcCostSchedule = IfcCostSchedule; + class IfcCoveringType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1916426348; + } + } + IFC42.IfcCoveringType = IfcCoveringType; + class IfcCrewResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 3295246426; + } + } + IFC42.IfcCrewResource = IfcCrewResource; + class IfcCurtainWallType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1457835157; + } + } + IFC42.IfcCurtainWallType = IfcCurtainWallType; + class IfcCylindricalSurface extends IfcElementarySurface { + constructor(Position, Radius) { + super(Position); + this.Position = Position; + this.Radius = Radius; + this.type = 1213902940; + } + } + IFC42.IfcCylindricalSurface = IfcCylindricalSurface; + class IfcDistributionElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3256556792; + } + } + IFC42.IfcDistributionElementType = IfcDistributionElementType; + class IfcDistributionFlowElementType extends IfcDistributionElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3849074793; + } + } + IFC42.IfcDistributionFlowElementType = IfcDistributionFlowElementType; + class IfcDoorLiningProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, LiningDepth, LiningThickness, ThresholdDepth, ThresholdThickness, TransomThickness, TransomOffset, LiningOffset, ThresholdOffset, CasingThickness, CasingDepth, ShapeAspectStyle, LiningToPanelOffsetX, LiningToPanelOffsetY) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.LiningDepth = LiningDepth; + this.LiningThickness = LiningThickness; + this.ThresholdDepth = ThresholdDepth; + this.ThresholdThickness = ThresholdThickness; + this.TransomThickness = TransomThickness; + this.TransomOffset = TransomOffset; + this.LiningOffset = LiningOffset; + this.ThresholdOffset = ThresholdOffset; + this.CasingThickness = CasingThickness; + this.CasingDepth = CasingDepth; + this.ShapeAspectStyle = ShapeAspectStyle; + this.LiningToPanelOffsetX = LiningToPanelOffsetX; + this.LiningToPanelOffsetY = LiningToPanelOffsetY; + this.type = 2963535650; + } + } + IFC42.IfcDoorLiningProperties = IfcDoorLiningProperties; + class IfcDoorPanelProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, PanelDepth, PanelOperation, PanelWidth, PanelPosition, ShapeAspectStyle) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.PanelDepth = PanelDepth; + this.PanelOperation = PanelOperation; + this.PanelWidth = PanelWidth; + this.PanelPosition = PanelPosition; + this.ShapeAspectStyle = ShapeAspectStyle; + this.type = 1714330368; + } + } + IFC42.IfcDoorPanelProperties = IfcDoorPanelProperties; + class IfcDoorType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, OperationType, ParameterTakesPrecedence, UserDefinedOperationType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.OperationType = OperationType; + this.ParameterTakesPrecedence = ParameterTakesPrecedence; + this.UserDefinedOperationType = UserDefinedOperationType; + this.type = 2323601079; + } + } + IFC42.IfcDoorType = IfcDoorType; + class IfcDraughtingPreDefinedColour extends IfcPreDefinedColour { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 445594917; + } + } + IFC42.IfcDraughtingPreDefinedColour = IfcDraughtingPreDefinedColour; + class IfcDraughtingPreDefinedCurveFont extends IfcPreDefinedCurveFont { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 4006246654; + } + } + IFC42.IfcDraughtingPreDefinedCurveFont = IfcDraughtingPreDefinedCurveFont; + class IfcElement extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1758889154; + } + } + IFC42.IfcElement = IfcElement; + class IfcElementAssembly extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, AssemblyPlace, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.AssemblyPlace = AssemblyPlace; + this.PredefinedType = PredefinedType; + this.type = 4123344466; + } + } + IFC42.IfcElementAssembly = IfcElementAssembly; + class IfcElementAssemblyType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2397081782; + } + } + IFC42.IfcElementAssemblyType = IfcElementAssemblyType; + class IfcElementComponent extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1623761950; + } + } + IFC42.IfcElementComponent = IfcElementComponent; + class IfcElementComponentType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2590856083; + } + } + IFC42.IfcElementComponentType = IfcElementComponentType; + class IfcEllipse extends IfcConic { + constructor(Position, SemiAxis1, SemiAxis2) { + super(Position); + this.Position = Position; + this.SemiAxis1 = SemiAxis1; + this.SemiAxis2 = SemiAxis2; + this.type = 1704287377; + } + } + IFC42.IfcEllipse = IfcEllipse; + class IfcEnergyConversionDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2107101300; + } + } + IFC42.IfcEnergyConversionDeviceType = IfcEnergyConversionDeviceType; + class IfcEngineType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 132023988; + } + } + IFC42.IfcEngineType = IfcEngineType; + class IfcEvaporativeCoolerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3174744832; + } + } + IFC42.IfcEvaporativeCoolerType = IfcEvaporativeCoolerType; + class IfcEvaporatorType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3390157468; + } + } + IFC42.IfcEvaporatorType = IfcEvaporatorType; + class IfcEvent extends IfcProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, PredefinedType, EventTriggerType, UserDefinedEventTriggerType, EventOccurenceTime) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.PredefinedType = PredefinedType; + this.EventTriggerType = EventTriggerType; + this.UserDefinedEventTriggerType = UserDefinedEventTriggerType; + this.EventOccurenceTime = EventOccurenceTime; + this.type = 4148101412; + } + } + IFC42.IfcEvent = IfcEvent; + class IfcExternalSpatialStructureElement extends IfcSpatialElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.type = 2853485674; + } + } + IFC42.IfcExternalSpatialStructureElement = IfcExternalSpatialStructureElement; + class IfcFacetedBrep extends IfcManifoldSolidBrep { + constructor(Outer) { + super(Outer); + this.Outer = Outer; + this.type = 807026263; + } + } + IFC42.IfcFacetedBrep = IfcFacetedBrep; + class IfcFacetedBrepWithVoids extends IfcFacetedBrep { + constructor(Outer, Voids) { + super(Outer); + this.Outer = Outer; + this.Voids = Voids; + this.type = 3737207727; + } + } + IFC42.IfcFacetedBrepWithVoids = IfcFacetedBrepWithVoids; + class IfcFastener extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 647756555; + } + } + IFC42.IfcFastener = IfcFastener; + class IfcFastenerType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2489546625; + } + } + IFC42.IfcFastenerType = IfcFastenerType; + class IfcFeatureElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2827207264; + } + } + IFC42.IfcFeatureElement = IfcFeatureElement; + class IfcFeatureElementAddition extends IfcFeatureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2143335405; + } + } + IFC42.IfcFeatureElementAddition = IfcFeatureElementAddition; + class IfcFeatureElementSubtraction extends IfcFeatureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1287392070; + } + } + IFC42.IfcFeatureElementSubtraction = IfcFeatureElementSubtraction; + class IfcFlowControllerType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3907093117; + } + } + IFC42.IfcFlowControllerType = IfcFlowControllerType; + class IfcFlowFittingType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3198132628; + } + } + IFC42.IfcFlowFittingType = IfcFlowFittingType; + class IfcFlowMeterType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3815607619; + } + } + IFC42.IfcFlowMeterType = IfcFlowMeterType; + class IfcFlowMovingDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1482959167; + } + } + IFC42.IfcFlowMovingDeviceType = IfcFlowMovingDeviceType; + class IfcFlowSegmentType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1834744321; + } + } + IFC42.IfcFlowSegmentType = IfcFlowSegmentType; + class IfcFlowStorageDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1339347760; + } + } + IFC42.IfcFlowStorageDeviceType = IfcFlowStorageDeviceType; + class IfcFlowTerminalType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2297155007; + } + } + IFC42.IfcFlowTerminalType = IfcFlowTerminalType; + class IfcFlowTreatmentDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3009222698; + } + } + IFC42.IfcFlowTreatmentDeviceType = IfcFlowTreatmentDeviceType; + class IfcFootingType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1893162501; + } + } + IFC42.IfcFootingType = IfcFootingType; + class IfcFurnishingElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 263784265; + } + } + IFC42.IfcFurnishingElement = IfcFurnishingElement; + class IfcFurniture extends IfcFurnishingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1509553395; + } + } + IFC42.IfcFurniture = IfcFurniture; + class IfcGeographicElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3493046030; + } + } + IFC42.IfcGeographicElement = IfcGeographicElement; + class IfcGrid extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, UAxes, VAxes, WAxes, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.UAxes = UAxes; + this.VAxes = VAxes; + this.WAxes = WAxes; + this.PredefinedType = PredefinedType; + this.type = 3009204131; + } + } + IFC42.IfcGrid = IfcGrid; + class IfcGroup extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 2706460486; + } + } + IFC42.IfcGroup = IfcGroup; + class IfcHeatExchangerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1251058090; + } + } + IFC42.IfcHeatExchangerType = IfcHeatExchangerType; + class IfcHumidifierType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1806887404; + } + } + IFC42.IfcHumidifierType = IfcHumidifierType; + class IfcIndexedPolyCurve extends IfcBoundedCurve { + constructor(Points2, Segments, SelfIntersect) { + super(); + this.Points = Points2; + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 2571569899; + } + } + IFC42.IfcIndexedPolyCurve = IfcIndexedPolyCurve; + class IfcInterceptorType extends IfcFlowTreatmentDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3946677679; + } + } + IFC42.IfcInterceptorType = IfcInterceptorType; + class IfcIntersectionCurve extends IfcSurfaceCurve { + constructor(Curve3D, AssociatedGeometry, MasterRepresentation) { + super(Curve3D, AssociatedGeometry, MasterRepresentation); + this.Curve3D = Curve3D; + this.AssociatedGeometry = AssociatedGeometry; + this.MasterRepresentation = MasterRepresentation; + this.type = 3113134337; + } + } + IFC42.IfcIntersectionCurve = IfcIntersectionCurve; + class IfcInventory extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, Jurisdiction, ResponsiblePersons, LastUpdateDate, CurrentValue, OriginalValue) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.Jurisdiction = Jurisdiction; + this.ResponsiblePersons = ResponsiblePersons; + this.LastUpdateDate = LastUpdateDate; + this.CurrentValue = CurrentValue; + this.OriginalValue = OriginalValue; + this.type = 2391368822; + } + } + IFC42.IfcInventory = IfcInventory; + class IfcJunctionBoxType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4288270099; + } + } + IFC42.IfcJunctionBoxType = IfcJunctionBoxType; + class IfcLaborResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 3827777499; + } + } + IFC42.IfcLaborResource = IfcLaborResource; + class IfcLampType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1051575348; + } + } + IFC42.IfcLampType = IfcLampType; + class IfcLightFixtureType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1161773419; + } + } + IFC42.IfcLightFixtureType = IfcLightFixtureType; + class IfcMechanicalFastener extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, NominalDiameter, NominalLength, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.NominalDiameter = NominalDiameter; + this.NominalLength = NominalLength; + this.PredefinedType = PredefinedType; + this.type = 377706215; + } + } + IFC42.IfcMechanicalFastener = IfcMechanicalFastener; + class IfcMechanicalFastenerType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, NominalDiameter, NominalLength) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.NominalDiameter = NominalDiameter; + this.NominalLength = NominalLength; + this.type = 2108223431; + } + } + IFC42.IfcMechanicalFastenerType = IfcMechanicalFastenerType; + class IfcMedicalDeviceType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1114901282; + } + } + IFC42.IfcMedicalDeviceType = IfcMedicalDeviceType; + class IfcMemberType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3181161470; + } + } + IFC42.IfcMemberType = IfcMemberType; + class IfcMotorConnectionType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 977012517; + } + } + IFC42.IfcMotorConnectionType = IfcMotorConnectionType; + class IfcOccupant extends IfcActor { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TheActor, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, TheActor); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TheActor = TheActor; + this.PredefinedType = PredefinedType; + this.type = 4143007308; + } + } + IFC42.IfcOccupant = IfcOccupant; + class IfcOpeningElement extends IfcFeatureElementSubtraction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3588315303; + } + } + IFC42.IfcOpeningElement = IfcOpeningElement; + class IfcOpeningStandardCase extends IfcOpeningElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3079942009; + } + } + IFC42.IfcOpeningStandardCase = IfcOpeningStandardCase; + class IfcOutletType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2837617999; + } + } + IFC42.IfcOutletType = IfcOutletType; + class IfcPerformanceHistory extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LifeCyclePhase, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LifeCyclePhase = LifeCyclePhase; + this.PredefinedType = PredefinedType; + this.type = 2382730787; + } + } + IFC42.IfcPerformanceHistory = IfcPerformanceHistory; + class IfcPermeableCoveringProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, OperationType, PanelPosition, FrameDepth, FrameThickness, ShapeAspectStyle) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.OperationType = OperationType; + this.PanelPosition = PanelPosition; + this.FrameDepth = FrameDepth; + this.FrameThickness = FrameThickness; + this.ShapeAspectStyle = ShapeAspectStyle; + this.type = 3566463478; + } + } + IFC42.IfcPermeableCoveringProperties = IfcPermeableCoveringProperties; + class IfcPermit extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, PredefinedType, Status, LongDescription) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.PredefinedType = PredefinedType; + this.Status = Status; + this.LongDescription = LongDescription; + this.type = 3327091369; + } + } + IFC42.IfcPermit = IfcPermit; + class IfcPileType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1158309216; + } + } + IFC42.IfcPileType = IfcPileType; + class IfcPipeFittingType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 804291784; + } + } + IFC42.IfcPipeFittingType = IfcPipeFittingType; + class IfcPipeSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4231323485; + } + } + IFC42.IfcPipeSegmentType = IfcPipeSegmentType; + class IfcPlateType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4017108033; + } + } + IFC42.IfcPlateType = IfcPlateType; + class IfcPolygonalFaceSet extends IfcTessellatedFaceSet { + constructor(Coordinates, Closed, Faces, PnIndex) { + super(Coordinates); + this.Coordinates = Coordinates; + this.Closed = Closed; + this.Faces = Faces; + this.PnIndex = PnIndex; + this.type = 2839578677; + } + } + IFC42.IfcPolygonalFaceSet = IfcPolygonalFaceSet; + class IfcPolyline extends IfcBoundedCurve { + constructor(Points2) { + super(); + this.Points = Points2; + this.type = 3724593414; + } + } + IFC42.IfcPolyline = IfcPolyline; + class IfcPort extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 3740093272; + } + } + IFC42.IfcPort = IfcPort; + class IfcProcedure extends IfcProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.PredefinedType = PredefinedType; + this.type = 2744685151; + } + } + IFC42.IfcProcedure = IfcProcedure; + class IfcProjectOrder extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, PredefinedType, Status, LongDescription) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.PredefinedType = PredefinedType; + this.Status = Status; + this.LongDescription = LongDescription; + this.type = 2904328755; + } + } + IFC42.IfcProjectOrder = IfcProjectOrder; + class IfcProjectionElement extends IfcFeatureElementAddition { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3651124850; + } + } + IFC42.IfcProjectionElement = IfcProjectionElement; + class IfcProtectiveDeviceType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1842657554; + } + } + IFC42.IfcProtectiveDeviceType = IfcProtectiveDeviceType; + class IfcPumpType extends IfcFlowMovingDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2250791053; + } + } + IFC42.IfcPumpType = IfcPumpType; + class IfcRailingType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2893384427; + } + } + IFC42.IfcRailingType = IfcRailingType; + class IfcRampFlightType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2324767716; + } + } + IFC42.IfcRampFlightType = IfcRampFlightType; + class IfcRampType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1469900589; + } + } + IFC42.IfcRampType = IfcRampType; + class IfcRationalBSplineSurfaceWithKnots extends IfcBSplineSurfaceWithKnots { + constructor(UDegree, VDegree, ControlPointsList, SurfaceForm, UClosed, VClosed, SelfIntersect, UMultiplicities, VMultiplicities, UKnots, VKnots, KnotSpec, WeightsData) { + super(UDegree, VDegree, ControlPointsList, SurfaceForm, UClosed, VClosed, SelfIntersect, UMultiplicities, VMultiplicities, UKnots, VKnots, KnotSpec); + this.UDegree = UDegree; + this.VDegree = VDegree; + this.ControlPointsList = ControlPointsList; + this.SurfaceForm = SurfaceForm; + this.UClosed = UClosed; + this.VClosed = VClosed; + this.SelfIntersect = SelfIntersect; + this.UMultiplicities = UMultiplicities; + this.VMultiplicities = VMultiplicities; + this.UKnots = UKnots; + this.VKnots = VKnots; + this.KnotSpec = KnotSpec; + this.WeightsData = WeightsData; + this.type = 683857671; + } + } + IFC42.IfcRationalBSplineSurfaceWithKnots = IfcRationalBSplineSurfaceWithKnots; + class IfcReinforcingElement extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.type = 3027567501; + } + } + IFC42.IfcReinforcingElement = IfcReinforcingElement; + class IfcReinforcingElementType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 964333572; + } + } + IFC42.IfcReinforcingElementType = IfcReinforcingElementType; + class IfcReinforcingMesh extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, MeshLength, MeshWidth, LongitudinalBarNominalDiameter, TransverseBarNominalDiameter, LongitudinalBarCrossSectionArea, TransverseBarCrossSectionArea, LongitudinalBarSpacing, TransverseBarSpacing, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.MeshLength = MeshLength; + this.MeshWidth = MeshWidth; + this.LongitudinalBarNominalDiameter = LongitudinalBarNominalDiameter; + this.TransverseBarNominalDiameter = TransverseBarNominalDiameter; + this.LongitudinalBarCrossSectionArea = LongitudinalBarCrossSectionArea; + this.TransverseBarCrossSectionArea = TransverseBarCrossSectionArea; + this.LongitudinalBarSpacing = LongitudinalBarSpacing; + this.TransverseBarSpacing = TransverseBarSpacing; + this.PredefinedType = PredefinedType; + this.type = 2320036040; + } + } + IFC42.IfcReinforcingMesh = IfcReinforcingMesh; + class IfcReinforcingMeshType extends IfcReinforcingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, MeshLength, MeshWidth, LongitudinalBarNominalDiameter, TransverseBarNominalDiameter, LongitudinalBarCrossSectionArea, TransverseBarCrossSectionArea, LongitudinalBarSpacing, TransverseBarSpacing, BendingShapeCode, BendingParameters) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.MeshLength = MeshLength; + this.MeshWidth = MeshWidth; + this.LongitudinalBarNominalDiameter = LongitudinalBarNominalDiameter; + this.TransverseBarNominalDiameter = TransverseBarNominalDiameter; + this.LongitudinalBarCrossSectionArea = LongitudinalBarCrossSectionArea; + this.TransverseBarCrossSectionArea = TransverseBarCrossSectionArea; + this.LongitudinalBarSpacing = LongitudinalBarSpacing; + this.TransverseBarSpacing = TransverseBarSpacing; + this.BendingShapeCode = BendingShapeCode; + this.BendingParameters = BendingParameters; + this.type = 2310774935; + } + } + IFC42.IfcReinforcingMeshType = IfcReinforcingMeshType; + class IfcRelAggregates extends IfcRelDecomposes { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingObject, RelatedObjects) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingObject = RelatingObject; + this.RelatedObjects = RelatedObjects; + this.type = 160246688; + } + } + IFC42.IfcRelAggregates = IfcRelAggregates; + class IfcRoofType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2781568857; + } + } + IFC42.IfcRoofType = IfcRoofType; + class IfcSanitaryTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1768891740; + } + } + IFC42.IfcSanitaryTerminalType = IfcSanitaryTerminalType; + class IfcSeamCurve extends IfcSurfaceCurve { + constructor(Curve3D, AssociatedGeometry, MasterRepresentation) { + super(Curve3D, AssociatedGeometry, MasterRepresentation); + this.Curve3D = Curve3D; + this.AssociatedGeometry = AssociatedGeometry; + this.MasterRepresentation = MasterRepresentation; + this.type = 2157484638; + } + } + IFC42.IfcSeamCurve = IfcSeamCurve; + class IfcShadingDeviceType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4074543187; + } + } + IFC42.IfcShadingDeviceType = IfcShadingDeviceType; + class IfcSite extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, RefLatitude, RefLongitude, RefElevation, LandTitleNumber, SiteAddress) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.RefLatitude = RefLatitude; + this.RefLongitude = RefLongitude; + this.RefElevation = RefElevation; + this.LandTitleNumber = LandTitleNumber; + this.SiteAddress = SiteAddress; + this.type = 4097777520; + } + } + IFC42.IfcSite = IfcSite; + class IfcSlabType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2533589738; + } + } + IFC42.IfcSlabType = IfcSlabType; + class IfcSolarDeviceType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1072016465; + } + } + IFC42.IfcSolarDeviceType = IfcSolarDeviceType; + class IfcSpace extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, PredefinedType, ElevationWithFlooring) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.PredefinedType = PredefinedType; + this.ElevationWithFlooring = ElevationWithFlooring; + this.type = 3856911033; + } + } + IFC42.IfcSpace = IfcSpace; + class IfcSpaceHeaterType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1305183839; + } + } + IFC42.IfcSpaceHeaterType = IfcSpaceHeaterType; + class IfcSpaceType extends IfcSpatialStructureElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.LongName = LongName; + this.type = 3812236995; + } + } + IFC42.IfcSpaceType = IfcSpaceType; + class IfcStackTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3112655638; + } + } + IFC42.IfcStackTerminalType = IfcStackTerminalType; + class IfcStairFlightType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1039846685; + } + } + IFC42.IfcStairFlightType = IfcStairFlightType; + class IfcStairType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 338393293; + } + } + IFC42.IfcStairType = IfcStairType; + class IfcStructuralAction extends IfcStructuralActivity { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.type = 682877961; + } + } + IFC42.IfcStructuralAction = IfcStructuralAction; + class IfcStructuralConnection extends IfcStructuralItem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.type = 1179482911; + } + } + IFC42.IfcStructuralConnection = IfcStructuralConnection; + class IfcStructuralCurveAction extends IfcStructuralAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.ProjectedOrTrue = ProjectedOrTrue; + this.PredefinedType = PredefinedType; + this.type = 1004757350; + } + } + IFC42.IfcStructuralCurveAction = IfcStructuralCurveAction; + class IfcStructuralCurveConnection extends IfcStructuralConnection { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition, Axis2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.Axis = Axis2; + this.type = 4243806635; + } + } + IFC42.IfcStructuralCurveConnection = IfcStructuralCurveConnection; + class IfcStructuralCurveMember extends IfcStructuralMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Axis2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.Axis = Axis2; + this.type = 214636428; + } + } + IFC42.IfcStructuralCurveMember = IfcStructuralCurveMember; + class IfcStructuralCurveMemberVarying extends IfcStructuralCurveMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Axis2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Axis2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.Axis = Axis2; + this.type = 2445595289; + } + } + IFC42.IfcStructuralCurveMemberVarying = IfcStructuralCurveMemberVarying; + class IfcStructuralCurveReaction extends IfcStructuralReaction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.PredefinedType = PredefinedType; + this.type = 2757150158; + } + } + IFC42.IfcStructuralCurveReaction = IfcStructuralCurveReaction; + class IfcStructuralLinearAction extends IfcStructuralCurveAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.ProjectedOrTrue = ProjectedOrTrue; + this.PredefinedType = PredefinedType; + this.type = 1807405624; + } + } + IFC42.IfcStructuralLinearAction = IfcStructuralLinearAction; + class IfcStructuralLoadGroup extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, ActionType, ActionSource, Coefficient, Purpose) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.ActionType = ActionType; + this.ActionSource = ActionSource; + this.Coefficient = Coefficient; + this.Purpose = Purpose; + this.type = 1252848954; + } + } + IFC42.IfcStructuralLoadGroup = IfcStructuralLoadGroup; + class IfcStructuralPointAction extends IfcStructuralAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.type = 2082059205; + } + } + IFC42.IfcStructuralPointAction = IfcStructuralPointAction; + class IfcStructuralPointConnection extends IfcStructuralConnection { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition, ConditionCoordinateSystem) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.ConditionCoordinateSystem = ConditionCoordinateSystem; + this.type = 734778138; + } + } + IFC42.IfcStructuralPointConnection = IfcStructuralPointConnection; + class IfcStructuralPointReaction extends IfcStructuralReaction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.type = 1235345126; + } + } + IFC42.IfcStructuralPointReaction = IfcStructuralPointReaction; + class IfcStructuralResultGroup extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TheoryType, ResultForLoadGroup, IsLinear) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TheoryType = TheoryType; + this.ResultForLoadGroup = ResultForLoadGroup; + this.IsLinear = IsLinear; + this.type = 2986769608; + } + } + IFC42.IfcStructuralResultGroup = IfcStructuralResultGroup; + class IfcStructuralSurfaceAction extends IfcStructuralAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.ProjectedOrTrue = ProjectedOrTrue; + this.PredefinedType = PredefinedType; + this.type = 3657597509; + } + } + IFC42.IfcStructuralSurfaceAction = IfcStructuralSurfaceAction; + class IfcStructuralSurfaceConnection extends IfcStructuralConnection { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.type = 1975003073; + } + } + IFC42.IfcStructuralSurfaceConnection = IfcStructuralSurfaceConnection; + class IfcSubContractResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 148013059; + } + } + IFC42.IfcSubContractResource = IfcSubContractResource; + class IfcSurfaceFeature extends IfcFeatureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3101698114; + } + } + IFC42.IfcSurfaceFeature = IfcSurfaceFeature; + class IfcSwitchingDeviceType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2315554128; + } + } + IFC42.IfcSwitchingDeviceType = IfcSwitchingDeviceType; + class IfcSystem extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 2254336722; + } + } + IFC42.IfcSystem = IfcSystem; + class IfcSystemFurnitureElement extends IfcFurnishingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 413509423; + } + } + IFC42.IfcSystemFurnitureElement = IfcSystemFurnitureElement; + class IfcTankType extends IfcFlowStorageDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 5716631; + } + } + IFC42.IfcTankType = IfcTankType; + class IfcTendon extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, PredefinedType, NominalDiameter, CrossSectionArea, TensionForce, PreStress, FrictionCoefficient, AnchorageSlip, MinCurvatureRadius) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.PredefinedType = PredefinedType; + this.NominalDiameter = NominalDiameter; + this.CrossSectionArea = CrossSectionArea; + this.TensionForce = TensionForce; + this.PreStress = PreStress; + this.FrictionCoefficient = FrictionCoefficient; + this.AnchorageSlip = AnchorageSlip; + this.MinCurvatureRadius = MinCurvatureRadius; + this.type = 3824725483; + } + } + IFC42.IfcTendon = IfcTendon; + class IfcTendonAnchor extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.PredefinedType = PredefinedType; + this.type = 2347447852; + } + } + IFC42.IfcTendonAnchor = IfcTendonAnchor; + class IfcTendonAnchorType extends IfcReinforcingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3081323446; + } + } + IFC42.IfcTendonAnchorType = IfcTendonAnchorType; + class IfcTendonType extends IfcReinforcingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, NominalDiameter, CrossSectionArea, SheathDiameter) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.NominalDiameter = NominalDiameter; + this.CrossSectionArea = CrossSectionArea; + this.SheathDiameter = SheathDiameter; + this.type = 2415094496; + } + } + IFC42.IfcTendonType = IfcTendonType; + class IfcTransformerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1692211062; + } + } + IFC42.IfcTransformerType = IfcTransformerType; + class IfcTransportElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1620046519; + } + } + IFC42.IfcTransportElement = IfcTransportElement; + class IfcTrimmedCurve extends IfcBoundedCurve { + constructor(BasisCurve, Trim1, Trim2, SenseAgreement, MasterRepresentation) { + super(); + this.BasisCurve = BasisCurve; + this.Trim1 = Trim1; + this.Trim2 = Trim2; + this.SenseAgreement = SenseAgreement; + this.MasterRepresentation = MasterRepresentation; + this.type = 3593883385; + } + } + IFC42.IfcTrimmedCurve = IfcTrimmedCurve; + class IfcTubeBundleType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1600972822; + } + } + IFC42.IfcTubeBundleType = IfcTubeBundleType; + class IfcUnitaryEquipmentType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1911125066; + } + } + IFC42.IfcUnitaryEquipmentType = IfcUnitaryEquipmentType; + class IfcValveType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 728799441; + } + } + IFC42.IfcValveType = IfcValveType; + class IfcVibrationIsolator extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2391383451; + } + } + IFC42.IfcVibrationIsolator = IfcVibrationIsolator; + class IfcVibrationIsolatorType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3313531582; + } + } + IFC42.IfcVibrationIsolatorType = IfcVibrationIsolatorType; + class IfcVirtualElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2769231204; + } + } + IFC42.IfcVirtualElement = IfcVirtualElement; + class IfcVoidingFeature extends IfcFeatureElementSubtraction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 926996030; + } + } + IFC42.IfcVoidingFeature = IfcVoidingFeature; + class IfcWallType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1898987631; + } + } + IFC42.IfcWallType = IfcWallType; + class IfcWasteTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1133259667; + } + } + IFC42.IfcWasteTerminalType = IfcWasteTerminalType; + class IfcWindowType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, PartitioningType, ParameterTakesPrecedence, UserDefinedPartitioningType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.PartitioningType = PartitioningType; + this.ParameterTakesPrecedence = ParameterTakesPrecedence; + this.UserDefinedPartitioningType = UserDefinedPartitioningType; + this.type = 4009809668; + } + } + IFC42.IfcWindowType = IfcWindowType; + class IfcWorkCalendar extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, WorkingTimes, ExceptionTimes, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.WorkingTimes = WorkingTimes; + this.ExceptionTimes = ExceptionTimes; + this.PredefinedType = PredefinedType; + this.type = 4088093105; + } + } + IFC42.IfcWorkCalendar = IfcWorkCalendar; + class IfcWorkControl extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.CreationDate = CreationDate; + this.Creators = Creators; + this.Purpose = Purpose; + this.Duration = Duration; + this.TotalFloat = TotalFloat; + this.StartTime = StartTime; + this.FinishTime = FinishTime; + this.type = 1028945134; + } + } + IFC42.IfcWorkControl = IfcWorkControl; + class IfcWorkPlan extends IfcWorkControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.CreationDate = CreationDate; + this.Creators = Creators; + this.Purpose = Purpose; + this.Duration = Duration; + this.TotalFloat = TotalFloat; + this.StartTime = StartTime; + this.FinishTime = FinishTime; + this.PredefinedType = PredefinedType; + this.type = 4218914973; + } + } + IFC42.IfcWorkPlan = IfcWorkPlan; + class IfcWorkSchedule extends IfcWorkControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.CreationDate = CreationDate; + this.Creators = Creators; + this.Purpose = Purpose; + this.Duration = Duration; + this.TotalFloat = TotalFloat; + this.StartTime = StartTime; + this.FinishTime = FinishTime; + this.PredefinedType = PredefinedType; + this.type = 3342526732; + } + } + IFC42.IfcWorkSchedule = IfcWorkSchedule; + class IfcZone extends IfcSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.type = 1033361043; + } + } + IFC42.IfcZone = IfcZone; + class IfcActionRequest extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, PredefinedType, Status, LongDescription) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.PredefinedType = PredefinedType; + this.Status = Status; + this.LongDescription = LongDescription; + this.type = 3821786052; + } + } + IFC42.IfcActionRequest = IfcActionRequest; + class IfcAirTerminalBoxType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1411407467; + } + } + IFC42.IfcAirTerminalBoxType = IfcAirTerminalBoxType; + class IfcAirTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3352864051; + } + } + IFC42.IfcAirTerminalType = IfcAirTerminalType; + class IfcAirToAirHeatRecoveryType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1871374353; + } + } + IFC42.IfcAirToAirHeatRecoveryType = IfcAirToAirHeatRecoveryType; + class IfcAsset extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, OriginalValue, CurrentValue, TotalReplacementCost, Owner, User, ResponsiblePerson, IncorporationDate, DepreciatedValue) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.OriginalValue = OriginalValue; + this.CurrentValue = CurrentValue; + this.TotalReplacementCost = TotalReplacementCost; + this.Owner = Owner; + this.User = User; + this.ResponsiblePerson = ResponsiblePerson; + this.IncorporationDate = IncorporationDate; + this.DepreciatedValue = DepreciatedValue; + this.type = 3460190687; + } + } + IFC42.IfcAsset = IfcAsset; + class IfcAudioVisualApplianceType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1532957894; + } + } + IFC42.IfcAudioVisualApplianceType = IfcAudioVisualApplianceType; + class IfcBSplineCurve extends IfcBoundedCurve { + constructor(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect) { + super(); + this.Degree = Degree; + this.ControlPointsList = ControlPointsList; + this.CurveForm = CurveForm; + this.ClosedCurve = ClosedCurve; + this.SelfIntersect = SelfIntersect; + this.type = 1967976161; + } + } + IFC42.IfcBSplineCurve = IfcBSplineCurve; + class IfcBSplineCurveWithKnots extends IfcBSplineCurve { + constructor(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect, KnotMultiplicities, Knots, KnotSpec) { + super(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect); + this.Degree = Degree; + this.ControlPointsList = ControlPointsList; + this.CurveForm = CurveForm; + this.ClosedCurve = ClosedCurve; + this.SelfIntersect = SelfIntersect; + this.KnotMultiplicities = KnotMultiplicities; + this.Knots = Knots; + this.KnotSpec = KnotSpec; + this.type = 2461110595; + } + } + IFC42.IfcBSplineCurveWithKnots = IfcBSplineCurveWithKnots; + class IfcBeamType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 819618141; + } + } + IFC42.IfcBeamType = IfcBeamType; + class IfcBoilerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 231477066; + } + } + IFC42.IfcBoilerType = IfcBoilerType; + class IfcBoundaryCurve extends IfcCompositeCurveOnSurface { + constructor(Segments, SelfIntersect) { + super(Segments, SelfIntersect); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 1136057603; + } + } + IFC42.IfcBoundaryCurve = IfcBoundaryCurve; + class IfcBuildingElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3299480353; + } + } + IFC42.IfcBuildingElement = IfcBuildingElement; + class IfcBuildingElementPart extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2979338954; + } + } + IFC42.IfcBuildingElementPart = IfcBuildingElementPart; + class IfcBuildingElementPartType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 39481116; + } + } + IFC42.IfcBuildingElementPartType = IfcBuildingElementPartType; + class IfcBuildingElementProxy extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1095909175; + } + } + IFC42.IfcBuildingElementProxy = IfcBuildingElementProxy; + class IfcBuildingElementProxyType extends IfcBuildingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1909888760; + } + } + IFC42.IfcBuildingElementProxyType = IfcBuildingElementProxyType; + class IfcBuildingSystem extends IfcSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.LongName = LongName; + this.type = 1177604601; + } + } + IFC42.IfcBuildingSystem = IfcBuildingSystem; + class IfcBurnerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2188180465; + } + } + IFC42.IfcBurnerType = IfcBurnerType; + class IfcCableCarrierFittingType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 395041908; + } + } + IFC42.IfcCableCarrierFittingType = IfcCableCarrierFittingType; + class IfcCableCarrierSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3293546465; + } + } + IFC42.IfcCableCarrierSegmentType = IfcCableCarrierSegmentType; + class IfcCableFittingType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2674252688; + } + } + IFC42.IfcCableFittingType = IfcCableFittingType; + class IfcCableSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1285652485; + } + } + IFC42.IfcCableSegmentType = IfcCableSegmentType; + class IfcChillerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2951183804; + } + } + IFC42.IfcChillerType = IfcChillerType; + class IfcChimney extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3296154744; + } + } + IFC42.IfcChimney = IfcChimney; + class IfcCircle extends IfcConic { + constructor(Position, Radius) { + super(Position); + this.Position = Position; + this.Radius = Radius; + this.type = 2611217952; + } + } + IFC42.IfcCircle = IfcCircle; + class IfcCivilElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1677625105; + } + } + IFC42.IfcCivilElement = IfcCivilElement; + class IfcCoilType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2301859152; + } + } + IFC42.IfcCoilType = IfcCoilType; + class IfcColumn extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 843113511; + } + } + IFC42.IfcColumn = IfcColumn; + class IfcColumnStandardCase extends IfcColumn { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 905975707; + } + } + IFC42.IfcColumnStandardCase = IfcColumnStandardCase; + class IfcCommunicationsApplianceType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 400855858; + } + } + IFC42.IfcCommunicationsApplianceType = IfcCommunicationsApplianceType; + class IfcCompressorType extends IfcFlowMovingDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3850581409; + } + } + IFC42.IfcCompressorType = IfcCompressorType; + class IfcCondenserType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2816379211; + } + } + IFC42.IfcCondenserType = IfcCondenserType; + class IfcConstructionEquipmentResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 3898045240; + } + } + IFC42.IfcConstructionEquipmentResource = IfcConstructionEquipmentResource; + class IfcConstructionMaterialResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 1060000209; + } + } + IFC42.IfcConstructionMaterialResource = IfcConstructionMaterialResource; + class IfcConstructionProductResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 488727124; + } + } + IFC42.IfcConstructionProductResource = IfcConstructionProductResource; + class IfcCooledBeamType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 335055490; + } + } + IFC42.IfcCooledBeamType = IfcCooledBeamType; + class IfcCoolingTowerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2954562838; + } + } + IFC42.IfcCoolingTowerType = IfcCoolingTowerType; + class IfcCovering extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1973544240; + } + } + IFC42.IfcCovering = IfcCovering; + class IfcCurtainWall extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3495092785; + } + } + IFC42.IfcCurtainWall = IfcCurtainWall; + class IfcDamperType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3961806047; + } + } + IFC42.IfcDamperType = IfcDamperType; + class IfcDiscreteAccessory extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1335981549; + } + } + IFC42.IfcDiscreteAccessory = IfcDiscreteAccessory; + class IfcDiscreteAccessoryType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2635815018; + } + } + IFC42.IfcDiscreteAccessoryType = IfcDiscreteAccessoryType; + class IfcDistributionChamberElementType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1599208980; + } + } + IFC42.IfcDistributionChamberElementType = IfcDistributionChamberElementType; + class IfcDistributionControlElementType extends IfcDistributionElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2063403501; + } + } + IFC42.IfcDistributionControlElementType = IfcDistributionControlElementType; + class IfcDistributionElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1945004755; + } + } + IFC42.IfcDistributionElement = IfcDistributionElement; + class IfcDistributionFlowElement extends IfcDistributionElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3040386961; + } + } + IFC42.IfcDistributionFlowElement = IfcDistributionFlowElement; + class IfcDistributionPort extends IfcPort { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, FlowDirection, PredefinedType, SystemType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.FlowDirection = FlowDirection; + this.PredefinedType = PredefinedType; + this.SystemType = SystemType; + this.type = 3041715199; + } + } + IFC42.IfcDistributionPort = IfcDistributionPort; + class IfcDistributionSystem extends IfcSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.PredefinedType = PredefinedType; + this.type = 3205830791; + } + } + IFC42.IfcDistributionSystem = IfcDistributionSystem; + class IfcDoor extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, OverallHeight, OverallWidth, PredefinedType, OperationType, UserDefinedOperationType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.OverallHeight = OverallHeight; + this.OverallWidth = OverallWidth; + this.PredefinedType = PredefinedType; + this.OperationType = OperationType; + this.UserDefinedOperationType = UserDefinedOperationType; + this.type = 395920057; + } + } + IFC42.IfcDoor = IfcDoor; + class IfcDoorStandardCase extends IfcDoor { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, OverallHeight, OverallWidth, PredefinedType, OperationType, UserDefinedOperationType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, OverallHeight, OverallWidth, PredefinedType, OperationType, UserDefinedOperationType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.OverallHeight = OverallHeight; + this.OverallWidth = OverallWidth; + this.PredefinedType = PredefinedType; + this.OperationType = OperationType; + this.UserDefinedOperationType = UserDefinedOperationType; + this.type = 3242481149; + } + } + IFC42.IfcDoorStandardCase = IfcDoorStandardCase; + class IfcDuctFittingType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 869906466; + } + } + IFC42.IfcDuctFittingType = IfcDuctFittingType; + class IfcDuctSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3760055223; + } + } + IFC42.IfcDuctSegmentType = IfcDuctSegmentType; + class IfcDuctSilencerType extends IfcFlowTreatmentDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2030761528; + } + } + IFC42.IfcDuctSilencerType = IfcDuctSilencerType; + class IfcElectricApplianceType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 663422040; + } + } + IFC42.IfcElectricApplianceType = IfcElectricApplianceType; + class IfcElectricDistributionBoardType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2417008758; + } + } + IFC42.IfcElectricDistributionBoardType = IfcElectricDistributionBoardType; + class IfcElectricFlowStorageDeviceType extends IfcFlowStorageDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3277789161; + } + } + IFC42.IfcElectricFlowStorageDeviceType = IfcElectricFlowStorageDeviceType; + class IfcElectricGeneratorType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1534661035; + } + } + IFC42.IfcElectricGeneratorType = IfcElectricGeneratorType; + class IfcElectricMotorType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1217240411; + } + } + IFC42.IfcElectricMotorType = IfcElectricMotorType; + class IfcElectricTimeControlType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 712377611; + } + } + IFC42.IfcElectricTimeControlType = IfcElectricTimeControlType; + class IfcEnergyConversionDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1658829314; + } + } + IFC42.IfcEnergyConversionDevice = IfcEnergyConversionDevice; + class IfcEngine extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2814081492; + } + } + IFC42.IfcEngine = IfcEngine; + class IfcEvaporativeCooler extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3747195512; + } + } + IFC42.IfcEvaporativeCooler = IfcEvaporativeCooler; + class IfcEvaporator extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 484807127; + } + } + IFC42.IfcEvaporator = IfcEvaporator; + class IfcExternalSpatialElement extends IfcExternalSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.PredefinedType = PredefinedType; + this.type = 1209101575; + } + } + IFC42.IfcExternalSpatialElement = IfcExternalSpatialElement; + class IfcFanType extends IfcFlowMovingDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 346874300; + } + } + IFC42.IfcFanType = IfcFanType; + class IfcFilterType extends IfcFlowTreatmentDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1810631287; + } + } + IFC42.IfcFilterType = IfcFilterType; + class IfcFireSuppressionTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4222183408; + } + } + IFC42.IfcFireSuppressionTerminalType = IfcFireSuppressionTerminalType; + class IfcFlowController extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2058353004; + } + } + IFC42.IfcFlowController = IfcFlowController; + class IfcFlowFitting extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 4278956645; + } + } + IFC42.IfcFlowFitting = IfcFlowFitting; + class IfcFlowInstrumentType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4037862832; + } + } + IFC42.IfcFlowInstrumentType = IfcFlowInstrumentType; + class IfcFlowMeter extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2188021234; + } + } + IFC42.IfcFlowMeter = IfcFlowMeter; + class IfcFlowMovingDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3132237377; + } + } + IFC42.IfcFlowMovingDevice = IfcFlowMovingDevice; + class IfcFlowSegment extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 987401354; + } + } + IFC42.IfcFlowSegment = IfcFlowSegment; + class IfcFlowStorageDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 707683696; + } + } + IFC42.IfcFlowStorageDevice = IfcFlowStorageDevice; + class IfcFlowTerminal extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2223149337; + } + } + IFC42.IfcFlowTerminal = IfcFlowTerminal; + class IfcFlowTreatmentDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3508470533; + } + } + IFC42.IfcFlowTreatmentDevice = IfcFlowTreatmentDevice; + class IfcFooting extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 900683007; + } + } + IFC42.IfcFooting = IfcFooting; + class IfcHeatExchanger extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3319311131; + } + } + IFC42.IfcHeatExchanger = IfcHeatExchanger; + class IfcHumidifier extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2068733104; + } + } + IFC42.IfcHumidifier = IfcHumidifier; + class IfcInterceptor extends IfcFlowTreatmentDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4175244083; + } + } + IFC42.IfcInterceptor = IfcInterceptor; + class IfcJunctionBox extends IfcFlowFitting { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2176052936; + } + } + IFC42.IfcJunctionBox = IfcJunctionBox; + class IfcLamp extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 76236018; + } + } + IFC42.IfcLamp = IfcLamp; + class IfcLightFixture extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 629592764; + } + } + IFC42.IfcLightFixture = IfcLightFixture; + class IfcMedicalDevice extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1437502449; + } + } + IFC42.IfcMedicalDevice = IfcMedicalDevice; + class IfcMember extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1073191201; + } + } + IFC42.IfcMember = IfcMember; + class IfcMemberStandardCase extends IfcMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1911478936; + } + } + IFC42.IfcMemberStandardCase = IfcMemberStandardCase; + class IfcMotorConnection extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2474470126; + } + } + IFC42.IfcMotorConnection = IfcMotorConnection; + class IfcOuterBoundaryCurve extends IfcBoundaryCurve { + constructor(Segments, SelfIntersect) { + super(Segments, SelfIntersect); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 144952367; + } + } + IFC42.IfcOuterBoundaryCurve = IfcOuterBoundaryCurve; + class IfcOutlet extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3694346114; + } + } + IFC42.IfcOutlet = IfcOutlet; + class IfcPile extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType, ConstructionType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.ConstructionType = ConstructionType; + this.type = 1687234759; + } + } + IFC42.IfcPile = IfcPile; + class IfcPipeFitting extends IfcFlowFitting { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 310824031; + } + } + IFC42.IfcPipeFitting = IfcPipeFitting; + class IfcPipeSegment extends IfcFlowSegment { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3612865200; + } + } + IFC42.IfcPipeSegment = IfcPipeSegment; + class IfcPlate extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3171933400; + } + } + IFC42.IfcPlate = IfcPlate; + class IfcPlateStandardCase extends IfcPlate { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1156407060; + } + } + IFC42.IfcPlateStandardCase = IfcPlateStandardCase; + class IfcProtectiveDevice extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 738039164; + } + } + IFC42.IfcProtectiveDevice = IfcProtectiveDevice; + class IfcProtectiveDeviceTrippingUnitType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 655969474; + } + } + IFC42.IfcProtectiveDeviceTrippingUnitType = IfcProtectiveDeviceTrippingUnitType; + class IfcPump extends IfcFlowMovingDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 90941305; + } + } + IFC42.IfcPump = IfcPump; + class IfcRailing extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2262370178; + } + } + IFC42.IfcRailing = IfcRailing; + class IfcRamp extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3024970846; + } + } + IFC42.IfcRamp = IfcRamp; + class IfcRampFlight extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3283111854; + } + } + IFC42.IfcRampFlight = IfcRampFlight; + class IfcRationalBSplineCurveWithKnots extends IfcBSplineCurveWithKnots { + constructor(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect, KnotMultiplicities, Knots, KnotSpec, WeightsData) { + super(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect, KnotMultiplicities, Knots, KnotSpec); + this.Degree = Degree; + this.ControlPointsList = ControlPointsList; + this.CurveForm = CurveForm; + this.ClosedCurve = ClosedCurve; + this.SelfIntersect = SelfIntersect; + this.KnotMultiplicities = KnotMultiplicities; + this.Knots = Knots; + this.KnotSpec = KnotSpec; + this.WeightsData = WeightsData; + this.type = 1232101972; + } + } + IFC42.IfcRationalBSplineCurveWithKnots = IfcRationalBSplineCurveWithKnots; + class IfcReinforcingBar extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, NominalDiameter, CrossSectionArea, BarLength, PredefinedType, BarSurface) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.NominalDiameter = NominalDiameter; + this.CrossSectionArea = CrossSectionArea; + this.BarLength = BarLength; + this.PredefinedType = PredefinedType; + this.BarSurface = BarSurface; + this.type = 979691226; + } + } + IFC42.IfcReinforcingBar = IfcReinforcingBar; + class IfcReinforcingBarType extends IfcReinforcingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, NominalDiameter, CrossSectionArea, BarLength, BarSurface, BendingShapeCode, BendingParameters) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.NominalDiameter = NominalDiameter; + this.CrossSectionArea = CrossSectionArea; + this.BarLength = BarLength; + this.BarSurface = BarSurface; + this.BendingShapeCode = BendingShapeCode; + this.BendingParameters = BendingParameters; + this.type = 2572171363; + } + } + IFC42.IfcReinforcingBarType = IfcReinforcingBarType; + class IfcRoof extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2016517767; + } + } + IFC42.IfcRoof = IfcRoof; + class IfcSanitaryTerminal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3053780830; + } + } + IFC42.IfcSanitaryTerminal = IfcSanitaryTerminal; + class IfcSensorType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1783015770; + } + } + IFC42.IfcSensorType = IfcSensorType; + class IfcShadingDevice extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1329646415; + } + } + IFC42.IfcShadingDevice = IfcShadingDevice; + class IfcSlab extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1529196076; + } + } + IFC42.IfcSlab = IfcSlab; + class IfcSlabElementedCase extends IfcSlab { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3127900445; + } + } + IFC42.IfcSlabElementedCase = IfcSlabElementedCase; + class IfcSlabStandardCase extends IfcSlab { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3027962421; + } + } + IFC42.IfcSlabStandardCase = IfcSlabStandardCase; + class IfcSolarDevice extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3420628829; + } + } + IFC42.IfcSolarDevice = IfcSolarDevice; + class IfcSpaceHeater extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1999602285; + } + } + IFC42.IfcSpaceHeater = IfcSpaceHeater; + class IfcStackTerminal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1404847402; + } + } + IFC42.IfcStackTerminal = IfcStackTerminal; + class IfcStair extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 331165859; + } + } + IFC42.IfcStair = IfcStair; + class IfcStairFlight extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, NumberOfRisers, NumberOfTreads, RiserHeight, TreadLength, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.NumberOfRisers = NumberOfRisers; + this.NumberOfTreads = NumberOfTreads; + this.RiserHeight = RiserHeight; + this.TreadLength = TreadLength; + this.PredefinedType = PredefinedType; + this.type = 4252922144; + } + } + IFC42.IfcStairFlight = IfcStairFlight; + class IfcStructuralAnalysisModel extends IfcSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, OrientationOf2DPlane, LoadedBy, HasResults, SharedPlacement) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.OrientationOf2DPlane = OrientationOf2DPlane; + this.LoadedBy = LoadedBy; + this.HasResults = HasResults; + this.SharedPlacement = SharedPlacement; + this.type = 2515109513; + } + } + IFC42.IfcStructuralAnalysisModel = IfcStructuralAnalysisModel; + class IfcStructuralLoadCase extends IfcStructuralLoadGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, ActionType, ActionSource, Coefficient, Purpose, SelfWeightCoefficients) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, ActionType, ActionSource, Coefficient, Purpose); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.ActionType = ActionType; + this.ActionSource = ActionSource; + this.Coefficient = Coefficient; + this.Purpose = Purpose; + this.SelfWeightCoefficients = SelfWeightCoefficients; + this.type = 385403989; + } + } + IFC42.IfcStructuralLoadCase = IfcStructuralLoadCase; + class IfcStructuralPlanarAction extends IfcStructuralSurfaceAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.ProjectedOrTrue = ProjectedOrTrue; + this.PredefinedType = PredefinedType; + this.type = 1621171031; + } + } + IFC42.IfcStructuralPlanarAction = IfcStructuralPlanarAction; + class IfcSwitchingDevice extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1162798199; + } + } + IFC42.IfcSwitchingDevice = IfcSwitchingDevice; + class IfcTank extends IfcFlowStorageDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 812556717; + } + } + IFC42.IfcTank = IfcTank; + class IfcTransformer extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3825984169; + } + } + IFC42.IfcTransformer = IfcTransformer; + class IfcTubeBundle extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3026737570; + } + } + IFC42.IfcTubeBundle = IfcTubeBundle; + class IfcUnitaryControlElementType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3179687236; + } + } + IFC42.IfcUnitaryControlElementType = IfcUnitaryControlElementType; + class IfcUnitaryEquipment extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4292641817; + } + } + IFC42.IfcUnitaryEquipment = IfcUnitaryEquipment; + class IfcValve extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4207607924; + } + } + IFC42.IfcValve = IfcValve; + class IfcWall extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2391406946; + } + } + IFC42.IfcWall = IfcWall; + class IfcWallElementedCase extends IfcWall { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4156078855; + } + } + IFC42.IfcWallElementedCase = IfcWallElementedCase; + class IfcWallStandardCase extends IfcWall { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3512223829; + } + } + IFC42.IfcWallStandardCase = IfcWallStandardCase; + class IfcWasteTerminal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4237592921; + } + } + IFC42.IfcWasteTerminal = IfcWasteTerminal; + class IfcWindow extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, OverallHeight, OverallWidth, PredefinedType, PartitioningType, UserDefinedPartitioningType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.OverallHeight = OverallHeight; + this.OverallWidth = OverallWidth; + this.PredefinedType = PredefinedType; + this.PartitioningType = PartitioningType; + this.UserDefinedPartitioningType = UserDefinedPartitioningType; + this.type = 3304561284; + } + } + IFC42.IfcWindow = IfcWindow; + class IfcWindowStandardCase extends IfcWindow { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, OverallHeight, OverallWidth, PredefinedType, PartitioningType, UserDefinedPartitioningType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, OverallHeight, OverallWidth, PredefinedType, PartitioningType, UserDefinedPartitioningType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.OverallHeight = OverallHeight; + this.OverallWidth = OverallWidth; + this.PredefinedType = PredefinedType; + this.PartitioningType = PartitioningType; + this.UserDefinedPartitioningType = UserDefinedPartitioningType; + this.type = 486154966; + } + } + IFC42.IfcWindowStandardCase = IfcWindowStandardCase; + class IfcActuatorType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2874132201; + } + } + IFC42.IfcActuatorType = IfcActuatorType; + class IfcAirTerminal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1634111441; + } + } + IFC42.IfcAirTerminal = IfcAirTerminal; + class IfcAirTerminalBox extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 177149247; + } + } + IFC42.IfcAirTerminalBox = IfcAirTerminalBox; + class IfcAirToAirHeatRecovery extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2056796094; + } + } + IFC42.IfcAirToAirHeatRecovery = IfcAirToAirHeatRecovery; + class IfcAlarmType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3001207471; + } + } + IFC42.IfcAlarmType = IfcAlarmType; + class IfcAudioVisualAppliance extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 277319702; + } + } + IFC42.IfcAudioVisualAppliance = IfcAudioVisualAppliance; + class IfcBeam extends IfcBuildingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 753842376; + } + } + IFC42.IfcBeam = IfcBeam; + class IfcBeamStandardCase extends IfcBeam { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2906023776; + } + } + IFC42.IfcBeamStandardCase = IfcBeamStandardCase; + class IfcBoiler extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 32344328; + } + } + IFC42.IfcBoiler = IfcBoiler; + class IfcBurner extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2938176219; + } + } + IFC42.IfcBurner = IfcBurner; + class IfcCableCarrierFitting extends IfcFlowFitting { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 635142910; + } + } + IFC42.IfcCableCarrierFitting = IfcCableCarrierFitting; + class IfcCableCarrierSegment extends IfcFlowSegment { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3758799889; + } + } + IFC42.IfcCableCarrierSegment = IfcCableCarrierSegment; + class IfcCableFitting extends IfcFlowFitting { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1051757585; + } + } + IFC42.IfcCableFitting = IfcCableFitting; + class IfcCableSegment extends IfcFlowSegment { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4217484030; + } + } + IFC42.IfcCableSegment = IfcCableSegment; + class IfcChiller extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3902619387; + } + } + IFC42.IfcChiller = IfcChiller; + class IfcCoil extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 639361253; + } + } + IFC42.IfcCoil = IfcCoil; + class IfcCommunicationsAppliance extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3221913625; + } + } + IFC42.IfcCommunicationsAppliance = IfcCommunicationsAppliance; + class IfcCompressor extends IfcFlowMovingDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3571504051; + } + } + IFC42.IfcCompressor = IfcCompressor; + class IfcCondenser extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2272882330; + } + } + IFC42.IfcCondenser = IfcCondenser; + class IfcControllerType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 578613899; + } + } + IFC42.IfcControllerType = IfcControllerType; + class IfcCooledBeam extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4136498852; + } + } + IFC42.IfcCooledBeam = IfcCooledBeam; + class IfcCoolingTower extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3640358203; + } + } + IFC42.IfcCoolingTower = IfcCoolingTower; + class IfcDamper extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4074379575; + } + } + IFC42.IfcDamper = IfcDamper; + class IfcDistributionChamberElement extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1052013943; + } + } + IFC42.IfcDistributionChamberElement = IfcDistributionChamberElement; + class IfcDistributionCircuit extends IfcDistributionSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.PredefinedType = PredefinedType; + this.type = 562808652; + } + } + IFC42.IfcDistributionCircuit = IfcDistributionCircuit; + class IfcDistributionControlElement extends IfcDistributionElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1062813311; + } + } + IFC42.IfcDistributionControlElement = IfcDistributionControlElement; + class IfcDuctFitting extends IfcFlowFitting { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 342316401; + } + } + IFC42.IfcDuctFitting = IfcDuctFitting; + class IfcDuctSegment extends IfcFlowSegment { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3518393246; + } + } + IFC42.IfcDuctSegment = IfcDuctSegment; + class IfcDuctSilencer extends IfcFlowTreatmentDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1360408905; + } + } + IFC42.IfcDuctSilencer = IfcDuctSilencer; + class IfcElectricAppliance extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1904799276; + } + } + IFC42.IfcElectricAppliance = IfcElectricAppliance; + class IfcElectricDistributionBoard extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 862014818; + } + } + IFC42.IfcElectricDistributionBoard = IfcElectricDistributionBoard; + class IfcElectricFlowStorageDevice extends IfcFlowStorageDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3310460725; + } + } + IFC42.IfcElectricFlowStorageDevice = IfcElectricFlowStorageDevice; + class IfcElectricGenerator extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 264262732; + } + } + IFC42.IfcElectricGenerator = IfcElectricGenerator; + class IfcElectricMotor extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 402227799; + } + } + IFC42.IfcElectricMotor = IfcElectricMotor; + class IfcElectricTimeControl extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1003880860; + } + } + IFC42.IfcElectricTimeControl = IfcElectricTimeControl; + class IfcFan extends IfcFlowMovingDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3415622556; + } + } + IFC42.IfcFan = IfcFan; + class IfcFilter extends IfcFlowTreatmentDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 819412036; + } + } + IFC42.IfcFilter = IfcFilter; + class IfcFireSuppressionTerminal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1426591983; + } + } + IFC42.IfcFireSuppressionTerminal = IfcFireSuppressionTerminal; + class IfcFlowInstrument extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 182646315; + } + } + IFC42.IfcFlowInstrument = IfcFlowInstrument; + class IfcProtectiveDeviceTrippingUnit extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2295281155; + } + } + IFC42.IfcProtectiveDeviceTrippingUnit = IfcProtectiveDeviceTrippingUnit; + class IfcSensor extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4086658281; + } + } + IFC42.IfcSensor = IfcSensor; + class IfcUnitaryControlElement extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 630975310; + } + } + IFC42.IfcUnitaryControlElement = IfcUnitaryControlElement; + class IfcActuator extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4288193352; + } + } + IFC42.IfcActuator = IfcActuator; + class IfcAlarm extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3087945054; + } + } + IFC42.IfcAlarm = IfcAlarm; + class IfcController extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 25142252; + } + } + IFC42.IfcController = IfcController; +})(IFC4 || (IFC4 = {})); +TypeInitialisers[3] = { + 3699917729: (v) => new IFC4X3.IfcAbsorbedDoseMeasure(v), + 4182062534: (v) => new IFC4X3.IfcAccelerationMeasure(v), + 360377573: (v) => new IFC4X3.IfcAmountOfSubstanceMeasure(v), + 632304761: (v) => new IFC4X3.IfcAngularVelocityMeasure(v), + 3683503648: (v) => new IFC4X3.IfcArcIndex(v.map((x) => x.value)), + 1500781891: (v) => new IFC4X3.IfcAreaDensityMeasure(v), + 2650437152: (v) => new IFC4X3.IfcAreaMeasure(v), + 2314439260: (v) => new IFC4X3.IfcBinary(v), + 2735952531: (v) => new IFC4X3.IfcBoolean(v), + 1867003952: (v) => new IFC4X3.IfcBoxAlignment(v), + 1683019596: (v) => new IFC4X3.IfcCardinalPointReference(v), + 2991860651: (v) => new IFC4X3.IfcComplexNumber(v.map((x) => x.value)), + 3812528620: (v) => new IFC4X3.IfcCompoundPlaneAngleMeasure(v.map((x) => x.value)), + 3238673880: (v) => new IFC4X3.IfcContextDependentMeasure(v), + 1778710042: (v) => new IFC4X3.IfcCountMeasure(v), + 94842927: (v) => new IFC4X3.IfcCurvatureMeasure(v), + 937566702: (v) => new IFC4X3.IfcDate(v), + 2195413836: (v) => new IFC4X3.IfcDateTime(v), + 86635668: (v) => new IFC4X3.IfcDayInMonthNumber(v), + 3701338814: (v) => new IFC4X3.IfcDayInWeekNumber(v), + 1514641115: (v) => new IFC4X3.IfcDescriptiveMeasure(v), + 4134073009: (v) => new IFC4X3.IfcDimensionCount(v), + 524656162: (v) => new IFC4X3.IfcDoseEquivalentMeasure(v), + 2541165894: (v) => new IFC4X3.IfcDuration(v), + 69416015: (v) => new IFC4X3.IfcDynamicViscosityMeasure(v), + 1827137117: (v) => new IFC4X3.IfcElectricCapacitanceMeasure(v), + 3818826038: (v) => new IFC4X3.IfcElectricChargeMeasure(v), + 2093906313: (v) => new IFC4X3.IfcElectricConductanceMeasure(v), + 3790457270: (v) => new IFC4X3.IfcElectricCurrentMeasure(v), + 2951915441: (v) => new IFC4X3.IfcElectricResistanceMeasure(v), + 2506197118: (v) => new IFC4X3.IfcElectricVoltageMeasure(v), + 2078135608: (v) => new IFC4X3.IfcEnergyMeasure(v), + 1102727119: (v) => new IFC4X3.IfcFontStyle(v), + 2715512545: (v) => new IFC4X3.IfcFontVariant(v), + 2590844177: (v) => new IFC4X3.IfcFontWeight(v), + 1361398929: (v) => new IFC4X3.IfcForceMeasure(v), + 3044325142: (v) => new IFC4X3.IfcFrequencyMeasure(v), + 3064340077: (v) => new IFC4X3.IfcGloballyUniqueId(v), + 3113092358: (v) => new IFC4X3.IfcHeatFluxDensityMeasure(v), + 1158859006: (v) => new IFC4X3.IfcHeatingValueMeasure(v), + 983778844: (v) => new IFC4X3.IfcIdentifier(v), + 3358199106: (v) => new IFC4X3.IfcIlluminanceMeasure(v), + 2679005408: (v) => new IFC4X3.IfcInductanceMeasure(v), + 1939436016: (v) => new IFC4X3.IfcInteger(v), + 3809634241: (v) => new IFC4X3.IfcIntegerCountRateMeasure(v), + 3686016028: (v) => new IFC4X3.IfcIonConcentrationMeasure(v), + 3192672207: (v) => new IFC4X3.IfcIsothermalMoistureCapacityMeasure(v), + 2054016361: (v) => new IFC4X3.IfcKinematicViscosityMeasure(v), + 3258342251: (v) => new IFC4X3.IfcLabel(v), + 1275358634: (v) => new IFC4X3.IfcLanguageId(v), + 1243674935: (v) => new IFC4X3.IfcLengthMeasure(v), + 1774176899: (v) => new IFC4X3.IfcLineIndex(v.map((x) => x.value)), + 191860431: (v) => new IFC4X3.IfcLinearForceMeasure(v), + 2128979029: (v) => new IFC4X3.IfcLinearMomentMeasure(v), + 1307019551: (v) => new IFC4X3.IfcLinearStiffnessMeasure(v), + 3086160713: (v) => new IFC4X3.IfcLinearVelocityMeasure(v), + 503418787: (v) => new IFC4X3.IfcLogical(v), + 2095003142: (v) => new IFC4X3.IfcLuminousFluxMeasure(v), + 2755797622: (v) => new IFC4X3.IfcLuminousIntensityDistributionMeasure(v), + 151039812: (v) => new IFC4X3.IfcLuminousIntensityMeasure(v), + 286949696: (v) => new IFC4X3.IfcMagneticFluxDensityMeasure(v), + 2486716878: (v) => new IFC4X3.IfcMagneticFluxMeasure(v), + 1477762836: (v) => new IFC4X3.IfcMassDensityMeasure(v), + 4017473158: (v) => new IFC4X3.IfcMassFlowRateMeasure(v), + 3124614049: (v) => new IFC4X3.IfcMassMeasure(v), + 3531705166: (v) => new IFC4X3.IfcMassPerLengthMeasure(v), + 3341486342: (v) => new IFC4X3.IfcModulusOfElasticityMeasure(v), + 2173214787: (v) => new IFC4X3.IfcModulusOfLinearSubgradeReactionMeasure(v), + 1052454078: (v) => new IFC4X3.IfcModulusOfRotationalSubgradeReactionMeasure(v), + 1753493141: (v) => new IFC4X3.IfcModulusOfSubgradeReactionMeasure(v), + 3177669450: (v) => new IFC4X3.IfcMoistureDiffusivityMeasure(v), + 1648970520: (v) => new IFC4X3.IfcMolecularWeightMeasure(v), + 3114022597: (v) => new IFC4X3.IfcMomentOfInertiaMeasure(v), + 2615040989: (v) => new IFC4X3.IfcMonetaryMeasure(v), + 765770214: (v) => new IFC4X3.IfcMonthInYearNumber(v), + 525895558: (v) => new IFC4X3.IfcNonNegativeLengthMeasure(v), + 2095195183: (v) => new IFC4X3.IfcNormalisedRatioMeasure(v), + 2395907400: (v) => new IFC4X3.IfcNumericMeasure(v), + 929793134: (v) => new IFC4X3.IfcPHMeasure(v), + 2260317790: (v) => new IFC4X3.IfcParameterValue(v), + 2642773653: (v) => new IFC4X3.IfcPlanarForceMeasure(v), + 4042175685: (v) => new IFC4X3.IfcPlaneAngleMeasure(v), + 1790229001: (v) => new IFC4X3.IfcPositiveInteger(v), + 2815919920: (v) => new IFC4X3.IfcPositiveLengthMeasure(v), + 3054510233: (v) => new IFC4X3.IfcPositivePlaneAngleMeasure(v), + 1245737093: (v) => new IFC4X3.IfcPositiveRatioMeasure(v), + 1364037233: (v) => new IFC4X3.IfcPowerMeasure(v), + 2169031380: (v) => new IFC4X3.IfcPresentableText(v), + 3665567075: (v) => new IFC4X3.IfcPressureMeasure(v), + 2798247006: (v) => new IFC4X3.IfcPropertySetDefinitionSet(v.map((x) => x.value)), + 3972513137: (v) => new IFC4X3.IfcRadioActivityMeasure(v), + 96294661: (v) => new IFC4X3.IfcRatioMeasure(v), + 200335297: (v) => new IFC4X3.IfcReal(v), + 2133746277: (v) => new IFC4X3.IfcRotationalFrequencyMeasure(v), + 1755127002: (v) => new IFC4X3.IfcRotationalMassMeasure(v), + 3211557302: (v) => new IFC4X3.IfcRotationalStiffnessMeasure(v), + 3467162246: (v) => new IFC4X3.IfcSectionModulusMeasure(v), + 2190458107: (v) => new IFC4X3.IfcSectionalAreaIntegralMeasure(v), + 408310005: (v) => new IFC4X3.IfcShearModulusMeasure(v), + 3471399674: (v) => new IFC4X3.IfcSolidAngleMeasure(v), + 4157543285: (v) => new IFC4X3.IfcSoundPowerLevelMeasure(v), + 846465480: (v) => new IFC4X3.IfcSoundPowerMeasure(v), + 3457685358: (v) => new IFC4X3.IfcSoundPressureLevelMeasure(v), + 993287707: (v) => new IFC4X3.IfcSoundPressureMeasure(v), + 3477203348: (v) => new IFC4X3.IfcSpecificHeatCapacityMeasure(v), + 2757832317: (v) => new IFC4X3.IfcSpecularExponent(v), + 361837227: (v) => new IFC4X3.IfcSpecularRoughness(v), + 1805707277: (v) => new IFC4X3.IfcStrippedOptional(v), + 58845555: (v) => new IFC4X3.IfcTemperatureGradientMeasure(v), + 1209108979: (v) => new IFC4X3.IfcTemperatureRateOfChangeMeasure(v), + 2801250643: (v) => new IFC4X3.IfcText(v), + 1460886941: (v) => new IFC4X3.IfcTextAlignment(v), + 3490877962: (v) => new IFC4X3.IfcTextDecoration(v), + 603696268: (v) => new IFC4X3.IfcTextFontName(v), + 296282323: (v) => new IFC4X3.IfcTextTransformation(v), + 232962298: (v) => new IFC4X3.IfcThermalAdmittanceMeasure(v), + 2645777649: (v) => new IFC4X3.IfcThermalConductivityMeasure(v), + 2281867870: (v) => new IFC4X3.IfcThermalExpansionCoefficientMeasure(v), + 857959152: (v) => new IFC4X3.IfcThermalResistanceMeasure(v), + 2016195849: (v) => new IFC4X3.IfcThermalTransmittanceMeasure(v), + 743184107: (v) => new IFC4X3.IfcThermodynamicTemperatureMeasure(v), + 4075327185: (v) => new IFC4X3.IfcTime(v), + 2726807636: (v) => new IFC4X3.IfcTimeMeasure(v), + 2591213694: (v) => new IFC4X3.IfcTimeStamp(v), + 1278329552: (v) => new IFC4X3.IfcTorqueMeasure(v), + 950732822: (v) => new IFC4X3.IfcURIReference(v), + 3345633955: (v) => new IFC4X3.IfcVaporPermeabilityMeasure(v), + 3458127941: (v) => new IFC4X3.IfcVolumeMeasure(v), + 2593997549: (v) => new IFC4X3.IfcVolumetricFlowRateMeasure(v), + 51269191: (v) => new IFC4X3.IfcWarpingConstantMeasure(v), + 1718600412: (v) => new IFC4X3.IfcWarpingMomentMeasure(v), + 2149462589: (v) => new IFC4X3.IfcWellKnownTextLiteral(v) +}; +var IFC4X3; +((IFC4X32) => { + class IfcAbsorbedDoseMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCABSORBEDDOSEMEASURE"; + } + } + IFC4X32.IfcAbsorbedDoseMeasure = IfcAbsorbedDoseMeasure; + class IfcAccelerationMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCACCELERATIONMEASURE"; + } + } + IFC4X32.IfcAccelerationMeasure = IfcAccelerationMeasure; + class IfcAmountOfSubstanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCAMOUNTOFSUBSTANCEMEASURE"; + } + } + IFC4X32.IfcAmountOfSubstanceMeasure = IfcAmountOfSubstanceMeasure; + class IfcAngularVelocityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCANGULARVELOCITYMEASURE"; + } + } + IFC4X32.IfcAngularVelocityMeasure = IfcAngularVelocityMeasure; + class IfcArcIndex { + constructor(value) { + this.value = value; + this.type = 5; + } + } + IFC4X32.IfcArcIndex = IfcArcIndex; + class IfcAreaDensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCAREADENSITYMEASURE"; + } + } + IFC4X32.IfcAreaDensityMeasure = IfcAreaDensityMeasure; + class IfcAreaMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCAREAMEASURE"; + } + } + IFC4X32.IfcAreaMeasure = IfcAreaMeasure; + class IfcBinary extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCBINARY"; + } + } + IFC4X32.IfcBinary = IfcBinary; + class IfcBoolean { + constructor(v) { + this.type = 3; + this.name = "IFCBOOLEAN"; + this.value = v; + } + } + IFC4X32.IfcBoolean = IfcBoolean; + class IfcBoxAlignment { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCBOXALIGNMENT"; + } + } + IFC4X32.IfcBoxAlignment = IfcBoxAlignment; + class IfcCardinalPointReference extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCCARDINALPOINTREFERENCE"; + } + } + IFC4X32.IfcCardinalPointReference = IfcCardinalPointReference; + class IfcComplexNumber { + constructor(value) { + this.value = value; + this.type = 4; + } + } + IFC4X32.IfcComplexNumber = IfcComplexNumber; + class IfcCompoundPlaneAngleMeasure { + constructor(value) { + this.value = value; + this.type = 10; + } + } + IFC4X32.IfcCompoundPlaneAngleMeasure = IfcCompoundPlaneAngleMeasure; + class IfcContextDependentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCCONTEXTDEPENDENTMEASURE"; + } + } + IFC4X32.IfcContextDependentMeasure = IfcContextDependentMeasure; + class IfcCountMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCCOUNTMEASURE"; + } + } + IFC4X32.IfcCountMeasure = IfcCountMeasure; + class IfcCurvatureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCCURVATUREMEASURE"; + } + } + IFC4X32.IfcCurvatureMeasure = IfcCurvatureMeasure; + class IfcDate { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCDATE"; + } + } + IFC4X32.IfcDate = IfcDate; + class IfcDateTime { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCDATETIME"; + } + } + IFC4X32.IfcDateTime = IfcDateTime; + class IfcDayInMonthNumber extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCDAYINMONTHNUMBER"; + } + } + IFC4X32.IfcDayInMonthNumber = IfcDayInMonthNumber; + class IfcDayInWeekNumber extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCDAYINWEEKNUMBER"; + } + } + IFC4X32.IfcDayInWeekNumber = IfcDayInWeekNumber; + class IfcDescriptiveMeasure { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCDESCRIPTIVEMEASURE"; + } + } + IFC4X32.IfcDescriptiveMeasure = IfcDescriptiveMeasure; + class IfcDimensionCount extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCDIMENSIONCOUNT"; + } + } + IFC4X32.IfcDimensionCount = IfcDimensionCount; + class IfcDoseEquivalentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCDOSEEQUIVALENTMEASURE"; + } + } + IFC4X32.IfcDoseEquivalentMeasure = IfcDoseEquivalentMeasure; + class IfcDuration { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCDURATION"; + } + } + IFC4X32.IfcDuration = IfcDuration; + class IfcDynamicViscosityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCDYNAMICVISCOSITYMEASURE"; + } + } + IFC4X32.IfcDynamicViscosityMeasure = IfcDynamicViscosityMeasure; + class IfcElectricCapacitanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCAPACITANCEMEASURE"; + } + } + IFC4X32.IfcElectricCapacitanceMeasure = IfcElectricCapacitanceMeasure; + class IfcElectricChargeMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCHARGEMEASURE"; + } + } + IFC4X32.IfcElectricChargeMeasure = IfcElectricChargeMeasure; + class IfcElectricConductanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCONDUCTANCEMEASURE"; + } + } + IFC4X32.IfcElectricConductanceMeasure = IfcElectricConductanceMeasure; + class IfcElectricCurrentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICCURRENTMEASURE"; + } + } + IFC4X32.IfcElectricCurrentMeasure = IfcElectricCurrentMeasure; + class IfcElectricResistanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICRESISTANCEMEASURE"; + } + } + IFC4X32.IfcElectricResistanceMeasure = IfcElectricResistanceMeasure; + class IfcElectricVoltageMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCELECTRICVOLTAGEMEASURE"; + } + } + IFC4X32.IfcElectricVoltageMeasure = IfcElectricVoltageMeasure; + class IfcEnergyMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCENERGYMEASURE"; + } + } + IFC4X32.IfcEnergyMeasure = IfcEnergyMeasure; + class IfcFontStyle { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCFONTSTYLE"; + } + } + IFC4X32.IfcFontStyle = IfcFontStyle; + class IfcFontVariant { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCFONTVARIANT"; + } + } + IFC4X32.IfcFontVariant = IfcFontVariant; + class IfcFontWeight { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCFONTWEIGHT"; + } + } + IFC4X32.IfcFontWeight = IfcFontWeight; + class IfcForceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCFORCEMEASURE"; + } + } + IFC4X32.IfcForceMeasure = IfcForceMeasure; + class IfcFrequencyMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCFREQUENCYMEASURE"; + } + } + IFC4X32.IfcFrequencyMeasure = IfcFrequencyMeasure; + class IfcGloballyUniqueId { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCGLOBALLYUNIQUEID"; + } + } + IFC4X32.IfcGloballyUniqueId = IfcGloballyUniqueId; + class IfcHeatFluxDensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCHEATFLUXDENSITYMEASURE"; + } + } + IFC4X32.IfcHeatFluxDensityMeasure = IfcHeatFluxDensityMeasure; + class IfcHeatingValueMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCHEATINGVALUEMEASURE"; + } + } + IFC4X32.IfcHeatingValueMeasure = IfcHeatingValueMeasure; + class IfcIdentifier { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCIDENTIFIER"; + } + } + IFC4X32.IfcIdentifier = IfcIdentifier; + class IfcIlluminanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCILLUMINANCEMEASURE"; + } + } + IFC4X32.IfcIlluminanceMeasure = IfcIlluminanceMeasure; + class IfcInductanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCINDUCTANCEMEASURE"; + } + } + IFC4X32.IfcInductanceMeasure = IfcInductanceMeasure; + class IfcInteger extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCINTEGER"; + } + } + IFC4X32.IfcInteger = IfcInteger; + class IfcIntegerCountRateMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCINTEGERCOUNTRATEMEASURE"; + } + } + IFC4X32.IfcIntegerCountRateMeasure = IfcIntegerCountRateMeasure; + class IfcIonConcentrationMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCIONCONCENTRATIONMEASURE"; + } + } + IFC4X32.IfcIonConcentrationMeasure = IfcIonConcentrationMeasure; + class IfcIsothermalMoistureCapacityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCISOTHERMALMOISTURECAPACITYMEASURE"; + } + } + IFC4X32.IfcIsothermalMoistureCapacityMeasure = IfcIsothermalMoistureCapacityMeasure; + class IfcKinematicViscosityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCKINEMATICVISCOSITYMEASURE"; + } + } + IFC4X32.IfcKinematicViscosityMeasure = IfcKinematicViscosityMeasure; + class IfcLabel { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCLABEL"; + } + } + IFC4X32.IfcLabel = IfcLabel; + class IfcLanguageId { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCLANGUAGEID"; + } + } + IFC4X32.IfcLanguageId = IfcLanguageId; + class IfcLengthMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLENGTHMEASURE"; + } + } + IFC4X32.IfcLengthMeasure = IfcLengthMeasure; + class IfcLineIndex { + constructor(value) { + this.value = value; + this.type = 5; + } + } + IFC4X32.IfcLineIndex = IfcLineIndex; + class IfcLinearForceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARFORCEMEASURE"; + } + } + IFC4X32.IfcLinearForceMeasure = IfcLinearForceMeasure; + class IfcLinearMomentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARMOMENTMEASURE"; + } + } + IFC4X32.IfcLinearMomentMeasure = IfcLinearMomentMeasure; + class IfcLinearStiffnessMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARSTIFFNESSMEASURE"; + } + } + IFC4X32.IfcLinearStiffnessMeasure = IfcLinearStiffnessMeasure; + class IfcLinearVelocityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLINEARVELOCITYMEASURE"; + } + } + IFC4X32.IfcLinearVelocityMeasure = IfcLinearVelocityMeasure; + class IfcLogical { + constructor(v) { + this.type = 3; + this.name = "IFCLOGICAL"; + this.value = v; + } + } + IFC4X32.IfcLogical = IfcLogical; + class IfcLuminousFluxMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLUMINOUSFLUXMEASURE"; + } + } + IFC4X32.IfcLuminousFluxMeasure = IfcLuminousFluxMeasure; + class IfcLuminousIntensityDistributionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE"; + } + } + IFC4X32.IfcLuminousIntensityDistributionMeasure = IfcLuminousIntensityDistributionMeasure; + class IfcLuminousIntensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCLUMINOUSINTENSITYMEASURE"; + } + } + IFC4X32.IfcLuminousIntensityMeasure = IfcLuminousIntensityMeasure; + class IfcMagneticFluxDensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMAGNETICFLUXDENSITYMEASURE"; + } + } + IFC4X32.IfcMagneticFluxDensityMeasure = IfcMagneticFluxDensityMeasure; + class IfcMagneticFluxMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMAGNETICFLUXMEASURE"; + } + } + IFC4X32.IfcMagneticFluxMeasure = IfcMagneticFluxMeasure; + class IfcMassDensityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSDENSITYMEASURE"; + } + } + IFC4X32.IfcMassDensityMeasure = IfcMassDensityMeasure; + class IfcMassFlowRateMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSFLOWRATEMEASURE"; + } + } + IFC4X32.IfcMassFlowRateMeasure = IfcMassFlowRateMeasure; + class IfcMassMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSMEASURE"; + } + } + IFC4X32.IfcMassMeasure = IfcMassMeasure; + class IfcMassPerLengthMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMASSPERLENGTHMEASURE"; + } + } + IFC4X32.IfcMassPerLengthMeasure = IfcMassPerLengthMeasure; + class IfcModulusOfElasticityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFELASTICITYMEASURE"; + } + } + IFC4X32.IfcModulusOfElasticityMeasure = IfcModulusOfElasticityMeasure; + class IfcModulusOfLinearSubgradeReactionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE"; + } + } + IFC4X32.IfcModulusOfLinearSubgradeReactionMeasure = IfcModulusOfLinearSubgradeReactionMeasure; + class IfcModulusOfRotationalSubgradeReactionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE"; + } + } + IFC4X32.IfcModulusOfRotationalSubgradeReactionMeasure = IfcModulusOfRotationalSubgradeReactionMeasure; + class IfcModulusOfSubgradeReactionMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMODULUSOFSUBGRADEREACTIONMEASURE"; + } + } + IFC4X32.IfcModulusOfSubgradeReactionMeasure = IfcModulusOfSubgradeReactionMeasure; + class IfcMoistureDiffusivityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMOISTUREDIFFUSIVITYMEASURE"; + } + } + IFC4X32.IfcMoistureDiffusivityMeasure = IfcMoistureDiffusivityMeasure; + class IfcMolecularWeightMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMOLECULARWEIGHTMEASURE"; + } + } + IFC4X32.IfcMolecularWeightMeasure = IfcMolecularWeightMeasure; + class IfcMomentOfInertiaMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMOMENTOFINERTIAMEASURE"; + } + } + IFC4X32.IfcMomentOfInertiaMeasure = IfcMomentOfInertiaMeasure; + class IfcMonetaryMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCMONETARYMEASURE"; + } + } + IFC4X32.IfcMonetaryMeasure = IfcMonetaryMeasure; + class IfcMonthInYearNumber extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCMONTHINYEARNUMBER"; + } + } + IFC4X32.IfcMonthInYearNumber = IfcMonthInYearNumber; + class IfcNonNegativeLengthMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCNONNEGATIVELENGTHMEASURE"; + } + } + IFC4X32.IfcNonNegativeLengthMeasure = IfcNonNegativeLengthMeasure; + class IfcNormalisedRatioMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCNORMALISEDRATIOMEASURE"; + } + } + IFC4X32.IfcNormalisedRatioMeasure = IfcNormalisedRatioMeasure; + class IfcNumericMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCNUMERICMEASURE"; + } + } + IFC4X32.IfcNumericMeasure = IfcNumericMeasure; + class IfcPHMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPHMEASURE"; + } + } + IFC4X32.IfcPHMeasure = IfcPHMeasure; + class IfcParameterValue extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPARAMETERVALUE"; + } + } + IFC4X32.IfcParameterValue = IfcParameterValue; + class IfcPlanarForceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPLANARFORCEMEASURE"; + } + } + IFC4X32.IfcPlanarForceMeasure = IfcPlanarForceMeasure; + class IfcPlaneAngleMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPLANEANGLEMEASURE"; + } + } + IFC4X32.IfcPlaneAngleMeasure = IfcPlaneAngleMeasure; + class IfcPositiveInteger extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCPOSITIVEINTEGER"; + } + } + IFC4X32.IfcPositiveInteger = IfcPositiveInteger; + class IfcPositiveLengthMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOSITIVELENGTHMEASURE"; + } + } + IFC4X32.IfcPositiveLengthMeasure = IfcPositiveLengthMeasure; + class IfcPositivePlaneAngleMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOSITIVEPLANEANGLEMEASURE"; + } + } + IFC4X32.IfcPositivePlaneAngleMeasure = IfcPositivePlaneAngleMeasure; + class IfcPositiveRatioMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOSITIVERATIOMEASURE"; + } + } + IFC4X32.IfcPositiveRatioMeasure = IfcPositiveRatioMeasure; + class IfcPowerMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPOWERMEASURE"; + } + } + IFC4X32.IfcPowerMeasure = IfcPowerMeasure; + class IfcPresentableText { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCPRESENTABLETEXT"; + } + } + IFC4X32.IfcPresentableText = IfcPresentableText; + class IfcPressureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCPRESSUREMEASURE"; + } + } + IFC4X32.IfcPressureMeasure = IfcPressureMeasure; + class IfcPropertySetDefinitionSet { + constructor(value) { + this.value = value; + this.type = 5; + } + } + IFC4X32.IfcPropertySetDefinitionSet = IfcPropertySetDefinitionSet; + class IfcRadioActivityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCRADIOACTIVITYMEASURE"; + } + } + IFC4X32.IfcRadioActivityMeasure = IfcRadioActivityMeasure; + class IfcRatioMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCRATIOMEASURE"; + } + } + IFC4X32.IfcRatioMeasure = IfcRatioMeasure; + class IfcReal extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCREAL"; + } + } + IFC4X32.IfcReal = IfcReal; + class IfcRotationalFrequencyMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCROTATIONALFREQUENCYMEASURE"; + } + } + IFC4X32.IfcRotationalFrequencyMeasure = IfcRotationalFrequencyMeasure; + class IfcRotationalMassMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCROTATIONALMASSMEASURE"; + } + } + IFC4X32.IfcRotationalMassMeasure = IfcRotationalMassMeasure; + class IfcRotationalStiffnessMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCROTATIONALSTIFFNESSMEASURE"; + } + } + IFC4X32.IfcRotationalStiffnessMeasure = IfcRotationalStiffnessMeasure; + class IfcSectionModulusMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSECTIONMODULUSMEASURE"; + } + } + IFC4X32.IfcSectionModulusMeasure = IfcSectionModulusMeasure; + class IfcSectionalAreaIntegralMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSECTIONALAREAINTEGRALMEASURE"; + } + } + IFC4X32.IfcSectionalAreaIntegralMeasure = IfcSectionalAreaIntegralMeasure; + class IfcShearModulusMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSHEARMODULUSMEASURE"; + } + } + IFC4X32.IfcShearModulusMeasure = IfcShearModulusMeasure; + class IfcSolidAngleMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOLIDANGLEMEASURE"; + } + } + IFC4X32.IfcSolidAngleMeasure = IfcSolidAngleMeasure; + class IfcSoundPowerLevelMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOUNDPOWERLEVELMEASURE"; + } + } + IFC4X32.IfcSoundPowerLevelMeasure = IfcSoundPowerLevelMeasure; + class IfcSoundPowerMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOUNDPOWERMEASURE"; + } + } + IFC4X32.IfcSoundPowerMeasure = IfcSoundPowerMeasure; + class IfcSoundPressureLevelMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOUNDPRESSURELEVELMEASURE"; + } + } + IFC4X32.IfcSoundPressureLevelMeasure = IfcSoundPressureLevelMeasure; + class IfcSoundPressureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSOUNDPRESSUREMEASURE"; + } + } + IFC4X32.IfcSoundPressureMeasure = IfcSoundPressureMeasure; + class IfcSpecificHeatCapacityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSPECIFICHEATCAPACITYMEASURE"; + } + } + IFC4X32.IfcSpecificHeatCapacityMeasure = IfcSpecificHeatCapacityMeasure; + class IfcSpecularExponent extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSPECULAREXPONENT"; + } + } + IFC4X32.IfcSpecularExponent = IfcSpecularExponent; + class IfcSpecularRoughness extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCSPECULARROUGHNESS"; + } + } + IFC4X32.IfcSpecularRoughness = IfcSpecularRoughness; + class IfcStrippedOptional { + constructor(v) { + this.type = 3; + this.name = "IFCSTRIPPEDOPTIONAL"; + this.value = v; + } + } + IFC4X32.IfcStrippedOptional = IfcStrippedOptional; + class IfcTemperatureGradientMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTEMPERATUREGRADIENTMEASURE"; + } + } + IFC4X32.IfcTemperatureGradientMeasure = IfcTemperatureGradientMeasure; + class IfcTemperatureRateOfChangeMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTEMPERATURERATEOFCHANGEMEASURE"; + } + } + IFC4X32.IfcTemperatureRateOfChangeMeasure = IfcTemperatureRateOfChangeMeasure; + class IfcText { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXT"; + } + } + IFC4X32.IfcText = IfcText; + class IfcTextAlignment { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTALIGNMENT"; + } + } + IFC4X32.IfcTextAlignment = IfcTextAlignment; + class IfcTextDecoration { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTDECORATION"; + } + } + IFC4X32.IfcTextDecoration = IfcTextDecoration; + class IfcTextFontName { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTFONTNAME"; + } + } + IFC4X32.IfcTextFontName = IfcTextFontName; + class IfcTextTransformation { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTEXTTRANSFORMATION"; + } + } + IFC4X32.IfcTextTransformation = IfcTextTransformation; + class IfcThermalAdmittanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALADMITTANCEMEASURE"; + } + } + IFC4X32.IfcThermalAdmittanceMeasure = IfcThermalAdmittanceMeasure; + class IfcThermalConductivityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALCONDUCTIVITYMEASURE"; + } + } + IFC4X32.IfcThermalConductivityMeasure = IfcThermalConductivityMeasure; + class IfcThermalExpansionCoefficientMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALEXPANSIONCOEFFICIENTMEASURE"; + } + } + IFC4X32.IfcThermalExpansionCoefficientMeasure = IfcThermalExpansionCoefficientMeasure; + class IfcThermalResistanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALRESISTANCEMEASURE"; + } + } + IFC4X32.IfcThermalResistanceMeasure = IfcThermalResistanceMeasure; + class IfcThermalTransmittanceMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMALTRANSMITTANCEMEASURE"; + } + } + IFC4X32.IfcThermalTransmittanceMeasure = IfcThermalTransmittanceMeasure; + class IfcThermodynamicTemperatureMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTHERMODYNAMICTEMPERATUREMEASURE"; + } + } + IFC4X32.IfcThermodynamicTemperatureMeasure = IfcThermodynamicTemperatureMeasure; + class IfcTime { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCTIME"; + } + } + IFC4X32.IfcTime = IfcTime; + class IfcTimeMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTIMEMEASURE"; + } + } + IFC4X32.IfcTimeMeasure = IfcTimeMeasure; + class IfcTimeStamp extends NumberHandle { + constructor() { + super(...arguments); + this.type = 10; + this.name = "IFCTIMESTAMP"; + } + } + IFC4X32.IfcTimeStamp = IfcTimeStamp; + class IfcTorqueMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCTORQUEMEASURE"; + } + } + IFC4X32.IfcTorqueMeasure = IfcTorqueMeasure; + class IfcURIReference { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCURIREFERENCE"; + } + } + IFC4X32.IfcURIReference = IfcURIReference; + class IfcVaporPermeabilityMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCVAPORPERMEABILITYMEASURE"; + } + } + IFC4X32.IfcVaporPermeabilityMeasure = IfcVaporPermeabilityMeasure; + class IfcVolumeMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCVOLUMEMEASURE"; + } + } + IFC4X32.IfcVolumeMeasure = IfcVolumeMeasure; + class IfcVolumetricFlowRateMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCVOLUMETRICFLOWRATEMEASURE"; + } + } + IFC4X32.IfcVolumetricFlowRateMeasure = IfcVolumetricFlowRateMeasure; + class IfcWarpingConstantMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCWARPINGCONSTANTMEASURE"; + } + } + IFC4X32.IfcWarpingConstantMeasure = IfcWarpingConstantMeasure; + class IfcWarpingMomentMeasure extends NumberHandle { + constructor() { + super(...arguments); + this.type = 4; + this.name = "IFCWARPINGMOMENTMEASURE"; + } + } + IFC4X32.IfcWarpingMomentMeasure = IfcWarpingMomentMeasure; + class IfcWellKnownTextLiteral { + constructor(value) { + this.value = value; + this.type = 1; + this.name = "IFCWELLKNOWNTEXTLITERAL"; + } + } + IFC4X32.IfcWellKnownTextLiteral = IfcWellKnownTextLiteral; + const _IfcActionRequestTypeEnum = class _IfcActionRequestTypeEnum { + }; + _IfcActionRequestTypeEnum.EMAIL = { type: 3, value: "EMAIL" }; + _IfcActionRequestTypeEnum.FAX = { type: 3, value: "FAX" }; + _IfcActionRequestTypeEnum.PHONE = { type: 3, value: "PHONE" }; + _IfcActionRequestTypeEnum.POST = { type: 3, value: "POST" }; + _IfcActionRequestTypeEnum.VERBAL = { type: 3, value: "VERBAL" }; + _IfcActionRequestTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcActionRequestTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcActionRequestTypeEnum = _IfcActionRequestTypeEnum; + IFC4X32.IfcActionRequestTypeEnum = IfcActionRequestTypeEnum; + const _IfcActionSourceTypeEnum = class _IfcActionSourceTypeEnum { + }; + _IfcActionSourceTypeEnum.BRAKES = { type: 3, value: "BRAKES" }; + _IfcActionSourceTypeEnum.BUOYANCY = { type: 3, value: "BUOYANCY" }; + _IfcActionSourceTypeEnum.COMPLETION_G1 = { type: 3, value: "COMPLETION_G1" }; + _IfcActionSourceTypeEnum.CREEP = { type: 3, value: "CREEP" }; + _IfcActionSourceTypeEnum.CURRENT = { type: 3, value: "CURRENT" }; + _IfcActionSourceTypeEnum.DEAD_LOAD_G = { type: 3, value: "DEAD_LOAD_G" }; + _IfcActionSourceTypeEnum.EARTHQUAKE_E = { type: 3, value: "EARTHQUAKE_E" }; + _IfcActionSourceTypeEnum.ERECTION = { type: 3, value: "ERECTION" }; + _IfcActionSourceTypeEnum.FIRE = { type: 3, value: "FIRE" }; + _IfcActionSourceTypeEnum.ICE = { type: 3, value: "ICE" }; + _IfcActionSourceTypeEnum.IMPACT = { type: 3, value: "IMPACT" }; + _IfcActionSourceTypeEnum.IMPULSE = { type: 3, value: "IMPULSE" }; + _IfcActionSourceTypeEnum.LACK_OF_FIT = { type: 3, value: "LACK_OF_FIT" }; + _IfcActionSourceTypeEnum.LIVE_LOAD_Q = { type: 3, value: "LIVE_LOAD_Q" }; + _IfcActionSourceTypeEnum.PRESTRESSING_P = { type: 3, value: "PRESTRESSING_P" }; + _IfcActionSourceTypeEnum.PROPPING = { type: 3, value: "PROPPING" }; + _IfcActionSourceTypeEnum.RAIN = { type: 3, value: "RAIN" }; + _IfcActionSourceTypeEnum.SETTLEMENT_U = { type: 3, value: "SETTLEMENT_U" }; + _IfcActionSourceTypeEnum.SHRINKAGE = { type: 3, value: "SHRINKAGE" }; + _IfcActionSourceTypeEnum.SNOW_S = { type: 3, value: "SNOW_S" }; + _IfcActionSourceTypeEnum.SYSTEM_IMPERFECTION = { type: 3, value: "SYSTEM_IMPERFECTION" }; + _IfcActionSourceTypeEnum.TEMPERATURE_T = { type: 3, value: "TEMPERATURE_T" }; + _IfcActionSourceTypeEnum.TRANSPORT = { type: 3, value: "TRANSPORT" }; + _IfcActionSourceTypeEnum.WAVE = { type: 3, value: "WAVE" }; + _IfcActionSourceTypeEnum.WIND_W = { type: 3, value: "WIND_W" }; + _IfcActionSourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcActionSourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcActionSourceTypeEnum = _IfcActionSourceTypeEnum; + IFC4X32.IfcActionSourceTypeEnum = IfcActionSourceTypeEnum; + const _IfcActionTypeEnum = class _IfcActionTypeEnum { + }; + _IfcActionTypeEnum.EXTRAORDINARY_A = { type: 3, value: "EXTRAORDINARY_A" }; + _IfcActionTypeEnum.PERMANENT_G = { type: 3, value: "PERMANENT_G" }; + _IfcActionTypeEnum.VARIABLE_Q = { type: 3, value: "VARIABLE_Q" }; + _IfcActionTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcActionTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcActionTypeEnum = _IfcActionTypeEnum; + IFC4X32.IfcActionTypeEnum = IfcActionTypeEnum; + const _IfcActuatorTypeEnum = class _IfcActuatorTypeEnum { + }; + _IfcActuatorTypeEnum.ELECTRICACTUATOR = { type: 3, value: "ELECTRICACTUATOR" }; + _IfcActuatorTypeEnum.HANDOPERATEDACTUATOR = { type: 3, value: "HANDOPERATEDACTUATOR" }; + _IfcActuatorTypeEnum.HYDRAULICACTUATOR = { type: 3, value: "HYDRAULICACTUATOR" }; + _IfcActuatorTypeEnum.PNEUMATICACTUATOR = { type: 3, value: "PNEUMATICACTUATOR" }; + _IfcActuatorTypeEnum.THERMOSTATICACTUATOR = { type: 3, value: "THERMOSTATICACTUATOR" }; + _IfcActuatorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcActuatorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcActuatorTypeEnum = _IfcActuatorTypeEnum; + IFC4X32.IfcActuatorTypeEnum = IfcActuatorTypeEnum; + const _IfcAddressTypeEnum = class _IfcAddressTypeEnum { + }; + _IfcAddressTypeEnum.DISTRIBUTIONPOINT = { type: 3, value: "DISTRIBUTIONPOINT" }; + _IfcAddressTypeEnum.HOME = { type: 3, value: "HOME" }; + _IfcAddressTypeEnum.OFFICE = { type: 3, value: "OFFICE" }; + _IfcAddressTypeEnum.SITE = { type: 3, value: "SITE" }; + _IfcAddressTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcAddressTypeEnum = _IfcAddressTypeEnum; + IFC4X32.IfcAddressTypeEnum = IfcAddressTypeEnum; + const _IfcAirTerminalBoxTypeEnum = class _IfcAirTerminalBoxTypeEnum { + }; + _IfcAirTerminalBoxTypeEnum.CONSTANTFLOW = { type: 3, value: "CONSTANTFLOW" }; + _IfcAirTerminalBoxTypeEnum.VARIABLEFLOWPRESSUREDEPENDANT = { type: 3, value: "VARIABLEFLOWPRESSUREDEPENDANT" }; + _IfcAirTerminalBoxTypeEnum.VARIABLEFLOWPRESSUREINDEPENDANT = { type: 3, value: "VARIABLEFLOWPRESSUREINDEPENDANT" }; + _IfcAirTerminalBoxTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAirTerminalBoxTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAirTerminalBoxTypeEnum = _IfcAirTerminalBoxTypeEnum; + IFC4X32.IfcAirTerminalBoxTypeEnum = IfcAirTerminalBoxTypeEnum; + const _IfcAirTerminalTypeEnum = class _IfcAirTerminalTypeEnum { + }; + _IfcAirTerminalTypeEnum.DIFFUSER = { type: 3, value: "DIFFUSER" }; + _IfcAirTerminalTypeEnum.GRILLE = { type: 3, value: "GRILLE" }; + _IfcAirTerminalTypeEnum.LOUVRE = { type: 3, value: "LOUVRE" }; + _IfcAirTerminalTypeEnum.REGISTER = { type: 3, value: "REGISTER" }; + _IfcAirTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAirTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAirTerminalTypeEnum = _IfcAirTerminalTypeEnum; + IFC4X32.IfcAirTerminalTypeEnum = IfcAirTerminalTypeEnum; + const _IfcAirToAirHeatRecoveryTypeEnum = class _IfcAirToAirHeatRecoveryTypeEnum { + }; + _IfcAirToAirHeatRecoveryTypeEnum.FIXEDPLATECOUNTERFLOWEXCHANGER = { type: 3, value: "FIXEDPLATECOUNTERFLOWEXCHANGER" }; + _IfcAirToAirHeatRecoveryTypeEnum.FIXEDPLATECROSSFLOWEXCHANGER = { type: 3, value: "FIXEDPLATECROSSFLOWEXCHANGER" }; + _IfcAirToAirHeatRecoveryTypeEnum.FIXEDPLATEPARALLELFLOWEXCHANGER = { type: 3, value: "FIXEDPLATEPARALLELFLOWEXCHANGER" }; + _IfcAirToAirHeatRecoveryTypeEnum.HEATPIPE = { type: 3, value: "HEATPIPE" }; + _IfcAirToAirHeatRecoveryTypeEnum.ROTARYWHEEL = { type: 3, value: "ROTARYWHEEL" }; + _IfcAirToAirHeatRecoveryTypeEnum.RUNAROUNDCOILLOOP = { type: 3, value: "RUNAROUNDCOILLOOP" }; + _IfcAirToAirHeatRecoveryTypeEnum.THERMOSIPHONCOILTYPEHEATEXCHANGERS = { type: 3, value: "THERMOSIPHONCOILTYPEHEATEXCHANGERS" }; + _IfcAirToAirHeatRecoveryTypeEnum.THERMOSIPHONSEALEDTUBEHEATEXCHANGERS = { type: 3, value: "THERMOSIPHONSEALEDTUBEHEATEXCHANGERS" }; + _IfcAirToAirHeatRecoveryTypeEnum.TWINTOWERENTHALPYRECOVERYLOOPS = { type: 3, value: "TWINTOWERENTHALPYRECOVERYLOOPS" }; + _IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAirToAirHeatRecoveryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAirToAirHeatRecoveryTypeEnum = _IfcAirToAirHeatRecoveryTypeEnum; + IFC4X32.IfcAirToAirHeatRecoveryTypeEnum = IfcAirToAirHeatRecoveryTypeEnum; + const _IfcAlarmTypeEnum = class _IfcAlarmTypeEnum { + }; + _IfcAlarmTypeEnum.BELL = { type: 3, value: "BELL" }; + _IfcAlarmTypeEnum.BREAKGLASSBUTTON = { type: 3, value: "BREAKGLASSBUTTON" }; + _IfcAlarmTypeEnum.LIGHT = { type: 3, value: "LIGHT" }; + _IfcAlarmTypeEnum.MANUALPULLBOX = { type: 3, value: "MANUALPULLBOX" }; + _IfcAlarmTypeEnum.RAILWAYCROCODILE = { type: 3, value: "RAILWAYCROCODILE" }; + _IfcAlarmTypeEnum.RAILWAYDETONATOR = { type: 3, value: "RAILWAYDETONATOR" }; + _IfcAlarmTypeEnum.SIREN = { type: 3, value: "SIREN" }; + _IfcAlarmTypeEnum.WHISTLE = { type: 3, value: "WHISTLE" }; + _IfcAlarmTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAlarmTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAlarmTypeEnum = _IfcAlarmTypeEnum; + IFC4X32.IfcAlarmTypeEnum = IfcAlarmTypeEnum; + const _IfcAlignmentCantSegmentTypeEnum = class _IfcAlignmentCantSegmentTypeEnum { + }; + _IfcAlignmentCantSegmentTypeEnum.BLOSSCURVE = { type: 3, value: "BLOSSCURVE" }; + _IfcAlignmentCantSegmentTypeEnum.CONSTANTCANT = { type: 3, value: "CONSTANTCANT" }; + _IfcAlignmentCantSegmentTypeEnum.COSINECURVE = { type: 3, value: "COSINECURVE" }; + _IfcAlignmentCantSegmentTypeEnum.HELMERTCURVE = { type: 3, value: "HELMERTCURVE" }; + _IfcAlignmentCantSegmentTypeEnum.LINEARTRANSITION = { type: 3, value: "LINEARTRANSITION" }; + _IfcAlignmentCantSegmentTypeEnum.SINECURVE = { type: 3, value: "SINECURVE" }; + _IfcAlignmentCantSegmentTypeEnum.VIENNESEBEND = { type: 3, value: "VIENNESEBEND" }; + let IfcAlignmentCantSegmentTypeEnum = _IfcAlignmentCantSegmentTypeEnum; + IFC4X32.IfcAlignmentCantSegmentTypeEnum = IfcAlignmentCantSegmentTypeEnum; + const _IfcAlignmentHorizontalSegmentTypeEnum = class _IfcAlignmentHorizontalSegmentTypeEnum { + }; + _IfcAlignmentHorizontalSegmentTypeEnum.BLOSSCURVE = { type: 3, value: "BLOSSCURVE" }; + _IfcAlignmentHorizontalSegmentTypeEnum.CIRCULARARC = { type: 3, value: "CIRCULARARC" }; + _IfcAlignmentHorizontalSegmentTypeEnum.CLOTHOID = { type: 3, value: "CLOTHOID" }; + _IfcAlignmentHorizontalSegmentTypeEnum.COSINECURVE = { type: 3, value: "COSINECURVE" }; + _IfcAlignmentHorizontalSegmentTypeEnum.CUBIC = { type: 3, value: "CUBIC" }; + _IfcAlignmentHorizontalSegmentTypeEnum.HELMERTCURVE = { type: 3, value: "HELMERTCURVE" }; + _IfcAlignmentHorizontalSegmentTypeEnum.LINE = { type: 3, value: "LINE" }; + _IfcAlignmentHorizontalSegmentTypeEnum.SINECURVE = { type: 3, value: "SINECURVE" }; + _IfcAlignmentHorizontalSegmentTypeEnum.VIENNESEBEND = { type: 3, value: "VIENNESEBEND" }; + let IfcAlignmentHorizontalSegmentTypeEnum = _IfcAlignmentHorizontalSegmentTypeEnum; + IFC4X32.IfcAlignmentHorizontalSegmentTypeEnum = IfcAlignmentHorizontalSegmentTypeEnum; + const _IfcAlignmentTypeEnum = class _IfcAlignmentTypeEnum { + }; + _IfcAlignmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAlignmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAlignmentTypeEnum = _IfcAlignmentTypeEnum; + IFC4X32.IfcAlignmentTypeEnum = IfcAlignmentTypeEnum; + const _IfcAlignmentVerticalSegmentTypeEnum = class _IfcAlignmentVerticalSegmentTypeEnum { + }; + _IfcAlignmentVerticalSegmentTypeEnum.CIRCULARARC = { type: 3, value: "CIRCULARARC" }; + _IfcAlignmentVerticalSegmentTypeEnum.CLOTHOID = { type: 3, value: "CLOTHOID" }; + _IfcAlignmentVerticalSegmentTypeEnum.CONSTANTGRADIENT = { type: 3, value: "CONSTANTGRADIENT" }; + _IfcAlignmentVerticalSegmentTypeEnum.PARABOLICARC = { type: 3, value: "PARABOLICARC" }; + let IfcAlignmentVerticalSegmentTypeEnum = _IfcAlignmentVerticalSegmentTypeEnum; + IFC4X32.IfcAlignmentVerticalSegmentTypeEnum = IfcAlignmentVerticalSegmentTypeEnum; + const _IfcAnalysisModelTypeEnum = class _IfcAnalysisModelTypeEnum { + }; + _IfcAnalysisModelTypeEnum.IN_PLANE_LOADING_2D = { type: 3, value: "IN_PLANE_LOADING_2D" }; + _IfcAnalysisModelTypeEnum.LOADING_3D = { type: 3, value: "LOADING_3D" }; + _IfcAnalysisModelTypeEnum.OUT_PLANE_LOADING_2D = { type: 3, value: "OUT_PLANE_LOADING_2D" }; + _IfcAnalysisModelTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAnalysisModelTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAnalysisModelTypeEnum = _IfcAnalysisModelTypeEnum; + IFC4X32.IfcAnalysisModelTypeEnum = IfcAnalysisModelTypeEnum; + const _IfcAnalysisTheoryTypeEnum = class _IfcAnalysisTheoryTypeEnum { + }; + _IfcAnalysisTheoryTypeEnum.FIRST_ORDER_THEORY = { type: 3, value: "FIRST_ORDER_THEORY" }; + _IfcAnalysisTheoryTypeEnum.FULL_NONLINEAR_THEORY = { type: 3, value: "FULL_NONLINEAR_THEORY" }; + _IfcAnalysisTheoryTypeEnum.SECOND_ORDER_THEORY = { type: 3, value: "SECOND_ORDER_THEORY" }; + _IfcAnalysisTheoryTypeEnum.THIRD_ORDER_THEORY = { type: 3, value: "THIRD_ORDER_THEORY" }; + _IfcAnalysisTheoryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAnalysisTheoryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAnalysisTheoryTypeEnum = _IfcAnalysisTheoryTypeEnum; + IFC4X32.IfcAnalysisTheoryTypeEnum = IfcAnalysisTheoryTypeEnum; + const _IfcAnnotationTypeEnum = class _IfcAnnotationTypeEnum { + }; + _IfcAnnotationTypeEnum.CONTOURLINE = { type: 3, value: "CONTOURLINE" }; + _IfcAnnotationTypeEnum.DIMENSION = { type: 3, value: "DIMENSION" }; + _IfcAnnotationTypeEnum.ISOBAR = { type: 3, value: "ISOBAR" }; + _IfcAnnotationTypeEnum.ISOLUX = { type: 3, value: "ISOLUX" }; + _IfcAnnotationTypeEnum.ISOTHERM = { type: 3, value: "ISOTHERM" }; + _IfcAnnotationTypeEnum.LEADER = { type: 3, value: "LEADER" }; + _IfcAnnotationTypeEnum.SURVEY = { type: 3, value: "SURVEY" }; + _IfcAnnotationTypeEnum.SYMBOL = { type: 3, value: "SYMBOL" }; + _IfcAnnotationTypeEnum.TEXT = { type: 3, value: "TEXT" }; + _IfcAnnotationTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAnnotationTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAnnotationTypeEnum = _IfcAnnotationTypeEnum; + IFC4X32.IfcAnnotationTypeEnum = IfcAnnotationTypeEnum; + const _IfcArithmeticOperatorEnum = class _IfcArithmeticOperatorEnum { + }; + _IfcArithmeticOperatorEnum.ADD = { type: 3, value: "ADD" }; + _IfcArithmeticOperatorEnum.DIVIDE = { type: 3, value: "DIVIDE" }; + _IfcArithmeticOperatorEnum.MODULO = { type: 3, value: "MODULO" }; + _IfcArithmeticOperatorEnum.MULTIPLY = { type: 3, value: "MULTIPLY" }; + _IfcArithmeticOperatorEnum.SUBTRACT = { type: 3, value: "SUBTRACT" }; + let IfcArithmeticOperatorEnum = _IfcArithmeticOperatorEnum; + IFC4X32.IfcArithmeticOperatorEnum = IfcArithmeticOperatorEnum; + const _IfcAssemblyPlaceEnum = class _IfcAssemblyPlaceEnum { + }; + _IfcAssemblyPlaceEnum.FACTORY = { type: 3, value: "FACTORY" }; + _IfcAssemblyPlaceEnum.SITE = { type: 3, value: "SITE" }; + _IfcAssemblyPlaceEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAssemblyPlaceEnum = _IfcAssemblyPlaceEnum; + IFC4X32.IfcAssemblyPlaceEnum = IfcAssemblyPlaceEnum; + const _IfcAudioVisualApplianceTypeEnum = class _IfcAudioVisualApplianceTypeEnum { + }; + _IfcAudioVisualApplianceTypeEnum.AMPLIFIER = { type: 3, value: "AMPLIFIER" }; + _IfcAudioVisualApplianceTypeEnum.CAMERA = { type: 3, value: "CAMERA" }; + _IfcAudioVisualApplianceTypeEnum.COMMUNICATIONTERMINAL = { type: 3, value: "COMMUNICATIONTERMINAL" }; + _IfcAudioVisualApplianceTypeEnum.DISPLAY = { type: 3, value: "DISPLAY" }; + _IfcAudioVisualApplianceTypeEnum.MICROPHONE = { type: 3, value: "MICROPHONE" }; + _IfcAudioVisualApplianceTypeEnum.PLAYER = { type: 3, value: "PLAYER" }; + _IfcAudioVisualApplianceTypeEnum.PROJECTOR = { type: 3, value: "PROJECTOR" }; + _IfcAudioVisualApplianceTypeEnum.RECEIVER = { type: 3, value: "RECEIVER" }; + _IfcAudioVisualApplianceTypeEnum.RECORDINGEQUIPMENT = { type: 3, value: "RECORDINGEQUIPMENT" }; + _IfcAudioVisualApplianceTypeEnum.SPEAKER = { type: 3, value: "SPEAKER" }; + _IfcAudioVisualApplianceTypeEnum.SWITCHER = { type: 3, value: "SWITCHER" }; + _IfcAudioVisualApplianceTypeEnum.TELEPHONE = { type: 3, value: "TELEPHONE" }; + _IfcAudioVisualApplianceTypeEnum.TUNER = { type: 3, value: "TUNER" }; + _IfcAudioVisualApplianceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcAudioVisualApplianceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcAudioVisualApplianceTypeEnum = _IfcAudioVisualApplianceTypeEnum; + IFC4X32.IfcAudioVisualApplianceTypeEnum = IfcAudioVisualApplianceTypeEnum; + const _IfcBSplineCurveForm = class _IfcBSplineCurveForm { + }; + _IfcBSplineCurveForm.CIRCULAR_ARC = { type: 3, value: "CIRCULAR_ARC" }; + _IfcBSplineCurveForm.ELLIPTIC_ARC = { type: 3, value: "ELLIPTIC_ARC" }; + _IfcBSplineCurveForm.HYPERBOLIC_ARC = { type: 3, value: "HYPERBOLIC_ARC" }; + _IfcBSplineCurveForm.PARABOLIC_ARC = { type: 3, value: "PARABOLIC_ARC" }; + _IfcBSplineCurveForm.POLYLINE_FORM = { type: 3, value: "POLYLINE_FORM" }; + _IfcBSplineCurveForm.UNSPECIFIED = { type: 3, value: "UNSPECIFIED" }; + let IfcBSplineCurveForm = _IfcBSplineCurveForm; + IFC4X32.IfcBSplineCurveForm = IfcBSplineCurveForm; + const _IfcBSplineSurfaceForm = class _IfcBSplineSurfaceForm { + }; + _IfcBSplineSurfaceForm.CONICAL_SURF = { type: 3, value: "CONICAL_SURF" }; + _IfcBSplineSurfaceForm.CYLINDRICAL_SURF = { type: 3, value: "CYLINDRICAL_SURF" }; + _IfcBSplineSurfaceForm.GENERALISED_CONE = { type: 3, value: "GENERALISED_CONE" }; + _IfcBSplineSurfaceForm.PLANE_SURF = { type: 3, value: "PLANE_SURF" }; + _IfcBSplineSurfaceForm.QUADRIC_SURF = { type: 3, value: "QUADRIC_SURF" }; + _IfcBSplineSurfaceForm.RULED_SURF = { type: 3, value: "RULED_SURF" }; + _IfcBSplineSurfaceForm.SPHERICAL_SURF = { type: 3, value: "SPHERICAL_SURF" }; + _IfcBSplineSurfaceForm.SURF_OF_LINEAR_EXTRUSION = { type: 3, value: "SURF_OF_LINEAR_EXTRUSION" }; + _IfcBSplineSurfaceForm.SURF_OF_REVOLUTION = { type: 3, value: "SURF_OF_REVOLUTION" }; + _IfcBSplineSurfaceForm.TOROIDAL_SURF = { type: 3, value: "TOROIDAL_SURF" }; + _IfcBSplineSurfaceForm.UNSPECIFIED = { type: 3, value: "UNSPECIFIED" }; + let IfcBSplineSurfaceForm = _IfcBSplineSurfaceForm; + IFC4X32.IfcBSplineSurfaceForm = IfcBSplineSurfaceForm; + const _IfcBeamTypeEnum = class _IfcBeamTypeEnum { + }; + _IfcBeamTypeEnum.BEAM = { type: 3, value: "BEAM" }; + _IfcBeamTypeEnum.CORNICE = { type: 3, value: "CORNICE" }; + _IfcBeamTypeEnum.DIAPHRAGM = { type: 3, value: "DIAPHRAGM" }; + _IfcBeamTypeEnum.EDGEBEAM = { type: 3, value: "EDGEBEAM" }; + _IfcBeamTypeEnum.GIRDER_SEGMENT = { type: 3, value: "GIRDER_SEGMENT" }; + _IfcBeamTypeEnum.HATSTONE = { type: 3, value: "HATSTONE" }; + _IfcBeamTypeEnum.HOLLOWCORE = { type: 3, value: "HOLLOWCORE" }; + _IfcBeamTypeEnum.JOIST = { type: 3, value: "JOIST" }; + _IfcBeamTypeEnum.LINTEL = { type: 3, value: "LINTEL" }; + _IfcBeamTypeEnum.PIERCAP = { type: 3, value: "PIERCAP" }; + _IfcBeamTypeEnum.SPANDREL = { type: 3, value: "SPANDREL" }; + _IfcBeamTypeEnum.T_BEAM = { type: 3, value: "T_BEAM" }; + _IfcBeamTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBeamTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBeamTypeEnum = _IfcBeamTypeEnum; + IFC4X32.IfcBeamTypeEnum = IfcBeamTypeEnum; + const _IfcBearingTypeEnum = class _IfcBearingTypeEnum { + }; + _IfcBearingTypeEnum.CYLINDRICAL = { type: 3, value: "CYLINDRICAL" }; + _IfcBearingTypeEnum.DISK = { type: 3, value: "DISK" }; + _IfcBearingTypeEnum.ELASTOMERIC = { type: 3, value: "ELASTOMERIC" }; + _IfcBearingTypeEnum.GUIDE = { type: 3, value: "GUIDE" }; + _IfcBearingTypeEnum.POT = { type: 3, value: "POT" }; + _IfcBearingTypeEnum.ROCKER = { type: 3, value: "ROCKER" }; + _IfcBearingTypeEnum.ROLLER = { type: 3, value: "ROLLER" }; + _IfcBearingTypeEnum.SPHERICAL = { type: 3, value: "SPHERICAL" }; + _IfcBearingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBearingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBearingTypeEnum = _IfcBearingTypeEnum; + IFC4X32.IfcBearingTypeEnum = IfcBearingTypeEnum; + const _IfcBenchmarkEnum = class _IfcBenchmarkEnum { + }; + _IfcBenchmarkEnum.EQUALTO = { type: 3, value: "EQUALTO" }; + _IfcBenchmarkEnum.GREATERTHAN = { type: 3, value: "GREATERTHAN" }; + _IfcBenchmarkEnum.GREATERTHANOREQUALTO = { type: 3, value: "GREATERTHANOREQUALTO" }; + _IfcBenchmarkEnum.INCLUDEDIN = { type: 3, value: "INCLUDEDIN" }; + _IfcBenchmarkEnum.INCLUDES = { type: 3, value: "INCLUDES" }; + _IfcBenchmarkEnum.LESSTHAN = { type: 3, value: "LESSTHAN" }; + _IfcBenchmarkEnum.LESSTHANOREQUALTO = { type: 3, value: "LESSTHANOREQUALTO" }; + _IfcBenchmarkEnum.NOTEQUALTO = { type: 3, value: "NOTEQUALTO" }; + _IfcBenchmarkEnum.NOTINCLUDEDIN = { type: 3, value: "NOTINCLUDEDIN" }; + _IfcBenchmarkEnum.NOTINCLUDES = { type: 3, value: "NOTINCLUDES" }; + let IfcBenchmarkEnum = _IfcBenchmarkEnum; + IFC4X32.IfcBenchmarkEnum = IfcBenchmarkEnum; + const _IfcBoilerTypeEnum = class _IfcBoilerTypeEnum { + }; + _IfcBoilerTypeEnum.STEAM = { type: 3, value: "STEAM" }; + _IfcBoilerTypeEnum.WATER = { type: 3, value: "WATER" }; + _IfcBoilerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBoilerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBoilerTypeEnum = _IfcBoilerTypeEnum; + IFC4X32.IfcBoilerTypeEnum = IfcBoilerTypeEnum; + const _IfcBooleanOperator = class _IfcBooleanOperator { + }; + _IfcBooleanOperator.DIFFERENCE = { type: 3, value: "DIFFERENCE" }; + _IfcBooleanOperator.INTERSECTION = { type: 3, value: "INTERSECTION" }; + _IfcBooleanOperator.UNION = { type: 3, value: "UNION" }; + let IfcBooleanOperator = _IfcBooleanOperator; + IFC4X32.IfcBooleanOperator = IfcBooleanOperator; + const _IfcBridgePartTypeEnum = class _IfcBridgePartTypeEnum { + }; + _IfcBridgePartTypeEnum.ABUTMENT = { type: 3, value: "ABUTMENT" }; + _IfcBridgePartTypeEnum.DECK = { type: 3, value: "DECK" }; + _IfcBridgePartTypeEnum.DECK_SEGMENT = { type: 3, value: "DECK_SEGMENT" }; + _IfcBridgePartTypeEnum.FOUNDATION = { type: 3, value: "FOUNDATION" }; + _IfcBridgePartTypeEnum.PIER = { type: 3, value: "PIER" }; + _IfcBridgePartTypeEnum.PIER_SEGMENT = { type: 3, value: "PIER_SEGMENT" }; + _IfcBridgePartTypeEnum.PYLON = { type: 3, value: "PYLON" }; + _IfcBridgePartTypeEnum.SUBSTRUCTURE = { type: 3, value: "SUBSTRUCTURE" }; + _IfcBridgePartTypeEnum.SUPERSTRUCTURE = { type: 3, value: "SUPERSTRUCTURE" }; + _IfcBridgePartTypeEnum.SURFACESTRUCTURE = { type: 3, value: "SURFACESTRUCTURE" }; + _IfcBridgePartTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBridgePartTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBridgePartTypeEnum = _IfcBridgePartTypeEnum; + IFC4X32.IfcBridgePartTypeEnum = IfcBridgePartTypeEnum; + const _IfcBridgeTypeEnum = class _IfcBridgeTypeEnum { + }; + _IfcBridgeTypeEnum.ARCHED = { type: 3, value: "ARCHED" }; + _IfcBridgeTypeEnum.CABLE_STAYED = { type: 3, value: "CABLE_STAYED" }; + _IfcBridgeTypeEnum.CANTILEVER = { type: 3, value: "CANTILEVER" }; + _IfcBridgeTypeEnum.CULVERT = { type: 3, value: "CULVERT" }; + _IfcBridgeTypeEnum.FRAMEWORK = { type: 3, value: "FRAMEWORK" }; + _IfcBridgeTypeEnum.GIRDER = { type: 3, value: "GIRDER" }; + _IfcBridgeTypeEnum.SUSPENSION = { type: 3, value: "SUSPENSION" }; + _IfcBridgeTypeEnum.TRUSS = { type: 3, value: "TRUSS" }; + _IfcBridgeTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBridgeTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBridgeTypeEnum = _IfcBridgeTypeEnum; + IFC4X32.IfcBridgeTypeEnum = IfcBridgeTypeEnum; + const _IfcBuildingElementPartTypeEnum = class _IfcBuildingElementPartTypeEnum { + }; + _IfcBuildingElementPartTypeEnum.APRON = { type: 3, value: "APRON" }; + _IfcBuildingElementPartTypeEnum.ARMOURUNIT = { type: 3, value: "ARMOURUNIT" }; + _IfcBuildingElementPartTypeEnum.INSULATION = { type: 3, value: "INSULATION" }; + _IfcBuildingElementPartTypeEnum.PRECASTPANEL = { type: 3, value: "PRECASTPANEL" }; + _IfcBuildingElementPartTypeEnum.SAFETYCAGE = { type: 3, value: "SAFETYCAGE" }; + _IfcBuildingElementPartTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBuildingElementPartTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBuildingElementPartTypeEnum = _IfcBuildingElementPartTypeEnum; + IFC4X32.IfcBuildingElementPartTypeEnum = IfcBuildingElementPartTypeEnum; + const _IfcBuildingElementProxyTypeEnum = class _IfcBuildingElementProxyTypeEnum { + }; + _IfcBuildingElementProxyTypeEnum.COMPLEX = { type: 3, value: "COMPLEX" }; + _IfcBuildingElementProxyTypeEnum.ELEMENT = { type: 3, value: "ELEMENT" }; + _IfcBuildingElementProxyTypeEnum.PARTIAL = { type: 3, value: "PARTIAL" }; + _IfcBuildingElementProxyTypeEnum.PROVISIONFORSPACE = { type: 3, value: "PROVISIONFORSPACE" }; + _IfcBuildingElementProxyTypeEnum.PROVISIONFORVOID = { type: 3, value: "PROVISIONFORVOID" }; + _IfcBuildingElementProxyTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBuildingElementProxyTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBuildingElementProxyTypeEnum = _IfcBuildingElementProxyTypeEnum; + IFC4X32.IfcBuildingElementProxyTypeEnum = IfcBuildingElementProxyTypeEnum; + const _IfcBuildingSystemTypeEnum = class _IfcBuildingSystemTypeEnum { + }; + _IfcBuildingSystemTypeEnum.FENESTRATION = { type: 3, value: "FENESTRATION" }; + _IfcBuildingSystemTypeEnum.FOUNDATION = { type: 3, value: "FOUNDATION" }; + _IfcBuildingSystemTypeEnum.LOADBEARING = { type: 3, value: "LOADBEARING" }; + _IfcBuildingSystemTypeEnum.OUTERSHELL = { type: 3, value: "OUTERSHELL" }; + _IfcBuildingSystemTypeEnum.SHADING = { type: 3, value: "SHADING" }; + _IfcBuildingSystemTypeEnum.TRANSPORT = { type: 3, value: "TRANSPORT" }; + _IfcBuildingSystemTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBuildingSystemTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBuildingSystemTypeEnum = _IfcBuildingSystemTypeEnum; + IFC4X32.IfcBuildingSystemTypeEnum = IfcBuildingSystemTypeEnum; + const _IfcBuiltSystemTypeEnum = class _IfcBuiltSystemTypeEnum { + }; + _IfcBuiltSystemTypeEnum.EROSIONPREVENTION = { type: 3, value: "EROSIONPREVENTION" }; + _IfcBuiltSystemTypeEnum.FENESTRATION = { type: 3, value: "FENESTRATION" }; + _IfcBuiltSystemTypeEnum.FOUNDATION = { type: 3, value: "FOUNDATION" }; + _IfcBuiltSystemTypeEnum.LOADBEARING = { type: 3, value: "LOADBEARING" }; + _IfcBuiltSystemTypeEnum.MOORING = { type: 3, value: "MOORING" }; + _IfcBuiltSystemTypeEnum.OUTERSHELL = { type: 3, value: "OUTERSHELL" }; + _IfcBuiltSystemTypeEnum.PRESTRESSING = { type: 3, value: "PRESTRESSING" }; + _IfcBuiltSystemTypeEnum.RAILWAYLINE = { type: 3, value: "RAILWAYLINE" }; + _IfcBuiltSystemTypeEnum.RAILWAYTRACK = { type: 3, value: "RAILWAYTRACK" }; + _IfcBuiltSystemTypeEnum.REINFORCING = { type: 3, value: "REINFORCING" }; + _IfcBuiltSystemTypeEnum.SHADING = { type: 3, value: "SHADING" }; + _IfcBuiltSystemTypeEnum.TRACKCIRCUIT = { type: 3, value: "TRACKCIRCUIT" }; + _IfcBuiltSystemTypeEnum.TRANSPORT = { type: 3, value: "TRANSPORT" }; + _IfcBuiltSystemTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBuiltSystemTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBuiltSystemTypeEnum = _IfcBuiltSystemTypeEnum; + IFC4X32.IfcBuiltSystemTypeEnum = IfcBuiltSystemTypeEnum; + const _IfcBurnerTypeEnum = class _IfcBurnerTypeEnum { + }; + _IfcBurnerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcBurnerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcBurnerTypeEnum = _IfcBurnerTypeEnum; + IFC4X32.IfcBurnerTypeEnum = IfcBurnerTypeEnum; + const _IfcCableCarrierFittingTypeEnum = class _IfcCableCarrierFittingTypeEnum { + }; + _IfcCableCarrierFittingTypeEnum.BEND = { type: 3, value: "BEND" }; + _IfcCableCarrierFittingTypeEnum.CONNECTOR = { type: 3, value: "CONNECTOR" }; + _IfcCableCarrierFittingTypeEnum.CROSS = { type: 3, value: "CROSS" }; + _IfcCableCarrierFittingTypeEnum.JUNCTION = { type: 3, value: "JUNCTION" }; + _IfcCableCarrierFittingTypeEnum.REDUCER = { type: 3, value: "REDUCER" }; + _IfcCableCarrierFittingTypeEnum.TEE = { type: 3, value: "TEE" }; + _IfcCableCarrierFittingTypeEnum.TRANSITION = { type: 3, value: "TRANSITION" }; + _IfcCableCarrierFittingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCableCarrierFittingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCableCarrierFittingTypeEnum = _IfcCableCarrierFittingTypeEnum; + IFC4X32.IfcCableCarrierFittingTypeEnum = IfcCableCarrierFittingTypeEnum; + const _IfcCableCarrierSegmentTypeEnum = class _IfcCableCarrierSegmentTypeEnum { + }; + _IfcCableCarrierSegmentTypeEnum.CABLEBRACKET = { type: 3, value: "CABLEBRACKET" }; + _IfcCableCarrierSegmentTypeEnum.CABLELADDERSEGMENT = { type: 3, value: "CABLELADDERSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.CABLETRAYSEGMENT = { type: 3, value: "CABLETRAYSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.CABLETRUNKINGSEGMENT = { type: 3, value: "CABLETRUNKINGSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.CATENARYWIRE = { type: 3, value: "CATENARYWIRE" }; + _IfcCableCarrierSegmentTypeEnum.CONDUITSEGMENT = { type: 3, value: "CONDUITSEGMENT" }; + _IfcCableCarrierSegmentTypeEnum.DROPPER = { type: 3, value: "DROPPER" }; + _IfcCableCarrierSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCableCarrierSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCableCarrierSegmentTypeEnum = _IfcCableCarrierSegmentTypeEnum; + IFC4X32.IfcCableCarrierSegmentTypeEnum = IfcCableCarrierSegmentTypeEnum; + const _IfcCableFittingTypeEnum = class _IfcCableFittingTypeEnum { + }; + _IfcCableFittingTypeEnum.CONNECTOR = { type: 3, value: "CONNECTOR" }; + _IfcCableFittingTypeEnum.ENTRY = { type: 3, value: "ENTRY" }; + _IfcCableFittingTypeEnum.EXIT = { type: 3, value: "EXIT" }; + _IfcCableFittingTypeEnum.FANOUT = { type: 3, value: "FANOUT" }; + _IfcCableFittingTypeEnum.JUNCTION = { type: 3, value: "JUNCTION" }; + _IfcCableFittingTypeEnum.TRANSITION = { type: 3, value: "TRANSITION" }; + _IfcCableFittingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCableFittingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCableFittingTypeEnum = _IfcCableFittingTypeEnum; + IFC4X32.IfcCableFittingTypeEnum = IfcCableFittingTypeEnum; + const _IfcCableSegmentTypeEnum = class _IfcCableSegmentTypeEnum { + }; + _IfcCableSegmentTypeEnum.BUSBARSEGMENT = { type: 3, value: "BUSBARSEGMENT" }; + _IfcCableSegmentTypeEnum.CABLESEGMENT = { type: 3, value: "CABLESEGMENT" }; + _IfcCableSegmentTypeEnum.CONDUCTORSEGMENT = { type: 3, value: "CONDUCTORSEGMENT" }; + _IfcCableSegmentTypeEnum.CONTACTWIRESEGMENT = { type: 3, value: "CONTACTWIRESEGMENT" }; + _IfcCableSegmentTypeEnum.CORESEGMENT = { type: 3, value: "CORESEGMENT" }; + _IfcCableSegmentTypeEnum.FIBERSEGMENT = { type: 3, value: "FIBERSEGMENT" }; + _IfcCableSegmentTypeEnum.FIBERTUBE = { type: 3, value: "FIBERTUBE" }; + _IfcCableSegmentTypeEnum.OPTICALCABLESEGMENT = { type: 3, value: "OPTICALCABLESEGMENT" }; + _IfcCableSegmentTypeEnum.STITCHWIRE = { type: 3, value: "STITCHWIRE" }; + _IfcCableSegmentTypeEnum.WIREPAIRSEGMENT = { type: 3, value: "WIREPAIRSEGMENT" }; + _IfcCableSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCableSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCableSegmentTypeEnum = _IfcCableSegmentTypeEnum; + IFC4X32.IfcCableSegmentTypeEnum = IfcCableSegmentTypeEnum; + const _IfcCaissonFoundationTypeEnum = class _IfcCaissonFoundationTypeEnum { + }; + _IfcCaissonFoundationTypeEnum.CAISSON = { type: 3, value: "CAISSON" }; + _IfcCaissonFoundationTypeEnum.WELL = { type: 3, value: "WELL" }; + _IfcCaissonFoundationTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCaissonFoundationTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCaissonFoundationTypeEnum = _IfcCaissonFoundationTypeEnum; + IFC4X32.IfcCaissonFoundationTypeEnum = IfcCaissonFoundationTypeEnum; + const _IfcChangeActionEnum = class _IfcChangeActionEnum { + }; + _IfcChangeActionEnum.ADDED = { type: 3, value: "ADDED" }; + _IfcChangeActionEnum.DELETED = { type: 3, value: "DELETED" }; + _IfcChangeActionEnum.MODIFIED = { type: 3, value: "MODIFIED" }; + _IfcChangeActionEnum.NOCHANGE = { type: 3, value: "NOCHANGE" }; + _IfcChangeActionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcChangeActionEnum = _IfcChangeActionEnum; + IFC4X32.IfcChangeActionEnum = IfcChangeActionEnum; + const _IfcChillerTypeEnum = class _IfcChillerTypeEnum { + }; + _IfcChillerTypeEnum.AIRCOOLED = { type: 3, value: "AIRCOOLED" }; + _IfcChillerTypeEnum.HEATRECOVERY = { type: 3, value: "HEATRECOVERY" }; + _IfcChillerTypeEnum.WATERCOOLED = { type: 3, value: "WATERCOOLED" }; + _IfcChillerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcChillerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcChillerTypeEnum = _IfcChillerTypeEnum; + IFC4X32.IfcChillerTypeEnum = IfcChillerTypeEnum; + const _IfcChimneyTypeEnum = class _IfcChimneyTypeEnum { + }; + _IfcChimneyTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcChimneyTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcChimneyTypeEnum = _IfcChimneyTypeEnum; + IFC4X32.IfcChimneyTypeEnum = IfcChimneyTypeEnum; + const _IfcCoilTypeEnum = class _IfcCoilTypeEnum { + }; + _IfcCoilTypeEnum.DXCOOLINGCOIL = { type: 3, value: "DXCOOLINGCOIL" }; + _IfcCoilTypeEnum.ELECTRICHEATINGCOIL = { type: 3, value: "ELECTRICHEATINGCOIL" }; + _IfcCoilTypeEnum.GASHEATINGCOIL = { type: 3, value: "GASHEATINGCOIL" }; + _IfcCoilTypeEnum.HYDRONICCOIL = { type: 3, value: "HYDRONICCOIL" }; + _IfcCoilTypeEnum.STEAMHEATINGCOIL = { type: 3, value: "STEAMHEATINGCOIL" }; + _IfcCoilTypeEnum.WATERCOOLINGCOIL = { type: 3, value: "WATERCOOLINGCOIL" }; + _IfcCoilTypeEnum.WATERHEATINGCOIL = { type: 3, value: "WATERHEATINGCOIL" }; + _IfcCoilTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCoilTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCoilTypeEnum = _IfcCoilTypeEnum; + IFC4X32.IfcCoilTypeEnum = IfcCoilTypeEnum; + const _IfcColumnTypeEnum = class _IfcColumnTypeEnum { + }; + _IfcColumnTypeEnum.COLUMN = { type: 3, value: "COLUMN" }; + _IfcColumnTypeEnum.PIERSTEM = { type: 3, value: "PIERSTEM" }; + _IfcColumnTypeEnum.PIERSTEM_SEGMENT = { type: 3, value: "PIERSTEM_SEGMENT" }; + _IfcColumnTypeEnum.PILASTER = { type: 3, value: "PILASTER" }; + _IfcColumnTypeEnum.STANDCOLUMN = { type: 3, value: "STANDCOLUMN" }; + _IfcColumnTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcColumnTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcColumnTypeEnum = _IfcColumnTypeEnum; + IFC4X32.IfcColumnTypeEnum = IfcColumnTypeEnum; + const _IfcCommunicationsApplianceTypeEnum = class _IfcCommunicationsApplianceTypeEnum { + }; + _IfcCommunicationsApplianceTypeEnum.ANTENNA = { type: 3, value: "ANTENNA" }; + _IfcCommunicationsApplianceTypeEnum.AUTOMATON = { type: 3, value: "AUTOMATON" }; + _IfcCommunicationsApplianceTypeEnum.COMPUTER = { type: 3, value: "COMPUTER" }; + _IfcCommunicationsApplianceTypeEnum.FAX = { type: 3, value: "FAX" }; + _IfcCommunicationsApplianceTypeEnum.GATEWAY = { type: 3, value: "GATEWAY" }; + _IfcCommunicationsApplianceTypeEnum.INTELLIGENTPERIPHERAL = { type: 3, value: "INTELLIGENTPERIPHERAL" }; + _IfcCommunicationsApplianceTypeEnum.IPNETWORKEQUIPMENT = { type: 3, value: "IPNETWORKEQUIPMENT" }; + _IfcCommunicationsApplianceTypeEnum.LINESIDEELECTRONICUNIT = { type: 3, value: "LINESIDEELECTRONICUNIT" }; + _IfcCommunicationsApplianceTypeEnum.MODEM = { type: 3, value: "MODEM" }; + _IfcCommunicationsApplianceTypeEnum.NETWORKAPPLIANCE = { type: 3, value: "NETWORKAPPLIANCE" }; + _IfcCommunicationsApplianceTypeEnum.NETWORKBRIDGE = { type: 3, value: "NETWORKBRIDGE" }; + _IfcCommunicationsApplianceTypeEnum.NETWORKHUB = { type: 3, value: "NETWORKHUB" }; + _IfcCommunicationsApplianceTypeEnum.OPTICALLINETERMINAL = { type: 3, value: "OPTICALLINETERMINAL" }; + _IfcCommunicationsApplianceTypeEnum.OPTICALNETWORKUNIT = { type: 3, value: "OPTICALNETWORKUNIT" }; + _IfcCommunicationsApplianceTypeEnum.PRINTER = { type: 3, value: "PRINTER" }; + _IfcCommunicationsApplianceTypeEnum.RADIOBLOCKCENTER = { type: 3, value: "RADIOBLOCKCENTER" }; + _IfcCommunicationsApplianceTypeEnum.REPEATER = { type: 3, value: "REPEATER" }; + _IfcCommunicationsApplianceTypeEnum.ROUTER = { type: 3, value: "ROUTER" }; + _IfcCommunicationsApplianceTypeEnum.SCANNER = { type: 3, value: "SCANNER" }; + _IfcCommunicationsApplianceTypeEnum.TELECOMMAND = { type: 3, value: "TELECOMMAND" }; + _IfcCommunicationsApplianceTypeEnum.TELEPHONYEXCHANGE = { type: 3, value: "TELEPHONYEXCHANGE" }; + _IfcCommunicationsApplianceTypeEnum.TRANSITIONCOMPONENT = { type: 3, value: "TRANSITIONCOMPONENT" }; + _IfcCommunicationsApplianceTypeEnum.TRANSPONDER = { type: 3, value: "TRANSPONDER" }; + _IfcCommunicationsApplianceTypeEnum.TRANSPORTEQUIPMENT = { type: 3, value: "TRANSPORTEQUIPMENT" }; + _IfcCommunicationsApplianceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCommunicationsApplianceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCommunicationsApplianceTypeEnum = _IfcCommunicationsApplianceTypeEnum; + IFC4X32.IfcCommunicationsApplianceTypeEnum = IfcCommunicationsApplianceTypeEnum; + const _IfcComplexPropertyTemplateTypeEnum = class _IfcComplexPropertyTemplateTypeEnum { + }; + _IfcComplexPropertyTemplateTypeEnum.P_COMPLEX = { type: 3, value: "P_COMPLEX" }; + _IfcComplexPropertyTemplateTypeEnum.Q_COMPLEX = { type: 3, value: "Q_COMPLEX" }; + let IfcComplexPropertyTemplateTypeEnum = _IfcComplexPropertyTemplateTypeEnum; + IFC4X32.IfcComplexPropertyTemplateTypeEnum = IfcComplexPropertyTemplateTypeEnum; + const _IfcCompressorTypeEnum = class _IfcCompressorTypeEnum { + }; + _IfcCompressorTypeEnum.BOOSTER = { type: 3, value: "BOOSTER" }; + _IfcCompressorTypeEnum.DYNAMIC = { type: 3, value: "DYNAMIC" }; + _IfcCompressorTypeEnum.HERMETIC = { type: 3, value: "HERMETIC" }; + _IfcCompressorTypeEnum.OPENTYPE = { type: 3, value: "OPENTYPE" }; + _IfcCompressorTypeEnum.RECIPROCATING = { type: 3, value: "RECIPROCATING" }; + _IfcCompressorTypeEnum.ROLLINGPISTON = { type: 3, value: "ROLLINGPISTON" }; + _IfcCompressorTypeEnum.ROTARY = { type: 3, value: "ROTARY" }; + _IfcCompressorTypeEnum.ROTARYVANE = { type: 3, value: "ROTARYVANE" }; + _IfcCompressorTypeEnum.SCROLL = { type: 3, value: "SCROLL" }; + _IfcCompressorTypeEnum.SEMIHERMETIC = { type: 3, value: "SEMIHERMETIC" }; + _IfcCompressorTypeEnum.SINGLESCREW = { type: 3, value: "SINGLESCREW" }; + _IfcCompressorTypeEnum.SINGLESTAGE = { type: 3, value: "SINGLESTAGE" }; + _IfcCompressorTypeEnum.TROCHOIDAL = { type: 3, value: "TROCHOIDAL" }; + _IfcCompressorTypeEnum.TWINSCREW = { type: 3, value: "TWINSCREW" }; + _IfcCompressorTypeEnum.WELDEDSHELLHERMETIC = { type: 3, value: "WELDEDSHELLHERMETIC" }; + _IfcCompressorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCompressorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCompressorTypeEnum = _IfcCompressorTypeEnum; + IFC4X32.IfcCompressorTypeEnum = IfcCompressorTypeEnum; + const _IfcCondenserTypeEnum = class _IfcCondenserTypeEnum { + }; + _IfcCondenserTypeEnum.AIRCOOLED = { type: 3, value: "AIRCOOLED" }; + _IfcCondenserTypeEnum.EVAPORATIVECOOLED = { type: 3, value: "EVAPORATIVECOOLED" }; + _IfcCondenserTypeEnum.WATERCOOLED = { type: 3, value: "WATERCOOLED" }; + _IfcCondenserTypeEnum.WATERCOOLEDBRAZEDPLATE = { type: 3, value: "WATERCOOLEDBRAZEDPLATE" }; + _IfcCondenserTypeEnum.WATERCOOLEDSHELLCOIL = { type: 3, value: "WATERCOOLEDSHELLCOIL" }; + _IfcCondenserTypeEnum.WATERCOOLEDSHELLTUBE = { type: 3, value: "WATERCOOLEDSHELLTUBE" }; + _IfcCondenserTypeEnum.WATERCOOLEDTUBEINTUBE = { type: 3, value: "WATERCOOLEDTUBEINTUBE" }; + _IfcCondenserTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCondenserTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCondenserTypeEnum = _IfcCondenserTypeEnum; + IFC4X32.IfcCondenserTypeEnum = IfcCondenserTypeEnum; + const _IfcConnectionTypeEnum = class _IfcConnectionTypeEnum { + }; + _IfcConnectionTypeEnum.ATEND = { type: 3, value: "ATEND" }; + _IfcConnectionTypeEnum.ATPATH = { type: 3, value: "ATPATH" }; + _IfcConnectionTypeEnum.ATSTART = { type: 3, value: "ATSTART" }; + _IfcConnectionTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConnectionTypeEnum = _IfcConnectionTypeEnum; + IFC4X32.IfcConnectionTypeEnum = IfcConnectionTypeEnum; + const _IfcConstraintEnum = class _IfcConstraintEnum { + }; + _IfcConstraintEnum.ADVISORY = { type: 3, value: "ADVISORY" }; + _IfcConstraintEnum.HARD = { type: 3, value: "HARD" }; + _IfcConstraintEnum.SOFT = { type: 3, value: "SOFT" }; + _IfcConstraintEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcConstraintEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConstraintEnum = _IfcConstraintEnum; + IFC4X32.IfcConstraintEnum = IfcConstraintEnum; + const _IfcConstructionEquipmentResourceTypeEnum = class _IfcConstructionEquipmentResourceTypeEnum { + }; + _IfcConstructionEquipmentResourceTypeEnum.DEMOLISHING = { type: 3, value: "DEMOLISHING" }; + _IfcConstructionEquipmentResourceTypeEnum.EARTHMOVING = { type: 3, value: "EARTHMOVING" }; + _IfcConstructionEquipmentResourceTypeEnum.ERECTING = { type: 3, value: "ERECTING" }; + _IfcConstructionEquipmentResourceTypeEnum.HEATING = { type: 3, value: "HEATING" }; + _IfcConstructionEquipmentResourceTypeEnum.LIGHTING = { type: 3, value: "LIGHTING" }; + _IfcConstructionEquipmentResourceTypeEnum.PAVING = { type: 3, value: "PAVING" }; + _IfcConstructionEquipmentResourceTypeEnum.PUMPING = { type: 3, value: "PUMPING" }; + _IfcConstructionEquipmentResourceTypeEnum.TRANSPORTING = { type: 3, value: "TRANSPORTING" }; + _IfcConstructionEquipmentResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcConstructionEquipmentResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConstructionEquipmentResourceTypeEnum = _IfcConstructionEquipmentResourceTypeEnum; + IFC4X32.IfcConstructionEquipmentResourceTypeEnum = IfcConstructionEquipmentResourceTypeEnum; + const _IfcConstructionMaterialResourceTypeEnum = class _IfcConstructionMaterialResourceTypeEnum { + }; + _IfcConstructionMaterialResourceTypeEnum.AGGREGATES = { type: 3, value: "AGGREGATES" }; + _IfcConstructionMaterialResourceTypeEnum.CONCRETE = { type: 3, value: "CONCRETE" }; + _IfcConstructionMaterialResourceTypeEnum.DRYWALL = { type: 3, value: "DRYWALL" }; + _IfcConstructionMaterialResourceTypeEnum.FUEL = { type: 3, value: "FUEL" }; + _IfcConstructionMaterialResourceTypeEnum.GYPSUM = { type: 3, value: "GYPSUM" }; + _IfcConstructionMaterialResourceTypeEnum.MASONRY = { type: 3, value: "MASONRY" }; + _IfcConstructionMaterialResourceTypeEnum.METAL = { type: 3, value: "METAL" }; + _IfcConstructionMaterialResourceTypeEnum.PLASTIC = { type: 3, value: "PLASTIC" }; + _IfcConstructionMaterialResourceTypeEnum.WOOD = { type: 3, value: "WOOD" }; + _IfcConstructionMaterialResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcConstructionMaterialResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConstructionMaterialResourceTypeEnum = _IfcConstructionMaterialResourceTypeEnum; + IFC4X32.IfcConstructionMaterialResourceTypeEnum = IfcConstructionMaterialResourceTypeEnum; + const _IfcConstructionProductResourceTypeEnum = class _IfcConstructionProductResourceTypeEnum { + }; + _IfcConstructionProductResourceTypeEnum.ASSEMBLY = { type: 3, value: "ASSEMBLY" }; + _IfcConstructionProductResourceTypeEnum.FORMWORK = { type: 3, value: "FORMWORK" }; + _IfcConstructionProductResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcConstructionProductResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConstructionProductResourceTypeEnum = _IfcConstructionProductResourceTypeEnum; + IFC4X32.IfcConstructionProductResourceTypeEnum = IfcConstructionProductResourceTypeEnum; + const _IfcControllerTypeEnum = class _IfcControllerTypeEnum { + }; + _IfcControllerTypeEnum.FLOATING = { type: 3, value: "FLOATING" }; + _IfcControllerTypeEnum.MULTIPOSITION = { type: 3, value: "MULTIPOSITION" }; + _IfcControllerTypeEnum.PROGRAMMABLE = { type: 3, value: "PROGRAMMABLE" }; + _IfcControllerTypeEnum.PROPORTIONAL = { type: 3, value: "PROPORTIONAL" }; + _IfcControllerTypeEnum.TWOPOSITION = { type: 3, value: "TWOPOSITION" }; + _IfcControllerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcControllerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcControllerTypeEnum = _IfcControllerTypeEnum; + IFC4X32.IfcControllerTypeEnum = IfcControllerTypeEnum; + const _IfcConveyorSegmentTypeEnum = class _IfcConveyorSegmentTypeEnum { + }; + _IfcConveyorSegmentTypeEnum.BELTCONVEYOR = { type: 3, value: "BELTCONVEYOR" }; + _IfcConveyorSegmentTypeEnum.BUCKETCONVEYOR = { type: 3, value: "BUCKETCONVEYOR" }; + _IfcConveyorSegmentTypeEnum.CHUTECONVEYOR = { type: 3, value: "CHUTECONVEYOR" }; + _IfcConveyorSegmentTypeEnum.SCREWCONVEYOR = { type: 3, value: "SCREWCONVEYOR" }; + _IfcConveyorSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcConveyorSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcConveyorSegmentTypeEnum = _IfcConveyorSegmentTypeEnum; + IFC4X32.IfcConveyorSegmentTypeEnum = IfcConveyorSegmentTypeEnum; + const _IfcCooledBeamTypeEnum = class _IfcCooledBeamTypeEnum { + }; + _IfcCooledBeamTypeEnum.ACTIVE = { type: 3, value: "ACTIVE" }; + _IfcCooledBeamTypeEnum.PASSIVE = { type: 3, value: "PASSIVE" }; + _IfcCooledBeamTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCooledBeamTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCooledBeamTypeEnum = _IfcCooledBeamTypeEnum; + IFC4X32.IfcCooledBeamTypeEnum = IfcCooledBeamTypeEnum; + const _IfcCoolingTowerTypeEnum = class _IfcCoolingTowerTypeEnum { + }; + _IfcCoolingTowerTypeEnum.MECHANICALFORCEDDRAFT = { type: 3, value: "MECHANICALFORCEDDRAFT" }; + _IfcCoolingTowerTypeEnum.MECHANICALINDUCEDDRAFT = { type: 3, value: "MECHANICALINDUCEDDRAFT" }; + _IfcCoolingTowerTypeEnum.NATURALDRAFT = { type: 3, value: "NATURALDRAFT" }; + _IfcCoolingTowerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCoolingTowerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCoolingTowerTypeEnum = _IfcCoolingTowerTypeEnum; + IFC4X32.IfcCoolingTowerTypeEnum = IfcCoolingTowerTypeEnum; + const _IfcCostItemTypeEnum = class _IfcCostItemTypeEnum { + }; + _IfcCostItemTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCostItemTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCostItemTypeEnum = _IfcCostItemTypeEnum; + IFC4X32.IfcCostItemTypeEnum = IfcCostItemTypeEnum; + const _IfcCostScheduleTypeEnum = class _IfcCostScheduleTypeEnum { + }; + _IfcCostScheduleTypeEnum.BUDGET = { type: 3, value: "BUDGET" }; + _IfcCostScheduleTypeEnum.COSTPLAN = { type: 3, value: "COSTPLAN" }; + _IfcCostScheduleTypeEnum.ESTIMATE = { type: 3, value: "ESTIMATE" }; + _IfcCostScheduleTypeEnum.PRICEDBILLOFQUANTITIES = { type: 3, value: "PRICEDBILLOFQUANTITIES" }; + _IfcCostScheduleTypeEnum.SCHEDULEOFRATES = { type: 3, value: "SCHEDULEOFRATES" }; + _IfcCostScheduleTypeEnum.TENDER = { type: 3, value: "TENDER" }; + _IfcCostScheduleTypeEnum.UNPRICEDBILLOFQUANTITIES = { type: 3, value: "UNPRICEDBILLOFQUANTITIES" }; + _IfcCostScheduleTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCostScheduleTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCostScheduleTypeEnum = _IfcCostScheduleTypeEnum; + IFC4X32.IfcCostScheduleTypeEnum = IfcCostScheduleTypeEnum; + const _IfcCourseTypeEnum = class _IfcCourseTypeEnum { + }; + _IfcCourseTypeEnum.ARMOUR = { type: 3, value: "ARMOUR" }; + _IfcCourseTypeEnum.BALLASTBED = { type: 3, value: "BALLASTBED" }; + _IfcCourseTypeEnum.CORE = { type: 3, value: "CORE" }; + _IfcCourseTypeEnum.FILTER = { type: 3, value: "FILTER" }; + _IfcCourseTypeEnum.PAVEMENT = { type: 3, value: "PAVEMENT" }; + _IfcCourseTypeEnum.PROTECTION = { type: 3, value: "PROTECTION" }; + _IfcCourseTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCourseTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCourseTypeEnum = _IfcCourseTypeEnum; + IFC4X32.IfcCourseTypeEnum = IfcCourseTypeEnum; + const _IfcCoveringTypeEnum = class _IfcCoveringTypeEnum { + }; + _IfcCoveringTypeEnum.CEILING = { type: 3, value: "CEILING" }; + _IfcCoveringTypeEnum.CLADDING = { type: 3, value: "CLADDING" }; + _IfcCoveringTypeEnum.COPING = { type: 3, value: "COPING" }; + _IfcCoveringTypeEnum.FLOORING = { type: 3, value: "FLOORING" }; + _IfcCoveringTypeEnum.INSULATION = { type: 3, value: "INSULATION" }; + _IfcCoveringTypeEnum.MEMBRANE = { type: 3, value: "MEMBRANE" }; + _IfcCoveringTypeEnum.MOLDING = { type: 3, value: "MOLDING" }; + _IfcCoveringTypeEnum.ROOFING = { type: 3, value: "ROOFING" }; + _IfcCoveringTypeEnum.SKIRTINGBOARD = { type: 3, value: "SKIRTINGBOARD" }; + _IfcCoveringTypeEnum.SLEEVING = { type: 3, value: "SLEEVING" }; + _IfcCoveringTypeEnum.TOPPING = { type: 3, value: "TOPPING" }; + _IfcCoveringTypeEnum.WRAPPING = { type: 3, value: "WRAPPING" }; + _IfcCoveringTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCoveringTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCoveringTypeEnum = _IfcCoveringTypeEnum; + IFC4X32.IfcCoveringTypeEnum = IfcCoveringTypeEnum; + const _IfcCrewResourceTypeEnum = class _IfcCrewResourceTypeEnum { + }; + _IfcCrewResourceTypeEnum.OFFICE = { type: 3, value: "OFFICE" }; + _IfcCrewResourceTypeEnum.SITE = { type: 3, value: "SITE" }; + _IfcCrewResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCrewResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCrewResourceTypeEnum = _IfcCrewResourceTypeEnum; + IFC4X32.IfcCrewResourceTypeEnum = IfcCrewResourceTypeEnum; + const _IfcCurtainWallTypeEnum = class _IfcCurtainWallTypeEnum { + }; + _IfcCurtainWallTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcCurtainWallTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCurtainWallTypeEnum = _IfcCurtainWallTypeEnum; + IFC4X32.IfcCurtainWallTypeEnum = IfcCurtainWallTypeEnum; + const _IfcCurveInterpolationEnum = class _IfcCurveInterpolationEnum { + }; + _IfcCurveInterpolationEnum.LINEAR = { type: 3, value: "LINEAR" }; + _IfcCurveInterpolationEnum.LOG_LINEAR = { type: 3, value: "LOG_LINEAR" }; + _IfcCurveInterpolationEnum.LOG_LOG = { type: 3, value: "LOG_LOG" }; + _IfcCurveInterpolationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcCurveInterpolationEnum = _IfcCurveInterpolationEnum; + IFC4X32.IfcCurveInterpolationEnum = IfcCurveInterpolationEnum; + const _IfcDamperTypeEnum = class _IfcDamperTypeEnum { + }; + _IfcDamperTypeEnum.BACKDRAFTDAMPER = { type: 3, value: "BACKDRAFTDAMPER" }; + _IfcDamperTypeEnum.BALANCINGDAMPER = { type: 3, value: "BALANCINGDAMPER" }; + _IfcDamperTypeEnum.BLASTDAMPER = { type: 3, value: "BLASTDAMPER" }; + _IfcDamperTypeEnum.CONTROLDAMPER = { type: 3, value: "CONTROLDAMPER" }; + _IfcDamperTypeEnum.FIREDAMPER = { type: 3, value: "FIREDAMPER" }; + _IfcDamperTypeEnum.FIRESMOKEDAMPER = { type: 3, value: "FIRESMOKEDAMPER" }; + _IfcDamperTypeEnum.FUMEHOODEXHAUST = { type: 3, value: "FUMEHOODEXHAUST" }; + _IfcDamperTypeEnum.GRAVITYDAMPER = { type: 3, value: "GRAVITYDAMPER" }; + _IfcDamperTypeEnum.GRAVITYRELIEFDAMPER = { type: 3, value: "GRAVITYRELIEFDAMPER" }; + _IfcDamperTypeEnum.RELIEFDAMPER = { type: 3, value: "RELIEFDAMPER" }; + _IfcDamperTypeEnum.SMOKEDAMPER = { type: 3, value: "SMOKEDAMPER" }; + _IfcDamperTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDamperTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDamperTypeEnum = _IfcDamperTypeEnum; + IFC4X32.IfcDamperTypeEnum = IfcDamperTypeEnum; + const _IfcDataOriginEnum = class _IfcDataOriginEnum { + }; + _IfcDataOriginEnum.MEASURED = { type: 3, value: "MEASURED" }; + _IfcDataOriginEnum.PREDICTED = { type: 3, value: "PREDICTED" }; + _IfcDataOriginEnum.SIMULATED = { type: 3, value: "SIMULATED" }; + _IfcDataOriginEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDataOriginEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDataOriginEnum = _IfcDataOriginEnum; + IFC4X32.IfcDataOriginEnum = IfcDataOriginEnum; + const _IfcDerivedUnitEnum = class _IfcDerivedUnitEnum { + }; + _IfcDerivedUnitEnum.ACCELERATIONUNIT = { type: 3, value: "ACCELERATIONUNIT" }; + _IfcDerivedUnitEnum.ANGULARVELOCITYUNIT = { type: 3, value: "ANGULARVELOCITYUNIT" }; + _IfcDerivedUnitEnum.AREADENSITYUNIT = { type: 3, value: "AREADENSITYUNIT" }; + _IfcDerivedUnitEnum.COMPOUNDPLANEANGLEUNIT = { type: 3, value: "COMPOUNDPLANEANGLEUNIT" }; + _IfcDerivedUnitEnum.CURVATUREUNIT = { type: 3, value: "CURVATUREUNIT" }; + _IfcDerivedUnitEnum.DYNAMICVISCOSITYUNIT = { type: 3, value: "DYNAMICVISCOSITYUNIT" }; + _IfcDerivedUnitEnum.HEATFLUXDENSITYUNIT = { type: 3, value: "HEATFLUXDENSITYUNIT" }; + _IfcDerivedUnitEnum.HEATINGVALUEUNIT = { type: 3, value: "HEATINGVALUEUNIT" }; + _IfcDerivedUnitEnum.INTEGERCOUNTRATEUNIT = { type: 3, value: "INTEGERCOUNTRATEUNIT" }; + _IfcDerivedUnitEnum.IONCONCENTRATIONUNIT = { type: 3, value: "IONCONCENTRATIONUNIT" }; + _IfcDerivedUnitEnum.ISOTHERMALMOISTURECAPACITYUNIT = { type: 3, value: "ISOTHERMALMOISTURECAPACITYUNIT" }; + _IfcDerivedUnitEnum.KINEMATICVISCOSITYUNIT = { type: 3, value: "KINEMATICVISCOSITYUNIT" }; + _IfcDerivedUnitEnum.LINEARFORCEUNIT = { type: 3, value: "LINEARFORCEUNIT" }; + _IfcDerivedUnitEnum.LINEARMOMENTUNIT = { type: 3, value: "LINEARMOMENTUNIT" }; + _IfcDerivedUnitEnum.LINEARSTIFFNESSUNIT = { type: 3, value: "LINEARSTIFFNESSUNIT" }; + _IfcDerivedUnitEnum.LINEARVELOCITYUNIT = { type: 3, value: "LINEARVELOCITYUNIT" }; + _IfcDerivedUnitEnum.LUMINOUSINTENSITYDISTRIBUTIONUNIT = { type: 3, value: "LUMINOUSINTENSITYDISTRIBUTIONUNIT" }; + _IfcDerivedUnitEnum.MASSDENSITYUNIT = { type: 3, value: "MASSDENSITYUNIT" }; + _IfcDerivedUnitEnum.MASSFLOWRATEUNIT = { type: 3, value: "MASSFLOWRATEUNIT" }; + _IfcDerivedUnitEnum.MASSPERLENGTHUNIT = { type: 3, value: "MASSPERLENGTHUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFELASTICITYUNIT = { type: 3, value: "MODULUSOFELASTICITYUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFLINEARSUBGRADEREACTIONUNIT = { type: 3, value: "MODULUSOFLINEARSUBGRADEREACTIONUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFROTATIONALSUBGRADEREACTIONUNIT = { type: 3, value: "MODULUSOFROTATIONALSUBGRADEREACTIONUNIT" }; + _IfcDerivedUnitEnum.MODULUSOFSUBGRADEREACTIONUNIT = { type: 3, value: "MODULUSOFSUBGRADEREACTIONUNIT" }; + _IfcDerivedUnitEnum.MOISTUREDIFFUSIVITYUNIT = { type: 3, value: "MOISTUREDIFFUSIVITYUNIT" }; + _IfcDerivedUnitEnum.MOLECULARWEIGHTUNIT = { type: 3, value: "MOLECULARWEIGHTUNIT" }; + _IfcDerivedUnitEnum.MOMENTOFINERTIAUNIT = { type: 3, value: "MOMENTOFINERTIAUNIT" }; + _IfcDerivedUnitEnum.PHUNIT = { type: 3, value: "PHUNIT" }; + _IfcDerivedUnitEnum.PLANARFORCEUNIT = { type: 3, value: "PLANARFORCEUNIT" }; + _IfcDerivedUnitEnum.ROTATIONALFREQUENCYUNIT = { type: 3, value: "ROTATIONALFREQUENCYUNIT" }; + _IfcDerivedUnitEnum.ROTATIONALMASSUNIT = { type: 3, value: "ROTATIONALMASSUNIT" }; + _IfcDerivedUnitEnum.ROTATIONALSTIFFNESSUNIT = { type: 3, value: "ROTATIONALSTIFFNESSUNIT" }; + _IfcDerivedUnitEnum.SECTIONAREAINTEGRALUNIT = { type: 3, value: "SECTIONAREAINTEGRALUNIT" }; + _IfcDerivedUnitEnum.SECTIONMODULUSUNIT = { type: 3, value: "SECTIONMODULUSUNIT" }; + _IfcDerivedUnitEnum.SHEARMODULUSUNIT = { type: 3, value: "SHEARMODULUSUNIT" }; + _IfcDerivedUnitEnum.SOUNDPOWERLEVELUNIT = { type: 3, value: "SOUNDPOWERLEVELUNIT" }; + _IfcDerivedUnitEnum.SOUNDPOWERUNIT = { type: 3, value: "SOUNDPOWERUNIT" }; + _IfcDerivedUnitEnum.SOUNDPRESSURELEVELUNIT = { type: 3, value: "SOUNDPRESSURELEVELUNIT" }; + _IfcDerivedUnitEnum.SOUNDPRESSUREUNIT = { type: 3, value: "SOUNDPRESSUREUNIT" }; + _IfcDerivedUnitEnum.SPECIFICHEATCAPACITYUNIT = { type: 3, value: "SPECIFICHEATCAPACITYUNIT" }; + _IfcDerivedUnitEnum.TEMPERATUREGRADIENTUNIT = { type: 3, value: "TEMPERATUREGRADIENTUNIT" }; + _IfcDerivedUnitEnum.TEMPERATURERATEOFCHANGEUNIT = { type: 3, value: "TEMPERATURERATEOFCHANGEUNIT" }; + _IfcDerivedUnitEnum.THERMALADMITTANCEUNIT = { type: 3, value: "THERMALADMITTANCEUNIT" }; + _IfcDerivedUnitEnum.THERMALCONDUCTANCEUNIT = { type: 3, value: "THERMALCONDUCTANCEUNIT" }; + _IfcDerivedUnitEnum.THERMALEXPANSIONCOEFFICIENTUNIT = { type: 3, value: "THERMALEXPANSIONCOEFFICIENTUNIT" }; + _IfcDerivedUnitEnum.THERMALRESISTANCEUNIT = { type: 3, value: "THERMALRESISTANCEUNIT" }; + _IfcDerivedUnitEnum.THERMALTRANSMITTANCEUNIT = { type: 3, value: "THERMALTRANSMITTANCEUNIT" }; + _IfcDerivedUnitEnum.TORQUEUNIT = { type: 3, value: "TORQUEUNIT" }; + _IfcDerivedUnitEnum.VAPORPERMEABILITYUNIT = { type: 3, value: "VAPORPERMEABILITYUNIT" }; + _IfcDerivedUnitEnum.VOLUMETRICFLOWRATEUNIT = { type: 3, value: "VOLUMETRICFLOWRATEUNIT" }; + _IfcDerivedUnitEnum.WARPINGCONSTANTUNIT = { type: 3, value: "WARPINGCONSTANTUNIT" }; + _IfcDerivedUnitEnum.WARPINGMOMENTUNIT = { type: 3, value: "WARPINGMOMENTUNIT" }; + _IfcDerivedUnitEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcDerivedUnitEnum = _IfcDerivedUnitEnum; + IFC4X32.IfcDerivedUnitEnum = IfcDerivedUnitEnum; + const _IfcDirectionSenseEnum = class _IfcDirectionSenseEnum { + }; + _IfcDirectionSenseEnum.NEGATIVE = { type: 3, value: "NEGATIVE" }; + _IfcDirectionSenseEnum.POSITIVE = { type: 3, value: "POSITIVE" }; + let IfcDirectionSenseEnum = _IfcDirectionSenseEnum; + IFC4X32.IfcDirectionSenseEnum = IfcDirectionSenseEnum; + const _IfcDiscreteAccessoryTypeEnum = class _IfcDiscreteAccessoryTypeEnum { + }; + _IfcDiscreteAccessoryTypeEnum.ANCHORPLATE = { type: 3, value: "ANCHORPLATE" }; + _IfcDiscreteAccessoryTypeEnum.BIRDPROTECTION = { type: 3, value: "BIRDPROTECTION" }; + _IfcDiscreteAccessoryTypeEnum.BRACKET = { type: 3, value: "BRACKET" }; + _IfcDiscreteAccessoryTypeEnum.CABLEARRANGER = { type: 3, value: "CABLEARRANGER" }; + _IfcDiscreteAccessoryTypeEnum.ELASTIC_CUSHION = { type: 3, value: "ELASTIC_CUSHION" }; + _IfcDiscreteAccessoryTypeEnum.EXPANSION_JOINT_DEVICE = { type: 3, value: "EXPANSION_JOINT_DEVICE" }; + _IfcDiscreteAccessoryTypeEnum.FILLER = { type: 3, value: "FILLER" }; + _IfcDiscreteAccessoryTypeEnum.FLASHING = { type: 3, value: "FLASHING" }; + _IfcDiscreteAccessoryTypeEnum.INSULATOR = { type: 3, value: "INSULATOR" }; + _IfcDiscreteAccessoryTypeEnum.LOCK = { type: 3, value: "LOCK" }; + _IfcDiscreteAccessoryTypeEnum.PANEL_STRENGTHENING = { type: 3, value: "PANEL_STRENGTHENING" }; + _IfcDiscreteAccessoryTypeEnum.POINTMACHINEMOUNTINGDEVICE = { type: 3, value: "POINTMACHINEMOUNTINGDEVICE" }; + _IfcDiscreteAccessoryTypeEnum.POINT_MACHINE_LOCKING_DEVICE = { type: 3, value: "POINT_MACHINE_LOCKING_DEVICE" }; + _IfcDiscreteAccessoryTypeEnum.RAILBRACE = { type: 3, value: "RAILBRACE" }; + _IfcDiscreteAccessoryTypeEnum.RAILPAD = { type: 3, value: "RAILPAD" }; + _IfcDiscreteAccessoryTypeEnum.RAIL_LUBRICATION = { type: 3, value: "RAIL_LUBRICATION" }; + _IfcDiscreteAccessoryTypeEnum.RAIL_MECHANICAL_EQUIPMENT = { type: 3, value: "RAIL_MECHANICAL_EQUIPMENT" }; + _IfcDiscreteAccessoryTypeEnum.SHOE = { type: 3, value: "SHOE" }; + _IfcDiscreteAccessoryTypeEnum.SLIDINGCHAIR = { type: 3, value: "SLIDINGCHAIR" }; + _IfcDiscreteAccessoryTypeEnum.SOUNDABSORPTION = { type: 3, value: "SOUNDABSORPTION" }; + _IfcDiscreteAccessoryTypeEnum.TENSIONINGEQUIPMENT = { type: 3, value: "TENSIONINGEQUIPMENT" }; + _IfcDiscreteAccessoryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDiscreteAccessoryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDiscreteAccessoryTypeEnum = _IfcDiscreteAccessoryTypeEnum; + IFC4X32.IfcDiscreteAccessoryTypeEnum = IfcDiscreteAccessoryTypeEnum; + const _IfcDistributionBoardTypeEnum = class _IfcDistributionBoardTypeEnum { + }; + _IfcDistributionBoardTypeEnum.CONSUMERUNIT = { type: 3, value: "CONSUMERUNIT" }; + _IfcDistributionBoardTypeEnum.DISPATCHINGBOARD = { type: 3, value: "DISPATCHINGBOARD" }; + _IfcDistributionBoardTypeEnum.DISTRIBUTIONBOARD = { type: 3, value: "DISTRIBUTIONBOARD" }; + _IfcDistributionBoardTypeEnum.DISTRIBUTIONFRAME = { type: 3, value: "DISTRIBUTIONFRAME" }; + _IfcDistributionBoardTypeEnum.MOTORCONTROLCENTRE = { type: 3, value: "MOTORCONTROLCENTRE" }; + _IfcDistributionBoardTypeEnum.SWITCHBOARD = { type: 3, value: "SWITCHBOARD" }; + _IfcDistributionBoardTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDistributionBoardTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDistributionBoardTypeEnum = _IfcDistributionBoardTypeEnum; + IFC4X32.IfcDistributionBoardTypeEnum = IfcDistributionBoardTypeEnum; + const _IfcDistributionChamberElementTypeEnum = class _IfcDistributionChamberElementTypeEnum { + }; + _IfcDistributionChamberElementTypeEnum.FORMEDDUCT = { type: 3, value: "FORMEDDUCT" }; + _IfcDistributionChamberElementTypeEnum.INSPECTIONCHAMBER = { type: 3, value: "INSPECTIONCHAMBER" }; + _IfcDistributionChamberElementTypeEnum.INSPECTIONPIT = { type: 3, value: "INSPECTIONPIT" }; + _IfcDistributionChamberElementTypeEnum.MANHOLE = { type: 3, value: "MANHOLE" }; + _IfcDistributionChamberElementTypeEnum.METERCHAMBER = { type: 3, value: "METERCHAMBER" }; + _IfcDistributionChamberElementTypeEnum.SUMP = { type: 3, value: "SUMP" }; + _IfcDistributionChamberElementTypeEnum.TRENCH = { type: 3, value: "TRENCH" }; + _IfcDistributionChamberElementTypeEnum.VALVECHAMBER = { type: 3, value: "VALVECHAMBER" }; + _IfcDistributionChamberElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDistributionChamberElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDistributionChamberElementTypeEnum = _IfcDistributionChamberElementTypeEnum; + IFC4X32.IfcDistributionChamberElementTypeEnum = IfcDistributionChamberElementTypeEnum; + const _IfcDistributionPortTypeEnum = class _IfcDistributionPortTypeEnum { + }; + _IfcDistributionPortTypeEnum.CABLE = { type: 3, value: "CABLE" }; + _IfcDistributionPortTypeEnum.CABLECARRIER = { type: 3, value: "CABLECARRIER" }; + _IfcDistributionPortTypeEnum.DUCT = { type: 3, value: "DUCT" }; + _IfcDistributionPortTypeEnum.PIPE = { type: 3, value: "PIPE" }; + _IfcDistributionPortTypeEnum.WIRELESS = { type: 3, value: "WIRELESS" }; + _IfcDistributionPortTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDistributionPortTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDistributionPortTypeEnum = _IfcDistributionPortTypeEnum; + IFC4X32.IfcDistributionPortTypeEnum = IfcDistributionPortTypeEnum; + const _IfcDistributionSystemEnum = class _IfcDistributionSystemEnum { + }; + _IfcDistributionSystemEnum.AIRCONDITIONING = { type: 3, value: "AIRCONDITIONING" }; + _IfcDistributionSystemEnum.AUDIOVISUAL = { type: 3, value: "AUDIOVISUAL" }; + _IfcDistributionSystemEnum.CATENARY_SYSTEM = { type: 3, value: "CATENARY_SYSTEM" }; + _IfcDistributionSystemEnum.CHEMICAL = { type: 3, value: "CHEMICAL" }; + _IfcDistributionSystemEnum.CHILLEDWATER = { type: 3, value: "CHILLEDWATER" }; + _IfcDistributionSystemEnum.COMMUNICATION = { type: 3, value: "COMMUNICATION" }; + _IfcDistributionSystemEnum.COMPRESSEDAIR = { type: 3, value: "COMPRESSEDAIR" }; + _IfcDistributionSystemEnum.CONDENSERWATER = { type: 3, value: "CONDENSERWATER" }; + _IfcDistributionSystemEnum.CONTROL = { type: 3, value: "CONTROL" }; + _IfcDistributionSystemEnum.CONVEYING = { type: 3, value: "CONVEYING" }; + _IfcDistributionSystemEnum.DATA = { type: 3, value: "DATA" }; + _IfcDistributionSystemEnum.DISPOSAL = { type: 3, value: "DISPOSAL" }; + _IfcDistributionSystemEnum.DOMESTICCOLDWATER = { type: 3, value: "DOMESTICCOLDWATER" }; + _IfcDistributionSystemEnum.DOMESTICHOTWATER = { type: 3, value: "DOMESTICHOTWATER" }; + _IfcDistributionSystemEnum.DRAINAGE = { type: 3, value: "DRAINAGE" }; + _IfcDistributionSystemEnum.EARTHING = { type: 3, value: "EARTHING" }; + _IfcDistributionSystemEnum.ELECTRICAL = { type: 3, value: "ELECTRICAL" }; + _IfcDistributionSystemEnum.ELECTROACOUSTIC = { type: 3, value: "ELECTROACOUSTIC" }; + _IfcDistributionSystemEnum.EXHAUST = { type: 3, value: "EXHAUST" }; + _IfcDistributionSystemEnum.FIREPROTECTION = { type: 3, value: "FIREPROTECTION" }; + _IfcDistributionSystemEnum.FIXEDTRANSMISSIONNETWORK = { type: 3, value: "FIXEDTRANSMISSIONNETWORK" }; + _IfcDistributionSystemEnum.FUEL = { type: 3, value: "FUEL" }; + _IfcDistributionSystemEnum.GAS = { type: 3, value: "GAS" }; + _IfcDistributionSystemEnum.HAZARDOUS = { type: 3, value: "HAZARDOUS" }; + _IfcDistributionSystemEnum.HEATING = { type: 3, value: "HEATING" }; + _IfcDistributionSystemEnum.LIGHTING = { type: 3, value: "LIGHTING" }; + _IfcDistributionSystemEnum.LIGHTNINGPROTECTION = { type: 3, value: "LIGHTNINGPROTECTION" }; + _IfcDistributionSystemEnum.MOBILENETWORK = { type: 3, value: "MOBILENETWORK" }; + _IfcDistributionSystemEnum.MONITORINGSYSTEM = { type: 3, value: "MONITORINGSYSTEM" }; + _IfcDistributionSystemEnum.MUNICIPALSOLIDWASTE = { type: 3, value: "MUNICIPALSOLIDWASTE" }; + _IfcDistributionSystemEnum.OIL = { type: 3, value: "OIL" }; + _IfcDistributionSystemEnum.OPERATIONAL = { type: 3, value: "OPERATIONAL" }; + _IfcDistributionSystemEnum.OPERATIONALTELEPHONYSYSTEM = { type: 3, value: "OPERATIONALTELEPHONYSYSTEM" }; + _IfcDistributionSystemEnum.OVERHEAD_CONTACTLINE_SYSTEM = { type: 3, value: "OVERHEAD_CONTACTLINE_SYSTEM" }; + _IfcDistributionSystemEnum.POWERGENERATION = { type: 3, value: "POWERGENERATION" }; + _IfcDistributionSystemEnum.RAINWATER = { type: 3, value: "RAINWATER" }; + _IfcDistributionSystemEnum.REFRIGERATION = { type: 3, value: "REFRIGERATION" }; + _IfcDistributionSystemEnum.RETURN_CIRCUIT = { type: 3, value: "RETURN_CIRCUIT" }; + _IfcDistributionSystemEnum.SECURITY = { type: 3, value: "SECURITY" }; + _IfcDistributionSystemEnum.SEWAGE = { type: 3, value: "SEWAGE" }; + _IfcDistributionSystemEnum.SIGNAL = { type: 3, value: "SIGNAL" }; + _IfcDistributionSystemEnum.STORMWATER = { type: 3, value: "STORMWATER" }; + _IfcDistributionSystemEnum.TELEPHONE = { type: 3, value: "TELEPHONE" }; + _IfcDistributionSystemEnum.TV = { type: 3, value: "TV" }; + _IfcDistributionSystemEnum.VACUUM = { type: 3, value: "VACUUM" }; + _IfcDistributionSystemEnum.VENT = { type: 3, value: "VENT" }; + _IfcDistributionSystemEnum.VENTILATION = { type: 3, value: "VENTILATION" }; + _IfcDistributionSystemEnum.WASTEWATER = { type: 3, value: "WASTEWATER" }; + _IfcDistributionSystemEnum.WATERSUPPLY = { type: 3, value: "WATERSUPPLY" }; + _IfcDistributionSystemEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDistributionSystemEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDistributionSystemEnum = _IfcDistributionSystemEnum; + IFC4X32.IfcDistributionSystemEnum = IfcDistributionSystemEnum; + const _IfcDocumentConfidentialityEnum = class _IfcDocumentConfidentialityEnum { + }; + _IfcDocumentConfidentialityEnum.CONFIDENTIAL = { type: 3, value: "CONFIDENTIAL" }; + _IfcDocumentConfidentialityEnum.PERSONAL = { type: 3, value: "PERSONAL" }; + _IfcDocumentConfidentialityEnum.PUBLIC = { type: 3, value: "PUBLIC" }; + _IfcDocumentConfidentialityEnum.RESTRICTED = { type: 3, value: "RESTRICTED" }; + _IfcDocumentConfidentialityEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDocumentConfidentialityEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDocumentConfidentialityEnum = _IfcDocumentConfidentialityEnum; + IFC4X32.IfcDocumentConfidentialityEnum = IfcDocumentConfidentialityEnum; + const _IfcDocumentStatusEnum = class _IfcDocumentStatusEnum { + }; + _IfcDocumentStatusEnum.DRAFT = { type: 3, value: "DRAFT" }; + _IfcDocumentStatusEnum.FINAL = { type: 3, value: "FINAL" }; + _IfcDocumentStatusEnum.FINALDRAFT = { type: 3, value: "FINALDRAFT" }; + _IfcDocumentStatusEnum.REVISION = { type: 3, value: "REVISION" }; + _IfcDocumentStatusEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDocumentStatusEnum = _IfcDocumentStatusEnum; + IFC4X32.IfcDocumentStatusEnum = IfcDocumentStatusEnum; + const _IfcDoorPanelOperationEnum = class _IfcDoorPanelOperationEnum { + }; + _IfcDoorPanelOperationEnum.DOUBLE_ACTING = { type: 3, value: "DOUBLE_ACTING" }; + _IfcDoorPanelOperationEnum.FIXEDPANEL = { type: 3, value: "FIXEDPANEL" }; + _IfcDoorPanelOperationEnum.FOLDING = { type: 3, value: "FOLDING" }; + _IfcDoorPanelOperationEnum.REVOLVING = { type: 3, value: "REVOLVING" }; + _IfcDoorPanelOperationEnum.ROLLINGUP = { type: 3, value: "ROLLINGUP" }; + _IfcDoorPanelOperationEnum.SLIDING = { type: 3, value: "SLIDING" }; + _IfcDoorPanelOperationEnum.SWINGING = { type: 3, value: "SWINGING" }; + _IfcDoorPanelOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDoorPanelOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorPanelOperationEnum = _IfcDoorPanelOperationEnum; + IFC4X32.IfcDoorPanelOperationEnum = IfcDoorPanelOperationEnum; + const _IfcDoorPanelPositionEnum = class _IfcDoorPanelPositionEnum { + }; + _IfcDoorPanelPositionEnum.LEFT = { type: 3, value: "LEFT" }; + _IfcDoorPanelPositionEnum.MIDDLE = { type: 3, value: "MIDDLE" }; + _IfcDoorPanelPositionEnum.RIGHT = { type: 3, value: "RIGHT" }; + _IfcDoorPanelPositionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorPanelPositionEnum = _IfcDoorPanelPositionEnum; + IFC4X32.IfcDoorPanelPositionEnum = IfcDoorPanelPositionEnum; + const _IfcDoorTypeEnum = class _IfcDoorTypeEnum { + }; + _IfcDoorTypeEnum.BOOM_BARRIER = { type: 3, value: "BOOM_BARRIER" }; + _IfcDoorTypeEnum.DOOR = { type: 3, value: "DOOR" }; + _IfcDoorTypeEnum.GATE = { type: 3, value: "GATE" }; + _IfcDoorTypeEnum.TRAPDOOR = { type: 3, value: "TRAPDOOR" }; + _IfcDoorTypeEnum.TURNSTILE = { type: 3, value: "TURNSTILE" }; + _IfcDoorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDoorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorTypeEnum = _IfcDoorTypeEnum; + IFC4X32.IfcDoorTypeEnum = IfcDoorTypeEnum; + const _IfcDoorTypeOperationEnum = class _IfcDoorTypeOperationEnum { + }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_DOUBLE_SWING = { type: 3, value: "DOUBLE_DOOR_DOUBLE_SWING" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_FOLDING = { type: 3, value: "DOUBLE_DOOR_FOLDING" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_LIFTING_VERTICAL = { type: 3, value: "DOUBLE_DOOR_LIFTING_VERTICAL" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT = { type: 3, value: "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT" }; + _IfcDoorTypeOperationEnum.DOUBLE_DOOR_SLIDING = { type: 3, value: "DOUBLE_DOOR_SLIDING" }; + _IfcDoorTypeOperationEnum.DOUBLE_SWING_LEFT = { type: 3, value: "DOUBLE_SWING_LEFT" }; + _IfcDoorTypeOperationEnum.DOUBLE_SWING_RIGHT = { type: 3, value: "DOUBLE_SWING_RIGHT" }; + _IfcDoorTypeOperationEnum.FOLDING_TO_LEFT = { type: 3, value: "FOLDING_TO_LEFT" }; + _IfcDoorTypeOperationEnum.FOLDING_TO_RIGHT = { type: 3, value: "FOLDING_TO_RIGHT" }; + _IfcDoorTypeOperationEnum.LIFTING_HORIZONTAL = { type: 3, value: "LIFTING_HORIZONTAL" }; + _IfcDoorTypeOperationEnum.LIFTING_VERTICAL_LEFT = { type: 3, value: "LIFTING_VERTICAL_LEFT" }; + _IfcDoorTypeOperationEnum.LIFTING_VERTICAL_RIGHT = { type: 3, value: "LIFTING_VERTICAL_RIGHT" }; + _IfcDoorTypeOperationEnum.REVOLVING = { type: 3, value: "REVOLVING" }; + _IfcDoorTypeOperationEnum.REVOLVING_VERTICAL = { type: 3, value: "REVOLVING_VERTICAL" }; + _IfcDoorTypeOperationEnum.ROLLINGUP = { type: 3, value: "ROLLINGUP" }; + _IfcDoorTypeOperationEnum.SINGLE_SWING_LEFT = { type: 3, value: "SINGLE_SWING_LEFT" }; + _IfcDoorTypeOperationEnum.SINGLE_SWING_RIGHT = { type: 3, value: "SINGLE_SWING_RIGHT" }; + _IfcDoorTypeOperationEnum.SLIDING_TO_LEFT = { type: 3, value: "SLIDING_TO_LEFT" }; + _IfcDoorTypeOperationEnum.SLIDING_TO_RIGHT = { type: 3, value: "SLIDING_TO_RIGHT" }; + _IfcDoorTypeOperationEnum.SWING_FIXED_LEFT = { type: 3, value: "SWING_FIXED_LEFT" }; + _IfcDoorTypeOperationEnum.SWING_FIXED_RIGHT = { type: 3, value: "SWING_FIXED_RIGHT" }; + _IfcDoorTypeOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDoorTypeOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDoorTypeOperationEnum = _IfcDoorTypeOperationEnum; + IFC4X32.IfcDoorTypeOperationEnum = IfcDoorTypeOperationEnum; + const _IfcDuctFittingTypeEnum = class _IfcDuctFittingTypeEnum { + }; + _IfcDuctFittingTypeEnum.BEND = { type: 3, value: "BEND" }; + _IfcDuctFittingTypeEnum.CONNECTOR = { type: 3, value: "CONNECTOR" }; + _IfcDuctFittingTypeEnum.ENTRY = { type: 3, value: "ENTRY" }; + _IfcDuctFittingTypeEnum.EXIT = { type: 3, value: "EXIT" }; + _IfcDuctFittingTypeEnum.JUNCTION = { type: 3, value: "JUNCTION" }; + _IfcDuctFittingTypeEnum.OBSTRUCTION = { type: 3, value: "OBSTRUCTION" }; + _IfcDuctFittingTypeEnum.TRANSITION = { type: 3, value: "TRANSITION" }; + _IfcDuctFittingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDuctFittingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDuctFittingTypeEnum = _IfcDuctFittingTypeEnum; + IFC4X32.IfcDuctFittingTypeEnum = IfcDuctFittingTypeEnum; + const _IfcDuctSegmentTypeEnum = class _IfcDuctSegmentTypeEnum { + }; + _IfcDuctSegmentTypeEnum.FLEXIBLESEGMENT = { type: 3, value: "FLEXIBLESEGMENT" }; + _IfcDuctSegmentTypeEnum.RIGIDSEGMENT = { type: 3, value: "RIGIDSEGMENT" }; + _IfcDuctSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDuctSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDuctSegmentTypeEnum = _IfcDuctSegmentTypeEnum; + IFC4X32.IfcDuctSegmentTypeEnum = IfcDuctSegmentTypeEnum; + const _IfcDuctSilencerTypeEnum = class _IfcDuctSilencerTypeEnum { + }; + _IfcDuctSilencerTypeEnum.FLATOVAL = { type: 3, value: "FLATOVAL" }; + _IfcDuctSilencerTypeEnum.RECTANGULAR = { type: 3, value: "RECTANGULAR" }; + _IfcDuctSilencerTypeEnum.ROUND = { type: 3, value: "ROUND" }; + _IfcDuctSilencerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcDuctSilencerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcDuctSilencerTypeEnum = _IfcDuctSilencerTypeEnum; + IFC4X32.IfcDuctSilencerTypeEnum = IfcDuctSilencerTypeEnum; + const _IfcEarthworksCutTypeEnum = class _IfcEarthworksCutTypeEnum { + }; + _IfcEarthworksCutTypeEnum.BASE_EXCAVATION = { type: 3, value: "BASE_EXCAVATION" }; + _IfcEarthworksCutTypeEnum.CUT = { type: 3, value: "CUT" }; + _IfcEarthworksCutTypeEnum.DREDGING = { type: 3, value: "DREDGING" }; + _IfcEarthworksCutTypeEnum.EXCAVATION = { type: 3, value: "EXCAVATION" }; + _IfcEarthworksCutTypeEnum.OVEREXCAVATION = { type: 3, value: "OVEREXCAVATION" }; + _IfcEarthworksCutTypeEnum.PAVEMENTMILLING = { type: 3, value: "PAVEMENTMILLING" }; + _IfcEarthworksCutTypeEnum.STEPEXCAVATION = { type: 3, value: "STEPEXCAVATION" }; + _IfcEarthworksCutTypeEnum.TOPSOILREMOVAL = { type: 3, value: "TOPSOILREMOVAL" }; + _IfcEarthworksCutTypeEnum.TRENCH = { type: 3, value: "TRENCH" }; + _IfcEarthworksCutTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEarthworksCutTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEarthworksCutTypeEnum = _IfcEarthworksCutTypeEnum; + IFC4X32.IfcEarthworksCutTypeEnum = IfcEarthworksCutTypeEnum; + const _IfcEarthworksFillTypeEnum = class _IfcEarthworksFillTypeEnum { + }; + _IfcEarthworksFillTypeEnum.BACKFILL = { type: 3, value: "BACKFILL" }; + _IfcEarthworksFillTypeEnum.COUNTERWEIGHT = { type: 3, value: "COUNTERWEIGHT" }; + _IfcEarthworksFillTypeEnum.EMBANKMENT = { type: 3, value: "EMBANKMENT" }; + _IfcEarthworksFillTypeEnum.SLOPEFILL = { type: 3, value: "SLOPEFILL" }; + _IfcEarthworksFillTypeEnum.SUBGRADE = { type: 3, value: "SUBGRADE" }; + _IfcEarthworksFillTypeEnum.SUBGRADEBED = { type: 3, value: "SUBGRADEBED" }; + _IfcEarthworksFillTypeEnum.TRANSITIONSECTION = { type: 3, value: "TRANSITIONSECTION" }; + _IfcEarthworksFillTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEarthworksFillTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEarthworksFillTypeEnum = _IfcEarthworksFillTypeEnum; + IFC4X32.IfcEarthworksFillTypeEnum = IfcEarthworksFillTypeEnum; + const _IfcElectricApplianceTypeEnum = class _IfcElectricApplianceTypeEnum { + }; + _IfcElectricApplianceTypeEnum.DISHWASHER = { type: 3, value: "DISHWASHER" }; + _IfcElectricApplianceTypeEnum.ELECTRICCOOKER = { type: 3, value: "ELECTRICCOOKER" }; + _IfcElectricApplianceTypeEnum.FREESTANDINGELECTRICHEATER = { type: 3, value: "FREESTANDINGELECTRICHEATER" }; + _IfcElectricApplianceTypeEnum.FREESTANDINGFAN = { type: 3, value: "FREESTANDINGFAN" }; + _IfcElectricApplianceTypeEnum.FREESTANDINGWATERCOOLER = { type: 3, value: "FREESTANDINGWATERCOOLER" }; + _IfcElectricApplianceTypeEnum.FREESTANDINGWATERHEATER = { type: 3, value: "FREESTANDINGWATERHEATER" }; + _IfcElectricApplianceTypeEnum.FREEZER = { type: 3, value: "FREEZER" }; + _IfcElectricApplianceTypeEnum.FRIDGE_FREEZER = { type: 3, value: "FRIDGE_FREEZER" }; + _IfcElectricApplianceTypeEnum.HANDDRYER = { type: 3, value: "HANDDRYER" }; + _IfcElectricApplianceTypeEnum.KITCHENMACHINE = { type: 3, value: "KITCHENMACHINE" }; + _IfcElectricApplianceTypeEnum.MICROWAVE = { type: 3, value: "MICROWAVE" }; + _IfcElectricApplianceTypeEnum.PHOTOCOPIER = { type: 3, value: "PHOTOCOPIER" }; + _IfcElectricApplianceTypeEnum.REFRIGERATOR = { type: 3, value: "REFRIGERATOR" }; + _IfcElectricApplianceTypeEnum.TUMBLEDRYER = { type: 3, value: "TUMBLEDRYER" }; + _IfcElectricApplianceTypeEnum.VENDINGMACHINE = { type: 3, value: "VENDINGMACHINE" }; + _IfcElectricApplianceTypeEnum.WASHINGMACHINE = { type: 3, value: "WASHINGMACHINE" }; + _IfcElectricApplianceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricApplianceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricApplianceTypeEnum = _IfcElectricApplianceTypeEnum; + IFC4X32.IfcElectricApplianceTypeEnum = IfcElectricApplianceTypeEnum; + const _IfcElectricDistributionBoardTypeEnum = class _IfcElectricDistributionBoardTypeEnum { + }; + _IfcElectricDistributionBoardTypeEnum.CONSUMERUNIT = { type: 3, value: "CONSUMERUNIT" }; + _IfcElectricDistributionBoardTypeEnum.DISTRIBUTIONBOARD = { type: 3, value: "DISTRIBUTIONBOARD" }; + _IfcElectricDistributionBoardTypeEnum.MOTORCONTROLCENTRE = { type: 3, value: "MOTORCONTROLCENTRE" }; + _IfcElectricDistributionBoardTypeEnum.SWITCHBOARD = { type: 3, value: "SWITCHBOARD" }; + _IfcElectricDistributionBoardTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricDistributionBoardTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricDistributionBoardTypeEnum = _IfcElectricDistributionBoardTypeEnum; + IFC4X32.IfcElectricDistributionBoardTypeEnum = IfcElectricDistributionBoardTypeEnum; + const _IfcElectricFlowStorageDeviceTypeEnum = class _IfcElectricFlowStorageDeviceTypeEnum { + }; + _IfcElectricFlowStorageDeviceTypeEnum.BATTERY = { type: 3, value: "BATTERY" }; + _IfcElectricFlowStorageDeviceTypeEnum.CAPACITOR = { type: 3, value: "CAPACITOR" }; + _IfcElectricFlowStorageDeviceTypeEnum.CAPACITORBANK = { type: 3, value: "CAPACITORBANK" }; + _IfcElectricFlowStorageDeviceTypeEnum.COMPENSATOR = { type: 3, value: "COMPENSATOR" }; + _IfcElectricFlowStorageDeviceTypeEnum.HARMONICFILTER = { type: 3, value: "HARMONICFILTER" }; + _IfcElectricFlowStorageDeviceTypeEnum.INDUCTOR = { type: 3, value: "INDUCTOR" }; + _IfcElectricFlowStorageDeviceTypeEnum.INDUCTORBANK = { type: 3, value: "INDUCTORBANK" }; + _IfcElectricFlowStorageDeviceTypeEnum.RECHARGER = { type: 3, value: "RECHARGER" }; + _IfcElectricFlowStorageDeviceTypeEnum.UPS = { type: 3, value: "UPS" }; + _IfcElectricFlowStorageDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricFlowStorageDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricFlowStorageDeviceTypeEnum = _IfcElectricFlowStorageDeviceTypeEnum; + IFC4X32.IfcElectricFlowStorageDeviceTypeEnum = IfcElectricFlowStorageDeviceTypeEnum; + const _IfcElectricFlowTreatmentDeviceTypeEnum = class _IfcElectricFlowTreatmentDeviceTypeEnum { + }; + _IfcElectricFlowTreatmentDeviceTypeEnum.ELECTRONICFILTER = { type: 3, value: "ELECTRONICFILTER" }; + _IfcElectricFlowTreatmentDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricFlowTreatmentDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricFlowTreatmentDeviceTypeEnum = _IfcElectricFlowTreatmentDeviceTypeEnum; + IFC4X32.IfcElectricFlowTreatmentDeviceTypeEnum = IfcElectricFlowTreatmentDeviceTypeEnum; + const _IfcElectricGeneratorTypeEnum = class _IfcElectricGeneratorTypeEnum { + }; + _IfcElectricGeneratorTypeEnum.CHP = { type: 3, value: "CHP" }; + _IfcElectricGeneratorTypeEnum.ENGINEGENERATOR = { type: 3, value: "ENGINEGENERATOR" }; + _IfcElectricGeneratorTypeEnum.STANDALONE = { type: 3, value: "STANDALONE" }; + _IfcElectricGeneratorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricGeneratorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricGeneratorTypeEnum = _IfcElectricGeneratorTypeEnum; + IFC4X32.IfcElectricGeneratorTypeEnum = IfcElectricGeneratorTypeEnum; + const _IfcElectricMotorTypeEnum = class _IfcElectricMotorTypeEnum { + }; + _IfcElectricMotorTypeEnum.DC = { type: 3, value: "DC" }; + _IfcElectricMotorTypeEnum.INDUCTION = { type: 3, value: "INDUCTION" }; + _IfcElectricMotorTypeEnum.POLYPHASE = { type: 3, value: "POLYPHASE" }; + _IfcElectricMotorTypeEnum.RELUCTANCESYNCHRONOUS = { type: 3, value: "RELUCTANCESYNCHRONOUS" }; + _IfcElectricMotorTypeEnum.SYNCHRONOUS = { type: 3, value: "SYNCHRONOUS" }; + _IfcElectricMotorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricMotorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricMotorTypeEnum = _IfcElectricMotorTypeEnum; + IFC4X32.IfcElectricMotorTypeEnum = IfcElectricMotorTypeEnum; + const _IfcElectricTimeControlTypeEnum = class _IfcElectricTimeControlTypeEnum { + }; + _IfcElectricTimeControlTypeEnum.RELAY = { type: 3, value: "RELAY" }; + _IfcElectricTimeControlTypeEnum.TIMECLOCK = { type: 3, value: "TIMECLOCK" }; + _IfcElectricTimeControlTypeEnum.TIMEDELAY = { type: 3, value: "TIMEDELAY" }; + _IfcElectricTimeControlTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElectricTimeControlTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElectricTimeControlTypeEnum = _IfcElectricTimeControlTypeEnum; + IFC4X32.IfcElectricTimeControlTypeEnum = IfcElectricTimeControlTypeEnum; + const _IfcElementAssemblyTypeEnum = class _IfcElementAssemblyTypeEnum { + }; + _IfcElementAssemblyTypeEnum.ABUTMENT = { type: 3, value: "ABUTMENT" }; + _IfcElementAssemblyTypeEnum.ACCESSORY_ASSEMBLY = { type: 3, value: "ACCESSORY_ASSEMBLY" }; + _IfcElementAssemblyTypeEnum.ARCH = { type: 3, value: "ARCH" }; + _IfcElementAssemblyTypeEnum.BEAM_GRID = { type: 3, value: "BEAM_GRID" }; + _IfcElementAssemblyTypeEnum.BRACED_FRAME = { type: 3, value: "BRACED_FRAME" }; + _IfcElementAssemblyTypeEnum.CROSS_BRACING = { type: 3, value: "CROSS_BRACING" }; + _IfcElementAssemblyTypeEnum.DECK = { type: 3, value: "DECK" }; + _IfcElementAssemblyTypeEnum.DILATATIONPANEL = { type: 3, value: "DILATATIONPANEL" }; + _IfcElementAssemblyTypeEnum.ENTRANCEWORKS = { type: 3, value: "ENTRANCEWORKS" }; + _IfcElementAssemblyTypeEnum.GIRDER = { type: 3, value: "GIRDER" }; + _IfcElementAssemblyTypeEnum.GRID = { type: 3, value: "GRID" }; + _IfcElementAssemblyTypeEnum.MAST = { type: 3, value: "MAST" }; + _IfcElementAssemblyTypeEnum.PIER = { type: 3, value: "PIER" }; + _IfcElementAssemblyTypeEnum.PYLON = { type: 3, value: "PYLON" }; + _IfcElementAssemblyTypeEnum.RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY = { type: 3, value: "RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY" }; + _IfcElementAssemblyTypeEnum.REINFORCEMENT_UNIT = { type: 3, value: "REINFORCEMENT_UNIT" }; + _IfcElementAssemblyTypeEnum.RIGID_FRAME = { type: 3, value: "RIGID_FRAME" }; + _IfcElementAssemblyTypeEnum.SHELTER = { type: 3, value: "SHELTER" }; + _IfcElementAssemblyTypeEnum.SIGNALASSEMBLY = { type: 3, value: "SIGNALASSEMBLY" }; + _IfcElementAssemblyTypeEnum.SLAB_FIELD = { type: 3, value: "SLAB_FIELD" }; + _IfcElementAssemblyTypeEnum.SUMPBUSTER = { type: 3, value: "SUMPBUSTER" }; + _IfcElementAssemblyTypeEnum.SUPPORTINGASSEMBLY = { type: 3, value: "SUPPORTINGASSEMBLY" }; + _IfcElementAssemblyTypeEnum.SUSPENSIONASSEMBLY = { type: 3, value: "SUSPENSIONASSEMBLY" }; + _IfcElementAssemblyTypeEnum.TRACKPANEL = { type: 3, value: "TRACKPANEL" }; + _IfcElementAssemblyTypeEnum.TRACTION_SWITCHING_ASSEMBLY = { type: 3, value: "TRACTION_SWITCHING_ASSEMBLY" }; + _IfcElementAssemblyTypeEnum.TRAFFIC_CALMING_DEVICE = { type: 3, value: "TRAFFIC_CALMING_DEVICE" }; + _IfcElementAssemblyTypeEnum.TRUSS = { type: 3, value: "TRUSS" }; + _IfcElementAssemblyTypeEnum.TURNOUTPANEL = { type: 3, value: "TURNOUTPANEL" }; + _IfcElementAssemblyTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcElementAssemblyTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcElementAssemblyTypeEnum = _IfcElementAssemblyTypeEnum; + IFC4X32.IfcElementAssemblyTypeEnum = IfcElementAssemblyTypeEnum; + const _IfcElementCompositionEnum = class _IfcElementCompositionEnum { + }; + _IfcElementCompositionEnum.COMPLEX = { type: 3, value: "COMPLEX" }; + _IfcElementCompositionEnum.ELEMENT = { type: 3, value: "ELEMENT" }; + _IfcElementCompositionEnum.PARTIAL = { type: 3, value: "PARTIAL" }; + let IfcElementCompositionEnum = _IfcElementCompositionEnum; + IFC4X32.IfcElementCompositionEnum = IfcElementCompositionEnum; + const _IfcEngineTypeEnum = class _IfcEngineTypeEnum { + }; + _IfcEngineTypeEnum.EXTERNALCOMBUSTION = { type: 3, value: "EXTERNALCOMBUSTION" }; + _IfcEngineTypeEnum.INTERNALCOMBUSTION = { type: 3, value: "INTERNALCOMBUSTION" }; + _IfcEngineTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEngineTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEngineTypeEnum = _IfcEngineTypeEnum; + IFC4X32.IfcEngineTypeEnum = IfcEngineTypeEnum; + const _IfcEvaporativeCoolerTypeEnum = class _IfcEvaporativeCoolerTypeEnum { + }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVEAIRWASHER = { type: 3, value: "DIRECTEVAPORATIVEAIRWASHER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER = { type: 3, value: "DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTDIRECTCOMBINATION = { type: 3, value: "INDIRECTDIRECTCOMBINATION" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER = { type: 3, value: "INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTEVAPORATIVEPACKAGEAIRCOOLER = { type: 3, value: "INDIRECTEVAPORATIVEPACKAGEAIRCOOLER" }; + _IfcEvaporativeCoolerTypeEnum.INDIRECTEVAPORATIVEWETCOIL = { type: 3, value: "INDIRECTEVAPORATIVEWETCOIL" }; + _IfcEvaporativeCoolerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEvaporativeCoolerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEvaporativeCoolerTypeEnum = _IfcEvaporativeCoolerTypeEnum; + IFC4X32.IfcEvaporativeCoolerTypeEnum = IfcEvaporativeCoolerTypeEnum; + const _IfcEvaporatorTypeEnum = class _IfcEvaporatorTypeEnum { + }; + _IfcEvaporatorTypeEnum.DIRECTEXPANSION = { type: 3, value: "DIRECTEXPANSION" }; + _IfcEvaporatorTypeEnum.DIRECTEXPANSIONBRAZEDPLATE = { type: 3, value: "DIRECTEXPANSIONBRAZEDPLATE" }; + _IfcEvaporatorTypeEnum.DIRECTEXPANSIONSHELLANDTUBE = { type: 3, value: "DIRECTEXPANSIONSHELLANDTUBE" }; + _IfcEvaporatorTypeEnum.DIRECTEXPANSIONTUBEINTUBE = { type: 3, value: "DIRECTEXPANSIONTUBEINTUBE" }; + _IfcEvaporatorTypeEnum.FLOODEDSHELLANDTUBE = { type: 3, value: "FLOODEDSHELLANDTUBE" }; + _IfcEvaporatorTypeEnum.SHELLANDCOIL = { type: 3, value: "SHELLANDCOIL" }; + _IfcEvaporatorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEvaporatorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEvaporatorTypeEnum = _IfcEvaporatorTypeEnum; + IFC4X32.IfcEvaporatorTypeEnum = IfcEvaporatorTypeEnum; + const _IfcEventTriggerTypeEnum = class _IfcEventTriggerTypeEnum { + }; + _IfcEventTriggerTypeEnum.EVENTCOMPLEX = { type: 3, value: "EVENTCOMPLEX" }; + _IfcEventTriggerTypeEnum.EVENTMESSAGE = { type: 3, value: "EVENTMESSAGE" }; + _IfcEventTriggerTypeEnum.EVENTRULE = { type: 3, value: "EVENTRULE" }; + _IfcEventTriggerTypeEnum.EVENTTIME = { type: 3, value: "EVENTTIME" }; + _IfcEventTriggerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEventTriggerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEventTriggerTypeEnum = _IfcEventTriggerTypeEnum; + IFC4X32.IfcEventTriggerTypeEnum = IfcEventTriggerTypeEnum; + const _IfcEventTypeEnum = class _IfcEventTypeEnum { + }; + _IfcEventTypeEnum.ENDEVENT = { type: 3, value: "ENDEVENT" }; + _IfcEventTypeEnum.INTERMEDIATEEVENT = { type: 3, value: "INTERMEDIATEEVENT" }; + _IfcEventTypeEnum.STARTEVENT = { type: 3, value: "STARTEVENT" }; + _IfcEventTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcEventTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcEventTypeEnum = _IfcEventTypeEnum; + IFC4X32.IfcEventTypeEnum = IfcEventTypeEnum; + const _IfcExternalSpatialElementTypeEnum = class _IfcExternalSpatialElementTypeEnum { + }; + _IfcExternalSpatialElementTypeEnum.EXTERNAL = { type: 3, value: "EXTERNAL" }; + _IfcExternalSpatialElementTypeEnum.EXTERNAL_EARTH = { type: 3, value: "EXTERNAL_EARTH" }; + _IfcExternalSpatialElementTypeEnum.EXTERNAL_FIRE = { type: 3, value: "EXTERNAL_FIRE" }; + _IfcExternalSpatialElementTypeEnum.EXTERNAL_WATER = { type: 3, value: "EXTERNAL_WATER" }; + _IfcExternalSpatialElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcExternalSpatialElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcExternalSpatialElementTypeEnum = _IfcExternalSpatialElementTypeEnum; + IFC4X32.IfcExternalSpatialElementTypeEnum = IfcExternalSpatialElementTypeEnum; + const _IfcFacilityPartCommonTypeEnum = class _IfcFacilityPartCommonTypeEnum { + }; + _IfcFacilityPartCommonTypeEnum.ABOVEGROUND = { type: 3, value: "ABOVEGROUND" }; + _IfcFacilityPartCommonTypeEnum.BELOWGROUND = { type: 3, value: "BELOWGROUND" }; + _IfcFacilityPartCommonTypeEnum.JUNCTION = { type: 3, value: "JUNCTION" }; + _IfcFacilityPartCommonTypeEnum.LEVELCROSSING = { type: 3, value: "LEVELCROSSING" }; + _IfcFacilityPartCommonTypeEnum.SEGMENT = { type: 3, value: "SEGMENT" }; + _IfcFacilityPartCommonTypeEnum.SUBSTRUCTURE = { type: 3, value: "SUBSTRUCTURE" }; + _IfcFacilityPartCommonTypeEnum.SUPERSTRUCTURE = { type: 3, value: "SUPERSTRUCTURE" }; + _IfcFacilityPartCommonTypeEnum.TERMINAL = { type: 3, value: "TERMINAL" }; + _IfcFacilityPartCommonTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFacilityPartCommonTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFacilityPartCommonTypeEnum = _IfcFacilityPartCommonTypeEnum; + IFC4X32.IfcFacilityPartCommonTypeEnum = IfcFacilityPartCommonTypeEnum; + const _IfcFacilityUsageEnum = class _IfcFacilityUsageEnum { + }; + _IfcFacilityUsageEnum.LATERAL = { type: 3, value: "LATERAL" }; + _IfcFacilityUsageEnum.LONGITUDINAL = { type: 3, value: "LONGITUDINAL" }; + _IfcFacilityUsageEnum.REGION = { type: 3, value: "REGION" }; + _IfcFacilityUsageEnum.VERTICAL = { type: 3, value: "VERTICAL" }; + _IfcFacilityUsageEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFacilityUsageEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFacilityUsageEnum = _IfcFacilityUsageEnum; + IFC4X32.IfcFacilityUsageEnum = IfcFacilityUsageEnum; + const _IfcFanTypeEnum = class _IfcFanTypeEnum { + }; + _IfcFanTypeEnum.CENTRIFUGALAIRFOIL = { type: 3, value: "CENTRIFUGALAIRFOIL" }; + _IfcFanTypeEnum.CENTRIFUGALBACKWARDINCLINEDCURVED = { type: 3, value: "CENTRIFUGALBACKWARDINCLINEDCURVED" }; + _IfcFanTypeEnum.CENTRIFUGALFORWARDCURVED = { type: 3, value: "CENTRIFUGALFORWARDCURVED" }; + _IfcFanTypeEnum.CENTRIFUGALRADIAL = { type: 3, value: "CENTRIFUGALRADIAL" }; + _IfcFanTypeEnum.PROPELLORAXIAL = { type: 3, value: "PROPELLORAXIAL" }; + _IfcFanTypeEnum.TUBEAXIAL = { type: 3, value: "TUBEAXIAL" }; + _IfcFanTypeEnum.VANEAXIAL = { type: 3, value: "VANEAXIAL" }; + _IfcFanTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFanTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFanTypeEnum = _IfcFanTypeEnum; + IFC4X32.IfcFanTypeEnum = IfcFanTypeEnum; + const _IfcFastenerTypeEnum = class _IfcFastenerTypeEnum { + }; + _IfcFastenerTypeEnum.GLUE = { type: 3, value: "GLUE" }; + _IfcFastenerTypeEnum.MORTAR = { type: 3, value: "MORTAR" }; + _IfcFastenerTypeEnum.WELD = { type: 3, value: "WELD" }; + _IfcFastenerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFastenerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFastenerTypeEnum = _IfcFastenerTypeEnum; + IFC4X32.IfcFastenerTypeEnum = IfcFastenerTypeEnum; + const _IfcFilterTypeEnum = class _IfcFilterTypeEnum { + }; + _IfcFilterTypeEnum.AIRPARTICLEFILTER = { type: 3, value: "AIRPARTICLEFILTER" }; + _IfcFilterTypeEnum.COMPRESSEDAIRFILTER = { type: 3, value: "COMPRESSEDAIRFILTER" }; + _IfcFilterTypeEnum.ODORFILTER = { type: 3, value: "ODORFILTER" }; + _IfcFilterTypeEnum.OILFILTER = { type: 3, value: "OILFILTER" }; + _IfcFilterTypeEnum.STRAINER = { type: 3, value: "STRAINER" }; + _IfcFilterTypeEnum.WATERFILTER = { type: 3, value: "WATERFILTER" }; + _IfcFilterTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFilterTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFilterTypeEnum = _IfcFilterTypeEnum; + IFC4X32.IfcFilterTypeEnum = IfcFilterTypeEnum; + const _IfcFireSuppressionTerminalTypeEnum = class _IfcFireSuppressionTerminalTypeEnum { + }; + _IfcFireSuppressionTerminalTypeEnum.BREECHINGINLET = { type: 3, value: "BREECHINGINLET" }; + _IfcFireSuppressionTerminalTypeEnum.FIREHYDRANT = { type: 3, value: "FIREHYDRANT" }; + _IfcFireSuppressionTerminalTypeEnum.FIREMONITOR = { type: 3, value: "FIREMONITOR" }; + _IfcFireSuppressionTerminalTypeEnum.HOSEREEL = { type: 3, value: "HOSEREEL" }; + _IfcFireSuppressionTerminalTypeEnum.SPRINKLER = { type: 3, value: "SPRINKLER" }; + _IfcFireSuppressionTerminalTypeEnum.SPRINKLERDEFLECTOR = { type: 3, value: "SPRINKLERDEFLECTOR" }; + _IfcFireSuppressionTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFireSuppressionTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFireSuppressionTerminalTypeEnum = _IfcFireSuppressionTerminalTypeEnum; + IFC4X32.IfcFireSuppressionTerminalTypeEnum = IfcFireSuppressionTerminalTypeEnum; + const _IfcFlowDirectionEnum = class _IfcFlowDirectionEnum { + }; + _IfcFlowDirectionEnum.SINK = { type: 3, value: "SINK" }; + _IfcFlowDirectionEnum.SOURCE = { type: 3, value: "SOURCE" }; + _IfcFlowDirectionEnum.SOURCEANDSINK = { type: 3, value: "SOURCEANDSINK" }; + _IfcFlowDirectionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFlowDirectionEnum = _IfcFlowDirectionEnum; + IFC4X32.IfcFlowDirectionEnum = IfcFlowDirectionEnum; + const _IfcFlowInstrumentTypeEnum = class _IfcFlowInstrumentTypeEnum { + }; + _IfcFlowInstrumentTypeEnum.AMMETER = { type: 3, value: "AMMETER" }; + _IfcFlowInstrumentTypeEnum.COMBINED = { type: 3, value: "COMBINED" }; + _IfcFlowInstrumentTypeEnum.FREQUENCYMETER = { type: 3, value: "FREQUENCYMETER" }; + _IfcFlowInstrumentTypeEnum.PHASEANGLEMETER = { type: 3, value: "PHASEANGLEMETER" }; + _IfcFlowInstrumentTypeEnum.POWERFACTORMETER = { type: 3, value: "POWERFACTORMETER" }; + _IfcFlowInstrumentTypeEnum.PRESSUREGAUGE = { type: 3, value: "PRESSUREGAUGE" }; + _IfcFlowInstrumentTypeEnum.THERMOMETER = { type: 3, value: "THERMOMETER" }; + _IfcFlowInstrumentTypeEnum.VOLTMETER = { type: 3, value: "VOLTMETER" }; + _IfcFlowInstrumentTypeEnum.VOLTMETER_PEAK = { type: 3, value: "VOLTMETER_PEAK" }; + _IfcFlowInstrumentTypeEnum.VOLTMETER_RMS = { type: 3, value: "VOLTMETER_RMS" }; + _IfcFlowInstrumentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFlowInstrumentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFlowInstrumentTypeEnum = _IfcFlowInstrumentTypeEnum; + IFC4X32.IfcFlowInstrumentTypeEnum = IfcFlowInstrumentTypeEnum; + const _IfcFlowMeterTypeEnum = class _IfcFlowMeterTypeEnum { + }; + _IfcFlowMeterTypeEnum.ENERGYMETER = { type: 3, value: "ENERGYMETER" }; + _IfcFlowMeterTypeEnum.GASMETER = { type: 3, value: "GASMETER" }; + _IfcFlowMeterTypeEnum.OILMETER = { type: 3, value: "OILMETER" }; + _IfcFlowMeterTypeEnum.WATERMETER = { type: 3, value: "WATERMETER" }; + _IfcFlowMeterTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFlowMeterTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFlowMeterTypeEnum = _IfcFlowMeterTypeEnum; + IFC4X32.IfcFlowMeterTypeEnum = IfcFlowMeterTypeEnum; + const _IfcFootingTypeEnum = class _IfcFootingTypeEnum { + }; + _IfcFootingTypeEnum.CAISSON_FOUNDATION = { type: 3, value: "CAISSON_FOUNDATION" }; + _IfcFootingTypeEnum.FOOTING_BEAM = { type: 3, value: "FOOTING_BEAM" }; + _IfcFootingTypeEnum.PAD_FOOTING = { type: 3, value: "PAD_FOOTING" }; + _IfcFootingTypeEnum.PILE_CAP = { type: 3, value: "PILE_CAP" }; + _IfcFootingTypeEnum.STRIP_FOOTING = { type: 3, value: "STRIP_FOOTING" }; + _IfcFootingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFootingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFootingTypeEnum = _IfcFootingTypeEnum; + IFC4X32.IfcFootingTypeEnum = IfcFootingTypeEnum; + const _IfcFurnitureTypeEnum = class _IfcFurnitureTypeEnum { + }; + _IfcFurnitureTypeEnum.BED = { type: 3, value: "BED" }; + _IfcFurnitureTypeEnum.CHAIR = { type: 3, value: "CHAIR" }; + _IfcFurnitureTypeEnum.DESK = { type: 3, value: "DESK" }; + _IfcFurnitureTypeEnum.FILECABINET = { type: 3, value: "FILECABINET" }; + _IfcFurnitureTypeEnum.SHELF = { type: 3, value: "SHELF" }; + _IfcFurnitureTypeEnum.SOFA = { type: 3, value: "SOFA" }; + _IfcFurnitureTypeEnum.TABLE = { type: 3, value: "TABLE" }; + _IfcFurnitureTypeEnum.TECHNICALCABINET = { type: 3, value: "TECHNICALCABINET" }; + _IfcFurnitureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcFurnitureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcFurnitureTypeEnum = _IfcFurnitureTypeEnum; + IFC4X32.IfcFurnitureTypeEnum = IfcFurnitureTypeEnum; + const _IfcGeographicElementTypeEnum = class _IfcGeographicElementTypeEnum { + }; + _IfcGeographicElementTypeEnum.SOIL_BORING_POINT = { type: 3, value: "SOIL_BORING_POINT" }; + _IfcGeographicElementTypeEnum.TERRAIN = { type: 3, value: "TERRAIN" }; + _IfcGeographicElementTypeEnum.VEGETATION = { type: 3, value: "VEGETATION" }; + _IfcGeographicElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcGeographicElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcGeographicElementTypeEnum = _IfcGeographicElementTypeEnum; + IFC4X32.IfcGeographicElementTypeEnum = IfcGeographicElementTypeEnum; + const _IfcGeometricProjectionEnum = class _IfcGeometricProjectionEnum { + }; + _IfcGeometricProjectionEnum.ELEVATION_VIEW = { type: 3, value: "ELEVATION_VIEW" }; + _IfcGeometricProjectionEnum.GRAPH_VIEW = { type: 3, value: "GRAPH_VIEW" }; + _IfcGeometricProjectionEnum.MODEL_VIEW = { type: 3, value: "MODEL_VIEW" }; + _IfcGeometricProjectionEnum.PLAN_VIEW = { type: 3, value: "PLAN_VIEW" }; + _IfcGeometricProjectionEnum.REFLECTED_PLAN_VIEW = { type: 3, value: "REFLECTED_PLAN_VIEW" }; + _IfcGeometricProjectionEnum.SECTION_VIEW = { type: 3, value: "SECTION_VIEW" }; + _IfcGeometricProjectionEnum.SKETCH_VIEW = { type: 3, value: "SKETCH_VIEW" }; + _IfcGeometricProjectionEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcGeometricProjectionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcGeometricProjectionEnum = _IfcGeometricProjectionEnum; + IFC4X32.IfcGeometricProjectionEnum = IfcGeometricProjectionEnum; + const _IfcGeotechnicalStratumTypeEnum = class _IfcGeotechnicalStratumTypeEnum { + }; + _IfcGeotechnicalStratumTypeEnum.SOLID = { type: 3, value: "SOLID" }; + _IfcGeotechnicalStratumTypeEnum.VOID = { type: 3, value: "VOID" }; + _IfcGeotechnicalStratumTypeEnum.WATER = { type: 3, value: "WATER" }; + _IfcGeotechnicalStratumTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcGeotechnicalStratumTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcGeotechnicalStratumTypeEnum = _IfcGeotechnicalStratumTypeEnum; + IFC4X32.IfcGeotechnicalStratumTypeEnum = IfcGeotechnicalStratumTypeEnum; + const _IfcGlobalOrLocalEnum = class _IfcGlobalOrLocalEnum { + }; + _IfcGlobalOrLocalEnum.GLOBAL_COORDS = { type: 3, value: "GLOBAL_COORDS" }; + _IfcGlobalOrLocalEnum.LOCAL_COORDS = { type: 3, value: "LOCAL_COORDS" }; + let IfcGlobalOrLocalEnum = _IfcGlobalOrLocalEnum; + IFC4X32.IfcGlobalOrLocalEnum = IfcGlobalOrLocalEnum; + const _IfcGridTypeEnum = class _IfcGridTypeEnum { + }; + _IfcGridTypeEnum.IRREGULAR = { type: 3, value: "IRREGULAR" }; + _IfcGridTypeEnum.RADIAL = { type: 3, value: "RADIAL" }; + _IfcGridTypeEnum.RECTANGULAR = { type: 3, value: "RECTANGULAR" }; + _IfcGridTypeEnum.TRIANGULAR = { type: 3, value: "TRIANGULAR" }; + _IfcGridTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcGridTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcGridTypeEnum = _IfcGridTypeEnum; + IFC4X32.IfcGridTypeEnum = IfcGridTypeEnum; + const _IfcHeatExchangerTypeEnum = class _IfcHeatExchangerTypeEnum { + }; + _IfcHeatExchangerTypeEnum.PLATE = { type: 3, value: "PLATE" }; + _IfcHeatExchangerTypeEnum.SHELLANDTUBE = { type: 3, value: "SHELLANDTUBE" }; + _IfcHeatExchangerTypeEnum.TURNOUTHEATING = { type: 3, value: "TURNOUTHEATING" }; + _IfcHeatExchangerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcHeatExchangerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcHeatExchangerTypeEnum = _IfcHeatExchangerTypeEnum; + IFC4X32.IfcHeatExchangerTypeEnum = IfcHeatExchangerTypeEnum; + const _IfcHumidifierTypeEnum = class _IfcHumidifierTypeEnum { + }; + _IfcHumidifierTypeEnum.ADIABATICAIRWASHER = { type: 3, value: "ADIABATICAIRWASHER" }; + _IfcHumidifierTypeEnum.ADIABATICATOMIZING = { type: 3, value: "ADIABATICATOMIZING" }; + _IfcHumidifierTypeEnum.ADIABATICCOMPRESSEDAIRNOZZLE = { type: 3, value: "ADIABATICCOMPRESSEDAIRNOZZLE" }; + _IfcHumidifierTypeEnum.ADIABATICPAN = { type: 3, value: "ADIABATICPAN" }; + _IfcHumidifierTypeEnum.ADIABATICRIGIDMEDIA = { type: 3, value: "ADIABATICRIGIDMEDIA" }; + _IfcHumidifierTypeEnum.ADIABATICULTRASONIC = { type: 3, value: "ADIABATICULTRASONIC" }; + _IfcHumidifierTypeEnum.ADIABATICWETTEDELEMENT = { type: 3, value: "ADIABATICWETTEDELEMENT" }; + _IfcHumidifierTypeEnum.ASSISTEDBUTANE = { type: 3, value: "ASSISTEDBUTANE" }; + _IfcHumidifierTypeEnum.ASSISTEDELECTRIC = { type: 3, value: "ASSISTEDELECTRIC" }; + _IfcHumidifierTypeEnum.ASSISTEDNATURALGAS = { type: 3, value: "ASSISTEDNATURALGAS" }; + _IfcHumidifierTypeEnum.ASSISTEDPROPANE = { type: 3, value: "ASSISTEDPROPANE" }; + _IfcHumidifierTypeEnum.ASSISTEDSTEAM = { type: 3, value: "ASSISTEDSTEAM" }; + _IfcHumidifierTypeEnum.STEAMINJECTION = { type: 3, value: "STEAMINJECTION" }; + _IfcHumidifierTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcHumidifierTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcHumidifierTypeEnum = _IfcHumidifierTypeEnum; + IFC4X32.IfcHumidifierTypeEnum = IfcHumidifierTypeEnum; + const _IfcImpactProtectionDeviceTypeEnum = class _IfcImpactProtectionDeviceTypeEnum { + }; + _IfcImpactProtectionDeviceTypeEnum.BUMPER = { type: 3, value: "BUMPER" }; + _IfcImpactProtectionDeviceTypeEnum.CRASHCUSHION = { type: 3, value: "CRASHCUSHION" }; + _IfcImpactProtectionDeviceTypeEnum.DAMPINGSYSTEM = { type: 3, value: "DAMPINGSYSTEM" }; + _IfcImpactProtectionDeviceTypeEnum.FENDER = { type: 3, value: "FENDER" }; + _IfcImpactProtectionDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcImpactProtectionDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcImpactProtectionDeviceTypeEnum = _IfcImpactProtectionDeviceTypeEnum; + IFC4X32.IfcImpactProtectionDeviceTypeEnum = IfcImpactProtectionDeviceTypeEnum; + const _IfcInterceptorTypeEnum = class _IfcInterceptorTypeEnum { + }; + _IfcInterceptorTypeEnum.CYCLONIC = { type: 3, value: "CYCLONIC" }; + _IfcInterceptorTypeEnum.GREASE = { type: 3, value: "GREASE" }; + _IfcInterceptorTypeEnum.OIL = { type: 3, value: "OIL" }; + _IfcInterceptorTypeEnum.PETROL = { type: 3, value: "PETROL" }; + _IfcInterceptorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcInterceptorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcInterceptorTypeEnum = _IfcInterceptorTypeEnum; + IFC4X32.IfcInterceptorTypeEnum = IfcInterceptorTypeEnum; + const _IfcInternalOrExternalEnum = class _IfcInternalOrExternalEnum { + }; + _IfcInternalOrExternalEnum.EXTERNAL = { type: 3, value: "EXTERNAL" }; + _IfcInternalOrExternalEnum.EXTERNAL_EARTH = { type: 3, value: "EXTERNAL_EARTH" }; + _IfcInternalOrExternalEnum.EXTERNAL_FIRE = { type: 3, value: "EXTERNAL_FIRE" }; + _IfcInternalOrExternalEnum.EXTERNAL_WATER = { type: 3, value: "EXTERNAL_WATER" }; + _IfcInternalOrExternalEnum.INTERNAL = { type: 3, value: "INTERNAL" }; + _IfcInternalOrExternalEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcInternalOrExternalEnum = _IfcInternalOrExternalEnum; + IFC4X32.IfcInternalOrExternalEnum = IfcInternalOrExternalEnum; + const _IfcInventoryTypeEnum = class _IfcInventoryTypeEnum { + }; + _IfcInventoryTypeEnum.ASSETINVENTORY = { type: 3, value: "ASSETINVENTORY" }; + _IfcInventoryTypeEnum.FURNITUREINVENTORY = { type: 3, value: "FURNITUREINVENTORY" }; + _IfcInventoryTypeEnum.SPACEINVENTORY = { type: 3, value: "SPACEINVENTORY" }; + _IfcInventoryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcInventoryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcInventoryTypeEnum = _IfcInventoryTypeEnum; + IFC4X32.IfcInventoryTypeEnum = IfcInventoryTypeEnum; + const _IfcJunctionBoxTypeEnum = class _IfcJunctionBoxTypeEnum { + }; + _IfcJunctionBoxTypeEnum.DATA = { type: 3, value: "DATA" }; + _IfcJunctionBoxTypeEnum.POWER = { type: 3, value: "POWER" }; + _IfcJunctionBoxTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcJunctionBoxTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcJunctionBoxTypeEnum = _IfcJunctionBoxTypeEnum; + IFC4X32.IfcJunctionBoxTypeEnum = IfcJunctionBoxTypeEnum; + const _IfcKerbTypeEnum = class _IfcKerbTypeEnum { + }; + _IfcKerbTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcKerbTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcKerbTypeEnum = _IfcKerbTypeEnum; + IFC4X32.IfcKerbTypeEnum = IfcKerbTypeEnum; + const _IfcKnotType = class _IfcKnotType { + }; + _IfcKnotType.PIECEWISE_BEZIER_KNOTS = { type: 3, value: "PIECEWISE_BEZIER_KNOTS" }; + _IfcKnotType.QUASI_UNIFORM_KNOTS = { type: 3, value: "QUASI_UNIFORM_KNOTS" }; + _IfcKnotType.UNIFORM_KNOTS = { type: 3, value: "UNIFORM_KNOTS" }; + _IfcKnotType.UNSPECIFIED = { type: 3, value: "UNSPECIFIED" }; + let IfcKnotType = _IfcKnotType; + IFC4X32.IfcKnotType = IfcKnotType; + const _IfcLaborResourceTypeEnum = class _IfcLaborResourceTypeEnum { + }; + _IfcLaborResourceTypeEnum.ADMINISTRATION = { type: 3, value: "ADMINISTRATION" }; + _IfcLaborResourceTypeEnum.CARPENTRY = { type: 3, value: "CARPENTRY" }; + _IfcLaborResourceTypeEnum.CLEANING = { type: 3, value: "CLEANING" }; + _IfcLaborResourceTypeEnum.CONCRETE = { type: 3, value: "CONCRETE" }; + _IfcLaborResourceTypeEnum.DRYWALL = { type: 3, value: "DRYWALL" }; + _IfcLaborResourceTypeEnum.ELECTRIC = { type: 3, value: "ELECTRIC" }; + _IfcLaborResourceTypeEnum.FINISHING = { type: 3, value: "FINISHING" }; + _IfcLaborResourceTypeEnum.FLOORING = { type: 3, value: "FLOORING" }; + _IfcLaborResourceTypeEnum.GENERAL = { type: 3, value: "GENERAL" }; + _IfcLaborResourceTypeEnum.HVAC = { type: 3, value: "HVAC" }; + _IfcLaborResourceTypeEnum.LANDSCAPING = { type: 3, value: "LANDSCAPING" }; + _IfcLaborResourceTypeEnum.MASONRY = { type: 3, value: "MASONRY" }; + _IfcLaborResourceTypeEnum.PAINTING = { type: 3, value: "PAINTING" }; + _IfcLaborResourceTypeEnum.PAVING = { type: 3, value: "PAVING" }; + _IfcLaborResourceTypeEnum.PLUMBING = { type: 3, value: "PLUMBING" }; + _IfcLaborResourceTypeEnum.ROOFING = { type: 3, value: "ROOFING" }; + _IfcLaborResourceTypeEnum.SITEGRADING = { type: 3, value: "SITEGRADING" }; + _IfcLaborResourceTypeEnum.STEELWORK = { type: 3, value: "STEELWORK" }; + _IfcLaborResourceTypeEnum.SURVEYING = { type: 3, value: "SURVEYING" }; + _IfcLaborResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLaborResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLaborResourceTypeEnum = _IfcLaborResourceTypeEnum; + IFC4X32.IfcLaborResourceTypeEnum = IfcLaborResourceTypeEnum; + const _IfcLampTypeEnum = class _IfcLampTypeEnum { + }; + _IfcLampTypeEnum.COMPACTFLUORESCENT = { type: 3, value: "COMPACTFLUORESCENT" }; + _IfcLampTypeEnum.FLUORESCENT = { type: 3, value: "FLUORESCENT" }; + _IfcLampTypeEnum.HALOGEN = { type: 3, value: "HALOGEN" }; + _IfcLampTypeEnum.HIGHPRESSUREMERCURY = { type: 3, value: "HIGHPRESSUREMERCURY" }; + _IfcLampTypeEnum.HIGHPRESSURESODIUM = { type: 3, value: "HIGHPRESSURESODIUM" }; + _IfcLampTypeEnum.LED = { type: 3, value: "LED" }; + _IfcLampTypeEnum.METALHALIDE = { type: 3, value: "METALHALIDE" }; + _IfcLampTypeEnum.OLED = { type: 3, value: "OLED" }; + _IfcLampTypeEnum.TUNGSTENFILAMENT = { type: 3, value: "TUNGSTENFILAMENT" }; + _IfcLampTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLampTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLampTypeEnum = _IfcLampTypeEnum; + IFC4X32.IfcLampTypeEnum = IfcLampTypeEnum; + const _IfcLayerSetDirectionEnum = class _IfcLayerSetDirectionEnum { + }; + _IfcLayerSetDirectionEnum.AXIS1 = { type: 3, value: "AXIS1" }; + _IfcLayerSetDirectionEnum.AXIS2 = { type: 3, value: "AXIS2" }; + _IfcLayerSetDirectionEnum.AXIS3 = { type: 3, value: "AXIS3" }; + let IfcLayerSetDirectionEnum = _IfcLayerSetDirectionEnum; + IFC4X32.IfcLayerSetDirectionEnum = IfcLayerSetDirectionEnum; + const _IfcLightDistributionCurveEnum = class _IfcLightDistributionCurveEnum { + }; + _IfcLightDistributionCurveEnum.TYPE_A = { type: 3, value: "TYPE_A" }; + _IfcLightDistributionCurveEnum.TYPE_B = { type: 3, value: "TYPE_B" }; + _IfcLightDistributionCurveEnum.TYPE_C = { type: 3, value: "TYPE_C" }; + _IfcLightDistributionCurveEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLightDistributionCurveEnum = _IfcLightDistributionCurveEnum; + IFC4X32.IfcLightDistributionCurveEnum = IfcLightDistributionCurveEnum; + const _IfcLightEmissionSourceEnum = class _IfcLightEmissionSourceEnum { + }; + _IfcLightEmissionSourceEnum.COMPACTFLUORESCENT = { type: 3, value: "COMPACTFLUORESCENT" }; + _IfcLightEmissionSourceEnum.FLUORESCENT = { type: 3, value: "FLUORESCENT" }; + _IfcLightEmissionSourceEnum.HIGHPRESSUREMERCURY = { type: 3, value: "HIGHPRESSUREMERCURY" }; + _IfcLightEmissionSourceEnum.HIGHPRESSURESODIUM = { type: 3, value: "HIGHPRESSURESODIUM" }; + _IfcLightEmissionSourceEnum.LIGHTEMITTINGDIODE = { type: 3, value: "LIGHTEMITTINGDIODE" }; + _IfcLightEmissionSourceEnum.LOWPRESSURESODIUM = { type: 3, value: "LOWPRESSURESODIUM" }; + _IfcLightEmissionSourceEnum.LOWVOLTAGEHALOGEN = { type: 3, value: "LOWVOLTAGEHALOGEN" }; + _IfcLightEmissionSourceEnum.MAINVOLTAGEHALOGEN = { type: 3, value: "MAINVOLTAGEHALOGEN" }; + _IfcLightEmissionSourceEnum.METALHALIDE = { type: 3, value: "METALHALIDE" }; + _IfcLightEmissionSourceEnum.TUNGSTENFILAMENT = { type: 3, value: "TUNGSTENFILAMENT" }; + _IfcLightEmissionSourceEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLightEmissionSourceEnum = _IfcLightEmissionSourceEnum; + IFC4X32.IfcLightEmissionSourceEnum = IfcLightEmissionSourceEnum; + const _IfcLightFixtureTypeEnum = class _IfcLightFixtureTypeEnum { + }; + _IfcLightFixtureTypeEnum.DIRECTIONSOURCE = { type: 3, value: "DIRECTIONSOURCE" }; + _IfcLightFixtureTypeEnum.POINTSOURCE = { type: 3, value: "POINTSOURCE" }; + _IfcLightFixtureTypeEnum.SECURITYLIGHTING = { type: 3, value: "SECURITYLIGHTING" }; + _IfcLightFixtureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLightFixtureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLightFixtureTypeEnum = _IfcLightFixtureTypeEnum; + IFC4X32.IfcLightFixtureTypeEnum = IfcLightFixtureTypeEnum; + const _IfcLiquidTerminalTypeEnum = class _IfcLiquidTerminalTypeEnum { + }; + _IfcLiquidTerminalTypeEnum.HOSEREEL = { type: 3, value: "HOSEREEL" }; + _IfcLiquidTerminalTypeEnum.LOADINGARM = { type: 3, value: "LOADINGARM" }; + _IfcLiquidTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLiquidTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLiquidTerminalTypeEnum = _IfcLiquidTerminalTypeEnum; + IFC4X32.IfcLiquidTerminalTypeEnum = IfcLiquidTerminalTypeEnum; + const _IfcLoadGroupTypeEnum = class _IfcLoadGroupTypeEnum { + }; + _IfcLoadGroupTypeEnum.LOAD_CASE = { type: 3, value: "LOAD_CASE" }; + _IfcLoadGroupTypeEnum.LOAD_COMBINATION = { type: 3, value: "LOAD_COMBINATION" }; + _IfcLoadGroupTypeEnum.LOAD_GROUP = { type: 3, value: "LOAD_GROUP" }; + _IfcLoadGroupTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcLoadGroupTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcLoadGroupTypeEnum = _IfcLoadGroupTypeEnum; + IFC4X32.IfcLoadGroupTypeEnum = IfcLoadGroupTypeEnum; + const _IfcLogicalOperatorEnum = class _IfcLogicalOperatorEnum { + }; + _IfcLogicalOperatorEnum.LOGICALAND = { type: 3, value: "LOGICALAND" }; + _IfcLogicalOperatorEnum.LOGICALNOTAND = { type: 3, value: "LOGICALNOTAND" }; + _IfcLogicalOperatorEnum.LOGICALNOTOR = { type: 3, value: "LOGICALNOTOR" }; + _IfcLogicalOperatorEnum.LOGICALOR = { type: 3, value: "LOGICALOR" }; + _IfcLogicalOperatorEnum.LOGICALXOR = { type: 3, value: "LOGICALXOR" }; + let IfcLogicalOperatorEnum = _IfcLogicalOperatorEnum; + IFC4X32.IfcLogicalOperatorEnum = IfcLogicalOperatorEnum; + const _IfcMarineFacilityTypeEnum = class _IfcMarineFacilityTypeEnum { + }; + _IfcMarineFacilityTypeEnum.BARRIERBEACH = { type: 3, value: "BARRIERBEACH" }; + _IfcMarineFacilityTypeEnum.BREAKWATER = { type: 3, value: "BREAKWATER" }; + _IfcMarineFacilityTypeEnum.CANAL = { type: 3, value: "CANAL" }; + _IfcMarineFacilityTypeEnum.DRYDOCK = { type: 3, value: "DRYDOCK" }; + _IfcMarineFacilityTypeEnum.FLOATINGDOCK = { type: 3, value: "FLOATINGDOCK" }; + _IfcMarineFacilityTypeEnum.HYDROLIFT = { type: 3, value: "HYDROLIFT" }; + _IfcMarineFacilityTypeEnum.JETTY = { type: 3, value: "JETTY" }; + _IfcMarineFacilityTypeEnum.LAUNCHRECOVERY = { type: 3, value: "LAUNCHRECOVERY" }; + _IfcMarineFacilityTypeEnum.MARINEDEFENCE = { type: 3, value: "MARINEDEFENCE" }; + _IfcMarineFacilityTypeEnum.NAVIGATIONALCHANNEL = { type: 3, value: "NAVIGATIONALCHANNEL" }; + _IfcMarineFacilityTypeEnum.PORT = { type: 3, value: "PORT" }; + _IfcMarineFacilityTypeEnum.QUAY = { type: 3, value: "QUAY" }; + _IfcMarineFacilityTypeEnum.REVETMENT = { type: 3, value: "REVETMENT" }; + _IfcMarineFacilityTypeEnum.SHIPLIFT = { type: 3, value: "SHIPLIFT" }; + _IfcMarineFacilityTypeEnum.SHIPLOCK = { type: 3, value: "SHIPLOCK" }; + _IfcMarineFacilityTypeEnum.SHIPYARD = { type: 3, value: "SHIPYARD" }; + _IfcMarineFacilityTypeEnum.SLIPWAY = { type: 3, value: "SLIPWAY" }; + _IfcMarineFacilityTypeEnum.WATERWAY = { type: 3, value: "WATERWAY" }; + _IfcMarineFacilityTypeEnum.WATERWAYSHIPLIFT = { type: 3, value: "WATERWAYSHIPLIFT" }; + _IfcMarineFacilityTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMarineFacilityTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMarineFacilityTypeEnum = _IfcMarineFacilityTypeEnum; + IFC4X32.IfcMarineFacilityTypeEnum = IfcMarineFacilityTypeEnum; + const _IfcMarinePartTypeEnum = class _IfcMarinePartTypeEnum { + }; + _IfcMarinePartTypeEnum.ABOVEWATERLINE = { type: 3, value: "ABOVEWATERLINE" }; + _IfcMarinePartTypeEnum.ANCHORAGE = { type: 3, value: "ANCHORAGE" }; + _IfcMarinePartTypeEnum.APPROACHCHANNEL = { type: 3, value: "APPROACHCHANNEL" }; + _IfcMarinePartTypeEnum.BELOWWATERLINE = { type: 3, value: "BELOWWATERLINE" }; + _IfcMarinePartTypeEnum.BERTHINGSTRUCTURE = { type: 3, value: "BERTHINGSTRUCTURE" }; + _IfcMarinePartTypeEnum.CHAMBER = { type: 3, value: "CHAMBER" }; + _IfcMarinePartTypeEnum.CILL_LEVEL = { type: 3, value: "CILL_LEVEL" }; + _IfcMarinePartTypeEnum.COPELEVEL = { type: 3, value: "COPELEVEL" }; + _IfcMarinePartTypeEnum.CORE = { type: 3, value: "CORE" }; + _IfcMarinePartTypeEnum.CREST = { type: 3, value: "CREST" }; + _IfcMarinePartTypeEnum.GATEHEAD = { type: 3, value: "GATEHEAD" }; + _IfcMarinePartTypeEnum.GUDINGSTRUCTURE = { type: 3, value: "GUDINGSTRUCTURE" }; + _IfcMarinePartTypeEnum.HIGHWATERLINE = { type: 3, value: "HIGHWATERLINE" }; + _IfcMarinePartTypeEnum.LANDFIELD = { type: 3, value: "LANDFIELD" }; + _IfcMarinePartTypeEnum.LEEWARDSIDE = { type: 3, value: "LEEWARDSIDE" }; + _IfcMarinePartTypeEnum.LOWWATERLINE = { type: 3, value: "LOWWATERLINE" }; + _IfcMarinePartTypeEnum.MANUFACTURING = { type: 3, value: "MANUFACTURING" }; + _IfcMarinePartTypeEnum.NAVIGATIONALAREA = { type: 3, value: "NAVIGATIONALAREA" }; + _IfcMarinePartTypeEnum.PROTECTION = { type: 3, value: "PROTECTION" }; + _IfcMarinePartTypeEnum.SHIPTRANSFER = { type: 3, value: "SHIPTRANSFER" }; + _IfcMarinePartTypeEnum.STORAGEAREA = { type: 3, value: "STORAGEAREA" }; + _IfcMarinePartTypeEnum.VEHICLESERVICING = { type: 3, value: "VEHICLESERVICING" }; + _IfcMarinePartTypeEnum.WATERFIELD = { type: 3, value: "WATERFIELD" }; + _IfcMarinePartTypeEnum.WEATHERSIDE = { type: 3, value: "WEATHERSIDE" }; + _IfcMarinePartTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMarinePartTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMarinePartTypeEnum = _IfcMarinePartTypeEnum; + IFC4X32.IfcMarinePartTypeEnum = IfcMarinePartTypeEnum; + const _IfcMechanicalFastenerTypeEnum = class _IfcMechanicalFastenerTypeEnum { + }; + _IfcMechanicalFastenerTypeEnum.ANCHORBOLT = { type: 3, value: "ANCHORBOLT" }; + _IfcMechanicalFastenerTypeEnum.BOLT = { type: 3, value: "BOLT" }; + _IfcMechanicalFastenerTypeEnum.CHAIN = { type: 3, value: "CHAIN" }; + _IfcMechanicalFastenerTypeEnum.COUPLER = { type: 3, value: "COUPLER" }; + _IfcMechanicalFastenerTypeEnum.DOWEL = { type: 3, value: "DOWEL" }; + _IfcMechanicalFastenerTypeEnum.NAIL = { type: 3, value: "NAIL" }; + _IfcMechanicalFastenerTypeEnum.NAILPLATE = { type: 3, value: "NAILPLATE" }; + _IfcMechanicalFastenerTypeEnum.RAILFASTENING = { type: 3, value: "RAILFASTENING" }; + _IfcMechanicalFastenerTypeEnum.RAILJOINT = { type: 3, value: "RAILJOINT" }; + _IfcMechanicalFastenerTypeEnum.RIVET = { type: 3, value: "RIVET" }; + _IfcMechanicalFastenerTypeEnum.ROPE = { type: 3, value: "ROPE" }; + _IfcMechanicalFastenerTypeEnum.SCREW = { type: 3, value: "SCREW" }; + _IfcMechanicalFastenerTypeEnum.SHEARCONNECTOR = { type: 3, value: "SHEARCONNECTOR" }; + _IfcMechanicalFastenerTypeEnum.STAPLE = { type: 3, value: "STAPLE" }; + _IfcMechanicalFastenerTypeEnum.STUDSHEARCONNECTOR = { type: 3, value: "STUDSHEARCONNECTOR" }; + _IfcMechanicalFastenerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMechanicalFastenerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMechanicalFastenerTypeEnum = _IfcMechanicalFastenerTypeEnum; + IFC4X32.IfcMechanicalFastenerTypeEnum = IfcMechanicalFastenerTypeEnum; + const _IfcMedicalDeviceTypeEnum = class _IfcMedicalDeviceTypeEnum { + }; + _IfcMedicalDeviceTypeEnum.AIRSTATION = { type: 3, value: "AIRSTATION" }; + _IfcMedicalDeviceTypeEnum.FEEDAIRUNIT = { type: 3, value: "FEEDAIRUNIT" }; + _IfcMedicalDeviceTypeEnum.OXYGENGENERATOR = { type: 3, value: "OXYGENGENERATOR" }; + _IfcMedicalDeviceTypeEnum.OXYGENPLANT = { type: 3, value: "OXYGENPLANT" }; + _IfcMedicalDeviceTypeEnum.VACUUMSTATION = { type: 3, value: "VACUUMSTATION" }; + _IfcMedicalDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMedicalDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMedicalDeviceTypeEnum = _IfcMedicalDeviceTypeEnum; + IFC4X32.IfcMedicalDeviceTypeEnum = IfcMedicalDeviceTypeEnum; + const _IfcMemberTypeEnum = class _IfcMemberTypeEnum { + }; + _IfcMemberTypeEnum.ARCH_SEGMENT = { type: 3, value: "ARCH_SEGMENT" }; + _IfcMemberTypeEnum.BRACE = { type: 3, value: "BRACE" }; + _IfcMemberTypeEnum.CHORD = { type: 3, value: "CHORD" }; + _IfcMemberTypeEnum.COLLAR = { type: 3, value: "COLLAR" }; + _IfcMemberTypeEnum.MEMBER = { type: 3, value: "MEMBER" }; + _IfcMemberTypeEnum.MULLION = { type: 3, value: "MULLION" }; + _IfcMemberTypeEnum.PLATE = { type: 3, value: "PLATE" }; + _IfcMemberTypeEnum.POST = { type: 3, value: "POST" }; + _IfcMemberTypeEnum.PURLIN = { type: 3, value: "PURLIN" }; + _IfcMemberTypeEnum.RAFTER = { type: 3, value: "RAFTER" }; + _IfcMemberTypeEnum.STAY_CABLE = { type: 3, value: "STAY_CABLE" }; + _IfcMemberTypeEnum.STIFFENING_RIB = { type: 3, value: "STIFFENING_RIB" }; + _IfcMemberTypeEnum.STRINGER = { type: 3, value: "STRINGER" }; + _IfcMemberTypeEnum.STRUCTURALCABLE = { type: 3, value: "STRUCTURALCABLE" }; + _IfcMemberTypeEnum.STRUT = { type: 3, value: "STRUT" }; + _IfcMemberTypeEnum.STUD = { type: 3, value: "STUD" }; + _IfcMemberTypeEnum.SUSPENDER = { type: 3, value: "SUSPENDER" }; + _IfcMemberTypeEnum.SUSPENSION_CABLE = { type: 3, value: "SUSPENSION_CABLE" }; + _IfcMemberTypeEnum.TIEBAR = { type: 3, value: "TIEBAR" }; + _IfcMemberTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMemberTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMemberTypeEnum = _IfcMemberTypeEnum; + IFC4X32.IfcMemberTypeEnum = IfcMemberTypeEnum; + const _IfcMobileTelecommunicationsApplianceTypeEnum = class _IfcMobileTelecommunicationsApplianceTypeEnum { + }; + _IfcMobileTelecommunicationsApplianceTypeEnum.ACCESSPOINT = { type: 3, value: "ACCESSPOINT" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.BASEBANDUNIT = { type: 3, value: "BASEBANDUNIT" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.BASETRANSCEIVERSTATION = { type: 3, value: "BASETRANSCEIVERSTATION" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.E_UTRAN_NODE_B = { type: 3, value: "E_UTRAN_NODE_B" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.GATEWAY_GPRS_SUPPORT_NODE = { type: 3, value: "GATEWAY_GPRS_SUPPORT_NODE" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.MASTERUNIT = { type: 3, value: "MASTERUNIT" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.MOBILESWITCHINGCENTER = { type: 3, value: "MOBILESWITCHINGCENTER" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.MSCSERVER = { type: 3, value: "MSCSERVER" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.PACKETCONTROLUNIT = { type: 3, value: "PACKETCONTROLUNIT" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.REMOTERADIOUNIT = { type: 3, value: "REMOTERADIOUNIT" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.REMOTEUNIT = { type: 3, value: "REMOTEUNIT" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.SERVICE_GPRS_SUPPORT_NODE = { type: 3, value: "SERVICE_GPRS_SUPPORT_NODE" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.SUBSCRIBERSERVER = { type: 3, value: "SUBSCRIBERSERVER" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMobileTelecommunicationsApplianceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMobileTelecommunicationsApplianceTypeEnum = _IfcMobileTelecommunicationsApplianceTypeEnum; + IFC4X32.IfcMobileTelecommunicationsApplianceTypeEnum = IfcMobileTelecommunicationsApplianceTypeEnum; + const _IfcMooringDeviceTypeEnum = class _IfcMooringDeviceTypeEnum { + }; + _IfcMooringDeviceTypeEnum.BOLLARD = { type: 3, value: "BOLLARD" }; + _IfcMooringDeviceTypeEnum.LINETENSIONER = { type: 3, value: "LINETENSIONER" }; + _IfcMooringDeviceTypeEnum.MAGNETICDEVICE = { type: 3, value: "MAGNETICDEVICE" }; + _IfcMooringDeviceTypeEnum.MOORINGHOOKS = { type: 3, value: "MOORINGHOOKS" }; + _IfcMooringDeviceTypeEnum.VACUUMDEVICE = { type: 3, value: "VACUUMDEVICE" }; + _IfcMooringDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMooringDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMooringDeviceTypeEnum = _IfcMooringDeviceTypeEnum; + IFC4X32.IfcMooringDeviceTypeEnum = IfcMooringDeviceTypeEnum; + const _IfcMotorConnectionTypeEnum = class _IfcMotorConnectionTypeEnum { + }; + _IfcMotorConnectionTypeEnum.BELTDRIVE = { type: 3, value: "BELTDRIVE" }; + _IfcMotorConnectionTypeEnum.COUPLING = { type: 3, value: "COUPLING" }; + _IfcMotorConnectionTypeEnum.DIRECTDRIVE = { type: 3, value: "DIRECTDRIVE" }; + _IfcMotorConnectionTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcMotorConnectionTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcMotorConnectionTypeEnum = _IfcMotorConnectionTypeEnum; + IFC4X32.IfcMotorConnectionTypeEnum = IfcMotorConnectionTypeEnum; + const _IfcNavigationElementTypeEnum = class _IfcNavigationElementTypeEnum { + }; + _IfcNavigationElementTypeEnum.BEACON = { type: 3, value: "BEACON" }; + _IfcNavigationElementTypeEnum.BUOY = { type: 3, value: "BUOY" }; + _IfcNavigationElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcNavigationElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcNavigationElementTypeEnum = _IfcNavigationElementTypeEnum; + IFC4X32.IfcNavigationElementTypeEnum = IfcNavigationElementTypeEnum; + const _IfcObjectiveEnum = class _IfcObjectiveEnum { + }; + _IfcObjectiveEnum.CODECOMPLIANCE = { type: 3, value: "CODECOMPLIANCE" }; + _IfcObjectiveEnum.CODEWAIVER = { type: 3, value: "CODEWAIVER" }; + _IfcObjectiveEnum.DESIGNINTENT = { type: 3, value: "DESIGNINTENT" }; + _IfcObjectiveEnum.EXTERNAL = { type: 3, value: "EXTERNAL" }; + _IfcObjectiveEnum.HEALTHANDSAFETY = { type: 3, value: "HEALTHANDSAFETY" }; + _IfcObjectiveEnum.MERGECONFLICT = { type: 3, value: "MERGECONFLICT" }; + _IfcObjectiveEnum.MODELVIEW = { type: 3, value: "MODELVIEW" }; + _IfcObjectiveEnum.PARAMETER = { type: 3, value: "PARAMETER" }; + _IfcObjectiveEnum.REQUIREMENT = { type: 3, value: "REQUIREMENT" }; + _IfcObjectiveEnum.SPECIFICATION = { type: 3, value: "SPECIFICATION" }; + _IfcObjectiveEnum.TRIGGERCONDITION = { type: 3, value: "TRIGGERCONDITION" }; + _IfcObjectiveEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcObjectiveEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcObjectiveEnum = _IfcObjectiveEnum; + IFC4X32.IfcObjectiveEnum = IfcObjectiveEnum; + const _IfcOccupantTypeEnum = class _IfcOccupantTypeEnum { + }; + _IfcOccupantTypeEnum.ASSIGNEE = { type: 3, value: "ASSIGNEE" }; + _IfcOccupantTypeEnum.ASSIGNOR = { type: 3, value: "ASSIGNOR" }; + _IfcOccupantTypeEnum.LESSEE = { type: 3, value: "LESSEE" }; + _IfcOccupantTypeEnum.LESSOR = { type: 3, value: "LESSOR" }; + _IfcOccupantTypeEnum.LETTINGAGENT = { type: 3, value: "LETTINGAGENT" }; + _IfcOccupantTypeEnum.OWNER = { type: 3, value: "OWNER" }; + _IfcOccupantTypeEnum.TENANT = { type: 3, value: "TENANT" }; + _IfcOccupantTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcOccupantTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcOccupantTypeEnum = _IfcOccupantTypeEnum; + IFC4X32.IfcOccupantTypeEnum = IfcOccupantTypeEnum; + const _IfcOpeningElementTypeEnum = class _IfcOpeningElementTypeEnum { + }; + _IfcOpeningElementTypeEnum.OPENING = { type: 3, value: "OPENING" }; + _IfcOpeningElementTypeEnum.RECESS = { type: 3, value: "RECESS" }; + _IfcOpeningElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcOpeningElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcOpeningElementTypeEnum = _IfcOpeningElementTypeEnum; + IFC4X32.IfcOpeningElementTypeEnum = IfcOpeningElementTypeEnum; + const _IfcOutletTypeEnum = class _IfcOutletTypeEnum { + }; + _IfcOutletTypeEnum.AUDIOVISUALOUTLET = { type: 3, value: "AUDIOVISUALOUTLET" }; + _IfcOutletTypeEnum.COMMUNICATIONSOUTLET = { type: 3, value: "COMMUNICATIONSOUTLET" }; + _IfcOutletTypeEnum.DATAOUTLET = { type: 3, value: "DATAOUTLET" }; + _IfcOutletTypeEnum.POWEROUTLET = { type: 3, value: "POWEROUTLET" }; + _IfcOutletTypeEnum.TELEPHONEOUTLET = { type: 3, value: "TELEPHONEOUTLET" }; + _IfcOutletTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcOutletTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcOutletTypeEnum = _IfcOutletTypeEnum; + IFC4X32.IfcOutletTypeEnum = IfcOutletTypeEnum; + const _IfcPavementTypeEnum = class _IfcPavementTypeEnum { + }; + _IfcPavementTypeEnum.FLEXIBLE = { type: 3, value: "FLEXIBLE" }; + _IfcPavementTypeEnum.RIGID = { type: 3, value: "RIGID" }; + _IfcPavementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPavementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPavementTypeEnum = _IfcPavementTypeEnum; + IFC4X32.IfcPavementTypeEnum = IfcPavementTypeEnum; + const _IfcPerformanceHistoryTypeEnum = class _IfcPerformanceHistoryTypeEnum { + }; + _IfcPerformanceHistoryTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPerformanceHistoryTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPerformanceHistoryTypeEnum = _IfcPerformanceHistoryTypeEnum; + IFC4X32.IfcPerformanceHistoryTypeEnum = IfcPerformanceHistoryTypeEnum; + const _IfcPermeableCoveringOperationEnum = class _IfcPermeableCoveringOperationEnum { + }; + _IfcPermeableCoveringOperationEnum.GRILL = { type: 3, value: "GRILL" }; + _IfcPermeableCoveringOperationEnum.LOUVER = { type: 3, value: "LOUVER" }; + _IfcPermeableCoveringOperationEnum.SCREEN = { type: 3, value: "SCREEN" }; + _IfcPermeableCoveringOperationEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPermeableCoveringOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPermeableCoveringOperationEnum = _IfcPermeableCoveringOperationEnum; + IFC4X32.IfcPermeableCoveringOperationEnum = IfcPermeableCoveringOperationEnum; + const _IfcPermitTypeEnum = class _IfcPermitTypeEnum { + }; + _IfcPermitTypeEnum.ACCESS = { type: 3, value: "ACCESS" }; + _IfcPermitTypeEnum.BUILDING = { type: 3, value: "BUILDING" }; + _IfcPermitTypeEnum.WORK = { type: 3, value: "WORK" }; + _IfcPermitTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPermitTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPermitTypeEnum = _IfcPermitTypeEnum; + IFC4X32.IfcPermitTypeEnum = IfcPermitTypeEnum; + const _IfcPhysicalOrVirtualEnum = class _IfcPhysicalOrVirtualEnum { + }; + _IfcPhysicalOrVirtualEnum.PHYSICAL = { type: 3, value: "PHYSICAL" }; + _IfcPhysicalOrVirtualEnum.VIRTUAL = { type: 3, value: "VIRTUAL" }; + _IfcPhysicalOrVirtualEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPhysicalOrVirtualEnum = _IfcPhysicalOrVirtualEnum; + IFC4X32.IfcPhysicalOrVirtualEnum = IfcPhysicalOrVirtualEnum; + const _IfcPileConstructionEnum = class _IfcPileConstructionEnum { + }; + _IfcPileConstructionEnum.CAST_IN_PLACE = { type: 3, value: "CAST_IN_PLACE" }; + _IfcPileConstructionEnum.COMPOSITE = { type: 3, value: "COMPOSITE" }; + _IfcPileConstructionEnum.PRECAST_CONCRETE = { type: 3, value: "PRECAST_CONCRETE" }; + _IfcPileConstructionEnum.PREFAB_STEEL = { type: 3, value: "PREFAB_STEEL" }; + _IfcPileConstructionEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPileConstructionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPileConstructionEnum = _IfcPileConstructionEnum; + IFC4X32.IfcPileConstructionEnum = IfcPileConstructionEnum; + const _IfcPileTypeEnum = class _IfcPileTypeEnum { + }; + _IfcPileTypeEnum.BORED = { type: 3, value: "BORED" }; + _IfcPileTypeEnum.COHESION = { type: 3, value: "COHESION" }; + _IfcPileTypeEnum.DRIVEN = { type: 3, value: "DRIVEN" }; + _IfcPileTypeEnum.FRICTION = { type: 3, value: "FRICTION" }; + _IfcPileTypeEnum.JETGROUTING = { type: 3, value: "JETGROUTING" }; + _IfcPileTypeEnum.SUPPORT = { type: 3, value: "SUPPORT" }; + _IfcPileTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPileTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPileTypeEnum = _IfcPileTypeEnum; + IFC4X32.IfcPileTypeEnum = IfcPileTypeEnum; + const _IfcPipeFittingTypeEnum = class _IfcPipeFittingTypeEnum { + }; + _IfcPipeFittingTypeEnum.BEND = { type: 3, value: "BEND" }; + _IfcPipeFittingTypeEnum.CONNECTOR = { type: 3, value: "CONNECTOR" }; + _IfcPipeFittingTypeEnum.ENTRY = { type: 3, value: "ENTRY" }; + _IfcPipeFittingTypeEnum.EXIT = { type: 3, value: "EXIT" }; + _IfcPipeFittingTypeEnum.JUNCTION = { type: 3, value: "JUNCTION" }; + _IfcPipeFittingTypeEnum.OBSTRUCTION = { type: 3, value: "OBSTRUCTION" }; + _IfcPipeFittingTypeEnum.TRANSITION = { type: 3, value: "TRANSITION" }; + _IfcPipeFittingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPipeFittingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPipeFittingTypeEnum = _IfcPipeFittingTypeEnum; + IFC4X32.IfcPipeFittingTypeEnum = IfcPipeFittingTypeEnum; + const _IfcPipeSegmentTypeEnum = class _IfcPipeSegmentTypeEnum { + }; + _IfcPipeSegmentTypeEnum.CULVERT = { type: 3, value: "CULVERT" }; + _IfcPipeSegmentTypeEnum.FLEXIBLESEGMENT = { type: 3, value: "FLEXIBLESEGMENT" }; + _IfcPipeSegmentTypeEnum.GUTTER = { type: 3, value: "GUTTER" }; + _IfcPipeSegmentTypeEnum.RIGIDSEGMENT = { type: 3, value: "RIGIDSEGMENT" }; + _IfcPipeSegmentTypeEnum.SPOOL = { type: 3, value: "SPOOL" }; + _IfcPipeSegmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPipeSegmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPipeSegmentTypeEnum = _IfcPipeSegmentTypeEnum; + IFC4X32.IfcPipeSegmentTypeEnum = IfcPipeSegmentTypeEnum; + const _IfcPlateTypeEnum = class _IfcPlateTypeEnum { + }; + _IfcPlateTypeEnum.BASE_PLATE = { type: 3, value: "BASE_PLATE" }; + _IfcPlateTypeEnum.COVER_PLATE = { type: 3, value: "COVER_PLATE" }; + _IfcPlateTypeEnum.CURTAIN_PANEL = { type: 3, value: "CURTAIN_PANEL" }; + _IfcPlateTypeEnum.FLANGE_PLATE = { type: 3, value: "FLANGE_PLATE" }; + _IfcPlateTypeEnum.GUSSET_PLATE = { type: 3, value: "GUSSET_PLATE" }; + _IfcPlateTypeEnum.SHEET = { type: 3, value: "SHEET" }; + _IfcPlateTypeEnum.SPLICE_PLATE = { type: 3, value: "SPLICE_PLATE" }; + _IfcPlateTypeEnum.STIFFENER_PLATE = { type: 3, value: "STIFFENER_PLATE" }; + _IfcPlateTypeEnum.WEB_PLATE = { type: 3, value: "WEB_PLATE" }; + _IfcPlateTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPlateTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPlateTypeEnum = _IfcPlateTypeEnum; + IFC4X32.IfcPlateTypeEnum = IfcPlateTypeEnum; + const _IfcPreferredSurfaceCurveRepresentation = class _IfcPreferredSurfaceCurveRepresentation { + }; + _IfcPreferredSurfaceCurveRepresentation.CURVE3D = { type: 3, value: "CURVE3D" }; + _IfcPreferredSurfaceCurveRepresentation.PCURVE_S1 = { type: 3, value: "PCURVE_S1" }; + _IfcPreferredSurfaceCurveRepresentation.PCURVE_S2 = { type: 3, value: "PCURVE_S2" }; + let IfcPreferredSurfaceCurveRepresentation = _IfcPreferredSurfaceCurveRepresentation; + IFC4X32.IfcPreferredSurfaceCurveRepresentation = IfcPreferredSurfaceCurveRepresentation; + const _IfcProcedureTypeEnum = class _IfcProcedureTypeEnum { + }; + _IfcProcedureTypeEnum.ADVICE_CAUTION = { type: 3, value: "ADVICE_CAUTION" }; + _IfcProcedureTypeEnum.ADVICE_NOTE = { type: 3, value: "ADVICE_NOTE" }; + _IfcProcedureTypeEnum.ADVICE_WARNING = { type: 3, value: "ADVICE_WARNING" }; + _IfcProcedureTypeEnum.CALIBRATION = { type: 3, value: "CALIBRATION" }; + _IfcProcedureTypeEnum.DIAGNOSTIC = { type: 3, value: "DIAGNOSTIC" }; + _IfcProcedureTypeEnum.SHUTDOWN = { type: 3, value: "SHUTDOWN" }; + _IfcProcedureTypeEnum.STARTUP = { type: 3, value: "STARTUP" }; + _IfcProcedureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProcedureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProcedureTypeEnum = _IfcProcedureTypeEnum; + IFC4X32.IfcProcedureTypeEnum = IfcProcedureTypeEnum; + const _IfcProfileTypeEnum = class _IfcProfileTypeEnum { + }; + _IfcProfileTypeEnum.AREA = { type: 3, value: "AREA" }; + _IfcProfileTypeEnum.CURVE = { type: 3, value: "CURVE" }; + let IfcProfileTypeEnum = _IfcProfileTypeEnum; + IFC4X32.IfcProfileTypeEnum = IfcProfileTypeEnum; + const _IfcProjectOrderTypeEnum = class _IfcProjectOrderTypeEnum { + }; + _IfcProjectOrderTypeEnum.CHANGEORDER = { type: 3, value: "CHANGEORDER" }; + _IfcProjectOrderTypeEnum.MAINTENANCEWORKORDER = { type: 3, value: "MAINTENANCEWORKORDER" }; + _IfcProjectOrderTypeEnum.MOVEORDER = { type: 3, value: "MOVEORDER" }; + _IfcProjectOrderTypeEnum.PURCHASEORDER = { type: 3, value: "PURCHASEORDER" }; + _IfcProjectOrderTypeEnum.WORKORDER = { type: 3, value: "WORKORDER" }; + _IfcProjectOrderTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProjectOrderTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProjectOrderTypeEnum = _IfcProjectOrderTypeEnum; + IFC4X32.IfcProjectOrderTypeEnum = IfcProjectOrderTypeEnum; + const _IfcProjectedOrTrueLengthEnum = class _IfcProjectedOrTrueLengthEnum { + }; + _IfcProjectedOrTrueLengthEnum.PROJECTED_LENGTH = { type: 3, value: "PROJECTED_LENGTH" }; + _IfcProjectedOrTrueLengthEnum.TRUE_LENGTH = { type: 3, value: "TRUE_LENGTH" }; + let IfcProjectedOrTrueLengthEnum = _IfcProjectedOrTrueLengthEnum; + IFC4X32.IfcProjectedOrTrueLengthEnum = IfcProjectedOrTrueLengthEnum; + const _IfcProjectionElementTypeEnum = class _IfcProjectionElementTypeEnum { + }; + _IfcProjectionElementTypeEnum.BLISTER = { type: 3, value: "BLISTER" }; + _IfcProjectionElementTypeEnum.DEVIATOR = { type: 3, value: "DEVIATOR" }; + _IfcProjectionElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProjectionElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProjectionElementTypeEnum = _IfcProjectionElementTypeEnum; + IFC4X32.IfcProjectionElementTypeEnum = IfcProjectionElementTypeEnum; + const _IfcPropertySetTemplateTypeEnum = class _IfcPropertySetTemplateTypeEnum { + }; + _IfcPropertySetTemplateTypeEnum.PSET_MATERIALDRIVEN = { type: 3, value: "PSET_MATERIALDRIVEN" }; + _IfcPropertySetTemplateTypeEnum.PSET_OCCURRENCEDRIVEN = { type: 3, value: "PSET_OCCURRENCEDRIVEN" }; + _IfcPropertySetTemplateTypeEnum.PSET_PERFORMANCEDRIVEN = { type: 3, value: "PSET_PERFORMANCEDRIVEN" }; + _IfcPropertySetTemplateTypeEnum.PSET_PROFILEDRIVEN = { type: 3, value: "PSET_PROFILEDRIVEN" }; + _IfcPropertySetTemplateTypeEnum.PSET_TYPEDRIVENONLY = { type: 3, value: "PSET_TYPEDRIVENONLY" }; + _IfcPropertySetTemplateTypeEnum.PSET_TYPEDRIVENOVERRIDE = { type: 3, value: "PSET_TYPEDRIVENOVERRIDE" }; + _IfcPropertySetTemplateTypeEnum.QTO_OCCURRENCEDRIVEN = { type: 3, value: "QTO_OCCURRENCEDRIVEN" }; + _IfcPropertySetTemplateTypeEnum.QTO_TYPEDRIVENONLY = { type: 3, value: "QTO_TYPEDRIVENONLY" }; + _IfcPropertySetTemplateTypeEnum.QTO_TYPEDRIVENOVERRIDE = { type: 3, value: "QTO_TYPEDRIVENOVERRIDE" }; + _IfcPropertySetTemplateTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPropertySetTemplateTypeEnum = _IfcPropertySetTemplateTypeEnum; + IFC4X32.IfcPropertySetTemplateTypeEnum = IfcPropertySetTemplateTypeEnum; + const _IfcProtectiveDeviceTrippingUnitTypeEnum = class _IfcProtectiveDeviceTrippingUnitTypeEnum { + }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.ELECTROMAGNETIC = { type: 3, value: "ELECTROMAGNETIC" }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.ELECTRONIC = { type: 3, value: "ELECTRONIC" }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.RESIDUALCURRENT = { type: 3, value: "RESIDUALCURRENT" }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.THERMAL = { type: 3, value: "THERMAL" }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProtectiveDeviceTrippingUnitTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProtectiveDeviceTrippingUnitTypeEnum = _IfcProtectiveDeviceTrippingUnitTypeEnum; + IFC4X32.IfcProtectiveDeviceTrippingUnitTypeEnum = IfcProtectiveDeviceTrippingUnitTypeEnum; + const _IfcProtectiveDeviceTypeEnum = class _IfcProtectiveDeviceTypeEnum { + }; + _IfcProtectiveDeviceTypeEnum.ANTI_ARCING_DEVICE = { type: 3, value: "ANTI_ARCING_DEVICE" }; + _IfcProtectiveDeviceTypeEnum.CIRCUITBREAKER = { type: 3, value: "CIRCUITBREAKER" }; + _IfcProtectiveDeviceTypeEnum.EARTHINGSWITCH = { type: 3, value: "EARTHINGSWITCH" }; + _IfcProtectiveDeviceTypeEnum.EARTHLEAKAGECIRCUITBREAKER = { type: 3, value: "EARTHLEAKAGECIRCUITBREAKER" }; + _IfcProtectiveDeviceTypeEnum.FUSEDISCONNECTOR = { type: 3, value: "FUSEDISCONNECTOR" }; + _IfcProtectiveDeviceTypeEnum.RESIDUALCURRENTCIRCUITBREAKER = { type: 3, value: "RESIDUALCURRENTCIRCUITBREAKER" }; + _IfcProtectiveDeviceTypeEnum.RESIDUALCURRENTSWITCH = { type: 3, value: "RESIDUALCURRENTSWITCH" }; + _IfcProtectiveDeviceTypeEnum.SPARKGAP = { type: 3, value: "SPARKGAP" }; + _IfcProtectiveDeviceTypeEnum.VARISTOR = { type: 3, value: "VARISTOR" }; + _IfcProtectiveDeviceTypeEnum.VOLTAGELIMITER = { type: 3, value: "VOLTAGELIMITER" }; + _IfcProtectiveDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcProtectiveDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcProtectiveDeviceTypeEnum = _IfcProtectiveDeviceTypeEnum; + IFC4X32.IfcProtectiveDeviceTypeEnum = IfcProtectiveDeviceTypeEnum; + const _IfcPumpTypeEnum = class _IfcPumpTypeEnum { + }; + _IfcPumpTypeEnum.CIRCULATOR = { type: 3, value: "CIRCULATOR" }; + _IfcPumpTypeEnum.ENDSUCTION = { type: 3, value: "ENDSUCTION" }; + _IfcPumpTypeEnum.SPLITCASE = { type: 3, value: "SPLITCASE" }; + _IfcPumpTypeEnum.SUBMERSIBLEPUMP = { type: 3, value: "SUBMERSIBLEPUMP" }; + _IfcPumpTypeEnum.SUMPPUMP = { type: 3, value: "SUMPPUMP" }; + _IfcPumpTypeEnum.VERTICALINLINE = { type: 3, value: "VERTICALINLINE" }; + _IfcPumpTypeEnum.VERTICALTURBINE = { type: 3, value: "VERTICALTURBINE" }; + _IfcPumpTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcPumpTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcPumpTypeEnum = _IfcPumpTypeEnum; + IFC4X32.IfcPumpTypeEnum = IfcPumpTypeEnum; + const _IfcRailTypeEnum = class _IfcRailTypeEnum { + }; + _IfcRailTypeEnum.BLADE = { type: 3, value: "BLADE" }; + _IfcRailTypeEnum.CHECKRAIL = { type: 3, value: "CHECKRAIL" }; + _IfcRailTypeEnum.GUARDRAIL = { type: 3, value: "GUARDRAIL" }; + _IfcRailTypeEnum.RACKRAIL = { type: 3, value: "RACKRAIL" }; + _IfcRailTypeEnum.RAIL = { type: 3, value: "RAIL" }; + _IfcRailTypeEnum.STOCKRAIL = { type: 3, value: "STOCKRAIL" }; + _IfcRailTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRailTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRailTypeEnum = _IfcRailTypeEnum; + IFC4X32.IfcRailTypeEnum = IfcRailTypeEnum; + const _IfcRailingTypeEnum = class _IfcRailingTypeEnum { + }; + _IfcRailingTypeEnum.BALUSTRADE = { type: 3, value: "BALUSTRADE" }; + _IfcRailingTypeEnum.FENCE = { type: 3, value: "FENCE" }; + _IfcRailingTypeEnum.GUARDRAIL = { type: 3, value: "GUARDRAIL" }; + _IfcRailingTypeEnum.HANDRAIL = { type: 3, value: "HANDRAIL" }; + _IfcRailingTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRailingTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRailingTypeEnum = _IfcRailingTypeEnum; + IFC4X32.IfcRailingTypeEnum = IfcRailingTypeEnum; + const _IfcRailwayPartTypeEnum = class _IfcRailwayPartTypeEnum { + }; + _IfcRailwayPartTypeEnum.ABOVETRACK = { type: 3, value: "ABOVETRACK" }; + _IfcRailwayPartTypeEnum.DILATIONTRACK = { type: 3, value: "DILATIONTRACK" }; + _IfcRailwayPartTypeEnum.LINESIDE = { type: 3, value: "LINESIDE" }; + _IfcRailwayPartTypeEnum.LINESIDEPART = { type: 3, value: "LINESIDEPART" }; + _IfcRailwayPartTypeEnum.PLAINTRACK = { type: 3, value: "PLAINTRACK" }; + _IfcRailwayPartTypeEnum.SUBSTRUCTURE = { type: 3, value: "SUBSTRUCTURE" }; + _IfcRailwayPartTypeEnum.TRACK = { type: 3, value: "TRACK" }; + _IfcRailwayPartTypeEnum.TRACKPART = { type: 3, value: "TRACKPART" }; + _IfcRailwayPartTypeEnum.TURNOUTTRACK = { type: 3, value: "TURNOUTTRACK" }; + _IfcRailwayPartTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRailwayPartTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRailwayPartTypeEnum = _IfcRailwayPartTypeEnum; + IFC4X32.IfcRailwayPartTypeEnum = IfcRailwayPartTypeEnum; + const _IfcRailwayTypeEnum = class _IfcRailwayTypeEnum { + }; + _IfcRailwayTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRailwayTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRailwayTypeEnum = _IfcRailwayTypeEnum; + IFC4X32.IfcRailwayTypeEnum = IfcRailwayTypeEnum; + const _IfcRampFlightTypeEnum = class _IfcRampFlightTypeEnum { + }; + _IfcRampFlightTypeEnum.SPIRAL = { type: 3, value: "SPIRAL" }; + _IfcRampFlightTypeEnum.STRAIGHT = { type: 3, value: "STRAIGHT" }; + _IfcRampFlightTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRampFlightTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRampFlightTypeEnum = _IfcRampFlightTypeEnum; + IFC4X32.IfcRampFlightTypeEnum = IfcRampFlightTypeEnum; + const _IfcRampTypeEnum = class _IfcRampTypeEnum { + }; + _IfcRampTypeEnum.HALF_TURN_RAMP = { type: 3, value: "HALF_TURN_RAMP" }; + _IfcRampTypeEnum.QUARTER_TURN_RAMP = { type: 3, value: "QUARTER_TURN_RAMP" }; + _IfcRampTypeEnum.SPIRAL_RAMP = { type: 3, value: "SPIRAL_RAMP" }; + _IfcRampTypeEnum.STRAIGHT_RUN_RAMP = { type: 3, value: "STRAIGHT_RUN_RAMP" }; + _IfcRampTypeEnum.TWO_QUARTER_TURN_RAMP = { type: 3, value: "TWO_QUARTER_TURN_RAMP" }; + _IfcRampTypeEnum.TWO_STRAIGHT_RUN_RAMP = { type: 3, value: "TWO_STRAIGHT_RUN_RAMP" }; + _IfcRampTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRampTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRampTypeEnum = _IfcRampTypeEnum; + IFC4X32.IfcRampTypeEnum = IfcRampTypeEnum; + const _IfcRecurrenceTypeEnum = class _IfcRecurrenceTypeEnum { + }; + _IfcRecurrenceTypeEnum.BY_DAY_COUNT = { type: 3, value: "BY_DAY_COUNT" }; + _IfcRecurrenceTypeEnum.BY_WEEKDAY_COUNT = { type: 3, value: "BY_WEEKDAY_COUNT" }; + _IfcRecurrenceTypeEnum.DAILY = { type: 3, value: "DAILY" }; + _IfcRecurrenceTypeEnum.MONTHLY_BY_DAY_OF_MONTH = { type: 3, value: "MONTHLY_BY_DAY_OF_MONTH" }; + _IfcRecurrenceTypeEnum.MONTHLY_BY_POSITION = { type: 3, value: "MONTHLY_BY_POSITION" }; + _IfcRecurrenceTypeEnum.WEEKLY = { type: 3, value: "WEEKLY" }; + _IfcRecurrenceTypeEnum.YEARLY_BY_DAY_OF_MONTH = { type: 3, value: "YEARLY_BY_DAY_OF_MONTH" }; + _IfcRecurrenceTypeEnum.YEARLY_BY_POSITION = { type: 3, value: "YEARLY_BY_POSITION" }; + let IfcRecurrenceTypeEnum = _IfcRecurrenceTypeEnum; + IFC4X32.IfcRecurrenceTypeEnum = IfcRecurrenceTypeEnum; + const _IfcReferentTypeEnum = class _IfcReferentTypeEnum { + }; + _IfcReferentTypeEnum.BOUNDARY = { type: 3, value: "BOUNDARY" }; + _IfcReferentTypeEnum.INTERSECTION = { type: 3, value: "INTERSECTION" }; + _IfcReferentTypeEnum.KILOPOINT = { type: 3, value: "KILOPOINT" }; + _IfcReferentTypeEnum.LANDMARK = { type: 3, value: "LANDMARK" }; + _IfcReferentTypeEnum.MILEPOINT = { type: 3, value: "MILEPOINT" }; + _IfcReferentTypeEnum.POSITION = { type: 3, value: "POSITION" }; + _IfcReferentTypeEnum.REFERENCEMARKER = { type: 3, value: "REFERENCEMARKER" }; + _IfcReferentTypeEnum.STATION = { type: 3, value: "STATION" }; + _IfcReferentTypeEnum.SUPERELEVATIONEVENT = { type: 3, value: "SUPERELEVATIONEVENT" }; + _IfcReferentTypeEnum.WIDTHEVENT = { type: 3, value: "WIDTHEVENT" }; + _IfcReferentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcReferentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReferentTypeEnum = _IfcReferentTypeEnum; + IFC4X32.IfcReferentTypeEnum = IfcReferentTypeEnum; + const _IfcReflectanceMethodEnum = class _IfcReflectanceMethodEnum { + }; + _IfcReflectanceMethodEnum.BLINN = { type: 3, value: "BLINN" }; + _IfcReflectanceMethodEnum.FLAT = { type: 3, value: "FLAT" }; + _IfcReflectanceMethodEnum.GLASS = { type: 3, value: "GLASS" }; + _IfcReflectanceMethodEnum.MATT = { type: 3, value: "MATT" }; + _IfcReflectanceMethodEnum.METAL = { type: 3, value: "METAL" }; + _IfcReflectanceMethodEnum.MIRROR = { type: 3, value: "MIRROR" }; + _IfcReflectanceMethodEnum.PHONG = { type: 3, value: "PHONG" }; + _IfcReflectanceMethodEnum.PHYSICAL = { type: 3, value: "PHYSICAL" }; + _IfcReflectanceMethodEnum.PLASTIC = { type: 3, value: "PLASTIC" }; + _IfcReflectanceMethodEnum.STRAUSS = { type: 3, value: "STRAUSS" }; + _IfcReflectanceMethodEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReflectanceMethodEnum = _IfcReflectanceMethodEnum; + IFC4X32.IfcReflectanceMethodEnum = IfcReflectanceMethodEnum; + const _IfcReinforcedSoilTypeEnum = class _IfcReinforcedSoilTypeEnum { + }; + _IfcReinforcedSoilTypeEnum.DYNAMICALLYCOMPACTED = { type: 3, value: "DYNAMICALLYCOMPACTED" }; + _IfcReinforcedSoilTypeEnum.GROUTED = { type: 3, value: "GROUTED" }; + _IfcReinforcedSoilTypeEnum.REPLACED = { type: 3, value: "REPLACED" }; + _IfcReinforcedSoilTypeEnum.ROLLERCOMPACTED = { type: 3, value: "ROLLERCOMPACTED" }; + _IfcReinforcedSoilTypeEnum.SURCHARGEPRELOADED = { type: 3, value: "SURCHARGEPRELOADED" }; + _IfcReinforcedSoilTypeEnum.VERTICALLYDRAINED = { type: 3, value: "VERTICALLYDRAINED" }; + _IfcReinforcedSoilTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcReinforcedSoilTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReinforcedSoilTypeEnum = _IfcReinforcedSoilTypeEnum; + IFC4X32.IfcReinforcedSoilTypeEnum = IfcReinforcedSoilTypeEnum; + const _IfcReinforcingBarRoleEnum = class _IfcReinforcingBarRoleEnum { + }; + _IfcReinforcingBarRoleEnum.ANCHORING = { type: 3, value: "ANCHORING" }; + _IfcReinforcingBarRoleEnum.EDGE = { type: 3, value: "EDGE" }; + _IfcReinforcingBarRoleEnum.LIGATURE = { type: 3, value: "LIGATURE" }; + _IfcReinforcingBarRoleEnum.MAIN = { type: 3, value: "MAIN" }; + _IfcReinforcingBarRoleEnum.PUNCHING = { type: 3, value: "PUNCHING" }; + _IfcReinforcingBarRoleEnum.RING = { type: 3, value: "RING" }; + _IfcReinforcingBarRoleEnum.SHEAR = { type: 3, value: "SHEAR" }; + _IfcReinforcingBarRoleEnum.STUD = { type: 3, value: "STUD" }; + _IfcReinforcingBarRoleEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcReinforcingBarRoleEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReinforcingBarRoleEnum = _IfcReinforcingBarRoleEnum; + IFC4X32.IfcReinforcingBarRoleEnum = IfcReinforcingBarRoleEnum; + const _IfcReinforcingBarSurfaceEnum = class _IfcReinforcingBarSurfaceEnum { + }; + _IfcReinforcingBarSurfaceEnum.PLAIN = { type: 3, value: "PLAIN" }; + _IfcReinforcingBarSurfaceEnum.TEXTURED = { type: 3, value: "TEXTURED" }; + let IfcReinforcingBarSurfaceEnum = _IfcReinforcingBarSurfaceEnum; + IFC4X32.IfcReinforcingBarSurfaceEnum = IfcReinforcingBarSurfaceEnum; + const _IfcReinforcingBarTypeEnum = class _IfcReinforcingBarTypeEnum { + }; + _IfcReinforcingBarTypeEnum.ANCHORING = { type: 3, value: "ANCHORING" }; + _IfcReinforcingBarTypeEnum.EDGE = { type: 3, value: "EDGE" }; + _IfcReinforcingBarTypeEnum.LIGATURE = { type: 3, value: "LIGATURE" }; + _IfcReinforcingBarTypeEnum.MAIN = { type: 3, value: "MAIN" }; + _IfcReinforcingBarTypeEnum.PUNCHING = { type: 3, value: "PUNCHING" }; + _IfcReinforcingBarTypeEnum.RING = { type: 3, value: "RING" }; + _IfcReinforcingBarTypeEnum.SHEAR = { type: 3, value: "SHEAR" }; + _IfcReinforcingBarTypeEnum.SPACEBAR = { type: 3, value: "SPACEBAR" }; + _IfcReinforcingBarTypeEnum.STUD = { type: 3, value: "STUD" }; + _IfcReinforcingBarTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcReinforcingBarTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReinforcingBarTypeEnum = _IfcReinforcingBarTypeEnum; + IFC4X32.IfcReinforcingBarTypeEnum = IfcReinforcingBarTypeEnum; + const _IfcReinforcingMeshTypeEnum = class _IfcReinforcingMeshTypeEnum { + }; + _IfcReinforcingMeshTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcReinforcingMeshTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcReinforcingMeshTypeEnum = _IfcReinforcingMeshTypeEnum; + IFC4X32.IfcReinforcingMeshTypeEnum = IfcReinforcingMeshTypeEnum; + const _IfcRoadPartTypeEnum = class _IfcRoadPartTypeEnum { + }; + _IfcRoadPartTypeEnum.BICYCLECROSSING = { type: 3, value: "BICYCLECROSSING" }; + _IfcRoadPartTypeEnum.BUS_STOP = { type: 3, value: "BUS_STOP" }; + _IfcRoadPartTypeEnum.CARRIAGEWAY = { type: 3, value: "CARRIAGEWAY" }; + _IfcRoadPartTypeEnum.CENTRALISLAND = { type: 3, value: "CENTRALISLAND" }; + _IfcRoadPartTypeEnum.CENTRALRESERVE = { type: 3, value: "CENTRALRESERVE" }; + _IfcRoadPartTypeEnum.HARDSHOULDER = { type: 3, value: "HARDSHOULDER" }; + _IfcRoadPartTypeEnum.INTERSECTION = { type: 3, value: "INTERSECTION" }; + _IfcRoadPartTypeEnum.LAYBY = { type: 3, value: "LAYBY" }; + _IfcRoadPartTypeEnum.PARKINGBAY = { type: 3, value: "PARKINGBAY" }; + _IfcRoadPartTypeEnum.PASSINGBAY = { type: 3, value: "PASSINGBAY" }; + _IfcRoadPartTypeEnum.PEDESTRIAN_CROSSING = { type: 3, value: "PEDESTRIAN_CROSSING" }; + _IfcRoadPartTypeEnum.RAILWAYCROSSING = { type: 3, value: "RAILWAYCROSSING" }; + _IfcRoadPartTypeEnum.REFUGEISLAND = { type: 3, value: "REFUGEISLAND" }; + _IfcRoadPartTypeEnum.ROADSEGMENT = { type: 3, value: "ROADSEGMENT" }; + _IfcRoadPartTypeEnum.ROADSIDE = { type: 3, value: "ROADSIDE" }; + _IfcRoadPartTypeEnum.ROADSIDEPART = { type: 3, value: "ROADSIDEPART" }; + _IfcRoadPartTypeEnum.ROADWAYPLATEAU = { type: 3, value: "ROADWAYPLATEAU" }; + _IfcRoadPartTypeEnum.ROUNDABOUT = { type: 3, value: "ROUNDABOUT" }; + _IfcRoadPartTypeEnum.SHOULDER = { type: 3, value: "SHOULDER" }; + _IfcRoadPartTypeEnum.SIDEWALK = { type: 3, value: "SIDEWALK" }; + _IfcRoadPartTypeEnum.SOFTSHOULDER = { type: 3, value: "SOFTSHOULDER" }; + _IfcRoadPartTypeEnum.TOLLPLAZA = { type: 3, value: "TOLLPLAZA" }; + _IfcRoadPartTypeEnum.TRAFFICISLAND = { type: 3, value: "TRAFFICISLAND" }; + _IfcRoadPartTypeEnum.TRAFFICLANE = { type: 3, value: "TRAFFICLANE" }; + _IfcRoadPartTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRoadPartTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRoadPartTypeEnum = _IfcRoadPartTypeEnum; + IFC4X32.IfcRoadPartTypeEnum = IfcRoadPartTypeEnum; + const _IfcRoadTypeEnum = class _IfcRoadTypeEnum { + }; + _IfcRoadTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRoadTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRoadTypeEnum = _IfcRoadTypeEnum; + IFC4X32.IfcRoadTypeEnum = IfcRoadTypeEnum; + const _IfcRoleEnum = class _IfcRoleEnum { + }; + _IfcRoleEnum.ARCHITECT = { type: 3, value: "ARCHITECT" }; + _IfcRoleEnum.BUILDINGOPERATOR = { type: 3, value: "BUILDINGOPERATOR" }; + _IfcRoleEnum.BUILDINGOWNER = { type: 3, value: "BUILDINGOWNER" }; + _IfcRoleEnum.CIVILENGINEER = { type: 3, value: "CIVILENGINEER" }; + _IfcRoleEnum.CLIENT = { type: 3, value: "CLIENT" }; + _IfcRoleEnum.COMMISSIONINGENGINEER = { type: 3, value: "COMMISSIONINGENGINEER" }; + _IfcRoleEnum.CONSTRUCTIONMANAGER = { type: 3, value: "CONSTRUCTIONMANAGER" }; + _IfcRoleEnum.CONSULTANT = { type: 3, value: "CONSULTANT" }; + _IfcRoleEnum.CONTRACTOR = { type: 3, value: "CONTRACTOR" }; + _IfcRoleEnum.COSTENGINEER = { type: 3, value: "COSTENGINEER" }; + _IfcRoleEnum.ELECTRICALENGINEER = { type: 3, value: "ELECTRICALENGINEER" }; + _IfcRoleEnum.ENGINEER = { type: 3, value: "ENGINEER" }; + _IfcRoleEnum.FACILITIESMANAGER = { type: 3, value: "FACILITIESMANAGER" }; + _IfcRoleEnum.FIELDCONSTRUCTIONMANAGER = { type: 3, value: "FIELDCONSTRUCTIONMANAGER" }; + _IfcRoleEnum.MANUFACTURER = { type: 3, value: "MANUFACTURER" }; + _IfcRoleEnum.MECHANICALENGINEER = { type: 3, value: "MECHANICALENGINEER" }; + _IfcRoleEnum.OWNER = { type: 3, value: "OWNER" }; + _IfcRoleEnum.PROJECTMANAGER = { type: 3, value: "PROJECTMANAGER" }; + _IfcRoleEnum.RESELLER = { type: 3, value: "RESELLER" }; + _IfcRoleEnum.STRUCTURALENGINEER = { type: 3, value: "STRUCTURALENGINEER" }; + _IfcRoleEnum.SUBCONTRACTOR = { type: 3, value: "SUBCONTRACTOR" }; + _IfcRoleEnum.SUPPLIER = { type: 3, value: "SUPPLIER" }; + _IfcRoleEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcRoleEnum = _IfcRoleEnum; + IFC4X32.IfcRoleEnum = IfcRoleEnum; + const _IfcRoofTypeEnum = class _IfcRoofTypeEnum { + }; + _IfcRoofTypeEnum.BARREL_ROOF = { type: 3, value: "BARREL_ROOF" }; + _IfcRoofTypeEnum.BUTTERFLY_ROOF = { type: 3, value: "BUTTERFLY_ROOF" }; + _IfcRoofTypeEnum.DOME_ROOF = { type: 3, value: "DOME_ROOF" }; + _IfcRoofTypeEnum.FLAT_ROOF = { type: 3, value: "FLAT_ROOF" }; + _IfcRoofTypeEnum.FREEFORM = { type: 3, value: "FREEFORM" }; + _IfcRoofTypeEnum.GABLE_ROOF = { type: 3, value: "GABLE_ROOF" }; + _IfcRoofTypeEnum.GAMBREL_ROOF = { type: 3, value: "GAMBREL_ROOF" }; + _IfcRoofTypeEnum.HIPPED_GABLE_ROOF = { type: 3, value: "HIPPED_GABLE_ROOF" }; + _IfcRoofTypeEnum.HIP_ROOF = { type: 3, value: "HIP_ROOF" }; + _IfcRoofTypeEnum.MANSARD_ROOF = { type: 3, value: "MANSARD_ROOF" }; + _IfcRoofTypeEnum.PAVILION_ROOF = { type: 3, value: "PAVILION_ROOF" }; + _IfcRoofTypeEnum.RAINBOW_ROOF = { type: 3, value: "RAINBOW_ROOF" }; + _IfcRoofTypeEnum.SHED_ROOF = { type: 3, value: "SHED_ROOF" }; + _IfcRoofTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcRoofTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcRoofTypeEnum = _IfcRoofTypeEnum; + IFC4X32.IfcRoofTypeEnum = IfcRoofTypeEnum; + const _IfcSIPrefix = class _IfcSIPrefix { + }; + _IfcSIPrefix.ATTO = { type: 3, value: "ATTO" }; + _IfcSIPrefix.CENTI = { type: 3, value: "CENTI" }; + _IfcSIPrefix.DECA = { type: 3, value: "DECA" }; + _IfcSIPrefix.DECI = { type: 3, value: "DECI" }; + _IfcSIPrefix.EXA = { type: 3, value: "EXA" }; + _IfcSIPrefix.FEMTO = { type: 3, value: "FEMTO" }; + _IfcSIPrefix.GIGA = { type: 3, value: "GIGA" }; + _IfcSIPrefix.HECTO = { type: 3, value: "HECTO" }; + _IfcSIPrefix.KILO = { type: 3, value: "KILO" }; + _IfcSIPrefix.MEGA = { type: 3, value: "MEGA" }; + _IfcSIPrefix.MICRO = { type: 3, value: "MICRO" }; + _IfcSIPrefix.MILLI = { type: 3, value: "MILLI" }; + _IfcSIPrefix.NANO = { type: 3, value: "NANO" }; + _IfcSIPrefix.PETA = { type: 3, value: "PETA" }; + _IfcSIPrefix.PICO = { type: 3, value: "PICO" }; + _IfcSIPrefix.TERA = { type: 3, value: "TERA" }; + let IfcSIPrefix = _IfcSIPrefix; + IFC4X32.IfcSIPrefix = IfcSIPrefix; + const _IfcSIUnitName = class _IfcSIUnitName { + }; + _IfcSIUnitName.AMPERE = { type: 3, value: "AMPERE" }; + _IfcSIUnitName.BECQUEREL = { type: 3, value: "BECQUEREL" }; + _IfcSIUnitName.CANDELA = { type: 3, value: "CANDELA" }; + _IfcSIUnitName.COULOMB = { type: 3, value: "COULOMB" }; + _IfcSIUnitName.CUBIC_METRE = { type: 3, value: "CUBIC_METRE" }; + _IfcSIUnitName.DEGREE_CELSIUS = { type: 3, value: "DEGREE_CELSIUS" }; + _IfcSIUnitName.FARAD = { type: 3, value: "FARAD" }; + _IfcSIUnitName.GRAM = { type: 3, value: "GRAM" }; + _IfcSIUnitName.GRAY = { type: 3, value: "GRAY" }; + _IfcSIUnitName.HENRY = { type: 3, value: "HENRY" }; + _IfcSIUnitName.HERTZ = { type: 3, value: "HERTZ" }; + _IfcSIUnitName.JOULE = { type: 3, value: "JOULE" }; + _IfcSIUnitName.KELVIN = { type: 3, value: "KELVIN" }; + _IfcSIUnitName.LUMEN = { type: 3, value: "LUMEN" }; + _IfcSIUnitName.LUX = { type: 3, value: "LUX" }; + _IfcSIUnitName.METRE = { type: 3, value: "METRE" }; + _IfcSIUnitName.MOLE = { type: 3, value: "MOLE" }; + _IfcSIUnitName.NEWTON = { type: 3, value: "NEWTON" }; + _IfcSIUnitName.OHM = { type: 3, value: "OHM" }; + _IfcSIUnitName.PASCAL = { type: 3, value: "PASCAL" }; + _IfcSIUnitName.RADIAN = { type: 3, value: "RADIAN" }; + _IfcSIUnitName.SECOND = { type: 3, value: "SECOND" }; + _IfcSIUnitName.SIEMENS = { type: 3, value: "SIEMENS" }; + _IfcSIUnitName.SIEVERT = { type: 3, value: "SIEVERT" }; + _IfcSIUnitName.SQUARE_METRE = { type: 3, value: "SQUARE_METRE" }; + _IfcSIUnitName.STERADIAN = { type: 3, value: "STERADIAN" }; + _IfcSIUnitName.TESLA = { type: 3, value: "TESLA" }; + _IfcSIUnitName.VOLT = { type: 3, value: "VOLT" }; + _IfcSIUnitName.WATT = { type: 3, value: "WATT" }; + _IfcSIUnitName.WEBER = { type: 3, value: "WEBER" }; + let IfcSIUnitName = _IfcSIUnitName; + IFC4X32.IfcSIUnitName = IfcSIUnitName; + const _IfcSanitaryTerminalTypeEnum = class _IfcSanitaryTerminalTypeEnum { + }; + _IfcSanitaryTerminalTypeEnum.BATH = { type: 3, value: "BATH" }; + _IfcSanitaryTerminalTypeEnum.BIDET = { type: 3, value: "BIDET" }; + _IfcSanitaryTerminalTypeEnum.CISTERN = { type: 3, value: "CISTERN" }; + _IfcSanitaryTerminalTypeEnum.SANITARYFOUNTAIN = { type: 3, value: "SANITARYFOUNTAIN" }; + _IfcSanitaryTerminalTypeEnum.SHOWER = { type: 3, value: "SHOWER" }; + _IfcSanitaryTerminalTypeEnum.SINK = { type: 3, value: "SINK" }; + _IfcSanitaryTerminalTypeEnum.TOILETPAN = { type: 3, value: "TOILETPAN" }; + _IfcSanitaryTerminalTypeEnum.URINAL = { type: 3, value: "URINAL" }; + _IfcSanitaryTerminalTypeEnum.WASHHANDBASIN = { type: 3, value: "WASHHANDBASIN" }; + _IfcSanitaryTerminalTypeEnum.WCSEAT = { type: 3, value: "WCSEAT" }; + _IfcSanitaryTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSanitaryTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSanitaryTerminalTypeEnum = _IfcSanitaryTerminalTypeEnum; + IFC4X32.IfcSanitaryTerminalTypeEnum = IfcSanitaryTerminalTypeEnum; + const _IfcSectionTypeEnum = class _IfcSectionTypeEnum { + }; + _IfcSectionTypeEnum.TAPERED = { type: 3, value: "TAPERED" }; + _IfcSectionTypeEnum.UNIFORM = { type: 3, value: "UNIFORM" }; + let IfcSectionTypeEnum = _IfcSectionTypeEnum; + IFC4X32.IfcSectionTypeEnum = IfcSectionTypeEnum; + const _IfcSensorTypeEnum = class _IfcSensorTypeEnum { + }; + _IfcSensorTypeEnum.CO2SENSOR = { type: 3, value: "CO2SENSOR" }; + _IfcSensorTypeEnum.CONDUCTANCESENSOR = { type: 3, value: "CONDUCTANCESENSOR" }; + _IfcSensorTypeEnum.CONTACTSENSOR = { type: 3, value: "CONTACTSENSOR" }; + _IfcSensorTypeEnum.COSENSOR = { type: 3, value: "COSENSOR" }; + _IfcSensorTypeEnum.EARTHQUAKESENSOR = { type: 3, value: "EARTHQUAKESENSOR" }; + _IfcSensorTypeEnum.FIRESENSOR = { type: 3, value: "FIRESENSOR" }; + _IfcSensorTypeEnum.FLOWSENSOR = { type: 3, value: "FLOWSENSOR" }; + _IfcSensorTypeEnum.FOREIGNOBJECTDETECTIONSENSOR = { type: 3, value: "FOREIGNOBJECTDETECTIONSENSOR" }; + _IfcSensorTypeEnum.FROSTSENSOR = { type: 3, value: "FROSTSENSOR" }; + _IfcSensorTypeEnum.GASSENSOR = { type: 3, value: "GASSENSOR" }; + _IfcSensorTypeEnum.HEATSENSOR = { type: 3, value: "HEATSENSOR" }; + _IfcSensorTypeEnum.HUMIDITYSENSOR = { type: 3, value: "HUMIDITYSENSOR" }; + _IfcSensorTypeEnum.IDENTIFIERSENSOR = { type: 3, value: "IDENTIFIERSENSOR" }; + _IfcSensorTypeEnum.IONCONCENTRATIONSENSOR = { type: 3, value: "IONCONCENTRATIONSENSOR" }; + _IfcSensorTypeEnum.LEVELSENSOR = { type: 3, value: "LEVELSENSOR" }; + _IfcSensorTypeEnum.LIGHTSENSOR = { type: 3, value: "LIGHTSENSOR" }; + _IfcSensorTypeEnum.MOISTURESENSOR = { type: 3, value: "MOISTURESENSOR" }; + _IfcSensorTypeEnum.MOVEMENTSENSOR = { type: 3, value: "MOVEMENTSENSOR" }; + _IfcSensorTypeEnum.OBSTACLESENSOR = { type: 3, value: "OBSTACLESENSOR" }; + _IfcSensorTypeEnum.PHSENSOR = { type: 3, value: "PHSENSOR" }; + _IfcSensorTypeEnum.PRESSURESENSOR = { type: 3, value: "PRESSURESENSOR" }; + _IfcSensorTypeEnum.RADIATIONSENSOR = { type: 3, value: "RADIATIONSENSOR" }; + _IfcSensorTypeEnum.RADIOACTIVITYSENSOR = { type: 3, value: "RADIOACTIVITYSENSOR" }; + _IfcSensorTypeEnum.RAINSENSOR = { type: 3, value: "RAINSENSOR" }; + _IfcSensorTypeEnum.SMOKESENSOR = { type: 3, value: "SMOKESENSOR" }; + _IfcSensorTypeEnum.SNOWDEPTHSENSOR = { type: 3, value: "SNOWDEPTHSENSOR" }; + _IfcSensorTypeEnum.SOUNDSENSOR = { type: 3, value: "SOUNDSENSOR" }; + _IfcSensorTypeEnum.TEMPERATURESENSOR = { type: 3, value: "TEMPERATURESENSOR" }; + _IfcSensorTypeEnum.TRAINSENSOR = { type: 3, value: "TRAINSENSOR" }; + _IfcSensorTypeEnum.TURNOUTCLOSURESENSOR = { type: 3, value: "TURNOUTCLOSURESENSOR" }; + _IfcSensorTypeEnum.WHEELSENSOR = { type: 3, value: "WHEELSENSOR" }; + _IfcSensorTypeEnum.WINDSENSOR = { type: 3, value: "WINDSENSOR" }; + _IfcSensorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSensorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSensorTypeEnum = _IfcSensorTypeEnum; + IFC4X32.IfcSensorTypeEnum = IfcSensorTypeEnum; + const _IfcSequenceEnum = class _IfcSequenceEnum { + }; + _IfcSequenceEnum.FINISH_FINISH = { type: 3, value: "FINISH_FINISH" }; + _IfcSequenceEnum.FINISH_START = { type: 3, value: "FINISH_START" }; + _IfcSequenceEnum.START_FINISH = { type: 3, value: "START_FINISH" }; + _IfcSequenceEnum.START_START = { type: 3, value: "START_START" }; + _IfcSequenceEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSequenceEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSequenceEnum = _IfcSequenceEnum; + IFC4X32.IfcSequenceEnum = IfcSequenceEnum; + const _IfcShadingDeviceTypeEnum = class _IfcShadingDeviceTypeEnum { + }; + _IfcShadingDeviceTypeEnum.AWNING = { type: 3, value: "AWNING" }; + _IfcShadingDeviceTypeEnum.JALOUSIE = { type: 3, value: "JALOUSIE" }; + _IfcShadingDeviceTypeEnum.SHUTTER = { type: 3, value: "SHUTTER" }; + _IfcShadingDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcShadingDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcShadingDeviceTypeEnum = _IfcShadingDeviceTypeEnum; + IFC4X32.IfcShadingDeviceTypeEnum = IfcShadingDeviceTypeEnum; + const _IfcSignTypeEnum = class _IfcSignTypeEnum { + }; + _IfcSignTypeEnum.MARKER = { type: 3, value: "MARKER" }; + _IfcSignTypeEnum.MIRROR = { type: 3, value: "MIRROR" }; + _IfcSignTypeEnum.PICTORAL = { type: 3, value: "PICTORAL" }; + _IfcSignTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSignTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSignTypeEnum = _IfcSignTypeEnum; + IFC4X32.IfcSignTypeEnum = IfcSignTypeEnum; + const _IfcSignalTypeEnum = class _IfcSignalTypeEnum { + }; + _IfcSignalTypeEnum.AUDIO = { type: 3, value: "AUDIO" }; + _IfcSignalTypeEnum.MIXED = { type: 3, value: "MIXED" }; + _IfcSignalTypeEnum.VISUAL = { type: 3, value: "VISUAL" }; + _IfcSignalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSignalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSignalTypeEnum = _IfcSignalTypeEnum; + IFC4X32.IfcSignalTypeEnum = IfcSignalTypeEnum; + const _IfcSimplePropertyTemplateTypeEnum = class _IfcSimplePropertyTemplateTypeEnum { + }; + _IfcSimplePropertyTemplateTypeEnum.P_BOUNDEDVALUE = { type: 3, value: "P_BOUNDEDVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.P_ENUMERATEDVALUE = { type: 3, value: "P_ENUMERATEDVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.P_LISTVALUE = { type: 3, value: "P_LISTVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.P_REFERENCEVALUE = { type: 3, value: "P_REFERENCEVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.P_SINGLEVALUE = { type: 3, value: "P_SINGLEVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.P_TABLEVALUE = { type: 3, value: "P_TABLEVALUE" }; + _IfcSimplePropertyTemplateTypeEnum.Q_AREA = { type: 3, value: "Q_AREA" }; + _IfcSimplePropertyTemplateTypeEnum.Q_COUNT = { type: 3, value: "Q_COUNT" }; + _IfcSimplePropertyTemplateTypeEnum.Q_LENGTH = { type: 3, value: "Q_LENGTH" }; + _IfcSimplePropertyTemplateTypeEnum.Q_NUMBER = { type: 3, value: "Q_NUMBER" }; + _IfcSimplePropertyTemplateTypeEnum.Q_TIME = { type: 3, value: "Q_TIME" }; + _IfcSimplePropertyTemplateTypeEnum.Q_VOLUME = { type: 3, value: "Q_VOLUME" }; + _IfcSimplePropertyTemplateTypeEnum.Q_WEIGHT = { type: 3, value: "Q_WEIGHT" }; + let IfcSimplePropertyTemplateTypeEnum = _IfcSimplePropertyTemplateTypeEnum; + IFC4X32.IfcSimplePropertyTemplateTypeEnum = IfcSimplePropertyTemplateTypeEnum; + const _IfcSlabTypeEnum = class _IfcSlabTypeEnum { + }; + _IfcSlabTypeEnum.APPROACH_SLAB = { type: 3, value: "APPROACH_SLAB" }; + _IfcSlabTypeEnum.BASESLAB = { type: 3, value: "BASESLAB" }; + _IfcSlabTypeEnum.FLOOR = { type: 3, value: "FLOOR" }; + _IfcSlabTypeEnum.LANDING = { type: 3, value: "LANDING" }; + _IfcSlabTypeEnum.PAVING = { type: 3, value: "PAVING" }; + _IfcSlabTypeEnum.ROOF = { type: 3, value: "ROOF" }; + _IfcSlabTypeEnum.SIDEWALK = { type: 3, value: "SIDEWALK" }; + _IfcSlabTypeEnum.TRACKSLAB = { type: 3, value: "TRACKSLAB" }; + _IfcSlabTypeEnum.WEARING = { type: 3, value: "WEARING" }; + _IfcSlabTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSlabTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSlabTypeEnum = _IfcSlabTypeEnum; + IFC4X32.IfcSlabTypeEnum = IfcSlabTypeEnum; + const _IfcSolarDeviceTypeEnum = class _IfcSolarDeviceTypeEnum { + }; + _IfcSolarDeviceTypeEnum.SOLARCOLLECTOR = { type: 3, value: "SOLARCOLLECTOR" }; + _IfcSolarDeviceTypeEnum.SOLARPANEL = { type: 3, value: "SOLARPANEL" }; + _IfcSolarDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSolarDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSolarDeviceTypeEnum = _IfcSolarDeviceTypeEnum; + IFC4X32.IfcSolarDeviceTypeEnum = IfcSolarDeviceTypeEnum; + const _IfcSpaceHeaterTypeEnum = class _IfcSpaceHeaterTypeEnum { + }; + _IfcSpaceHeaterTypeEnum.CONVECTOR = { type: 3, value: "CONVECTOR" }; + _IfcSpaceHeaterTypeEnum.RADIATOR = { type: 3, value: "RADIATOR" }; + _IfcSpaceHeaterTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSpaceHeaterTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSpaceHeaterTypeEnum = _IfcSpaceHeaterTypeEnum; + IFC4X32.IfcSpaceHeaterTypeEnum = IfcSpaceHeaterTypeEnum; + const _IfcSpaceTypeEnum = class _IfcSpaceTypeEnum { + }; + _IfcSpaceTypeEnum.BERTH = { type: 3, value: "BERTH" }; + _IfcSpaceTypeEnum.EXTERNAL = { type: 3, value: "EXTERNAL" }; + _IfcSpaceTypeEnum.GFA = { type: 3, value: "GFA" }; + _IfcSpaceTypeEnum.INTERNAL = { type: 3, value: "INTERNAL" }; + _IfcSpaceTypeEnum.PARKING = { type: 3, value: "PARKING" }; + _IfcSpaceTypeEnum.SPACE = { type: 3, value: "SPACE" }; + _IfcSpaceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSpaceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSpaceTypeEnum = _IfcSpaceTypeEnum; + IFC4X32.IfcSpaceTypeEnum = IfcSpaceTypeEnum; + const _IfcSpatialZoneTypeEnum = class _IfcSpatialZoneTypeEnum { + }; + _IfcSpatialZoneTypeEnum.CONSTRUCTION = { type: 3, value: "CONSTRUCTION" }; + _IfcSpatialZoneTypeEnum.FIRESAFETY = { type: 3, value: "FIRESAFETY" }; + _IfcSpatialZoneTypeEnum.INTERFERENCE = { type: 3, value: "INTERFERENCE" }; + _IfcSpatialZoneTypeEnum.LIGHTING = { type: 3, value: "LIGHTING" }; + _IfcSpatialZoneTypeEnum.OCCUPANCY = { type: 3, value: "OCCUPANCY" }; + _IfcSpatialZoneTypeEnum.RESERVATION = { type: 3, value: "RESERVATION" }; + _IfcSpatialZoneTypeEnum.SECURITY = { type: 3, value: "SECURITY" }; + _IfcSpatialZoneTypeEnum.THERMAL = { type: 3, value: "THERMAL" }; + _IfcSpatialZoneTypeEnum.TRANSPORT = { type: 3, value: "TRANSPORT" }; + _IfcSpatialZoneTypeEnum.VENTILATION = { type: 3, value: "VENTILATION" }; + _IfcSpatialZoneTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSpatialZoneTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSpatialZoneTypeEnum = _IfcSpatialZoneTypeEnum; + IFC4X32.IfcSpatialZoneTypeEnum = IfcSpatialZoneTypeEnum; + const _IfcStackTerminalTypeEnum = class _IfcStackTerminalTypeEnum { + }; + _IfcStackTerminalTypeEnum.BIRDCAGE = { type: 3, value: "BIRDCAGE" }; + _IfcStackTerminalTypeEnum.COWL = { type: 3, value: "COWL" }; + _IfcStackTerminalTypeEnum.RAINWATERHOPPER = { type: 3, value: "RAINWATERHOPPER" }; + _IfcStackTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStackTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStackTerminalTypeEnum = _IfcStackTerminalTypeEnum; + IFC4X32.IfcStackTerminalTypeEnum = IfcStackTerminalTypeEnum; + const _IfcStairFlightTypeEnum = class _IfcStairFlightTypeEnum { + }; + _IfcStairFlightTypeEnum.CURVED = { type: 3, value: "CURVED" }; + _IfcStairFlightTypeEnum.FREEFORM = { type: 3, value: "FREEFORM" }; + _IfcStairFlightTypeEnum.SPIRAL = { type: 3, value: "SPIRAL" }; + _IfcStairFlightTypeEnum.STRAIGHT = { type: 3, value: "STRAIGHT" }; + _IfcStairFlightTypeEnum.WINDER = { type: 3, value: "WINDER" }; + _IfcStairFlightTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStairFlightTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStairFlightTypeEnum = _IfcStairFlightTypeEnum; + IFC4X32.IfcStairFlightTypeEnum = IfcStairFlightTypeEnum; + const _IfcStairTypeEnum = class _IfcStairTypeEnum { + }; + _IfcStairTypeEnum.CURVED_RUN_STAIR = { type: 3, value: "CURVED_RUN_STAIR" }; + _IfcStairTypeEnum.DOUBLE_RETURN_STAIR = { type: 3, value: "DOUBLE_RETURN_STAIR" }; + _IfcStairTypeEnum.HALF_TURN_STAIR = { type: 3, value: "HALF_TURN_STAIR" }; + _IfcStairTypeEnum.HALF_WINDING_STAIR = { type: 3, value: "HALF_WINDING_STAIR" }; + _IfcStairTypeEnum.LADDER = { type: 3, value: "LADDER" }; + _IfcStairTypeEnum.QUARTER_TURN_STAIR = { type: 3, value: "QUARTER_TURN_STAIR" }; + _IfcStairTypeEnum.QUARTER_WINDING_STAIR = { type: 3, value: "QUARTER_WINDING_STAIR" }; + _IfcStairTypeEnum.SPIRAL_STAIR = { type: 3, value: "SPIRAL_STAIR" }; + _IfcStairTypeEnum.STRAIGHT_RUN_STAIR = { type: 3, value: "STRAIGHT_RUN_STAIR" }; + _IfcStairTypeEnum.THREE_QUARTER_TURN_STAIR = { type: 3, value: "THREE_QUARTER_TURN_STAIR" }; + _IfcStairTypeEnum.THREE_QUARTER_WINDING_STAIR = { type: 3, value: "THREE_QUARTER_WINDING_STAIR" }; + _IfcStairTypeEnum.TWO_CURVED_RUN_STAIR = { type: 3, value: "TWO_CURVED_RUN_STAIR" }; + _IfcStairTypeEnum.TWO_QUARTER_TURN_STAIR = { type: 3, value: "TWO_QUARTER_TURN_STAIR" }; + _IfcStairTypeEnum.TWO_QUARTER_WINDING_STAIR = { type: 3, value: "TWO_QUARTER_WINDING_STAIR" }; + _IfcStairTypeEnum.TWO_STRAIGHT_RUN_STAIR = { type: 3, value: "TWO_STRAIGHT_RUN_STAIR" }; + _IfcStairTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStairTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStairTypeEnum = _IfcStairTypeEnum; + IFC4X32.IfcStairTypeEnum = IfcStairTypeEnum; + const _IfcStateEnum = class _IfcStateEnum { + }; + _IfcStateEnum.LOCKED = { type: 3, value: "LOCKED" }; + _IfcStateEnum.READONLY = { type: 3, value: "READONLY" }; + _IfcStateEnum.READONLYLOCKED = { type: 3, value: "READONLYLOCKED" }; + _IfcStateEnum.READWRITE = { type: 3, value: "READWRITE" }; + _IfcStateEnum.READWRITELOCKED = { type: 3, value: "READWRITELOCKED" }; + let IfcStateEnum = _IfcStateEnum; + IFC4X32.IfcStateEnum = IfcStateEnum; + const _IfcStructuralCurveActivityTypeEnum = class _IfcStructuralCurveActivityTypeEnum { + }; + _IfcStructuralCurveActivityTypeEnum.CONST = { type: 3, value: "CONST" }; + _IfcStructuralCurveActivityTypeEnum.DISCRETE = { type: 3, value: "DISCRETE" }; + _IfcStructuralCurveActivityTypeEnum.EQUIDISTANT = { type: 3, value: "EQUIDISTANT" }; + _IfcStructuralCurveActivityTypeEnum.LINEAR = { type: 3, value: "LINEAR" }; + _IfcStructuralCurveActivityTypeEnum.PARABOLA = { type: 3, value: "PARABOLA" }; + _IfcStructuralCurveActivityTypeEnum.POLYGONAL = { type: 3, value: "POLYGONAL" }; + _IfcStructuralCurveActivityTypeEnum.SINUS = { type: 3, value: "SINUS" }; + _IfcStructuralCurveActivityTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStructuralCurveActivityTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStructuralCurveActivityTypeEnum = _IfcStructuralCurveActivityTypeEnum; + IFC4X32.IfcStructuralCurveActivityTypeEnum = IfcStructuralCurveActivityTypeEnum; + const _IfcStructuralCurveMemberTypeEnum = class _IfcStructuralCurveMemberTypeEnum { + }; + _IfcStructuralCurveMemberTypeEnum.CABLE = { type: 3, value: "CABLE" }; + _IfcStructuralCurveMemberTypeEnum.COMPRESSION_MEMBER = { type: 3, value: "COMPRESSION_MEMBER" }; + _IfcStructuralCurveMemberTypeEnum.PIN_JOINED_MEMBER = { type: 3, value: "PIN_JOINED_MEMBER" }; + _IfcStructuralCurveMemberTypeEnum.RIGID_JOINED_MEMBER = { type: 3, value: "RIGID_JOINED_MEMBER" }; + _IfcStructuralCurveMemberTypeEnum.TENSION_MEMBER = { type: 3, value: "TENSION_MEMBER" }; + _IfcStructuralCurveMemberTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStructuralCurveMemberTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStructuralCurveMemberTypeEnum = _IfcStructuralCurveMemberTypeEnum; + IFC4X32.IfcStructuralCurveMemberTypeEnum = IfcStructuralCurveMemberTypeEnum; + const _IfcStructuralSurfaceActivityTypeEnum = class _IfcStructuralSurfaceActivityTypeEnum { + }; + _IfcStructuralSurfaceActivityTypeEnum.BILINEAR = { type: 3, value: "BILINEAR" }; + _IfcStructuralSurfaceActivityTypeEnum.CONST = { type: 3, value: "CONST" }; + _IfcStructuralSurfaceActivityTypeEnum.DISCRETE = { type: 3, value: "DISCRETE" }; + _IfcStructuralSurfaceActivityTypeEnum.ISOCONTOUR = { type: 3, value: "ISOCONTOUR" }; + _IfcStructuralSurfaceActivityTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStructuralSurfaceActivityTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStructuralSurfaceActivityTypeEnum = _IfcStructuralSurfaceActivityTypeEnum; + IFC4X32.IfcStructuralSurfaceActivityTypeEnum = IfcStructuralSurfaceActivityTypeEnum; + const _IfcStructuralSurfaceMemberTypeEnum = class _IfcStructuralSurfaceMemberTypeEnum { + }; + _IfcStructuralSurfaceMemberTypeEnum.BENDING_ELEMENT = { type: 3, value: "BENDING_ELEMENT" }; + _IfcStructuralSurfaceMemberTypeEnum.MEMBRANE_ELEMENT = { type: 3, value: "MEMBRANE_ELEMENT" }; + _IfcStructuralSurfaceMemberTypeEnum.SHELL = { type: 3, value: "SHELL" }; + _IfcStructuralSurfaceMemberTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcStructuralSurfaceMemberTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcStructuralSurfaceMemberTypeEnum = _IfcStructuralSurfaceMemberTypeEnum; + IFC4X32.IfcStructuralSurfaceMemberTypeEnum = IfcStructuralSurfaceMemberTypeEnum; + const _IfcSubContractResourceTypeEnum = class _IfcSubContractResourceTypeEnum { + }; + _IfcSubContractResourceTypeEnum.PURCHASE = { type: 3, value: "PURCHASE" }; + _IfcSubContractResourceTypeEnum.WORK = { type: 3, value: "WORK" }; + _IfcSubContractResourceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSubContractResourceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSubContractResourceTypeEnum = _IfcSubContractResourceTypeEnum; + IFC4X32.IfcSubContractResourceTypeEnum = IfcSubContractResourceTypeEnum; + const _IfcSurfaceFeatureTypeEnum = class _IfcSurfaceFeatureTypeEnum { + }; + _IfcSurfaceFeatureTypeEnum.DEFECT = { type: 3, value: "DEFECT" }; + _IfcSurfaceFeatureTypeEnum.HATCHMARKING = { type: 3, value: "HATCHMARKING" }; + _IfcSurfaceFeatureTypeEnum.LINEMARKING = { type: 3, value: "LINEMARKING" }; + _IfcSurfaceFeatureTypeEnum.MARK = { type: 3, value: "MARK" }; + _IfcSurfaceFeatureTypeEnum.NONSKIDSURFACING = { type: 3, value: "NONSKIDSURFACING" }; + _IfcSurfaceFeatureTypeEnum.PAVEMENTSURFACEMARKING = { type: 3, value: "PAVEMENTSURFACEMARKING" }; + _IfcSurfaceFeatureTypeEnum.RUMBLESTRIP = { type: 3, value: "RUMBLESTRIP" }; + _IfcSurfaceFeatureTypeEnum.SYMBOLMARKING = { type: 3, value: "SYMBOLMARKING" }; + _IfcSurfaceFeatureTypeEnum.TAG = { type: 3, value: "TAG" }; + _IfcSurfaceFeatureTypeEnum.TRANSVERSERUMBLESTRIP = { type: 3, value: "TRANSVERSERUMBLESTRIP" }; + _IfcSurfaceFeatureTypeEnum.TREATMENT = { type: 3, value: "TREATMENT" }; + _IfcSurfaceFeatureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSurfaceFeatureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSurfaceFeatureTypeEnum = _IfcSurfaceFeatureTypeEnum; + IFC4X32.IfcSurfaceFeatureTypeEnum = IfcSurfaceFeatureTypeEnum; + const _IfcSurfaceSide = class _IfcSurfaceSide { + }; + _IfcSurfaceSide.BOTH = { type: 3, value: "BOTH" }; + _IfcSurfaceSide.NEGATIVE = { type: 3, value: "NEGATIVE" }; + _IfcSurfaceSide.POSITIVE = { type: 3, value: "POSITIVE" }; + let IfcSurfaceSide = _IfcSurfaceSide; + IFC4X32.IfcSurfaceSide = IfcSurfaceSide; + const _IfcSwitchingDeviceTypeEnum = class _IfcSwitchingDeviceTypeEnum { + }; + _IfcSwitchingDeviceTypeEnum.CONTACTOR = { type: 3, value: "CONTACTOR" }; + _IfcSwitchingDeviceTypeEnum.DIMMERSWITCH = { type: 3, value: "DIMMERSWITCH" }; + _IfcSwitchingDeviceTypeEnum.EMERGENCYSTOP = { type: 3, value: "EMERGENCYSTOP" }; + _IfcSwitchingDeviceTypeEnum.KEYPAD = { type: 3, value: "KEYPAD" }; + _IfcSwitchingDeviceTypeEnum.MOMENTARYSWITCH = { type: 3, value: "MOMENTARYSWITCH" }; + _IfcSwitchingDeviceTypeEnum.RELAY = { type: 3, value: "RELAY" }; + _IfcSwitchingDeviceTypeEnum.SELECTORSWITCH = { type: 3, value: "SELECTORSWITCH" }; + _IfcSwitchingDeviceTypeEnum.STARTER = { type: 3, value: "STARTER" }; + _IfcSwitchingDeviceTypeEnum.START_AND_STOP_EQUIPMENT = { type: 3, value: "START_AND_STOP_EQUIPMENT" }; + _IfcSwitchingDeviceTypeEnum.SWITCHDISCONNECTOR = { type: 3, value: "SWITCHDISCONNECTOR" }; + _IfcSwitchingDeviceTypeEnum.TOGGLESWITCH = { type: 3, value: "TOGGLESWITCH" }; + _IfcSwitchingDeviceTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSwitchingDeviceTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSwitchingDeviceTypeEnum = _IfcSwitchingDeviceTypeEnum; + IFC4X32.IfcSwitchingDeviceTypeEnum = IfcSwitchingDeviceTypeEnum; + const _IfcSystemFurnitureElementTypeEnum = class _IfcSystemFurnitureElementTypeEnum { + }; + _IfcSystemFurnitureElementTypeEnum.PANEL = { type: 3, value: "PANEL" }; + _IfcSystemFurnitureElementTypeEnum.SUBRACK = { type: 3, value: "SUBRACK" }; + _IfcSystemFurnitureElementTypeEnum.WORKSURFACE = { type: 3, value: "WORKSURFACE" }; + _IfcSystemFurnitureElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcSystemFurnitureElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcSystemFurnitureElementTypeEnum = _IfcSystemFurnitureElementTypeEnum; + IFC4X32.IfcSystemFurnitureElementTypeEnum = IfcSystemFurnitureElementTypeEnum; + const _IfcTankTypeEnum = class _IfcTankTypeEnum { + }; + _IfcTankTypeEnum.BASIN = { type: 3, value: "BASIN" }; + _IfcTankTypeEnum.BREAKPRESSURE = { type: 3, value: "BREAKPRESSURE" }; + _IfcTankTypeEnum.EXPANSION = { type: 3, value: "EXPANSION" }; + _IfcTankTypeEnum.FEEDANDEXPANSION = { type: 3, value: "FEEDANDEXPANSION" }; + _IfcTankTypeEnum.OILRETENTIONTRAY = { type: 3, value: "OILRETENTIONTRAY" }; + _IfcTankTypeEnum.PRESSUREVESSEL = { type: 3, value: "PRESSUREVESSEL" }; + _IfcTankTypeEnum.STORAGE = { type: 3, value: "STORAGE" }; + _IfcTankTypeEnum.VESSEL = { type: 3, value: "VESSEL" }; + _IfcTankTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTankTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTankTypeEnum = _IfcTankTypeEnum; + IFC4X32.IfcTankTypeEnum = IfcTankTypeEnum; + const _IfcTaskDurationEnum = class _IfcTaskDurationEnum { + }; + _IfcTaskDurationEnum.ELAPSEDTIME = { type: 3, value: "ELAPSEDTIME" }; + _IfcTaskDurationEnum.WORKTIME = { type: 3, value: "WORKTIME" }; + _IfcTaskDurationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTaskDurationEnum = _IfcTaskDurationEnum; + IFC4X32.IfcTaskDurationEnum = IfcTaskDurationEnum; + const _IfcTaskTypeEnum = class _IfcTaskTypeEnum { + }; + _IfcTaskTypeEnum.ADJUSTMENT = { type: 3, value: "ADJUSTMENT" }; + _IfcTaskTypeEnum.ATTENDANCE = { type: 3, value: "ATTENDANCE" }; + _IfcTaskTypeEnum.CALIBRATION = { type: 3, value: "CALIBRATION" }; + _IfcTaskTypeEnum.CONSTRUCTION = { type: 3, value: "CONSTRUCTION" }; + _IfcTaskTypeEnum.DEMOLITION = { type: 3, value: "DEMOLITION" }; + _IfcTaskTypeEnum.DISMANTLE = { type: 3, value: "DISMANTLE" }; + _IfcTaskTypeEnum.DISPOSAL = { type: 3, value: "DISPOSAL" }; + _IfcTaskTypeEnum.EMERGENCY = { type: 3, value: "EMERGENCY" }; + _IfcTaskTypeEnum.INSPECTION = { type: 3, value: "INSPECTION" }; + _IfcTaskTypeEnum.INSTALLATION = { type: 3, value: "INSTALLATION" }; + _IfcTaskTypeEnum.LOGISTIC = { type: 3, value: "LOGISTIC" }; + _IfcTaskTypeEnum.MAINTENANCE = { type: 3, value: "MAINTENANCE" }; + _IfcTaskTypeEnum.MOVE = { type: 3, value: "MOVE" }; + _IfcTaskTypeEnum.OPERATION = { type: 3, value: "OPERATION" }; + _IfcTaskTypeEnum.REMOVAL = { type: 3, value: "REMOVAL" }; + _IfcTaskTypeEnum.RENOVATION = { type: 3, value: "RENOVATION" }; + _IfcTaskTypeEnum.SAFETY = { type: 3, value: "SAFETY" }; + _IfcTaskTypeEnum.SHUTDOWN = { type: 3, value: "SHUTDOWN" }; + _IfcTaskTypeEnum.STARTUP = { type: 3, value: "STARTUP" }; + _IfcTaskTypeEnum.TESTING = { type: 3, value: "TESTING" }; + _IfcTaskTypeEnum.TROUBLESHOOTING = { type: 3, value: "TROUBLESHOOTING" }; + _IfcTaskTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTaskTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTaskTypeEnum = _IfcTaskTypeEnum; + IFC4X32.IfcTaskTypeEnum = IfcTaskTypeEnum; + const _IfcTendonAnchorTypeEnum = class _IfcTendonAnchorTypeEnum { + }; + _IfcTendonAnchorTypeEnum.COUPLER = { type: 3, value: "COUPLER" }; + _IfcTendonAnchorTypeEnum.FIXED_END = { type: 3, value: "FIXED_END" }; + _IfcTendonAnchorTypeEnum.TENSIONING_END = { type: 3, value: "TENSIONING_END" }; + _IfcTendonAnchorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTendonAnchorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTendonAnchorTypeEnum = _IfcTendonAnchorTypeEnum; + IFC4X32.IfcTendonAnchorTypeEnum = IfcTendonAnchorTypeEnum; + const _IfcTendonConduitTypeEnum = class _IfcTendonConduitTypeEnum { + }; + _IfcTendonConduitTypeEnum.COUPLER = { type: 3, value: "COUPLER" }; + _IfcTendonConduitTypeEnum.DIABOLO = { type: 3, value: "DIABOLO" }; + _IfcTendonConduitTypeEnum.DUCT = { type: 3, value: "DUCT" }; + _IfcTendonConduitTypeEnum.GROUTING_DUCT = { type: 3, value: "GROUTING_DUCT" }; + _IfcTendonConduitTypeEnum.TRUMPET = { type: 3, value: "TRUMPET" }; + _IfcTendonConduitTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTendonConduitTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTendonConduitTypeEnum = _IfcTendonConduitTypeEnum; + IFC4X32.IfcTendonConduitTypeEnum = IfcTendonConduitTypeEnum; + const _IfcTendonTypeEnum = class _IfcTendonTypeEnum { + }; + _IfcTendonTypeEnum.BAR = { type: 3, value: "BAR" }; + _IfcTendonTypeEnum.COATED = { type: 3, value: "COATED" }; + _IfcTendonTypeEnum.STRAND = { type: 3, value: "STRAND" }; + _IfcTendonTypeEnum.WIRE = { type: 3, value: "WIRE" }; + _IfcTendonTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTendonTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTendonTypeEnum = _IfcTendonTypeEnum; + IFC4X32.IfcTendonTypeEnum = IfcTendonTypeEnum; + const _IfcTextPath = class _IfcTextPath { + }; + _IfcTextPath.DOWN = { type: 3, value: "DOWN" }; + _IfcTextPath.LEFT = { type: 3, value: "LEFT" }; + _IfcTextPath.RIGHT = { type: 3, value: "RIGHT" }; + _IfcTextPath.UP = { type: 3, value: "UP" }; + let IfcTextPath = _IfcTextPath; + IFC4X32.IfcTextPath = IfcTextPath; + const _IfcTimeSeriesDataTypeEnum = class _IfcTimeSeriesDataTypeEnum { + }; + _IfcTimeSeriesDataTypeEnum.CONTINUOUS = { type: 3, value: "CONTINUOUS" }; + _IfcTimeSeriesDataTypeEnum.DISCRETE = { type: 3, value: "DISCRETE" }; + _IfcTimeSeriesDataTypeEnum.DISCRETEBINARY = { type: 3, value: "DISCRETEBINARY" }; + _IfcTimeSeriesDataTypeEnum.PIECEWISEBINARY = { type: 3, value: "PIECEWISEBINARY" }; + _IfcTimeSeriesDataTypeEnum.PIECEWISECONSTANT = { type: 3, value: "PIECEWISECONSTANT" }; + _IfcTimeSeriesDataTypeEnum.PIECEWISECONTINUOUS = { type: 3, value: "PIECEWISECONTINUOUS" }; + _IfcTimeSeriesDataTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTimeSeriesDataTypeEnum = _IfcTimeSeriesDataTypeEnum; + IFC4X32.IfcTimeSeriesDataTypeEnum = IfcTimeSeriesDataTypeEnum; + const _IfcTrackElementTypeEnum = class _IfcTrackElementTypeEnum { + }; + _IfcTrackElementTypeEnum.BLOCKINGDEVICE = { type: 3, value: "BLOCKINGDEVICE" }; + _IfcTrackElementTypeEnum.DERAILER = { type: 3, value: "DERAILER" }; + _IfcTrackElementTypeEnum.FROG = { type: 3, value: "FROG" }; + _IfcTrackElementTypeEnum.HALF_SET_OF_BLADES = { type: 3, value: "HALF_SET_OF_BLADES" }; + _IfcTrackElementTypeEnum.SLEEPER = { type: 3, value: "SLEEPER" }; + _IfcTrackElementTypeEnum.SPEEDREGULATOR = { type: 3, value: "SPEEDREGULATOR" }; + _IfcTrackElementTypeEnum.TRACKENDOFALIGNMENT = { type: 3, value: "TRACKENDOFALIGNMENT" }; + _IfcTrackElementTypeEnum.VEHICLESTOP = { type: 3, value: "VEHICLESTOP" }; + _IfcTrackElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTrackElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTrackElementTypeEnum = _IfcTrackElementTypeEnum; + IFC4X32.IfcTrackElementTypeEnum = IfcTrackElementTypeEnum; + const _IfcTransformerTypeEnum = class _IfcTransformerTypeEnum { + }; + _IfcTransformerTypeEnum.CHOPPER = { type: 3, value: "CHOPPER" }; + _IfcTransformerTypeEnum.COMBINED = { type: 3, value: "COMBINED" }; + _IfcTransformerTypeEnum.CURRENT = { type: 3, value: "CURRENT" }; + _IfcTransformerTypeEnum.FREQUENCY = { type: 3, value: "FREQUENCY" }; + _IfcTransformerTypeEnum.INVERTER = { type: 3, value: "INVERTER" }; + _IfcTransformerTypeEnum.RECTIFIER = { type: 3, value: "RECTIFIER" }; + _IfcTransformerTypeEnum.VOLTAGE = { type: 3, value: "VOLTAGE" }; + _IfcTransformerTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTransformerTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTransformerTypeEnum = _IfcTransformerTypeEnum; + IFC4X32.IfcTransformerTypeEnum = IfcTransformerTypeEnum; + const _IfcTransitionCode = class _IfcTransitionCode { + }; + _IfcTransitionCode.CONTINUOUS = { type: 3, value: "CONTINUOUS" }; + _IfcTransitionCode.CONTSAMEGRADIENT = { type: 3, value: "CONTSAMEGRADIENT" }; + _IfcTransitionCode.CONTSAMEGRADIENTSAMECURVATURE = { type: 3, value: "CONTSAMEGRADIENTSAMECURVATURE" }; + _IfcTransitionCode.DISCONTINUOUS = { type: 3, value: "DISCONTINUOUS" }; + let IfcTransitionCode = _IfcTransitionCode; + IFC4X32.IfcTransitionCode = IfcTransitionCode; + const _IfcTransportElementTypeEnum = class _IfcTransportElementTypeEnum { + }; + _IfcTransportElementTypeEnum.CRANEWAY = { type: 3, value: "CRANEWAY" }; + _IfcTransportElementTypeEnum.ELEVATOR = { type: 3, value: "ELEVATOR" }; + _IfcTransportElementTypeEnum.ESCALATOR = { type: 3, value: "ESCALATOR" }; + _IfcTransportElementTypeEnum.HAULINGGEAR = { type: 3, value: "HAULINGGEAR" }; + _IfcTransportElementTypeEnum.LIFTINGGEAR = { type: 3, value: "LIFTINGGEAR" }; + _IfcTransportElementTypeEnum.MOVINGWALKWAY = { type: 3, value: "MOVINGWALKWAY" }; + _IfcTransportElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTransportElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTransportElementTypeEnum = _IfcTransportElementTypeEnum; + IFC4X32.IfcTransportElementTypeEnum = IfcTransportElementTypeEnum; + const _IfcTrimmingPreference = class _IfcTrimmingPreference { + }; + _IfcTrimmingPreference.CARTESIAN = { type: 3, value: "CARTESIAN" }; + _IfcTrimmingPreference.PARAMETER = { type: 3, value: "PARAMETER" }; + _IfcTrimmingPreference.UNSPECIFIED = { type: 3, value: "UNSPECIFIED" }; + let IfcTrimmingPreference = _IfcTrimmingPreference; + IFC4X32.IfcTrimmingPreference = IfcTrimmingPreference; + const _IfcTubeBundleTypeEnum = class _IfcTubeBundleTypeEnum { + }; + _IfcTubeBundleTypeEnum.FINNED = { type: 3, value: "FINNED" }; + _IfcTubeBundleTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcTubeBundleTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcTubeBundleTypeEnum = _IfcTubeBundleTypeEnum; + IFC4X32.IfcTubeBundleTypeEnum = IfcTubeBundleTypeEnum; + const _IfcUnitEnum = class _IfcUnitEnum { + }; + _IfcUnitEnum.ABSORBEDDOSEUNIT = { type: 3, value: "ABSORBEDDOSEUNIT" }; + _IfcUnitEnum.AMOUNTOFSUBSTANCEUNIT = { type: 3, value: "AMOUNTOFSUBSTANCEUNIT" }; + _IfcUnitEnum.AREAUNIT = { type: 3, value: "AREAUNIT" }; + _IfcUnitEnum.DOSEEQUIVALENTUNIT = { type: 3, value: "DOSEEQUIVALENTUNIT" }; + _IfcUnitEnum.ELECTRICCAPACITANCEUNIT = { type: 3, value: "ELECTRICCAPACITANCEUNIT" }; + _IfcUnitEnum.ELECTRICCHARGEUNIT = { type: 3, value: "ELECTRICCHARGEUNIT" }; + _IfcUnitEnum.ELECTRICCONDUCTANCEUNIT = { type: 3, value: "ELECTRICCONDUCTANCEUNIT" }; + _IfcUnitEnum.ELECTRICCURRENTUNIT = { type: 3, value: "ELECTRICCURRENTUNIT" }; + _IfcUnitEnum.ELECTRICRESISTANCEUNIT = { type: 3, value: "ELECTRICRESISTANCEUNIT" }; + _IfcUnitEnum.ELECTRICVOLTAGEUNIT = { type: 3, value: "ELECTRICVOLTAGEUNIT" }; + _IfcUnitEnum.ENERGYUNIT = { type: 3, value: "ENERGYUNIT" }; + _IfcUnitEnum.FORCEUNIT = { type: 3, value: "FORCEUNIT" }; + _IfcUnitEnum.FREQUENCYUNIT = { type: 3, value: "FREQUENCYUNIT" }; + _IfcUnitEnum.ILLUMINANCEUNIT = { type: 3, value: "ILLUMINANCEUNIT" }; + _IfcUnitEnum.INDUCTANCEUNIT = { type: 3, value: "INDUCTANCEUNIT" }; + _IfcUnitEnum.LENGTHUNIT = { type: 3, value: "LENGTHUNIT" }; + _IfcUnitEnum.LUMINOUSFLUXUNIT = { type: 3, value: "LUMINOUSFLUXUNIT" }; + _IfcUnitEnum.LUMINOUSINTENSITYUNIT = { type: 3, value: "LUMINOUSINTENSITYUNIT" }; + _IfcUnitEnum.MAGNETICFLUXDENSITYUNIT = { type: 3, value: "MAGNETICFLUXDENSITYUNIT" }; + _IfcUnitEnum.MAGNETICFLUXUNIT = { type: 3, value: "MAGNETICFLUXUNIT" }; + _IfcUnitEnum.MASSUNIT = { type: 3, value: "MASSUNIT" }; + _IfcUnitEnum.PLANEANGLEUNIT = { type: 3, value: "PLANEANGLEUNIT" }; + _IfcUnitEnum.POWERUNIT = { type: 3, value: "POWERUNIT" }; + _IfcUnitEnum.PRESSUREUNIT = { type: 3, value: "PRESSUREUNIT" }; + _IfcUnitEnum.RADIOACTIVITYUNIT = { type: 3, value: "RADIOACTIVITYUNIT" }; + _IfcUnitEnum.SOLIDANGLEUNIT = { type: 3, value: "SOLIDANGLEUNIT" }; + _IfcUnitEnum.THERMODYNAMICTEMPERATUREUNIT = { type: 3, value: "THERMODYNAMICTEMPERATUREUNIT" }; + _IfcUnitEnum.TIMEUNIT = { type: 3, value: "TIMEUNIT" }; + _IfcUnitEnum.VOLUMEUNIT = { type: 3, value: "VOLUMEUNIT" }; + _IfcUnitEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + let IfcUnitEnum = _IfcUnitEnum; + IFC4X32.IfcUnitEnum = IfcUnitEnum; + const _IfcUnitaryControlElementTypeEnum = class _IfcUnitaryControlElementTypeEnum { + }; + _IfcUnitaryControlElementTypeEnum.ALARMPANEL = { type: 3, value: "ALARMPANEL" }; + _IfcUnitaryControlElementTypeEnum.BASESTATIONCONTROLLER = { type: 3, value: "BASESTATIONCONTROLLER" }; + _IfcUnitaryControlElementTypeEnum.COMBINED = { type: 3, value: "COMBINED" }; + _IfcUnitaryControlElementTypeEnum.CONTROLPANEL = { type: 3, value: "CONTROLPANEL" }; + _IfcUnitaryControlElementTypeEnum.GASDETECTIONPANEL = { type: 3, value: "GASDETECTIONPANEL" }; + _IfcUnitaryControlElementTypeEnum.HUMIDISTAT = { type: 3, value: "HUMIDISTAT" }; + _IfcUnitaryControlElementTypeEnum.INDICATORPANEL = { type: 3, value: "INDICATORPANEL" }; + _IfcUnitaryControlElementTypeEnum.MIMICPANEL = { type: 3, value: "MIMICPANEL" }; + _IfcUnitaryControlElementTypeEnum.THERMOSTAT = { type: 3, value: "THERMOSTAT" }; + _IfcUnitaryControlElementTypeEnum.WEATHERSTATION = { type: 3, value: "WEATHERSTATION" }; + _IfcUnitaryControlElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcUnitaryControlElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcUnitaryControlElementTypeEnum = _IfcUnitaryControlElementTypeEnum; + IFC4X32.IfcUnitaryControlElementTypeEnum = IfcUnitaryControlElementTypeEnum; + const _IfcUnitaryEquipmentTypeEnum = class _IfcUnitaryEquipmentTypeEnum { + }; + _IfcUnitaryEquipmentTypeEnum.AIRCONDITIONINGUNIT = { type: 3, value: "AIRCONDITIONINGUNIT" }; + _IfcUnitaryEquipmentTypeEnum.AIRHANDLER = { type: 3, value: "AIRHANDLER" }; + _IfcUnitaryEquipmentTypeEnum.DEHUMIDIFIER = { type: 3, value: "DEHUMIDIFIER" }; + _IfcUnitaryEquipmentTypeEnum.ROOFTOPUNIT = { type: 3, value: "ROOFTOPUNIT" }; + _IfcUnitaryEquipmentTypeEnum.SPLITSYSTEM = { type: 3, value: "SPLITSYSTEM" }; + _IfcUnitaryEquipmentTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcUnitaryEquipmentTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcUnitaryEquipmentTypeEnum = _IfcUnitaryEquipmentTypeEnum; + IFC4X32.IfcUnitaryEquipmentTypeEnum = IfcUnitaryEquipmentTypeEnum; + const _IfcValveTypeEnum = class _IfcValveTypeEnum { + }; + _IfcValveTypeEnum.AIRRELEASE = { type: 3, value: "AIRRELEASE" }; + _IfcValveTypeEnum.ANTIVACUUM = { type: 3, value: "ANTIVACUUM" }; + _IfcValveTypeEnum.CHANGEOVER = { type: 3, value: "CHANGEOVER" }; + _IfcValveTypeEnum.CHECK = { type: 3, value: "CHECK" }; + _IfcValveTypeEnum.COMMISSIONING = { type: 3, value: "COMMISSIONING" }; + _IfcValveTypeEnum.DIVERTING = { type: 3, value: "DIVERTING" }; + _IfcValveTypeEnum.DOUBLECHECK = { type: 3, value: "DOUBLECHECK" }; + _IfcValveTypeEnum.DOUBLEREGULATING = { type: 3, value: "DOUBLEREGULATING" }; + _IfcValveTypeEnum.DRAWOFFCOCK = { type: 3, value: "DRAWOFFCOCK" }; + _IfcValveTypeEnum.FAUCET = { type: 3, value: "FAUCET" }; + _IfcValveTypeEnum.FLUSHING = { type: 3, value: "FLUSHING" }; + _IfcValveTypeEnum.GASCOCK = { type: 3, value: "GASCOCK" }; + _IfcValveTypeEnum.GASTAP = { type: 3, value: "GASTAP" }; + _IfcValveTypeEnum.ISOLATING = { type: 3, value: "ISOLATING" }; + _IfcValveTypeEnum.MIXING = { type: 3, value: "MIXING" }; + _IfcValveTypeEnum.PRESSUREREDUCING = { type: 3, value: "PRESSUREREDUCING" }; + _IfcValveTypeEnum.PRESSURERELIEF = { type: 3, value: "PRESSURERELIEF" }; + _IfcValveTypeEnum.REGULATING = { type: 3, value: "REGULATING" }; + _IfcValveTypeEnum.SAFETYCUTOFF = { type: 3, value: "SAFETYCUTOFF" }; + _IfcValveTypeEnum.STEAMTRAP = { type: 3, value: "STEAMTRAP" }; + _IfcValveTypeEnum.STOPCOCK = { type: 3, value: "STOPCOCK" }; + _IfcValveTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcValveTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcValveTypeEnum = _IfcValveTypeEnum; + IFC4X32.IfcValveTypeEnum = IfcValveTypeEnum; + const _IfcVehicleTypeEnum = class _IfcVehicleTypeEnum { + }; + _IfcVehicleTypeEnum.CARGO = { type: 3, value: "CARGO" }; + _IfcVehicleTypeEnum.ROLLINGSTOCK = { type: 3, value: "ROLLINGSTOCK" }; + _IfcVehicleTypeEnum.VEHICLE = { type: 3, value: "VEHICLE" }; + _IfcVehicleTypeEnum.VEHICLEAIR = { type: 3, value: "VEHICLEAIR" }; + _IfcVehicleTypeEnum.VEHICLEMARINE = { type: 3, value: "VEHICLEMARINE" }; + _IfcVehicleTypeEnum.VEHICLETRACKED = { type: 3, value: "VEHICLETRACKED" }; + _IfcVehicleTypeEnum.VEHICLEWHEELED = { type: 3, value: "VEHICLEWHEELED" }; + _IfcVehicleTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcVehicleTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcVehicleTypeEnum = _IfcVehicleTypeEnum; + IFC4X32.IfcVehicleTypeEnum = IfcVehicleTypeEnum; + const _IfcVibrationDamperTypeEnum = class _IfcVibrationDamperTypeEnum { + }; + _IfcVibrationDamperTypeEnum.AXIAL_YIELD = { type: 3, value: "AXIAL_YIELD" }; + _IfcVibrationDamperTypeEnum.BENDING_YIELD = { type: 3, value: "BENDING_YIELD" }; + _IfcVibrationDamperTypeEnum.FRICTION = { type: 3, value: "FRICTION" }; + _IfcVibrationDamperTypeEnum.RUBBER = { type: 3, value: "RUBBER" }; + _IfcVibrationDamperTypeEnum.SHEAR_YIELD = { type: 3, value: "SHEAR_YIELD" }; + _IfcVibrationDamperTypeEnum.VISCOUS = { type: 3, value: "VISCOUS" }; + _IfcVibrationDamperTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcVibrationDamperTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcVibrationDamperTypeEnum = _IfcVibrationDamperTypeEnum; + IFC4X32.IfcVibrationDamperTypeEnum = IfcVibrationDamperTypeEnum; + const _IfcVibrationIsolatorTypeEnum = class _IfcVibrationIsolatorTypeEnum { + }; + _IfcVibrationIsolatorTypeEnum.BASE = { type: 3, value: "BASE" }; + _IfcVibrationIsolatorTypeEnum.COMPRESSION = { type: 3, value: "COMPRESSION" }; + _IfcVibrationIsolatorTypeEnum.SPRING = { type: 3, value: "SPRING" }; + _IfcVibrationIsolatorTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcVibrationIsolatorTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcVibrationIsolatorTypeEnum = _IfcVibrationIsolatorTypeEnum; + IFC4X32.IfcVibrationIsolatorTypeEnum = IfcVibrationIsolatorTypeEnum; + const _IfcVirtualElementTypeEnum = class _IfcVirtualElementTypeEnum { + }; + _IfcVirtualElementTypeEnum.BOUNDARY = { type: 3, value: "BOUNDARY" }; + _IfcVirtualElementTypeEnum.CLEARANCE = { type: 3, value: "CLEARANCE" }; + _IfcVirtualElementTypeEnum.PROVISIONFORVOID = { type: 3, value: "PROVISIONFORVOID" }; + _IfcVirtualElementTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcVirtualElementTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcVirtualElementTypeEnum = _IfcVirtualElementTypeEnum; + IFC4X32.IfcVirtualElementTypeEnum = IfcVirtualElementTypeEnum; + const _IfcVoidingFeatureTypeEnum = class _IfcVoidingFeatureTypeEnum { + }; + _IfcVoidingFeatureTypeEnum.CHAMFER = { type: 3, value: "CHAMFER" }; + _IfcVoidingFeatureTypeEnum.CUTOUT = { type: 3, value: "CUTOUT" }; + _IfcVoidingFeatureTypeEnum.EDGE = { type: 3, value: "EDGE" }; + _IfcVoidingFeatureTypeEnum.HOLE = { type: 3, value: "HOLE" }; + _IfcVoidingFeatureTypeEnum.MITER = { type: 3, value: "MITER" }; + _IfcVoidingFeatureTypeEnum.NOTCH = { type: 3, value: "NOTCH" }; + _IfcVoidingFeatureTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcVoidingFeatureTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcVoidingFeatureTypeEnum = _IfcVoidingFeatureTypeEnum; + IFC4X32.IfcVoidingFeatureTypeEnum = IfcVoidingFeatureTypeEnum; + const _IfcWallTypeEnum = class _IfcWallTypeEnum { + }; + _IfcWallTypeEnum.ELEMENTEDWALL = { type: 3, value: "ELEMENTEDWALL" }; + _IfcWallTypeEnum.MOVABLE = { type: 3, value: "MOVABLE" }; + _IfcWallTypeEnum.PARAPET = { type: 3, value: "PARAPET" }; + _IfcWallTypeEnum.PARTITIONING = { type: 3, value: "PARTITIONING" }; + _IfcWallTypeEnum.PLUMBINGWALL = { type: 3, value: "PLUMBINGWALL" }; + _IfcWallTypeEnum.POLYGONAL = { type: 3, value: "POLYGONAL" }; + _IfcWallTypeEnum.RETAININGWALL = { type: 3, value: "RETAININGWALL" }; + _IfcWallTypeEnum.SHEAR = { type: 3, value: "SHEAR" }; + _IfcWallTypeEnum.SOLIDWALL = { type: 3, value: "SOLIDWALL" }; + _IfcWallTypeEnum.STANDARD = { type: 3, value: "STANDARD" }; + _IfcWallTypeEnum.WAVEWALL = { type: 3, value: "WAVEWALL" }; + _IfcWallTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWallTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWallTypeEnum = _IfcWallTypeEnum; + IFC4X32.IfcWallTypeEnum = IfcWallTypeEnum; + const _IfcWasteTerminalTypeEnum = class _IfcWasteTerminalTypeEnum { + }; + _IfcWasteTerminalTypeEnum.FLOORTRAP = { type: 3, value: "FLOORTRAP" }; + _IfcWasteTerminalTypeEnum.FLOORWASTE = { type: 3, value: "FLOORWASTE" }; + _IfcWasteTerminalTypeEnum.GULLYSUMP = { type: 3, value: "GULLYSUMP" }; + _IfcWasteTerminalTypeEnum.GULLYTRAP = { type: 3, value: "GULLYTRAP" }; + _IfcWasteTerminalTypeEnum.ROOFDRAIN = { type: 3, value: "ROOFDRAIN" }; + _IfcWasteTerminalTypeEnum.WASTEDISPOSALUNIT = { type: 3, value: "WASTEDISPOSALUNIT" }; + _IfcWasteTerminalTypeEnum.WASTETRAP = { type: 3, value: "WASTETRAP" }; + _IfcWasteTerminalTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWasteTerminalTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWasteTerminalTypeEnum = _IfcWasteTerminalTypeEnum; + IFC4X32.IfcWasteTerminalTypeEnum = IfcWasteTerminalTypeEnum; + const _IfcWindowPanelOperationEnum = class _IfcWindowPanelOperationEnum { + }; + _IfcWindowPanelOperationEnum.BOTTOMHUNG = { type: 3, value: "BOTTOMHUNG" }; + _IfcWindowPanelOperationEnum.FIXEDCASEMENT = { type: 3, value: "FIXEDCASEMENT" }; + _IfcWindowPanelOperationEnum.OTHEROPERATION = { type: 3, value: "OTHEROPERATION" }; + _IfcWindowPanelOperationEnum.PIVOTHORIZONTAL = { type: 3, value: "PIVOTHORIZONTAL" }; + _IfcWindowPanelOperationEnum.PIVOTVERTICAL = { type: 3, value: "PIVOTVERTICAL" }; + _IfcWindowPanelOperationEnum.REMOVABLECASEMENT = { type: 3, value: "REMOVABLECASEMENT" }; + _IfcWindowPanelOperationEnum.SIDEHUNGLEFTHAND = { type: 3, value: "SIDEHUNGLEFTHAND" }; + _IfcWindowPanelOperationEnum.SIDEHUNGRIGHTHAND = { type: 3, value: "SIDEHUNGRIGHTHAND" }; + _IfcWindowPanelOperationEnum.SLIDINGHORIZONTAL = { type: 3, value: "SLIDINGHORIZONTAL" }; + _IfcWindowPanelOperationEnum.SLIDINGVERTICAL = { type: 3, value: "SLIDINGVERTICAL" }; + _IfcWindowPanelOperationEnum.TILTANDTURNLEFTHAND = { type: 3, value: "TILTANDTURNLEFTHAND" }; + _IfcWindowPanelOperationEnum.TILTANDTURNRIGHTHAND = { type: 3, value: "TILTANDTURNRIGHTHAND" }; + _IfcWindowPanelOperationEnum.TOPHUNG = { type: 3, value: "TOPHUNG" }; + _IfcWindowPanelOperationEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowPanelOperationEnum = _IfcWindowPanelOperationEnum; + IFC4X32.IfcWindowPanelOperationEnum = IfcWindowPanelOperationEnum; + const _IfcWindowPanelPositionEnum = class _IfcWindowPanelPositionEnum { + }; + _IfcWindowPanelPositionEnum.BOTTOM = { type: 3, value: "BOTTOM" }; + _IfcWindowPanelPositionEnum.LEFT = { type: 3, value: "LEFT" }; + _IfcWindowPanelPositionEnum.MIDDLE = { type: 3, value: "MIDDLE" }; + _IfcWindowPanelPositionEnum.RIGHT = { type: 3, value: "RIGHT" }; + _IfcWindowPanelPositionEnum.TOP = { type: 3, value: "TOP" }; + _IfcWindowPanelPositionEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowPanelPositionEnum = _IfcWindowPanelPositionEnum; + IFC4X32.IfcWindowPanelPositionEnum = IfcWindowPanelPositionEnum; + const _IfcWindowTypeEnum = class _IfcWindowTypeEnum { + }; + _IfcWindowTypeEnum.LIGHTDOME = { type: 3, value: "LIGHTDOME" }; + _IfcWindowTypeEnum.SKYLIGHT = { type: 3, value: "SKYLIGHT" }; + _IfcWindowTypeEnum.WINDOW = { type: 3, value: "WINDOW" }; + _IfcWindowTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWindowTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowTypeEnum = _IfcWindowTypeEnum; + IFC4X32.IfcWindowTypeEnum = IfcWindowTypeEnum; + const _IfcWindowTypePartitioningEnum = class _IfcWindowTypePartitioningEnum { + }; + _IfcWindowTypePartitioningEnum.DOUBLE_PANEL_HORIZONTAL = { type: 3, value: "DOUBLE_PANEL_HORIZONTAL" }; + _IfcWindowTypePartitioningEnum.DOUBLE_PANEL_VERTICAL = { type: 3, value: "DOUBLE_PANEL_VERTICAL" }; + _IfcWindowTypePartitioningEnum.SINGLE_PANEL = { type: 3, value: "SINGLE_PANEL" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_BOTTOM = { type: 3, value: "TRIPLE_PANEL_BOTTOM" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_HORIZONTAL = { type: 3, value: "TRIPLE_PANEL_HORIZONTAL" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_LEFT = { type: 3, value: "TRIPLE_PANEL_LEFT" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_RIGHT = { type: 3, value: "TRIPLE_PANEL_RIGHT" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_TOP = { type: 3, value: "TRIPLE_PANEL_TOP" }; + _IfcWindowTypePartitioningEnum.TRIPLE_PANEL_VERTICAL = { type: 3, value: "TRIPLE_PANEL_VERTICAL" }; + _IfcWindowTypePartitioningEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWindowTypePartitioningEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWindowTypePartitioningEnum = _IfcWindowTypePartitioningEnum; + IFC4X32.IfcWindowTypePartitioningEnum = IfcWindowTypePartitioningEnum; + const _IfcWorkCalendarTypeEnum = class _IfcWorkCalendarTypeEnum { + }; + _IfcWorkCalendarTypeEnum.FIRSTSHIFT = { type: 3, value: "FIRSTSHIFT" }; + _IfcWorkCalendarTypeEnum.SECONDSHIFT = { type: 3, value: "SECONDSHIFT" }; + _IfcWorkCalendarTypeEnum.THIRDSHIFT = { type: 3, value: "THIRDSHIFT" }; + _IfcWorkCalendarTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWorkCalendarTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWorkCalendarTypeEnum = _IfcWorkCalendarTypeEnum; + IFC4X32.IfcWorkCalendarTypeEnum = IfcWorkCalendarTypeEnum; + const _IfcWorkPlanTypeEnum = class _IfcWorkPlanTypeEnum { + }; + _IfcWorkPlanTypeEnum.ACTUAL = { type: 3, value: "ACTUAL" }; + _IfcWorkPlanTypeEnum.BASELINE = { type: 3, value: "BASELINE" }; + _IfcWorkPlanTypeEnum.PLANNED = { type: 3, value: "PLANNED" }; + _IfcWorkPlanTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWorkPlanTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWorkPlanTypeEnum = _IfcWorkPlanTypeEnum; + IFC4X32.IfcWorkPlanTypeEnum = IfcWorkPlanTypeEnum; + const _IfcWorkScheduleTypeEnum = class _IfcWorkScheduleTypeEnum { + }; + _IfcWorkScheduleTypeEnum.ACTUAL = { type: 3, value: "ACTUAL" }; + _IfcWorkScheduleTypeEnum.BASELINE = { type: 3, value: "BASELINE" }; + _IfcWorkScheduleTypeEnum.PLANNED = { type: 3, value: "PLANNED" }; + _IfcWorkScheduleTypeEnum.USERDEFINED = { type: 3, value: "USERDEFINED" }; + _IfcWorkScheduleTypeEnum.NOTDEFINED = { type: 3, value: "NOTDEFINED" }; + let IfcWorkScheduleTypeEnum = _IfcWorkScheduleTypeEnum; + IFC4X32.IfcWorkScheduleTypeEnum = IfcWorkScheduleTypeEnum; + class IfcActorRole extends IfcLineObject { + constructor(Role, UserDefinedRole, Description) { + super(); + this.Role = Role; + this.UserDefinedRole = UserDefinedRole; + this.Description = Description; + this.type = 3630933823; + } + } + IFC4X32.IfcActorRole = IfcActorRole; + class IfcAddress extends IfcLineObject { + constructor(Purpose, Description, UserDefinedPurpose) { + super(); + this.Purpose = Purpose; + this.Description = Description; + this.UserDefinedPurpose = UserDefinedPurpose; + this.type = 618182010; + } + } + IFC4X32.IfcAddress = IfcAddress; + class IfcAlignmentParameterSegment extends IfcLineObject { + constructor(StartTag, EndTag) { + super(); + this.StartTag = StartTag; + this.EndTag = EndTag; + this.type = 2879124712; + } + } + IFC4X32.IfcAlignmentParameterSegment = IfcAlignmentParameterSegment; + class IfcAlignmentVerticalSegment extends IfcAlignmentParameterSegment { + constructor(StartTag, EndTag, StartDistAlong, HorizontalLength, StartHeight, StartGradient, EndGradient, RadiusOfCurvature, PredefinedType) { + super(StartTag, EndTag); + this.StartTag = StartTag; + this.EndTag = EndTag; + this.StartDistAlong = StartDistAlong; + this.HorizontalLength = HorizontalLength; + this.StartHeight = StartHeight; + this.StartGradient = StartGradient; + this.EndGradient = EndGradient; + this.RadiusOfCurvature = RadiusOfCurvature; + this.PredefinedType = PredefinedType; + this.type = 3633395639; + } + } + IFC4X32.IfcAlignmentVerticalSegment = IfcAlignmentVerticalSegment; + class IfcApplication extends IfcLineObject { + constructor(ApplicationDeveloper, Version, ApplicationFullName, ApplicationIdentifier) { + super(); + this.ApplicationDeveloper = ApplicationDeveloper; + this.Version = Version; + this.ApplicationFullName = ApplicationFullName; + this.ApplicationIdentifier = ApplicationIdentifier; + this.type = 639542469; + } + } + IFC4X32.IfcApplication = IfcApplication; + class IfcAppliedValue extends IfcLineObject { + constructor(Name, Description, AppliedValue, UnitBasis, ApplicableDate, FixedUntilDate, Category, Condition, ArithmeticOperator, Components) { + super(); + this.Name = Name; + this.Description = Description; + this.AppliedValue = AppliedValue; + this.UnitBasis = UnitBasis; + this.ApplicableDate = ApplicableDate; + this.FixedUntilDate = FixedUntilDate; + this.Category = Category; + this.Condition = Condition; + this.ArithmeticOperator = ArithmeticOperator; + this.Components = Components; + this.type = 411424972; + } + } + IFC4X32.IfcAppliedValue = IfcAppliedValue; + class IfcApproval extends IfcLineObject { + constructor(Identifier, Name, Description, TimeOfApproval, Status, Level, Qualifier, RequestingApproval, GivingApproval) { + super(); + this.Identifier = Identifier; + this.Name = Name; + this.Description = Description; + this.TimeOfApproval = TimeOfApproval; + this.Status = Status; + this.Level = Level; + this.Qualifier = Qualifier; + this.RequestingApproval = RequestingApproval; + this.GivingApproval = GivingApproval; + this.type = 130549933; + } + } + IFC4X32.IfcApproval = IfcApproval; + class IfcBoundaryCondition extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 4037036970; + } + } + IFC4X32.IfcBoundaryCondition = IfcBoundaryCondition; + class IfcBoundaryEdgeCondition extends IfcBoundaryCondition { + constructor(Name, TranslationalStiffnessByLengthX, TranslationalStiffnessByLengthY, TranslationalStiffnessByLengthZ, RotationalStiffnessByLengthX, RotationalStiffnessByLengthY, RotationalStiffnessByLengthZ) { + super(Name); + this.Name = Name; + this.TranslationalStiffnessByLengthX = TranslationalStiffnessByLengthX; + this.TranslationalStiffnessByLengthY = TranslationalStiffnessByLengthY; + this.TranslationalStiffnessByLengthZ = TranslationalStiffnessByLengthZ; + this.RotationalStiffnessByLengthX = RotationalStiffnessByLengthX; + this.RotationalStiffnessByLengthY = RotationalStiffnessByLengthY; + this.RotationalStiffnessByLengthZ = RotationalStiffnessByLengthZ; + this.type = 1560379544; + } + } + IFC4X32.IfcBoundaryEdgeCondition = IfcBoundaryEdgeCondition; + class IfcBoundaryFaceCondition extends IfcBoundaryCondition { + constructor(Name, TranslationalStiffnessByAreaX, TranslationalStiffnessByAreaY, TranslationalStiffnessByAreaZ) { + super(Name); + this.Name = Name; + this.TranslationalStiffnessByAreaX = TranslationalStiffnessByAreaX; + this.TranslationalStiffnessByAreaY = TranslationalStiffnessByAreaY; + this.TranslationalStiffnessByAreaZ = TranslationalStiffnessByAreaZ; + this.type = 3367102660; + } + } + IFC4X32.IfcBoundaryFaceCondition = IfcBoundaryFaceCondition; + class IfcBoundaryNodeCondition extends IfcBoundaryCondition { + constructor(Name, TranslationalStiffnessX, TranslationalStiffnessY, TranslationalStiffnessZ, RotationalStiffnessX, RotationalStiffnessY, RotationalStiffnessZ) { + super(Name); + this.Name = Name; + this.TranslationalStiffnessX = TranslationalStiffnessX; + this.TranslationalStiffnessY = TranslationalStiffnessY; + this.TranslationalStiffnessZ = TranslationalStiffnessZ; + this.RotationalStiffnessX = RotationalStiffnessX; + this.RotationalStiffnessY = RotationalStiffnessY; + this.RotationalStiffnessZ = RotationalStiffnessZ; + this.type = 1387855156; + } + } + IFC4X32.IfcBoundaryNodeCondition = IfcBoundaryNodeCondition; + class IfcBoundaryNodeConditionWarping extends IfcBoundaryNodeCondition { + constructor(Name, TranslationalStiffnessX, TranslationalStiffnessY, TranslationalStiffnessZ, RotationalStiffnessX, RotationalStiffnessY, RotationalStiffnessZ, WarpingStiffness) { + super(Name, TranslationalStiffnessX, TranslationalStiffnessY, TranslationalStiffnessZ, RotationalStiffnessX, RotationalStiffnessY, RotationalStiffnessZ); + this.Name = Name; + this.TranslationalStiffnessX = TranslationalStiffnessX; + this.TranslationalStiffnessY = TranslationalStiffnessY; + this.TranslationalStiffnessZ = TranslationalStiffnessZ; + this.RotationalStiffnessX = RotationalStiffnessX; + this.RotationalStiffnessY = RotationalStiffnessY; + this.RotationalStiffnessZ = RotationalStiffnessZ; + this.WarpingStiffness = WarpingStiffness; + this.type = 2069777674; + } + } + IFC4X32.IfcBoundaryNodeConditionWarping = IfcBoundaryNodeConditionWarping; + class IfcConnectionGeometry extends IfcLineObject { + constructor() { + super(); + this.type = 2859738748; + } + } + IFC4X32.IfcConnectionGeometry = IfcConnectionGeometry; + class IfcConnectionPointGeometry extends IfcConnectionGeometry { + constructor(PointOnRelatingElement, PointOnRelatedElement) { + super(); + this.PointOnRelatingElement = PointOnRelatingElement; + this.PointOnRelatedElement = PointOnRelatedElement; + this.type = 2614616156; + } + } + IFC4X32.IfcConnectionPointGeometry = IfcConnectionPointGeometry; + class IfcConnectionSurfaceGeometry extends IfcConnectionGeometry { + constructor(SurfaceOnRelatingElement, SurfaceOnRelatedElement) { + super(); + this.SurfaceOnRelatingElement = SurfaceOnRelatingElement; + this.SurfaceOnRelatedElement = SurfaceOnRelatedElement; + this.type = 2732653382; + } + } + IFC4X32.IfcConnectionSurfaceGeometry = IfcConnectionSurfaceGeometry; + class IfcConnectionVolumeGeometry extends IfcConnectionGeometry { + constructor(VolumeOnRelatingElement, VolumeOnRelatedElement) { + super(); + this.VolumeOnRelatingElement = VolumeOnRelatingElement; + this.VolumeOnRelatedElement = VolumeOnRelatedElement; + this.type = 775493141; + } + } + IFC4X32.IfcConnectionVolumeGeometry = IfcConnectionVolumeGeometry; + class IfcConstraint extends IfcLineObject { + constructor(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade) { + super(); + this.Name = Name; + this.Description = Description; + this.ConstraintGrade = ConstraintGrade; + this.ConstraintSource = ConstraintSource; + this.CreatingActor = CreatingActor; + this.CreationTime = CreationTime; + this.UserDefinedGrade = UserDefinedGrade; + this.type = 1959218052; + } + } + IFC4X32.IfcConstraint = IfcConstraint; + class IfcCoordinateOperation extends IfcLineObject { + constructor(SourceCRS, TargetCRS) { + super(); + this.SourceCRS = SourceCRS; + this.TargetCRS = TargetCRS; + this.type = 1785450214; + } + } + IFC4X32.IfcCoordinateOperation = IfcCoordinateOperation; + class IfcCoordinateReferenceSystem extends IfcLineObject { + constructor(Name, Description, GeodeticDatum) { + super(); + this.Name = Name; + this.Description = Description; + this.GeodeticDatum = GeodeticDatum; + this.type = 1466758467; + } + } + IFC4X32.IfcCoordinateReferenceSystem = IfcCoordinateReferenceSystem; + class IfcCostValue extends IfcAppliedValue { + constructor(Name, Description, AppliedValue, UnitBasis, ApplicableDate, FixedUntilDate, Category, Condition, ArithmeticOperator, Components) { + super(Name, Description, AppliedValue, UnitBasis, ApplicableDate, FixedUntilDate, Category, Condition, ArithmeticOperator, Components); + this.Name = Name; + this.Description = Description; + this.AppliedValue = AppliedValue; + this.UnitBasis = UnitBasis; + this.ApplicableDate = ApplicableDate; + this.FixedUntilDate = FixedUntilDate; + this.Category = Category; + this.Condition = Condition; + this.ArithmeticOperator = ArithmeticOperator; + this.Components = Components; + this.type = 602808272; + } + } + IFC4X32.IfcCostValue = IfcCostValue; + class IfcDerivedUnit extends IfcLineObject { + constructor(Elements, UnitType, UserDefinedType, Name) { + super(); + this.Elements = Elements; + this.UnitType = UnitType; + this.UserDefinedType = UserDefinedType; + this.Name = Name; + this.type = 1765591967; + } + } + IFC4X32.IfcDerivedUnit = IfcDerivedUnit; + class IfcDerivedUnitElement extends IfcLineObject { + constructor(Unit, Exponent) { + super(); + this.Unit = Unit; + this.Exponent = Exponent; + this.type = 1045800335; + } + } + IFC4X32.IfcDerivedUnitElement = IfcDerivedUnitElement; + class IfcDimensionalExponents extends IfcLineObject { + constructor(LengthExponent, MassExponent, TimeExponent, ElectricCurrentExponent, ThermodynamicTemperatureExponent, AmountOfSubstanceExponent, LuminousIntensityExponent) { + super(); + this.LengthExponent = LengthExponent; + this.MassExponent = MassExponent; + this.TimeExponent = TimeExponent; + this.ElectricCurrentExponent = ElectricCurrentExponent; + this.ThermodynamicTemperatureExponent = ThermodynamicTemperatureExponent; + this.AmountOfSubstanceExponent = AmountOfSubstanceExponent; + this.LuminousIntensityExponent = LuminousIntensityExponent; + this.type = 2949456006; + } + } + IFC4X32.IfcDimensionalExponents = IfcDimensionalExponents; + class IfcExternalInformation extends IfcLineObject { + constructor() { + super(); + this.type = 4294318154; + } + } + IFC4X32.IfcExternalInformation = IfcExternalInformation; + class IfcExternalReference extends IfcLineObject { + constructor(Location, Identification, Name) { + super(); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.type = 3200245327; + } + } + IFC4X32.IfcExternalReference = IfcExternalReference; + class IfcExternallyDefinedHatchStyle extends IfcExternalReference { + constructor(Location, Identification, Name) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.type = 2242383968; + } + } + IFC4X32.IfcExternallyDefinedHatchStyle = IfcExternallyDefinedHatchStyle; + class IfcExternallyDefinedSurfaceStyle extends IfcExternalReference { + constructor(Location, Identification, Name) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.type = 1040185647; + } + } + IFC4X32.IfcExternallyDefinedSurfaceStyle = IfcExternallyDefinedSurfaceStyle; + class IfcExternallyDefinedTextFont extends IfcExternalReference { + constructor(Location, Identification, Name) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.type = 3548104201; + } + } + IFC4X32.IfcExternallyDefinedTextFont = IfcExternallyDefinedTextFont; + class IfcGeographicCRS extends IfcCoordinateReferenceSystem { + constructor(Name, Description, GeodeticDatum, PrimeMeridian, AngleUnit, HeightUnit) { + super(Name, Description, GeodeticDatum); + this.Name = Name; + this.Description = Description; + this.GeodeticDatum = GeodeticDatum; + this.PrimeMeridian = PrimeMeridian; + this.AngleUnit = AngleUnit; + this.HeightUnit = HeightUnit; + this.type = 917726184; + } + } + IFC4X32.IfcGeographicCRS = IfcGeographicCRS; + class IfcGridAxis extends IfcLineObject { + constructor(AxisTag, AxisCurve, SameSense) { + super(); + this.AxisTag = AxisTag; + this.AxisCurve = AxisCurve; + this.SameSense = SameSense; + this.type = 852622518; + } + } + IFC4X32.IfcGridAxis = IfcGridAxis; + class IfcIrregularTimeSeriesValue extends IfcLineObject { + constructor(TimeStamp, ListValues) { + super(); + this.TimeStamp = TimeStamp; + this.ListValues = ListValues; + this.type = 3020489413; + } + } + IFC4X32.IfcIrregularTimeSeriesValue = IfcIrregularTimeSeriesValue; + class IfcLibraryInformation extends IfcExternalInformation { + constructor(Name, Version, Publisher, VersionDate, Location, Description) { + super(); + this.Name = Name; + this.Version = Version; + this.Publisher = Publisher; + this.VersionDate = VersionDate; + this.Location = Location; + this.Description = Description; + this.type = 2655187982; + } + } + IFC4X32.IfcLibraryInformation = IfcLibraryInformation; + class IfcLibraryReference extends IfcExternalReference { + constructor(Location, Identification, Name, Description, Language, ReferencedLibrary) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.Description = Description; + this.Language = Language; + this.ReferencedLibrary = ReferencedLibrary; + this.type = 3452421091; + } + } + IFC4X32.IfcLibraryReference = IfcLibraryReference; + class IfcLightDistributionData extends IfcLineObject { + constructor(MainPlaneAngle, SecondaryPlaneAngle, LuminousIntensity) { + super(); + this.MainPlaneAngle = MainPlaneAngle; + this.SecondaryPlaneAngle = SecondaryPlaneAngle; + this.LuminousIntensity = LuminousIntensity; + this.type = 4162380809; + } + } + IFC4X32.IfcLightDistributionData = IfcLightDistributionData; + class IfcLightIntensityDistribution extends IfcLineObject { + constructor(LightDistributionCurve, DistributionData) { + super(); + this.LightDistributionCurve = LightDistributionCurve; + this.DistributionData = DistributionData; + this.type = 1566485204; + } + } + IFC4X32.IfcLightIntensityDistribution = IfcLightIntensityDistribution; + class IfcMapConversion extends IfcCoordinateOperation { + constructor(SourceCRS, TargetCRS, Eastings, Northings, OrthogonalHeight, XAxisAbscissa, XAxisOrdinate, Scale) { + super(SourceCRS, TargetCRS); + this.SourceCRS = SourceCRS; + this.TargetCRS = TargetCRS; + this.Eastings = Eastings; + this.Northings = Northings; + this.OrthogonalHeight = OrthogonalHeight; + this.XAxisAbscissa = XAxisAbscissa; + this.XAxisOrdinate = XAxisOrdinate; + this.Scale = Scale; + this.type = 3057273783; + } + } + IFC4X32.IfcMapConversion = IfcMapConversion; + class IfcMapConversionScaled extends IfcMapConversion { + constructor(SourceCRS, TargetCRS, Eastings, Northings, OrthogonalHeight, XAxisAbscissa, XAxisOrdinate, Scale, FactorX, FactorY, FactorZ) { + super(SourceCRS, TargetCRS, Eastings, Northings, OrthogonalHeight, XAxisAbscissa, XAxisOrdinate, Scale); + this.SourceCRS = SourceCRS; + this.TargetCRS = TargetCRS; + this.Eastings = Eastings; + this.Northings = Northings; + this.OrthogonalHeight = OrthogonalHeight; + this.XAxisAbscissa = XAxisAbscissa; + this.XAxisOrdinate = XAxisOrdinate; + this.Scale = Scale; + this.FactorX = FactorX; + this.FactorY = FactorY; + this.FactorZ = FactorZ; + this.type = 4105526436; + } + } + IFC4X32.IfcMapConversionScaled = IfcMapConversionScaled; + class IfcMaterialClassificationRelationship extends IfcLineObject { + constructor(MaterialClassifications, ClassifiedMaterial) { + super(); + this.MaterialClassifications = MaterialClassifications; + this.ClassifiedMaterial = ClassifiedMaterial; + this.type = 1847130766; + } + } + IFC4X32.IfcMaterialClassificationRelationship = IfcMaterialClassificationRelationship; + class IfcMaterialDefinition extends IfcLineObject { + constructor() { + super(); + this.type = 760658860; + } + } + IFC4X32.IfcMaterialDefinition = IfcMaterialDefinition; + class IfcMaterialLayer extends IfcMaterialDefinition { + constructor(Material3, LayerThickness, IsVentilated, Name, Description, Category, Priority) { + super(); + this.Material = Material3; + this.LayerThickness = LayerThickness; + this.IsVentilated = IsVentilated; + this.Name = Name; + this.Description = Description; + this.Category = Category; + this.Priority = Priority; + this.type = 248100487; + } + } + IFC4X32.IfcMaterialLayer = IfcMaterialLayer; + class IfcMaterialLayerSet extends IfcMaterialDefinition { + constructor(MaterialLayers, LayerSetName, Description) { + super(); + this.MaterialLayers = MaterialLayers; + this.LayerSetName = LayerSetName; + this.Description = Description; + this.type = 3303938423; + } + } + IFC4X32.IfcMaterialLayerSet = IfcMaterialLayerSet; + class IfcMaterialLayerWithOffsets extends IfcMaterialLayer { + constructor(Material3, LayerThickness, IsVentilated, Name, Description, Category, Priority, OffsetDirection, OffsetValues) { + super(Material3, LayerThickness, IsVentilated, Name, Description, Category, Priority); + this.Material = Material3; + this.LayerThickness = LayerThickness; + this.IsVentilated = IsVentilated; + this.Name = Name; + this.Description = Description; + this.Category = Category; + this.Priority = Priority; + this.OffsetDirection = OffsetDirection; + this.OffsetValues = OffsetValues; + this.type = 1847252529; + } + } + IFC4X32.IfcMaterialLayerWithOffsets = IfcMaterialLayerWithOffsets; + class IfcMaterialList extends IfcLineObject { + constructor(Materials) { + super(); + this.Materials = Materials; + this.type = 2199411900; + } + } + IFC4X32.IfcMaterialList = IfcMaterialList; + class IfcMaterialProfile extends IfcMaterialDefinition { + constructor(Name, Description, Material3, Profile, Priority, Category) { + super(); + this.Name = Name; + this.Description = Description; + this.Material = Material3; + this.Profile = Profile; + this.Priority = Priority; + this.Category = Category; + this.type = 2235152071; + } + } + IFC4X32.IfcMaterialProfile = IfcMaterialProfile; + class IfcMaterialProfileSet extends IfcMaterialDefinition { + constructor(Name, Description, MaterialProfiles, CompositeProfile) { + super(); + this.Name = Name; + this.Description = Description; + this.MaterialProfiles = MaterialProfiles; + this.CompositeProfile = CompositeProfile; + this.type = 164193824; + } + } + IFC4X32.IfcMaterialProfileSet = IfcMaterialProfileSet; + class IfcMaterialProfileWithOffsets extends IfcMaterialProfile { + constructor(Name, Description, Material3, Profile, Priority, Category, OffsetValues) { + super(Name, Description, Material3, Profile, Priority, Category); + this.Name = Name; + this.Description = Description; + this.Material = Material3; + this.Profile = Profile; + this.Priority = Priority; + this.Category = Category; + this.OffsetValues = OffsetValues; + this.type = 552965576; + } + } + IFC4X32.IfcMaterialProfileWithOffsets = IfcMaterialProfileWithOffsets; + class IfcMaterialUsageDefinition extends IfcLineObject { + constructor() { + super(); + this.type = 1507914824; + } + } + IFC4X32.IfcMaterialUsageDefinition = IfcMaterialUsageDefinition; + class IfcMeasureWithUnit extends IfcLineObject { + constructor(ValueComponent, UnitComponent) { + super(); + this.ValueComponent = ValueComponent; + this.UnitComponent = UnitComponent; + this.type = 2597039031; + } + } + IFC4X32.IfcMeasureWithUnit = IfcMeasureWithUnit; + class IfcMetric extends IfcConstraint { + constructor(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade, Benchmark, ValueSource, DataValue, ReferencePath) { + super(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade); + this.Name = Name; + this.Description = Description; + this.ConstraintGrade = ConstraintGrade; + this.ConstraintSource = ConstraintSource; + this.CreatingActor = CreatingActor; + this.CreationTime = CreationTime; + this.UserDefinedGrade = UserDefinedGrade; + this.Benchmark = Benchmark; + this.ValueSource = ValueSource; + this.DataValue = DataValue; + this.ReferencePath = ReferencePath; + this.type = 3368373690; + } + } + IFC4X32.IfcMetric = IfcMetric; + class IfcMonetaryUnit extends IfcLineObject { + constructor(Currency) { + super(); + this.Currency = Currency; + this.type = 2706619895; + } + } + IFC4X32.IfcMonetaryUnit = IfcMonetaryUnit; + class IfcNamedUnit extends IfcLineObject { + constructor(Dimensions, UnitType) { + super(); + this.Dimensions = Dimensions; + this.UnitType = UnitType; + this.type = 1918398963; + } + } + IFC4X32.IfcNamedUnit = IfcNamedUnit; + class IfcObjectPlacement extends IfcLineObject { + constructor(PlacementRelTo) { + super(); + this.PlacementRelTo = PlacementRelTo; + this.type = 3701648758; + } + } + IFC4X32.IfcObjectPlacement = IfcObjectPlacement; + class IfcObjective extends IfcConstraint { + constructor(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade, BenchmarkValues, LogicalAggregator, ObjectiveQualifier, UserDefinedQualifier) { + super(Name, Description, ConstraintGrade, ConstraintSource, CreatingActor, CreationTime, UserDefinedGrade); + this.Name = Name; + this.Description = Description; + this.ConstraintGrade = ConstraintGrade; + this.ConstraintSource = ConstraintSource; + this.CreatingActor = CreatingActor; + this.CreationTime = CreationTime; + this.UserDefinedGrade = UserDefinedGrade; + this.BenchmarkValues = BenchmarkValues; + this.LogicalAggregator = LogicalAggregator; + this.ObjectiveQualifier = ObjectiveQualifier; + this.UserDefinedQualifier = UserDefinedQualifier; + this.type = 2251480897; + } + } + IFC4X32.IfcObjective = IfcObjective; + class IfcOrganization extends IfcLineObject { + constructor(Identification, Name, Description, Roles, Addresses) { + super(); + this.Identification = Identification; + this.Name = Name; + this.Description = Description; + this.Roles = Roles; + this.Addresses = Addresses; + this.type = 4251960020; + } + } + IFC4X32.IfcOrganization = IfcOrganization; + class IfcOwnerHistory extends IfcLineObject { + constructor(OwningUser, OwningApplication, State, ChangeAction, LastModifiedDate, LastModifyingUser, LastModifyingApplication, CreationDate) { + super(); + this.OwningUser = OwningUser; + this.OwningApplication = OwningApplication; + this.State = State; + this.ChangeAction = ChangeAction; + this.LastModifiedDate = LastModifiedDate; + this.LastModifyingUser = LastModifyingUser; + this.LastModifyingApplication = LastModifyingApplication; + this.CreationDate = CreationDate; + this.type = 1207048766; + } + } + IFC4X32.IfcOwnerHistory = IfcOwnerHistory; + class IfcPerson extends IfcLineObject { + constructor(Identification, FamilyName, GivenName, MiddleNames, PrefixTitles, SuffixTitles, Roles, Addresses) { + super(); + this.Identification = Identification; + this.FamilyName = FamilyName; + this.GivenName = GivenName; + this.MiddleNames = MiddleNames; + this.PrefixTitles = PrefixTitles; + this.SuffixTitles = SuffixTitles; + this.Roles = Roles; + this.Addresses = Addresses; + this.type = 2077209135; + } + } + IFC4X32.IfcPerson = IfcPerson; + class IfcPersonAndOrganization extends IfcLineObject { + constructor(ThePerson, TheOrganization, Roles) { + super(); + this.ThePerson = ThePerson; + this.TheOrganization = TheOrganization; + this.Roles = Roles; + this.type = 101040310; + } + } + IFC4X32.IfcPersonAndOrganization = IfcPersonAndOrganization; + class IfcPhysicalQuantity extends IfcLineObject { + constructor(Name, Description) { + super(); + this.Name = Name; + this.Description = Description; + this.type = 2483315170; + } + } + IFC4X32.IfcPhysicalQuantity = IfcPhysicalQuantity; + class IfcPhysicalSimpleQuantity extends IfcPhysicalQuantity { + constructor(Name, Description, Unit) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.type = 2226359599; + } + } + IFC4X32.IfcPhysicalSimpleQuantity = IfcPhysicalSimpleQuantity; + class IfcPostalAddress extends IfcAddress { + constructor(Purpose, Description, UserDefinedPurpose, InternalLocation, AddressLines, PostalBox, Town, Region, PostalCode, Country) { + super(Purpose, Description, UserDefinedPurpose); + this.Purpose = Purpose; + this.Description = Description; + this.UserDefinedPurpose = UserDefinedPurpose; + this.InternalLocation = InternalLocation; + this.AddressLines = AddressLines; + this.PostalBox = PostalBox; + this.Town = Town; + this.Region = Region; + this.PostalCode = PostalCode; + this.Country = Country; + this.type = 3355820592; + } + } + IFC4X32.IfcPostalAddress = IfcPostalAddress; + class IfcPresentationItem extends IfcLineObject { + constructor() { + super(); + this.type = 677532197; + } + } + IFC4X32.IfcPresentationItem = IfcPresentationItem; + class IfcPresentationLayerAssignment extends IfcLineObject { + constructor(Name, Description, AssignedItems, Identifier) { + super(); + this.Name = Name; + this.Description = Description; + this.AssignedItems = AssignedItems; + this.Identifier = Identifier; + this.type = 2022622350; + } + } + IFC4X32.IfcPresentationLayerAssignment = IfcPresentationLayerAssignment; + class IfcPresentationLayerWithStyle extends IfcPresentationLayerAssignment { + constructor(Name, Description, AssignedItems, Identifier, LayerOn, LayerFrozen, LayerBlocked, LayerStyles) { + super(Name, Description, AssignedItems, Identifier); + this.Name = Name; + this.Description = Description; + this.AssignedItems = AssignedItems; + this.Identifier = Identifier; + this.LayerOn = LayerOn; + this.LayerFrozen = LayerFrozen; + this.LayerBlocked = LayerBlocked; + this.LayerStyles = LayerStyles; + this.type = 1304840413; + } + } + IFC4X32.IfcPresentationLayerWithStyle = IfcPresentationLayerWithStyle; + class IfcPresentationStyle extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 3119450353; + } + } + IFC4X32.IfcPresentationStyle = IfcPresentationStyle; + class IfcProductRepresentation extends IfcLineObject { + constructor(Name, Description, Representations) { + super(); + this.Name = Name; + this.Description = Description; + this.Representations = Representations; + this.type = 2095639259; + } + } + IFC4X32.IfcProductRepresentation = IfcProductRepresentation; + class IfcProfileDef extends IfcLineObject { + constructor(ProfileType, ProfileName) { + super(); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.type = 3958567839; + } + } + IFC4X32.IfcProfileDef = IfcProfileDef; + class IfcProjectedCRS extends IfcCoordinateReferenceSystem { + constructor(Name, Description, GeodeticDatum, VerticalDatum, MapProjection, MapZone, MapUnit) { + super(Name, Description, GeodeticDatum); + this.Name = Name; + this.Description = Description; + this.GeodeticDatum = GeodeticDatum; + this.VerticalDatum = VerticalDatum; + this.MapProjection = MapProjection; + this.MapZone = MapZone; + this.MapUnit = MapUnit; + this.type = 3843373140; + } + } + IFC4X32.IfcProjectedCRS = IfcProjectedCRS; + class IfcPropertyAbstraction extends IfcLineObject { + constructor() { + super(); + this.type = 986844984; + } + } + IFC4X32.IfcPropertyAbstraction = IfcPropertyAbstraction; + class IfcPropertyEnumeration extends IfcPropertyAbstraction { + constructor(Name, EnumerationValues, Unit) { + super(); + this.Name = Name; + this.EnumerationValues = EnumerationValues; + this.Unit = Unit; + this.type = 3710013099; + } + } + IFC4X32.IfcPropertyEnumeration = IfcPropertyEnumeration; + class IfcQuantityArea extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, AreaValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.AreaValue = AreaValue; + this.Formula = Formula; + this.type = 2044713172; + } + } + IFC4X32.IfcQuantityArea = IfcQuantityArea; + class IfcQuantityCount extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, CountValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.CountValue = CountValue; + this.Formula = Formula; + this.type = 2093928680; + } + } + IFC4X32.IfcQuantityCount = IfcQuantityCount; + class IfcQuantityLength extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, LengthValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.LengthValue = LengthValue; + this.Formula = Formula; + this.type = 931644368; + } + } + IFC4X32.IfcQuantityLength = IfcQuantityLength; + class IfcQuantityNumber extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, NumberValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.NumberValue = NumberValue; + this.Formula = Formula; + this.type = 2691318326; + } + } + IFC4X32.IfcQuantityNumber = IfcQuantityNumber; + class IfcQuantityTime extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, TimeValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.TimeValue = TimeValue; + this.Formula = Formula; + this.type = 3252649465; + } + } + IFC4X32.IfcQuantityTime = IfcQuantityTime; + class IfcQuantityVolume extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, VolumeValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.VolumeValue = VolumeValue; + this.Formula = Formula; + this.type = 2405470396; + } + } + IFC4X32.IfcQuantityVolume = IfcQuantityVolume; + class IfcQuantityWeight extends IfcPhysicalSimpleQuantity { + constructor(Name, Description, Unit, WeightValue, Formula) { + super(Name, Description, Unit); + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.WeightValue = WeightValue; + this.Formula = Formula; + this.type = 825690147; + } + } + IFC4X32.IfcQuantityWeight = IfcQuantityWeight; + class IfcRecurrencePattern extends IfcLineObject { + constructor(RecurrenceType, DayComponent, WeekdayComponent, MonthComponent, Position, Interval, Occurrences, TimePeriods) { + super(); + this.RecurrenceType = RecurrenceType; + this.DayComponent = DayComponent; + this.WeekdayComponent = WeekdayComponent; + this.MonthComponent = MonthComponent; + this.Position = Position; + this.Interval = Interval; + this.Occurrences = Occurrences; + this.TimePeriods = TimePeriods; + this.type = 3915482550; + } + } + IFC4X32.IfcRecurrencePattern = IfcRecurrencePattern; + class IfcReference extends IfcLineObject { + constructor(TypeIdentifier, AttributeIdentifier, InstanceName, ListPositions, InnerReference) { + super(); + this.TypeIdentifier = TypeIdentifier; + this.AttributeIdentifier = AttributeIdentifier; + this.InstanceName = InstanceName; + this.ListPositions = ListPositions; + this.InnerReference = InnerReference; + this.type = 2433181523; + } + } + IFC4X32.IfcReference = IfcReference; + class IfcRepresentation extends IfcLineObject { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 1076942058; + } + } + IFC4X32.IfcRepresentation = IfcRepresentation; + class IfcRepresentationContext extends IfcLineObject { + constructor(ContextIdentifier, ContextType) { + super(); + this.ContextIdentifier = ContextIdentifier; + this.ContextType = ContextType; + this.type = 3377609919; + } + } + IFC4X32.IfcRepresentationContext = IfcRepresentationContext; + class IfcRepresentationItem extends IfcLineObject { + constructor() { + super(); + this.type = 3008791417; + } + } + IFC4X32.IfcRepresentationItem = IfcRepresentationItem; + class IfcRepresentationMap extends IfcLineObject { + constructor(MappingOrigin, MappedRepresentation) { + super(); + this.MappingOrigin = MappingOrigin; + this.MappedRepresentation = MappedRepresentation; + this.type = 1660063152; + } + } + IFC4X32.IfcRepresentationMap = IfcRepresentationMap; + class IfcResourceLevelRelationship extends IfcLineObject { + constructor(Name, Description) { + super(); + this.Name = Name; + this.Description = Description; + this.type = 2439245199; + } + } + IFC4X32.IfcResourceLevelRelationship = IfcResourceLevelRelationship; + class IfcRigidOperation extends IfcCoordinateOperation { + constructor(SourceCRS, TargetCRS, FirstCoordinate, SecondCoordinate, Height) { + super(SourceCRS, TargetCRS); + this.SourceCRS = SourceCRS; + this.TargetCRS = TargetCRS; + this.FirstCoordinate = FirstCoordinate; + this.SecondCoordinate = SecondCoordinate; + this.Height = Height; + this.type = 1794013214; + } + } + IFC4X32.IfcRigidOperation = IfcRigidOperation; + class IfcRoot extends IfcLineObject { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 2341007311; + } + } + IFC4X32.IfcRoot = IfcRoot; + class IfcSIUnit extends IfcNamedUnit { + constructor(UnitType, Prefix, Name) { + super(new Handle(0), UnitType); + this.UnitType = UnitType; + this.Prefix = Prefix; + this.Name = Name; + this.type = 448429030; + } + } + IFC4X32.IfcSIUnit = IfcSIUnit; + class IfcSchedulingTime extends IfcLineObject { + constructor(Name, DataOrigin, UserDefinedDataOrigin) { + super(); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.type = 1054537805; + } + } + IFC4X32.IfcSchedulingTime = IfcSchedulingTime; + class IfcShapeAspect extends IfcLineObject { + constructor(ShapeRepresentations, Name, Description, ProductDefinitional, PartOfProductDefinitionShape) { + super(); + this.ShapeRepresentations = ShapeRepresentations; + this.Name = Name; + this.Description = Description; + this.ProductDefinitional = ProductDefinitional; + this.PartOfProductDefinitionShape = PartOfProductDefinitionShape; + this.type = 867548509; + } + } + IFC4X32.IfcShapeAspect = IfcShapeAspect; + class IfcShapeModel extends IfcRepresentation { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 3982875396; + } + } + IFC4X32.IfcShapeModel = IfcShapeModel; + class IfcShapeRepresentation extends IfcShapeModel { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 4240577450; + } + } + IFC4X32.IfcShapeRepresentation = IfcShapeRepresentation; + class IfcStructuralConnectionCondition extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 2273995522; + } + } + IFC4X32.IfcStructuralConnectionCondition = IfcStructuralConnectionCondition; + class IfcStructuralLoad extends IfcLineObject { + constructor(Name) { + super(); + this.Name = Name; + this.type = 2162789131; + } + } + IFC4X32.IfcStructuralLoad = IfcStructuralLoad; + class IfcStructuralLoadConfiguration extends IfcStructuralLoad { + constructor(Name, Values, Locations) { + super(Name); + this.Name = Name; + this.Values = Values; + this.Locations = Locations; + this.type = 3478079324; + } + } + IFC4X32.IfcStructuralLoadConfiguration = IfcStructuralLoadConfiguration; + class IfcStructuralLoadOrResult extends IfcStructuralLoad { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 609421318; + } + } + IFC4X32.IfcStructuralLoadOrResult = IfcStructuralLoadOrResult; + class IfcStructuralLoadStatic extends IfcStructuralLoadOrResult { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 2525727697; + } + } + IFC4X32.IfcStructuralLoadStatic = IfcStructuralLoadStatic; + class IfcStructuralLoadTemperature extends IfcStructuralLoadStatic { + constructor(Name, DeltaTConstant, DeltaTY, DeltaTZ) { + super(Name); + this.Name = Name; + this.DeltaTConstant = DeltaTConstant; + this.DeltaTY = DeltaTY; + this.DeltaTZ = DeltaTZ; + this.type = 3408363356; + } + } + IFC4X32.IfcStructuralLoadTemperature = IfcStructuralLoadTemperature; + class IfcStyleModel extends IfcRepresentation { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 2830218821; + } + } + IFC4X32.IfcStyleModel = IfcStyleModel; + class IfcStyledItem extends IfcRepresentationItem { + constructor(Item, Styles, Name) { + super(); + this.Item = Item; + this.Styles = Styles; + this.Name = Name; + this.type = 3958052878; + } + } + IFC4X32.IfcStyledItem = IfcStyledItem; + class IfcStyledRepresentation extends IfcStyleModel { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 3049322572; + } + } + IFC4X32.IfcStyledRepresentation = IfcStyledRepresentation; + class IfcSurfaceReinforcementArea extends IfcStructuralLoadOrResult { + constructor(Name, SurfaceReinforcement1, SurfaceReinforcement2, ShearReinforcement) { + super(Name); + this.Name = Name; + this.SurfaceReinforcement1 = SurfaceReinforcement1; + this.SurfaceReinforcement2 = SurfaceReinforcement2; + this.ShearReinforcement = ShearReinforcement; + this.type = 2934153892; + } + } + IFC4X32.IfcSurfaceReinforcementArea = IfcSurfaceReinforcementArea; + class IfcSurfaceStyle extends IfcPresentationStyle { + constructor(Name, Side, Styles) { + super(Name); + this.Name = Name; + this.Side = Side; + this.Styles = Styles; + this.type = 1300840506; + } + } + IFC4X32.IfcSurfaceStyle = IfcSurfaceStyle; + class IfcSurfaceStyleLighting extends IfcPresentationItem { + constructor(DiffuseTransmissionColour, DiffuseReflectionColour, TransmissionColour, ReflectanceColour) { + super(); + this.DiffuseTransmissionColour = DiffuseTransmissionColour; + this.DiffuseReflectionColour = DiffuseReflectionColour; + this.TransmissionColour = TransmissionColour; + this.ReflectanceColour = ReflectanceColour; + this.type = 3303107099; + } + } + IFC4X32.IfcSurfaceStyleLighting = IfcSurfaceStyleLighting; + class IfcSurfaceStyleRefraction extends IfcPresentationItem { + constructor(RefractionIndex, DispersionFactor) { + super(); + this.RefractionIndex = RefractionIndex; + this.DispersionFactor = DispersionFactor; + this.type = 1607154358; + } + } + IFC4X32.IfcSurfaceStyleRefraction = IfcSurfaceStyleRefraction; + class IfcSurfaceStyleShading extends IfcPresentationItem { + constructor(SurfaceColour, Transparency) { + super(); + this.SurfaceColour = SurfaceColour; + this.Transparency = Transparency; + this.type = 846575682; + } + } + IFC4X32.IfcSurfaceStyleShading = IfcSurfaceStyleShading; + class IfcSurfaceStyleWithTextures extends IfcPresentationItem { + constructor(Textures) { + super(); + this.Textures = Textures; + this.type = 1351298697; + } + } + IFC4X32.IfcSurfaceStyleWithTextures = IfcSurfaceStyleWithTextures; + class IfcSurfaceTexture extends IfcPresentationItem { + constructor(RepeatS, RepeatT, Mode, TextureTransform, Parameter) { + super(); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.Mode = Mode; + this.TextureTransform = TextureTransform; + this.Parameter = Parameter; + this.type = 626085974; + } + } + IFC4X32.IfcSurfaceTexture = IfcSurfaceTexture; + class IfcTable extends IfcLineObject { + constructor(Name, Rows, Columns) { + super(); + this.Name = Name; + this.Rows = Rows; + this.Columns = Columns; + this.type = 985171141; + } + } + IFC4X32.IfcTable = IfcTable; + class IfcTableColumn extends IfcLineObject { + constructor(Identifier, Name, Description, Unit, ReferencePath) { + super(); + this.Identifier = Identifier; + this.Name = Name; + this.Description = Description; + this.Unit = Unit; + this.ReferencePath = ReferencePath; + this.type = 2043862942; + } + } + IFC4X32.IfcTableColumn = IfcTableColumn; + class IfcTableRow extends IfcLineObject { + constructor(RowCells, IsHeading) { + super(); + this.RowCells = RowCells; + this.IsHeading = IsHeading; + this.type = 531007025; + } + } + IFC4X32.IfcTableRow = IfcTableRow; + class IfcTaskTime extends IfcSchedulingTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, DurationType, ScheduleDuration, ScheduleStart, ScheduleFinish, EarlyStart, EarlyFinish, LateStart, LateFinish, FreeFloat, TotalFloat, IsCritical, StatusTime, ActualDuration, ActualStart, ActualFinish, RemainingTime, Completion) { + super(Name, DataOrigin, UserDefinedDataOrigin); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.DurationType = DurationType; + this.ScheduleDuration = ScheduleDuration; + this.ScheduleStart = ScheduleStart; + this.ScheduleFinish = ScheduleFinish; + this.EarlyStart = EarlyStart; + this.EarlyFinish = EarlyFinish; + this.LateStart = LateStart; + this.LateFinish = LateFinish; + this.FreeFloat = FreeFloat; + this.TotalFloat = TotalFloat; + this.IsCritical = IsCritical; + this.StatusTime = StatusTime; + this.ActualDuration = ActualDuration; + this.ActualStart = ActualStart; + this.ActualFinish = ActualFinish; + this.RemainingTime = RemainingTime; + this.Completion = Completion; + this.type = 1549132990; + } + } + IFC4X32.IfcTaskTime = IfcTaskTime; + class IfcTaskTimeRecurring extends IfcTaskTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, DurationType, ScheduleDuration, ScheduleStart, ScheduleFinish, EarlyStart, EarlyFinish, LateStart, LateFinish, FreeFloat, TotalFloat, IsCritical, StatusTime, ActualDuration, ActualStart, ActualFinish, RemainingTime, Completion, Recurrence) { + super(Name, DataOrigin, UserDefinedDataOrigin, DurationType, ScheduleDuration, ScheduleStart, ScheduleFinish, EarlyStart, EarlyFinish, LateStart, LateFinish, FreeFloat, TotalFloat, IsCritical, StatusTime, ActualDuration, ActualStart, ActualFinish, RemainingTime, Completion); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.DurationType = DurationType; + this.ScheduleDuration = ScheduleDuration; + this.ScheduleStart = ScheduleStart; + this.ScheduleFinish = ScheduleFinish; + this.EarlyStart = EarlyStart; + this.EarlyFinish = EarlyFinish; + this.LateStart = LateStart; + this.LateFinish = LateFinish; + this.FreeFloat = FreeFloat; + this.TotalFloat = TotalFloat; + this.IsCritical = IsCritical; + this.StatusTime = StatusTime; + this.ActualDuration = ActualDuration; + this.ActualStart = ActualStart; + this.ActualFinish = ActualFinish; + this.RemainingTime = RemainingTime; + this.Completion = Completion; + this.Recurrence = Recurrence; + this.type = 2771591690; + } + } + IFC4X32.IfcTaskTimeRecurring = IfcTaskTimeRecurring; + class IfcTelecomAddress extends IfcAddress { + constructor(Purpose, Description, UserDefinedPurpose, TelephoneNumbers, FacsimileNumbers, PagerNumber, ElectronicMailAddresses, WWWHomePageURL, MessagingIDs) { + super(Purpose, Description, UserDefinedPurpose); + this.Purpose = Purpose; + this.Description = Description; + this.UserDefinedPurpose = UserDefinedPurpose; + this.TelephoneNumbers = TelephoneNumbers; + this.FacsimileNumbers = FacsimileNumbers; + this.PagerNumber = PagerNumber; + this.ElectronicMailAddresses = ElectronicMailAddresses; + this.WWWHomePageURL = WWWHomePageURL; + this.MessagingIDs = MessagingIDs; + this.type = 912023232; + } + } + IFC4X32.IfcTelecomAddress = IfcTelecomAddress; + class IfcTextStyle extends IfcPresentationStyle { + constructor(Name, TextCharacterAppearance, TextStyle, TextFontStyle, ModelOrDraughting) { + super(Name); + this.Name = Name; + this.TextCharacterAppearance = TextCharacterAppearance; + this.TextStyle = TextStyle; + this.TextFontStyle = TextFontStyle; + this.ModelOrDraughting = ModelOrDraughting; + this.type = 1447204868; + } + } + IFC4X32.IfcTextStyle = IfcTextStyle; + class IfcTextStyleForDefinedFont extends IfcPresentationItem { + constructor(Colour, BackgroundColour) { + super(); + this.Colour = Colour; + this.BackgroundColour = BackgroundColour; + this.type = 2636378356; + } + } + IFC4X32.IfcTextStyleForDefinedFont = IfcTextStyleForDefinedFont; + class IfcTextStyleTextModel extends IfcPresentationItem { + constructor(TextIndent, TextAlign, TextDecoration, LetterSpacing, WordSpacing, TextTransform, LineHeight) { + super(); + this.TextIndent = TextIndent; + this.TextAlign = TextAlign; + this.TextDecoration = TextDecoration; + this.LetterSpacing = LetterSpacing; + this.WordSpacing = WordSpacing; + this.TextTransform = TextTransform; + this.LineHeight = LineHeight; + this.type = 1640371178; + } + } + IFC4X32.IfcTextStyleTextModel = IfcTextStyleTextModel; + class IfcTextureCoordinate extends IfcPresentationItem { + constructor(Maps) { + super(); + this.Maps = Maps; + this.type = 280115917; + } + } + IFC4X32.IfcTextureCoordinate = IfcTextureCoordinate; + class IfcTextureCoordinateGenerator extends IfcTextureCoordinate { + constructor(Maps, Mode, Parameter) { + super(Maps); + this.Maps = Maps; + this.Mode = Mode; + this.Parameter = Parameter; + this.type = 1742049831; + } + } + IFC4X32.IfcTextureCoordinateGenerator = IfcTextureCoordinateGenerator; + class IfcTextureCoordinateIndices extends IfcLineObject { + constructor(TexCoordIndex, TexCoordsOf) { + super(); + this.TexCoordIndex = TexCoordIndex; + this.TexCoordsOf = TexCoordsOf; + this.type = 222769930; + } + } + IFC4X32.IfcTextureCoordinateIndices = IfcTextureCoordinateIndices; + class IfcTextureCoordinateIndicesWithVoids extends IfcTextureCoordinateIndices { + constructor(TexCoordIndex, TexCoordsOf, InnerTexCoordIndices) { + super(TexCoordIndex, TexCoordsOf); + this.TexCoordIndex = TexCoordIndex; + this.TexCoordsOf = TexCoordsOf; + this.InnerTexCoordIndices = InnerTexCoordIndices; + this.type = 1010789467; + } + } + IFC4X32.IfcTextureCoordinateIndicesWithVoids = IfcTextureCoordinateIndicesWithVoids; + class IfcTextureMap extends IfcTextureCoordinate { + constructor(Maps, Vertices, MappedTo) { + super(Maps); + this.Maps = Maps; + this.Vertices = Vertices; + this.MappedTo = MappedTo; + this.type = 2552916305; + } + } + IFC4X32.IfcTextureMap = IfcTextureMap; + class IfcTextureVertex extends IfcPresentationItem { + constructor(Coordinates) { + super(); + this.Coordinates = Coordinates; + this.type = 1210645708; + } + } + IFC4X32.IfcTextureVertex = IfcTextureVertex; + class IfcTextureVertexList extends IfcPresentationItem { + constructor(TexCoordsList) { + super(); + this.TexCoordsList = TexCoordsList; + this.type = 3611470254; + } + } + IFC4X32.IfcTextureVertexList = IfcTextureVertexList; + class IfcTimePeriod extends IfcLineObject { + constructor(StartTime, EndTime) { + super(); + this.StartTime = StartTime; + this.EndTime = EndTime; + this.type = 1199560280; + } + } + IFC4X32.IfcTimePeriod = IfcTimePeriod; + class IfcTimeSeries extends IfcLineObject { + constructor(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit) { + super(); + this.Name = Name; + this.Description = Description; + this.StartTime = StartTime; + this.EndTime = EndTime; + this.TimeSeriesDataType = TimeSeriesDataType; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.Unit = Unit; + this.type = 3101149627; + } + } + IFC4X32.IfcTimeSeries = IfcTimeSeries; + class IfcTimeSeriesValue extends IfcLineObject { + constructor(ListValues) { + super(); + this.ListValues = ListValues; + this.type = 581633288; + } + } + IFC4X32.IfcTimeSeriesValue = IfcTimeSeriesValue; + class IfcTopologicalRepresentationItem extends IfcRepresentationItem { + constructor() { + super(); + this.type = 1377556343; + } + } + IFC4X32.IfcTopologicalRepresentationItem = IfcTopologicalRepresentationItem; + class IfcTopologyRepresentation extends IfcShapeModel { + constructor(ContextOfItems, RepresentationIdentifier, RepresentationType, Items) { + super(ContextOfItems, RepresentationIdentifier, RepresentationType, Items); + this.ContextOfItems = ContextOfItems; + this.RepresentationIdentifier = RepresentationIdentifier; + this.RepresentationType = RepresentationType; + this.Items = Items; + this.type = 1735638870; + } + } + IFC4X32.IfcTopologyRepresentation = IfcTopologyRepresentation; + class IfcUnitAssignment extends IfcLineObject { + constructor(Units) { + super(); + this.Units = Units; + this.type = 180925521; + } + } + IFC4X32.IfcUnitAssignment = IfcUnitAssignment; + class IfcVertex extends IfcTopologicalRepresentationItem { + constructor() { + super(); + this.type = 2799835756; + } + } + IFC4X32.IfcVertex = IfcVertex; + class IfcVertexPoint extends IfcVertex { + constructor(VertexGeometry) { + super(); + this.VertexGeometry = VertexGeometry; + this.type = 1907098498; + } + } + IFC4X32.IfcVertexPoint = IfcVertexPoint; + class IfcVirtualGridIntersection extends IfcLineObject { + constructor(IntersectingAxes, OffsetDistances) { + super(); + this.IntersectingAxes = IntersectingAxes; + this.OffsetDistances = OffsetDistances; + this.type = 891718957; + } + } + IFC4X32.IfcVirtualGridIntersection = IfcVirtualGridIntersection; + class IfcWellKnownText extends IfcLineObject { + constructor(WellKnownText, CoordinateReferenceSystem) { + super(); + this.WellKnownText = WellKnownText; + this.CoordinateReferenceSystem = CoordinateReferenceSystem; + this.type = 1175146630; + } + } + IFC4X32.IfcWellKnownText = IfcWellKnownText; + class IfcWorkTime extends IfcSchedulingTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, RecurrencePattern, StartDate, FinishDate) { + super(Name, DataOrigin, UserDefinedDataOrigin); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.RecurrencePattern = RecurrencePattern; + this.StartDate = StartDate; + this.FinishDate = FinishDate; + this.type = 1236880293; + } + } + IFC4X32.IfcWorkTime = IfcWorkTime; + class IfcAlignmentCantSegment extends IfcAlignmentParameterSegment { + constructor(StartTag, EndTag, StartDistAlong, HorizontalLength, StartCantLeft, EndCantLeft, StartCantRight, EndCantRight, PredefinedType) { + super(StartTag, EndTag); + this.StartTag = StartTag; + this.EndTag = EndTag; + this.StartDistAlong = StartDistAlong; + this.HorizontalLength = HorizontalLength; + this.StartCantLeft = StartCantLeft; + this.EndCantLeft = EndCantLeft; + this.StartCantRight = StartCantRight; + this.EndCantRight = EndCantRight; + this.PredefinedType = PredefinedType; + this.type = 3752311538; + } + } + IFC4X32.IfcAlignmentCantSegment = IfcAlignmentCantSegment; + class IfcAlignmentHorizontalSegment extends IfcAlignmentParameterSegment { + constructor(StartTag, EndTag, StartPoint, StartDirection, StartRadiusOfCurvature, EndRadiusOfCurvature, SegmentLength, GravityCenterLineHeight, PredefinedType) { + super(StartTag, EndTag); + this.StartTag = StartTag; + this.EndTag = EndTag; + this.StartPoint = StartPoint; + this.StartDirection = StartDirection; + this.StartRadiusOfCurvature = StartRadiusOfCurvature; + this.EndRadiusOfCurvature = EndRadiusOfCurvature; + this.SegmentLength = SegmentLength; + this.GravityCenterLineHeight = GravityCenterLineHeight; + this.PredefinedType = PredefinedType; + this.type = 536804194; + } + } + IFC4X32.IfcAlignmentHorizontalSegment = IfcAlignmentHorizontalSegment; + class IfcApprovalRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingApproval, RelatedApprovals) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingApproval = RelatingApproval; + this.RelatedApprovals = RelatedApprovals; + this.type = 3869604511; + } + } + IFC4X32.IfcApprovalRelationship = IfcApprovalRelationship; + class IfcArbitraryClosedProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, OuterCurve) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.OuterCurve = OuterCurve; + this.type = 3798115385; + } + } + IFC4X32.IfcArbitraryClosedProfileDef = IfcArbitraryClosedProfileDef; + class IfcArbitraryOpenProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, Curve) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Curve = Curve; + this.type = 1310608509; + } + } + IFC4X32.IfcArbitraryOpenProfileDef = IfcArbitraryOpenProfileDef; + class IfcArbitraryProfileDefWithVoids extends IfcArbitraryClosedProfileDef { + constructor(ProfileType, ProfileName, OuterCurve, InnerCurves) { + super(ProfileType, ProfileName, OuterCurve); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.OuterCurve = OuterCurve; + this.InnerCurves = InnerCurves; + this.type = 2705031697; + } + } + IFC4X32.IfcArbitraryProfileDefWithVoids = IfcArbitraryProfileDefWithVoids; + class IfcBlobTexture extends IfcSurfaceTexture { + constructor(RepeatS, RepeatT, Mode, TextureTransform, Parameter, RasterFormat, RasterCode) { + super(RepeatS, RepeatT, Mode, TextureTransform, Parameter); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.Mode = Mode; + this.TextureTransform = TextureTransform; + this.Parameter = Parameter; + this.RasterFormat = RasterFormat; + this.RasterCode = RasterCode; + this.type = 616511568; + } + } + IFC4X32.IfcBlobTexture = IfcBlobTexture; + class IfcCenterLineProfileDef extends IfcArbitraryOpenProfileDef { + constructor(ProfileType, ProfileName, Curve, Thickness) { + super(ProfileType, ProfileName, Curve); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Curve = Curve; + this.Thickness = Thickness; + this.type = 3150382593; + } + } + IFC4X32.IfcCenterLineProfileDef = IfcCenterLineProfileDef; + class IfcClassification extends IfcExternalInformation { + constructor(Source2, Edition, EditionDate, Name, Description, Specification, ReferenceTokens) { + super(); + this.Source = Source2; + this.Edition = Edition; + this.EditionDate = EditionDate; + this.Name = Name; + this.Description = Description; + this.Specification = Specification; + this.ReferenceTokens = ReferenceTokens; + this.type = 747523909; + } + } + IFC4X32.IfcClassification = IfcClassification; + class IfcClassificationReference extends IfcExternalReference { + constructor(Location, Identification, Name, ReferencedSource, Description, Sort) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.ReferencedSource = ReferencedSource; + this.Description = Description; + this.Sort = Sort; + this.type = 647927063; + } + } + IFC4X32.IfcClassificationReference = IfcClassificationReference; + class IfcColourRgbList extends IfcPresentationItem { + constructor(ColourList) { + super(); + this.ColourList = ColourList; + this.type = 3285139300; + } + } + IFC4X32.IfcColourRgbList = IfcColourRgbList; + class IfcColourSpecification extends IfcPresentationItem { + constructor(Name) { + super(); + this.Name = Name; + this.type = 3264961684; + } + } + IFC4X32.IfcColourSpecification = IfcColourSpecification; + class IfcCompositeProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, Profiles, Label) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Profiles = Profiles; + this.Label = Label; + this.type = 1485152156; + } + } + IFC4X32.IfcCompositeProfileDef = IfcCompositeProfileDef; + class IfcConnectedFaceSet extends IfcTopologicalRepresentationItem { + constructor(CfsFaces) { + super(); + this.CfsFaces = CfsFaces; + this.type = 370225590; + } + } + IFC4X32.IfcConnectedFaceSet = IfcConnectedFaceSet; + class IfcConnectionCurveGeometry extends IfcConnectionGeometry { + constructor(CurveOnRelatingElement, CurveOnRelatedElement) { + super(); + this.CurveOnRelatingElement = CurveOnRelatingElement; + this.CurveOnRelatedElement = CurveOnRelatedElement; + this.type = 1981873012; + } + } + IFC4X32.IfcConnectionCurveGeometry = IfcConnectionCurveGeometry; + class IfcConnectionPointEccentricity extends IfcConnectionPointGeometry { + constructor(PointOnRelatingElement, PointOnRelatedElement, EccentricityInX, EccentricityInY, EccentricityInZ) { + super(PointOnRelatingElement, PointOnRelatedElement); + this.PointOnRelatingElement = PointOnRelatingElement; + this.PointOnRelatedElement = PointOnRelatedElement; + this.EccentricityInX = EccentricityInX; + this.EccentricityInY = EccentricityInY; + this.EccentricityInZ = EccentricityInZ; + this.type = 45288368; + } + } + IFC4X32.IfcConnectionPointEccentricity = IfcConnectionPointEccentricity; + class IfcContextDependentUnit extends IfcNamedUnit { + constructor(Dimensions, UnitType, Name) { + super(Dimensions, UnitType); + this.Dimensions = Dimensions; + this.UnitType = UnitType; + this.Name = Name; + this.type = 3050246964; + } + } + IFC4X32.IfcContextDependentUnit = IfcContextDependentUnit; + class IfcConversionBasedUnit extends IfcNamedUnit { + constructor(Dimensions, UnitType, Name, ConversionFactor) { + super(Dimensions, UnitType); + this.Dimensions = Dimensions; + this.UnitType = UnitType; + this.Name = Name; + this.ConversionFactor = ConversionFactor; + this.type = 2889183280; + } + } + IFC4X32.IfcConversionBasedUnit = IfcConversionBasedUnit; + class IfcConversionBasedUnitWithOffset extends IfcConversionBasedUnit { + constructor(Dimensions, UnitType, Name, ConversionFactor, ConversionOffset) { + super(Dimensions, UnitType, Name, ConversionFactor); + this.Dimensions = Dimensions; + this.UnitType = UnitType; + this.Name = Name; + this.ConversionFactor = ConversionFactor; + this.ConversionOffset = ConversionOffset; + this.type = 2713554722; + } + } + IFC4X32.IfcConversionBasedUnitWithOffset = IfcConversionBasedUnitWithOffset; + class IfcCurrencyRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingMonetaryUnit, RelatedMonetaryUnit, ExchangeRate, RateDateTime, RateSource) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingMonetaryUnit = RelatingMonetaryUnit; + this.RelatedMonetaryUnit = RelatedMonetaryUnit; + this.ExchangeRate = ExchangeRate; + this.RateDateTime = RateDateTime; + this.RateSource = RateSource; + this.type = 539742890; + } + } + IFC4X32.IfcCurrencyRelationship = IfcCurrencyRelationship; + class IfcCurveStyle extends IfcPresentationStyle { + constructor(Name, CurveFont, CurveWidth, CurveColour, ModelOrDraughting) { + super(Name); + this.Name = Name; + this.CurveFont = CurveFont; + this.CurveWidth = CurveWidth; + this.CurveColour = CurveColour; + this.ModelOrDraughting = ModelOrDraughting; + this.type = 3800577675; + } + } + IFC4X32.IfcCurveStyle = IfcCurveStyle; + class IfcCurveStyleFont extends IfcPresentationItem { + constructor(Name, PatternList) { + super(); + this.Name = Name; + this.PatternList = PatternList; + this.type = 1105321065; + } + } + IFC4X32.IfcCurveStyleFont = IfcCurveStyleFont; + class IfcCurveStyleFontAndScaling extends IfcPresentationItem { + constructor(Name, CurveStyleFont, CurveFontScaling) { + super(); + this.Name = Name; + this.CurveStyleFont = CurveStyleFont; + this.CurveFontScaling = CurveFontScaling; + this.type = 2367409068; + } + } + IFC4X32.IfcCurveStyleFontAndScaling = IfcCurveStyleFontAndScaling; + class IfcCurveStyleFontPattern extends IfcPresentationItem { + constructor(VisibleSegmentLength, InvisibleSegmentLength) { + super(); + this.VisibleSegmentLength = VisibleSegmentLength; + this.InvisibleSegmentLength = InvisibleSegmentLength; + this.type = 3510044353; + } + } + IFC4X32.IfcCurveStyleFontPattern = IfcCurveStyleFontPattern; + class IfcDerivedProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, ParentProfile, Operator, Label) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.ParentProfile = ParentProfile; + this.Operator = Operator; + this.Label = Label; + this.type = 3632507154; + } + } + IFC4X32.IfcDerivedProfileDef = IfcDerivedProfileDef; + class IfcDocumentInformation extends IfcExternalInformation { + constructor(Identification, Name, Description, Location, Purpose, IntendedUse, Scope, Revision, DocumentOwner, Editors, CreationTime, LastRevisionTime, ElectronicFormat, ValidFrom, ValidUntil, Confidentiality, Status) { + super(); + this.Identification = Identification; + this.Name = Name; + this.Description = Description; + this.Location = Location; + this.Purpose = Purpose; + this.IntendedUse = IntendedUse; + this.Scope = Scope; + this.Revision = Revision; + this.DocumentOwner = DocumentOwner; + this.Editors = Editors; + this.CreationTime = CreationTime; + this.LastRevisionTime = LastRevisionTime; + this.ElectronicFormat = ElectronicFormat; + this.ValidFrom = ValidFrom; + this.ValidUntil = ValidUntil; + this.Confidentiality = Confidentiality; + this.Status = Status; + this.type = 1154170062; + } + } + IFC4X32.IfcDocumentInformation = IfcDocumentInformation; + class IfcDocumentInformationRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingDocument, RelatedDocuments, RelationshipType) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingDocument = RelatingDocument; + this.RelatedDocuments = RelatedDocuments; + this.RelationshipType = RelationshipType; + this.type = 770865208; + } + } + IFC4X32.IfcDocumentInformationRelationship = IfcDocumentInformationRelationship; + class IfcDocumentReference extends IfcExternalReference { + constructor(Location, Identification, Name, Description, ReferencedDocument) { + super(Location, Identification, Name); + this.Location = Location; + this.Identification = Identification; + this.Name = Name; + this.Description = Description; + this.ReferencedDocument = ReferencedDocument; + this.type = 3732053477; + } + } + IFC4X32.IfcDocumentReference = IfcDocumentReference; + class IfcEdge extends IfcTopologicalRepresentationItem { + constructor(EdgeStart, EdgeEnd) { + super(); + this.EdgeStart = EdgeStart; + this.EdgeEnd = EdgeEnd; + this.type = 3900360178; + } + } + IFC4X32.IfcEdge = IfcEdge; + class IfcEdgeCurve extends IfcEdge { + constructor(EdgeStart, EdgeEnd, EdgeGeometry, SameSense) { + super(EdgeStart, EdgeEnd); + this.EdgeStart = EdgeStart; + this.EdgeEnd = EdgeEnd; + this.EdgeGeometry = EdgeGeometry; + this.SameSense = SameSense; + this.type = 476780140; + } + } + IFC4X32.IfcEdgeCurve = IfcEdgeCurve; + class IfcEventTime extends IfcSchedulingTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, ActualDate, EarlyDate, LateDate, ScheduleDate) { + super(Name, DataOrigin, UserDefinedDataOrigin); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.ActualDate = ActualDate; + this.EarlyDate = EarlyDate; + this.LateDate = LateDate; + this.ScheduleDate = ScheduleDate; + this.type = 211053100; + } + } + IFC4X32.IfcEventTime = IfcEventTime; + class IfcExtendedProperties extends IfcPropertyAbstraction { + constructor(Name, Description, Properties2) { + super(); + this.Name = Name; + this.Description = Description; + this.Properties = Properties2; + this.type = 297599258; + } + } + IFC4X32.IfcExtendedProperties = IfcExtendedProperties; + class IfcExternalReferenceRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingReference, RelatedResourceObjects) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingReference = RelatingReference; + this.RelatedResourceObjects = RelatedResourceObjects; + this.type = 1437805879; + } + } + IFC4X32.IfcExternalReferenceRelationship = IfcExternalReferenceRelationship; + class IfcFace extends IfcTopologicalRepresentationItem { + constructor(Bounds) { + super(); + this.Bounds = Bounds; + this.type = 2556980723; + } + } + IFC4X32.IfcFace = IfcFace; + class IfcFaceBound extends IfcTopologicalRepresentationItem { + constructor(Bound, Orientation) { + super(); + this.Bound = Bound; + this.Orientation = Orientation; + this.type = 1809719519; + } + } + IFC4X32.IfcFaceBound = IfcFaceBound; + class IfcFaceOuterBound extends IfcFaceBound { + constructor(Bound, Orientation) { + super(Bound, Orientation); + this.Bound = Bound; + this.Orientation = Orientation; + this.type = 803316827; + } + } + IFC4X32.IfcFaceOuterBound = IfcFaceOuterBound; + class IfcFaceSurface extends IfcFace { + constructor(Bounds, FaceSurface, SameSense) { + super(Bounds); + this.Bounds = Bounds; + this.FaceSurface = FaceSurface; + this.SameSense = SameSense; + this.type = 3008276851; + } + } + IFC4X32.IfcFaceSurface = IfcFaceSurface; + class IfcFailureConnectionCondition extends IfcStructuralConnectionCondition { + constructor(Name, TensionFailureX, TensionFailureY, TensionFailureZ, CompressionFailureX, CompressionFailureY, CompressionFailureZ) { + super(Name); + this.Name = Name; + this.TensionFailureX = TensionFailureX; + this.TensionFailureY = TensionFailureY; + this.TensionFailureZ = TensionFailureZ; + this.CompressionFailureX = CompressionFailureX; + this.CompressionFailureY = CompressionFailureY; + this.CompressionFailureZ = CompressionFailureZ; + this.type = 4219587988; + } + } + IFC4X32.IfcFailureConnectionCondition = IfcFailureConnectionCondition; + class IfcFillAreaStyle extends IfcPresentationStyle { + constructor(Name, FillStyles, ModelOrDraughting) { + super(Name); + this.Name = Name; + this.FillStyles = FillStyles; + this.ModelOrDraughting = ModelOrDraughting; + this.type = 738692330; + } + } + IFC4X32.IfcFillAreaStyle = IfcFillAreaStyle; + class IfcGeometricRepresentationContext extends IfcRepresentationContext { + constructor(ContextIdentifier, ContextType, CoordinateSpaceDimension, Precision, WorldCoordinateSystem, TrueNorth) { + super(ContextIdentifier, ContextType); + this.ContextIdentifier = ContextIdentifier; + this.ContextType = ContextType; + this.CoordinateSpaceDimension = CoordinateSpaceDimension; + this.Precision = Precision; + this.WorldCoordinateSystem = WorldCoordinateSystem; + this.TrueNorth = TrueNorth; + this.type = 3448662350; + } + } + IFC4X32.IfcGeometricRepresentationContext = IfcGeometricRepresentationContext; + class IfcGeometricRepresentationItem extends IfcRepresentationItem { + constructor() { + super(); + this.type = 2453401579; + } + } + IFC4X32.IfcGeometricRepresentationItem = IfcGeometricRepresentationItem; + class IfcGeometricRepresentationSubContext extends IfcGeometricRepresentationContext { + constructor(ContextIdentifier, ContextType, ParentContext, TargetScale, TargetView, UserDefinedTargetView) { + super(ContextIdentifier, ContextType, new IfcDimensionCount(0), null, new Handle(0), null); + this.ContextIdentifier = ContextIdentifier; + this.ContextType = ContextType; + this.ParentContext = ParentContext; + this.TargetScale = TargetScale; + this.TargetView = TargetView; + this.UserDefinedTargetView = UserDefinedTargetView; + this.type = 4142052618; + } + } + IFC4X32.IfcGeometricRepresentationSubContext = IfcGeometricRepresentationSubContext; + class IfcGeometricSet extends IfcGeometricRepresentationItem { + constructor(Elements) { + super(); + this.Elements = Elements; + this.type = 3590301190; + } + } + IFC4X32.IfcGeometricSet = IfcGeometricSet; + class IfcGridPlacement extends IfcObjectPlacement { + constructor(PlacementRelTo, PlacementLocation, PlacementRefDirection) { + super(PlacementRelTo); + this.PlacementRelTo = PlacementRelTo; + this.PlacementLocation = PlacementLocation; + this.PlacementRefDirection = PlacementRefDirection; + this.type = 178086475; + } + } + IFC4X32.IfcGridPlacement = IfcGridPlacement; + class IfcHalfSpaceSolid extends IfcGeometricRepresentationItem { + constructor(BaseSurface, AgreementFlag) { + super(); + this.BaseSurface = BaseSurface; + this.AgreementFlag = AgreementFlag; + this.type = 812098782; + } + } + IFC4X32.IfcHalfSpaceSolid = IfcHalfSpaceSolid; + class IfcImageTexture extends IfcSurfaceTexture { + constructor(RepeatS, RepeatT, Mode, TextureTransform, Parameter, URLReference) { + super(RepeatS, RepeatT, Mode, TextureTransform, Parameter); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.Mode = Mode; + this.TextureTransform = TextureTransform; + this.Parameter = Parameter; + this.URLReference = URLReference; + this.type = 3905492369; + } + } + IFC4X32.IfcImageTexture = IfcImageTexture; + class IfcIndexedColourMap extends IfcPresentationItem { + constructor(MappedTo, Opacity, Colours, ColourIndex) { + super(); + this.MappedTo = MappedTo; + this.Opacity = Opacity; + this.Colours = Colours; + this.ColourIndex = ColourIndex; + this.type = 3570813810; + } + } + IFC4X32.IfcIndexedColourMap = IfcIndexedColourMap; + class IfcIndexedTextureMap extends IfcTextureCoordinate { + constructor(Maps, MappedTo, TexCoords) { + super(Maps); + this.Maps = Maps; + this.MappedTo = MappedTo; + this.TexCoords = TexCoords; + this.type = 1437953363; + } + } + IFC4X32.IfcIndexedTextureMap = IfcIndexedTextureMap; + class IfcIndexedTriangleTextureMap extends IfcIndexedTextureMap { + constructor(Maps, MappedTo, TexCoords, TexCoordIndex) { + super(Maps, MappedTo, TexCoords); + this.Maps = Maps; + this.MappedTo = MappedTo; + this.TexCoords = TexCoords; + this.TexCoordIndex = TexCoordIndex; + this.type = 2133299955; + } + } + IFC4X32.IfcIndexedTriangleTextureMap = IfcIndexedTriangleTextureMap; + class IfcIrregularTimeSeries extends IfcTimeSeries { + constructor(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit, Values) { + super(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit); + this.Name = Name; + this.Description = Description; + this.StartTime = StartTime; + this.EndTime = EndTime; + this.TimeSeriesDataType = TimeSeriesDataType; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.Unit = Unit; + this.Values = Values; + this.type = 3741457305; + } + } + IFC4X32.IfcIrregularTimeSeries = IfcIrregularTimeSeries; + class IfcLagTime extends IfcSchedulingTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, LagValue, DurationType) { + super(Name, DataOrigin, UserDefinedDataOrigin); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.LagValue = LagValue; + this.DurationType = DurationType; + this.type = 1585845231; + } + } + IFC4X32.IfcLagTime = IfcLagTime; + class IfcLightSource extends IfcGeometricRepresentationItem { + constructor(Name, LightColour, AmbientIntensity, Intensity) { + super(); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.type = 1402838566; + } + } + IFC4X32.IfcLightSource = IfcLightSource; + class IfcLightSourceAmbient extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.type = 125510826; + } + } + IFC4X32.IfcLightSourceAmbient = IfcLightSourceAmbient; + class IfcLightSourceDirectional extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity, Orientation) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Orientation = Orientation; + this.type = 2604431987; + } + } + IFC4X32.IfcLightSourceDirectional = IfcLightSourceDirectional; + class IfcLightSourceGoniometric extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity, Position, ColourAppearance, ColourTemperature, LuminousFlux, LightEmissionSource, LightDistributionDataSource) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Position = Position; + this.ColourAppearance = ColourAppearance; + this.ColourTemperature = ColourTemperature; + this.LuminousFlux = LuminousFlux; + this.LightEmissionSource = LightEmissionSource; + this.LightDistributionDataSource = LightDistributionDataSource; + this.type = 4266656042; + } + } + IFC4X32.IfcLightSourceGoniometric = IfcLightSourceGoniometric; + class IfcLightSourcePositional extends IfcLightSource { + constructor(Name, LightColour, AmbientIntensity, Intensity, Position, Radius, ConstantAttenuation, DistanceAttenuation, QuadricAttenuation) { + super(Name, LightColour, AmbientIntensity, Intensity); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Position = Position; + this.Radius = Radius; + this.ConstantAttenuation = ConstantAttenuation; + this.DistanceAttenuation = DistanceAttenuation; + this.QuadricAttenuation = QuadricAttenuation; + this.type = 1520743889; + } + } + IFC4X32.IfcLightSourcePositional = IfcLightSourcePositional; + class IfcLightSourceSpot extends IfcLightSourcePositional { + constructor(Name, LightColour, AmbientIntensity, Intensity, Position, Radius, ConstantAttenuation, DistanceAttenuation, QuadricAttenuation, Orientation, ConcentrationExponent, SpreadAngle, BeamWidthAngle) { + super(Name, LightColour, AmbientIntensity, Intensity, Position, Radius, ConstantAttenuation, DistanceAttenuation, QuadricAttenuation); + this.Name = Name; + this.LightColour = LightColour; + this.AmbientIntensity = AmbientIntensity; + this.Intensity = Intensity; + this.Position = Position; + this.Radius = Radius; + this.ConstantAttenuation = ConstantAttenuation; + this.DistanceAttenuation = DistanceAttenuation; + this.QuadricAttenuation = QuadricAttenuation; + this.Orientation = Orientation; + this.ConcentrationExponent = ConcentrationExponent; + this.SpreadAngle = SpreadAngle; + this.BeamWidthAngle = BeamWidthAngle; + this.type = 3422422726; + } + } + IFC4X32.IfcLightSourceSpot = IfcLightSourceSpot; + class IfcLinearPlacement extends IfcObjectPlacement { + constructor(PlacementRelTo, RelativePlacement, CartesianPosition) { + super(PlacementRelTo); + this.PlacementRelTo = PlacementRelTo; + this.RelativePlacement = RelativePlacement; + this.CartesianPosition = CartesianPosition; + this.type = 388784114; + } + } + IFC4X32.IfcLinearPlacement = IfcLinearPlacement; + class IfcLocalPlacement extends IfcObjectPlacement { + constructor(PlacementRelTo, RelativePlacement) { + super(PlacementRelTo); + this.PlacementRelTo = PlacementRelTo; + this.RelativePlacement = RelativePlacement; + this.type = 2624227202; + } + } + IFC4X32.IfcLocalPlacement = IfcLocalPlacement; + class IfcLoop extends IfcTopologicalRepresentationItem { + constructor() { + super(); + this.type = 1008929658; + } + } + IFC4X32.IfcLoop = IfcLoop; + class IfcMappedItem extends IfcRepresentationItem { + constructor(MappingSource, MappingTarget) { + super(); + this.MappingSource = MappingSource; + this.MappingTarget = MappingTarget; + this.type = 2347385850; + } + } + IFC4X32.IfcMappedItem = IfcMappedItem; + class IfcMaterial extends IfcMaterialDefinition { + constructor(Name, Description, Category) { + super(); + this.Name = Name; + this.Description = Description; + this.Category = Category; + this.type = 1838606355; + } + } + IFC4X32.IfcMaterial = IfcMaterial; + class IfcMaterialConstituent extends IfcMaterialDefinition { + constructor(Name, Description, Material3, Fraction, Category) { + super(); + this.Name = Name; + this.Description = Description; + this.Material = Material3; + this.Fraction = Fraction; + this.Category = Category; + this.type = 3708119e3; + } + } + IFC4X32.IfcMaterialConstituent = IfcMaterialConstituent; + class IfcMaterialConstituentSet extends IfcMaterialDefinition { + constructor(Name, Description, MaterialConstituents) { + super(); + this.Name = Name; + this.Description = Description; + this.MaterialConstituents = MaterialConstituents; + this.type = 2852063980; + } + } + IFC4X32.IfcMaterialConstituentSet = IfcMaterialConstituentSet; + class IfcMaterialDefinitionRepresentation extends IfcProductRepresentation { + constructor(Name, Description, Representations, RepresentedMaterial) { + super(Name, Description, Representations); + this.Name = Name; + this.Description = Description; + this.Representations = Representations; + this.RepresentedMaterial = RepresentedMaterial; + this.type = 2022407955; + } + } + IFC4X32.IfcMaterialDefinitionRepresentation = IfcMaterialDefinitionRepresentation; + class IfcMaterialLayerSetUsage extends IfcMaterialUsageDefinition { + constructor(ForLayerSet, LayerSetDirection, DirectionSense, OffsetFromReferenceLine, ReferenceExtent) { + super(); + this.ForLayerSet = ForLayerSet; + this.LayerSetDirection = LayerSetDirection; + this.DirectionSense = DirectionSense; + this.OffsetFromReferenceLine = OffsetFromReferenceLine; + this.ReferenceExtent = ReferenceExtent; + this.type = 1303795690; + } + } + IFC4X32.IfcMaterialLayerSetUsage = IfcMaterialLayerSetUsage; + class IfcMaterialProfileSetUsage extends IfcMaterialUsageDefinition { + constructor(ForProfileSet, CardinalPoint, ReferenceExtent) { + super(); + this.ForProfileSet = ForProfileSet; + this.CardinalPoint = CardinalPoint; + this.ReferenceExtent = ReferenceExtent; + this.type = 3079605661; + } + } + IFC4X32.IfcMaterialProfileSetUsage = IfcMaterialProfileSetUsage; + class IfcMaterialProfileSetUsageTapering extends IfcMaterialProfileSetUsage { + constructor(ForProfileSet, CardinalPoint, ReferenceExtent, ForProfileEndSet, CardinalEndPoint) { + super(ForProfileSet, CardinalPoint, ReferenceExtent); + this.ForProfileSet = ForProfileSet; + this.CardinalPoint = CardinalPoint; + this.ReferenceExtent = ReferenceExtent; + this.ForProfileEndSet = ForProfileEndSet; + this.CardinalEndPoint = CardinalEndPoint; + this.type = 3404854881; + } + } + IFC4X32.IfcMaterialProfileSetUsageTapering = IfcMaterialProfileSetUsageTapering; + class IfcMaterialProperties extends IfcExtendedProperties { + constructor(Name, Description, Properties2, Material3) { + super(Name, Description, Properties2); + this.Name = Name; + this.Description = Description; + this.Properties = Properties2; + this.Material = Material3; + this.type = 3265635763; + } + } + IFC4X32.IfcMaterialProperties = IfcMaterialProperties; + class IfcMaterialRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingMaterial, RelatedMaterials, MaterialExpression) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingMaterial = RelatingMaterial; + this.RelatedMaterials = RelatedMaterials; + this.MaterialExpression = MaterialExpression; + this.type = 853536259; + } + } + IFC4X32.IfcMaterialRelationship = IfcMaterialRelationship; + class IfcMirroredProfileDef extends IfcDerivedProfileDef { + constructor(ProfileType, ProfileName, ParentProfile, Label) { + super(ProfileType, ProfileName, ParentProfile, new Handle(0), Label); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.ParentProfile = ParentProfile; + this.Label = Label; + this.type = 2998442950; + } + } + IFC4X32.IfcMirroredProfileDef = IfcMirroredProfileDef; + class IfcObjectDefinition extends IfcRoot { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 219451334; + } + } + IFC4X32.IfcObjectDefinition = IfcObjectDefinition; + class IfcOpenCrossProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, HorizontalWidths, Widths, Slopes, Tags, OffsetPoint) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.HorizontalWidths = HorizontalWidths; + this.Widths = Widths; + this.Slopes = Slopes; + this.Tags = Tags; + this.OffsetPoint = OffsetPoint; + this.type = 182550632; + } + } + IFC4X32.IfcOpenCrossProfileDef = IfcOpenCrossProfileDef; + class IfcOpenShell extends IfcConnectedFaceSet { + constructor(CfsFaces) { + super(CfsFaces); + this.CfsFaces = CfsFaces; + this.type = 2665983363; + } + } + IFC4X32.IfcOpenShell = IfcOpenShell; + class IfcOrganizationRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingOrganization, RelatedOrganizations) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingOrganization = RelatingOrganization; + this.RelatedOrganizations = RelatedOrganizations; + this.type = 1411181986; + } + } + IFC4X32.IfcOrganizationRelationship = IfcOrganizationRelationship; + class IfcOrientedEdge extends IfcEdge { + constructor(EdgeElement, Orientation) { + super(new Handle(0), new Handle(0)); + this.EdgeElement = EdgeElement; + this.Orientation = Orientation; + this.type = 1029017970; + } + } + IFC4X32.IfcOrientedEdge = IfcOrientedEdge; + class IfcParameterizedProfileDef extends IfcProfileDef { + constructor(ProfileType, ProfileName, Position) { + super(ProfileType, ProfileName); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.type = 2529465313; + } + } + IFC4X32.IfcParameterizedProfileDef = IfcParameterizedProfileDef; + class IfcPath extends IfcTopologicalRepresentationItem { + constructor(EdgeList) { + super(); + this.EdgeList = EdgeList; + this.type = 2519244187; + } + } + IFC4X32.IfcPath = IfcPath; + class IfcPhysicalComplexQuantity extends IfcPhysicalQuantity { + constructor(Name, Description, HasQuantities, Discrimination, Quality, Usage) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.HasQuantities = HasQuantities; + this.Discrimination = Discrimination; + this.Quality = Quality; + this.Usage = Usage; + this.type = 3021840470; + } + } + IFC4X32.IfcPhysicalComplexQuantity = IfcPhysicalComplexQuantity; + class IfcPixelTexture extends IfcSurfaceTexture { + constructor(RepeatS, RepeatT, Mode, TextureTransform, Parameter, Width, Height, ColourComponents, Pixel) { + super(RepeatS, RepeatT, Mode, TextureTransform, Parameter); + this.RepeatS = RepeatS; + this.RepeatT = RepeatT; + this.Mode = Mode; + this.TextureTransform = TextureTransform; + this.Parameter = Parameter; + this.Width = Width; + this.Height = Height; + this.ColourComponents = ColourComponents; + this.Pixel = Pixel; + this.type = 597895409; + } + } + IFC4X32.IfcPixelTexture = IfcPixelTexture; + class IfcPlacement extends IfcGeometricRepresentationItem { + constructor(Location) { + super(); + this.Location = Location; + this.type = 2004835150; + } + } + IFC4X32.IfcPlacement = IfcPlacement; + class IfcPlanarExtent extends IfcGeometricRepresentationItem { + constructor(SizeInX, SizeInY) { + super(); + this.SizeInX = SizeInX; + this.SizeInY = SizeInY; + this.type = 1663979128; + } + } + IFC4X32.IfcPlanarExtent = IfcPlanarExtent; + class IfcPoint extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 2067069095; + } + } + IFC4X32.IfcPoint = IfcPoint; + class IfcPointByDistanceExpression extends IfcPoint { + constructor(DistanceAlong, OffsetLateral, OffsetVertical, OffsetLongitudinal, BasisCurve) { + super(); + this.DistanceAlong = DistanceAlong; + this.OffsetLateral = OffsetLateral; + this.OffsetVertical = OffsetVertical; + this.OffsetLongitudinal = OffsetLongitudinal; + this.BasisCurve = BasisCurve; + this.type = 2165702409; + } + } + IFC4X32.IfcPointByDistanceExpression = IfcPointByDistanceExpression; + class IfcPointOnCurve extends IfcPoint { + constructor(BasisCurve, PointParameter) { + super(); + this.BasisCurve = BasisCurve; + this.PointParameter = PointParameter; + this.type = 4022376103; + } + } + IFC4X32.IfcPointOnCurve = IfcPointOnCurve; + class IfcPointOnSurface extends IfcPoint { + constructor(BasisSurface, PointParameterU, PointParameterV) { + super(); + this.BasisSurface = BasisSurface; + this.PointParameterU = PointParameterU; + this.PointParameterV = PointParameterV; + this.type = 1423911732; + } + } + IFC4X32.IfcPointOnSurface = IfcPointOnSurface; + class IfcPolyLoop extends IfcLoop { + constructor(Polygon) { + super(); + this.Polygon = Polygon; + this.type = 2924175390; + } + } + IFC4X32.IfcPolyLoop = IfcPolyLoop; + class IfcPolygonalBoundedHalfSpace extends IfcHalfSpaceSolid { + constructor(BaseSurface, AgreementFlag, Position, PolygonalBoundary) { + super(BaseSurface, AgreementFlag); + this.BaseSurface = BaseSurface; + this.AgreementFlag = AgreementFlag; + this.Position = Position; + this.PolygonalBoundary = PolygonalBoundary; + this.type = 2775532180; + } + } + IFC4X32.IfcPolygonalBoundedHalfSpace = IfcPolygonalBoundedHalfSpace; + class IfcPreDefinedItem extends IfcPresentationItem { + constructor(Name) { + super(); + this.Name = Name; + this.type = 3727388367; + } + } + IFC4X32.IfcPreDefinedItem = IfcPreDefinedItem; + class IfcPreDefinedProperties extends IfcPropertyAbstraction { + constructor() { + super(); + this.type = 3778827333; + } + } + IFC4X32.IfcPreDefinedProperties = IfcPreDefinedProperties; + class IfcPreDefinedTextFont extends IfcPreDefinedItem { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 1775413392; + } + } + IFC4X32.IfcPreDefinedTextFont = IfcPreDefinedTextFont; + class IfcProductDefinitionShape extends IfcProductRepresentation { + constructor(Name, Description, Representations) { + super(Name, Description, Representations); + this.Name = Name; + this.Description = Description; + this.Representations = Representations; + this.type = 673634403; + } + } + IFC4X32.IfcProductDefinitionShape = IfcProductDefinitionShape; + class IfcProfileProperties extends IfcExtendedProperties { + constructor(Name, Description, Properties2, ProfileDefinition) { + super(Name, Description, Properties2); + this.Name = Name; + this.Description = Description; + this.Properties = Properties2; + this.ProfileDefinition = ProfileDefinition; + this.type = 2802850158; + } + } + IFC4X32.IfcProfileProperties = IfcProfileProperties; + class IfcProperty extends IfcPropertyAbstraction { + constructor(Name, Specification) { + super(); + this.Name = Name; + this.Specification = Specification; + this.type = 2598011224; + } + } + IFC4X32.IfcProperty = IfcProperty; + class IfcPropertyDefinition extends IfcRoot { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 1680319473; + } + } + IFC4X32.IfcPropertyDefinition = IfcPropertyDefinition; + class IfcPropertyDependencyRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, DependingProperty, DependantProperty, Expression) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.DependingProperty = DependingProperty; + this.DependantProperty = DependantProperty; + this.Expression = Expression; + this.type = 148025276; + } + } + IFC4X32.IfcPropertyDependencyRelationship = IfcPropertyDependencyRelationship; + class IfcPropertySetDefinition extends IfcPropertyDefinition { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 3357820518; + } + } + IFC4X32.IfcPropertySetDefinition = IfcPropertySetDefinition; + class IfcPropertyTemplateDefinition extends IfcPropertyDefinition { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 1482703590; + } + } + IFC4X32.IfcPropertyTemplateDefinition = IfcPropertyTemplateDefinition; + class IfcQuantitySet extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 2090586900; + } + } + IFC4X32.IfcQuantitySet = IfcQuantitySet; + class IfcRectangleProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, XDim, YDim) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.XDim = XDim; + this.YDim = YDim; + this.type = 3615266464; + } + } + IFC4X32.IfcRectangleProfileDef = IfcRectangleProfileDef; + class IfcRegularTimeSeries extends IfcTimeSeries { + constructor(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit, TimeStep, Values) { + super(Name, Description, StartTime, EndTime, TimeSeriesDataType, DataOrigin, UserDefinedDataOrigin, Unit); + this.Name = Name; + this.Description = Description; + this.StartTime = StartTime; + this.EndTime = EndTime; + this.TimeSeriesDataType = TimeSeriesDataType; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.Unit = Unit; + this.TimeStep = TimeStep; + this.Values = Values; + this.type = 3413951693; + } + } + IFC4X32.IfcRegularTimeSeries = IfcRegularTimeSeries; + class IfcReinforcementBarProperties extends IfcPreDefinedProperties { + constructor(TotalCrossSectionArea, SteelGrade, BarSurface, EffectiveDepth, NominalBarDiameter, BarCount) { + super(); + this.TotalCrossSectionArea = TotalCrossSectionArea; + this.SteelGrade = SteelGrade; + this.BarSurface = BarSurface; + this.EffectiveDepth = EffectiveDepth; + this.NominalBarDiameter = NominalBarDiameter; + this.BarCount = BarCount; + this.type = 1580146022; + } + } + IFC4X32.IfcReinforcementBarProperties = IfcReinforcementBarProperties; + class IfcRelationship extends IfcRoot { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 478536968; + } + } + IFC4X32.IfcRelationship = IfcRelationship; + class IfcResourceApprovalRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatedResourceObjects, RelatingApproval) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatedResourceObjects = RelatedResourceObjects; + this.RelatingApproval = RelatingApproval; + this.type = 2943643501; + } + } + IFC4X32.IfcResourceApprovalRelationship = IfcResourceApprovalRelationship; + class IfcResourceConstraintRelationship extends IfcResourceLevelRelationship { + constructor(Name, Description, RelatingConstraint, RelatedResourceObjects) { + super(Name, Description); + this.Name = Name; + this.Description = Description; + this.RelatingConstraint = RelatingConstraint; + this.RelatedResourceObjects = RelatedResourceObjects; + this.type = 1608871552; + } + } + IFC4X32.IfcResourceConstraintRelationship = IfcResourceConstraintRelationship; + class IfcResourceTime extends IfcSchedulingTime { + constructor(Name, DataOrigin, UserDefinedDataOrigin, ScheduleWork, ScheduleUsage, ScheduleStart, ScheduleFinish, ScheduleContour, LevelingDelay, IsOverAllocated, StatusTime, ActualWork, ActualUsage, ActualStart, ActualFinish, RemainingWork, RemainingUsage, Completion) { + super(Name, DataOrigin, UserDefinedDataOrigin); + this.Name = Name; + this.DataOrigin = DataOrigin; + this.UserDefinedDataOrigin = UserDefinedDataOrigin; + this.ScheduleWork = ScheduleWork; + this.ScheduleUsage = ScheduleUsage; + this.ScheduleStart = ScheduleStart; + this.ScheduleFinish = ScheduleFinish; + this.ScheduleContour = ScheduleContour; + this.LevelingDelay = LevelingDelay; + this.IsOverAllocated = IsOverAllocated; + this.StatusTime = StatusTime; + this.ActualWork = ActualWork; + this.ActualUsage = ActualUsage; + this.ActualStart = ActualStart; + this.ActualFinish = ActualFinish; + this.RemainingWork = RemainingWork; + this.RemainingUsage = RemainingUsage; + this.Completion = Completion; + this.type = 1042787934; + } + } + IFC4X32.IfcResourceTime = IfcResourceTime; + class IfcRoundedRectangleProfileDef extends IfcRectangleProfileDef { + constructor(ProfileType, ProfileName, Position, XDim, YDim, RoundingRadius) { + super(ProfileType, ProfileName, Position, XDim, YDim); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.XDim = XDim; + this.YDim = YDim; + this.RoundingRadius = RoundingRadius; + this.type = 2778083089; + } + } + IFC4X32.IfcRoundedRectangleProfileDef = IfcRoundedRectangleProfileDef; + class IfcSectionProperties extends IfcPreDefinedProperties { + constructor(SectionType, StartProfile, EndProfile) { + super(); + this.SectionType = SectionType; + this.StartProfile = StartProfile; + this.EndProfile = EndProfile; + this.type = 2042790032; + } + } + IFC4X32.IfcSectionProperties = IfcSectionProperties; + class IfcSectionReinforcementProperties extends IfcPreDefinedProperties { + constructor(LongitudinalStartPosition, LongitudinalEndPosition, TransversePosition, ReinforcementRole, SectionDefinition, CrossSectionReinforcementDefinitions) { + super(); + this.LongitudinalStartPosition = LongitudinalStartPosition; + this.LongitudinalEndPosition = LongitudinalEndPosition; + this.TransversePosition = TransversePosition; + this.ReinforcementRole = ReinforcementRole; + this.SectionDefinition = SectionDefinition; + this.CrossSectionReinforcementDefinitions = CrossSectionReinforcementDefinitions; + this.type = 4165799628; + } + } + IFC4X32.IfcSectionReinforcementProperties = IfcSectionReinforcementProperties; + class IfcSectionedSpine extends IfcGeometricRepresentationItem { + constructor(SpineCurve, CrossSections, CrossSectionPositions) { + super(); + this.SpineCurve = SpineCurve; + this.CrossSections = CrossSections; + this.CrossSectionPositions = CrossSectionPositions; + this.type = 1509187699; + } + } + IFC4X32.IfcSectionedSpine = IfcSectionedSpine; + class IfcSegment extends IfcGeometricRepresentationItem { + constructor(Transition) { + super(); + this.Transition = Transition; + this.type = 823603102; + } + } + IFC4X32.IfcSegment = IfcSegment; + class IfcShellBasedSurfaceModel extends IfcGeometricRepresentationItem { + constructor(SbsmBoundary) { + super(); + this.SbsmBoundary = SbsmBoundary; + this.type = 4124623270; + } + } + IFC4X32.IfcShellBasedSurfaceModel = IfcShellBasedSurfaceModel; + class IfcSimpleProperty extends IfcProperty { + constructor(Name, Specification) { + super(Name, Specification); + this.Name = Name; + this.Specification = Specification; + this.type = 3692461612; + } + } + IFC4X32.IfcSimpleProperty = IfcSimpleProperty; + class IfcSlippageConnectionCondition extends IfcStructuralConnectionCondition { + constructor(Name, SlippageX, SlippageY, SlippageZ) { + super(Name); + this.Name = Name; + this.SlippageX = SlippageX; + this.SlippageY = SlippageY; + this.SlippageZ = SlippageZ; + this.type = 2609359061; + } + } + IFC4X32.IfcSlippageConnectionCondition = IfcSlippageConnectionCondition; + class IfcSolidModel extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 723233188; + } + } + IFC4X32.IfcSolidModel = IfcSolidModel; + class IfcStructuralLoadLinearForce extends IfcStructuralLoadStatic { + constructor(Name, LinearForceX, LinearForceY, LinearForceZ, LinearMomentX, LinearMomentY, LinearMomentZ) { + super(Name); + this.Name = Name; + this.LinearForceX = LinearForceX; + this.LinearForceY = LinearForceY; + this.LinearForceZ = LinearForceZ; + this.LinearMomentX = LinearMomentX; + this.LinearMomentY = LinearMomentY; + this.LinearMomentZ = LinearMomentZ; + this.type = 1595516126; + } + } + IFC4X32.IfcStructuralLoadLinearForce = IfcStructuralLoadLinearForce; + class IfcStructuralLoadPlanarForce extends IfcStructuralLoadStatic { + constructor(Name, PlanarForceX, PlanarForceY, PlanarForceZ) { + super(Name); + this.Name = Name; + this.PlanarForceX = PlanarForceX; + this.PlanarForceY = PlanarForceY; + this.PlanarForceZ = PlanarForceZ; + this.type = 2668620305; + } + } + IFC4X32.IfcStructuralLoadPlanarForce = IfcStructuralLoadPlanarForce; + class IfcStructuralLoadSingleDisplacement extends IfcStructuralLoadStatic { + constructor(Name, DisplacementX, DisplacementY, DisplacementZ, RotationalDisplacementRX, RotationalDisplacementRY, RotationalDisplacementRZ) { + super(Name); + this.Name = Name; + this.DisplacementX = DisplacementX; + this.DisplacementY = DisplacementY; + this.DisplacementZ = DisplacementZ; + this.RotationalDisplacementRX = RotationalDisplacementRX; + this.RotationalDisplacementRY = RotationalDisplacementRY; + this.RotationalDisplacementRZ = RotationalDisplacementRZ; + this.type = 2473145415; + } + } + IFC4X32.IfcStructuralLoadSingleDisplacement = IfcStructuralLoadSingleDisplacement; + class IfcStructuralLoadSingleDisplacementDistortion extends IfcStructuralLoadSingleDisplacement { + constructor(Name, DisplacementX, DisplacementY, DisplacementZ, RotationalDisplacementRX, RotationalDisplacementRY, RotationalDisplacementRZ, Distortion) { + super(Name, DisplacementX, DisplacementY, DisplacementZ, RotationalDisplacementRX, RotationalDisplacementRY, RotationalDisplacementRZ); + this.Name = Name; + this.DisplacementX = DisplacementX; + this.DisplacementY = DisplacementY; + this.DisplacementZ = DisplacementZ; + this.RotationalDisplacementRX = RotationalDisplacementRX; + this.RotationalDisplacementRY = RotationalDisplacementRY; + this.RotationalDisplacementRZ = RotationalDisplacementRZ; + this.Distortion = Distortion; + this.type = 1973038258; + } + } + IFC4X32.IfcStructuralLoadSingleDisplacementDistortion = IfcStructuralLoadSingleDisplacementDistortion; + class IfcStructuralLoadSingleForce extends IfcStructuralLoadStatic { + constructor(Name, ForceX, ForceY, ForceZ, MomentX, MomentY, MomentZ) { + super(Name); + this.Name = Name; + this.ForceX = ForceX; + this.ForceY = ForceY; + this.ForceZ = ForceZ; + this.MomentX = MomentX; + this.MomentY = MomentY; + this.MomentZ = MomentZ; + this.type = 1597423693; + } + } + IFC4X32.IfcStructuralLoadSingleForce = IfcStructuralLoadSingleForce; + class IfcStructuralLoadSingleForceWarping extends IfcStructuralLoadSingleForce { + constructor(Name, ForceX, ForceY, ForceZ, MomentX, MomentY, MomentZ, WarpingMoment) { + super(Name, ForceX, ForceY, ForceZ, MomentX, MomentY, MomentZ); + this.Name = Name; + this.ForceX = ForceX; + this.ForceY = ForceY; + this.ForceZ = ForceZ; + this.MomentX = MomentX; + this.MomentY = MomentY; + this.MomentZ = MomentZ; + this.WarpingMoment = WarpingMoment; + this.type = 1190533807; + } + } + IFC4X32.IfcStructuralLoadSingleForceWarping = IfcStructuralLoadSingleForceWarping; + class IfcSubedge extends IfcEdge { + constructor(EdgeStart, EdgeEnd, ParentEdge) { + super(EdgeStart, EdgeEnd); + this.EdgeStart = EdgeStart; + this.EdgeEnd = EdgeEnd; + this.ParentEdge = ParentEdge; + this.type = 2233826070; + } + } + IFC4X32.IfcSubedge = IfcSubedge; + class IfcSurface extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 2513912981; + } + } + IFC4X32.IfcSurface = IfcSurface; + class IfcSurfaceStyleRendering extends IfcSurfaceStyleShading { + constructor(SurfaceColour, Transparency, DiffuseColour, TransmissionColour, DiffuseTransmissionColour, ReflectionColour, SpecularColour, SpecularHighlight, ReflectanceMethod) { + super(SurfaceColour, Transparency); + this.SurfaceColour = SurfaceColour; + this.Transparency = Transparency; + this.DiffuseColour = DiffuseColour; + this.TransmissionColour = TransmissionColour; + this.DiffuseTransmissionColour = DiffuseTransmissionColour; + this.ReflectionColour = ReflectionColour; + this.SpecularColour = SpecularColour; + this.SpecularHighlight = SpecularHighlight; + this.ReflectanceMethod = ReflectanceMethod; + this.type = 1878645084; + } + } + IFC4X32.IfcSurfaceStyleRendering = IfcSurfaceStyleRendering; + class IfcSweptAreaSolid extends IfcSolidModel { + constructor(SweptArea, Position) { + super(); + this.SweptArea = SweptArea; + this.Position = Position; + this.type = 2247615214; + } + } + IFC4X32.IfcSweptAreaSolid = IfcSweptAreaSolid; + class IfcSweptDiskSolid extends IfcSolidModel { + constructor(Directrix, Radius, InnerRadius, StartParam, EndParam) { + super(); + this.Directrix = Directrix; + this.Radius = Radius; + this.InnerRadius = InnerRadius; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.type = 1260650574; + } + } + IFC4X32.IfcSweptDiskSolid = IfcSweptDiskSolid; + class IfcSweptDiskSolidPolygonal extends IfcSweptDiskSolid { + constructor(Directrix, Radius, InnerRadius, StartParam, EndParam, FilletRadius) { + super(Directrix, Radius, InnerRadius, StartParam, EndParam); + this.Directrix = Directrix; + this.Radius = Radius; + this.InnerRadius = InnerRadius; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.FilletRadius = FilletRadius; + this.type = 1096409881; + } + } + IFC4X32.IfcSweptDiskSolidPolygonal = IfcSweptDiskSolidPolygonal; + class IfcSweptSurface extends IfcSurface { + constructor(SweptCurve, Position) { + super(); + this.SweptCurve = SweptCurve; + this.Position = Position; + this.type = 230924584; + } + } + IFC4X32.IfcSweptSurface = IfcSweptSurface; + class IfcTShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, FlangeWidth, WebThickness, FlangeThickness, FilletRadius, FlangeEdgeRadius, WebEdgeRadius, WebSlope, FlangeSlope) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.FlangeWidth = FlangeWidth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.FlangeEdgeRadius = FlangeEdgeRadius; + this.WebEdgeRadius = WebEdgeRadius; + this.WebSlope = WebSlope; + this.FlangeSlope = FlangeSlope; + this.type = 3071757647; + } + } + IFC4X32.IfcTShapeProfileDef = IfcTShapeProfileDef; + class IfcTessellatedItem extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 901063453; + } + } + IFC4X32.IfcTessellatedItem = IfcTessellatedItem; + class IfcTextLiteral extends IfcGeometricRepresentationItem { + constructor(Literal, Placement, Path) { + super(); + this.Literal = Literal; + this.Placement = Placement; + this.Path = Path; + this.type = 4282788508; + } + } + IFC4X32.IfcTextLiteral = IfcTextLiteral; + class IfcTextLiteralWithExtent extends IfcTextLiteral { + constructor(Literal, Placement, Path, Extent, BoxAlignment) { + super(Literal, Placement, Path); + this.Literal = Literal; + this.Placement = Placement; + this.Path = Path; + this.Extent = Extent; + this.BoxAlignment = BoxAlignment; + this.type = 3124975700; + } + } + IFC4X32.IfcTextLiteralWithExtent = IfcTextLiteralWithExtent; + class IfcTextStyleFontModel extends IfcPreDefinedTextFont { + constructor(Name, FontFamily, FontStyle, FontVariant, FontWeight, FontSize) { + super(Name); + this.Name = Name; + this.FontFamily = FontFamily; + this.FontStyle = FontStyle; + this.FontVariant = FontVariant; + this.FontWeight = FontWeight; + this.FontSize = FontSize; + this.type = 1983826977; + } + } + IFC4X32.IfcTextStyleFontModel = IfcTextStyleFontModel; + class IfcTrapeziumProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, BottomXDim, TopXDim, YDim, TopXOffset) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.BottomXDim = BottomXDim; + this.TopXDim = TopXDim; + this.YDim = YDim; + this.TopXOffset = TopXOffset; + this.type = 2715220739; + } + } + IFC4X32.IfcTrapeziumProfileDef = IfcTrapeziumProfileDef; + class IfcTypeObject extends IfcObjectDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.type = 1628702193; + } + } + IFC4X32.IfcTypeObject = IfcTypeObject; + class IfcTypeProcess extends IfcTypeObject { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ProcessType = ProcessType; + this.type = 3736923433; + } + } + IFC4X32.IfcTypeProcess = IfcTypeProcess; + class IfcTypeProduct extends IfcTypeObject { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.type = 2347495698; + } + } + IFC4X32.IfcTypeProduct = IfcTypeProduct; + class IfcTypeResource extends IfcTypeObject { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.type = 3698973494; + } + } + IFC4X32.IfcTypeResource = IfcTypeResource; + class IfcUShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, FlangeWidth, WebThickness, FlangeThickness, FilletRadius, EdgeRadius, FlangeSlope) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.FlangeWidth = FlangeWidth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.EdgeRadius = EdgeRadius; + this.FlangeSlope = FlangeSlope; + this.type = 427810014; + } + } + IFC4X32.IfcUShapeProfileDef = IfcUShapeProfileDef; + class IfcVector extends IfcGeometricRepresentationItem { + constructor(Orientation, Magnitude) { + super(); + this.Orientation = Orientation; + this.Magnitude = Magnitude; + this.type = 1417489154; + } + } + IFC4X32.IfcVector = IfcVector; + class IfcVertexLoop extends IfcLoop { + constructor(LoopVertex) { + super(); + this.LoopVertex = LoopVertex; + this.type = 2759199220; + } + } + IFC4X32.IfcVertexLoop = IfcVertexLoop; + class IfcZShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, FlangeWidth, WebThickness, FlangeThickness, FilletRadius, EdgeRadius) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.FlangeWidth = FlangeWidth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.EdgeRadius = EdgeRadius; + this.type = 2543172580; + } + } + IFC4X32.IfcZShapeProfileDef = IfcZShapeProfileDef; + class IfcAdvancedFace extends IfcFaceSurface { + constructor(Bounds, FaceSurface, SameSense) { + super(Bounds, FaceSurface, SameSense); + this.Bounds = Bounds; + this.FaceSurface = FaceSurface; + this.SameSense = SameSense; + this.type = 3406155212; + } + } + IFC4X32.IfcAdvancedFace = IfcAdvancedFace; + class IfcAnnotationFillArea extends IfcGeometricRepresentationItem { + constructor(OuterBoundary, InnerBoundaries) { + super(); + this.OuterBoundary = OuterBoundary; + this.InnerBoundaries = InnerBoundaries; + this.type = 669184980; + } + } + IFC4X32.IfcAnnotationFillArea = IfcAnnotationFillArea; + class IfcAsymmetricIShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, BottomFlangeWidth, OverallDepth, WebThickness, BottomFlangeThickness, BottomFlangeFilletRadius, TopFlangeWidth, TopFlangeThickness, TopFlangeFilletRadius, BottomFlangeEdgeRadius, BottomFlangeSlope, TopFlangeEdgeRadius, TopFlangeSlope) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.BottomFlangeWidth = BottomFlangeWidth; + this.OverallDepth = OverallDepth; + this.WebThickness = WebThickness; + this.BottomFlangeThickness = BottomFlangeThickness; + this.BottomFlangeFilletRadius = BottomFlangeFilletRadius; + this.TopFlangeWidth = TopFlangeWidth; + this.TopFlangeThickness = TopFlangeThickness; + this.TopFlangeFilletRadius = TopFlangeFilletRadius; + this.BottomFlangeEdgeRadius = BottomFlangeEdgeRadius; + this.BottomFlangeSlope = BottomFlangeSlope; + this.TopFlangeEdgeRadius = TopFlangeEdgeRadius; + this.TopFlangeSlope = TopFlangeSlope; + this.type = 3207858831; + } + } + IFC4X32.IfcAsymmetricIShapeProfileDef = IfcAsymmetricIShapeProfileDef; + class IfcAxis1Placement extends IfcPlacement { + constructor(Location, Axis2) { + super(Location); + this.Location = Location; + this.Axis = Axis2; + this.type = 4261334040; + } + } + IFC4X32.IfcAxis1Placement = IfcAxis1Placement; + class IfcAxis2Placement2D extends IfcPlacement { + constructor(Location, RefDirection) { + super(Location); + this.Location = Location; + this.RefDirection = RefDirection; + this.type = 3125803723; + } + } + IFC4X32.IfcAxis2Placement2D = IfcAxis2Placement2D; + class IfcAxis2Placement3D extends IfcPlacement { + constructor(Location, Axis2, RefDirection) { + super(Location); + this.Location = Location; + this.Axis = Axis2; + this.RefDirection = RefDirection; + this.type = 2740243338; + } + } + IFC4X32.IfcAxis2Placement3D = IfcAxis2Placement3D; + class IfcAxis2PlacementLinear extends IfcPlacement { + constructor(Location, Axis2, RefDirection) { + super(Location); + this.Location = Location; + this.Axis = Axis2; + this.RefDirection = RefDirection; + this.type = 3425423356; + } + } + IFC4X32.IfcAxis2PlacementLinear = IfcAxis2PlacementLinear; + class IfcBooleanResult extends IfcGeometricRepresentationItem { + constructor(Operator, FirstOperand, SecondOperand) { + super(); + this.Operator = Operator; + this.FirstOperand = FirstOperand; + this.SecondOperand = SecondOperand; + this.type = 2736907675; + } + } + IFC4X32.IfcBooleanResult = IfcBooleanResult; + class IfcBoundedSurface extends IfcSurface { + constructor() { + super(); + this.type = 4182860854; + } + } + IFC4X32.IfcBoundedSurface = IfcBoundedSurface; + class IfcBoundingBox extends IfcGeometricRepresentationItem { + constructor(Corner, XDim, YDim, ZDim) { + super(); + this.Corner = Corner; + this.XDim = XDim; + this.YDim = YDim; + this.ZDim = ZDim; + this.type = 2581212453; + } + } + IFC4X32.IfcBoundingBox = IfcBoundingBox; + class IfcBoxedHalfSpace extends IfcHalfSpaceSolid { + constructor(BaseSurface, AgreementFlag, Enclosure) { + super(BaseSurface, AgreementFlag); + this.BaseSurface = BaseSurface; + this.AgreementFlag = AgreementFlag; + this.Enclosure = Enclosure; + this.type = 2713105998; + } + } + IFC4X32.IfcBoxedHalfSpace = IfcBoxedHalfSpace; + class IfcCShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, Width, WallThickness, Girth, InternalFilletRadius) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.Width = Width; + this.WallThickness = WallThickness; + this.Girth = Girth; + this.InternalFilletRadius = InternalFilletRadius; + this.type = 2898889636; + } + } + IFC4X32.IfcCShapeProfileDef = IfcCShapeProfileDef; + class IfcCartesianPoint extends IfcPoint { + constructor(Coordinates) { + super(); + this.Coordinates = Coordinates; + this.type = 1123145078; + } + } + IFC4X32.IfcCartesianPoint = IfcCartesianPoint; + class IfcCartesianPointList extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 574549367; + } + } + IFC4X32.IfcCartesianPointList = IfcCartesianPointList; + class IfcCartesianPointList2D extends IfcCartesianPointList { + constructor(CoordList, TagList) { + super(); + this.CoordList = CoordList; + this.TagList = TagList; + this.type = 1675464909; + } + } + IFC4X32.IfcCartesianPointList2D = IfcCartesianPointList2D; + class IfcCartesianPointList3D extends IfcCartesianPointList { + constructor(CoordList, TagList) { + super(); + this.CoordList = CoordList; + this.TagList = TagList; + this.type = 2059837836; + } + } + IFC4X32.IfcCartesianPointList3D = IfcCartesianPointList3D; + class IfcCartesianTransformationOperator extends IfcGeometricRepresentationItem { + constructor(Axis1, Axis2, LocalOrigin, Scale) { + super(); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.type = 59481748; + } + } + IFC4X32.IfcCartesianTransformationOperator = IfcCartesianTransformationOperator; + class IfcCartesianTransformationOperator2D extends IfcCartesianTransformationOperator { + constructor(Axis1, Axis2, LocalOrigin, Scale) { + super(Axis1, Axis2, LocalOrigin, Scale); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.type = 3749851601; + } + } + IFC4X32.IfcCartesianTransformationOperator2D = IfcCartesianTransformationOperator2D; + class IfcCartesianTransformationOperator2DnonUniform extends IfcCartesianTransformationOperator2D { + constructor(Axis1, Axis2, LocalOrigin, Scale, Scale2) { + super(Axis1, Axis2, LocalOrigin, Scale); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.Scale2 = Scale2; + this.type = 3486308946; + } + } + IFC4X32.IfcCartesianTransformationOperator2DnonUniform = IfcCartesianTransformationOperator2DnonUniform; + class IfcCartesianTransformationOperator3D extends IfcCartesianTransformationOperator { + constructor(Axis1, Axis2, LocalOrigin, Scale, Axis3) { + super(Axis1, Axis2, LocalOrigin, Scale); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.Axis3 = Axis3; + this.type = 3331915920; + } + } + IFC4X32.IfcCartesianTransformationOperator3D = IfcCartesianTransformationOperator3D; + class IfcCartesianTransformationOperator3DnonUniform extends IfcCartesianTransformationOperator3D { + constructor(Axis1, Axis2, LocalOrigin, Scale, Axis3, Scale2, Scale3) { + super(Axis1, Axis2, LocalOrigin, Scale, Axis3); + this.Axis1 = Axis1; + this.Axis2 = Axis2; + this.LocalOrigin = LocalOrigin; + this.Scale = Scale; + this.Axis3 = Axis3; + this.Scale2 = Scale2; + this.Scale3 = Scale3; + this.type = 1416205885; + } + } + IFC4X32.IfcCartesianTransformationOperator3DnonUniform = IfcCartesianTransformationOperator3DnonUniform; + class IfcCircleProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Radius) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Radius = Radius; + this.type = 1383045692; + } + } + IFC4X32.IfcCircleProfileDef = IfcCircleProfileDef; + class IfcClosedShell extends IfcConnectedFaceSet { + constructor(CfsFaces) { + super(CfsFaces); + this.CfsFaces = CfsFaces; + this.type = 2205249479; + } + } + IFC4X32.IfcClosedShell = IfcClosedShell; + class IfcColourRgb extends IfcColourSpecification { + constructor(Name, Red, Green, Blue) { + super(Name); + this.Name = Name; + this.Red = Red; + this.Green = Green; + this.Blue = Blue; + this.type = 776857604; + } + } + IFC4X32.IfcColourRgb = IfcColourRgb; + class IfcComplexProperty extends IfcProperty { + constructor(Name, Specification, UsageName, HasProperties) { + super(Name, Specification); + this.Name = Name; + this.Specification = Specification; + this.UsageName = UsageName; + this.HasProperties = HasProperties; + this.type = 2542286263; + } + } + IFC4X32.IfcComplexProperty = IfcComplexProperty; + class IfcCompositeCurveSegment extends IfcSegment { + constructor(Transition, SameSense, ParentCurve) { + super(Transition); + this.Transition = Transition; + this.SameSense = SameSense; + this.ParentCurve = ParentCurve; + this.type = 2485617015; + } + } + IFC4X32.IfcCompositeCurveSegment = IfcCompositeCurveSegment; + class IfcConstructionResourceType extends IfcTypeResource { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.type = 2574617495; + } + } + IFC4X32.IfcConstructionResourceType = IfcConstructionResourceType; + class IfcContext extends IfcObjectDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, Phase, RepresentationContexts, UnitsInContext) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.Phase = Phase; + this.RepresentationContexts = RepresentationContexts; + this.UnitsInContext = UnitsInContext; + this.type = 3419103109; + } + } + IFC4X32.IfcContext = IfcContext; + class IfcCrewResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 1815067380; + } + } + IFC4X32.IfcCrewResourceType = IfcCrewResourceType; + class IfcCsgPrimitive3D extends IfcGeometricRepresentationItem { + constructor(Position) { + super(); + this.Position = Position; + this.type = 2506170314; + } + } + IFC4X32.IfcCsgPrimitive3D = IfcCsgPrimitive3D; + class IfcCsgSolid extends IfcSolidModel { + constructor(TreeRootExpression) { + super(); + this.TreeRootExpression = TreeRootExpression; + this.type = 2147822146; + } + } + IFC4X32.IfcCsgSolid = IfcCsgSolid; + class IfcCurve extends IfcGeometricRepresentationItem { + constructor() { + super(); + this.type = 2601014836; + } + } + IFC4X32.IfcCurve = IfcCurve; + class IfcCurveBoundedPlane extends IfcBoundedSurface { + constructor(BasisSurface, OuterBoundary, InnerBoundaries) { + super(); + this.BasisSurface = BasisSurface; + this.OuterBoundary = OuterBoundary; + this.InnerBoundaries = InnerBoundaries; + this.type = 2827736869; + } + } + IFC4X32.IfcCurveBoundedPlane = IfcCurveBoundedPlane; + class IfcCurveBoundedSurface extends IfcBoundedSurface { + constructor(BasisSurface, Boundaries, ImplicitOuter) { + super(); + this.BasisSurface = BasisSurface; + this.Boundaries = Boundaries; + this.ImplicitOuter = ImplicitOuter; + this.type = 2629017746; + } + } + IFC4X32.IfcCurveBoundedSurface = IfcCurveBoundedSurface; + class IfcCurveSegment extends IfcSegment { + constructor(Transition, Placement, SegmentStart, SegmentLength, ParentCurve) { + super(Transition); + this.Transition = Transition; + this.Placement = Placement; + this.SegmentStart = SegmentStart; + this.SegmentLength = SegmentLength; + this.ParentCurve = ParentCurve; + this.type = 4212018352; + } + } + IFC4X32.IfcCurveSegment = IfcCurveSegment; + class IfcDirection extends IfcGeometricRepresentationItem { + constructor(DirectionRatios) { + super(); + this.DirectionRatios = DirectionRatios; + this.type = 32440307; + } + } + IFC4X32.IfcDirection = IfcDirection; + class IfcDirectrixCurveSweptAreaSolid extends IfcSweptAreaSolid { + constructor(SweptArea, Position, Directrix, StartParam, EndParam) { + super(SweptArea, Position); + this.SweptArea = SweptArea; + this.Position = Position; + this.Directrix = Directrix; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.type = 593015953; + } + } + IFC4X32.IfcDirectrixCurveSweptAreaSolid = IfcDirectrixCurveSweptAreaSolid; + class IfcEdgeLoop extends IfcLoop { + constructor(EdgeList) { + super(); + this.EdgeList = EdgeList; + this.type = 1472233963; + } + } + IFC4X32.IfcEdgeLoop = IfcEdgeLoop; + class IfcElementQuantity extends IfcQuantitySet { + constructor(GlobalId, OwnerHistory, Name, Description, MethodOfMeasurement, Quantities) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.MethodOfMeasurement = MethodOfMeasurement; + this.Quantities = Quantities; + this.type = 1883228015; + } + } + IFC4X32.IfcElementQuantity = IfcElementQuantity; + class IfcElementType extends IfcTypeProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 339256511; + } + } + IFC4X32.IfcElementType = IfcElementType; + class IfcElementarySurface extends IfcSurface { + constructor(Position) { + super(); + this.Position = Position; + this.type = 2777663545; + } + } + IFC4X32.IfcElementarySurface = IfcElementarySurface; + class IfcEllipseProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, SemiAxis1, SemiAxis2) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.SemiAxis1 = SemiAxis1; + this.SemiAxis2 = SemiAxis2; + this.type = 2835456948; + } + } + IFC4X32.IfcEllipseProfileDef = IfcEllipseProfileDef; + class IfcEventType extends IfcTypeProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType, PredefinedType, EventTriggerType, UserDefinedEventTriggerType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ProcessType = ProcessType; + this.PredefinedType = PredefinedType; + this.EventTriggerType = EventTriggerType; + this.UserDefinedEventTriggerType = UserDefinedEventTriggerType; + this.type = 4024345920; + } + } + IFC4X32.IfcEventType = IfcEventType; + class IfcExtrudedAreaSolid extends IfcSweptAreaSolid { + constructor(SweptArea, Position, ExtrudedDirection, Depth) { + super(SweptArea, Position); + this.SweptArea = SweptArea; + this.Position = Position; + this.ExtrudedDirection = ExtrudedDirection; + this.Depth = Depth; + this.type = 477187591; + } + } + IFC4X32.IfcExtrudedAreaSolid = IfcExtrudedAreaSolid; + class IfcExtrudedAreaSolidTapered extends IfcExtrudedAreaSolid { + constructor(SweptArea, Position, ExtrudedDirection, Depth, EndSweptArea) { + super(SweptArea, Position, ExtrudedDirection, Depth); + this.SweptArea = SweptArea; + this.Position = Position; + this.ExtrudedDirection = ExtrudedDirection; + this.Depth = Depth; + this.EndSweptArea = EndSweptArea; + this.type = 2804161546; + } + } + IFC4X32.IfcExtrudedAreaSolidTapered = IfcExtrudedAreaSolidTapered; + class IfcFaceBasedSurfaceModel extends IfcGeometricRepresentationItem { + constructor(FbsmFaces) { + super(); + this.FbsmFaces = FbsmFaces; + this.type = 2047409740; + } + } + IFC4X32.IfcFaceBasedSurfaceModel = IfcFaceBasedSurfaceModel; + class IfcFillAreaStyleHatching extends IfcGeometricRepresentationItem { + constructor(HatchLineAppearance, StartOfNextHatchLine, PointOfReferenceHatchLine, PatternStart, HatchLineAngle) { + super(); + this.HatchLineAppearance = HatchLineAppearance; + this.StartOfNextHatchLine = StartOfNextHatchLine; + this.PointOfReferenceHatchLine = PointOfReferenceHatchLine; + this.PatternStart = PatternStart; + this.HatchLineAngle = HatchLineAngle; + this.type = 374418227; + } + } + IFC4X32.IfcFillAreaStyleHatching = IfcFillAreaStyleHatching; + class IfcFillAreaStyleTiles extends IfcGeometricRepresentationItem { + constructor(TilingPattern, Tiles, TilingScale) { + super(); + this.TilingPattern = TilingPattern; + this.Tiles = Tiles; + this.TilingScale = TilingScale; + this.type = 315944413; + } + } + IFC4X32.IfcFillAreaStyleTiles = IfcFillAreaStyleTiles; + class IfcFixedReferenceSweptAreaSolid extends IfcDirectrixCurveSweptAreaSolid { + constructor(SweptArea, Position, Directrix, StartParam, EndParam, FixedReference) { + super(SweptArea, Position, Directrix, StartParam, EndParam); + this.SweptArea = SweptArea; + this.Position = Position; + this.Directrix = Directrix; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.FixedReference = FixedReference; + this.type = 2652556860; + } + } + IFC4X32.IfcFixedReferenceSweptAreaSolid = IfcFixedReferenceSweptAreaSolid; + class IfcFurnishingElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 4238390223; + } + } + IFC4X32.IfcFurnishingElementType = IfcFurnishingElementType; + class IfcFurnitureType extends IfcFurnishingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, AssemblyPlace, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.AssemblyPlace = AssemblyPlace; + this.PredefinedType = PredefinedType; + this.type = 1268542332; + } + } + IFC4X32.IfcFurnitureType = IfcFurnitureType; + class IfcGeographicElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4095422895; + } + } + IFC4X32.IfcGeographicElementType = IfcGeographicElementType; + class IfcGeometricCurveSet extends IfcGeometricSet { + constructor(Elements) { + super(Elements); + this.Elements = Elements; + this.type = 987898635; + } + } + IFC4X32.IfcGeometricCurveSet = IfcGeometricCurveSet; + class IfcIShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, OverallWidth, OverallDepth, WebThickness, FlangeThickness, FilletRadius, FlangeEdgeRadius, FlangeSlope) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.OverallWidth = OverallWidth; + this.OverallDepth = OverallDepth; + this.WebThickness = WebThickness; + this.FlangeThickness = FlangeThickness; + this.FilletRadius = FilletRadius; + this.FlangeEdgeRadius = FlangeEdgeRadius; + this.FlangeSlope = FlangeSlope; + this.type = 1484403080; + } + } + IFC4X32.IfcIShapeProfileDef = IfcIShapeProfileDef; + class IfcIndexedPolygonalFace extends IfcTessellatedItem { + constructor(CoordIndex) { + super(); + this.CoordIndex = CoordIndex; + this.type = 178912537; + } + } + IFC4X32.IfcIndexedPolygonalFace = IfcIndexedPolygonalFace; + class IfcIndexedPolygonalFaceWithVoids extends IfcIndexedPolygonalFace { + constructor(CoordIndex, InnerCoordIndices) { + super(CoordIndex); + this.CoordIndex = CoordIndex; + this.InnerCoordIndices = InnerCoordIndices; + this.type = 2294589976; + } + } + IFC4X32.IfcIndexedPolygonalFaceWithVoids = IfcIndexedPolygonalFaceWithVoids; + class IfcIndexedPolygonalTextureMap extends IfcIndexedTextureMap { + constructor(Maps, MappedTo, TexCoords, TexCoordIndices) { + super(Maps, MappedTo, TexCoords); + this.Maps = Maps; + this.MappedTo = MappedTo; + this.TexCoords = TexCoords; + this.TexCoordIndices = TexCoordIndices; + this.type = 3465909080; + } + } + IFC4X32.IfcIndexedPolygonalTextureMap = IfcIndexedPolygonalTextureMap; + class IfcLShapeProfileDef extends IfcParameterizedProfileDef { + constructor(ProfileType, ProfileName, Position, Depth, Width, Thickness, FilletRadius, EdgeRadius, LegSlope) { + super(ProfileType, ProfileName, Position); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Depth = Depth; + this.Width = Width; + this.Thickness = Thickness; + this.FilletRadius = FilletRadius; + this.EdgeRadius = EdgeRadius; + this.LegSlope = LegSlope; + this.type = 572779678; + } + } + IFC4X32.IfcLShapeProfileDef = IfcLShapeProfileDef; + class IfcLaborResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 428585644; + } + } + IFC4X32.IfcLaborResourceType = IfcLaborResourceType; + class IfcLine extends IfcCurve { + constructor(Pnt, Dir) { + super(); + this.Pnt = Pnt; + this.Dir = Dir; + this.type = 1281925730; + } + } + IFC4X32.IfcLine = IfcLine; + class IfcManifoldSolidBrep extends IfcSolidModel { + constructor(Outer) { + super(); + this.Outer = Outer; + this.type = 1425443689; + } + } + IFC4X32.IfcManifoldSolidBrep = IfcManifoldSolidBrep; + class IfcObject extends IfcObjectDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 3888040117; + } + } + IFC4X32.IfcObject = IfcObject; + class IfcOffsetCurve extends IfcCurve { + constructor(BasisCurve) { + super(); + this.BasisCurve = BasisCurve; + this.type = 590820931; + } + } + IFC4X32.IfcOffsetCurve = IfcOffsetCurve; + class IfcOffsetCurve2D extends IfcOffsetCurve { + constructor(BasisCurve, Distance, SelfIntersect) { + super(BasisCurve); + this.BasisCurve = BasisCurve; + this.Distance = Distance; + this.SelfIntersect = SelfIntersect; + this.type = 3388369263; + } + } + IFC4X32.IfcOffsetCurve2D = IfcOffsetCurve2D; + class IfcOffsetCurve3D extends IfcOffsetCurve { + constructor(BasisCurve, Distance, SelfIntersect, RefDirection) { + super(BasisCurve); + this.BasisCurve = BasisCurve; + this.Distance = Distance; + this.SelfIntersect = SelfIntersect; + this.RefDirection = RefDirection; + this.type = 3505215534; + } + } + IFC4X32.IfcOffsetCurve3D = IfcOffsetCurve3D; + class IfcOffsetCurveByDistances extends IfcOffsetCurve { + constructor(BasisCurve, OffsetValues, Tag) { + super(BasisCurve); + this.BasisCurve = BasisCurve; + this.OffsetValues = OffsetValues; + this.Tag = Tag; + this.type = 2485787929; + } + } + IFC4X32.IfcOffsetCurveByDistances = IfcOffsetCurveByDistances; + class IfcPcurve extends IfcCurve { + constructor(BasisSurface, ReferenceCurve) { + super(); + this.BasisSurface = BasisSurface; + this.ReferenceCurve = ReferenceCurve; + this.type = 1682466193; + } + } + IFC4X32.IfcPcurve = IfcPcurve; + class IfcPlanarBox extends IfcPlanarExtent { + constructor(SizeInX, SizeInY, Placement) { + super(SizeInX, SizeInY); + this.SizeInX = SizeInX; + this.SizeInY = SizeInY; + this.Placement = Placement; + this.type = 603570806; + } + } + IFC4X32.IfcPlanarBox = IfcPlanarBox; + class IfcPlane extends IfcElementarySurface { + constructor(Position) { + super(Position); + this.Position = Position; + this.type = 220341763; + } + } + IFC4X32.IfcPlane = IfcPlane; + class IfcPolynomialCurve extends IfcCurve { + constructor(Position, CoefficientsX, CoefficientsY, CoefficientsZ) { + super(); + this.Position = Position; + this.CoefficientsX = CoefficientsX; + this.CoefficientsY = CoefficientsY; + this.CoefficientsZ = CoefficientsZ; + this.type = 3381221214; + } + } + IFC4X32.IfcPolynomialCurve = IfcPolynomialCurve; + class IfcPreDefinedColour extends IfcPreDefinedItem { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 759155922; + } + } + IFC4X32.IfcPreDefinedColour = IfcPreDefinedColour; + class IfcPreDefinedCurveFont extends IfcPreDefinedItem { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 2559016684; + } + } + IFC4X32.IfcPreDefinedCurveFont = IfcPreDefinedCurveFont; + class IfcPreDefinedPropertySet extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 3967405729; + } + } + IFC4X32.IfcPreDefinedPropertySet = IfcPreDefinedPropertySet; + class IfcProcedureType extends IfcTypeProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ProcessType = ProcessType; + this.PredefinedType = PredefinedType; + this.type = 569719735; + } + } + IFC4X32.IfcProcedureType = IfcProcedureType; + class IfcProcess extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.type = 2945172077; + } + } + IFC4X32.IfcProcess = IfcProcess; + class IfcProduct extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 4208778838; + } + } + IFC4X32.IfcProduct = IfcProduct; + class IfcProject extends IfcContext { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, Phase, RepresentationContexts, UnitsInContext) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, Phase, RepresentationContexts, UnitsInContext); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.Phase = Phase; + this.RepresentationContexts = RepresentationContexts; + this.UnitsInContext = UnitsInContext; + this.type = 103090709; + } + } + IFC4X32.IfcProject = IfcProject; + class IfcProjectLibrary extends IfcContext { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, Phase, RepresentationContexts, UnitsInContext) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, Phase, RepresentationContexts, UnitsInContext); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.Phase = Phase; + this.RepresentationContexts = RepresentationContexts; + this.UnitsInContext = UnitsInContext; + this.type = 653396225; + } + } + IFC4X32.IfcProjectLibrary = IfcProjectLibrary; + class IfcPropertyBoundedValue extends IfcSimpleProperty { + constructor(Name, Specification, UpperBoundValue, LowerBoundValue, Unit, SetPointValue) { + super(Name, Specification); + this.Name = Name; + this.Specification = Specification; + this.UpperBoundValue = UpperBoundValue; + this.LowerBoundValue = LowerBoundValue; + this.Unit = Unit; + this.SetPointValue = SetPointValue; + this.type = 871118103; + } + } + IFC4X32.IfcPropertyBoundedValue = IfcPropertyBoundedValue; + class IfcPropertyEnumeratedValue extends IfcSimpleProperty { + constructor(Name, Specification, EnumerationValues, EnumerationReference) { + super(Name, Specification); + this.Name = Name; + this.Specification = Specification; + this.EnumerationValues = EnumerationValues; + this.EnumerationReference = EnumerationReference; + this.type = 4166981789; + } + } + IFC4X32.IfcPropertyEnumeratedValue = IfcPropertyEnumeratedValue; + class IfcPropertyListValue extends IfcSimpleProperty { + constructor(Name, Specification, ListValues, Unit) { + super(Name, Specification); + this.Name = Name; + this.Specification = Specification; + this.ListValues = ListValues; + this.Unit = Unit; + this.type = 2752243245; + } + } + IFC4X32.IfcPropertyListValue = IfcPropertyListValue; + class IfcPropertyReferenceValue extends IfcSimpleProperty { + constructor(Name, Specification, UsageName, PropertyReference) { + super(Name, Specification); + this.Name = Name; + this.Specification = Specification; + this.UsageName = UsageName; + this.PropertyReference = PropertyReference; + this.type = 941946838; + } + } + IFC4X32.IfcPropertyReferenceValue = IfcPropertyReferenceValue; + class IfcPropertySet extends IfcPropertySetDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, HasProperties) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.HasProperties = HasProperties; + this.type = 1451395588; + } + } + IFC4X32.IfcPropertySet = IfcPropertySet; + class IfcPropertySetTemplate extends IfcPropertyTemplateDefinition { + constructor(GlobalId, OwnerHistory, Name, Description, TemplateType, ApplicableEntity, HasPropertyTemplates) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.TemplateType = TemplateType; + this.ApplicableEntity = ApplicableEntity; + this.HasPropertyTemplates = HasPropertyTemplates; + this.type = 492091185; + } + } + IFC4X32.IfcPropertySetTemplate = IfcPropertySetTemplate; + class IfcPropertySingleValue extends IfcSimpleProperty { + constructor(Name, Specification, NominalValue, Unit) { + super(Name, Specification); + this.Name = Name; + this.Specification = Specification; + this.NominalValue = NominalValue; + this.Unit = Unit; + this.type = 3650150729; + } + } + IFC4X32.IfcPropertySingleValue = IfcPropertySingleValue; + class IfcPropertyTableValue extends IfcSimpleProperty { + constructor(Name, Specification, DefiningValues, DefinedValues, Expression, DefiningUnit, DefinedUnit, CurveInterpolation) { + super(Name, Specification); + this.Name = Name; + this.Specification = Specification; + this.DefiningValues = DefiningValues; + this.DefinedValues = DefinedValues; + this.Expression = Expression; + this.DefiningUnit = DefiningUnit; + this.DefinedUnit = DefinedUnit; + this.CurveInterpolation = CurveInterpolation; + this.type = 110355661; + } + } + IFC4X32.IfcPropertyTableValue = IfcPropertyTableValue; + class IfcPropertyTemplate extends IfcPropertyTemplateDefinition { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 3521284610; + } + } + IFC4X32.IfcPropertyTemplate = IfcPropertyTemplate; + class IfcRectangleHollowProfileDef extends IfcRectangleProfileDef { + constructor(ProfileType, ProfileName, Position, XDim, YDim, WallThickness, InnerFilletRadius, OuterFilletRadius) { + super(ProfileType, ProfileName, Position, XDim, YDim); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.XDim = XDim; + this.YDim = YDim; + this.WallThickness = WallThickness; + this.InnerFilletRadius = InnerFilletRadius; + this.OuterFilletRadius = OuterFilletRadius; + this.type = 2770003689; + } + } + IFC4X32.IfcRectangleHollowProfileDef = IfcRectangleHollowProfileDef; + class IfcRectangularPyramid extends IfcCsgPrimitive3D { + constructor(Position, XLength, YLength, Height) { + super(Position); + this.Position = Position; + this.XLength = XLength; + this.YLength = YLength; + this.Height = Height; + this.type = 2798486643; + } + } + IFC4X32.IfcRectangularPyramid = IfcRectangularPyramid; + class IfcRectangularTrimmedSurface extends IfcBoundedSurface { + constructor(BasisSurface, U1, V1, U2, V2, Usense, Vsense) { + super(); + this.BasisSurface = BasisSurface; + this.U1 = U1; + this.V1 = V1; + this.U2 = U2; + this.V2 = V2; + this.Usense = Usense; + this.Vsense = Vsense; + this.type = 3454111270; + } + } + IFC4X32.IfcRectangularTrimmedSurface = IfcRectangularTrimmedSurface; + class IfcReinforcementDefinitionProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, DefinitionType, ReinforcementSectionDefinitions) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.DefinitionType = DefinitionType; + this.ReinforcementSectionDefinitions = ReinforcementSectionDefinitions; + this.type = 3765753017; + } + } + IFC4X32.IfcReinforcementDefinitionProperties = IfcReinforcementDefinitionProperties; + class IfcRelAssigns extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.type = 3939117080; + } + } + IFC4X32.IfcRelAssigns = IfcRelAssigns; + class IfcRelAssignsToActor extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingActor, ActingRole) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingActor = RelatingActor; + this.ActingRole = ActingRole; + this.type = 1683148259; + } + } + IFC4X32.IfcRelAssignsToActor = IfcRelAssignsToActor; + class IfcRelAssignsToControl extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingControl) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingControl = RelatingControl; + this.type = 2495723537; + } + } + IFC4X32.IfcRelAssignsToControl = IfcRelAssignsToControl; + class IfcRelAssignsToGroup extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingGroup) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingGroup = RelatingGroup; + this.type = 1307041759; + } + } + IFC4X32.IfcRelAssignsToGroup = IfcRelAssignsToGroup; + class IfcRelAssignsToGroupByFactor extends IfcRelAssignsToGroup { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingGroup, Factor) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingGroup); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingGroup = RelatingGroup; + this.Factor = Factor; + this.type = 1027710054; + } + } + IFC4X32.IfcRelAssignsToGroupByFactor = IfcRelAssignsToGroupByFactor; + class IfcRelAssignsToProcess extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingProcess, QuantityInProcess) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingProcess = RelatingProcess; + this.QuantityInProcess = QuantityInProcess; + this.type = 4278684876; + } + } + IFC4X32.IfcRelAssignsToProcess = IfcRelAssignsToProcess; + class IfcRelAssignsToProduct extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingProduct) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingProduct = RelatingProduct; + this.type = 2857406711; + } + } + IFC4X32.IfcRelAssignsToProduct = IfcRelAssignsToProduct; + class IfcRelAssignsToResource extends IfcRelAssigns { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType, RelatingResource) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatedObjectsType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatedObjectsType = RelatedObjectsType; + this.RelatingResource = RelatingResource; + this.type = 205026976; + } + } + IFC4X32.IfcRelAssignsToResource = IfcRelAssignsToResource; + class IfcRelAssociates extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.type = 1865459582; + } + } + IFC4X32.IfcRelAssociates = IfcRelAssociates; + class IfcRelAssociatesApproval extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingApproval) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingApproval = RelatingApproval; + this.type = 4095574036; + } + } + IFC4X32.IfcRelAssociatesApproval = IfcRelAssociatesApproval; + class IfcRelAssociatesClassification extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingClassification) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingClassification = RelatingClassification; + this.type = 919958153; + } + } + IFC4X32.IfcRelAssociatesClassification = IfcRelAssociatesClassification; + class IfcRelAssociatesConstraint extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, Intent, RelatingConstraint) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.Intent = Intent; + this.RelatingConstraint = RelatingConstraint; + this.type = 2728634034; + } + } + IFC4X32.IfcRelAssociatesConstraint = IfcRelAssociatesConstraint; + class IfcRelAssociatesDocument extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingDocument) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingDocument = RelatingDocument; + this.type = 982818633; + } + } + IFC4X32.IfcRelAssociatesDocument = IfcRelAssociatesDocument; + class IfcRelAssociatesLibrary extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingLibrary) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingLibrary = RelatingLibrary; + this.type = 3840914261; + } + } + IFC4X32.IfcRelAssociatesLibrary = IfcRelAssociatesLibrary; + class IfcRelAssociatesMaterial extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingMaterial) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingMaterial = RelatingMaterial; + this.type = 2655215786; + } + } + IFC4X32.IfcRelAssociatesMaterial = IfcRelAssociatesMaterial; + class IfcRelAssociatesProfileDef extends IfcRelAssociates { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingProfileDef) { + super(GlobalId, OwnerHistory, Name, Description, RelatedObjects); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingProfileDef = RelatingProfileDef; + this.type = 1033248425; + } + } + IFC4X32.IfcRelAssociatesProfileDef = IfcRelAssociatesProfileDef; + class IfcRelConnects extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 826625072; + } + } + IFC4X32.IfcRelConnects = IfcRelConnects; + class IfcRelConnectsElements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ConnectionGeometry = ConnectionGeometry; + this.RelatingElement = RelatingElement; + this.RelatedElement = RelatedElement; + this.type = 1204542856; + } + } + IFC4X32.IfcRelConnectsElements = IfcRelConnectsElements; + class IfcRelConnectsPathElements extends IfcRelConnectsElements { + constructor(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement, RelatingPriorities, RelatedPriorities, RelatedConnectionType, RelatingConnectionType) { + super(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ConnectionGeometry = ConnectionGeometry; + this.RelatingElement = RelatingElement; + this.RelatedElement = RelatedElement; + this.RelatingPriorities = RelatingPriorities; + this.RelatedPriorities = RelatedPriorities; + this.RelatedConnectionType = RelatedConnectionType; + this.RelatingConnectionType = RelatingConnectionType; + this.type = 3945020480; + } + } + IFC4X32.IfcRelConnectsPathElements = IfcRelConnectsPathElements; + class IfcRelConnectsPortToElement extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingPort, RelatedElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingPort = RelatingPort; + this.RelatedElement = RelatedElement; + this.type = 4201705270; + } + } + IFC4X32.IfcRelConnectsPortToElement = IfcRelConnectsPortToElement; + class IfcRelConnectsPorts extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingPort, RelatedPort, RealizingElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingPort = RelatingPort; + this.RelatedPort = RelatedPort; + this.RealizingElement = RealizingElement; + this.type = 3190031847; + } + } + IFC4X32.IfcRelConnectsPorts = IfcRelConnectsPorts; + class IfcRelConnectsStructuralActivity extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingElement, RelatedStructuralActivity) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingElement = RelatingElement; + this.RelatedStructuralActivity = RelatedStructuralActivity; + this.type = 2127690289; + } + } + IFC4X32.IfcRelConnectsStructuralActivity = IfcRelConnectsStructuralActivity; + class IfcRelConnectsStructuralMember extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingStructuralMember, RelatedStructuralConnection, AppliedCondition, AdditionalConditions, SupportedLength, ConditionCoordinateSystem) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingStructuralMember = RelatingStructuralMember; + this.RelatedStructuralConnection = RelatedStructuralConnection; + this.AppliedCondition = AppliedCondition; + this.AdditionalConditions = AdditionalConditions; + this.SupportedLength = SupportedLength; + this.ConditionCoordinateSystem = ConditionCoordinateSystem; + this.type = 1638771189; + } + } + IFC4X32.IfcRelConnectsStructuralMember = IfcRelConnectsStructuralMember; + class IfcRelConnectsWithEccentricity extends IfcRelConnectsStructuralMember { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingStructuralMember, RelatedStructuralConnection, AppliedCondition, AdditionalConditions, SupportedLength, ConditionCoordinateSystem, ConnectionConstraint) { + super(GlobalId, OwnerHistory, Name, Description, RelatingStructuralMember, RelatedStructuralConnection, AppliedCondition, AdditionalConditions, SupportedLength, ConditionCoordinateSystem); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingStructuralMember = RelatingStructuralMember; + this.RelatedStructuralConnection = RelatedStructuralConnection; + this.AppliedCondition = AppliedCondition; + this.AdditionalConditions = AdditionalConditions; + this.SupportedLength = SupportedLength; + this.ConditionCoordinateSystem = ConditionCoordinateSystem; + this.ConnectionConstraint = ConnectionConstraint; + this.type = 504942748; + } + } + IFC4X32.IfcRelConnectsWithEccentricity = IfcRelConnectsWithEccentricity; + class IfcRelConnectsWithRealizingElements extends IfcRelConnectsElements { + constructor(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement, RealizingElements, ConnectionType) { + super(GlobalId, OwnerHistory, Name, Description, ConnectionGeometry, RelatingElement, RelatedElement); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ConnectionGeometry = ConnectionGeometry; + this.RelatingElement = RelatingElement; + this.RelatedElement = RelatedElement; + this.RealizingElements = RealizingElements; + this.ConnectionType = ConnectionType; + this.type = 3678494232; + } + } + IFC4X32.IfcRelConnectsWithRealizingElements = IfcRelConnectsWithRealizingElements; + class IfcRelContainedInSpatialStructure extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedElements, RelatingStructure) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedElements = RelatedElements; + this.RelatingStructure = RelatingStructure; + this.type = 3242617779; + } + } + IFC4X32.IfcRelContainedInSpatialStructure = IfcRelContainedInSpatialStructure; + class IfcRelCoversBldgElements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingBuildingElement, RelatedCoverings) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingBuildingElement = RelatingBuildingElement; + this.RelatedCoverings = RelatedCoverings; + this.type = 886880790; + } + } + IFC4X32.IfcRelCoversBldgElements = IfcRelCoversBldgElements; + class IfcRelCoversSpaces extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedCoverings) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSpace = RelatingSpace; + this.RelatedCoverings = RelatedCoverings; + this.type = 2802773753; + } + } + IFC4X32.IfcRelCoversSpaces = IfcRelCoversSpaces; + class IfcRelDeclares extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingContext, RelatedDefinitions) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingContext = RelatingContext; + this.RelatedDefinitions = RelatedDefinitions; + this.type = 2565941209; + } + } + IFC4X32.IfcRelDeclares = IfcRelDeclares; + class IfcRelDecomposes extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 2551354335; + } + } + IFC4X32.IfcRelDecomposes = IfcRelDecomposes; + class IfcRelDefines extends IfcRelationship { + constructor(GlobalId, OwnerHistory, Name, Description) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.type = 693640335; + } + } + IFC4X32.IfcRelDefines = IfcRelDefines; + class IfcRelDefinesByObject extends IfcRelDefines { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingObject) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingObject = RelatingObject; + this.type = 1462361463; + } + } + IFC4X32.IfcRelDefinesByObject = IfcRelDefinesByObject; + class IfcRelDefinesByProperties extends IfcRelDefines { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingPropertyDefinition) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingPropertyDefinition = RelatingPropertyDefinition; + this.type = 4186316022; + } + } + IFC4X32.IfcRelDefinesByProperties = IfcRelDefinesByProperties; + class IfcRelDefinesByTemplate extends IfcRelDefines { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedPropertySets, RelatingTemplate) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedPropertySets = RelatedPropertySets; + this.RelatingTemplate = RelatingTemplate; + this.type = 307848117; + } + } + IFC4X32.IfcRelDefinesByTemplate = IfcRelDefinesByTemplate; + class IfcRelDefinesByType extends IfcRelDefines { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedObjects, RelatingType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedObjects = RelatedObjects; + this.RelatingType = RelatingType; + this.type = 781010003; + } + } + IFC4X32.IfcRelDefinesByType = IfcRelDefinesByType; + class IfcRelFillsElement extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingOpeningElement, RelatedBuildingElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingOpeningElement = RelatingOpeningElement; + this.RelatedBuildingElement = RelatedBuildingElement; + this.type = 3940055652; + } + } + IFC4X32.IfcRelFillsElement = IfcRelFillsElement; + class IfcRelFlowControlElements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedControlElements, RelatingFlowElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedControlElements = RelatedControlElements; + this.RelatingFlowElement = RelatingFlowElement; + this.type = 279856033; + } + } + IFC4X32.IfcRelFlowControlElements = IfcRelFlowControlElements; + class IfcRelInterferesElements extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingElement, RelatedElement, InterferenceGeometry, InterferenceType, ImpliedOrder, InterferenceSpace) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingElement = RelatingElement; + this.RelatedElement = RelatedElement; + this.InterferenceGeometry = InterferenceGeometry; + this.InterferenceType = InterferenceType; + this.ImpliedOrder = ImpliedOrder; + this.InterferenceSpace = InterferenceSpace; + this.type = 427948657; + } + } + IFC4X32.IfcRelInterferesElements = IfcRelInterferesElements; + class IfcRelNests extends IfcRelDecomposes { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingObject, RelatedObjects) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingObject = RelatingObject; + this.RelatedObjects = RelatedObjects; + this.type = 3268803585; + } + } + IFC4X32.IfcRelNests = IfcRelNests; + class IfcRelPositions extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingPositioningElement, RelatedProducts) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingPositioningElement = RelatingPositioningElement; + this.RelatedProducts = RelatedProducts; + this.type = 1441486842; + } + } + IFC4X32.IfcRelPositions = IfcRelPositions; + class IfcRelProjectsElement extends IfcRelDecomposes { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingElement, RelatedFeatureElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingElement = RelatingElement; + this.RelatedFeatureElement = RelatedFeatureElement; + this.type = 750771296; + } + } + IFC4X32.IfcRelProjectsElement = IfcRelProjectsElement; + class IfcRelReferencedInSpatialStructure extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatedElements, RelatingStructure) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatedElements = RelatedElements; + this.RelatingStructure = RelatingStructure; + this.type = 1245217292; + } + } + IFC4X32.IfcRelReferencedInSpatialStructure = IfcRelReferencedInSpatialStructure; + class IfcRelSequence extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingProcess, RelatedProcess, TimeLag, SequenceType, UserDefinedSequenceType) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingProcess = RelatingProcess; + this.RelatedProcess = RelatedProcess; + this.TimeLag = TimeLag; + this.SequenceType = SequenceType; + this.UserDefinedSequenceType = UserDefinedSequenceType; + this.type = 4122056220; + } + } + IFC4X32.IfcRelSequence = IfcRelSequence; + class IfcRelServicesBuildings extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSystem, RelatedBuildings) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSystem = RelatingSystem; + this.RelatedBuildings = RelatedBuildings; + this.type = 366585022; + } + } + IFC4X32.IfcRelServicesBuildings = IfcRelServicesBuildings; + class IfcRelSpaceBoundary extends IfcRelConnects { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedBuildingElement, ConnectionGeometry, PhysicalOrVirtualBoundary, InternalOrExternalBoundary) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSpace = RelatingSpace; + this.RelatedBuildingElement = RelatedBuildingElement; + this.ConnectionGeometry = ConnectionGeometry; + this.PhysicalOrVirtualBoundary = PhysicalOrVirtualBoundary; + this.InternalOrExternalBoundary = InternalOrExternalBoundary; + this.type = 3451746338; + } + } + IFC4X32.IfcRelSpaceBoundary = IfcRelSpaceBoundary; + class IfcRelSpaceBoundary1stLevel extends IfcRelSpaceBoundary { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedBuildingElement, ConnectionGeometry, PhysicalOrVirtualBoundary, InternalOrExternalBoundary, ParentBoundary) { + super(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedBuildingElement, ConnectionGeometry, PhysicalOrVirtualBoundary, InternalOrExternalBoundary); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSpace = RelatingSpace; + this.RelatedBuildingElement = RelatedBuildingElement; + this.ConnectionGeometry = ConnectionGeometry; + this.PhysicalOrVirtualBoundary = PhysicalOrVirtualBoundary; + this.InternalOrExternalBoundary = InternalOrExternalBoundary; + this.ParentBoundary = ParentBoundary; + this.type = 3523091289; + } + } + IFC4X32.IfcRelSpaceBoundary1stLevel = IfcRelSpaceBoundary1stLevel; + class IfcRelSpaceBoundary2ndLevel extends IfcRelSpaceBoundary1stLevel { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedBuildingElement, ConnectionGeometry, PhysicalOrVirtualBoundary, InternalOrExternalBoundary, ParentBoundary, CorrespondingBoundary) { + super(GlobalId, OwnerHistory, Name, Description, RelatingSpace, RelatedBuildingElement, ConnectionGeometry, PhysicalOrVirtualBoundary, InternalOrExternalBoundary, ParentBoundary); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingSpace = RelatingSpace; + this.RelatedBuildingElement = RelatedBuildingElement; + this.ConnectionGeometry = ConnectionGeometry; + this.PhysicalOrVirtualBoundary = PhysicalOrVirtualBoundary; + this.InternalOrExternalBoundary = InternalOrExternalBoundary; + this.ParentBoundary = ParentBoundary; + this.CorrespondingBoundary = CorrespondingBoundary; + this.type = 1521410863; + } + } + IFC4X32.IfcRelSpaceBoundary2ndLevel = IfcRelSpaceBoundary2ndLevel; + class IfcRelVoidsElement extends IfcRelDecomposes { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingBuildingElement, RelatedOpeningElement) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingBuildingElement = RelatingBuildingElement; + this.RelatedOpeningElement = RelatedOpeningElement; + this.type = 1401173127; + } + } + IFC4X32.IfcRelVoidsElement = IfcRelVoidsElement; + class IfcReparametrisedCompositeCurveSegment extends IfcCompositeCurveSegment { + constructor(Transition, SameSense, ParentCurve, ParamLength) { + super(Transition, SameSense, ParentCurve); + this.Transition = Transition; + this.SameSense = SameSense; + this.ParentCurve = ParentCurve; + this.ParamLength = ParamLength; + this.type = 816062949; + } + } + IFC4X32.IfcReparametrisedCompositeCurveSegment = IfcReparametrisedCompositeCurveSegment; + class IfcResource extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.type = 2914609552; + } + } + IFC4X32.IfcResource = IfcResource; + class IfcRevolvedAreaSolid extends IfcSweptAreaSolid { + constructor(SweptArea, Position, Axis2, Angle) { + super(SweptArea, Position); + this.SweptArea = SweptArea; + this.Position = Position; + this.Axis = Axis2; + this.Angle = Angle; + this.type = 1856042241; + } + } + IFC4X32.IfcRevolvedAreaSolid = IfcRevolvedAreaSolid; + class IfcRevolvedAreaSolidTapered extends IfcRevolvedAreaSolid { + constructor(SweptArea, Position, Axis2, Angle, EndSweptArea) { + super(SweptArea, Position, Axis2, Angle); + this.SweptArea = SweptArea; + this.Position = Position; + this.Axis = Axis2; + this.Angle = Angle; + this.EndSweptArea = EndSweptArea; + this.type = 3243963512; + } + } + IFC4X32.IfcRevolvedAreaSolidTapered = IfcRevolvedAreaSolidTapered; + class IfcRightCircularCone extends IfcCsgPrimitive3D { + constructor(Position, Height, BottomRadius) { + super(Position); + this.Position = Position; + this.Height = Height; + this.BottomRadius = BottomRadius; + this.type = 4158566097; + } + } + IFC4X32.IfcRightCircularCone = IfcRightCircularCone; + class IfcRightCircularCylinder extends IfcCsgPrimitive3D { + constructor(Position, Height, Radius) { + super(Position); + this.Position = Position; + this.Height = Height; + this.Radius = Radius; + this.type = 3626867408; + } + } + IFC4X32.IfcRightCircularCylinder = IfcRightCircularCylinder; + class IfcSectionedSolid extends IfcSolidModel { + constructor(Directrix, CrossSections) { + super(); + this.Directrix = Directrix; + this.CrossSections = CrossSections; + this.type = 1862484736; + } + } + IFC4X32.IfcSectionedSolid = IfcSectionedSolid; + class IfcSectionedSolidHorizontal extends IfcSectionedSolid { + constructor(Directrix, CrossSections, CrossSectionPositions) { + super(Directrix, CrossSections); + this.Directrix = Directrix; + this.CrossSections = CrossSections; + this.CrossSectionPositions = CrossSectionPositions; + this.type = 1290935644; + } + } + IFC4X32.IfcSectionedSolidHorizontal = IfcSectionedSolidHorizontal; + class IfcSectionedSurface extends IfcSurface { + constructor(Directrix, CrossSectionPositions, CrossSections) { + super(); + this.Directrix = Directrix; + this.CrossSectionPositions = CrossSectionPositions; + this.CrossSections = CrossSections; + this.type = 1356537516; + } + } + IFC4X32.IfcSectionedSurface = IfcSectionedSurface; + class IfcSimplePropertyTemplate extends IfcPropertyTemplate { + constructor(GlobalId, OwnerHistory, Name, Description, TemplateType, PrimaryMeasureType, SecondaryMeasureType, Enumerators, PrimaryUnit, SecondaryUnit, Expression, AccessState) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.TemplateType = TemplateType; + this.PrimaryMeasureType = PrimaryMeasureType; + this.SecondaryMeasureType = SecondaryMeasureType; + this.Enumerators = Enumerators; + this.PrimaryUnit = PrimaryUnit; + this.SecondaryUnit = SecondaryUnit; + this.Expression = Expression; + this.AccessState = AccessState; + this.type = 3663146110; + } + } + IFC4X32.IfcSimplePropertyTemplate = IfcSimplePropertyTemplate; + class IfcSpatialElement extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.type = 1412071761; + } + } + IFC4X32.IfcSpatialElement = IfcSpatialElement; + class IfcSpatialElementType extends IfcTypeProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 710998568; + } + } + IFC4X32.IfcSpatialElementType = IfcSpatialElementType; + class IfcSpatialStructureElement extends IfcSpatialElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.type = 2706606064; + } + } + IFC4X32.IfcSpatialStructureElement = IfcSpatialStructureElement; + class IfcSpatialStructureElementType extends IfcSpatialElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3893378262; + } + } + IFC4X32.IfcSpatialStructureElementType = IfcSpatialStructureElementType; + class IfcSpatialZone extends IfcSpatialElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.PredefinedType = PredefinedType; + this.type = 463610769; + } + } + IFC4X32.IfcSpatialZone = IfcSpatialZone; + class IfcSpatialZoneType extends IfcSpatialElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.LongName = LongName; + this.type = 2481509218; + } + } + IFC4X32.IfcSpatialZoneType = IfcSpatialZoneType; + class IfcSphere extends IfcCsgPrimitive3D { + constructor(Position, Radius) { + super(Position); + this.Position = Position; + this.Radius = Radius; + this.type = 451544542; + } + } + IFC4X32.IfcSphere = IfcSphere; + class IfcSphericalSurface extends IfcElementarySurface { + constructor(Position, Radius) { + super(Position); + this.Position = Position; + this.Radius = Radius; + this.type = 4015995234; + } + } + IFC4X32.IfcSphericalSurface = IfcSphericalSurface; + class IfcSpiral extends IfcCurve { + constructor(Position) { + super(); + this.Position = Position; + this.type = 2735484536; + } + } + IFC4X32.IfcSpiral = IfcSpiral; + class IfcStructuralActivity extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.type = 3544373492; + } + } + IFC4X32.IfcStructuralActivity = IfcStructuralActivity; + class IfcStructuralItem extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 3136571912; + } + } + IFC4X32.IfcStructuralItem = IfcStructuralItem; + class IfcStructuralMember extends IfcStructuralItem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 530289379; + } + } + IFC4X32.IfcStructuralMember = IfcStructuralMember; + class IfcStructuralReaction extends IfcStructuralActivity { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.type = 3689010777; + } + } + IFC4X32.IfcStructuralReaction = IfcStructuralReaction; + class IfcStructuralSurfaceMember extends IfcStructuralMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Thickness) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.Thickness = Thickness; + this.type = 3979015343; + } + } + IFC4X32.IfcStructuralSurfaceMember = IfcStructuralSurfaceMember; + class IfcStructuralSurfaceMemberVarying extends IfcStructuralSurfaceMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Thickness) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Thickness); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.Thickness = Thickness; + this.type = 2218152070; + } + } + IFC4X32.IfcStructuralSurfaceMemberVarying = IfcStructuralSurfaceMemberVarying; + class IfcStructuralSurfaceReaction extends IfcStructuralReaction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.PredefinedType = PredefinedType; + this.type = 603775116; + } + } + IFC4X32.IfcStructuralSurfaceReaction = IfcStructuralSurfaceReaction; + class IfcSubContractResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 4095615324; + } + } + IFC4X32.IfcSubContractResourceType = IfcSubContractResourceType; + class IfcSurfaceCurve extends IfcCurve { + constructor(Curve3D, AssociatedGeometry, MasterRepresentation) { + super(); + this.Curve3D = Curve3D; + this.AssociatedGeometry = AssociatedGeometry; + this.MasterRepresentation = MasterRepresentation; + this.type = 699246055; + } + } + IFC4X32.IfcSurfaceCurve = IfcSurfaceCurve; + class IfcSurfaceCurveSweptAreaSolid extends IfcDirectrixCurveSweptAreaSolid { + constructor(SweptArea, Position, Directrix, StartParam, EndParam, ReferenceSurface) { + super(SweptArea, Position, Directrix, StartParam, EndParam); + this.SweptArea = SweptArea; + this.Position = Position; + this.Directrix = Directrix; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.ReferenceSurface = ReferenceSurface; + this.type = 2028607225; + } + } + IFC4X32.IfcSurfaceCurveSweptAreaSolid = IfcSurfaceCurveSweptAreaSolid; + class IfcSurfaceOfLinearExtrusion extends IfcSweptSurface { + constructor(SweptCurve, Position, ExtrudedDirection, Depth) { + super(SweptCurve, Position); + this.SweptCurve = SweptCurve; + this.Position = Position; + this.ExtrudedDirection = ExtrudedDirection; + this.Depth = Depth; + this.type = 2809605785; + } + } + IFC4X32.IfcSurfaceOfLinearExtrusion = IfcSurfaceOfLinearExtrusion; + class IfcSurfaceOfRevolution extends IfcSweptSurface { + constructor(SweptCurve, Position, AxisPosition) { + super(SweptCurve, Position); + this.SweptCurve = SweptCurve; + this.Position = Position; + this.AxisPosition = AxisPosition; + this.type = 4124788165; + } + } + IFC4X32.IfcSurfaceOfRevolution = IfcSurfaceOfRevolution; + class IfcSystemFurnitureElementType extends IfcFurnishingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1580310250; + } + } + IFC4X32.IfcSystemFurnitureElementType = IfcSystemFurnitureElementType; + class IfcTask extends IfcProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Status, WorkMethod, IsMilestone, Priority, TaskTime, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Status = Status; + this.WorkMethod = WorkMethod; + this.IsMilestone = IsMilestone; + this.Priority = Priority; + this.TaskTime = TaskTime; + this.PredefinedType = PredefinedType; + this.type = 3473067441; + } + } + IFC4X32.IfcTask = IfcTask; + class IfcTaskType extends IfcTypeProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType, PredefinedType, WorkMethod) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ProcessType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ProcessType = ProcessType; + this.PredefinedType = PredefinedType; + this.WorkMethod = WorkMethod; + this.type = 3206491090; + } + } + IFC4X32.IfcTaskType = IfcTaskType; + class IfcTessellatedFaceSet extends IfcTessellatedItem { + constructor(Coordinates) { + super(); + this.Coordinates = Coordinates; + this.type = 2387106220; + } + } + IFC4X32.IfcTessellatedFaceSet = IfcTessellatedFaceSet; + class IfcThirdOrderPolynomialSpiral extends IfcSpiral { + constructor(Position, CubicTerm, QuadraticTerm, LinearTerm, ConstantTerm) { + super(Position); + this.Position = Position; + this.CubicTerm = CubicTerm; + this.QuadraticTerm = QuadraticTerm; + this.LinearTerm = LinearTerm; + this.ConstantTerm = ConstantTerm; + this.type = 782932809; + } + } + IFC4X32.IfcThirdOrderPolynomialSpiral = IfcThirdOrderPolynomialSpiral; + class IfcToroidalSurface extends IfcElementarySurface { + constructor(Position, MajorRadius, MinorRadius) { + super(Position); + this.Position = Position; + this.MajorRadius = MajorRadius; + this.MinorRadius = MinorRadius; + this.type = 1935646853; + } + } + IFC4X32.IfcToroidalSurface = IfcToroidalSurface; + class IfcTransportationDeviceType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3665877780; + } + } + IFC4X32.IfcTransportationDeviceType = IfcTransportationDeviceType; + class IfcTriangulatedFaceSet extends IfcTessellatedFaceSet { + constructor(Coordinates, Normals, Closed, CoordIndex, PnIndex) { + super(Coordinates); + this.Coordinates = Coordinates; + this.Normals = Normals; + this.Closed = Closed; + this.CoordIndex = CoordIndex; + this.PnIndex = PnIndex; + this.type = 2916149573; + } + } + IFC4X32.IfcTriangulatedFaceSet = IfcTriangulatedFaceSet; + class IfcTriangulatedIrregularNetwork extends IfcTriangulatedFaceSet { + constructor(Coordinates, Normals, Closed, CoordIndex, PnIndex, Flags) { + super(Coordinates, Normals, Closed, CoordIndex, PnIndex); + this.Coordinates = Coordinates; + this.Normals = Normals; + this.Closed = Closed; + this.CoordIndex = CoordIndex; + this.PnIndex = PnIndex; + this.Flags = Flags; + this.type = 1229763772; + } + } + IFC4X32.IfcTriangulatedIrregularNetwork = IfcTriangulatedIrregularNetwork; + class IfcVehicleType extends IfcTransportationDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3651464721; + } + } + IFC4X32.IfcVehicleType = IfcVehicleType; + class IfcWindowLiningProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, LiningDepth, LiningThickness, TransomThickness, MullionThickness, FirstTransomOffset, SecondTransomOffset, FirstMullionOffset, SecondMullionOffset, ShapeAspectStyle, LiningOffset, LiningToPanelOffsetX, LiningToPanelOffsetY) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.LiningDepth = LiningDepth; + this.LiningThickness = LiningThickness; + this.TransomThickness = TransomThickness; + this.MullionThickness = MullionThickness; + this.FirstTransomOffset = FirstTransomOffset; + this.SecondTransomOffset = SecondTransomOffset; + this.FirstMullionOffset = FirstMullionOffset; + this.SecondMullionOffset = SecondMullionOffset; + this.ShapeAspectStyle = ShapeAspectStyle; + this.LiningOffset = LiningOffset; + this.LiningToPanelOffsetX = LiningToPanelOffsetX; + this.LiningToPanelOffsetY = LiningToPanelOffsetY; + this.type = 336235671; + } + } + IFC4X32.IfcWindowLiningProperties = IfcWindowLiningProperties; + class IfcWindowPanelProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, OperationType, PanelPosition, FrameDepth, FrameThickness, ShapeAspectStyle) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.OperationType = OperationType; + this.PanelPosition = PanelPosition; + this.FrameDepth = FrameDepth; + this.FrameThickness = FrameThickness; + this.ShapeAspectStyle = ShapeAspectStyle; + this.type = 512836454; + } + } + IFC4X32.IfcWindowPanelProperties = IfcWindowPanelProperties; + class IfcActor extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TheActor) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TheActor = TheActor; + this.type = 2296667514; + } + } + IFC4X32.IfcActor = IfcActor; + class IfcAdvancedBrep extends IfcManifoldSolidBrep { + constructor(Outer) { + super(Outer); + this.Outer = Outer; + this.type = 1635779807; + } + } + IFC4X32.IfcAdvancedBrep = IfcAdvancedBrep; + class IfcAdvancedBrepWithVoids extends IfcAdvancedBrep { + constructor(Outer, Voids) { + super(Outer); + this.Outer = Outer; + this.Voids = Voids; + this.type = 2603310189; + } + } + IFC4X32.IfcAdvancedBrepWithVoids = IfcAdvancedBrepWithVoids; + class IfcAnnotation extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.type = 1674181508; + } + } + IFC4X32.IfcAnnotation = IfcAnnotation; + class IfcBSplineSurface extends IfcBoundedSurface { + constructor(UDegree, VDegree, ControlPointsList, SurfaceForm, UClosed, VClosed, SelfIntersect) { + super(); + this.UDegree = UDegree; + this.VDegree = VDegree; + this.ControlPointsList = ControlPointsList; + this.SurfaceForm = SurfaceForm; + this.UClosed = UClosed; + this.VClosed = VClosed; + this.SelfIntersect = SelfIntersect; + this.type = 2887950389; + } + } + IFC4X32.IfcBSplineSurface = IfcBSplineSurface; + class IfcBSplineSurfaceWithKnots extends IfcBSplineSurface { + constructor(UDegree, VDegree, ControlPointsList, SurfaceForm, UClosed, VClosed, SelfIntersect, UMultiplicities, VMultiplicities, UKnots, VKnots, KnotSpec) { + super(UDegree, VDegree, ControlPointsList, SurfaceForm, UClosed, VClosed, SelfIntersect); + this.UDegree = UDegree; + this.VDegree = VDegree; + this.ControlPointsList = ControlPointsList; + this.SurfaceForm = SurfaceForm; + this.UClosed = UClosed; + this.VClosed = VClosed; + this.SelfIntersect = SelfIntersect; + this.UMultiplicities = UMultiplicities; + this.VMultiplicities = VMultiplicities; + this.UKnots = UKnots; + this.VKnots = VKnots; + this.KnotSpec = KnotSpec; + this.type = 167062518; + } + } + IFC4X32.IfcBSplineSurfaceWithKnots = IfcBSplineSurfaceWithKnots; + class IfcBlock extends IfcCsgPrimitive3D { + constructor(Position, XLength, YLength, ZLength) { + super(Position); + this.Position = Position; + this.XLength = XLength; + this.YLength = YLength; + this.ZLength = ZLength; + this.type = 1334484129; + } + } + IFC4X32.IfcBlock = IfcBlock; + class IfcBooleanClippingResult extends IfcBooleanResult { + constructor(Operator, FirstOperand, SecondOperand) { + super(Operator, FirstOperand, SecondOperand); + this.Operator = Operator; + this.FirstOperand = FirstOperand; + this.SecondOperand = SecondOperand; + this.type = 3649129432; + } + } + IFC4X32.IfcBooleanClippingResult = IfcBooleanClippingResult; + class IfcBoundedCurve extends IfcCurve { + constructor() { + super(); + this.type = 1260505505; + } + } + IFC4X32.IfcBoundedCurve = IfcBoundedCurve; + class IfcBuildingStorey extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, Elevation) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.Elevation = Elevation; + this.type = 3124254112; + } + } + IFC4X32.IfcBuildingStorey = IfcBuildingStorey; + class IfcBuiltElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1626504194; + } + } + IFC4X32.IfcBuiltElementType = IfcBuiltElementType; + class IfcChimneyType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2197970202; + } + } + IFC4X32.IfcChimneyType = IfcChimneyType; + class IfcCircleHollowProfileDef extends IfcCircleProfileDef { + constructor(ProfileType, ProfileName, Position, Radius, WallThickness) { + super(ProfileType, ProfileName, Position, Radius); + this.ProfileType = ProfileType; + this.ProfileName = ProfileName; + this.Position = Position; + this.Radius = Radius; + this.WallThickness = WallThickness; + this.type = 2937912522; + } + } + IFC4X32.IfcCircleHollowProfileDef = IfcCircleHollowProfileDef; + class IfcCivilElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3893394355; + } + } + IFC4X32.IfcCivilElementType = IfcCivilElementType; + class IfcClothoid extends IfcSpiral { + constructor(Position, ClothoidConstant) { + super(Position); + this.Position = Position; + this.ClothoidConstant = ClothoidConstant; + this.type = 3497074424; + } + } + IFC4X32.IfcClothoid = IfcClothoid; + class IfcColumnType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 300633059; + } + } + IFC4X32.IfcColumnType = IfcColumnType; + class IfcComplexPropertyTemplate extends IfcPropertyTemplate { + constructor(GlobalId, OwnerHistory, Name, Description, UsageName, TemplateType, HasPropertyTemplates) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.UsageName = UsageName; + this.TemplateType = TemplateType; + this.HasPropertyTemplates = HasPropertyTemplates; + this.type = 3875453745; + } + } + IFC4X32.IfcComplexPropertyTemplate = IfcComplexPropertyTemplate; + class IfcCompositeCurve extends IfcBoundedCurve { + constructor(Segments, SelfIntersect) { + super(); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 3732776249; + } + } + IFC4X32.IfcCompositeCurve = IfcCompositeCurve; + class IfcCompositeCurveOnSurface extends IfcCompositeCurve { + constructor(Segments, SelfIntersect) { + super(Segments, SelfIntersect); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 15328376; + } + } + IFC4X32.IfcCompositeCurveOnSurface = IfcCompositeCurveOnSurface; + class IfcConic extends IfcCurve { + constructor(Position) { + super(); + this.Position = Position; + this.type = 2510884976; + } + } + IFC4X32.IfcConic = IfcConic; + class IfcConstructionEquipmentResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 2185764099; + } + } + IFC4X32.IfcConstructionEquipmentResourceType = IfcConstructionEquipmentResourceType; + class IfcConstructionMaterialResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 4105962743; + } + } + IFC4X32.IfcConstructionMaterialResourceType = IfcConstructionMaterialResourceType; + class IfcConstructionProductResourceType extends IfcConstructionResourceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, Identification, LongDescription, ResourceType, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.ResourceType = ResourceType; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 1525564444; + } + } + IFC4X32.IfcConstructionProductResourceType = IfcConstructionProductResourceType; + class IfcConstructionResource extends IfcResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.type = 2559216714; + } + } + IFC4X32.IfcConstructionResource = IfcConstructionResource; + class IfcControl extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.type = 3293443760; + } + } + IFC4X32.IfcControl = IfcControl; + class IfcCosineSpiral extends IfcSpiral { + constructor(Position, CosineTerm, ConstantTerm) { + super(Position); + this.Position = Position; + this.CosineTerm = CosineTerm; + this.ConstantTerm = ConstantTerm; + this.type = 2000195564; + } + } + IFC4X32.IfcCosineSpiral = IfcCosineSpiral; + class IfcCostItem extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, PredefinedType, CostValues, CostQuantities) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.PredefinedType = PredefinedType; + this.CostValues = CostValues; + this.CostQuantities = CostQuantities; + this.type = 3895139033; + } + } + IFC4X32.IfcCostItem = IfcCostItem; + class IfcCostSchedule extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, PredefinedType, Status, SubmittedOn, UpdateDate) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.PredefinedType = PredefinedType; + this.Status = Status; + this.SubmittedOn = SubmittedOn; + this.UpdateDate = UpdateDate; + this.type = 1419761937; + } + } + IFC4X32.IfcCostSchedule = IfcCostSchedule; + class IfcCourseType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4189326743; + } + } + IFC4X32.IfcCourseType = IfcCourseType; + class IfcCoveringType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1916426348; + } + } + IFC4X32.IfcCoveringType = IfcCoveringType; + class IfcCrewResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 3295246426; + } + } + IFC4X32.IfcCrewResource = IfcCrewResource; + class IfcCurtainWallType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1457835157; + } + } + IFC4X32.IfcCurtainWallType = IfcCurtainWallType; + class IfcCylindricalSurface extends IfcElementarySurface { + constructor(Position, Radius) { + super(Position); + this.Position = Position; + this.Radius = Radius; + this.type = 1213902940; + } + } + IFC4X32.IfcCylindricalSurface = IfcCylindricalSurface; + class IfcDeepFoundationType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1306400036; + } + } + IFC4X32.IfcDeepFoundationType = IfcDeepFoundationType; + class IfcDirectrixDerivedReferenceSweptAreaSolid extends IfcFixedReferenceSweptAreaSolid { + constructor(SweptArea, Position, Directrix, StartParam, EndParam, FixedReference) { + super(SweptArea, Position, Directrix, StartParam, EndParam, FixedReference); + this.SweptArea = SweptArea; + this.Position = Position; + this.Directrix = Directrix; + this.StartParam = StartParam; + this.EndParam = EndParam; + this.FixedReference = FixedReference; + this.type = 4234616927; + } + } + IFC4X32.IfcDirectrixDerivedReferenceSweptAreaSolid = IfcDirectrixDerivedReferenceSweptAreaSolid; + class IfcDistributionElementType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3256556792; + } + } + IFC4X32.IfcDistributionElementType = IfcDistributionElementType; + class IfcDistributionFlowElementType extends IfcDistributionElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3849074793; + } + } + IFC4X32.IfcDistributionFlowElementType = IfcDistributionFlowElementType; + class IfcDoorLiningProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, LiningDepth, LiningThickness, ThresholdDepth, ThresholdThickness, TransomThickness, TransomOffset, LiningOffset, ThresholdOffset, CasingThickness, CasingDepth, ShapeAspectStyle, LiningToPanelOffsetX, LiningToPanelOffsetY) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.LiningDepth = LiningDepth; + this.LiningThickness = LiningThickness; + this.ThresholdDepth = ThresholdDepth; + this.ThresholdThickness = ThresholdThickness; + this.TransomThickness = TransomThickness; + this.TransomOffset = TransomOffset; + this.LiningOffset = LiningOffset; + this.ThresholdOffset = ThresholdOffset; + this.CasingThickness = CasingThickness; + this.CasingDepth = CasingDepth; + this.ShapeAspectStyle = ShapeAspectStyle; + this.LiningToPanelOffsetX = LiningToPanelOffsetX; + this.LiningToPanelOffsetY = LiningToPanelOffsetY; + this.type = 2963535650; + } + } + IFC4X32.IfcDoorLiningProperties = IfcDoorLiningProperties; + class IfcDoorPanelProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, PanelDepth, PanelOperation, PanelWidth, PanelPosition, ShapeAspectStyle) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.PanelDepth = PanelDepth; + this.PanelOperation = PanelOperation; + this.PanelWidth = PanelWidth; + this.PanelPosition = PanelPosition; + this.ShapeAspectStyle = ShapeAspectStyle; + this.type = 1714330368; + } + } + IFC4X32.IfcDoorPanelProperties = IfcDoorPanelProperties; + class IfcDoorType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, OperationType, ParameterTakesPrecedence, UserDefinedOperationType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.OperationType = OperationType; + this.ParameterTakesPrecedence = ParameterTakesPrecedence; + this.UserDefinedOperationType = UserDefinedOperationType; + this.type = 2323601079; + } + } + IFC4X32.IfcDoorType = IfcDoorType; + class IfcDraughtingPreDefinedColour extends IfcPreDefinedColour { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 445594917; + } + } + IFC4X32.IfcDraughtingPreDefinedColour = IfcDraughtingPreDefinedColour; + class IfcDraughtingPreDefinedCurveFont extends IfcPreDefinedCurveFont { + constructor(Name) { + super(Name); + this.Name = Name; + this.type = 4006246654; + } + } + IFC4X32.IfcDraughtingPreDefinedCurveFont = IfcDraughtingPreDefinedCurveFont; + class IfcElement extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1758889154; + } + } + IFC4X32.IfcElement = IfcElement; + class IfcElementAssembly extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, AssemblyPlace, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.AssemblyPlace = AssemblyPlace; + this.PredefinedType = PredefinedType; + this.type = 4123344466; + } + } + IFC4X32.IfcElementAssembly = IfcElementAssembly; + class IfcElementAssemblyType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2397081782; + } + } + IFC4X32.IfcElementAssemblyType = IfcElementAssemblyType; + class IfcElementComponent extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1623761950; + } + } + IFC4X32.IfcElementComponent = IfcElementComponent; + class IfcElementComponentType extends IfcElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2590856083; + } + } + IFC4X32.IfcElementComponentType = IfcElementComponentType; + class IfcEllipse extends IfcConic { + constructor(Position, SemiAxis1, SemiAxis2) { + super(Position); + this.Position = Position; + this.SemiAxis1 = SemiAxis1; + this.SemiAxis2 = SemiAxis2; + this.type = 1704287377; + } + } + IFC4X32.IfcEllipse = IfcEllipse; + class IfcEnergyConversionDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2107101300; + } + } + IFC4X32.IfcEnergyConversionDeviceType = IfcEnergyConversionDeviceType; + class IfcEngineType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 132023988; + } + } + IFC4X32.IfcEngineType = IfcEngineType; + class IfcEvaporativeCoolerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3174744832; + } + } + IFC4X32.IfcEvaporativeCoolerType = IfcEvaporativeCoolerType; + class IfcEvaporatorType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3390157468; + } + } + IFC4X32.IfcEvaporatorType = IfcEvaporatorType; + class IfcEvent extends IfcProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, PredefinedType, EventTriggerType, UserDefinedEventTriggerType, EventOccurenceTime) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.PredefinedType = PredefinedType; + this.EventTriggerType = EventTriggerType; + this.UserDefinedEventTriggerType = UserDefinedEventTriggerType; + this.EventOccurenceTime = EventOccurenceTime; + this.type = 4148101412; + } + } + IFC4X32.IfcEvent = IfcEvent; + class IfcExternalSpatialStructureElement extends IfcSpatialElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.type = 2853485674; + } + } + IFC4X32.IfcExternalSpatialStructureElement = IfcExternalSpatialStructureElement; + class IfcFacetedBrep extends IfcManifoldSolidBrep { + constructor(Outer) { + super(Outer); + this.Outer = Outer; + this.type = 807026263; + } + } + IFC4X32.IfcFacetedBrep = IfcFacetedBrep; + class IfcFacetedBrepWithVoids extends IfcFacetedBrep { + constructor(Outer, Voids) { + super(Outer); + this.Outer = Outer; + this.Voids = Voids; + this.type = 3737207727; + } + } + IFC4X32.IfcFacetedBrepWithVoids = IfcFacetedBrepWithVoids; + class IfcFacility extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.type = 24185140; + } + } + IFC4X32.IfcFacility = IfcFacility; + class IfcFacilityPart extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, UsageType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.UsageType = UsageType; + this.type = 1310830890; + } + } + IFC4X32.IfcFacilityPart = IfcFacilityPart; + class IfcFacilityPartCommon extends IfcFacilityPart { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, UsageType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, UsageType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.UsageType = UsageType; + this.PredefinedType = PredefinedType; + this.type = 4228831410; + } + } + IFC4X32.IfcFacilityPartCommon = IfcFacilityPartCommon; + class IfcFastener extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 647756555; + } + } + IFC4X32.IfcFastener = IfcFastener; + class IfcFastenerType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2489546625; + } + } + IFC4X32.IfcFastenerType = IfcFastenerType; + class IfcFeatureElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2827207264; + } + } + IFC4X32.IfcFeatureElement = IfcFeatureElement; + class IfcFeatureElementAddition extends IfcFeatureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2143335405; + } + } + IFC4X32.IfcFeatureElementAddition = IfcFeatureElementAddition; + class IfcFeatureElementSubtraction extends IfcFeatureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1287392070; + } + } + IFC4X32.IfcFeatureElementSubtraction = IfcFeatureElementSubtraction; + class IfcFlowControllerType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3907093117; + } + } + IFC4X32.IfcFlowControllerType = IfcFlowControllerType; + class IfcFlowFittingType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3198132628; + } + } + IFC4X32.IfcFlowFittingType = IfcFlowFittingType; + class IfcFlowMeterType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3815607619; + } + } + IFC4X32.IfcFlowMeterType = IfcFlowMeterType; + class IfcFlowMovingDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1482959167; + } + } + IFC4X32.IfcFlowMovingDeviceType = IfcFlowMovingDeviceType; + class IfcFlowSegmentType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1834744321; + } + } + IFC4X32.IfcFlowSegmentType = IfcFlowSegmentType; + class IfcFlowStorageDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 1339347760; + } + } + IFC4X32.IfcFlowStorageDeviceType = IfcFlowStorageDeviceType; + class IfcFlowTerminalType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2297155007; + } + } + IFC4X32.IfcFlowTerminalType = IfcFlowTerminalType; + class IfcFlowTreatmentDeviceType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 3009222698; + } + } + IFC4X32.IfcFlowTreatmentDeviceType = IfcFlowTreatmentDeviceType; + class IfcFootingType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1893162501; + } + } + IFC4X32.IfcFootingType = IfcFootingType; + class IfcFurnishingElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 263784265; + } + } + IFC4X32.IfcFurnishingElement = IfcFurnishingElement; + class IfcFurniture extends IfcFurnishingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1509553395; + } + } + IFC4X32.IfcFurniture = IfcFurniture; + class IfcGeographicElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3493046030; + } + } + IFC4X32.IfcGeographicElement = IfcGeographicElement; + class IfcGeotechnicalElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 4230923436; + } + } + IFC4X32.IfcGeotechnicalElement = IfcGeotechnicalElement; + class IfcGeotechnicalStratum extends IfcGeotechnicalElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1594536857; + } + } + IFC4X32.IfcGeotechnicalStratum = IfcGeotechnicalStratum; + class IfcGradientCurve extends IfcCompositeCurve { + constructor(Segments, SelfIntersect, BaseCurve, EndPoint) { + super(Segments, SelfIntersect); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.BaseCurve = BaseCurve; + this.EndPoint = EndPoint; + this.type = 2898700619; + } + } + IFC4X32.IfcGradientCurve = IfcGradientCurve; + class IfcGroup extends IfcObject { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 2706460486; + } + } + IFC4X32.IfcGroup = IfcGroup; + class IfcHeatExchangerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1251058090; + } + } + IFC4X32.IfcHeatExchangerType = IfcHeatExchangerType; + class IfcHumidifierType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1806887404; + } + } + IFC4X32.IfcHumidifierType = IfcHumidifierType; + class IfcImpactProtectionDevice extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2568555532; + } + } + IFC4X32.IfcImpactProtectionDevice = IfcImpactProtectionDevice; + class IfcImpactProtectionDeviceType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3948183225; + } + } + IFC4X32.IfcImpactProtectionDeviceType = IfcImpactProtectionDeviceType; + class IfcIndexedPolyCurve extends IfcBoundedCurve { + constructor(Points2, Segments, SelfIntersect) { + super(); + this.Points = Points2; + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 2571569899; + } + } + IFC4X32.IfcIndexedPolyCurve = IfcIndexedPolyCurve; + class IfcInterceptorType extends IfcFlowTreatmentDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3946677679; + } + } + IFC4X32.IfcInterceptorType = IfcInterceptorType; + class IfcIntersectionCurve extends IfcSurfaceCurve { + constructor(Curve3D, AssociatedGeometry, MasterRepresentation) { + super(Curve3D, AssociatedGeometry, MasterRepresentation); + this.Curve3D = Curve3D; + this.AssociatedGeometry = AssociatedGeometry; + this.MasterRepresentation = MasterRepresentation; + this.type = 3113134337; + } + } + IFC4X32.IfcIntersectionCurve = IfcIntersectionCurve; + class IfcInventory extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, Jurisdiction, ResponsiblePersons, LastUpdateDate, CurrentValue, OriginalValue) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.Jurisdiction = Jurisdiction; + this.ResponsiblePersons = ResponsiblePersons; + this.LastUpdateDate = LastUpdateDate; + this.CurrentValue = CurrentValue; + this.OriginalValue = OriginalValue; + this.type = 2391368822; + } + } + IFC4X32.IfcInventory = IfcInventory; + class IfcJunctionBoxType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4288270099; + } + } + IFC4X32.IfcJunctionBoxType = IfcJunctionBoxType; + class IfcKerbType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 679976338; + } + } + IFC4X32.IfcKerbType = IfcKerbType; + class IfcLaborResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 3827777499; + } + } + IFC4X32.IfcLaborResource = IfcLaborResource; + class IfcLampType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1051575348; + } + } + IFC4X32.IfcLampType = IfcLampType; + class IfcLightFixtureType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1161773419; + } + } + IFC4X32.IfcLightFixtureType = IfcLightFixtureType; + class IfcLinearElement extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 2176059722; + } + } + IFC4X32.IfcLinearElement = IfcLinearElement; + class IfcLiquidTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1770583370; + } + } + IFC4X32.IfcLiquidTerminalType = IfcLiquidTerminalType; + class IfcMarineFacility extends IfcFacility { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.PredefinedType = PredefinedType; + this.type = 525669439; + } + } + IFC4X32.IfcMarineFacility = IfcMarineFacility; + class IfcMarinePart extends IfcFacilityPart { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, UsageType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, UsageType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.UsageType = UsageType; + this.PredefinedType = PredefinedType; + this.type = 976884017; + } + } + IFC4X32.IfcMarinePart = IfcMarinePart; + class IfcMechanicalFastener extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, NominalDiameter, NominalLength, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.NominalDiameter = NominalDiameter; + this.NominalLength = NominalLength; + this.PredefinedType = PredefinedType; + this.type = 377706215; + } + } + IFC4X32.IfcMechanicalFastener = IfcMechanicalFastener; + class IfcMechanicalFastenerType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, NominalDiameter, NominalLength) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.NominalDiameter = NominalDiameter; + this.NominalLength = NominalLength; + this.type = 2108223431; + } + } + IFC4X32.IfcMechanicalFastenerType = IfcMechanicalFastenerType; + class IfcMedicalDeviceType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1114901282; + } + } + IFC4X32.IfcMedicalDeviceType = IfcMedicalDeviceType; + class IfcMemberType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3181161470; + } + } + IFC4X32.IfcMemberType = IfcMemberType; + class IfcMobileTelecommunicationsApplianceType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1950438474; + } + } + IFC4X32.IfcMobileTelecommunicationsApplianceType = IfcMobileTelecommunicationsApplianceType; + class IfcMooringDeviceType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 710110818; + } + } + IFC4X32.IfcMooringDeviceType = IfcMooringDeviceType; + class IfcMotorConnectionType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 977012517; + } + } + IFC4X32.IfcMotorConnectionType = IfcMotorConnectionType; + class IfcNavigationElementType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 506776471; + } + } + IFC4X32.IfcNavigationElementType = IfcNavigationElementType; + class IfcOccupant extends IfcActor { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TheActor, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, TheActor); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TheActor = TheActor; + this.PredefinedType = PredefinedType; + this.type = 4143007308; + } + } + IFC4X32.IfcOccupant = IfcOccupant; + class IfcOpeningElement extends IfcFeatureElementSubtraction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3588315303; + } + } + IFC4X32.IfcOpeningElement = IfcOpeningElement; + class IfcOutletType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2837617999; + } + } + IFC4X32.IfcOutletType = IfcOutletType; + class IfcPavementType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 514975943; + } + } + IFC4X32.IfcPavementType = IfcPavementType; + class IfcPerformanceHistory extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LifeCyclePhase, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LifeCyclePhase = LifeCyclePhase; + this.PredefinedType = PredefinedType; + this.type = 2382730787; + } + } + IFC4X32.IfcPerformanceHistory = IfcPerformanceHistory; + class IfcPermeableCoveringProperties extends IfcPreDefinedPropertySet { + constructor(GlobalId, OwnerHistory, Name, Description, OperationType, PanelPosition, FrameDepth, FrameThickness, ShapeAspectStyle) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.OperationType = OperationType; + this.PanelPosition = PanelPosition; + this.FrameDepth = FrameDepth; + this.FrameThickness = FrameThickness; + this.ShapeAspectStyle = ShapeAspectStyle; + this.type = 3566463478; + } + } + IFC4X32.IfcPermeableCoveringProperties = IfcPermeableCoveringProperties; + class IfcPermit extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, PredefinedType, Status, LongDescription) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.PredefinedType = PredefinedType; + this.Status = Status; + this.LongDescription = LongDescription; + this.type = 3327091369; + } + } + IFC4X32.IfcPermit = IfcPermit; + class IfcPileType extends IfcDeepFoundationType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1158309216; + } + } + IFC4X32.IfcPileType = IfcPileType; + class IfcPipeFittingType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 804291784; + } + } + IFC4X32.IfcPipeFittingType = IfcPipeFittingType; + class IfcPipeSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4231323485; + } + } + IFC4X32.IfcPipeSegmentType = IfcPipeSegmentType; + class IfcPlateType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4017108033; + } + } + IFC4X32.IfcPlateType = IfcPlateType; + class IfcPolygonalFaceSet extends IfcTessellatedFaceSet { + constructor(Coordinates, Closed, Faces, PnIndex) { + super(Coordinates); + this.Coordinates = Coordinates; + this.Closed = Closed; + this.Faces = Faces; + this.PnIndex = PnIndex; + this.type = 2839578677; + } + } + IFC4X32.IfcPolygonalFaceSet = IfcPolygonalFaceSet; + class IfcPolyline extends IfcBoundedCurve { + constructor(Points2) { + super(); + this.Points = Points2; + this.type = 3724593414; + } + } + IFC4X32.IfcPolyline = IfcPolyline; + class IfcPort extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 3740093272; + } + } + IFC4X32.IfcPort = IfcPort; + class IfcPositioningElement extends IfcProduct { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 1946335990; + } + } + IFC4X32.IfcPositioningElement = IfcPositioningElement; + class IfcProcedure extends IfcProcess { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.PredefinedType = PredefinedType; + this.type = 2744685151; + } + } + IFC4X32.IfcProcedure = IfcProcedure; + class IfcProjectOrder extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, PredefinedType, Status, LongDescription) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.PredefinedType = PredefinedType; + this.Status = Status; + this.LongDescription = LongDescription; + this.type = 2904328755; + } + } + IFC4X32.IfcProjectOrder = IfcProjectOrder; + class IfcProjectionElement extends IfcFeatureElementAddition { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3651124850; + } + } + IFC4X32.IfcProjectionElement = IfcProjectionElement; + class IfcProtectiveDeviceType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1842657554; + } + } + IFC4X32.IfcProtectiveDeviceType = IfcProtectiveDeviceType; + class IfcPumpType extends IfcFlowMovingDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2250791053; + } + } + IFC4X32.IfcPumpType = IfcPumpType; + class IfcRailType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1763565496; + } + } + IFC4X32.IfcRailType = IfcRailType; + class IfcRailingType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2893384427; + } + } + IFC4X32.IfcRailingType = IfcRailingType; + class IfcRailway extends IfcFacility { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.PredefinedType = PredefinedType; + this.type = 3992365140; + } + } + IFC4X32.IfcRailway = IfcRailway; + class IfcRailwayPart extends IfcFacilityPart { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, UsageType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, UsageType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.UsageType = UsageType; + this.PredefinedType = PredefinedType; + this.type = 1891881377; + } + } + IFC4X32.IfcRailwayPart = IfcRailwayPart; + class IfcRampFlightType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2324767716; + } + } + IFC4X32.IfcRampFlightType = IfcRampFlightType; + class IfcRampType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1469900589; + } + } + IFC4X32.IfcRampType = IfcRampType; + class IfcRationalBSplineSurfaceWithKnots extends IfcBSplineSurfaceWithKnots { + constructor(UDegree, VDegree, ControlPointsList, SurfaceForm, UClosed, VClosed, SelfIntersect, UMultiplicities, VMultiplicities, UKnots, VKnots, KnotSpec, WeightsData) { + super(UDegree, VDegree, ControlPointsList, SurfaceForm, UClosed, VClosed, SelfIntersect, UMultiplicities, VMultiplicities, UKnots, VKnots, KnotSpec); + this.UDegree = UDegree; + this.VDegree = VDegree; + this.ControlPointsList = ControlPointsList; + this.SurfaceForm = SurfaceForm; + this.UClosed = UClosed; + this.VClosed = VClosed; + this.SelfIntersect = SelfIntersect; + this.UMultiplicities = UMultiplicities; + this.VMultiplicities = VMultiplicities; + this.UKnots = UKnots; + this.VKnots = VKnots; + this.KnotSpec = KnotSpec; + this.WeightsData = WeightsData; + this.type = 683857671; + } + } + IFC4X32.IfcRationalBSplineSurfaceWithKnots = IfcRationalBSplineSurfaceWithKnots; + class IfcReferent extends IfcPositioningElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.type = 4021432810; + } + } + IFC4X32.IfcReferent = IfcReferent; + class IfcReinforcingElement extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.type = 3027567501; + } + } + IFC4X32.IfcReinforcingElement = IfcReinforcingElement; + class IfcReinforcingElementType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 964333572; + } + } + IFC4X32.IfcReinforcingElementType = IfcReinforcingElementType; + class IfcReinforcingMesh extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, MeshLength, MeshWidth, LongitudinalBarNominalDiameter, TransverseBarNominalDiameter, LongitudinalBarCrossSectionArea, TransverseBarCrossSectionArea, LongitudinalBarSpacing, TransverseBarSpacing, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.MeshLength = MeshLength; + this.MeshWidth = MeshWidth; + this.LongitudinalBarNominalDiameter = LongitudinalBarNominalDiameter; + this.TransverseBarNominalDiameter = TransverseBarNominalDiameter; + this.LongitudinalBarCrossSectionArea = LongitudinalBarCrossSectionArea; + this.TransverseBarCrossSectionArea = TransverseBarCrossSectionArea; + this.LongitudinalBarSpacing = LongitudinalBarSpacing; + this.TransverseBarSpacing = TransverseBarSpacing; + this.PredefinedType = PredefinedType; + this.type = 2320036040; + } + } + IFC4X32.IfcReinforcingMesh = IfcReinforcingMesh; + class IfcReinforcingMeshType extends IfcReinforcingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, MeshLength, MeshWidth, LongitudinalBarNominalDiameter, TransverseBarNominalDiameter, LongitudinalBarCrossSectionArea, TransverseBarCrossSectionArea, LongitudinalBarSpacing, TransverseBarSpacing, BendingShapeCode, BendingParameters) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.MeshLength = MeshLength; + this.MeshWidth = MeshWidth; + this.LongitudinalBarNominalDiameter = LongitudinalBarNominalDiameter; + this.TransverseBarNominalDiameter = TransverseBarNominalDiameter; + this.LongitudinalBarCrossSectionArea = LongitudinalBarCrossSectionArea; + this.TransverseBarCrossSectionArea = TransverseBarCrossSectionArea; + this.LongitudinalBarSpacing = LongitudinalBarSpacing; + this.TransverseBarSpacing = TransverseBarSpacing; + this.BendingShapeCode = BendingShapeCode; + this.BendingParameters = BendingParameters; + this.type = 2310774935; + } + } + IFC4X32.IfcReinforcingMeshType = IfcReinforcingMeshType; + class IfcRelAdheresToElement extends IfcRelDecomposes { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingElement, RelatedSurfaceFeatures) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingElement = RelatingElement; + this.RelatedSurfaceFeatures = RelatedSurfaceFeatures; + this.type = 3818125796; + } + } + IFC4X32.IfcRelAdheresToElement = IfcRelAdheresToElement; + class IfcRelAggregates extends IfcRelDecomposes { + constructor(GlobalId, OwnerHistory, Name, Description, RelatingObject, RelatedObjects) { + super(GlobalId, OwnerHistory, Name, Description); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.RelatingObject = RelatingObject; + this.RelatedObjects = RelatedObjects; + this.type = 160246688; + } + } + IFC4X32.IfcRelAggregates = IfcRelAggregates; + class IfcRoad extends IfcFacility { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.PredefinedType = PredefinedType; + this.type = 146592293; + } + } + IFC4X32.IfcRoad = IfcRoad; + class IfcRoadPart extends IfcFacilityPart { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, UsageType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, UsageType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.UsageType = UsageType; + this.PredefinedType = PredefinedType; + this.type = 550521510; + } + } + IFC4X32.IfcRoadPart = IfcRoadPart; + class IfcRoofType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2781568857; + } + } + IFC4X32.IfcRoofType = IfcRoofType; + class IfcSanitaryTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1768891740; + } + } + IFC4X32.IfcSanitaryTerminalType = IfcSanitaryTerminalType; + class IfcSeamCurve extends IfcSurfaceCurve { + constructor(Curve3D, AssociatedGeometry, MasterRepresentation) { + super(Curve3D, AssociatedGeometry, MasterRepresentation); + this.Curve3D = Curve3D; + this.AssociatedGeometry = AssociatedGeometry; + this.MasterRepresentation = MasterRepresentation; + this.type = 2157484638; + } + } + IFC4X32.IfcSeamCurve = IfcSeamCurve; + class IfcSecondOrderPolynomialSpiral extends IfcSpiral { + constructor(Position, QuadraticTerm, LinearTerm, ConstantTerm) { + super(Position); + this.Position = Position; + this.QuadraticTerm = QuadraticTerm; + this.LinearTerm = LinearTerm; + this.ConstantTerm = ConstantTerm; + this.type = 3649235739; + } + } + IFC4X32.IfcSecondOrderPolynomialSpiral = IfcSecondOrderPolynomialSpiral; + class IfcSegmentedReferenceCurve extends IfcCompositeCurve { + constructor(Segments, SelfIntersect, BaseCurve, EndPoint) { + super(Segments, SelfIntersect); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.BaseCurve = BaseCurve; + this.EndPoint = EndPoint; + this.type = 544395925; + } + } + IFC4X32.IfcSegmentedReferenceCurve = IfcSegmentedReferenceCurve; + class IfcSeventhOrderPolynomialSpiral extends IfcSpiral { + constructor(Position, SepticTerm, SexticTerm, QuinticTerm, QuarticTerm, CubicTerm, QuadraticTerm, LinearTerm, ConstantTerm) { + super(Position); + this.Position = Position; + this.SepticTerm = SepticTerm; + this.SexticTerm = SexticTerm; + this.QuinticTerm = QuinticTerm; + this.QuarticTerm = QuarticTerm; + this.CubicTerm = CubicTerm; + this.QuadraticTerm = QuadraticTerm; + this.LinearTerm = LinearTerm; + this.ConstantTerm = ConstantTerm; + this.type = 1027922057; + } + } + IFC4X32.IfcSeventhOrderPolynomialSpiral = IfcSeventhOrderPolynomialSpiral; + class IfcShadingDeviceType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4074543187; + } + } + IFC4X32.IfcShadingDeviceType = IfcShadingDeviceType; + class IfcSign extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 33720170; + } + } + IFC4X32.IfcSign = IfcSign; + class IfcSignType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3599934289; + } + } + IFC4X32.IfcSignType = IfcSignType; + class IfcSignalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1894708472; + } + } + IFC4X32.IfcSignalType = IfcSignalType; + class IfcSineSpiral extends IfcSpiral { + constructor(Position, SineTerm, LinearTerm, ConstantTerm) { + super(Position); + this.Position = Position; + this.SineTerm = SineTerm; + this.LinearTerm = LinearTerm; + this.ConstantTerm = ConstantTerm; + this.type = 42703149; + } + } + IFC4X32.IfcSineSpiral = IfcSineSpiral; + class IfcSite extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, RefLatitude, RefLongitude, RefElevation, LandTitleNumber, SiteAddress) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.RefLatitude = RefLatitude; + this.RefLongitude = RefLongitude; + this.RefElevation = RefElevation; + this.LandTitleNumber = LandTitleNumber; + this.SiteAddress = SiteAddress; + this.type = 4097777520; + } + } + IFC4X32.IfcSite = IfcSite; + class IfcSlabType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2533589738; + } + } + IFC4X32.IfcSlabType = IfcSlabType; + class IfcSolarDeviceType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1072016465; + } + } + IFC4X32.IfcSolarDeviceType = IfcSolarDeviceType; + class IfcSpace extends IfcSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, PredefinedType, ElevationWithFlooring) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.PredefinedType = PredefinedType; + this.ElevationWithFlooring = ElevationWithFlooring; + this.type = 3856911033; + } + } + IFC4X32.IfcSpace = IfcSpace; + class IfcSpaceHeaterType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1305183839; + } + } + IFC4X32.IfcSpaceHeaterType = IfcSpaceHeaterType; + class IfcSpaceType extends IfcSpatialStructureElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.LongName = LongName; + this.type = 3812236995; + } + } + IFC4X32.IfcSpaceType = IfcSpaceType; + class IfcStackTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3112655638; + } + } + IFC4X32.IfcStackTerminalType = IfcStackTerminalType; + class IfcStairFlightType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1039846685; + } + } + IFC4X32.IfcStairFlightType = IfcStairFlightType; + class IfcStairType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 338393293; + } + } + IFC4X32.IfcStairType = IfcStairType; + class IfcStructuralAction extends IfcStructuralActivity { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.type = 682877961; + } + } + IFC4X32.IfcStructuralAction = IfcStructuralAction; + class IfcStructuralConnection extends IfcStructuralItem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.type = 1179482911; + } + } + IFC4X32.IfcStructuralConnection = IfcStructuralConnection; + class IfcStructuralCurveAction extends IfcStructuralAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.ProjectedOrTrue = ProjectedOrTrue; + this.PredefinedType = PredefinedType; + this.type = 1004757350; + } + } + IFC4X32.IfcStructuralCurveAction = IfcStructuralCurveAction; + class IfcStructuralCurveConnection extends IfcStructuralConnection { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition, AxisDirection) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.AxisDirection = AxisDirection; + this.type = 4243806635; + } + } + IFC4X32.IfcStructuralCurveConnection = IfcStructuralCurveConnection; + class IfcStructuralCurveMember extends IfcStructuralMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Axis2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.Axis = Axis2; + this.type = 214636428; + } + } + IFC4X32.IfcStructuralCurveMember = IfcStructuralCurveMember; + class IfcStructuralCurveMemberVarying extends IfcStructuralCurveMember { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Axis2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType, Axis2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.Axis = Axis2; + this.type = 2445595289; + } + } + IFC4X32.IfcStructuralCurveMemberVarying = IfcStructuralCurveMemberVarying; + class IfcStructuralCurveReaction extends IfcStructuralReaction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.PredefinedType = PredefinedType; + this.type = 2757150158; + } + } + IFC4X32.IfcStructuralCurveReaction = IfcStructuralCurveReaction; + class IfcStructuralLinearAction extends IfcStructuralCurveAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.ProjectedOrTrue = ProjectedOrTrue; + this.PredefinedType = PredefinedType; + this.type = 1807405624; + } + } + IFC4X32.IfcStructuralLinearAction = IfcStructuralLinearAction; + class IfcStructuralLoadGroup extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, ActionType, ActionSource, Coefficient, Purpose) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.ActionType = ActionType; + this.ActionSource = ActionSource; + this.Coefficient = Coefficient; + this.Purpose = Purpose; + this.type = 1252848954; + } + } + IFC4X32.IfcStructuralLoadGroup = IfcStructuralLoadGroup; + class IfcStructuralPointAction extends IfcStructuralAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.type = 2082059205; + } + } + IFC4X32.IfcStructuralPointAction = IfcStructuralPointAction; + class IfcStructuralPointConnection extends IfcStructuralConnection { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition, ConditionCoordinateSystem) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.ConditionCoordinateSystem = ConditionCoordinateSystem; + this.type = 734778138; + } + } + IFC4X32.IfcStructuralPointConnection = IfcStructuralPointConnection; + class IfcStructuralPointReaction extends IfcStructuralReaction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.type = 1235345126; + } + } + IFC4X32.IfcStructuralPointReaction = IfcStructuralPointReaction; + class IfcStructuralResultGroup extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, TheoryType, ResultForLoadGroup, IsLinear) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.TheoryType = TheoryType; + this.ResultForLoadGroup = ResultForLoadGroup; + this.IsLinear = IsLinear; + this.type = 2986769608; + } + } + IFC4X32.IfcStructuralResultGroup = IfcStructuralResultGroup; + class IfcStructuralSurfaceAction extends IfcStructuralAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.ProjectedOrTrue = ProjectedOrTrue; + this.PredefinedType = PredefinedType; + this.type = 3657597509; + } + } + IFC4X32.IfcStructuralSurfaceAction = IfcStructuralSurfaceAction; + class IfcStructuralSurfaceConnection extends IfcStructuralConnection { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedCondition); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedCondition = AppliedCondition; + this.type = 1975003073; + } + } + IFC4X32.IfcStructuralSurfaceConnection = IfcStructuralSurfaceConnection; + class IfcSubContractResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 148013059; + } + } + IFC4X32.IfcSubContractResource = IfcSubContractResource; + class IfcSurfaceFeature extends IfcFeatureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3101698114; + } + } + IFC4X32.IfcSurfaceFeature = IfcSurfaceFeature; + class IfcSwitchingDeviceType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2315554128; + } + } + IFC4X32.IfcSwitchingDeviceType = IfcSwitchingDeviceType; + class IfcSystem extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.type = 2254336722; + } + } + IFC4X32.IfcSystem = IfcSystem; + class IfcSystemFurnitureElement extends IfcFurnishingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 413509423; + } + } + IFC4X32.IfcSystemFurnitureElement = IfcSystemFurnitureElement; + class IfcTankType extends IfcFlowStorageDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 5716631; + } + } + IFC4X32.IfcTankType = IfcTankType; + class IfcTendon extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, PredefinedType, NominalDiameter, CrossSectionArea, TensionForce, PreStress, FrictionCoefficient, AnchorageSlip, MinCurvatureRadius) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.PredefinedType = PredefinedType; + this.NominalDiameter = NominalDiameter; + this.CrossSectionArea = CrossSectionArea; + this.TensionForce = TensionForce; + this.PreStress = PreStress; + this.FrictionCoefficient = FrictionCoefficient; + this.AnchorageSlip = AnchorageSlip; + this.MinCurvatureRadius = MinCurvatureRadius; + this.type = 3824725483; + } + } + IFC4X32.IfcTendon = IfcTendon; + class IfcTendonAnchor extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.PredefinedType = PredefinedType; + this.type = 2347447852; + } + } + IFC4X32.IfcTendonAnchor = IfcTendonAnchor; + class IfcTendonAnchorType extends IfcReinforcingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3081323446; + } + } + IFC4X32.IfcTendonAnchorType = IfcTendonAnchorType; + class IfcTendonConduit extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.PredefinedType = PredefinedType; + this.type = 3663046924; + } + } + IFC4X32.IfcTendonConduit = IfcTendonConduit; + class IfcTendonConduitType extends IfcReinforcingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2281632017; + } + } + IFC4X32.IfcTendonConduitType = IfcTendonConduitType; + class IfcTendonType extends IfcReinforcingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, NominalDiameter, CrossSectionArea, SheathDiameter) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.NominalDiameter = NominalDiameter; + this.CrossSectionArea = CrossSectionArea; + this.SheathDiameter = SheathDiameter; + this.type = 2415094496; + } + } + IFC4X32.IfcTendonType = IfcTendonType; + class IfcTrackElementType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 618700268; + } + } + IFC4X32.IfcTrackElementType = IfcTrackElementType; + class IfcTransformerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1692211062; + } + } + IFC4X32.IfcTransformerType = IfcTransformerType; + class IfcTransportElementType extends IfcTransportationDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2097647324; + } + } + IFC4X32.IfcTransportElementType = IfcTransportElementType; + class IfcTransportationDevice extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1953115116; + } + } + IFC4X32.IfcTransportationDevice = IfcTransportationDevice; + class IfcTrimmedCurve extends IfcBoundedCurve { + constructor(BasisCurve, Trim1, Trim2, SenseAgreement, MasterRepresentation) { + super(); + this.BasisCurve = BasisCurve; + this.Trim1 = Trim1; + this.Trim2 = Trim2; + this.SenseAgreement = SenseAgreement; + this.MasterRepresentation = MasterRepresentation; + this.type = 3593883385; + } + } + IFC4X32.IfcTrimmedCurve = IfcTrimmedCurve; + class IfcTubeBundleType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1600972822; + } + } + IFC4X32.IfcTubeBundleType = IfcTubeBundleType; + class IfcUnitaryEquipmentType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1911125066; + } + } + IFC4X32.IfcUnitaryEquipmentType = IfcUnitaryEquipmentType; + class IfcValveType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 728799441; + } + } + IFC4X32.IfcValveType = IfcValveType; + class IfcVehicle extends IfcTransportationDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 840318589; + } + } + IFC4X32.IfcVehicle = IfcVehicle; + class IfcVibrationDamper extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1530820697; + } + } + IFC4X32.IfcVibrationDamper = IfcVibrationDamper; + class IfcVibrationDamperType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3956297820; + } + } + IFC4X32.IfcVibrationDamperType = IfcVibrationDamperType; + class IfcVibrationIsolator extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2391383451; + } + } + IFC4X32.IfcVibrationIsolator = IfcVibrationIsolator; + class IfcVibrationIsolatorType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3313531582; + } + } + IFC4X32.IfcVibrationIsolatorType = IfcVibrationIsolatorType; + class IfcVirtualElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2769231204; + } + } + IFC4X32.IfcVirtualElement = IfcVirtualElement; + class IfcVoidingFeature extends IfcFeatureElementSubtraction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 926996030; + } + } + IFC4X32.IfcVoidingFeature = IfcVoidingFeature; + class IfcWallType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1898987631; + } + } + IFC4X32.IfcWallType = IfcWallType; + class IfcWasteTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1133259667; + } + } + IFC4X32.IfcWasteTerminalType = IfcWasteTerminalType; + class IfcWindowType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, PartitioningType, ParameterTakesPrecedence, UserDefinedPartitioningType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.PartitioningType = PartitioningType; + this.ParameterTakesPrecedence = ParameterTakesPrecedence; + this.UserDefinedPartitioningType = UserDefinedPartitioningType; + this.type = 4009809668; + } + } + IFC4X32.IfcWindowType = IfcWindowType; + class IfcWorkCalendar extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, WorkingTimes, ExceptionTimes, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.WorkingTimes = WorkingTimes; + this.ExceptionTimes = ExceptionTimes; + this.PredefinedType = PredefinedType; + this.type = 4088093105; + } + } + IFC4X32.IfcWorkCalendar = IfcWorkCalendar; + class IfcWorkControl extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.CreationDate = CreationDate; + this.Creators = Creators; + this.Purpose = Purpose; + this.Duration = Duration; + this.TotalFloat = TotalFloat; + this.StartTime = StartTime; + this.FinishTime = FinishTime; + this.type = 1028945134; + } + } + IFC4X32.IfcWorkControl = IfcWorkControl; + class IfcWorkPlan extends IfcWorkControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.CreationDate = CreationDate; + this.Creators = Creators; + this.Purpose = Purpose; + this.Duration = Duration; + this.TotalFloat = TotalFloat; + this.StartTime = StartTime; + this.FinishTime = FinishTime; + this.PredefinedType = PredefinedType; + this.type = 4218914973; + } + } + IFC4X32.IfcWorkPlan = IfcWorkPlan; + class IfcWorkSchedule extends IfcWorkControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, CreationDate, Creators, Purpose, Duration, TotalFloat, StartTime, FinishTime); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.CreationDate = CreationDate; + this.Creators = Creators; + this.Purpose = Purpose; + this.Duration = Duration; + this.TotalFloat = TotalFloat; + this.StartTime = StartTime; + this.FinishTime = FinishTime; + this.PredefinedType = PredefinedType; + this.type = 3342526732; + } + } + IFC4X32.IfcWorkSchedule = IfcWorkSchedule; + class IfcZone extends IfcSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.type = 1033361043; + } + } + IFC4X32.IfcZone = IfcZone; + class IfcActionRequest extends IfcControl { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, PredefinedType, Status, LongDescription) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.PredefinedType = PredefinedType; + this.Status = Status; + this.LongDescription = LongDescription; + this.type = 3821786052; + } + } + IFC4X32.IfcActionRequest = IfcActionRequest; + class IfcAirTerminalBoxType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1411407467; + } + } + IFC4X32.IfcAirTerminalBoxType = IfcAirTerminalBoxType; + class IfcAirTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3352864051; + } + } + IFC4X32.IfcAirTerminalType = IfcAirTerminalType; + class IfcAirToAirHeatRecoveryType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1871374353; + } + } + IFC4X32.IfcAirToAirHeatRecoveryType = IfcAirToAirHeatRecoveryType; + class IfcAlignmentCant extends IfcLinearElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, RailHeadDistance) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.RailHeadDistance = RailHeadDistance; + this.type = 4266260250; + } + } + IFC4X32.IfcAlignmentCant = IfcAlignmentCant; + class IfcAlignmentHorizontal extends IfcLinearElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 1545765605; + } + } + IFC4X32.IfcAlignmentHorizontal = IfcAlignmentHorizontal; + class IfcAlignmentSegment extends IfcLinearElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, DesignParameters) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.DesignParameters = DesignParameters; + this.type = 317615605; + } + } + IFC4X32.IfcAlignmentSegment = IfcAlignmentSegment; + class IfcAlignmentVertical extends IfcLinearElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 1662888072; + } + } + IFC4X32.IfcAlignmentVertical = IfcAlignmentVertical; + class IfcAsset extends IfcGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, OriginalValue, CurrentValue, TotalReplacementCost, Owner, User, ResponsiblePerson, IncorporationDate, DepreciatedValue) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.OriginalValue = OriginalValue; + this.CurrentValue = CurrentValue; + this.TotalReplacementCost = TotalReplacementCost; + this.Owner = Owner; + this.User = User; + this.ResponsiblePerson = ResponsiblePerson; + this.IncorporationDate = IncorporationDate; + this.DepreciatedValue = DepreciatedValue; + this.type = 3460190687; + } + } + IFC4X32.IfcAsset = IfcAsset; + class IfcAudioVisualApplianceType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1532957894; + } + } + IFC4X32.IfcAudioVisualApplianceType = IfcAudioVisualApplianceType; + class IfcBSplineCurve extends IfcBoundedCurve { + constructor(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect) { + super(); + this.Degree = Degree; + this.ControlPointsList = ControlPointsList; + this.CurveForm = CurveForm; + this.ClosedCurve = ClosedCurve; + this.SelfIntersect = SelfIntersect; + this.type = 1967976161; + } + } + IFC4X32.IfcBSplineCurve = IfcBSplineCurve; + class IfcBSplineCurveWithKnots extends IfcBSplineCurve { + constructor(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect, KnotMultiplicities, Knots, KnotSpec) { + super(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect); + this.Degree = Degree; + this.ControlPointsList = ControlPointsList; + this.CurveForm = CurveForm; + this.ClosedCurve = ClosedCurve; + this.SelfIntersect = SelfIntersect; + this.KnotMultiplicities = KnotMultiplicities; + this.Knots = Knots; + this.KnotSpec = KnotSpec; + this.type = 2461110595; + } + } + IFC4X32.IfcBSplineCurveWithKnots = IfcBSplineCurveWithKnots; + class IfcBeamType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 819618141; + } + } + IFC4X32.IfcBeamType = IfcBeamType; + class IfcBearingType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3649138523; + } + } + IFC4X32.IfcBearingType = IfcBearingType; + class IfcBoilerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 231477066; + } + } + IFC4X32.IfcBoilerType = IfcBoilerType; + class IfcBoundaryCurve extends IfcCompositeCurveOnSurface { + constructor(Segments, SelfIntersect) { + super(Segments, SelfIntersect); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 1136057603; + } + } + IFC4X32.IfcBoundaryCurve = IfcBoundaryCurve; + class IfcBridge extends IfcFacility { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.PredefinedType = PredefinedType; + this.type = 644574406; + } + } + IFC4X32.IfcBridge = IfcBridge; + class IfcBridgePart extends IfcFacilityPart { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, UsageType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, UsageType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.UsageType = UsageType; + this.PredefinedType = PredefinedType; + this.type = 963979645; + } + } + IFC4X32.IfcBridgePart = IfcBridgePart; + class IfcBuilding extends IfcFacility { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType, ElevationOfRefHeight, ElevationOfTerrain, BuildingAddress) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, CompositionType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.CompositionType = CompositionType; + this.ElevationOfRefHeight = ElevationOfRefHeight; + this.ElevationOfTerrain = ElevationOfTerrain; + this.BuildingAddress = BuildingAddress; + this.type = 4031249490; + } + } + IFC4X32.IfcBuilding = IfcBuilding; + class IfcBuildingElementPart extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2979338954; + } + } + IFC4X32.IfcBuildingElementPart = IfcBuildingElementPart; + class IfcBuildingElementPartType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 39481116; + } + } + IFC4X32.IfcBuildingElementPartType = IfcBuildingElementPartType; + class IfcBuildingElementProxyType extends IfcBuiltElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1909888760; + } + } + IFC4X32.IfcBuildingElementProxyType = IfcBuildingElementProxyType; + class IfcBuildingSystem extends IfcSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.LongName = LongName; + this.type = 1177604601; + } + } + IFC4X32.IfcBuildingSystem = IfcBuildingSystem; + class IfcBuiltElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1876633798; + } + } + IFC4X32.IfcBuiltElement = IfcBuiltElement; + class IfcBuiltSystem extends IfcSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, LongName) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.LongName = LongName; + this.type = 3862327254; + } + } + IFC4X32.IfcBuiltSystem = IfcBuiltSystem; + class IfcBurnerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2188180465; + } + } + IFC4X32.IfcBurnerType = IfcBurnerType; + class IfcCableCarrierFittingType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 395041908; + } + } + IFC4X32.IfcCableCarrierFittingType = IfcCableCarrierFittingType; + class IfcCableCarrierSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3293546465; + } + } + IFC4X32.IfcCableCarrierSegmentType = IfcCableCarrierSegmentType; + class IfcCableFittingType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2674252688; + } + } + IFC4X32.IfcCableFittingType = IfcCableFittingType; + class IfcCableSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1285652485; + } + } + IFC4X32.IfcCableSegmentType = IfcCableSegmentType; + class IfcCaissonFoundationType extends IfcDeepFoundationType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3203706013; + } + } + IFC4X32.IfcCaissonFoundationType = IfcCaissonFoundationType; + class IfcChillerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2951183804; + } + } + IFC4X32.IfcChillerType = IfcChillerType; + class IfcChimney extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3296154744; + } + } + IFC4X32.IfcChimney = IfcChimney; + class IfcCircle extends IfcConic { + constructor(Position, Radius) { + super(Position); + this.Position = Position; + this.Radius = Radius; + this.type = 2611217952; + } + } + IFC4X32.IfcCircle = IfcCircle; + class IfcCivilElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1677625105; + } + } + IFC4X32.IfcCivilElement = IfcCivilElement; + class IfcCoilType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2301859152; + } + } + IFC4X32.IfcCoilType = IfcCoilType; + class IfcColumn extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 843113511; + } + } + IFC4X32.IfcColumn = IfcColumn; + class IfcCommunicationsApplianceType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 400855858; + } + } + IFC4X32.IfcCommunicationsApplianceType = IfcCommunicationsApplianceType; + class IfcCompressorType extends IfcFlowMovingDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3850581409; + } + } + IFC4X32.IfcCompressorType = IfcCompressorType; + class IfcCondenserType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2816379211; + } + } + IFC4X32.IfcCondenserType = IfcCondenserType; + class IfcConstructionEquipmentResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 3898045240; + } + } + IFC4X32.IfcConstructionEquipmentResource = IfcConstructionEquipmentResource; + class IfcConstructionMaterialResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 1060000209; + } + } + IFC4X32.IfcConstructionMaterialResource = IfcConstructionMaterialResource; + class IfcConstructionProductResource extends IfcConstructionResource { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, Identification, LongDescription, Usage, BaseCosts, BaseQuantity); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.Identification = Identification; + this.LongDescription = LongDescription; + this.Usage = Usage; + this.BaseCosts = BaseCosts; + this.BaseQuantity = BaseQuantity; + this.PredefinedType = PredefinedType; + this.type = 488727124; + } + } + IFC4X32.IfcConstructionProductResource = IfcConstructionProductResource; + class IfcConveyorSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2940368186; + } + } + IFC4X32.IfcConveyorSegmentType = IfcConveyorSegmentType; + class IfcCooledBeamType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 335055490; + } + } + IFC4X32.IfcCooledBeamType = IfcCooledBeamType; + class IfcCoolingTowerType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2954562838; + } + } + IFC4X32.IfcCoolingTowerType = IfcCoolingTowerType; + class IfcCourse extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1502416096; + } + } + IFC4X32.IfcCourse = IfcCourse; + class IfcCovering extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1973544240; + } + } + IFC4X32.IfcCovering = IfcCovering; + class IfcCurtainWall extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3495092785; + } + } + IFC4X32.IfcCurtainWall = IfcCurtainWall; + class IfcDamperType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3961806047; + } + } + IFC4X32.IfcDamperType = IfcDamperType; + class IfcDeepFoundation extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3426335179; + } + } + IFC4X32.IfcDeepFoundation = IfcDeepFoundation; + class IfcDiscreteAccessory extends IfcElementComponent { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1335981549; + } + } + IFC4X32.IfcDiscreteAccessory = IfcDiscreteAccessory; + class IfcDiscreteAccessoryType extends IfcElementComponentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2635815018; + } + } + IFC4X32.IfcDiscreteAccessoryType = IfcDiscreteAccessoryType; + class IfcDistributionBoardType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 479945903; + } + } + IFC4X32.IfcDistributionBoardType = IfcDistributionBoardType; + class IfcDistributionChamberElementType extends IfcDistributionFlowElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1599208980; + } + } + IFC4X32.IfcDistributionChamberElementType = IfcDistributionChamberElementType; + class IfcDistributionControlElementType extends IfcDistributionElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.type = 2063403501; + } + } + IFC4X32.IfcDistributionControlElementType = IfcDistributionControlElementType; + class IfcDistributionElement extends IfcElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1945004755; + } + } + IFC4X32.IfcDistributionElement = IfcDistributionElement; + class IfcDistributionFlowElement extends IfcDistributionElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3040386961; + } + } + IFC4X32.IfcDistributionFlowElement = IfcDistributionFlowElement; + class IfcDistributionPort extends IfcPort { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, FlowDirection, PredefinedType, SystemType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.FlowDirection = FlowDirection; + this.PredefinedType = PredefinedType; + this.SystemType = SystemType; + this.type = 3041715199; + } + } + IFC4X32.IfcDistributionPort = IfcDistributionPort; + class IfcDistributionSystem extends IfcSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.PredefinedType = PredefinedType; + this.type = 3205830791; + } + } + IFC4X32.IfcDistributionSystem = IfcDistributionSystem; + class IfcDoor extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, OverallHeight, OverallWidth, PredefinedType, OperationType, UserDefinedOperationType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.OverallHeight = OverallHeight; + this.OverallWidth = OverallWidth; + this.PredefinedType = PredefinedType; + this.OperationType = OperationType; + this.UserDefinedOperationType = UserDefinedOperationType; + this.type = 395920057; + } + } + IFC4X32.IfcDoor = IfcDoor; + class IfcDuctFittingType extends IfcFlowFittingType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 869906466; + } + } + IFC4X32.IfcDuctFittingType = IfcDuctFittingType; + class IfcDuctSegmentType extends IfcFlowSegmentType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3760055223; + } + } + IFC4X32.IfcDuctSegmentType = IfcDuctSegmentType; + class IfcDuctSilencerType extends IfcFlowTreatmentDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2030761528; + } + } + IFC4X32.IfcDuctSilencerType = IfcDuctSilencerType; + class IfcEarthworksCut extends IfcFeatureElementSubtraction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3071239417; + } + } + IFC4X32.IfcEarthworksCut = IfcEarthworksCut; + class IfcEarthworksElement extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1077100507; + } + } + IFC4X32.IfcEarthworksElement = IfcEarthworksElement; + class IfcEarthworksFill extends IfcEarthworksElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3376911765; + } + } + IFC4X32.IfcEarthworksFill = IfcEarthworksFill; + class IfcElectricApplianceType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 663422040; + } + } + IFC4X32.IfcElectricApplianceType = IfcElectricApplianceType; + class IfcElectricDistributionBoardType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2417008758; + } + } + IFC4X32.IfcElectricDistributionBoardType = IfcElectricDistributionBoardType; + class IfcElectricFlowStorageDeviceType extends IfcFlowStorageDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3277789161; + } + } + IFC4X32.IfcElectricFlowStorageDeviceType = IfcElectricFlowStorageDeviceType; + class IfcElectricFlowTreatmentDeviceType extends IfcFlowTreatmentDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2142170206; + } + } + IFC4X32.IfcElectricFlowTreatmentDeviceType = IfcElectricFlowTreatmentDeviceType; + class IfcElectricGeneratorType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1534661035; + } + } + IFC4X32.IfcElectricGeneratorType = IfcElectricGeneratorType; + class IfcElectricMotorType extends IfcEnergyConversionDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1217240411; + } + } + IFC4X32.IfcElectricMotorType = IfcElectricMotorType; + class IfcElectricTimeControlType extends IfcFlowControllerType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 712377611; + } + } + IFC4X32.IfcElectricTimeControlType = IfcElectricTimeControlType; + class IfcEnergyConversionDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1658829314; + } + } + IFC4X32.IfcEnergyConversionDevice = IfcEnergyConversionDevice; + class IfcEngine extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2814081492; + } + } + IFC4X32.IfcEngine = IfcEngine; + class IfcEvaporativeCooler extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3747195512; + } + } + IFC4X32.IfcEvaporativeCooler = IfcEvaporativeCooler; + class IfcEvaporator extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 484807127; + } + } + IFC4X32.IfcEvaporator = IfcEvaporator; + class IfcExternalSpatialElement extends IfcExternalSpatialStructureElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, LongName); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.LongName = LongName; + this.PredefinedType = PredefinedType; + this.type = 1209101575; + } + } + IFC4X32.IfcExternalSpatialElement = IfcExternalSpatialElement; + class IfcFanType extends IfcFlowMovingDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 346874300; + } + } + IFC4X32.IfcFanType = IfcFanType; + class IfcFilterType extends IfcFlowTreatmentDeviceType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1810631287; + } + } + IFC4X32.IfcFilterType = IfcFilterType; + class IfcFireSuppressionTerminalType extends IfcFlowTerminalType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4222183408; + } + } + IFC4X32.IfcFireSuppressionTerminalType = IfcFireSuppressionTerminalType; + class IfcFlowController extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2058353004; + } + } + IFC4X32.IfcFlowController = IfcFlowController; + class IfcFlowFitting extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 4278956645; + } + } + IFC4X32.IfcFlowFitting = IfcFlowFitting; + class IfcFlowInstrumentType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 4037862832; + } + } + IFC4X32.IfcFlowInstrumentType = IfcFlowInstrumentType; + class IfcFlowMeter extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2188021234; + } + } + IFC4X32.IfcFlowMeter = IfcFlowMeter; + class IfcFlowMovingDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3132237377; + } + } + IFC4X32.IfcFlowMovingDevice = IfcFlowMovingDevice; + class IfcFlowSegment extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 987401354; + } + } + IFC4X32.IfcFlowSegment = IfcFlowSegment; + class IfcFlowStorageDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 707683696; + } + } + IFC4X32.IfcFlowStorageDevice = IfcFlowStorageDevice; + class IfcFlowTerminal extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2223149337; + } + } + IFC4X32.IfcFlowTerminal = IfcFlowTerminal; + class IfcFlowTreatmentDevice extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3508470533; + } + } + IFC4X32.IfcFlowTreatmentDevice = IfcFlowTreatmentDevice; + class IfcFooting extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 900683007; + } + } + IFC4X32.IfcFooting = IfcFooting; + class IfcGeotechnicalAssembly extends IfcGeotechnicalElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2713699986; + } + } + IFC4X32.IfcGeotechnicalAssembly = IfcGeotechnicalAssembly; + class IfcGrid extends IfcPositioningElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, UAxes, VAxes, WAxes, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.UAxes = UAxes; + this.VAxes = VAxes; + this.WAxes = WAxes; + this.PredefinedType = PredefinedType; + this.type = 3009204131; + } + } + IFC4X32.IfcGrid = IfcGrid; + class IfcHeatExchanger extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3319311131; + } + } + IFC4X32.IfcHeatExchanger = IfcHeatExchanger; + class IfcHumidifier extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2068733104; + } + } + IFC4X32.IfcHumidifier = IfcHumidifier; + class IfcInterceptor extends IfcFlowTreatmentDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4175244083; + } + } + IFC4X32.IfcInterceptor = IfcInterceptor; + class IfcJunctionBox extends IfcFlowFitting { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2176052936; + } + } + IFC4X32.IfcJunctionBox = IfcJunctionBox; + class IfcKerb extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2696325953; + } + } + IFC4X32.IfcKerb = IfcKerb; + class IfcLamp extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 76236018; + } + } + IFC4X32.IfcLamp = IfcLamp; + class IfcLightFixture extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 629592764; + } + } + IFC4X32.IfcLightFixture = IfcLightFixture; + class IfcLinearPositioningElement extends IfcPositioningElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.type = 1154579445; + } + } + IFC4X32.IfcLinearPositioningElement = IfcLinearPositioningElement; + class IfcLiquidTerminal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1638804497; + } + } + IFC4X32.IfcLiquidTerminal = IfcLiquidTerminal; + class IfcMedicalDevice extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1437502449; + } + } + IFC4X32.IfcMedicalDevice = IfcMedicalDevice; + class IfcMember extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1073191201; + } + } + IFC4X32.IfcMember = IfcMember; + class IfcMobileTelecommunicationsAppliance extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2078563270; + } + } + IFC4X32.IfcMobileTelecommunicationsAppliance = IfcMobileTelecommunicationsAppliance; + class IfcMooringDevice extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 234836483; + } + } + IFC4X32.IfcMooringDevice = IfcMooringDevice; + class IfcMotorConnection extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2474470126; + } + } + IFC4X32.IfcMotorConnection = IfcMotorConnection; + class IfcNavigationElement extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2182337498; + } + } + IFC4X32.IfcNavigationElement = IfcNavigationElement; + class IfcOuterBoundaryCurve extends IfcBoundaryCurve { + constructor(Segments, SelfIntersect) { + super(Segments, SelfIntersect); + this.Segments = Segments; + this.SelfIntersect = SelfIntersect; + this.type = 144952367; + } + } + IFC4X32.IfcOuterBoundaryCurve = IfcOuterBoundaryCurve; + class IfcOutlet extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3694346114; + } + } + IFC4X32.IfcOutlet = IfcOutlet; + class IfcPavement extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1383356374; + } + } + IFC4X32.IfcPavement = IfcPavement; + class IfcPile extends IfcDeepFoundation { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType, ConstructionType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.ConstructionType = ConstructionType; + this.type = 1687234759; + } + } + IFC4X32.IfcPile = IfcPile; + class IfcPipeFitting extends IfcFlowFitting { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 310824031; + } + } + IFC4X32.IfcPipeFitting = IfcPipeFitting; + class IfcPipeSegment extends IfcFlowSegment { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3612865200; + } + } + IFC4X32.IfcPipeSegment = IfcPipeSegment; + class IfcPlate extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3171933400; + } + } + IFC4X32.IfcPlate = IfcPlate; + class IfcProtectiveDevice extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 738039164; + } + } + IFC4X32.IfcProtectiveDevice = IfcProtectiveDevice; + class IfcProtectiveDeviceTrippingUnitType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 655969474; + } + } + IFC4X32.IfcProtectiveDeviceTrippingUnitType = IfcProtectiveDeviceTrippingUnitType; + class IfcPump extends IfcFlowMovingDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 90941305; + } + } + IFC4X32.IfcPump = IfcPump; + class IfcRail extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3290496277; + } + } + IFC4X32.IfcRail = IfcRail; + class IfcRailing extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2262370178; + } + } + IFC4X32.IfcRailing = IfcRailing; + class IfcRamp extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3024970846; + } + } + IFC4X32.IfcRamp = IfcRamp; + class IfcRampFlight extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3283111854; + } + } + IFC4X32.IfcRampFlight = IfcRampFlight; + class IfcRationalBSplineCurveWithKnots extends IfcBSplineCurveWithKnots { + constructor(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect, KnotMultiplicities, Knots, KnotSpec, WeightsData) { + super(Degree, ControlPointsList, CurveForm, ClosedCurve, SelfIntersect, KnotMultiplicities, Knots, KnotSpec); + this.Degree = Degree; + this.ControlPointsList = ControlPointsList; + this.CurveForm = CurveForm; + this.ClosedCurve = ClosedCurve; + this.SelfIntersect = SelfIntersect; + this.KnotMultiplicities = KnotMultiplicities; + this.Knots = Knots; + this.KnotSpec = KnotSpec; + this.WeightsData = WeightsData; + this.type = 1232101972; + } + } + IFC4X32.IfcRationalBSplineCurveWithKnots = IfcRationalBSplineCurveWithKnots; + class IfcReinforcedSoil extends IfcEarthworksElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3798194928; + } + } + IFC4X32.IfcReinforcedSoil = IfcReinforcedSoil; + class IfcReinforcingBar extends IfcReinforcingElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade, NominalDiameter, CrossSectionArea, BarLength, PredefinedType, BarSurface) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, SteelGrade); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.SteelGrade = SteelGrade; + this.NominalDiameter = NominalDiameter; + this.CrossSectionArea = CrossSectionArea; + this.BarLength = BarLength; + this.PredefinedType = PredefinedType; + this.BarSurface = BarSurface; + this.type = 979691226; + } + } + IFC4X32.IfcReinforcingBar = IfcReinforcingBar; + class IfcReinforcingBarType extends IfcReinforcingElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType, NominalDiameter, CrossSectionArea, BarLength, BarSurface, BendingShapeCode, BendingParameters) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.NominalDiameter = NominalDiameter; + this.CrossSectionArea = CrossSectionArea; + this.BarLength = BarLength; + this.BarSurface = BarSurface; + this.BendingShapeCode = BendingShapeCode; + this.BendingParameters = BendingParameters; + this.type = 2572171363; + } + } + IFC4X32.IfcReinforcingBarType = IfcReinforcingBarType; + class IfcRoof extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2016517767; + } + } + IFC4X32.IfcRoof = IfcRoof; + class IfcSanitaryTerminal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3053780830; + } + } + IFC4X32.IfcSanitaryTerminal = IfcSanitaryTerminal; + class IfcSensorType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 1783015770; + } + } + IFC4X32.IfcSensorType = IfcSensorType; + class IfcShadingDevice extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1329646415; + } + } + IFC4X32.IfcShadingDevice = IfcShadingDevice; + class IfcSignal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 991950508; + } + } + IFC4X32.IfcSignal = IfcSignal; + class IfcSlab extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1529196076; + } + } + IFC4X32.IfcSlab = IfcSlab; + class IfcSolarDevice extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3420628829; + } + } + IFC4X32.IfcSolarDevice = IfcSolarDevice; + class IfcSpaceHeater extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1999602285; + } + } + IFC4X32.IfcSpaceHeater = IfcSpaceHeater; + class IfcStackTerminal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1404847402; + } + } + IFC4X32.IfcStackTerminal = IfcStackTerminal; + class IfcStair extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 331165859; + } + } + IFC4X32.IfcStair = IfcStair; + class IfcStairFlight extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, NumberOfRisers, NumberOfTreads, RiserHeight, TreadLength, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.NumberOfRisers = NumberOfRisers; + this.NumberOfTreads = NumberOfTreads; + this.RiserHeight = RiserHeight; + this.TreadLength = TreadLength; + this.PredefinedType = PredefinedType; + this.type = 4252922144; + } + } + IFC4X32.IfcStairFlight = IfcStairFlight; + class IfcStructuralAnalysisModel extends IfcSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, OrientationOf2DPlane, LoadedBy, HasResults, SharedPlacement) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.OrientationOf2DPlane = OrientationOf2DPlane; + this.LoadedBy = LoadedBy; + this.HasResults = HasResults; + this.SharedPlacement = SharedPlacement; + this.type = 2515109513; + } + } + IFC4X32.IfcStructuralAnalysisModel = IfcStructuralAnalysisModel; + class IfcStructuralLoadCase extends IfcStructuralLoadGroup { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, ActionType, ActionSource, Coefficient, Purpose, SelfWeightCoefficients) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, PredefinedType, ActionType, ActionSource, Coefficient, Purpose); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.PredefinedType = PredefinedType; + this.ActionType = ActionType; + this.ActionSource = ActionSource; + this.Coefficient = Coefficient; + this.Purpose = Purpose; + this.SelfWeightCoefficients = SelfWeightCoefficients; + this.type = 385403989; + } + } + IFC4X32.IfcStructuralLoadCase = IfcStructuralLoadCase; + class IfcStructuralPlanarAction extends IfcStructuralSurfaceAction { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, AppliedLoad, GlobalOrLocal, DestabilizingLoad, ProjectedOrTrue, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.AppliedLoad = AppliedLoad; + this.GlobalOrLocal = GlobalOrLocal; + this.DestabilizingLoad = DestabilizingLoad; + this.ProjectedOrTrue = ProjectedOrTrue; + this.PredefinedType = PredefinedType; + this.type = 1621171031; + } + } + IFC4X32.IfcStructuralPlanarAction = IfcStructuralPlanarAction; + class IfcSwitchingDevice extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1162798199; + } + } + IFC4X32.IfcSwitchingDevice = IfcSwitchingDevice; + class IfcTank extends IfcFlowStorageDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 812556717; + } + } + IFC4X32.IfcTank = IfcTank; + class IfcTrackElement extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3425753595; + } + } + IFC4X32.IfcTrackElement = IfcTrackElement; + class IfcTransformer extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3825984169; + } + } + IFC4X32.IfcTransformer = IfcTransformer; + class IfcTransportElement extends IfcTransportationDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1620046519; + } + } + IFC4X32.IfcTransportElement = IfcTransportElement; + class IfcTubeBundle extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3026737570; + } + } + IFC4X32.IfcTubeBundle = IfcTubeBundle; + class IfcUnitaryControlElementType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3179687236; + } + } + IFC4X32.IfcUnitaryControlElementType = IfcUnitaryControlElementType; + class IfcUnitaryEquipment extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4292641817; + } + } + IFC4X32.IfcUnitaryEquipment = IfcUnitaryEquipment; + class IfcValve extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4207607924; + } + } + IFC4X32.IfcValve = IfcValve; + class IfcWall extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2391406946; + } + } + IFC4X32.IfcWall = IfcWall; + class IfcWallStandardCase extends IfcWall { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3512223829; + } + } + IFC4X32.IfcWallStandardCase = IfcWallStandardCase; + class IfcWasteTerminal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4237592921; + } + } + IFC4X32.IfcWasteTerminal = IfcWasteTerminal; + class IfcWindow extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, OverallHeight, OverallWidth, PredefinedType, PartitioningType, UserDefinedPartitioningType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.OverallHeight = OverallHeight; + this.OverallWidth = OverallWidth; + this.PredefinedType = PredefinedType; + this.PartitioningType = PartitioningType; + this.UserDefinedPartitioningType = UserDefinedPartitioningType; + this.type = 3304561284; + } + } + IFC4X32.IfcWindow = IfcWindow; + class IfcActuatorType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 2874132201; + } + } + IFC4X32.IfcActuatorType = IfcActuatorType; + class IfcAirTerminal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1634111441; + } + } + IFC4X32.IfcAirTerminal = IfcAirTerminal; + class IfcAirTerminalBox extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 177149247; + } + } + IFC4X32.IfcAirTerminalBox = IfcAirTerminalBox; + class IfcAirToAirHeatRecovery extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2056796094; + } + } + IFC4X32.IfcAirToAirHeatRecovery = IfcAirToAirHeatRecovery; + class IfcAlarmType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 3001207471; + } + } + IFC4X32.IfcAlarmType = IfcAlarmType; + class IfcAlignment extends IfcLinearPositioningElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.PredefinedType = PredefinedType; + this.type = 325726236; + } + } + IFC4X32.IfcAlignment = IfcAlignment; + class IfcAudioVisualAppliance extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 277319702; + } + } + IFC4X32.IfcAudioVisualAppliance = IfcAudioVisualAppliance; + class IfcBeam extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 753842376; + } + } + IFC4X32.IfcBeam = IfcBeam; + class IfcBearing extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4196446775; + } + } + IFC4X32.IfcBearing = IfcBearing; + class IfcBoiler extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 32344328; + } + } + IFC4X32.IfcBoiler = IfcBoiler; + class IfcBorehole extends IfcGeotechnicalAssembly { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 3314249567; + } + } + IFC4X32.IfcBorehole = IfcBorehole; + class IfcBuildingElementProxy extends IfcBuiltElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1095909175; + } + } + IFC4X32.IfcBuildingElementProxy = IfcBuildingElementProxy; + class IfcBurner extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2938176219; + } + } + IFC4X32.IfcBurner = IfcBurner; + class IfcCableCarrierFitting extends IfcFlowFitting { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 635142910; + } + } + IFC4X32.IfcCableCarrierFitting = IfcCableCarrierFitting; + class IfcCableCarrierSegment extends IfcFlowSegment { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3758799889; + } + } + IFC4X32.IfcCableCarrierSegment = IfcCableCarrierSegment; + class IfcCableFitting extends IfcFlowFitting { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1051757585; + } + } + IFC4X32.IfcCableFitting = IfcCableFitting; + class IfcCableSegment extends IfcFlowSegment { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4217484030; + } + } + IFC4X32.IfcCableSegment = IfcCableSegment; + class IfcCaissonFoundation extends IfcDeepFoundation { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3999819293; + } + } + IFC4X32.IfcCaissonFoundation = IfcCaissonFoundation; + class IfcChiller extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3902619387; + } + } + IFC4X32.IfcChiller = IfcChiller; + class IfcCoil extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 639361253; + } + } + IFC4X32.IfcCoil = IfcCoil; + class IfcCommunicationsAppliance extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3221913625; + } + } + IFC4X32.IfcCommunicationsAppliance = IfcCommunicationsAppliance; + class IfcCompressor extends IfcFlowMovingDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3571504051; + } + } + IFC4X32.IfcCompressor = IfcCompressor; + class IfcCondenser extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2272882330; + } + } + IFC4X32.IfcCondenser = IfcCondenser; + class IfcControllerType extends IfcDistributionControlElementType { + constructor(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ApplicableOccurrence, HasPropertySets, RepresentationMaps, Tag, ElementType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ApplicableOccurrence = ApplicableOccurrence; + this.HasPropertySets = HasPropertySets; + this.RepresentationMaps = RepresentationMaps; + this.Tag = Tag; + this.ElementType = ElementType; + this.PredefinedType = PredefinedType; + this.type = 578613899; + } + } + IFC4X32.IfcControllerType = IfcControllerType; + class IfcConveyorSegment extends IfcFlowSegment { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3460952963; + } + } + IFC4X32.IfcConveyorSegment = IfcConveyorSegment; + class IfcCooledBeam extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4136498852; + } + } + IFC4X32.IfcCooledBeam = IfcCooledBeam; + class IfcCoolingTower extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3640358203; + } + } + IFC4X32.IfcCoolingTower = IfcCoolingTower; + class IfcDamper extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4074379575; + } + } + IFC4X32.IfcDamper = IfcDamper; + class IfcDistributionBoard extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3693000487; + } + } + IFC4X32.IfcDistributionBoard = IfcDistributionBoard; + class IfcDistributionChamberElement extends IfcDistributionFlowElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1052013943; + } + } + IFC4X32.IfcDistributionChamberElement = IfcDistributionChamberElement; + class IfcDistributionCircuit extends IfcDistributionSystem { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, LongName, PredefinedType); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.LongName = LongName; + this.PredefinedType = PredefinedType; + this.type = 562808652; + } + } + IFC4X32.IfcDistributionCircuit = IfcDistributionCircuit; + class IfcDistributionControlElement extends IfcDistributionElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1062813311; + } + } + IFC4X32.IfcDistributionControlElement = IfcDistributionControlElement; + class IfcDuctFitting extends IfcFlowFitting { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 342316401; + } + } + IFC4X32.IfcDuctFitting = IfcDuctFitting; + class IfcDuctSegment extends IfcFlowSegment { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3518393246; + } + } + IFC4X32.IfcDuctSegment = IfcDuctSegment; + class IfcDuctSilencer extends IfcFlowTreatmentDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1360408905; + } + } + IFC4X32.IfcDuctSilencer = IfcDuctSilencer; + class IfcElectricAppliance extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1904799276; + } + } + IFC4X32.IfcElectricAppliance = IfcElectricAppliance; + class IfcElectricDistributionBoard extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 862014818; + } + } + IFC4X32.IfcElectricDistributionBoard = IfcElectricDistributionBoard; + class IfcElectricFlowStorageDevice extends IfcFlowStorageDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3310460725; + } + } + IFC4X32.IfcElectricFlowStorageDevice = IfcElectricFlowStorageDevice; + class IfcElectricFlowTreatmentDevice extends IfcFlowTreatmentDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 24726584; + } + } + IFC4X32.IfcElectricFlowTreatmentDevice = IfcElectricFlowTreatmentDevice; + class IfcElectricGenerator extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 264262732; + } + } + IFC4X32.IfcElectricGenerator = IfcElectricGenerator; + class IfcElectricMotor extends IfcEnergyConversionDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 402227799; + } + } + IFC4X32.IfcElectricMotor = IfcElectricMotor; + class IfcElectricTimeControl extends IfcFlowController { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1003880860; + } + } + IFC4X32.IfcElectricTimeControl = IfcElectricTimeControl; + class IfcFan extends IfcFlowMovingDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3415622556; + } + } + IFC4X32.IfcFan = IfcFan; + class IfcFilter extends IfcFlowTreatmentDevice { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 819412036; + } + } + IFC4X32.IfcFilter = IfcFilter; + class IfcFireSuppressionTerminal extends IfcFlowTerminal { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 1426591983; + } + } + IFC4X32.IfcFireSuppressionTerminal = IfcFireSuppressionTerminal; + class IfcFlowInstrument extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 182646315; + } + } + IFC4X32.IfcFlowInstrument = IfcFlowInstrument; + class IfcGeomodel extends IfcGeotechnicalAssembly { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 2680139844; + } + } + IFC4X32.IfcGeomodel = IfcGeomodel; + class IfcGeoslice extends IfcGeotechnicalAssembly { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.type = 1971632696; + } + } + IFC4X32.IfcGeoslice = IfcGeoslice; + class IfcProtectiveDeviceTrippingUnit extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 2295281155; + } + } + IFC4X32.IfcProtectiveDeviceTrippingUnit = IfcProtectiveDeviceTrippingUnit; + class IfcSensor extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4086658281; + } + } + IFC4X32.IfcSensor = IfcSensor; + class IfcUnitaryControlElement extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 630975310; + } + } + IFC4X32.IfcUnitaryControlElement = IfcUnitaryControlElement; + class IfcActuator extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 4288193352; + } + } + IFC4X32.IfcActuator = IfcActuator; + class IfcAlarm extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 3087945054; + } + } + IFC4X32.IfcAlarm = IfcAlarm; + class IfcController extends IfcDistributionControlElement { + constructor(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag, PredefinedType) { + super(GlobalId, OwnerHistory, Name, Description, ObjectType, ObjectPlacement, Representation2, Tag); + this.GlobalId = GlobalId; + this.OwnerHistory = OwnerHistory; + this.Name = Name; + this.Description = Description; + this.ObjectType = ObjectType; + this.ObjectPlacement = ObjectPlacement; + this.Representation = Representation2; + this.Tag = Tag; + this.PredefinedType = PredefinedType; + this.type = 25142252; + } + } + IFC4X32.IfcController = IfcController; +})(IFC4X3 || (IFC4X3 = {})); +_c = class { + static setLogLevel(level) { + this.logLevel = level; + } + static log(msg, ...args) { + if (this.logLevel <= 4) { + console.log(msg, ...args); + } + } + static debug(msg, ...args) { + if (this.logLevel <= 1) { + console.trace("DEBUG: ", msg, ...args); + } + } + static warn(msg, ...args) { + if (this.logLevel <= 3) { + console.warn("WARN: ", msg, ...args); + } + } + static error(msg, ...args) { + if (this.logLevel <= 4) { + console.error("ERROR: ", msg, ...args); + } + } +}, _c.logLevel = 4, _c; +if (typeof document !== "undefined") { + const currentScriptData = document.currentScript; + if ((currentScriptData == null ? void 0 : currentScriptData.src) !== void 0) + currentScriptData.src.substring( + 0, + currentScriptData.src.lastIndexOf("/") + 1 + ); +} +const crCharCode = 13; +const nl = "\n"; +class IfcDecoderStream extends TransformStream { + constructor(encoding = "utf-8") { + let tail = ""; + const decoder = new TextDecoder(encoding); + super({ + transform(chunk, controller) { + const text = decoder.decode(chunk, { stream: true }); + if (!text) + return; + let start = 0; + let idx = text.indexOf(nl); + if (idx !== -1) { + let end = idx; + if (end > 0 && text.charCodeAt(end - 1) === crCharCode) + end--; + controller.enqueue( + tail ? tail + text.substring(start, end) : text.substring(start, end) + ); + tail = ""; + start = idx + 1; + idx = text.indexOf(nl, start); + } else { + tail += text; + return; + } + while (idx !== -1) { + let end = idx; + if (end > start && text.charCodeAt(end - 1) === crCharCode) + end--; + controller.enqueue(text.substring(start, end)); + start = idx + 1; + idx = text.indexOf(nl, start); + } + if (start < text.length) + tail = text.substring(start); + }, + flush(controller) { + const remaining = decoder.decode(); + const full = tail + remaining; + if (full) + controller.enqueue(full); + } + }); + } +} +class VirtualPropertiesController { + constructor(virtualModel, boxes, config) { + __publicField(this, "_model"); + __publicField(this, "_boxes"); + __publicField(this, "_localIdsToGeometryIds", /* @__PURE__ */ new Map()); + __publicField(this, "_guidToLocalIdMap", /* @__PURE__ */ new Map()); + __publicField(this, "_items", /* @__PURE__ */ new Map()); + __publicField(this, "_itemDataCache", /* @__PURE__ */ new Map()); + __publicField(this, "_itemDataConfig", { + attributesDefault: true, + relationsDefault: { attributes: false, relations: false } + }); + __publicField(this, "_spatialStructure", null); + __publicField(this, "_virtualModel"); + __publicField(this, "_relations", /* @__PURE__ */ new Map()); + // Memoized localId → array index lookups. The flatbuffer accessors return + // a fresh TypedArray view on every call, so the caches are keyed by the + // underlying buffer and length instead of array identity. Without these, + // every getItemAttributes/getItemRelations call does a linear indexOf scan, + // which makes bulk reads (e.g. getItemsData over all psets) O(n²). + __publicField(this, "_localIdIndexCache", null); + __publicField(this, "_relationsItemIndexCache", null); + this._virtualModel = virtualModel; + this._model = virtualModel.data; + this._boxes = boxes; + this.preindexGeometryIds(); + if (config && config.extraRelations) { + for (const extra of config.extraRelations) { + const { category, relation, inverseName } = extra; + this.addInverseRelation(category, relation, inverseName); + } + } + const localIds = this._model.localIdsArray(); + if (localIds) { + for (let i = 0; i < this._model.localIdsLength(); i++) { + const category = this._model.categories(i); + const localId = localIds[i]; + let itemInfo = this._items.get(localId); + if (!itemInfo) { + itemInfo = { + category: null, + guid: null, + geometryIds: null, + attrs: null + }; + this._items.set(localId, itemInfo); + } + itemInfo.category = category; + } + for (let i = 0; i < this._model.guidsItemsLength(); i++) { + const localId = this._model.guidsItems(i); + if (localId === null) + continue; + const guid = this._model.guids(i); + this._guidToLocalIdMap.set(guid, localId); + let itemInfo = this._items.get(localId); + if (!itemInfo) { + itemInfo = { + category: null, + guid: null, + geometryIds: null, + attrs: null + }; + this._items.set(localId, itemInfo); + } + itemInfo.guid = guid; + } + } + } + indexOfLocalId(localId) { + const arr = this._model.localIdsArray(); + if (!arr) + return void 0; + let cache = this._localIdIndexCache; + if (!cache || cache.length !== arr.length || cache.buffer !== arr.buffer) { + const map = /* @__PURE__ */ new Map(); + for (let i = 0; i < arr.length; i++) + map.set(arr[i], i); + cache = { buffer: arr.buffer, length: arr.length, map }; + this._localIdIndexCache = cache; + } + return cache.map.get(localId) ?? -1; + } + indexOfRelationsItem(localId) { + const arr = this._model.relationsItemsArray(); + if (!arr) + return void 0; + let cache = this._relationsItemIndexCache; + if (!cache || cache.length !== arr.length || cache.buffer !== arr.buffer) { + const map = /* @__PURE__ */ new Map(); + for (let i = 0; i < arr.length; i++) + map.set(arr[i], i); + cache = { buffer: arr.buffer, length: arr.length, map }; + this._relationsItemIndexCache = cache; + } + return cache.map.get(localId) ?? -1; + } + getAllLocalIds() { + return this._model.localIdsArray() ?? []; + } + addInverseRelation(category, relation, inverseName) { + const categoriesIds = this.getItemsOfCategories([ + new RegExp(`^${category}$`) + ]); + const psetLocalIds = categoriesIds[category]; + for (const psetId of psetLocalIds) { + const relations = this.getItemRelations(psetId); + if (!(relations && relations[relation])) + continue; + const localIds = relations[relation]; + for (const itemId of localIds) { + let relationsObject = this._relations.get(itemId); + if (!relationsObject) { + relationsObject = {}; + this._relations.set(itemId, relationsObject); + } + let inverse = relationsObject[inverseName]; + if (!inverse) { + inverse = []; + relationsObject[inverseName] = inverse; + } + inverse.push(psetId); + } + } + } + getItemsCount() { + return this._model.localIdsLength(); + } + getMaxLocalId() { + return this._model.maxLocalId(); + } + getMetadata() { + const metadata = this._model.metadata(); + if (!metadata) { + return null; + } + return JSON.parse(metadata); + } + getCRS() { + const metadata = this.getMetadata(); + if (!metadata || !metadata.crs) { + return null; + } + return metadata.crs; + } + getItemIdsFromLocalIds(localIds) { + if (!localIds) { + const meshes = this._model.meshes(); + if (!meshes) + return []; + const count = meshes.meshesItemsLength(); + const all = new Array(count); + for (let itemId = 0; itemId < count; itemId++) + all[itemId] = itemId; + return all; + } + const itemIds = []; + for (const localId of localIds) { + const found = this._localIdsToGeometryIds.get(localId); + if (!found) + continue; + for (const itemId of found) { + itemIds.push(itemId); + } + } + return itemIds; + } + getLocalIdsFromItemIds(itemIds) { + const meshes = this._model.meshes(); + const seen = /* @__PURE__ */ new Set(); + const result = []; + for (const itemId of itemIds) { + const localIdIndex = meshes.meshesItems(itemId); + if (localIdIndex === null) + continue; + const localId = this._model.localIds(localIdIndex); + if (localId === null) + continue; + if (seen.has(localId)) + continue; + seen.add(localId); + result.push(localId); + } + return result; + } + getBox(items, result) { + for (const itemId of items) { + const currentBoxesIds = this._boxes.sampleOf(itemId); + if (currentBoxesIds) { + for (const currentBoxId of currentBoxesIds) { + const currentBox = this._boxes.get(currentBoxId); + result.union(currentBox); + } + } + } + } + getSpatialStructure() { + if (this._spatialStructure) { + return this._spatialStructure; + } + const structure = this._model.spatialStructure(); + if (!structure) { + return {}; + } + this._spatialStructure = this.getTreeItem(structure); + return this._spatialStructure; + } + getItemsChildren(ids) { + const result = /* @__PURE__ */ new Set(); + for (const id of ids) { + const localId = this.convertToLocalId(id); + if (localId === null) + continue; + this.traverseSpatialStructure(localId, result); + } + return [...result]; + } + getGuids() { + const guids = []; + for (let i = 0; i < this._model.guidsLength(); i++) { + const guid = this._model.guids(i); + guids.push(guid); + } + return guids; + } + getLocalIds() { + const array = this._model.localIdsArray(); + if (!array) + return []; + return Array.from(array); + } + getItemsCategories(ids) { + var _a2; + const result = []; + for (const id of ids) { + const localId = this.convertToLocalId(id); + if (localId === null) + continue; + let category = ((_a2 = this._items.get(localId)) == null ? void 0 : _a2.category) ?? null; + if (category === null) { + for (let i = this._virtualModel.requests.length - 1; i >= 0; i--) { + const request = this._virtualModel.requests[i]; + if (request.type === EditRequestType.CREATE_ITEM) { + if (request.localId === localId) { + category = request.data.category; + } + } + } + } + result.push(category); + } + return result; + } + getLocalIdsByGuids(guids) { + const result = []; + for (const guid of guids) { + const localId = this._guidToLocalIdMap.get(guid); + result.push(localId !== void 0 ? localId : null); + } + return result; + } + getGuidsByLocalIds(localIds) { + var _a2; + const result = []; + for (const id of localIds) { + const guid = (_a2 = this._items.get(id)) == null ? void 0 : _a2.guid; + result.push(guid !== void 0 ? guid : null); + } + return result; + } + getAttributeNames() { + const names = /* @__PURE__ */ new Set(); + for (let i = 0; i < this._model.uniqueAttributesLength(); i++) { + const attribute = this._model.uniqueAttributes(i); + if (!attribute) + continue; + const [name] = JSON.parse(attribute); + names.add(name); + } + return [...names]; + } + getAttributeValues() { + const values = /* @__PURE__ */ new Set(); + for (let i = 0; i < this._model.uniqueAttributesLength(); i++) { + const attribute = this._model.uniqueAttributes(i); + if (!attribute) + continue; + const [, value] = JSON.parse(attribute); + values.add(value); + } + return [...values]; + } + getAttributesUniqueValues(params) { + var _a2, _b2, _c3; + const map = /* @__PURE__ */ new Map(); + const areCategoriesDefined = params.every( + (value) => value.categories !== void 0 + ); + const categoriesRegex = params.map((value) => value.categories).filter((value) => value !== void 0).flat(); + for (let i = 0; i < this._model.categoriesLength(); i++) { + const localId = this._model.localIds(i); + if (localId === null) + continue; + let valid = true; + if (areCategoriesDefined) { + const category2 = this._model.categories(i); + valid = categoriesRegex.some((regex) => regex == null ? void 0 : regex.test(category2)); + } + if (!valid) + continue; + const buffer = this._model.attributes(i); + if (!buffer) + continue; + const attributeSet = {}; + for (let j = 0; j < buffer.dataLength(); j++) { + const attr = buffer.data(j); + if (!attr) + continue; + const [name, value, type] = JSON.parse(attr); + attributeSet[name] = { value, type }; + } + const keys = Object.keys(attributeSet); + const category = this._model.categories(i); + for (const { key: resultKey, attributes, get, categories } of params) { + let categoryMatch = true; + if (categories) { + categoryMatch = categories.some((value) => value.test(category)); + } + if (!categoryMatch) + continue; + let setPasses = true; + if (attributes) { + const { aggregation, queries } = attributes; + const queryResults = []; + for (const { name, value, type, negate } of queries) { + const key = keys.find((key2) => name.test(key2)); + if (!(key && ((_a2 = attributeSet[key]) == null ? void 0 : _a2.value) !== void 0)) + break; + let pass = false; + const { value: keyValue, type: keyType } = attributeSet[key]; + if (value instanceof RegExp) { + pass = typeof keyValue === "string" && value.test(keyValue); + } else { + pass = keyValue === value; + } + if (type !== void 0) { + pass = pass && typeof keyType === "string" && type.test(keyType); + } + if (negate) + pass = !pass; + queryResults.push(pass); + } + setPasses = aggregation === "exclusive" ? queryResults.every((result2) => result2) : queryResults.some((result2) => result2); + } + if (setPasses) { + const key = keys.find((key2) => get.test(key2)); + if (!(key && ((_b2 = attributeSet[key]) == null ? void 0 : _b2.value) !== void 0)) + continue; + const mapKey = resultKey ?? key; + const value = (_c3 = attributeSet[key]) == null ? void 0 : _c3.value; + if (!map.has(mapKey)) { + map.set(mapKey, /* @__PURE__ */ new Map()); + } + const valueMap = map.get(mapKey); + if (!valueMap.has(value)) { + valueMap.set(value, /* @__PURE__ */ new Set()); + } + valueMap.get(value).add(localId); + } + } + } + const result = {}; + for (const [name, valueMap] of map) { + result[name] = []; + for (const [value, itemsSet] of valueMap) { + result[name].push({ + value, + localIds: Array.from(itemsSet) + }); + } + } + return result; + } + getAttributeTypes() { + const types = /* @__PURE__ */ new Set(); + for (let i = 0; i < this._model.uniqueAttributesLength(); i++) { + const attribute = this._model.uniqueAttributes(i); + if (!attribute) + continue; + const [, , type] = JSON.parse(attribute); + types.add(type); + } + return [...types]; + } + getRelationNames() { + const names = /* @__PURE__ */ new Set(); + for (let i = 0; i < this._model.relationNamesLength(); i++) { + const name = this._model.relationNames(i); + if (!name) + continue; + names.add(name); + } + return [...names]; + } + // getItemsAttributes(ids: Identifier[]) { + // const result: (Record | null)[] = + // new Array(ids.length).fill(null); + // const localIdToIndexMap = new Map(); + // ids.forEach((id, index) => { + // localIdToIndexMap.set(id, index); + // }); + // let found = 0; + // const count = this._model.localIdsLength(); + // for (let i = 0; i < count; i++) { + // const localId = this._model.localIds(i); + // if (localId === null) continue; + // const index = localIdToIndexMap.get(localId); + // if (index === undefined) continue; + // const attributesBuffer = this._model.attributes(i); + // if (!attributesBuffer) { + // result[index] = null; + // continue; + // } + // const attributes: Record = {}; + // for (let j = 0; j < attributesBuffer.dataLength(); j++) { + // const data = attributesBuffer.data(j); + // const [name, value, type] = data; + // attributes[name] = { value, type }; + // } + // result[index] = attributes; + // found++; + // if (ids.length === found) { + // break; + // } + // } + // return result; + // } + getItemAttributes(id) { + const isLocalId = typeof id === "number"; + const localId = isLocalId ? id : this.getLocalIdsByGuids([id])[0]; + if (localId === null) { + return null; + } + const index = this.indexOfLocalId(localId); + if (index === void 0 || index === -1) { + const data2 = {}; + for (let i = this._virtualModel.requests.length - 1; i >= 0; i--) { + const request = this._virtualModel.requests[i]; + if (request.type === EditRequestType.CREATE_ITEM || // DO NOT remove this or editing created items break + // if you have problems with this, contact Antonio + request.type === EditRequestType.UPDATE_ITEM) { + if (request.localId === localId) { + for (const name in request.data.data) { + const found = request.data.data[name]; + data2[name] = { value: found.value, type: found.type }; + } + return data2; + } + } + } + return null; + } + const buffer = this._model.attributes(index); + if (!buffer) { + return null; + } + const data = {}; + for (let i = this._virtualModel.requests.length - 1; i >= 0; i--) { + const request = this._virtualModel.requests[i]; + if (request.type === EditRequestType.UPDATE_ITEM || request.type === EditRequestType.CREATE_ITEM) { + if (request.localId === localId) { + for (const name in request.data.data) { + const found = request.data.data[name]; + data[name] = { value: found.value, type: found.type }; + } + return data; + } + } + } + for (let j = 0; j < buffer.dataLength(); j++) { + const attr = buffer.data(j); + if (!attr) { + continue; + } + this.parseAttribute(attr, data); + } + return data; + } + parseAttribute(attr, data) { + const [name, value, type] = JSON.parse(attr); + data[name] = { value, type }; + } + getItemData(id, config = {}) { + var _a2; + const allAttributes = this._itemDataConfig.attributesDefault; + const attributesConfig = this._itemDataConfig.attributes; + const relationsConfig = this._itemDataConfig.relations ?? {}; + let { attributes, relations } = this._itemDataConfig.relationsDefault; + const { parentName, rel } = config; + if (!parentName && !rel) { + attributes = true; + relations = true; + } else { + const hasRelConfig = rel && rel in relationsConfig; + const hasParentConfig = parentName && parentName in relationsConfig; + if (hasRelConfig) { + const toProcess = relationsConfig[rel]; + if (toProcess) { + attributes = toProcess.attributes; + relations = toProcess.relations; + } + } else if (hasParentConfig) { + const toProcess = relationsConfig[parentName]; + if (toProcess) { + attributes = toProcess.attributes; + relations = toProcess.relations; + } + } + } + if (!attributes && !relations) { + return {}; + } + if (this._itemDataCache.has(id)) { + return this._itemDataCache.get(id); + } + const localId = typeof id === "number" ? id : this._guidToLocalIdMap.get(id) ?? null; + const deletedItems = /* @__PURE__ */ new Set(); + for (const request of this._virtualModel.requests) { + if (request.type === EditRequestType.DELETE_ITEM) { + deletedItems.add(request.localId); + } + } + if (localId === null || deletedItems.has(localId)) { + return {}; + } + const [category] = this.getItemsCategories([localId]); + const guid = typeof id === "string" ? id : ((_a2 = this._items.get(id)) == null ? void 0 : _a2.guid) ?? null; + const data = { + _category: { value: category }, + _localId: { value: localId }, + _guid: { value: guid } + }; + this._itemDataCache.set(id, data); + if (attributes && localId !== null) { + const itemAttrs = this.getItemAttributes(id); + for (const [key, value] of Object.entries(itemAttrs ?? {})) { + if (allAttributes) { + if (!(attributesConfig == null ? void 0 : attributesConfig.includes(key))) { + data[key] = value; + } + } else if (attributesConfig == null ? void 0 : attributesConfig.includes(key)) { + data[key] = value; + } + } + } + if (relations) { + const itemRels = this.getItemRelations(id); + for (const [key, localIds] of Object.entries(itemRels ?? {})) { + for (const localId2 of localIds) { + if (deletedItems.has(localId2)) { + continue; + } + const itemData = this.getItemData(localId2, { + parentName: rel, + rel: key + }); + if (Object.keys(itemData).length === 0) { + continue; + } + const info = data[key]; + if (Array.isArray(info)) { + info.push(itemData); + } else { + data[key] = [itemData]; + } + } + } + } + return data; + } + getItemsData(ids, config = {}) { + this._itemDataCache.clear(); + const result = []; + const _ids = ids.length !== 0 ? ids : this._model.localIdsArray(); + if (!_ids) + return result; + this._itemDataConfig = { + ...this._itemDataConfig, + ...config + }; + for (const id of _ids) { + result.push(this.getItemData(id)); + } + this._itemDataCache.clear(); + this._itemDataConfig = { + relationsDefault: { attributes: false, relations: false }, + attributesDefault: true + }; + return result; + } + getRawRelations(ids) { + const source = new Set(ids ?? this.getLocalIds()); + const result = /* @__PURE__ */ new Map(); + for (const id of source) { + const found = this.getItemRelations(id); + if (found) { + result.set(id, { data: found }); + } + } + return result; + } + getItemRelations(id) { + const isLocalId = typeof id === "number"; + const localId = isLocalId ? id : this.getLocalIdsByGuids([id])[0]; + for (let i = this._virtualModel.requests.length - 1; i >= 0; i--) { + const request = this._virtualModel.requests[i]; + if (request.type === EditRequestType.UPDATE_RELATION || request.type === EditRequestType.CREATE_RELATION) { + if (request.localId === localId) { + return request.data.data; + } + } + } + if (localId === null) { + return null; + } + const relations = this._relations.get(localId) ?? {}; + const index = this.indexOfRelationsItem(localId); + if (index === void 0 || index === -1) { + return Object.keys(relations).length > 0 ? relations : null; + } + const buffer = this._model.relations(index); + if (!buffer) { + return Object.keys(relations).length > 0 ? relations : null; + } + for (let j = 0; j < buffer.dataLength(); j++) { + const attr = buffer.data(j); + if (!attr) { + continue; + } + const [name, ...localIds] = JSON.parse(attr); + relations[name] = localIds; + } + return relations; + } + getCategories() { + const categories = /* @__PURE__ */ new Set(); + for (let index = 0; index < this._model.categoriesLength(); index++) { + const category = this._model.categories(index); + if (!category) + continue; + categories.add(category); + } + for (let i = 0; i < this._virtualModel.requests.length; i++) { + const request = this._virtualModel.requests[i]; + if (request.type === EditRequestType.CREATE_ITEM || request.type === EditRequestType.UPDATE_ITEM) { + if (request.data.category) { + categories.add(request.data.category); + } + } + } + return [...categories]; + } + // Improve this with an indexation at runtime? + // It already runs fast enough (?) + getItemsOfCategories(categories) { + const result = {}; + const deletedItems = /* @__PURE__ */ new Set(); + for (const request of this._virtualModel.requests) { + if (request.type === EditRequestType.DELETE_ITEM) { + deletedItems.add(request.localId); + } + } + for (const request of this._virtualModel.requests) { + if (request.type === EditRequestType.CREATE_ITEM || request.type === EditRequestType.UPDATE_ITEM) { + if (deletedItems.has(request.localId)) { + continue; + } + for (const categoryRegex of categories) { + if (categoryRegex.test(request.data.category)) { + if (!result[request.data.category]) { + result[request.data.category] = []; + } + result[request.data.category].push(request.localId); + } + } + } + } + for (let index = 0; index < this._model.categoriesLength(); index++) { + const currentCategory = this._model.categories(index); + if (!currentCategory) + continue; + const localId = this._model.localIds(index); + if (deletedItems.has(localId)) { + continue; + } + for (const categoryRegex of categories) { + if (categoryRegex.test(currentCategory)) { + if (!result[currentCategory]) { + result[currentCategory] = []; + } + result[currentCategory].push(localId); + break; + } + } + } + return result; + } + getItemsWithGeometry() { + const meshes = this._model.meshes(new Meshes()); + const localIds = []; + if (!meshes) { + return localIds; + } + const indices = meshes.meshesItemsArray(); + if (!indices) { + return localIds; + } + for (const index of indices) { + const localId = this._model.localIds(index); + if (localId === null) { + continue; + } + localIds.push(localId); + } + return localIds; + } + getItemsWithGeometryCategories() { + const localIds = this.getItemsWithGeometry(); + const categories = this.getItemsCategories(localIds); + return categories; + } + checkAttribute(attr, { + name, + value, + type + }) { + const { name: attrName, value: val, type: typeValue } = attr; + let pass = false; + if (name.test(attrName)) { + pass = value === void 0 && type === void 0; + if (!pass) { + if (value !== void 0) { + if (Array.isArray(value)) { + pass = value.some( + (regex) => typeof val === "string" && regex.test(val) + ); + } else if (value instanceof RegExp) { + pass = typeof val === "string" && value.test(val); + } else { + pass = val === value; + } + } + if (type !== void 0) { + pass = pass && typeof typeValue === "string" && type.test(typeValue); + } + } + } + return pass; + } + getItemsByAttribute({ + name, + value, + type, + negate, + itemIds + }) { + const allAttributesLength = this._model.attributesLength(); + const res = []; + const missingItemsToIterate = new Set(itemIds); + const itemIdSet = (itemIds == null ? void 0 : itemIds.length) ? new Set(itemIds) : null; + for (let i = 0; i < allAttributesLength; i++) { + const localId = this._model.localIds(i); + if (localId === null) + continue; + missingItemsToIterate.delete(localId); + if (itemIdSet && !itemIdSet.has(localId)) + continue; + const attribute = this._model.attributes(i); + if (!attribute) + continue; + const dataLength = attribute == null ? void 0 : attribute.dataLength(); + let itemPasses = false; + for (let j = 0; j < dataLength; j++) { + const data = attribute.data(j); + if (!data) + continue; + const [attrName, val, typeValue] = JSON.parse(data); + const pass = this.checkAttribute( + { + name: attrName, + value: val, + type: typeValue + }, + { name, value, type } + ); + if (pass) { + itemPasses = true; + break; + } + } + if (negate ? !itemPasses : itemPasses) { + res.push(localId); + } + } + if (!itemIds) { + for (let i = this._virtualModel.requests.length - 1; i >= 0; i--) { + const request = this._virtualModel.requests[i]; + if (request.type === EditRequestType.CREATE_ITEM && request.localId !== void 0) { + const data = {}; + for (const name2 in request.data.data) { + const found = request.data.data[name2]; + data[name2] = { value: found.value, type: found.type }; + } + let itemPasses = false; + for (const [ + attrName, + { value: val, type: typeValue } + ] of Object.entries(data)) { + const pass = this.checkAttribute( + { + name: attrName, + value: val, + type: typeValue + }, + { name, value, type } + ); + if (pass) { + itemPasses = true; + break; + } + } + if (negate ? !itemPasses : itemPasses) { + res.push(Number(request.localId)); + } + } + } + } else { + for (const localId of missingItemsToIterate) { + for (let i = this._virtualModel.requests.length - 1; i >= 0; i--) { + const request = this._virtualModel.requests[i]; + if (request.type === EditRequestType.CREATE_ITEM) { + if (request.localId !== localId) + continue; + const data = {}; + for (const name2 in request.data.data) { + const found = request.data.data[name2]; + data[name2] = { value: found.value, type: found.type }; + } + let itemPasses = false; + for (const [ + attrName, + { value: val, type: typeValue } + ] of Object.entries(data)) { + const pass = this.checkAttribute( + { + name: attrName, + value: val, + type: typeValue + }, + { name, value, type } + ); + if (pass) { + itemPasses = true; + break; + } + } + if (negate ? !itemPasses : itemPasses) { + res.push(localId); + } + } + } + } + } + return res; + } + getItemsByRelation({ + name, + targetItemIds, + sourceItemIds + }) { + const res = []; + const sources = sourceItemIds ?? this.getAllLocalIds(); + for (const srcId of sources) { + const rels = this.getItemRelations(srcId); + const linked = rels == null ? void 0 : rels[name]; + if (!linked) + continue; + if (targetItemIds) { + for (const trgId of linked) { + if (targetItemIds.has(trgId)) { + res.push(srcId); + break; + } + } + } else { + res.push(srcId); + } + } + return res; + } + getItemsByQuery(params, config) { + var _a2; + const { categories, attributes, relation } = params; + let candidateIds = config == null ? void 0 : config.localIds; + if (candidateIds) { + if (categories) { + const itemsCategories = this.getItemsCategories(candidateIds); + candidateIds = candidateIds.filter((_, index) => { + const category = itemsCategories[index]; + if (!category) + return null; + return categories.some((entry) => entry.test(category)); + }); + } + } else { + candidateIds = ((_a2 = categories == null ? void 0 : categories.filter(Boolean)) == null ? void 0 : _a2.length) ? Object.values(this.getItemsOfCategories(categories)).flat() : void 0; + } + if ((candidateIds == null ? void 0 : candidateIds.length) === 0) + return []; + if (attributes) { + const aggregation = attributes.aggregation ?? "exclusive"; + const ids = []; + for (const attribute of attributes.queries) { + if (attributes && Boolean(attribute.name)) { + const localIds = this.getItemsByAttribute({ + ...attribute, + itemIds: candidateIds + }); + ids.push(localIds); + } + } + const set = /* @__PURE__ */ new Set(); + if (aggregation === "inclusive") { + for (const collection of ids) { + for (const id of collection) { + set.add(id); + } + } + } else { + const map = /* @__PURE__ */ new Map(); + for (const collection of ids) { + for (const id of collection) { + const count = map.get(id); + if (count === void 0) { + map.set(id, 1); + } else { + map.set(id, count + 1); + } + } + } + for (const [id, count] of map) { + if (count === ids.length) { + set.add(id); + } + } + } + candidateIds = [...set]; + } + if ((candidateIds == null ? void 0 : candidateIds.length) === 0) + return []; + if (relation && Boolean(relation.name)) { + const { name, query } = relation; + const targetIds = query ? new Set(this.getItemsByQuery(query)) : void 0; + candidateIds = this.getItemsByRelation({ + name, + targetItemIds: targetIds, + sourceItemIds: candidateIds + }); + } + return Array.from(new Set(candidateIds)); + } + getTreeItem(item) { + const tree = { + category: item.category(), + localId: item.localId() + }; + const children = []; + for (let i = 0; i < item.childrenLength(); i++) { + const child = item.children(i); + if (!child) { + continue; + } + children.push(this.getTreeItem(child)); + } + if (children.length > 0) { + tree.children = children; + } + return tree; + } + preindexGeometryIds() { + const geometries = this._model.meshes(); + const length = geometries.meshesItemsLength(); + for (let i = 0; i < length; i++) { + const localIdIndex = geometries.meshesItems(i); + const localId = this._model.localIds(localIdIndex); + if (localId === null) + continue; + if (!this._localIdsToGeometryIds.has(localId)) { + this._localIdsToGeometryIds.set(localId, []); + } + this._localIdsToGeometryIds.get(localId).push(i); + } + } + convertToLocalId(id) { + const isLocalId = typeof id === "number"; + if (isLocalId) + return id; + const localId = this._guidToLocalIdMap.get(id); + if (localId === void 0) + return null; + return localId; + } + getChildrenLocalIds(treeItem, collector) { + if (treeItem.localId !== null) { + collector.add(treeItem.localId); + } + if (treeItem.children) { + for (const child of treeItem.children) { + this.getChildrenLocalIds(child, collector); + } + } + } + traverseSpatialStructure(localId, collector, treeItem = this.getSpatialStructure()) { + if (!treeItem) + return; + if (treeItem.localId === localId && treeItem.children) { + for (const child of treeItem.children) { + this.getChildrenLocalIds(child, collector); + } + return; + } + if (treeItem.children) { + for (const child of treeItem.children) { + this.traverseSpatialStructure(localId, collector, child); + } + } + } +} +class AlignmentsController { + constructor(virtualFragmentsModel) { + __publicField(this, "_fragments"); + this._fragments = virtualFragmentsModel; + } + getAlignments() { + const allAlignments = []; + const alignCat = new RegExp(ALIGNMENT_CATEGORY); + const allItemsIds = this._fragments.getItemsOfCategories([alignCat]); + const itemsIds = allItemsIds[ALIGNMENT_CATEGORY]; + if (!itemsIds) { + return []; + } + const alignmentsItems = this._fragments.getItemsData( + itemsIds, + {} + ); + for (const item of alignmentsItems) { + const data = JSON.parse(item.data.value); + allAlignments.push(data); + } + return allAlignments; + } +} +class VirtualTemplateController { + constructor() { + __publicField(this, "_templates", /* @__PURE__ */ new Map()); + } + add(code, template) { + this._templates.set(code, template); + } + get(code) { + const templates = this._templates.get(code); + if (!Array.isArray(templates)) { + return { ...templates }; + } + return this.getTemplateSet(templates); + } + getTemplateSet(templates) { + const result = []; + for (const template of templates) { + const tileData = template; + const copy = { ...tileData }; + result.push(copy); + } + return result; + } +} +const DELETED = Symbol("deleted index"); +class VirtualIndexesController { + constructor(vm) { + __publicField(this, "_vm"); + __publicField(this, "_storedByName", /* @__PURE__ */ new Map()); + __publicField(this, "_storedNames", null); + /** Overlay built from pending CREATE/UPDATE/DELETE_INDEX requests. */ + __publicField(this, "_overlay", null); + /** Length of the request list when the overlay was built; rebuild on mismatch. */ + __publicField(this, "_overlayRequestsLen", -1); + this._vm = vm; + } + /** + * Names of every index visible to the model right now: stored names + * minus those deleted by pending requests, plus names introduced by + * pending CREATE_INDEX requests. + */ + getNames() { + const overlay = this.overlay(); + const stored = this.storedNames(); + const out = []; + const seen = /* @__PURE__ */ new Set(); + for (const name of stored) { + const o = overlay.get(name); + if (o === DELETED) + continue; + out.push(name); + seen.add(name); + } + for (const [name, entry] of overlay) { + if (entry === DELETED) + continue; + if (seen.has(name)) + continue; + out.push(name); + } + return out; + } + /** + * Describe the shape of a named index without performing any lookups. + * Returns `null` if no index with that name exists or it has been deleted. + */ + getInfo(name) { + const entry = this.resolve(name); + return entry ? entry.info : null; + } + /** + * Return the keys of an index. Useful for keys-only indexes (membership + * tests, iteration) but valid for any mode. Number keys come back as a + * `Uint32Array`, string keys as a fresh `string[]`. + */ + getKeys(name) { + const entry = this.resolve(name); + if (!entry) + return null; + return entry.info.keyType === "number" ? this.materializeNumberKeys(entry) : this.materializeStringKeys(entry); + } + getKey(name, index) { + const entry = this.resolve(name); + if (!entry) + return null; + return entry.info.keyType === "number" ? this.materializeNumberKeys(entry)[index] ?? null : this.readStringKey(entry.source, index); + } + getValues(name) { + const entry = this.resolve(name); + if (!entry) + return null; + if (entry.info.valueType === "none") + return null; + const inverse = this.inverseMap(entry); + return Array.from(inverse.keys()); + } + /** + * Test whether a key exists in the named index without resolving its value. + */ + has(name, key) { + const entry = this.resolve(name); + if (!entry) + return false; + if (typeof key !== entry.info.keyType) + return false; + return this.keyMap(entry).has(key); + } + /** + * Forward lookup for a single key. The return shape depends on the index + * mode (see {@link IndexEntry}). Returns `null` if the index or key is + * missing, or the key type doesn't match. + */ + getEntry(name, key) { + const entry = this.resolve(name); + if (!entry) + return null; + if (typeof key !== entry.info.keyType) + return null; + const position = this.keyMap(entry).get(key); + if (position === void 0) + return null; + const { mode, valueType } = entry.info; + if (mode === "keysOnly" || valueType === "none") + return null; + if (mode === "oneToOne") { + return this.readScalarValue(entry, position); + } + const [start, end] = this.sliceBounds(entry, position); + if (end <= start) { + return valueType === "number" ? new Uint32Array(0) : []; + } + return valueType === "number" ? this.readNumberSlice(entry, start, end) : this.readStringSlice(entry, start, end); + } + /** + * Inverse lookup. For a value, return every key that maps to it. Builds + * and caches the inverse map on first call. + */ + getInverseEntry(name, value) { + const entry = this.resolve(name); + if (!entry) + return null; + if (entry.info.valueType === "none") + return null; + if (typeof value !== entry.info.valueType) + return null; + const inverse = this.inverseMap(entry); + const keys = inverse.get(value); + if (!keys) + return null; + return entry.info.keyType === "number" ? Uint32Array.from(keys) : keys.slice(); + } + /** + * Discard cached resolved data. Stored entries are dropped; the pending + * overlay is rebuilt on the next read. Useful if model data is mutated + * out-of-band (which the public API doesn't do today). + */ + invalidate(name) { + if (name === void 0) { + this._storedByName.clear(); + this._storedNames = null; + this._overlay = null; + this._overlayRequestsLen = -1; + return; + } + this._storedByName.delete(name); + if (this._storedNames) { + const i = this._storedNames.indexOf(name); + if (i !== -1) + this._storedNames.splice(i, 1); + } + if (this._overlay) + this._overlay.delete(name); + } + // --------------------------------------------------------------------------- + // Resolution + // --------------------------------------------------------------------------- + resolve(name) { + const overlay = this.overlay(); + const pending = overlay.get(name); + if (pending === DELETED) + return null; + if (pending !== void 0) + return pending; + return this.resolveStored(name); + } + resolveStored(name) { + const cached = this._storedByName.get(name); + if (cached) + return cached; + const length = this._vm.data.indexesLength(); + for (let i = 0; i < length; i++) { + const fb = this._vm.data.indexes(i); + if (!fb) + continue; + if (fb.name() !== name) + continue; + const entry = this.entryFromFb(fb, name); + this._storedByName.set(name, entry); + return entry; + } + return null; + } + storedNames() { + if (this._storedNames) + return this._storedNames; + const names = []; + const length = this._vm.data.indexesLength(); + for (let i = 0; i < length; i++) { + const idx = this._vm.data.indexes(i); + if (!idx) + continue; + const name = idx.name(); + if (!name) + continue; + names.push(name); + } + this._storedNames = names; + return names; + } + overlay() { + const requests = this._vm.requests; + if (this._overlay !== null && this._overlayRequestsLen === requests.length) { + return this._overlay; + } + const map = /* @__PURE__ */ new Map(); + for (const r of requests) { + if (r.type === EditRequestType.CREATE_INDEX || r.type === EditRequestType.UPDATE_INDEX) { + map.set(r.data.name, this.entryFromRaw(r.data)); + } else if (r.type === EditRequestType.DELETE_INDEX) { + map.set(r.name, DELETED); + } + } + this._overlay = map; + this._overlayRequestsLen = requests.length; + return map; + } + // --------------------------------------------------------------------------- + // Entry construction + // --------------------------------------------------------------------------- + entryFromFb(fb, name) { + const stringKeys = fb.stringKeysLength(); + const numberKeys = fb.numberKeysLength(); + const stringValues = fb.stringValuesLength(); + const numberValues = fb.numberValuesLength(); + const endLen = fb.endLength(); + const startLen = fb.startLength(); + const keyType = stringKeys > 0 ? "string" : "number"; + const size = keyType === "string" ? stringKeys : numberKeys; + let valueType = "none"; + if (stringValues > 0) + valueType = "string"; + else if (numberValues > 0) + valueType = "number"; + let mode = "keysOnly"; + if (valueType !== "none") { + if (endLen === 0) + mode = "oneToOne"; + else + mode = startLen > 0 ? "oneToNNonLinear" : "oneToNLinear"; + } + return { + source: { kind: "fb", fb }, + info: { name, mode, keyType, valueType, size }, + keyPositions: null, + inverse: null + }; + } + entryFromRaw(data) { + var _a2, _b2; + const keyType = typeof data.keys[0] === "string" ? "string" : "number"; + const size = data.keys.length; + let valueType = "none"; + if (data.values && data.values.length > 0) { + valueType = typeof data.values[0] === "string" ? "string" : "number"; + } + let mode = "keysOnly"; + if (valueType !== "none") { + const endLen = ((_a2 = data.end) == null ? void 0 : _a2.length) ?? 0; + const startLen = ((_b2 = data.start) == null ? void 0 : _b2.length) ?? 0; + if (endLen === 0) + mode = "oneToOne"; + else + mode = startLen > 0 ? "oneToNNonLinear" : "oneToNLinear"; + } + const numberKeysArray = keyType === "number" ? Uint32Array.from(data.keys) : null; + const numberValuesArray = valueType === "number" && data.values ? Uint32Array.from(data.values) : null; + return { + source: { + kind: "raw", + data, + numberKeysArray, + numberValuesArray + }, + info: { name: data.name, mode, keyType, valueType, size }, + keyPositions: null, + inverse: null + }; + } + // --------------------------------------------------------------------------- + // Source-polymorphic readers + // --------------------------------------------------------------------------- + readNumberKey(src, i) { + return src.kind === "fb" ? src.fb.numberKeys(i) : src.data.keys[i] ?? null; + } + readStringKey(src, i) { + return src.kind === "fb" ? src.fb.stringKeys(i) : src.data.keys[i] ?? null; + } + readNumberValueAt(src, i) { + return src.kind === "fb" ? src.fb.numberValues(i) : src.data.values[i] ?? null; + } + readStringValueAt(src, i) { + return src.kind === "fb" ? src.fb.stringValues(i) : src.data.values[i] ?? null; + } + numberValuesArray(src) { + return src.kind === "fb" ? src.fb.numberValuesArray() : src.numberValuesArray; + } + endAt(src, i) { + return src.kind === "fb" ? src.fb.end(i) ?? 0 : src.data.end[i] ?? 0; + } + startAt(src, i) { + return src.kind === "fb" ? src.fb.start(i) ?? 0 : src.data.start[i] ?? 0; + } + // --------------------------------------------------------------------------- + // Lookup helpers + // --------------------------------------------------------------------------- + /** Lazily build the `key -> position in keys vector` map for forward lookup. */ + keyMap(entry) { + if (entry.keyPositions) + return entry.keyPositions; + const map = /* @__PURE__ */ new Map(); + const { source, info } = entry; + if (info.keyType === "number") { + for (let i = 0; i < info.size; i++) { + const k = this.readNumberKey(source, i); + if (k === null) + continue; + map.set(k, i); + } + } else { + for (let i = 0; i < info.size; i++) { + const k = this.readStringKey(source, i); + if (k === null) + continue; + map.set(k, i); + } + } + entry.keyPositions = map; + return map; + } + sliceBounds(entry, position) { + const { source, info } = entry; + if (info.mode === "oneToNNonLinear") { + const start2 = this.startAt(source, position); + const end2 = this.endAt(source, position); + return [start2, end2]; + } + const end = this.endAt(source, position); + const start = position > 0 ? this.endAt(source, position - 1) : 0; + return [start, end]; + } + readScalarValue(entry, position) { + const { source, info } = entry; + if (info.valueType === "number") { + return this.readNumberValueAt(source, position); + } + return this.readStringValueAt(source, position); + } + readNumberSlice(entry, start, end) { + const all = this.numberValuesArray(entry.source); + if (!all) + return new Uint32Array(0); + return all.subarray(start, end); + } + readStringSlice(entry, start, end) { + const out = new Array(end - start); + for (let i = start; i < end; i++) { + out[i - start] = this.readStringValueAt(entry.source, i) ?? ""; + } + return out; + } + materializeNumberKeys(entry) { + if (entry.source.kind === "fb") { + return entry.source.fb.numberKeysArray() ?? new Uint32Array(0); + } + return entry.source.numberKeysArray ?? new Uint32Array(0); + } + materializeStringKeys(entry) { + const out = new Array(entry.info.size); + for (let i = 0; i < entry.info.size; i++) { + out[i] = this.readStringKey(entry.source, i) ?? ""; + } + return out; + } + /** Lazily build the inverse map. */ + inverseMap(entry) { + if (entry.inverse) + return entry.inverse; + const map = /* @__PURE__ */ new Map(); + const { source, info } = entry; + const pushKey = (value, key) => { + const existing = map.get(value); + if (existing) { + existing.push(key); + return; + } + map.set( + value, + info.keyType === "number" ? [key] : [key] + ); + }; + for (let i = 0; i < info.size; i++) { + const key = info.keyType === "number" ? this.readNumberKey(source, i) : this.readStringKey(source, i); + if (key === null) + continue; + if (info.mode === "oneToOne") { + const v = this.readScalarValue(entry, i); + if (v !== null) + pushKey(v, key); + continue; + } + if (info.mode === "oneToNLinear" || info.mode === "oneToNNonLinear") { + const [start, end] = this.sliceBounds(entry, i); + for (let j = start; j < end; j++) { + const v = info.valueType === "number" ? this.readNumberValueAt(source, j) : this.readStringValueAt(source, j); + if (v !== null && v !== void 0) + pushKey(v, key); + } + } + } + entry.inverse = map; + return map; + } +} +const _VirtualBox = class _VirtualBox { + constructor(position, data) { + __publicField(this, "_dataBuffer"); + __publicField(this, "_dataPosition"); + this._dataBuffer = data || this.getDefaultData(); + this._dataPosition = position || _VirtualBox._data.defaultPosition; + } + set(values) { + let counter = 0; + for (const point of _VirtualBox._data.points) { + for (const coord of _VirtualBox._data.coords) { + const position = this.getPosition(coord, point); + const result = values[counter++]; + this.setValue(position, result); + } + } + } + get(coord, point) { + const position = this.getPosition(coord, point); + return this._dataBuffer[position]; + } + clone(box) { + for (const point of _VirtualBox._data.points) { + for (const coord of _VirtualBox._data.coords) { + const position = this.getPosition(coord, point); + const result = box.get(coord, point); + this.setValue(position, result); + } + } + } + combine(box1, box2) { + for (const point of _VirtualBox._data.points) { + for (const coord of _VirtualBox._data.coords) { + this.save(coord, point, box1, box2); + } + } + } + setValue(position, value) { + this._dataBuffer[position] = value; + } + getDefaultData() { + return new Float64Array(_VirtualBox._data.size); + } + getPosition(coord, point) { + const coordPosition = _VirtualBox._data[point][coord]; + return coordPosition + this._dataPosition; + } + save(coord, point, first, second) { + const position = this.getPosition(coord, point); + const data1 = first.get(coord, point); + const data2 = second.get(coord, point); + const result = Math[point](data1, data2); + this.setValue(position, result); + } +}; +__publicField(_VirtualBox, "_data", { + size: 6, + defaultPosition: 0, + min: { + x: 0, + y: 2, + z: 4 + }, + max: { + x: 1, + y: 3, + z: 5 + }, + coords: ["x", "y", "z"], + points: ["min", "max"] +}); +let VirtualBox = _VirtualBox; +const _VirtualSpatialPoint = class _VirtualSpatialPoint { + constructor(position, data) { + __publicField(this, "box"); + __publicField(this, "data", 0); + this.box = new VirtualBox(position, data); + } + get size() { + return this.data * _VirtualSpatialPoint._data.factor; + } + get isPoint() { + return this.data >= _VirtualSpatialPoint._data.threshold; + } + transform(size, box, group) { + if (!group) { + size *= _VirtualSpatialPoint._data.factor; + } + this.data = size; + this.box.clone(box); + } +}; +__publicField(_VirtualSpatialPoint, "_data", { + threshold: 0, + factor: -1 +}); +let VirtualSpatialPoint = _VirtualSpatialPoint; +class VirtualBoxCompressor { + constructor(boxes) { + __publicField(this, "_boxes"); + __publicField(this, "_min", new Vector3()); + __publicField(this, "_max", new Vector3()); + this._boxes = boxes; + } + inflate(bounds) { + const offset = this._boxes.fullBox.min; + const min = this.getVector(bounds, offset, "min"); + const max = this.getVector(bounds, offset, "max"); + return new Box3(min, max); + } + deflate(bounds, result) { + this.read(bounds); + const data = []; + data.push(this._min.x, this._min.y, this._min.z); + data.push(this._max.x, this._max.y, this._max.z); + result.set(data); + } + getVector(bounds, offset, value) { + const x = bounds.get("x", value) + offset.x; + const y = bounds.get("y", value) + offset.y; + const z = bounds.get("z", value) + offset.z; + return new Vector3(x, y, z); + } + read(bounds) { + const { min } = this._boxes.fullBox; + this._min.subVectors(bounds.min, min); + this._max.subVectors(bounds.max, min); + } +} +class VirtualBoxCollider { + constructor(compressor, data) { + __publicField(this, "_data"); + __publicField(this, "_compressor"); + this._data = data; + this._compressor = compressor; + } + frustumCollide(bounds, frustum, fullyIncluded = false) { + const planes = this.getFrustumPlanes(frustum, bounds); + const onCollide = this.getFrustumOnCollide(planes); + const onIncludes = this.getFrustumOnIncludes(planes); + const onSeen = this.newDefaultCallback(true); + return this.collide(onCollide, onIncludes, onSeen, fullyIncluded); + } + rayCollide(bounds, ray) { + const onCollide = this.getRayOnCollide(ray); + const onIncludes = this.newDefaultCallback(false); + const onSeen = this.getRayOnSeen(bounds); + return this.collide(onCollide, onIncludes, onSeen); + } + addPoint(fullyIncluded, result, currentPosition, includes) { + if (!fullyIncluded) { + result.push(this.getPointData(currentPosition)); + } else if (includes) { + result.push(this.getPointData(currentPosition)); + } + } + getPointData(position) { + const point = this.getPoint(position); + return point.data; + } + getBounds(position) { + const point = this.getPoint(position); + return this._compressor.inflate(point.box); + } + isPoint(position) { + const point = this.getPoint(position); + return point.isPoint; + } + newDefaultCallback(value) { + return (_args) => value; + } + groupSize(position) { + const point = this.getPoint(position); + return point.size; + } + getPoint(position) { + return this._data.points[position]; + } + getRayOnSeen(bounds) { + let onSeen = this.newDefaultCallback(true); + const boundsExists = (bounds == null ? void 0 : bounds.length) > 0; + if (boundsExists) { + onSeen = (box) => { + return CameraUtils.collides(box, bounds); + }; + } + return onSeen; + } + getRayOnCollide(beam) { + return (box) => { + return beam.intersectsBox(box); + }; + } + collide(onCollide, onIncludes, onSeen, fullyIncluded = false) { + const pointAmount = this._data.points.length; + const result = []; + let currentPosition = 0; + const addAllPoints = (bound, includes) => { + const finalPosition = currentPosition + this.groupSize(currentPosition); + for (; currentPosition < finalPosition; currentPosition++) { + const isPoint = this.isPoint(currentPosition); + if (isPoint && onSeen(bound)) { + if (!fullyIncluded) { + this.savePoint(currentPosition, result); + } else if (includes) { + this.savePoint(currentPosition, result); + } + } + } + }; + const processCollisions = () => { + const bound = this.getBounds(currentPosition); + const includes = onIncludes(bound); + const isPoint = this.isPoint(currentPosition); + const collides = includes || onCollide(bound); + if (isPoint && collides && onSeen(bound)) { + this.addPoint(fullyIncluded, result, currentPosition, includes); + } + if (collides || isPoint) { + currentPosition++; + if (includes && !isPoint) { + addAllPoints(bound, includes); + } + } else { + currentPosition += this.groupSize(currentPosition); + } + }; + while (currentPosition < pointAmount) { + processCollisions(); + } + return result; + } + getFrustumOnIncludes(planes) { + return (box) => { + return CameraUtils.isIncluded(box, planes); + }; + } + getFrustumOnCollide(planes) { + return (box) => { + return CameraUtils.collides(box, planes); + }; + } + getFrustumPlanes(frustum, bounds) { + const planes = []; + for (const plane of frustum.planes) { + planes.push(plane); + } + if (bounds) { + for (const plane of bounds) { + planes.push(plane); + } + } + return planes; + } + savePoint(position, result) { + const point = this.getPoint(position); + result.push(point.data); + } +} +class VirtualBoxSorter { + constructor(boxes) { + __publicField(this, "_boxes"); + __publicField(this, "_total", new Vector3()); + __publicField(this, "_change", new Vector3()); + __publicField(this, "_average", new Vector3()); + __publicField(this, "_tempCenterVector", new Vector3()); + __publicField(this, "_tempVectors", { + x: new Vector3(), + y: new Vector3(), + z: new Vector3() + }); + this._boxes = boxes; + } + sort(dataBuffer, a, b) { + this.average(this._average, dataBuffer, a, b); + this.getDataToTotal(a, b, dataBuffer); + let result = this.anySort(a, b, dataBuffer); + result = this.adjust(b, a, result); + return Math.round(result); + } + anySort(a, b, dataBuffer) { + if (this._total.x > this._total.y) { + if (this._total.x > this._total.z) { + return this.sortDim("x", this._average.x, a, b, dataBuffer); + } + return this.sortDim("z", this._average.z, a, b, dataBuffer); + } + if (this._total.y > this._total.z) { + return this.sortDim("y", this._average.y, a, b, dataBuffer); + } + return this.sortDim("z", this._average.z, a, b, dataBuffer); + } + getDataToTotal(a, b, dataBuffer) { + this._total.set(0, 0, 0); + for (let i = a; i < b; i++) { + const box = this._boxes.get(dataBuffer[i]); + box.getCenter(this._change).sub(this._average); + const deltaSquared = this._change.multiply(this._change); + this._total.add(deltaSquared); + } + } + sortDim(dimension, threshold, first, second, elements) { + let position = first; + for (let i = first; i < second; i++) { + const value = this.getValue(elements, i, dimension); + if (value > threshold) { + this.exchange(i, position, elements); + position++; + } + } + return position; + } + exchange(first, second, elements) { + const value = elements[first]; + elements[first] = elements[second]; + elements[second] = value; + } + getValue(elements, i, dimension) { + const box = this.getBox(elements, i); + const vector = this._tempVectors[dimension]; + const value = box.getCenter(vector)[dimension]; + return value; + } + average(result, elements, first, second) { + const box = this.getBox(elements, first); + box.getCenter(result); + this.aggregate(first, second, elements, box, result); + return result.divideScalar(second - first); + } + aggregate(first, second, elements, box, result) { + for (let i = first + 1; i < second; i++) { + const current = elements[i]; + box = this._boxes.get(current); + const center = box.getCenter(this._tempCenterVector); + result.add(center); + } + } + adjust(b, a, result) { + const correction = (a + b) / 2; + const diff = b - a; + const factor = diff / 3; + if (result <= a + factor) { + result = correction; + } else if (result >= b - 1 - factor) { + result = correction; + } + return result; + } + getBox(elements, index) { + const selected = elements[index]; + return this._boxes.get(selected); + } +} +class VirtualBoxMaker { + constructor(boxes, compressor, data) { + __publicField(this, "_data"); + __publicField(this, "_compressor"); + __publicField(this, "_boxes"); + __publicField(this, "_sorter"); + this._data = data; + this._compressor = compressor; + this._boxes = boxes; + this._sorter = new VirtualBoxSorter(boxes); + } + make(data, bounds, a = 0, b = 0, size = 0, result = 0) { + const distance = a - b; + if (distance === 1) { + return this.makePoint(data, b, bounds, result); + } + if (distance === 2) { + return this.makeGroup3(result, data, b, bounds); + } + return this.makeGroup(size, data, b, a, result, bounds); + } + makeGroup3(position, data, b, bounds) { + const box1 = this.makeBox(position + 1, data, b); + const box2 = this.makeBox(position + 2, data, b + 1); + bounds.combine(box1, box2); + this.newGroup(position, 3, bounds); + return 3; + } + makeGroup(size, data, b, a, position, bounds) { + const lim1 = this._data.limits.primary[size]; + const lim2 = this._data.limits.secondary[size]; + const frontier = this._sorter.sort(data, b, a); + const size1 = this.make(data, lim1, frontier, b, size + 1, position + 1); + const result2 = position + size1 + 1; + const size2 = this.make(data, lim2, a, frontier, size + 1, result2); + bounds.combine(lim1, lim2); + const newSize = size1 + size2 + 1; + this.newGroup(position, newSize, bounds); + return newSize; + } + makeBox(position, data, b) { + const box = this._data.points[position].box; + const boxPosition = data[b]; + const boxData = this._boxes.get(boxPosition); + this._compressor.deflate(boxData, box); + this.set(position, boxPosition); + return box; + } + makePoint(data, b, bounds, position) { + const box = this._boxes.get(data[b]); + this._compressor.deflate(box, bounds); + this.newPoint(position, data[b], bounds); + return 1; + } + newGroup(position, size, bounds) { + const point = this.get(position); + point.transform(size, bounds, false); + } + get(position) { + return this._data.points[position]; + } + newPoint(position, value, bounds) { + const point = this.get(position); + point.transform(value, bounds, true); + } + set(position, data) { + const point = this.get(position); + point.data = data; + } +} +const _VirtualBoxStructure = class _VirtualBoxStructure { + constructor(boxes) { + __publicField(this, "_compressor"); + __publicField(this, "_collider"); + __publicField(this, "_maker"); + __publicField(this, "_data"); + __publicField(this, "_boxes"); + this._boxes = boxes; + this._compressor = new VirtualBoxCompressor(boxes); + this._data = this.getData(); + this._collider = new VirtualBoxCollider(this._compressor, this._data); + this._maker = new VirtualBoxMaker( + this._boxes, + this._compressor, + this._data + ); + this.initData(); + } + collideFrustum(bounds, frustum, fullyIncluded = false) { + return this._collider.frustumCollide(bounds, frustum, fullyIncluded); + } + collideRay(bounds, beam) { + return this._collider.rayCollide(bounds, beam); + } + setupLimits() { + for (let i = 0; i < _VirtualBoxStructure._limitThreshold; i++) { + this._data.limits.primary.push(new VirtualBox()); + this._data.limits.secondary.push(new VirtualBox()); + } + } + getPointBuffer() { + const count = this._boxes.getCount(); + const pointBuffer = new Uint32Array(count); + for (let i = 0; i < pointBuffer.length; i++) { + pointBuffer[i] = i; + } + return pointBuffer; + } + getPointsAmount(pointBuffer) { + const result = pointBuffer.length * 2; + return result - 1; + } + initData() { + const pointBuffer = this.getPointBuffer(); + const pointsAmount = this.getPointsAmount(pointBuffer); + const size = pointsAmount * _VirtualBoxStructure._boxSize; + const data = new Float64Array(size); + for (let i = 0; i < pointsAmount; i++) { + const position = i * _VirtualBoxStructure._boxSize; + const newPoint = new VirtualSpatialPoint(position, data); + this._data.points.push(newPoint); + } + this.setupLimits(); + const root = new VirtualBox(); + this._maker.make(pointBuffer, root, pointBuffer.length); + } + getData() { + return { + points: [], + limits: { + primary: [], + secondary: [] + } + }; + } +}; +__publicField(_VirtualBoxStructure, "_boxSize", 6); +__publicField(_VirtualBoxStructure, "_limitThreshold", 32); +let VirtualBoxStructure = _VirtualBoxStructure; +class VirtualBoxController { + constructor(fragments) { + __publicField(this, "lookup", null); + __publicField(this, "_boxSize", 6); + __publicField(this, "_pointSize", 3); + __publicField(this, "_temp"); + __publicField(this, "_dimensionsOfSamples"); + __publicField(this, "_samples", []); + __publicField(this, "_boxes"); + __publicField(this, "_meshes"); + __publicField(this, "_box"); + this._temp = { + box: new Box3(), + vector: new Vector3(), + transform: new Matrix4(), + sample: new Sample(), + representation: new Representation() + }; + this._box = new Box3(); + const meshes = fragments.meshes(); + if (!meshes) { + throw new Error("Fragments: Malformed fragments data!"); + } + this._meshes = meshes; + const sampleCount = meshes.samplesLength(); + this._dimensionsOfSamples = new Float32Array(sampleCount); + const boxSize = sampleCount * this._boxSize; + this._boxes = new Float64Array(boxSize); + this.lookup = this.newLookup(); + } + get fullBox() { + return this._box; + } + set fullBox(box) { + this._box = box; + } + sampleOf(id) { + return this._samples[id]; + } + get(id) { + const minPosition = this.getMinPosition(id); + const maxPosition = this.getMaxPosition(id); + this._temp.box.min.fromArray(this._boxes, minPosition); + this._temp.box.max.fromArray(this._boxes, maxPosition); + return this._temp.box; + } + process(id) { + this.fetchSampleAndRepresentation(id); + this.getBox(); + this.addToFullBox(); + const minPosition = this.getMinPosition(id); + const maxPosition = this.getMaxPosition(id); + this._temp.box.min.toArray(this._boxes, minPosition); + this._temp.box.max.toArray(this._boxes, maxPosition); + } + getCount() { + return this._boxes.length / this._boxSize; + } + dimensionOf(id) { + const dimension = this._dimensionsOfSamples[id]; + if (!dimension) { + throw new Error("Fragments: Dimension not found!"); + } + return dimension; + } + newLookup() { + const sampleCount = this._meshes.samplesLength(); + const itemsCount = this._meshes.globalTransformsLength(); + if (sampleCount === 0) { + return null; + } + for (let i = 0; i < sampleCount; i++) { + this.fetchSampleAndRepresentation(i); + TransformHelper.getBox(this._temp.representation, this._temp.box); + const dimension = this._temp.box.getSize(this._temp.vector); + this._dimensionsOfSamples[i] = dimension.length(); + this.process(i); + } + this._samples = new Array(itemsCount); + for (let i = 0; i < sampleCount; i++) { + this.storeBox(i); + } + if (!this.getCount()) { + throw new Error("Fragments: Malformed boxes!"); + } + return new VirtualBoxStructure(this); + } + getBox() { + TransformHelper.get(this._temp.sample, this._meshes, this._temp.transform); + TransformHelper.getBox(this._temp.representation, this._temp.box); + this._temp.box.applyMatrix4(this._temp.transform); + } + fetchSampleAndRepresentation(id) { + this._meshes.samples(id, this._temp.sample); + const representationId = this._temp.sample.representation(); + this._meshes.representations(representationId, this._temp.representation); + } + getMinPosition(id) { + return id * this._boxSize; + } + storeBox(id) { + this.fetchSampleAndRepresentation(id); + const sampleId = this._temp.sample.item(); + if (this._samples[sampleId] === void 0) { + this._samples[sampleId] = []; + } + this._samples[sampleId].push(id); + } + getMaxPosition(id) { + return id * this._boxSize + this._pointSize; + } + addToFullBox() { + this.fullBox.union(this._temp.box); + } +} +class GridsController { + constructor(virtualFragmentsModel) { + __publicField(this, "_fragments"); + this._fragments = virtualFragmentsModel; + } + async getGrids() { + const allGrids = []; + const gridCat = new RegExp(GRID_CATEGORY); + const allItemsIds = this._fragments.getItemsOfCategories([gridCat]); + const itemsIds = allItemsIds[GRID_CATEGORY]; + if (!itemsIds) { + return []; + } + const gridsItems = this._fragments.getItemsData( + itemsIds, + {} + ); + for (const item of gridsItems) { + const data = JSON.parse(item.data.value); + allGrids.push(data); + } + return allGrids; + } +} +class RaycastHelper { + raycast(model, ray, frustum, returnAll) { + if (model.view) { + return model.raycaster.raycast( + ray, + frustum, + model.view.clippingPlanes, + returnAll + ); + } + return void 0; + } + snapRaycast(model, ray, frustum, snappingClass) { + if (model.view) { + return model.raycaster.snapRaycast( + ray, + frustum, + snappingClass, + model.view.clippingPlanes + ); + } + return []; + } + rectangleRaycast(model, frustum, fullyIncluded) { + if (model.view) { + return model.raycaster.rectangleRaycast( + frustum, + model.view.clippingPlanes, + fullyIncluded + ); + } + return []; + } +} +class CoordinatesHelper { + getPositions(model, localIds) { + const positions = []; + const itemIds = model.properties.getItemIdsFromLocalIds(localIds); + for (const id of itemIds) { + const transform = model.tiles.meshes.globalTransforms(id); + if (!transform) { + continue; + } + const position = transform.position(); + const x = position.x(); + const y = position.y(); + const z = position.z(); + positions.push({ x, y, z }); + } + return positions; + } + getCoordinates(model) { + const meshes = model.data.meshes(); + const coords = meshes.coordinates(); + const position = coords.position(); + const xDir = coords.xDirection(); + const yDir = coords.yDirection(); + const x = position.x(); + const y = position.y(); + const z = position.z(); + const xx = xDir.x(); + const xy = xDir.y(); + const xz = xDir.z(); + const yx = yDir.x(); + const yy = yDir.y(); + const yz = yDir.z(); + return [ + x, + y, + z, + xx, + xy, + xz, + yx, + yy, + yz + ]; + } +} +class HighlightHelper { + constructor() { + __publicField(this, "_highlightProps", [ + "color", + "opacity", + "transparent", + "renderedFaces" + ]); + } + resetHighlight(model, items) { + if (!items) { + model.itemConfig.clearHighlight(); + model.tiles.restart(); + return; + } + const itemIds = model.properties.getItemIdsFromLocalIds(items); + this.resetHighlightForItems(itemIds, model); + model.tiles.restart(); + } + getHighlight(model, localIds) { + const found = []; + const itemIds = model.properties.getItemIdsFromLocalIds(localIds); + const fetchEvent = this.getFetchEvent(model, found); + model.traverse(itemIds, fetchEvent); + return found; + } + getHighlightItems(model) { + const found = []; + const count = model.itemConfig.size; + for (let itemId = 0; itemId < count; itemId++) { + const hasHighlight = model.itemConfig.getHighlight(itemId); + if (!hasHighlight) + continue; + const [localId] = model.properties.getLocalIdsFromItemIds([itemId]); + found.push(localId); + } + return found; + } + highlight(model, items, material) { + const itemIds = model.properties.getItemIdsFromLocalIds(items); + const materials = []; + const highlightEvent = this.getCheckEvent(model, material, materials); + model.traverse(itemIds, highlightEvent); + const ids = model.materials.transfer(materials); + const createEvent = this.getCreateEvent(model, ids); + model.traverse(itemIds, createEvent); + model.tiles.updateVirtualMeshes(itemIds); + } + hasEffectiveProperties(material) { + const { preserveOriginalMaterial, ...rest } = material; + return Object.keys(rest).length > 0; + } + updateHighlightDefinition(model, items, updateFn) { + const itemIds = model.properties.getItemIdsFromLocalIds(items); + const itemsToUpdate = []; + const itemsToClear = []; + const materials = []; + for (const itemId of itemIds) { + const highlightId = model.itemConfig.getHighlight(itemId); + if (highlightId) { + const currentHighlight = model.materials.fetch(highlightId); + const updated = updateFn(currentHighlight); + if (this.hasEffectiveProperties(updated)) { + const newMaterial = { + ...updated, + preserveOriginalMaterial: true + }; + materials.push(newMaterial); + itemsToUpdate.push(itemId); + } else { + itemsToClear.push(itemId); + } + } + } + if (itemsToClear.length > 0) { + for (const itemId of itemsToClear) { + model.itemConfig.setHighlight(itemId, 0); + } + } + if (itemsToUpdate.length > 0) { + const ids = model.materials.transfer(materials); + const createEvent = this.getCreateEvent(model, ids); + model.traverse(itemsToUpdate, createEvent); + } + model.tiles.updateVirtualMeshes(itemIds); + } + setColor(model, items, color) { + let normalizedColor = color; + if (color && !color.isColor && typeof color.r === "number") { + normalizedColor = new Color().setRGB( + color.r, + color.g, + color.b, + SRGBColorSpace + ); + } + const material = { + color: normalizedColor, + preserveOriginalMaterial: true, + _explicitProps: ["color"] + }; + this.highlight(model, items, material); + } + resetColor(model, items) { + this.updateHighlightDefinition(model, items, (current) => { + const { color: _, ...rest } = current; + return rest; + }); + } + setOpacity(model, items, opacity) { + const material = { + opacity, + transparent: opacity < 1, + preserveOriginalMaterial: true, + _explicitProps: ["opacity", "transparent"] + }; + this.highlight(model, items, material); + } + resetOpacity(model, items) { + this.updateHighlightDefinition(model, items, (current) => { + const { opacity: _o, transparent: _t, ...rest } = current; + return rest; + }); + } + getFetchEvent(model, found) { + return (itemId) => { + const id = model.itemConfig.getHighlight(itemId); + if (id) { + const result = model.materials.fetch(id); + found.push(result); + return; + } + found.push(void 0); + }; + } + setHighlightProperty(newHigh, pastHigh, key) { + if (newHigh[key] === void 0 && pastHigh[key] !== void 0) { + newHigh[key] = pastHigh[key]; + } + } + getNewHighFromPast(model, past, highlightMaterial) { + const pastHigh = model.materials.fetch(past); + const newHigh = { ...highlightMaterial }; + const pastExplicit = pastHigh._explicitProps || []; + const newExplicit = highlightMaterial._explicitProps || []; + if (pastExplicit.length > 0 || newExplicit.length > 0) { + for (const prop of pastExplicit) { + const key = prop; + if (!newExplicit.includes(prop) && pastHigh[key] !== void 0) { + newHigh[prop] = pastHigh[key]; + } + } + newHigh._explicitProps = [.../* @__PURE__ */ new Set([...pastExplicit, ...newExplicit])]; + } else { + for (const prop of this._highlightProps) { + this.setHighlightProperty(newHigh, pastHigh, prop); + } + } + return newHigh; + } + getCheckEvent(model, highlightMaterial, materials) { + return (itemId) => { + const past = model.itemConfig.getHighlight(itemId); + if (past !== void 0) { + const newHigh = this.getNewHighFromPast(model, past, highlightMaterial); + materials.push(newHigh); + return; + } + materials.push(highlightMaterial); + }; + } + getCreateEvent(model, ids) { + return (itemId, position) => { + model.itemConfig.setHighlight(itemId, ids[position]); + }; + } + resetHighlightForItems(itemIds, model) { + if (!itemIds) { + model.itemConfig.clearHighlight(); + return; + } + for (const itemId of itemIds) { + model.itemConfig.setHighlight(itemId, 0); + } + } +} +class VisibilityHelper { + constructor() { + __publicField(this, "_hiddenForEdit", /* @__PURE__ */ new Set()); + } + resetVisible(model) { + model.itemConfig.clearVisible(); + model.tiles.restart(); + } + getVisible(model, items) { + const itemIds = model.properties.getItemIdsFromLocalIds(items); + const result = []; + for (const id of itemIds) { + if (this._hiddenForEdit.has(id)) { + continue; + } + const isVisible = model.itemConfig.visible(id); + result.push(isVisible); + } + return result; + } + getItemsByVisibility(model, visible) { + const visibleCondition = this.getVisibleCondition(model, visible); + const result = model.getItemsByConfig(visibleCondition); + const localIds = model.properties.getLocalIdsFromItemIds(result); + const filtered = this.filterHiddenForEdit(localIds); + return filtered; + } + toggleVisible(model, localIds) { + const itemIds = model.properties.getItemIdsFromLocalIds(localIds); + const filtered = this.filterHiddenForEdit(itemIds); + const toggleEvent = this.getToggleEvent(model); + model.traverse(filtered, toggleEvent); + model.tiles.updateVirtualMeshes(filtered); + } + setVisible(model, localIds, visible) { + const itemIds = model.properties.getItemIdsFromLocalIds(localIds); + const filtered = this.filterHiddenForEdit(itemIds); + const setEvent = this.getSetEvent(model, visible); + model.traverse(filtered, setEvent); + model.tiles.updateVirtualMeshes(filtered); + } + // Edited items are hidden and ignore all future visibility requests + // Because their visibility is handled from the delta model + hideForEdit(model, localIds) { + this.setVisible(model, localIds, false); + for (const id of localIds) { + this._hiddenForEdit.add(id); + } + } + // Remove items from the hidden-for-edit set so future setVisible calls + // can control them again. Used when navigating history back to a state + // where those items are no longer in the delta. + unhideForEdit(localIds) { + for (const id of localIds) { + this._hiddenForEdit.delete(id); + } + } + // Clear the entire hidden-for-edit set. Used when undoing all edits + // so every item can be made visible on the base model again. + clearHiddenForEdit() { + this._hiddenForEdit.clear(); + } + filterHiddenForEdit(localIds) { + if (!this._hiddenForEdit.size) { + return localIds; + } + const result = []; + for (const id of localIds) { + if (this._hiddenForEdit.has(id)) { + continue; + } + result.push(id); + } + return result; + } + getSetEvent(model, visible) { + return (itemId) => { + model.itemConfig.setVisible(itemId, visible); + }; + } + getVisibleCondition(model, visible) { + return (itemId) => { + const currentVisible = model.itemConfig.visible(itemId); + return currentVisible === visible; + }; + } + getToggleEvent(model) { + return (itemId) => { + const isVisible = model.itemConfig.visible(itemId); + model.itemConfig.setVisible(itemId, !isVisible); + }; + } +} +class GeometryHelper { + getGeometriesLength(model) { + return model.data.meshes().globalTransformsLength(); + } + getSampleGeometry(model, itemIndex, lod) { + const sampleIndices = model.boxes.sampleOf(itemIndex); + const result = []; + if (!sampleIndices) + return result; + const meshes = model.data.meshes(); + for (const sampleIndex of sampleIndices) { + const sample = model.tiles.fetchSample(sampleIndex, lod); + const sampleId = meshes.sampleIds(sampleIndex); + const geometries = Array.isArray(sample.geometries) ? sample.geometries : [sample.geometries]; + const sampleData = meshes.samples(sampleIndex); + const localIdIndex = meshes.meshesItems(sampleData.item()); + const localId = model.data.localIds(localIdIndex); + for (const geometry of geometries) { + const pos = lod === CurrentLod.GEOMETRY ? geometry.positionBuffer : new Float32Array(geometry.positionBuffer); + result.push({ + transform: sample.transform.clone(), + indices: geometry.indexBuffer, + positions: pos, + normals: geometry.normalBuffer, + sampleId, + localId, + representationId: sample.representationId + }); + } + } + return result; + } + getVolume(model, id) { + let volume = 0; + const p1 = { x: 0, y: 0, z: 0 }; + const p2 = { x: 0, y: 0, z: 0 }; + const p3 = { x: 0, y: 0, z: 0 }; + const geometries = this.getSampleGeometry(model, id, CurrentLod.GEOMETRY); + for (const { indices, positions } of geometries) { + if (!(indices && positions)) + continue; + for (let i = 0; i < indices.length - 2; i += 3) { + const i1 = indices[i] * 3; + const i2 = indices[i + 1] * 3; + const i3 = indices[i + 2] * 3; + p1.x = positions[i1]; + p1.y = positions[i1 + 1]; + p1.z = positions[i1 + 2]; + p2.x = positions[i2]; + p2.y = positions[i2 + 1]; + p2.z = positions[i2 + 2]; + p3.x = positions[i3]; + p3.y = positions[i3 + 1]; + p3.z = positions[i3 + 2]; + volume += this.getSignedVolumeOfTriangle(p1, p2, p3); + } + } + return Math.abs(volume); + } + getSignedVolumeOfTriangle(p1, p2, p3) { + const v321 = p3.x * p2.y * p1.z; + const v231 = p2.x * p3.y * p1.z; + const v312 = p3.x * p1.y * p2.z; + const v132 = p1.x * p3.y * p2.z; + const v213 = p2.x * p1.y * p3.z; + const v123 = p1.x * p2.y * p3.z; + return 1 / 6 * (-v321 + v231 + v312 - v132 - v213 + v123); + } +} +class SectionHelper { + constructor() { + __publicField(this, "_sectionGenerator", new SectionGenerator()); + } + getSection(model, plane, indices) { + this._sectionGenerator.plane = plane; + performance.now(); + const visitedGeometries = /* @__PURE__ */ new Map(); + const meshes = []; + for (const itemID of indices) { + const sampleIds = model.boxes.sampleOf(itemID); + if (!sampleIds) + continue; + for (const sampleId of sampleIds) { + const boundingBox2 = model.boxes.get(sampleId); + if (!plane.intersectsBox(boundingBox2)) { + continue; + } + const localIDIndex = model.tiles.meshes.meshesItems(itemID); + const category = model.data.categories(localIDIndex); + if (category === "IFCSPACE") { + continue; + } + const sample = model.tiles.meshes.samples(sampleId); + if (!sample) + continue; + const definitionID = sample.representation(); + if (!visitedGeometries.has(definitionID)) { + const geometries2 = []; + const sampleGeom = model.tiles.fetchSample( + sampleId, + CurrentLod.GEOMETRY + ); + MiscHelper.forEach(sampleGeom.geometries, (geometryData) => { + if (!geometryData.indexBuffer || !geometryData.positionBuffer) { + return; + } + const geometry = new BufferGeometry(); + geometry.setIndex(Array.from(geometryData.indexBuffer)); + geometry.setAttribute( + "position", + new BufferAttribute(geometryData.positionBuffer, 3) + ); + geometries2.push(geometry); + }); + visitedGeometries.set(definitionID, geometries2); + } + const geometries = visitedGeometries.get(definitionID); + if (!geometries) + continue; + for (const geometry of geometries) { + const mesh = new Mesh(geometry); + const transform = model.tiles.getSampleTransform(sampleId); + mesh.applyMatrix4(transform); + mesh.updateWorldMatrix(true, true); + meshes.push(mesh); + } + } + } + const buffer = new Float32Array(6e5); + const posAttr = new BufferAttribute(buffer, 3, false); + const { index, indexes } = this._sectionGenerator.createEdges({ + meshes, + posAttr + }); + const fillsIndices = this._sectionGenerator.createFills(buffer, indexes); + for (const [, geometries] of visitedGeometries) { + for (const geometry of geometries) { + geometry.dispose(); + } + } + const result = { + buffer, + index, + fillsIndices + }; + return result; + } +} +class SequenceHelper { + constructor(model) { + __publicField(this, "_model"); + __publicField(this, "sequenceSelectorFunction", { + withVisiblity: (_) => this._model.getItemsByVisibility(_), + highlighted: () => this._model.getHighlightItemIds(), + children: (_) => this._model.getItemsChildren(_), + ofCategory: (_) => { + const categoryIds = this._model.getItemsOfCategories(_); + return Object.values(categoryIds).flat(); + }, + withCondition: () => [], + withGeometry: () => this._model.getItemsWithGeometry() + }); + __publicField(this, "sequenceResultFunction", { + attributes: (ids) => ids.map((id) => this._model.getItemAttributes(id)), + mergedBoxes: (_) => this._model.getBBoxes(_), + category: (ids) => this._model.getItemsCategories(ids), + children: (_) => this._model.getItemsChildren(_), + data: (ids, ...args) => this._model.getItemsData(ids, args[0]), + geometry: (ids) => this._model.getItemsGeometry(ids), + guid: (_) => this._model.getGuidsByLocalIds(_), + highlight: (_) => this._model.getHighlight(_), + relations: (ids) => ids.map((id) => this._model.getItemRelations(id)), + visibility: (_) => this._model.getVisible(_) + }); + this._model = model; + } + getSequenced(result, fromItems, inputs) { + var _a2; + const resultFunction = this.sequenceResultFunction[result]; + if (!resultFunction) + return null; + let partial = []; + let iterations = 0; + for (const action of fromItems) { + const selectorFunction = this.sequenceSelectorFunction[action]; + if (!selectorFunction) + continue; + const input2 = (_a2 = inputs == null ? void 0 : inputs.selector) == null ? void 0 : _a2[action]; + const data = iterations === 0 ? input2 : partial; + partial = selectorFunction(data); + iterations++; + } + const input = inputs == null ? void 0 : inputs.result; + const out = resultFunction(partial, input); + return out; + } +} +class ItemsHelper { + traverse(model, itemIds, onItem) { + if (itemIds) { + this.traverseItems(itemIds, onItem); + return; + } + this.traverseAllItems(model, onItem); + } + getItemsByConfig(model, condition) { + const found = []; + const count = model.itemConfig.size; + for (let itemId = 0; itemId < count; itemId++) { + const conditionPass = condition(itemId); + if (!conditionPass) + continue; + found.push(itemId); + } + return found; + } + traverseItems(itemIds, onItem) { + const itemsCount = itemIds.length; + for (let id = 0; id < itemsCount; id++) { + onItem(itemIds[id], id); + } + } + traverseAllItems(model, onItem) { + const itemsCount = model.itemConfig.size; + for (let id = 0; id < itemsCount; id++) { + onItem(id, id); + } + } +} +class VirtualFragmentsModel { + constructor(modelId, data, connection, config) { + __publicField(this, "data"); + __publicField(this, "view"); + __publicField(this, "raycaster"); + __publicField(this, "itemConfig"); + __publicField(this, "properties"); + __publicField(this, "materials"); + __publicField(this, "tiles"); + __publicField(this, "boxes"); + __publicField(this, "indexes"); + __publicField(this, "requests", []); + __publicField(this, "_raycastHelper", new RaycastHelper()); + __publicField(this, "_coordinatesHelper", new CoordinatesHelper()); + __publicField(this, "_highlightHelper", new HighlightHelper()); + __publicField(this, "_visibilityHelper", new VisibilityHelper()); + __publicField(this, "_geometryHelper", new GeometryHelper()); + __publicField(this, "_sectionHelper", new SectionHelper()); + __publicField(this, "_itemsHelper", new ItemsHelper()); + __publicField(this, "_sequenceHelper", new SequenceHelper(this)); + __publicField(this, "_config", {}); + __publicField(this, "_modelId"); + __publicField(this, "_alignments"); + __publicField(this, "_grids"); + __publicField(this, "_connection"); + __publicField(this, "_reprIdMap", /* @__PURE__ */ new Map()); + __publicField(this, "_nextId", 0); + __publicField(this, "_requestsForRedo", []); + __publicField(this, "_onTransferMaterial", (data, trans) => { + if (!this._connection) + return void 0; + return this._connection.fetch(data, trans); + }); + this._modelId = modelId; + this._connection = connection; + this._config = { ...this._config, ...config }; + this.data = this.setupModel(data); + this.boxes = new VirtualBoxController(this.data); + this.materials = this.setupMaterials(modelId); + this._alignments = new AlignmentsController(this); + this._grids = new GridsController(this); + this.itemConfig = this.setupItemsConfig(); + this.tiles = this.setupTiles(); + this.properties = this.setupProperties(); + this.raycaster = this.setupRaycaster(); + this.indexes = new VirtualIndexesController(this); + this.setupBVH(); + this._nextId = this.getMaxLocalId(); + } + // --------------------------------------------------------------------------- + // User-defined indexes (see ModelIndex schema) + // --------------------------------------------------------------------------- + getIndexNames() { + return this.indexes.getNames(); + } + getIndexInfo(name) { + return this.indexes.getInfo(name); + } + getIndexKeys(name) { + return this.indexes.getKeys(name); + } + getIndexKey(name, index) { + return this.indexes.getKey(name, index); + } + getIndexValues(name) { + return this.indexes.getValues(name); + } + hasIndexEntry(name, key) { + return this.indexes.has(name, key); + } + getIndexEntry(name, key) { + return this.indexes.getEntry(name, key); + } + getInverseIndexEntry(name, value) { + return this.indexes.getInverseEntry( + name, + value + ); + } + getItemsByConfig(condition) { + return this._itemsHelper.getItemsByConfig(this, condition); + } + getItemsCategories(ids) { + return this.properties.getItemsCategories(ids); + } + getItemIdsByLocalIds(localIds) { + return this.properties.getItemIdsFromLocalIds(localIds); + } + getItemAttributes(id) { + return this.properties.getItemAttributes(id); + } + // getItemsAttributes(ids: number[]) { + // return this.properties.getItemsAttributes(ids); + // } + getAttributesUniqueValues(config) { + return this.properties.getAttributesUniqueValues(config); + } + getItemsData(ids, config) { + return this.properties.getItemsData(ids, config); + } + getItemsOfCategories(categories) { + return this.properties.getItemsOfCategories(categories); + } + getItemsWithGeometry() { + return this.properties.getItemsWithGeometry(); + } + getItemsWithGeometryCategories() { + return this.properties.getItemsWithGeometryCategories(); + } + getItemsByQuery(params, config) { + return this.properties.getItemsByQuery(params, config); + } + getItemRelations(id) { + return this.properties.getItemRelations(id); + } + getSpatialStructure() { + const found = EditUtils.applyChangesToSpecialData( + this.requests, + "SPATIAL_STRUCTURE" + ); + if (found) { + return found; + } + return this.properties.getSpatialStructure(); + } + getMaxLocalId() { + return this.properties.getMaxLocalId(); + } + getCategories() { + return this.properties.getCategories(); + } + getMetadata() { + const found = EditUtils.applyChangesToSpecialData( + this.requests, + "METADATA" + ); + if (found) { + return found; + } + return this.properties.getMetadata(); + } + getCRS() { + const found = EditUtils.applyChangesToSpecialData( + this.requests, + "METADATA" + ); + if (found && found.crs) { + return found.crs; + } + return this.properties.getCRS(); + } + getLocalIdsByGuids(guids) { + return this.properties.getLocalIdsByGuids(guids); + } + getGuidsByLocalIds(localIds) { + return this.properties.getGuidsByLocalIds(localIds); + } + /** + * Returns the user-facing `localId` for each internal `itemId`, + * preserving order. Used by GPU-readback pickers that recover item + * ids from the per-vertex `id` attribute and need to translate to + * the public id space. + */ + getLocalIdsFromItemIds(itemIds) { + return this.properties.getLocalIdsFromItemIds(itemIds); + } + getSequenced(result, fromItems, inputs) { + return this._sequenceHelper.getSequenced(result, fromItems, inputs); + } + highlight(items, highlightMaterial) { + this._highlightHelper.highlight(this, items, highlightMaterial); + } + setColor(items, color) { + this._highlightHelper.setColor(this, items, color); + } + resetColor(items) { + this._highlightHelper.resetColor(this, items); + } + setOpacity(items, opacity) { + this._highlightHelper.setOpacity(this, items, opacity); + } + resetOpacity(items) { + this._highlightHelper.resetOpacity(this, items); + } + getHighlight(localIds) { + return this._highlightHelper.getHighlight(this, localIds); + } + getHighlightItemIds() { + return this._highlightHelper.getHighlightItems(this); + } + resetHighlight(items) { + this._highlightHelper.resetHighlight(this, items); + } + /** + * For every loaded tile that contains at least one of the given local + * ids, returns the index-buffer chunks those items occupy in the tile. + * Used to draw outline silhouettes by sharing the tile's geometry + * attributes and limiting drawing to the returned chunks via + * `geometry.groups`. + * + * @returns One entry per affected tile. Each entry has parallel + * `position` and `size` Uint32Arrays giving start index and count. + */ + getItemDrawChunks(localIds) { + const itemIds = this.properties.getItemIdsFromLocalIds(localIds); + return this.tiles.getDrawChunksForItems(new Set(itemIds)); + } + getCoordinates() { + return this._coordinatesHelper.getCoordinates(this); + } + getPositions(localIds) { + return this._coordinatesHelper.getPositions(this, localIds); + } + getGeometriesLength() { + return this._geometryHelper.getGeometriesLength(this); + } + getGuids() { + return this.properties.getGuids(); + } + getLocalIds() { + return this.properties.getLocalIds(); + } + getItemsGeometry(localIds, lod = CurrentLod.GEOMETRY) { + const indices = this.properties.getItemIdsFromLocalIds(localIds); + const geometries = []; + for (const index of indices) { + const geometry = this._geometryHelper.getSampleGeometry(this, index, lod); + geometries.push(geometry); + } + return geometries; + } + getGeometries(reprsLocalIds) { + if (this._reprIdMap.size === 0) { + const meshes2 = this.data.meshes(); + for (let i = 0; i < meshes2.representationsLength(); i++) { + const localId = meshes2.representationIds(i); + this._reprIdMap.set(localId, i); + } + } + const indices = /* @__PURE__ */ new Map(); + for (const localId of reprsLocalIds) { + if (this._reprIdMap.has(localId)) { + indices.set(localId, this._reprIdMap.get(localId)); + } + } + const meshes = this.data.meshes(); + const reprsIndices = Array.from(indices.values()); + const result = []; + for (const index of reprsIndices) { + const geoms = this.tiles.fetchGeometry(index); + const items = Array.isArray(geoms) ? geoms : [geoms]; + for (const found of items) { + const indices2 = found.indexBuffer; + const positions = found.positionBuffer; + const normals = found.normalBuffer; + const representationId = meshes.representationIds(index); + result.push({ + transform: new Matrix4(), + indices: indices2, + positions, + normals, + representationId + }); + } + } + return result; + } + getItemsVolume(localIds) { + const indices = this.properties.getItemIdsFromLocalIds(localIds); + let volume = 0; + for (const index of indices) { + volume += this._geometryHelper.getVolume(this, index); + } + return volume; + } + getAttributeNames() { + const names = this.properties.getAttributeNames(); + return names; + } + getAttributeValues() { + const values = this.properties.getAttributeValues(); + return values; + } + getAttributeTypes() { + const types = this.properties.getAttributeTypes(); + return types; + } + getRelationNames() { + const names = this.properties.getRelationNames(); + return names; + } + getItemsMaterialDefinition(localIds) { + const indices = this.properties.getItemIdsFromLocalIds(localIds); + return this.materials.getItemsMaterialDefinition( + this.data, + indices, + localIds + ); + } + resetVisible() { + this._visibilityHelper.resetVisible(this); + } + getItemsByVisibility(visible) { + return this._visibilityHelper.getItemsByVisibility(this, visible); + } + raycast(ray, frustum, returnAll) { + return this._raycastHelper.raycast(this, ray, frustum, returnAll); + } + snapRaycast(ray, frustum, snaps) { + return this._raycastHelper.snapRaycast(this, ray, frustum, snaps); + } + rectangleRaycast(frustum, fullyIncluded) { + return this._raycastHelper.rectangleRaycast(this, frustum, fullyIncluded); + } + getSection(plane, localIds) { + const indices = this.properties.getItemIdsFromLocalIds(localIds); + return this._sectionHelper.getSection(this, plane, indices); + } + getAlignments() { + return this._alignments.getAlignments(); + } + getGrids() { + return this._grids.getGrids(); + } + getBuffer(raw) { + const bb = this.data.bb; + const bytes = bb.bytes(); + const buffer = bytes.buffer; + return raw ? buffer : pako.deflate(buffer); + } + getSubsetBuffer(localIds, raw) { + const localIdToIndex = /* @__PURE__ */ new Map(); + for (let i = 0; i < this.data.localIdsLength(); i++) { + localIdToIndex.set(this.data.localIds(i), i); + } + const itemIndices = /* @__PURE__ */ new Set(); + for (const localId of localIds) { + const index = localIdToIndex.get(localId); + if (index !== void 0) { + itemIndices.add(index); + } + } + const items = EditUtils.getItems(this.data, itemIndices); + const requests = []; + for (const [localId, itemData] of items) { + requests.push({ + type: EditRequestType.UPDATE_ITEM, + localId, + data: itemData + }); + } + const { model } = EditUtils.edit(this.data, requests, { + raw, + delta: true + }); + return model; + } + dispose() { + this.tiles.dispose(); + } + setVisible(localIds, visible) { + this._visibilityHelper.setVisible(this, localIds, visible); + } + toggleVisible(localIds) { + this._visibilityHelper.toggleVisible(this, localIds); + } + getVisible(items) { + return this._visibilityHelper.getVisible(this, items); + } + hideForEdit(localIds) { + this._visibilityHelper.hideForEdit(this, localIds); + } + clearHiddenForEdit() { + this._visibilityHelper.clearHiddenForEdit(); + } + getItemsChildren(ids) { + return this.properties.getItemsChildren(ids); + } + async setupData(onProgress, throwIfAborted) { + await this.tiles.generate(onProgress, throwIfAborted); + } + refreshView(view) { + this.view = view; + this.tiles.setupView(view); + } + getFullBBox() { + return this.boxes.fullBox; + } + getBBoxes(items) { + const box = new Box3(); + this.properties.getBox(items, box); + return box; + } + traverse(itemIds, onItem) { + this._itemsHelper.traverse(this, itemIds, onItem); + } + update(time) { + this.tiles.update(time); + return this.tiles.tilesUpdated; + } + edit(requests, raw = true) { + const ids = EditUtils.solveIds(requests, this._nextId); + this._nextId += ids.length; + for (const request of requests) { + this.requests.push(request); + } + const { model, items } = EditUtils.edit(this.data, this.requests, { + raw, + delta: true + }); + this._visibilityHelper.clearHiddenForEdit(); + this._visibilityHelper.hideForEdit(this, items); + return { deltaModelBuffer: model, ids }; + } + reset() { + this.requests = []; + this._requestsForRedo = []; + this._nextId = this.getMaxLocalId(); + } + save(raw = true) { + this.requests.push({ + type: EditRequestType.UPDATE_MAX_LOCAL_ID, + localId: this._nextId + }); + const { model } = EditUtils.edit(this.data, this.requests, { + raw, + delta: false + }); + return model; + } + undo() { + if (this.requests.length === 0) { + return; + } + const lastRequest = this.requests.pop(); + if (!lastRequest) { + return; + } + this._requestsForRedo.unshift(lastRequest); + } + redo() { + if (this._requestsForRedo.length === 0) { + return; + } + const lastUndoneRequest = this._requestsForRedo.shift(); + if (!lastUndoneRequest) { + return; + } + this.requests.push(lastUndoneRequest); + } + getRequests() { + return { + requests: this.requests, + undoneRequests: this._requestsForRedo + }; + } + setRequests(data) { + if (data.requests) { + this.requests = data.requests; + } + if (data.undoneRequests) { + this._requestsForRedo = data.undoneRequests; + } + } + selectRequest(index) { + const allRequests = []; + for (const request of this.requests) { + allRequests.push(request); + } + for (const request of this._requestsForRedo) { + allRequests.push(request); + } + this.requests = []; + this._requestsForRedo = []; + for (let i = 0; i < allRequests.length; i++) { + if (i <= index) { + this.requests.push(allRequests[i]); + } else { + this._requestsForRedo.push(allRequests[i]); + } + } + } + getMaterialsIds() { + const ids = EditUtils.getMaterialsIds(this.data); + return EditUtils.applyChangesToIds(this.requests, ids, "MATERIAL", true); + } + getMaterials(ids) { + const found = EditUtils.getMaterials(this.data, ids); + EditUtils.applyChangesToRawData(this.requests, found, "MATERIAL"); + return found; + } + getRepresentationsIds() { + const ids = EditUtils.getRepresentationsIds(this.data); + return EditUtils.applyChangesToIds( + this.requests, + ids, + "REPRESENTATION", + true + ); + } + getRepresentations(ids) { + const found = EditUtils.getRepresentations(this.data, ids); + EditUtils.applyChangesToRawData(this.requests, found, "REPRESENTATION"); + return found; + } + getLocalTransformsIds() { + const ids = EditUtils.getLocalTransformsIds(this.data); + return EditUtils.applyChangesToIds( + this.requests, + ids, + "LOCAL_TRANSFORM", + true + ); + } + getLocalTransforms(ids) { + const found = EditUtils.getLocalTransforms(this.data, ids); + EditUtils.applyChangesToRawData(this.requests, found, "LOCAL_TRANSFORM"); + return found; + } + getGlobalTransformsIds() { + const ids = EditUtils.getGlobalTransformsIds(this.data); + return EditUtils.applyChangesToIds( + this.requests, + ids, + "GLOBAL_TRANSFORM", + true + ); + } + getGlobalTransforms(ids) { + const found = EditUtils.getGlobalTransforms(this.data, ids); + EditUtils.applyChangesToRawData(this.requests, found, "GLOBAL_TRANSFORM"); + return found; + } + getSamplesIds() { + const ids = EditUtils.getSamplesIds(this.data); + return EditUtils.applyChangesToIds(this.requests, ids, "SAMPLE", true); + } + getSamples(ids) { + const result = EditUtils.getSamples(this.data, ids); + EditUtils.applyChangesToRawData(this.requests, result, "SAMPLE"); + return result; + } + getItemsIds() { + const ids = EditUtils.getItemsIds(this.data); + return EditUtils.applyChangesToIds(this.requests, ids, "ITEM", true); + } + getItems(ids) { + const itemIds = this.properties.getItemIdsFromLocalIds(ids); + const found = EditUtils.getItems(this.data, itemIds); + const filter = ids ? new Set(ids) : void 0; + EditUtils.applyChangesToRawData(this.requests, found, "ITEM", filter); + return found; + } + getRelations(ids) { + const found = this.properties.getRawRelations(ids); + EditUtils.applyChangesToRawData(this.requests, found, "RELATION"); + return found; + } + getGlobalTranformsIdsOfItems(ids) { + return EditUtils.getGlobalTranformsIdsOfItems(this.data, ids); + } + getElementsData(ids) { + const filtered = new Set(ids); + EditUtils.applyChangesToIds(this.requests, filtered, "ITEM", false); + return EditUtils.getElementsData(this, filtered); + } + /** + * Fast snap-only data fetch keyed by **itemId** (the FlatBuffer's + * `sample.item()` index). See `EditUtils.getItemSnapData` for the + * rationale; in short, it uses `boxes.sampleOf(itemId)` for an O(1) + * sample lookup instead of walking the full sample table. + */ + getItemSnapData(itemId) { + return EditUtils.getItemSnapData(this, itemId); + } + setLodMode(lodMode) { + this.tiles.setLodMode(lodMode); + } + setupBVH() { + BufferGeometry.prototype.computeBoundsTree = computeBoundsTree; + BufferGeometry.prototype.disposeBoundsTree = disposeBoundsTree; + Mesh.prototype.raycast = acceleratedRaycast; + } + setupProperties() { + return new VirtualPropertiesController( + this, + this.boxes, + this._config.properties + ); + } + setupRaycaster() { + return new RaycastController( + this.data, + this.boxes, + this.tiles, + this.itemConfig + ); + } + setupMaterials(modelId) { + return new VirtualMaterialController(modelId, this._onTransferMaterial); + } + setupTiles() { + const materials = this.materials.update(this.data); + return new VirtualTilesController({ + modelId: this._modelId, + connection: this._connection, + multithreading: this._config.multithreading, + model: this.data, + boxes: this.boxes, + items: this.itemConfig, + materials + }); + } + setupModel(data) { + const uintArray = new Uint8Array(data); + const byteBuffer = new ByteBuffer(uintArray); + return Model.getRootAsModel(byteBuffer); + } + setupItemsConfig() { + const meshes = this.data.meshes(); + const itemsCount = meshes ? meshes.meshesItemsLength() : 0; + return new ItemConfigController(itemsCount); + } +} +class ThreadModelCreator extends ThreadController { + getId() { + return MultiThreadingRequestClass.CREATE_MODEL; + } + async execute(input) { + var _a2, _b2; + const { modelId } = input; + const notify = this.createProgressNotifier(modelId); + const throwIfAborted = () => { + if (this.thread.aborting.has(modelId)) { + throw new LoadAbortedError(modelId); + } + }; + this.thread.loading.add(modelId); + try { + this.inflate(input); + notify("decompressing", 1); + throwIfAborted(); + this.thread.controllerManager.updater.setUpdateDelay( + (_b2 = (_a2 = input.config) == null ? void 0 : _a2.multithreading) == null ? void 0 : _b2.threadUpdaterDelay + ); + const model = await this.createModel(input, notify, throwIfAborted); + this.finalize(input, model); + notify("done", 1); + } catch (e) { + const partial = this.thread.list.get(modelId); + if (partial) { + try { + partial.dispose(); + } catch { + } + this.thread.list.delete(modelId); + } + throw e; + } finally { + this.thread.aborting.delete(modelId); + this.thread.loading.delete(modelId); + } + } + finalize(input, model) { + input.boundingBox = model.getFullBBox(); + input.modelData = void 0; + } + async createModel(input, notify, throwIfAborted) { + const { modelId, modelData, config } = input; + const { connection } = this.thread; + const model = new VirtualFragmentsModel( + modelId, + modelData, + connection, + config + ); + this.thread.list.set(modelId, model); + this.thread.controllerManager.updater.start(); + notify("parsing", 1); + throwIfAborted(); + await model.setupData((progress) => { + notify("generating", progress); + }, throwIfAborted); + return model; + } + inflate(input) { + if (!input.raw) { + input.modelData = pako.inflate(input.modelData); + } + } + createProgressNotifier(modelId) { + const { connection } = this.thread; + return (stage, progress) => { + connection.fetch({ + class: MultiThreadingRequestClass.LOAD_PROGRESS, + modelId, + stage, + progress + }); + }; + } +} +class ThreadRaycaster extends ThreadController { + getId() { + return MultiThreadingRequestClass.RAYCAST; + } + async execute(input) { + const raycastType = this.getRaycastType(input); + if (raycastType === 0) { + this.raycastBeam(input); + return; + } + if (raycastType === 2) { + this.raycastWithSnap(input); + return; + } + if (raycastType === 1) { + this.raycastRectangle(input); + return; + } + throw new Error("Fragments: Invalid raycast type"); + } + getRaycastType(input) { + if (input.snappingClass) { + return 2; + } + if (input.ray) { + return 0; + } + return 1; + } + raycastRectangle(input) { + const model = this.thread.getModel(input.modelId); + const frustum = MultithreadingHelper.frustum(input.frustum); + const fullyIncluded = input.fullyIncluded; + const localIds = model.rectangleRaycast(frustum, fullyIncluded); + input.localIds = localIds; + } + raycastWithSnap(input) { + const model = this.thread.getModel(input.modelId); + const beam = MultithreadingHelper.beam(input.ray); + const frustum = MultithreadingHelper.frustum(input.frustum); + const snappingClass = input.snappingClass; + const results = model.snapRaycast(beam, frustum, snappingClass); + input.results = results; + } + raycastBeam(input) { + const model = this.thread.getModel(input.modelId); + const beam = MultithreadingHelper.beam(input.ray); + const frustum = MultithreadingHelper.frustum(input.frustum); + const returnAll = input.returnAll || false; + const hit = model.raycast(beam, frustum, returnAll); + if (hit) { + input.results = Array.isArray(hit) ? hit : [hit]; + } + } +} +class ThreadModelDeleter extends ThreadController { + getId() { + return MultiThreadingRequestClass.DELETE_MODEL; + } + async execute(input) { + const { modelId } = input; + const model = this.thread.list.get(modelId); + if (!model) + return; + model.dispose(); + this.thread.list.delete(modelId); + } +} +class ThreadModelAborter extends ThreadController { + getId() { + return MultiThreadingRequestClass.ABORT_MODEL; + } + async execute(input) { + const { modelId } = input; + if (!this.thread.loading.has(modelId)) + return; + this.thread.aborting.add(modelId); + } +} +class ThreadViewRefresher extends ThreadController { + getId() { + return MultiThreadingRequestClass.REFRESH_VIEW; + } + async execute(input) { + const model = this.thread.list.get(input.modelId); + if (model) { + this.safeCopyFrustum(input); + this.safeCopyPosition(input); + this.safeCopyPlanes(input); + model.refreshView(input.view); + } + } + safeCopyFrustum(input) { + const frustum = input.view.cameraFrustum; + input.view.cameraFrustum = MultithreadingHelper.frustum(frustum); + } + safeCopyPosition(input) { + const position = input.view.cameraPosition; + input.view.cameraPosition = MultithreadingHelper.array(position); + } + safeCopyPlanes(input) { + const planes = input.view.clippingPlanes; + input.view.clippingPlanes = MultithreadingHelper.planeSet(planes); + } +} +class ThreadBoxFetcher extends ThreadController { + getId() { + return MultiThreadingRequestClass.FETCH_BOXES; + } + async execute(input) { + input.boxes = []; + if (input.localIds) { + this.getBoxesFromLocalIds(input); + return; + } + this.getAllBoxes(input); + } + getBoxesFromLocalIds(input) { + const model = this.thread.getModel(input.modelId); + for (const localIds of input.localIds) { + const itemIds = model.getItemIdsByLocalIds(localIds); + const box = model.getBBoxes(itemIds); + input.boxes.push(box); + } + input.localIds = void 0; + } + getAllBoxes(input) { + const model = this.thread.getModel(input.modelId); + const size = model.getGeometriesLength(); + for (let i = 0; i < size; i++) { + const box = model.getBBoxes([i]); + input.boxes.push(box); + } + input.localIds = void 0; + } +} +class ThreadExecutor extends ThreadController { + getId() { + return MultiThreadingRequestClass.EXECUTE; + } + async execute(input) { + const model = this.thread.getModel(input.modelId); + this.safeCopyData(input); + input.result = await model[input.function](...input.parameters); + input.parameters = void 0; + } + safeCopyData(input) { + for (let i = 0; i < input.parameters.length; i++) { + const data = input.parameters[i]; + if (!data) + continue; + input.parameters[i] = MultithreadingHelper.data(data); + } + } +} +class ThreadUpdater { + constructor(thread2) { + __publicField(this, "_thread"); + __publicField(this, "_updateThreshold", 16); + __publicField(this, "_updateDelay", 128); + __publicField(this, "_running", false); + __publicField(this, "_timeout", null); + __publicField(this, "_tick", () => { + this._timeout = null; + if (!this._running) + return; + if (this._thread.list.size === 0) { + this._running = false; + return; + } + const updated = this.updateAllModels(); + const delay = updated ? this._updateDelay : 0; + this.schedule(delay); + }); + this._thread = thread2; + } + // Starts the update loop if it is not already running. Idempotent. Called + // when a model is registered so the loop resumes after it stopped itself + // while idle. The loop is no longer started at construction time, so merely + // importing the library (e.g. for an IFC conversion task) does not spin a + // perpetual timer. See #234. + start() { + if (this._running) + return; + this._running = true; + this.schedule(0); + } + // Stops the loop and clears any pending timer. Safe to call repeatedly. + stop() { + this._running = false; + if (this._timeout !== null) { + clearTimeout(this._timeout); + this._timeout = null; + } + } + setUpdateDelay(delay) { + if (typeof delay !== "number" || !Number.isFinite(delay) || delay < 0) { + return; + } + this._updateDelay = delay; + } + schedule(delay) { + this._timeout = setTimeout(this._tick, delay); + } + updateAllModels() { + const start = performance.now(); + let isUpdated = true; + for (const [, model] of this._thread.list) { + const modelUpdated = model.update(start); + isUpdated = isUpdated && modelUpdated; + const end = performance.now(); + const timePassed = end - start; + if (timePassed > this._updateThreshold) { + break; + } + } + return isUpdated; + } +} +class ThreadControllerManager { + constructor(thread2) { + __publicField(this, "thread"); + __publicField(this, "modelCreator"); + __publicField(this, "raycaster"); + __publicField(this, "modelDeleter"); + __publicField(this, "modelAborter"); + __publicField(this, "viewRefresher"); + __publicField(this, "boxFetcher"); + __publicField(this, "executor"); + __publicField(this, "updater"); + this.thread = thread2; + this.modelCreator = new ThreadModelCreator(thread2); + this.raycaster = new ThreadRaycaster(thread2); + this.modelDeleter = new ThreadModelDeleter(thread2); + this.modelAborter = new ThreadModelAborter(thread2); + this.viewRefresher = new ThreadViewRefresher(thread2); + this.boxFetcher = new ThreadBoxFetcher(thread2); + this.executor = new ThreadExecutor(thread2); + this.updater = new ThreadUpdater(thread2); + } +} +class FragmentsThread { + constructor() { + __publicField(this, "actions", {}); + __publicField(this, "list", /* @__PURE__ */ new Map()); + /** Set of model IDs currently being loaded (CREATE_MODEL in flight). */ + __publicField(this, "loading", /* @__PURE__ */ new Set()); + /** Set of model IDs whose in-flight load should abort at the next yield. */ + __publicField(this, "aborting", /* @__PURE__ */ new Set()); + /** + * Highest `seq` this worker has seen on any incoming RPC. Each + * main → worker message carries a monotonic `seq` set by the + * sender (FragmentsConnection.fetch). When the worker emits a + * FINISH tile request, it stamps it with this value so the main + * thread can resolve `forceUpdateFinish` waiters without polling. + * + * Lives on the thread (not the model) because seq is global to + * the worker — a single FINISH from any model carries the highest + * seq the worker has acknowledged, which is what main needs for + * the fence semantics ("everything I've sent up to N is done"). + */ + __publicField(this, "lastSeenSeq", 0); + // It registers all actions from multithreadingRequestClass + __publicField(this, "controllerManager", new ThreadControllerManager(this)); + __publicField(this, "_connection"); + } + get connection() { + if (!this._connection) { + throw new Error("Fragments: Connection not set"); + } + return this._connection; + } + set connection(connection) { + this._connection = connection; + } + useConnection(connection) { + const handler = async (input) => { + if (typeof input.seq === "number" && input.seq > this.lastSeenSeq) { + this.lastSeenSeq = input.seq; + } + await this.actions[input.class](input); + }; + this.connection = new Connection(handler); + this.connection.init(connection); + } + getModel(id) { + const model = this.list.get(id); + if (!model) { + throw new Error(`Fragments: Model not found: ${id}`); + } + return model; + } +} +const thread = new FragmentsThread(); +if (typeof window === "undefined") { + globalThis.onmessage = (input) => { + thread.useConnection(input.data); + }; +} +export { + FragmentsThread, + thread +}; +//# sourceMappingURL=worker.mjs.map diff --git a/packages/tools/assets-ifc/viewer/wasm/model/web-ifc-mt.wasm b/packages/tools/assets-ifc/viewer/wasm/model/web-ifc-mt.wasm new file mode 100644 index 000000000..fbd7d147b Binary files /dev/null and b/packages/tools/assets-ifc/viewer/wasm/model/web-ifc-mt.wasm differ diff --git a/packages/tools/assets-ifc/viewer/wasm/model/web-ifc.wasm b/packages/tools/assets-ifc/viewer/wasm/model/web-ifc.wasm new file mode 100644 index 000000000..767c26552 Binary files /dev/null and b/packages/tools/assets-ifc/viewer/wasm/model/web-ifc.wasm differ diff --git a/packages/tools/assets-model/README.en.md b/packages/tools/assets-model/README.en.md index dac1a08a3..fd8a72c22 100644 --- a/packages/tools/assets-model/README.en.md +++ b/packages/tools/assets-model/README.en.md @@ -1,3 +1,7 @@ # @file-viewer/assets-model -Self-hosted OCCT Worker and WebAssembly assets for the opt-in 3D model renderer. They are kept outside the standard full packages. +Self-hosted OCCT Worker/WebAssembly assets for `@file-viewer/renderer-3d` STEP / STP, IGES / IGS, and BREP preview. + +The capability pack stages the OCCT worker, `occt-import-js` runtime/WASM, and matching license notices under `wasm/model/`. It is suitable for offline, intranet, and restrictive-network deployments and does not require a runtime CDN. + +IFC/BIM is intentionally separate. Install `@file-viewer/capability-ifc` together with `@file-viewer/assets-ifc` only when `.ifc` preview is required. This keeps the MPL-2.0 `web-ifc` runtime out of the normal 3D/model asset closure. diff --git a/packages/tools/assets-model/README.md b/packages/tools/assets-model/README.md index 10934cc1f..61cc468bd 100644 --- a/packages/tools/assets-model/README.md +++ b/packages/tools/assets-model/README.md @@ -1,3 +1,7 @@ # @file-viewer/assets-model -3D model OCCT Worker/WASM runtime. This package is installed only when the matching capability is selected. Its installer performs a transactional merge and records a per-file SHA-256 receipt. +`@file-viewer/renderer-3d` 的 STEP / STP、IGES / IGS、BREP 自托管 OCCT Worker / WebAssembly 资产包。 + +该 capability pack 会把 OCCT Worker、`occt-import-js` runtime/WASM 和对应许可证 staging 到 `wasm/model/`,适用于离线、内网和受限网络部署,不依赖运行时 CDN。 + +IFC / BIM 已显式拆分。只有需要 `.ifc` 预览时才安装 `@file-viewer/capability-ifc` 与 `@file-viewer/assets-ifc`;这样 MPL-2.0 的 `web-ifc` runtime 不会进入普通 3D/model 资产闭包。 diff --git a/packages/tools/assets-model/package.json b/packages/tools/assets-model/package.json index 7ef170320..8b3ab2c1c 100644 --- a/packages/tools/assets-model/package.json +++ b/packages/tools/assets-model/package.json @@ -3,7 +3,7 @@ "version": "3.0.3", "private": false, "type": "module", - "description": "Independent self-hosted 3D model OCCT Worker/WASM runtime for opt-in File Viewer integration.", + "description": "Independent self-hosted OCCT Worker/WebAssembly assets for the opt-in File Viewer 3D model renderer.", "exports": { "./asset-pack": "./viewer/file-viewer-asset-pack.json", "./viewer/*": "./viewer/*", @@ -23,7 +23,7 @@ "@file-viewer/asset-installer": "workspace:3.0.3" }, "scripts": { - "stage-assets": "node ../../build-support/stage-capability-asset-pack.mjs --package-dir packages/tools/assets-model", + "stage-assets": "pnpm --filter file-viewer-copy-assets stage-assets && node ../../build-support/stage-capability-asset-pack.mjs --package-dir packages/tools/assets-model", "prepack": "pnpm stage-assets" }, "engines": { diff --git a/packages/tools/cli/catalog/catalog.json b/packages/tools/cli/catalog/catalog.json index b07401617..011ed7fca 100644 --- a/packages/tools/cli/catalog/catalog.json +++ b/packages/tools/cli/catalog/catalog.json @@ -1928,6 +1928,56 @@ ], "version": "3.0.3" }, + { + "$schema": "../../../ecosystem/capability-manifest.schema.json", + "schemaVersion": 1, + "id": "ifc", + "packageName": "@file-viewer/capability-ifc", + "enhancesPackage": "@file-viewer/renderer-3d", + "activation": { + "kind": "side-effect-import", + "import": "@file-viewer/capability-ifc", + "export": "enableFileViewerIfc" + }, + "rendererIds": [ + "model" + ], + "formats": [ + "ifc" + ], + "assets": { + "rendererIds": [ + "model" + ], + "packageName": "@file-viewer/assets-ifc", + "installerPackageName": "@file-viewer/assets-ifc", + "bin": "file-viewer-assets-ifc", + "apiExport": "installFileViewerCapabilityAssetPack", + "target": "public/file-viewer", + "copyGroups": [ + "model" + ], + "copyMode": "capability-pack", + "receiptFilename": "file-viewer-assets-ifc.receipt.json", + "notice": "Self-hosted web-ifc browser ESM/WASM runtime and MPL-2.0 notice for optional IFC/BIM preview.", + "packageVersion": "3.0.3", + "installerPackageVersion": "3.0.3" + }, + "license": { + "spdx": "Apache-2.0", + "policy": "review-required", + "notices": [ + { + "packageName": "web-ifc", + "spdx": "MPL-2.0", + "notice": "Pinned at 0.0.77; the browser ESM API, single/multi-thread WASM files, and MPL-2.0 license are redistributed by @file-viewer/assets-ifc." + } + ] + }, + "weight": "heavy", + "profiles": [], + "version": "3.0.3" + }, { "$schema": "../../../ecosystem/capability-manifest.schema.json", "schemaVersion": 1, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 95bee8426..4a7585994 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -429,6 +429,34 @@ importers: specifier: ^6.0.3 version: 6.0.3 + packages/capabilities/ifc: + dependencies: + '@file-viewer/core': + specifier: workspace:3.0.3 + version: link:../../core + '@file-viewer/renderer-3d': + specifier: workspace:3.0.3 + version: link:../../renderers/3d + '@thatopen/components': + specifier: 3.4.8 + version: 3.4.8(@thatopen/fragments@3.4.7(three@0.185.1)(web-ifc@0.0.77))(camera-controls@3.1.2(three@0.185.1))(three@0.185.1)(web-ifc@0.0.77) + '@thatopen/fragments': + specifier: 3.4.7 + version: 3.4.7(three@0.185.1)(web-ifc@0.0.77) + three: + specifier: ^0.185.1 + version: 0.185.1 + web-ifc: + specifier: 0.0.77 + version: 0.0.77 + devDependencies: + '@types/three': + specifier: ^0.185.0 + version: 0.185.4 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + packages/capabilities/mermaid: dependencies: '@file-viewer/renderer-text': @@ -2056,6 +2084,19 @@ importers: specifier: workspace:3.0.3 version: link:../asset-installer + packages/tools/assets-ifc: + dependencies: + '@file-viewer/asset-installer': + specifier: workspace:3.0.3 + version: link:../asset-installer + devDependencies: + '@thatopen/fragments': + specifier: 3.4.7 + version: 3.4.7(three@0.185.1)(web-ifc@0.0.77) + web-ifc: + specifier: 0.0.77 + version: 0.0.77 + packages/tools/assets-iwork: dependencies: '@file-viewer/asset-installer': @@ -3053,6 +3094,9 @@ packages: cpu: [x64] os: [win32] + '@nodable/entities@2.2.0': + resolution: {integrity: sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==} + '@nodable/entities@3.0.0': resolution: {integrity: sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==} @@ -3442,6 +3486,21 @@ packages: '@tailwindcss/postcss@4.3.3': resolution: {integrity: sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg==} + '@thatopen/components@3.4.8': + resolution: {integrity: sha512-eil8zla7W45WI1Pf/xAcY4oQpmb7pDJnyN9jWP2rkuboGIol+RyGCo9XHR2GnL9Ckgb+Jd595oXhyiotQ8lVAA==} + peerDependencies: + '@thatopen/fragments': ~3.4.7 + camera-controls: '>=3.1.2' + three: '>=0.182.0' + web-ifc: '>=0.0.77' + + '@thatopen/fragments@3.4.7': + resolution: {integrity: sha512-tGuS7LVf0BkN5qQISG3VAGeMyqiZYwkvcHGYZ+eA5emr+v8aIjEKZvM/eYrGhJKUv/eZ+N5qeevEftfcmoBc+g==} + engines: {node: '>=20.11.0'} + peerDependencies: + three: '>=0.182.0' + web-ifc: '>=0.0.77' + '@tmcw/togeojson@7.1.2': resolution: {integrity: sha512-QKnFs9DAuqqBVj4d6c69tV1Dj2TspSBTqffivoN0YoBCVdP/JY1+WaYCJbzU49RkoU5NOSOJ3jtFHCdEUVh21A==} @@ -4072,6 +4131,12 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} + camera-controls@3.1.2: + resolution: {integrity: sha512-xkxfpG2ECZ6Ww5/9+kf4mfg1VEYAoe9aDSY+IwF0UEs7qEzwy0aVRfs2grImIECs/PoBtWFrh7RXsQkwG922JA==} + engines: {node: '>=22.0.0', npm: '>=10.5.1'} + peerDependencies: + three: '>=0.126.1' + caniuse-lite@1.0.30001810: resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} @@ -4712,6 +4777,10 @@ packages: resolution: {integrity: sha512-9IGxMqvqLOnqP+Egi1nqDHKv5k8aZ7r9n558enxcucmyVGEBNPAU+MOg/8jPIS7rO7sSq4gFm1/nHtiaubMruw==} hasBin: true + fast-xml-parser@5.7.2: + resolution: {integrity: sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==} + hasBin: true + fastdom@1.0.12: resolution: {integrity: sha512-LB+xjSTEbjHE1cWsxu+tN2Xqr1kpi+V9aADI7sVM5ZMaXyYGPHULQMzpJMYqOTULK/73pUkWVzzObFRBkPr+hg==} @@ -4730,6 +4799,9 @@ packages: fflate@0.8.3: resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} + flatbuffers@25.2.10: + resolution: {integrity: sha512-7JlN9ZvLDG1McO3kbX0k4v+SUAg48L1rIwEvN6ZQl/eCtgJz9UylTMzE9wrmYrcorgxm3CX/3T/w5VAub99UUw==} + flexsearch@0.8.212: resolution: {integrity: sha512-wSyJr1GUWoOOIISRu+X2IXiOcVfg9qqBRyCPRUdLMIGJqPzMo+jMRlvE83t14v1j0dRMEaBbER/adQjp6Du2pw==} @@ -5426,6 +5498,10 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true + lru-cache@11.1.0: + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + engines: {node: 20 || >=22} + lru-cache@11.5.2: resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} engines: {node: 20 || >=22} @@ -6385,6 +6461,11 @@ packages: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} + three-mesh-bvh@0.9.9: + resolution: {integrity: sha512-FJKitcjvbALmeQRK+Sc+nLGorCpkrZBrbgJZFzhdyWboak37DZikn46hvQkNqSbJPm227ahYmS6k3N/GXaAyXw==} + peerDependencies: + three: '>= 0.159.0' + three@0.185.1: resolution: {integrity: sha512-5aojFCXKwnjBRZvUnt3WFfEcvUJgkN5LlijRFN95hMy8WVkG4I0QNcJE+OuWvuJ0bOdStrbfXn0pkd6/QyiAlg==} @@ -6723,6 +6804,9 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} + web-ifc@0.0.77: + resolution: {integrity: sha512-VzQ0W/Iiqbidxn1ECUvz6qJ6p2sXBVNcOsUOBCETzy77psAH6yFLKQm74aXabkx3JH4OvFVHe8k1qS6+Z2zl1w==} + web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -7641,6 +7725,8 @@ snapshots: '@next/swc-win32-x64-msvc@16.3.3': optional: true + '@nodable/entities@2.2.0': {} + '@nodable/entities@3.0.0': {} '@oozcitak/dom@2.0.2': @@ -7933,6 +8019,25 @@ snapshots: postcss: 8.5.23 tailwindcss: 4.3.3 + '@thatopen/components@3.4.8(@thatopen/fragments@3.4.7(three@0.185.1)(web-ifc@0.0.77))(camera-controls@3.1.2(three@0.185.1))(three@0.185.1)(web-ifc@0.0.77)': + dependencies: + '@thatopen/fragments': 3.4.7(three@0.185.1)(web-ifc@0.0.77) + camera-controls: 3.1.2(three@0.185.1) + fast-xml-parser: 5.7.2 + jszip: 3.10.1 + three: 0.185.1 + three-mesh-bvh: 0.9.9(three@0.185.1) + web-ifc: 0.0.77 + + '@thatopen/fragments@3.4.7(three@0.185.1)(web-ifc@0.0.77)': + dependencies: + earcut: 3.2.3 + flatbuffers: 25.2.10 + lru-cache: 11.1.0 + pako: 2.1.0 + three: 0.185.1 + web-ifc: 0.0.77 + '@tmcw/togeojson@7.1.2': {} '@tonejs/midi@2.0.28': @@ -8645,6 +8750,10 @@ snapshots: camelcase@7.0.1: {} + camera-controls@3.1.2(three@0.185.1): + dependencies: + three: 0.185.1 + caniuse-lite@1.0.30001810: {} ccount@2.0.1: {} @@ -9335,6 +9444,13 @@ snapshots: strnum: 2.4.2 xml-naming: 0.3.0 + fast-xml-parser@5.7.2: + dependencies: + '@nodable/entities': 2.2.0 + fast-xml-builder: 1.3.1 + path-expression-matcher: 1.6.2 + strnum: 2.4.2 + fastdom@1.0.12: dependencies: strictdom: 1.0.1 @@ -9347,6 +9463,8 @@ snapshots: fflate@0.8.3: {} + flatbuffers@25.2.10: {} + flexsearch@0.8.212: {} for-each@0.3.5: @@ -10030,6 +10148,8 @@ snapshots: dependencies: js-tokens: 3.0.0 + lru-cache@11.1.0: {} + lru-cache@11.5.2: {} lru-cache@5.1.1: @@ -11388,6 +11508,10 @@ snapshots: tapable@2.3.3: {} + three-mesh-bvh@0.9.9(three@0.185.1): + dependencies: + three: 0.185.1 + three@0.185.1: {} tinybench@2.9.0: {} @@ -11687,6 +11811,8 @@ snapshots: dependencies: xml-name-validator: 5.0.0 + web-ifc@0.0.77: {} + web-namespaces@2.0.1: {} webidl-conversions@8.0.1: {} diff --git a/test/fixtures/ifc/Building-Architecture.ifc b/test/fixtures/ifc/Building-Architecture.ifc new file mode 100644 index 000000000..ad4090b7f --- /dev/null +++ b/test/fixtures/ifc/Building-Architecture.ifc @@ -0,0 +1,380 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [ReferenceView_V1.2]'),'2;1'); +FILE_NAME('Building-Architecture.ifc','2026-06-23T11:53:44',(''),(''),'Sketchup-IFC-manager 5.6.0 / SketchUp 2026 (26.2.242)','BIM_Tools - Sketchup_IFC_manager - 5.6.0','None'); +FILE_SCHEMA(('IFC4')); +ENDSEC; +DATA; +#1=IFCOWNERHISTORY(#2,#5,$,.ADDED.,1782208424,#2,#5,1782208424); +#2=IFCPERSONANDORGANIZATION(#3,#4,$); +#3=IFCPERSON('3720f2e9-0107-4ce6-b699-e20d9bd03331','Jan B.',$,$,$,$,$,$); +#4=IFCORGANIZATION($,'buildingSMART International','buildingSMART is the worldwide industry body driving the digital transformation of the built environment.',$,$); +#5=IFCAPPLICATION(#6,'5.6.0','IFC manager for sketchup','su_ifcmanager'); +#6=IFCORGANIZATION($,'BIM-Tools',$,$,$); +#7=IFCAXIS2PLACEMENT3D(#8,#9,#10); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCDIRECTION((0.,0.,1.)); +#10=IFCDIRECTION((1.,0.,0.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.001,#7,$); +#12=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#11,$,.MODEL_VIEW.,$); +#13=IFCPROJECT('2Ndyd$OSX7s9A04nc4lyye',#1,'ifc silly sample scene - project','Demystifying IFC with a playful scene using diverse building elements and compositions.',$,$,$,(#11),#14); +#14=IFCUNITASSIGNMENT((#15,#16,#17)); +#15=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); +#16=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#17=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#18=IFCPROJECTEDCRS('EPSG:32760','EPSG:32760 - WGS 84 / UTM zone 60S','WGS 84',$,$,$,#19); +#19=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#20=IFCMAPCONVERSION(#11,#18,729013.3488297004,9063992.684697364,1.3000000000000018,0.4999999999999999,0.8660254037844387,0.001); +#21=IFCSITE('23sFQGRy90RxVbRHD9iSE2',#1,'environment - site','A sample scene environment, showcasing the surrounding landscape.',$,#23,$,$,.COMPLEX.,$,$,0.,$,$); +#22=IFCRELAGGREGATES('2$yEgyDDH3LB8g17BWZVKC',#1,'ifc silly sample scene - project container',$,#13,(#21)); +#23=IFCLOCALPLACEMENT($,#24); +#24=IFCAXIS2PLACEMENT3D(#25,#26,#27); +#25=IFCCARTESIANPOINT((-28841.016,-14200.,-1300.)); +#26=IFCDIRECTION((0.,0.,1.)); +#27=IFCDIRECTION((0.4999999999999999,-0.8660254037844387,0.)); +#28=IFCSITE('1Pbuu0tu59NfhrTsztVBK1',#1,'house - site','Smoke curls from a friendly chimney, promising warmth within this idyllic hilltop house.',$,#30,$,$,.PARTIAL.,$,$,0.,$,$); +#29=IFCRELAGGREGATES('1PA$vT09L2I8d1ZzjDaGOa',#1,'environment - site container',$,#21,(#28)); +#30=IFCLOCALPLACEMENT(#23,#31); +#31=IFCAXIS2PLACEMENT3D(#32,#33,#34); +#32=IFCCARTESIANPOINT((0.,40000.,0.)); +#33=IFCDIRECTION((0.,0.,1.)); +#34=IFCDIRECTION((0.4999999999999999,0.8660254037844387,0.)); +#35=IFCBUILDING('0c$N1CTon2BB2Sp89385G8',#1,'Single-family house','The main building structure, providing shelter and space.','house',#40,$,'house - building',.ELEMENT.,$,$,$); +#36=IFCCLASSIFICATION('Molio','1.0','2023-01-23','CCI Construction',$,'https://identifier.buildingsmart.org/uri/molio/cciconstruction/1.0',$); +#37=IFCCLASSIFICATIONREFERENCE('https://identifier.buildingsmart.org/uri/molio/cciconstruction/1.0/class/E-AAA','E-AAA','Single-family house',#36,$,$); +#38=IFCRELASSOCIATESCLASSIFICATION('1aSJ9MI8HCy9yoB1L$9KeB',#1,'CCI Construction Classification',$,(#35),#37); +#39=IFCRELAGGREGATES('16rT3flozCCRaOdhogJjOe',#1,'house - site container',$,#28,(#35)); +#40=IFCLOCALPLACEMENT(#30,#41); +#41=IFCAXIS2PLACEMENT3D(#42,#43,#44); +#42=IFCCARTESIANPOINT((-2800.,-2800.,1300.)); +#43=IFCDIRECTION((0.,0.,1.)); +#44=IFCDIRECTION((1.,0.,0.)); +#45=IFCBUILDINGSTOREY('1Ano2ZUxnEIvVQ_beukl8b',#1,'00 groundfloor','The ground floor, forming the base level of the building.','buildingstorey',#47,$,$,.ELEMENT.,0.); +#46=IFCRELAGGREGATES('1V73KC$B50yhdQelx0hpzd',#1,'Single-family house container',$,#35,(#45)); +#47=IFCLOCALPLACEMENT(#40,#7); +#48=IFCSLABTYPE('0hnSKr4LD8eRixcnqcc6X1',#1,'house - groundfloor','A solid, site-cast concrete floor, providing a strong foundation.',$,(#52),$,'884513','slab on grade',.FLOOR.); +#49=IFCRELDEFINESBYTYPE('0KEb1WVHHEhQZ4xbbd6b2c',#1,$,$,(#53),#48); +#50=IFCPROPERTYSINGLEVALUE('FireRating',$,IFCLABEL('REI60'),$); +#51=IFCPROPERTYSINGLEVALUE('SurfaceSpreadOfFlame',$,IFCLABEL('A2 s1 d0'),$); +#52=IFCPROPERTYSET('0e$8R5fST3080JjRwmyWIc',#1,'Pset_SlabCommon',$,(#50,#51)); +#53=IFCSLAB('3zR0BOEcLADRKln4HYporH',#1,'floor','A solid, site-cast concrete floor, providing a strong foundation.','slab on grade',#68,#80,'454425.1027891.979946.932083.920025',$); +#54=IFCPROPERTYSINGLEVALUE('IsExternal',$,IFCBOOLEAN(.T.),$); +#55=IFCPROPERTYSINGLEVALUE('LoadBearing',$,IFCBOOLEAN(.F.),$); +#56=IFCPROPERTYSINGLEVALUE('FireRating',$,IFCLABEL('REI30'),$); +#57=IFCPROPERTYSINGLEVALUE('AcousticRating',$,IFCLABEL('29dB Rw'),$); +#58=IFCPROPERTYSET('3Hgdv2Uen9c9mwtFqxRVZv',#1,'Pset_SlabCommon',$,(#54,#55,#56,#57)); +#59=IFCRELDEFINESBYPROPERTIES('14hbWdknL14O8a2ydi1v1k',#1,$,$,(#53),#58); +#60=IFCRELASSOCIATESMATERIAL('0oKrXjQf58gwTDmoHg_xVx',#1,$,$,(#53),#61); +#61=IFCMATERIAL('concrete_reinforced_in-situ',$,$); +#62=IFCQUANTITYVOLUME('NetVolume',$,$,6.437500000000378,$); +#63=IFCQUANTITYLENGTH('Depth',$,$,250.,$); +#64=IFCQUANTITYAREA('NetArea',$,$,25.749999999991743,$); +#65=IFCELEMENTQUANTITY('0RKb$w9MP4zhtUpGwp1CMV',#1,'Qto_SlabBaseQuantities',$,'BaseQuantities',(#62,#63,#64)); +#66=IFCRELDEFINESBYPROPERTIES('12_r2anT97wfalc$$ec1C6',#1,$,$,(#53),#65); +#67=IFCRELCONTAINEDINSPATIALSTRUCTURE('0CosOqG19ANu$QldZXwQk0',#1,$,$,(#53,#158,#182,#201,#220,#228),#45); +#68=IFCLOCALPLACEMENT(#47,#69); +#69=IFCAXIS2PLACEMENT3D(#70,#71,#72); +#70=IFCCARTESIANPOINT((200.,0.,-250.)); +#71=IFCDIRECTION((0.,0.,1.)); +#72=IFCDIRECTION((1.,0.,0.)); +#73=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#74)); +#74=IFCTRIANGULATEDFACESET(#75,((1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,1.4438228390645182E-14,1.6676995124830817E-30),(1.,1.4438228390645182E-14,1.6676995124830817E-30),(1.,1.4438228390645182E-14,1.6676995124830817E-30),(1.,1.4438228390645182E-14,1.6676995124830817E-30),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(-1.,-4.3314685171941173E-14,1.4438228390645236E-14),(-1.,-4.3314685171941173E-14,1.4438228390645236E-14),(-1.,-4.3314685171941173E-14,1.4438228390645236E-14),(-1.,-4.3314685171941173E-14,1.4438228390645236E-14),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(-6.582466335230141E-15,-7.279751132762222E-15,1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(1.3109980515969059E-15,2.312296140406178E-15,-1.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-2.8876456781290365E-14,-1.,0.),(-2.8876456781290365E-14,-1.,0.),(-2.8876456781290365E-14,-1.,0.),(-2.8876456781290365E-14,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(1.,-3.6095570976604614E-14,2.165734258596785E-14),(1.,-3.6095570976604614E-14,2.165734258596785E-14),(1.,-3.6095570976604614E-14,2.165734258596785E-14),(1.,-3.6095570976604614E-14,2.165734258596785E-14),(-2.8876456781290365E-14,1.,7.817341464779903E-31),(-2.8876456781290365E-14,1.,7.817341464779903E-31),(-2.8876456781290365E-14,1.,7.817341464779903E-31),(-2.8876456781290365E-14,1.,7.817341464779903E-31),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,-2.2797202722070943E-14,1.4438228390645252E-14),(-1.,-2.2797202722070943E-14,1.4438228390645252E-14),(-1.,-2.2797202722070943E-14,1.4438228390645252E-14),(-1.,-2.2797202722070943E-14,1.4438228390645252E-14),(2.279720272207095E-14,-1.,-6.583024391381991E-28),(2.279720272207095E-14,-1.,-6.583024391381991E-28),(2.279720272207095E-14,-1.,-6.583024391381991E-28),(2.279720272207095E-14,-1.,-6.583024391381991E-28),(1.,2.776582382816472E-14,1.4438228390639414E-14),(1.,2.776582382816472E-14,1.4438228390639414E-14),(1.,2.776582382816472E-14,1.4438228390639414E-14),(1.,2.776582382816472E-14,1.4438228390639414E-14),(2.6976689887784024E-14,-1.,1.1684868294703061E-27),(2.6976689887784024E-14,-1.,1.1684868294703061E-27),(2.6976689887784024E-14,-1.,1.1684868294703061E-27),(2.6976689887784024E-14,-1.,1.1684868294703061E-27),(1.,4.9811887947712626E-14,1.985256403713723E-14),(1.,4.9811887947712626E-14,1.985256403713723E-14),(1.,4.9811887947712626E-14,1.985256403713723E-14),(1.,4.9811887947712626E-14,1.985256403713723E-14),(1.,5.672161153467751E-15,1.9852564037129188E-14),(1.,5.672161153467751E-15,1.9852564037129188E-14),(1.,5.672161153467751E-15,1.9852564037129188E-14),(1.,5.672161153467751E-15,1.9852564037129188E-14),(5.672161153467751E-15,-1.,2.252138850562702E-28),(5.672161153467751E-15,-1.,2.252138850562702E-28),(5.672161153467751E-15,-1.,2.252138850562702E-28),(5.672161153467751E-15,-1.,2.252138850562702E-28),(-5.672161153467751E-15,1.,0.),(-5.672161153467751E-15,1.,0.),(-5.672161153467751E-15,1.,0.),(-5.672161153467751E-15,1.,0.)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(20,17,21),(21,17,22),(21,22,23),(23,22,24),(25,26,27),(26,25,28),(26,28,29),(30,27,31),(27,30,32),(27,32,33),(27,33,20),(27,20,25),(25,20,21),(31,27,34),(18,35,36),(35,18,20),(37,38,39),(38,37,40),(39,38,41),(41,38,42),(42,38,43),(42,43,44),(38,40,45),(43,46,47),(46,43,38),(47,46,48),(49,50,44),(50,49,51),(42,52,53),(52,42,54),(54,42,55),(55,42,56),(56,42,44),(56,44,50),(57,58,59),(58,57,60),(61,62,63),(62,61,64),(65,66,67),(66,65,68),(69,70,71),(70,69,72),(73,74,75),(74,73,76),(77,78,79),(78,77,80),(81,82,83),(82,81,84),(85,86,87),(86,85,88),(89,90,91),(90,89,92),(93,94,95),(94,93,96),(97,98,99),(98,97,100),(101,102,103),(102,101,104),(105,106,107),(106,105,108),(109,110,111),(110,109,112),(113,114,115),(114,113,116),(117,118,119),(118,117,120)),$); +#75=IFCCARTESIANPOINTLIST3D(((2400.,0.,0.),(2400.,200.,250.),(2400.,0.,250.),(2400.,200.,0.),(3800.,200.,0.),(3800.,1800.,250.),(3800.,200.,250.),(3800.,1800.,0.),(2400.,1800.,0.),(3800.,1800.,250.),(3800.,1800.,0.),(2400.,1800.,250.),(1400.,2000.,250.),(1400.,1800.,0.),(1400.,1800.,250.),(1400.,2000.,0.),(2400.,0.,250.),(1400.,200.,250.),(1400.,0.,250.),(1400.,1800.,250.),(2400.,1800.,250.),(2400.,200.,250.),(3800.,1800.,250.),(3800.,200.,250.),(2400.,2000.,250.),(4500.,4600.,250.),(4500.,5300.,250.),(5200.,2000.,250.),(5200.,4600.,250.),(0.,5800.,250.),(5200.,5800.,250.),(0.,2000.,250.),(1400.,2000.,250.),(5200.,5300.,250.),(0.,1800.,250.),(0.,200.,250.),(0.,5800.,0.),(4500.,5300.,0.),(0.,2000.,0.),(5200.,5800.,0.),(1400.,2000.,0.),(1400.,1800.,0.),(2400.,2000.,0.),(2400.,1800.,0.),(5200.,5300.,0.),(4500.,4600.,0.),(5200.,2000.,0.),(5200.,4600.,0.),(3800.,1800.,0.),(2400.,200.,0.),(3800.,200.,0.),(0.,200.,0.),(0.,1800.,0.),(1400.,200.,0.),(1400.,0.,0.),(2400.,0.,0.),(0.,1800.,250.),(1400.,1800.,0.),(0.,1800.,0.),(1400.,1800.,250.),(0.,1800.,250.),(0.,200.,0.),(0.,200.,250.),(0.,1800.,0.),(1400.,200.,250.),(0.,200.,0.),(1400.,200.,0.),(0.,200.,250.),(3800.,200.,250.),(2400.,200.,0.),(3800.,200.,0.),(2400.,200.,250.),(2400.,1800.,0.),(2400.,2000.,250.),(2400.,1800.,250.),(2400.,2000.,0.),(0.,5800.,250.),(5200.,5800.,0.),(0.,5800.,0.),(5200.,5800.,250.),(2400.,0.,250.),(1400.,0.,0.),(2400.,0.,0.),(1400.,0.,250.),(1400.,200.,250.),(1400.,0.,0.),(1400.,0.,250.),(1400.,200.,0.),(0.,5800.,250.),(0.,2000.,0.),(0.,2000.,250.),(0.,5800.,0.),(1400.,2000.,250.),(0.,2000.,0.),(1400.,2000.,0.),(0.,2000.,250.),(5200.,2000.,0.),(5200.,4600.,250.),(5200.,2000.,250.),(5200.,4600.,0.),(5200.,2000.,0.),(2400.,2000.,250.),(2400.,2000.,0.),(5200.,2000.,250.),(5200.,5300.,0.),(5200.,5800.,250.),(5200.,5300.,250.),(5200.,5800.,0.),(4500.,4600.,0.),(4500.,5300.,250.),(4500.,4600.,250.),(4500.,5300.,0.),(5200.,5300.,0.),(4500.,5300.,250.),(4500.,5300.,0.),(5200.,5300.,250.),(4500.,4600.,250.),(5200.,4600.,0.),(4500.,4600.,0.),(5200.,4600.,250.))); +#76=IFCSTYLEDITEM(#74,(#79),$); +#77=IFCSURFACESTYLERENDERING(#78,0.,$,$,$,$,$,$,.NOTDEFINED.); +#78=IFCCOLOURRGB($,0.5764705882352941,0.5764705882352941,0.5764705882352941); +#79=IFCSURFACESTYLE('concrete_reinforced_in-situ',.BOTH.,(#77)); +#80=IFCPRODUCTDEFINITIONSHAPE($,$,(#73)); +#81=IFCZONE('2Cv3e8z_D5hxYOcR$bfTHG',#1,'house - living space','A cozy living space, perfect for relaxation and gatherings.','living space',$); +#82=IFCRELASSIGNSTOGROUP('2IogD410vFThSQLGfMqZwJ',#1,$,$,(#85,#135),$,#81); +#83=IFCSPACETYPE('1hq0sM3Q5Cq9DOc93a74pc',#1,'house - living room','A cozy space, perfect for relaxation and family gatherings.',$,$,$,'883849','living area',.NOTDEFINED.,'living room'); +#84=IFCRELDEFINESBYTYPE('1DDWFfD5f3YQgIl2Q_QABN',#1,$,$,(#85),#83); +#85=IFCSPACE('0xY$LvXaDEswJDk_VU74C_',#1,'living room','A cozy space, perfect for relaxation and family gatherings.','living area',#87,#113,'living room',.ELEMENT.,$,0.); +#86=IFCRELAGGREGATES('0ClUFmS8r57vn0JGAOxcen',#1,'00 groundfloor container',$,#45,(#85,#135)); +#87=IFCLOCALPLACEMENT(#47,#88); +#88=IFCAXIS2PLACEMENT3D(#89,#90,#91); +#89=IFCCARTESIANPOINT((200.,2000.,0.)); +#90=IFCDIRECTION((0.,0.,1.)); +#91=IFCDIRECTION((1.,0.,0.)); +#92=IFCSHAPEREPRESENTATION(#12,'Body','SweptSolid',(#93)); +#93=IFCEXTRUDEDAREASOLID(#107,#94,#108,2200.); +#94=IFCAXIS2PLACEMENT3D(#95,#96,#97); +#95=IFCCARTESIANPOINT((0.,0.,0.)); +#96=IFCDIRECTION((0.,0.,1.)); +#97=IFCDIRECTION((1.,0.,0.)); +#98=IFCCARTESIANPOINT((4950.,2600.)); +#99=IFCCARTESIANPOINT((4950.,0.)); +#100=IFCCARTESIANPOINT((0.,0.)); +#101=IFCCARTESIANPOINT((0.,3800.)); +#102=IFCCARTESIANPOINT((4950.,3800.)); +#103=IFCCARTESIANPOINT((4950.,3300.)); +#104=IFCCARTESIANPOINT((4500.,3300.)); +#105=IFCCARTESIANPOINT((4500.,2600.)); +#106=IFCPOLYLINE((#98,#99,#100,#101,#102,#103,#104,#105)); +#107=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#106); +#108=IFCDIRECTION((-1.8375927042639037E-14,-3.265008465611757E-14,1.)); +#109=IFCSTYLEDITEM(#93,(#112),$); +#110=IFCSURFACESTYLERENDERING(#111,0.8509803921568627,$,$,$,$,$,$,.NOTDEFINED.); +#111=IFCCOLOURRGB($,0.,0.5686274509803921,0.788235294117647); +#112=IFCSURFACESTYLE('virtual_space',.BOTH.,(#110)); +#113=IFCPRODUCTDEFINITIONSHAPE($,$,(#92)); +#114=IFCFURNITURETYPE('38qaFzdvb6KwnqDJqzAlhG',#1,'house - kitchen','The heart of the home, where meals are prepared and shared.',$,$,$,'883722','kitchen',.NOTDEFINED.,.USERDEFINED.); +#115=IFCRELDEFINESBYTYPE('3y6FA_02H2c8vSY8Ak$Hnw',#1,$,$,(#116),#114); +#116=IFCFURNITURE('2e9pghUJbBqR4jTInsONQT',#1,'kitchen','The heart of the home, where meals are prepared and shared.','kitchen',#120,#132,'454425.1027891.979946.932083.920029.919427.2003222',$); +#117=IFCRELASSOCIATESMATERIAL('0MEUM3gDb4HQJkmZ0$VlbL',#1,$,$,(#116),#118); +#118=IFCMATERIAL('wood_mdf_plate',$,$); +#119=IFCRELCONTAINEDINSPATIALSTRUCTURE('3z$e2mo3b2Jx3VO96mGuwz',#1,$,$,(#116),#85); +#120=IFCLOCALPLACEMENT(#87,#121); +#121=IFCAXIS2PLACEMENT3D(#122,#123,#124); +#122=IFCCARTESIANPOINT((4950.,2100.,0.)); +#123=IFCDIRECTION((9.419047450321992E-31,5.661703895142863E-16,1.)); +#124=IFCDIRECTION((-1.5394380663318816E-15,-1.,5.661703895142863E-16)); +#125=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#126)); +#126=IFCTRIANGULATEDFACESET(#127,((0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(-1.0655696088478225E-31,1.,5.084573426255802E-16),(-1.0655696088478225E-31,1.,5.084573426255802E-16),(-1.0655696088478225E-31,1.,5.084573426255802E-16),(-1.0655696088478225E-31,1.,5.084573426255802E-16),(6.015928496102198E-16,-4.511946372076653E-16,1.),(6.015928496102198E-16,-4.511946372076653E-16,1.),(6.015928496102198E-16,-4.511946372076653E-16,1.),(6.015928496102198E-16,-4.511946372076653E-16,1.),(-1.,9.844246629985229E-18,1.5927486214155687E-16),(-1.,9.844246629985229E-18,1.5927486214155687E-16),(-1.,9.844246629985229E-18,1.5927486214155687E-16),(-1.,9.844246629985229E-18,1.5927486214155687E-16),(-1.,9.844246629985229E-18,1.5927486214155687E-16),(-1.,9.844246629985229E-18,1.5927486214155687E-16),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(-2.04514423628243E-16,5.084573426255802E-16,-1.),(-2.04514423628243E-16,5.084573426255802E-16,-1.),(-2.04514423628243E-16,5.084573426255802E-16,-1.),(-2.04514423628243E-16,5.084573426255802E-16,-1.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(5.075939668586115E-16,-4.511946372076642E-16,1.),(5.075939668586115E-16,-4.511946372076642E-16,1.),(5.075939668586115E-16,-4.511946372076642E-16,1.),(5.075939668586115E-16,-4.511946372076642E-16,1.),(5.075939668586115E-16,-4.511946372076642E-16,1.),(5.075939668586115E-16,-4.511946372076642E-16,1.),(5.075939668586115E-16,-4.511946372076642E-16,1.),(5.075939668586115E-16,-4.511946372076642E-16,1.),(-2.620319776633075E-31,-1.,-6.36980664293172E-16),(-2.620319776633075E-31,-1.,-6.36980664293172E-16),(-2.620319776633075E-31,-1.,-6.36980664293172E-16),(-2.620319776633075E-31,-1.,-6.36980664293172E-16),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(1.,-9.844246629985771E-18,-1.5927486214155687E-16),(1.,-9.844246629985771E-18,-1.5927486214155687E-16),(1.,-9.844246629985771E-18,-1.5927486214155687E-16),(1.,-9.844246629985771E-18,-1.5927486214155687E-16),(1.,-9.844246629985771E-18,-1.5927486214155687E-16),(1.,-9.844246629985771E-18,-1.5927486214155687E-16),(-1.14975752306623E-16,6.369806642931719E-16,-1.),(-1.14975752306623E-16,6.369806642931719E-16,-1.),(-1.14975752306623E-16,6.369806642931719E-16,-1.),(-1.14975752306623E-16,6.369806642931719E-16,-1.)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(16,13,17),(17,13,18),(19,20,21),(20,19,22),(23,24,25),(24,23,26),(27,28,29),(28,27,30),(31,32,33),(32,31,34),(35,36,37),(36,35,38),(36,38,39),(39,38,40),(37,41,42),(41,37,36),(42,41,40),(42,40,38),(43,44,45),(44,43,46),(47,48,49),(48,47,50),(51,52,53),(52,51,54),(54,51,55),(54,55,56),(57,58,59),(58,57,60)),$); +#127=IFCCARTESIANPOINTLIST3D(((725.,-150.,900.),(275.,-150.,700.),(725.,-150.,700.),(275.,-150.,900.),(0.,0.,900.),(1600.,0.,0.),(0.,0.,0.),(1600.,0.,900.),(725.,-550.,700.),(275.,-150.,700.),(275.,-550.,700.),(725.,-150.,700.),(0.,0.,900.),(0.,-600.,850.),(0.,-600.,900.),(0.,-580.,850.),(0.,-580.,0.),(0.,0.,0.),(1600.,-600.,900.),(0.,-600.,850.),(1600.,-600.,850.),(0.,-600.,900.),(1600.,0.,0.),(0.,-580.,0.),(0.,0.,0.),(1600.,-580.,0.),(725.,-150.,900.),(725.,-550.,700.),(725.,-550.,900.),(725.,-150.,700.),(275.,-150.,700.),(275.,-550.,900.),(275.,-550.,700.),(275.,-150.,900.),(0.,-600.,900.),(275.,-550.,900.),(0.,0.,900.),(1600.,-600.,900.),(725.,-550.,900.),(725.,-150.,900.),(275.,-150.,900.),(1600.,0.,900.),(1600.,-580.,850.),(0.,-580.,0.),(1600.,-580.,0.),(0.,-580.,850.),(275.,-550.,700.),(725.,-550.,900.),(725.,-550.,700.),(275.,-550.,900.),(1600.,-580.,850.),(1600.,-600.,900.),(1600.,-600.,850.),(1600.,0.,900.),(1600.,-580.,0.),(1600.,0.,0.),(1600.,-580.,850.),(0.,-600.,850.),(0.,-580.,850.),(1600.,-600.,850.))); +#128=IFCSTYLEDITEM(#126,(#131),$); +#129=IFCSURFACESTYLERENDERING(#130,0.,$,$,$,$,$,$,.NOTDEFINED.); +#130=IFCCOLOURRGB($,1.,1.,1.); +#131=IFCSURFACESTYLE('wood_mdf_plate',.BOTH.,(#129)); +#132=IFCPRODUCTDEFINITIONSHAPE($,$,(#125)); +#133=IFCSPACETYPE('30wkH7SyH7gvhogulgnDi9',#1,'house - entry hall','A welcoming entry hall, the first impression of the home.',$,$,$,'884735','hallway',.NOTDEFINED.,'entry hall'); +#134=IFCRELDEFINESBYTYPE('1F9yKAe29AmeFH3cbwlo3g',#1,$,$,(#135),#133); +#135=IFCSPACE('18QhMtUIXBvQktPHXXxs7H',#1,'entry hall','A welcoming entry hall, the first impression of the home.','hallway',#136,#155,'entry hall',.ELEMENT.,$,0.); +#136=IFCLOCALPLACEMENT(#47,#137); +#137=IFCAXIS2PLACEMENT3D(#138,#139,#140); +#138=IFCCARTESIANPOINT((200.,200.,0.)); +#139=IFCDIRECTION((0.,0.,1.)); +#140=IFCDIRECTION((1.,0.,0.)); +#141=IFCSHAPEREPRESENTATION(#12,'Body','SweptSolid',(#142)); +#142=IFCEXTRUDEDAREASOLID(#152,#143,#153,2200.); +#143=IFCAXIS2PLACEMENT3D(#144,#145,#146); +#144=IFCCARTESIANPOINT((0.,0.,0.)); +#145=IFCDIRECTION((0.,0.,1.)); +#146=IFCDIRECTION((1.,0.,0.)); +#147=IFCCARTESIANPOINT((3800.,1600.)); +#148=IFCCARTESIANPOINT((3800.,0.)); +#149=IFCCARTESIANPOINT((0.,0.)); +#150=IFCCARTESIANPOINT((0.,1600.)); +#151=IFCPOLYLINE((#147,#148,#149,#150)); +#152=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#151); +#153=IFCDIRECTION((-6.070618755157653E-15,-1.8375927042639384E-14,1.)); +#154=IFCSTYLEDITEM(#142,(#112),$); +#155=IFCPRODUCTDEFINITIONSHAPE($,$,(#141)); +#156=IFCWALLTYPE('2YJwrhcCv9v8UXU8cWK40m',#1,'house - outer wall - house right front','A solid outer wall, forming the right front side of the house.',$,$,$,'919456','solidwall',.SOLIDWALL.); +#157=IFCRELDEFINESBYTYPE('1f7McSpvb6CvSSdrUtEsXW',#1,$,$,(#158),#156); +#158=IFCWALL('1AQAupaRP1txwK1AGiN61V',#1,'house - outer wall - house right front','A solid outer wall, forming the right front side of the house.','solidwall',#167,#179,'454425.1027891.979946.932083.920023',$); +#159=IFCRELASSOCIATESMATERIAL('0sAYN8OJzFKu1rNoJBdSki',#1,$,$,(#158,#182,#201,#220),#160); +#160=IFCMATERIAL('stone_sand-lime',$,$); +#161=IFCQUANTITYVOLUME('NetVolume',$,$,1.2692649352635803,$); +#162=IFCQUANTITYLENGTH('Width',$,$,200.,$); +#163=IFCQUANTITYLENGTH('Length',$,$,1800.,$); +#164=IFCQUANTITYAREA('NetSideArea',$,$,6.346324676317878,$); +#165=IFCELEMENTQUANTITY('1cYk37bPjCD8QG89AnsgQx',#1,'Qto_WallBaseQuantities',$,'BaseQuantities',(#161,#162,#163,#164)); +#166=IFCRELDEFINESBYPROPERTIES('1l9TegbnXAEhTJu9szsXnn',#1,$,$,(#158),#165); +#167=IFCLOCALPLACEMENT(#47,#168); +#168=IFCAXIS2PLACEMENT3D(#169,#170,#171); +#169=IFCCARTESIANPOINT((4100.,1800.,0.)); +#170=IFCDIRECTION((3.668379928205197E-30,3.2836943041225645E-15,1.)); +#171=IFCDIRECTION((2.5272447978365648E-14,-1.,3.2836943041225645E-15)); +#172=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#173)); +#173=IFCTRIANGULATEDFACESET(#174,((2.901690647380091E-15,1.,1.710410232493741E-28),(2.901690647380091E-15,1.,1.710410232493741E-28),(2.901690647380091E-15,1.,1.710410232493741E-28),(2.901690647380091E-15,1.,1.710410232493741E-28),(-1.788135260267481E-14,-1.,-1.692414224950039E-15),(-1.788135260267481E-14,-1.,-1.692414224950039E-15),(-1.788135260267481E-14,-1.,-1.692414224950039E-15),(-1.788135260267481E-14,-1.,-1.692414224950039E-15),(-1.,-1.4339146622680647E-15,2.935647164503433E-15),(-1.,-1.4339146622680647E-15,2.935647164503433E-15),(-1.,-1.4339146622680647E-15,2.935647164503433E-15),(-1.,-1.4339146622680647E-15,2.935647164503433E-15),(-2.426424493428051E-15,-7.444711513925238E-15,-1.),(-2.426424493428051E-15,-7.444711513925238E-15,-1.),(-2.426424493428051E-15,-7.444711513925238E-15,-1.),(-2.426424493428051E-15,-7.444711513925238E-15,-1.),(9.096198985579167E-15,0.7071067811865641,0.707106781186531),(9.096198985579167E-15,0.7071067811865641,0.707106781186531),(9.096198985579167E-15,0.7071067811865641,0.707106781186531),(9.096198985579167E-15,0.7071067811865641,0.707106781186531),(1.,-7.699392002162405E-14,-1.1467303705476875E-14),(1.,-7.699392002162405E-14,-1.1467303705476875E-14),(1.,-7.699392002162405E-14,-1.1467303705476875E-14),(1.,-7.699392002162405E-14,-1.1467303705476875E-14)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24)),$); +#174=IFCCARTESIANPOINTLIST3D(((0.,100.,3175.736),(1800.,100.,-250.),(0.,100.,-250.),(1800.,100.,3175.736),(1800.,-100.,3375.736),(0.,-100.,-250.),(1800.,-100.,-250.),(0.,-100.,3375.736),(0.,100.,3175.736),(0.,-100.,-250.),(0.,-100.,3375.736),(0.,100.,-250.),(1800.,100.,-250.),(0.,-100.,-250.),(0.,100.,-250.),(1800.,-100.,-250.),(0.,100.,3175.736),(1800.,-100.,3375.736),(1800.,100.,3175.736),(0.,-100.,3375.736),(1800.,100.,-250.),(1800.,-100.,3375.736),(1800.,-100.,-250.),(1800.,100.,3175.736))); +#175=IFCSTYLEDITEM(#173,(#178),$); +#176=IFCSURFACESTYLERENDERING(#177,0.,$,$,$,$,$,$,.NOTDEFINED.); +#177=IFCCOLOURRGB($,1.,1.,1.); +#178=IFCSURFACESTYLE('stone_sand-lime',.BOTH.,(#176)); +#179=IFCPRODUCTDEFINITIONSHAPE($,$,(#172)); +#180=IFCWALLTYPE('1t790TYSH528FFF32MjoC5',#1,'house - outer wall - house right back','A solid outer wall, forming the right back side of the house.',$,$,$,'919483','solidwall',.SOLIDWALL.); +#181=IFCRELDEFINESBYTYPE('2SJ_E$q6PEh9TvfPUzQl1P',#1,$,$,(#182),#180); +#182=IFCWALL('3wdauVJT5Fx9drrREiDqA$',#1,'house - outer wall - house right back','A solid outer wall, forming the right back side of the house.','solidwall',#189,#198,'454425.1027891.979946.932083.920031',$); +#183=IFCQUANTITYVOLUME('NetVolume',$,$,1.7856181822821589,$); +#184=IFCQUANTITYLENGTH('Width',$,$,200.,$); +#185=IFCQUANTITYLENGTH('Length',$,$,4200.,$); +#186=IFCQUANTITYAREA('NetSideArea',$,$,8.928090911402803,$); +#187=IFCELEMENTQUANTITY('0Xm2p01pTE$hQsey2OCutc',#1,'Qto_WallBaseQuantities',$,'BaseQuantities',(#183,#184,#185,#186)); +#188=IFCRELDEFINESBYPROPERTIES('1GWm2rAKz9yf8pJztXxRWD',#1,$,$,(#182),#187); +#189=IFCLOCALPLACEMENT(#47,#190); +#190=IFCAXIS2PLACEMENT3D(#191,#192,#193); +#191=IFCCARTESIANPOINT((5500.,6000.,0.)); +#192=IFCDIRECTION((0.,0.,1.)); +#193=IFCDIRECTION((-1.1508600077130768E-15,-1.,0.)); +#194=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#195)); +#195=IFCTRIANGULATEDFACESET(#196,((1.6396876888030376E-14,1.,-3.4711918617005405E-14),(1.6396876888030376E-14,1.,-3.4711918617005405E-14),(1.6396876888030376E-14,1.,-3.4711918617005405E-14),(1.6396876888030376E-14,1.,-3.4711918617005405E-14),(1.,-9.381429217476083E-14,-1.204941409899768E-14),(1.,-9.381429217476083E-14,-1.204941409899768E-14),(1.,-9.381429217476083E-14,-1.204941409899768E-14),(1.,-9.381429217476083E-14,-1.204941409899768E-14),(-1.607586710054824E-14,-1.,-2.7569519724980073E-15),(-1.607586710054824E-14,-1.,-2.7569519724980073E-15),(-1.607586710054824E-14,-1.,-2.7569519724980073E-15),(-1.607586710054824E-14,-1.,-2.7569519724980073E-15),(-3.86738260464141E-16,-7.963585346715922E-14,-1.),(-3.86738260464141E-16,-7.963585346715922E-14,-1.),(-3.86738260464141E-16,-7.963585346715922E-14,-1.),(-3.86738260464141E-16,-7.963585346715922E-14,-1.),(-1.,-4.636441185466661E-14,1.3237459657637147E-14),(-1.,-4.636441185466661E-14,1.3237459657637147E-14),(-1.,-4.636441185466661E-14,1.3237459657637147E-14),(-1.,-4.636441185466661E-14,1.3237459657637147E-14),(1.0151536835666373E-14,0.7071067811865099,0.7071067811865852),(1.0151536835666373E-14,0.7071067811865099,0.7071067811865852),(1.0151536835666373E-14,0.7071067811865099,0.7071067811865852),(1.0151536835666373E-14,0.7071067811865099,0.7071067811865852)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24)),$); +#196=IFCCARTESIANPOINTLIST3D(((0.,100.,1775.736),(4200.,100.,-250.),(0.,100.,-250.),(4200.,100.,1775.736),(4200.,-100.,-250.),(4200.,100.,1775.736),(4200.,-100.,1975.736),(4200.,100.,-250.),(4200.,-100.,1975.736),(0.,-100.,-250.),(4200.,-100.,-250.),(0.,-100.,1975.736),(4200.,100.,-250.),(0.,-100.,-250.),(0.,100.,-250.),(4200.,-100.,-250.),(0.,-100.,1975.736),(0.,100.,-250.),(0.,-100.,-250.),(0.,100.,1775.736),(4200.,-100.,1975.736),(0.,100.,1775.736),(0.,-100.,1975.736),(4200.,100.,1775.736))); +#197=IFCSTYLEDITEM(#195,(#178),$); +#198=IFCPRODUCTDEFINITIONSHAPE($,$,(#194)); +#199=IFCWALLTYPE('3zoiwePjTDQAyswDZcvJRA',#1,'house - outer wall - house left','A solid outer wall, forming the left side of the house.',$,$,$,'919429','solidwall',.SOLIDWALL.); +#200=IFCRELDEFINESBYTYPE('3EfLxcz4z2gvxxH9$AIOIS',#1,$,$,(#201),#199); +#201=IFCWALL('0OfZwWc8j9QP5uX8xPTxDH',#1,'house - outer wall - house left','A solid outer wall, forming the left side of the house.','solidwall',#208,#217,'454425.1027891.979946.932083.920032',$); +#202=IFCQUANTITYVOLUME('NetVolume',$,$,4.230883117545889,$); +#203=IFCQUANTITYLENGTH('Width',$,$,200.,$); +#204=IFCQUANTITYLENGTH('Length',$,$,6000.,$); +#205=IFCQUANTITYAREA('NetSideArea',$,$,21.154415587728412,$); +#206=IFCELEMENTQUANTITY('3j9EEnVPHDIBkUdsJxWtnf',#1,'Qto_WallBaseQuantities',$,'BaseQuantities',(#202,#203,#204,#205)); +#207=IFCRELDEFINESBYPROPERTIES('144Ocp7RjAce1GnVbjfApT',#1,$,$,(#201),#206); +#208=IFCLOCALPLACEMENT(#47,#209); +#209=IFCAXIS2PLACEMENT3D(#210,#211,#212); +#210=IFCCARTESIANPOINT((100.,0.,0.)); +#211=IFCDIRECTION((0.,0.,1.)); +#212=IFCDIRECTION((1.3173934614068503E-15,1.,0.)); +#213=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#214)); +#214=IFCTRIANGULATEDFACESET(#215,((-1.263727097537922E-16,-1.,-5.911005565083681E-17),(-1.263727097537922E-16,-1.,-5.911005565083681E-17),(-1.263727097537922E-16,-1.,-5.911005565083681E-17),(-1.263727097537922E-16,-1.,-5.911005565083681E-17),(1.,-1.281325403525711E-13,5.669752214634743E-15),(1.,-1.281325403525711E-13,5.669752214634743E-15),(1.,-1.281325403525711E-13,5.669752214634743E-15),(1.,-1.281325403525711E-13,5.669752214634743E-15),(-3.207528982684935E-19,1.,0.),(-3.207528982684935E-19,1.,0.),(-3.207528982684935E-19,1.,0.),(-3.207528982684935E-19,1.,0.),(4.323948606573438E-16,5.639932965095277E-16,-1.),(4.323948606573438E-16,5.639932965095277E-16,-1.),(4.323948606573438E-16,5.639932965095277E-16,-1.),(4.323948606573438E-16,5.639932965095277E-16,-1.),(-1.67434285815245E-16,0.707106781186529,0.7071067811865661),(-1.67434285815245E-16,0.707106781186529,0.7071067811865661),(-1.67434285815245E-16,0.707106781186529,0.7071067811865661),(-1.67434285815245E-16,0.707106781186529,0.7071067811865661),(-1.,-9.89999786954311E-14,-8.159119420421115E-15),(-1.,-9.89999786954311E-14,-8.159119420421115E-15),(-1.,-9.89999786954311E-14,-8.159119420421115E-15),(-1.,-9.89999786954311E-14,-8.159119420421115E-15)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24)),$); +#215=IFCCARTESIANPOINTLIST3D(((6000.,-100.,-250.),(0.,-100.,3375.736),(0.,-100.,-250.),(6000.,-100.,3375.736),(6000.,-100.,-250.),(6000.,100.,3175.736),(6000.,-100.,3375.736),(6000.,100.,-250.),(0.,100.,3175.736),(6000.,100.,-250.),(0.,100.,-250.),(6000.,100.,3175.736),(6000.,100.,-250.),(0.,-100.,-250.),(0.,100.,-250.),(6000.,-100.,-250.),(0.,-100.,3375.736),(6000.,100.,3175.736),(0.,100.,3175.736),(6000.,-100.,3375.736),(0.,100.,3175.736),(0.,-100.,-250.),(0.,-100.,3375.736),(0.,100.,-250.))); +#216=IFCSTYLEDITEM(#214,(#178),$); +#217=IFCPRODUCTDEFINITIONSHAPE($,$,(#213)); +#218=IFCCHIMNEYTYPE('2vWR$XNSf2qhsAEJMXcZLU',#1,'house - chimney','A chimney, standing tall and proud, guiding smoke away from the home.',$,$,$,'884350','flue',.USERDEFINED.); +#219=IFCRELDEFINESBYTYPE('22pEICzjP0uQNvM7rXMZ6g',#1,$,$,(#220),#218); +#220=IFCCHIMNEY('3Fbgsvr8nAYfGs9y5keub0',#1,'house - chimney','A chimney, standing tall and proud, guiding smoke away from the home.','flue',#221,$,'454425.1027891.979946.932083.2023772',$); +#221=IFCLOCALPLACEMENT(#47,#222); +#222=IFCAXIS2PLACEMENT3D(#223,#224,#225); +#223=IFCCARTESIANPOINT((4700.,5300.,0.)); +#224=IFCDIRECTION((0.,0.,1.)); +#225=IFCDIRECTION((-1.3173934614068503E-15,-1.,0.)); +#226=IFCWALLTYPE('2S9_r4C7nDjgFt_4z9uegR',#1,'plumbing wall','A wall designed to house and protect plumbing systems, keeping the pipes snug and secure.',$,$,$,'880192','plumbingwall',.PLUMBINGWALL.); +#227=IFCRELDEFINESBYTYPE('2zGea7oBbB_PNczYvvtC0B',#1,$,$,(#228),#226); +#228=IFCWALL('0Q5LjisRjDwhFSOc_WQjlF',#1,'plumbing wall','A wall designed to house and protect plumbing systems, keeping the pipes snug and secure.','plumbingwall',#237,#249,'454425.1027891.979946.932083.2037918.920027',$); +#229=IFCRELASSOCIATESMATERIAL('1eEeFE5_HCcQXkHLD$AhF4',#1,$,$,(#228),#230); +#230=IFCMATERIAL('gypsum_fiber-board_panel',$,$); +#231=IFCQUANTITYVOLUME('NetVolume',$,$,0.1647019532880213,$); +#232=IFCQUANTITYLENGTH('Width',$,$,24.,$); +#233=IFCQUANTITYLENGTH('Length',$,$,3800.,$); +#234=IFCQUANTITYAREA('NetSideArea',$,$,6.862581386977265,$); +#235=IFCELEMENTQUANTITY('1nSBkRen9FPBns1FwcHFeS',#1,'Qto_WallBaseQuantities',$,'BaseQuantities',(#231,#232,#233,#234)); +#236=IFCRELDEFINESBYPROPERTIES('2miw564v1A1uSGIg$CkZQq',#1,$,$,(#228),#235); +#237=IFCLOCALPLACEMENT(#47,#238); +#238=IFCAXIS2PLACEMENT3D(#239,#240,#241); +#239=IFCCARTESIANPOINT((5400.,5800.,0.)); +#240=IFCDIRECTION((0.,0.,1.)); +#241=IFCDIRECTION((-1.3173934614068503E-15,-1.,0.)); +#242=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#243)); +#243=IFCTRIANGULATEDFACESET(#244,((5.075971733246496E-16,5.472814749700968E-14,-1.),(5.075971733246496E-16,5.472814749700968E-14,-1.),(5.075971733246496E-16,5.472814749700968E-14,-1.),(5.075971733246496E-16,5.472814749700968E-14,-1.),(-3.3160286406683378E-15,0.7071067811864917,0.7071067811866033),(-3.3160286406683378E-15,0.7071067811864917,0.7071067811866033),(-3.3160286406683378E-15,0.7071067811864917,0.7071067811866033),(-3.3160286406683378E-15,0.7071067811864917,0.7071067811866033),(5.178510654014873E-15,1.0939179906803554E-13,-1.),(5.178510654014873E-15,1.0939179906803554E-13,-1.),(5.178510654014873E-15,1.0939179906803554E-13,-1.),(5.178510654014873E-15,1.0939179906803554E-13,-1.),(1.1928109842900645E-30,-1.,-1.9785184743809532E-14),(1.1928109842900645E-30,-1.,-1.9785184743809532E-14),(1.1928109842900645E-30,-1.,-1.9785184743809532E-14),(1.1928109842900645E-30,-1.,-1.9785184743809532E-14),(1.,1.0631635464886396E-15,1.0246502496644683E-14),(1.,1.0631635464886396E-15,1.0246502496644683E-14),(1.,1.0631635464886396E-15,1.0246502496644683E-14),(1.,1.0631635464886396E-15,1.0246502496644683E-14),(1.,2.875890450093469E-15,1.3754869910452968E-15),(1.,2.875890450093469E-15,1.3754869910452968E-15),(1.,2.875890450093469E-15,1.3754869910452968E-15),(1.,2.875890450093469E-15,1.3754869910452968E-15),(-1.2759710407406468E-15,0.7071067811863934,0.7071067811867017),(-1.2759710407406468E-15,0.7071067811863934,0.7071067811867017),(-1.2759710407406468E-15,0.7071067811863934,0.7071067811867017),(-1.2759710407406468E-15,0.7071067811863934,0.7071067811867017),(-5.638296522182432E-31,-1.,-2.3028657652630297E-14),(-5.638296522182432E-31,-1.,-2.3028657652630297E-14),(-5.638296522182432E-31,-1.,-2.3028657652630297E-14),(-5.638296522182432E-31,-1.,-2.3028657652630297E-14),(-1.,-2.001234177502896E-14,-9.945041069530269E-15),(-1.,-2.001234177502896E-14,-9.945041069530269E-15),(-1.,-2.001234177502896E-14,-9.945041069530269E-15),(-1.,-2.001234177502896E-14,-9.945041069530269E-15),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(-1.,2.9589614798649126E-14,-9.800553637205803E-16),(-1.,2.9589614798649126E-14,-9.800553637205803E-16),(-1.,2.9589614798649126E-14,-9.800553637205803E-16),(-1.,2.9589614798649126E-14,-9.800553637205803E-16),(-2.7765823828164537E-15,1.,-2.7949379008107385E-30),(-2.7765823828164537E-15,1.,-2.7949379008107385E-30),(-2.7765823828164537E-15,1.,-2.7949379008107385E-30),(-2.7765823828164537E-15,1.,-2.7949379008107385E-30)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24),(25,26,27),(26,25,28),(29,30,31),(30,29,32),(33,34,35),(34,33,36),(37,38,39),(38,37,40),(41,42,43),(42,41,44),(45,46,47),(46,45,48)),$); +#244=IFCCARTESIANPOINTLIST3D(((3800.,-226.,0.),(1200.,-250.,0.),(1200.,-226.,0.),(3800.,-250.,0.),(0.,-250.,2225.736),(500.,-226.,2201.736),(0.,-226.,2201.736),(500.,-250.,2225.736),(500.,-226.,0.),(0.,-250.,0.),(0.,-226.,0.),(500.,-250.,0.),(500.,-250.,2225.736),(0.,-250.,0.),(500.,-250.,0.),(0.,-250.,2225.736),(500.,-250.,0.),(500.,-226.,2201.736),(500.,-250.,2225.736),(500.,-226.,0.),(3800.,-250.,0.),(3800.,-226.,2201.736),(3800.,-250.,2225.736),(3800.,-226.,0.),(3800.,-250.,2225.736),(1200.,-226.,2201.736),(1200.,-250.,2225.736),(3800.,-226.,2201.736),(3800.,-250.,2225.736),(1200.,-250.,0.),(3800.,-250.,0.),(1200.,-250.,2225.736),(0.,-226.,2201.736),(0.,-250.,0.),(0.,-250.,2225.736),(0.,-226.,0.),(0.,-226.,2201.736),(500.,-226.,0.),(0.,-226.,0.),(500.,-226.,2201.736),(1200.,-226.,2201.736),(1200.,-250.,0.),(1200.,-250.,2225.736),(1200.,-226.,0.),(1200.,-226.,2201.736),(3800.,-226.,0.),(1200.,-226.,0.),(3800.,-226.,2201.736))); +#245=IFCSTYLEDITEM(#243,(#248),$); +#246=IFCSURFACESTYLERENDERING(#247,0.,$,$,$,$,$,$,.NOTDEFINED.); +#247=IFCCOLOURRGB($,1.,1.,1.); +#248=IFCSURFACESTYLE('gypsum_fiber-board_panel',.BOTH.,(#246)); +#249=IFCPRODUCTDEFINITIONSHAPE($,$,(#242)); +#250=IFCROOFTYPE('0GE$iSXKL8jAEeHi$mszPq',#1,'house - roof','A sturdy roof, sheltering the house from the elements.',$,$,$,'902509','gable_roof',.GABLE_ROOF.); +#251=IFCRELDEFINESBYTYPE('3vwqwSGfL8LeMOHvcbNbYk',#1,$,$,(#252),#250); +#252=IFCROOF('2iPwJwpPDCSgMheXwk9cBT',#1,'house - roof','A sturdy roof, sheltering the house from the elements.','gable_roof',#254,$,'454425.1027891.979946.932084',$); +#253=IFCRELCONTAINEDINSPATIALSTRUCTURE('1JoEmCNtv6tfeP8yu4kUFS',#1,$,$,(#252,#303,#319,#337),#28); +#254=IFCLOCALPLACEMENT(#30,#255); +#255=IFCAXIS2PLACEMENT3D(#256,#257,#258); +#256=IFCCARTESIANPOINT((-2800.,-2800.,3100.)); +#257=IFCDIRECTION((0.,0.,1.)); +#258=IFCDIRECTION((1.,0.,0.)); +#259=IFCSLABTYPE('3eOsEo1q1CHfDNvWsh3ksD',#1,'house - roof - slab left','A roof slab that\X\27s got it all covered',$,$,$,'880245','roof',.ROOF.); +#260=IFCRELDEFINESBYTYPE('2i47udZl5BLfVbbW8mvEps',#1,$,$,(#261),#259); +#261=IFCSLAB('0ZTBBPo6f6bxqV2K7Oelrq',#1,'house - roof - slab left','A roof slab that\X\27s got it all covered','roof',#270,#282,'454425.1027891.979946.932084.902510',$); +#262=IFCRELASSOCIATESMATERIAL('1Tyvz$43XCrgyBJnA9othY',#1,$,$,(#261,#285),#263); +#263=IFCMATERIAL('composite_element_roof',$,$); +#264=IFCQUANTITYVOLUME('NetVolume',$,$,6.7203428483966,$); +#265=IFCQUANTITYLENGTH('Depth',$,$,300.,$); +#266=IFCQUANTITYAREA('NetArea',$,$,22.40114282797721,$); +#267=IFCELEMENTQUANTITY('0gNyi54Zr1khdYtM_Gl1j7',#1,'Qto_SlabBaseQuantities',$,'BaseQuantities',(#264,#265,#266)); +#268=IFCRELDEFINESBYPROPERTIES('0fjwH74g54vQdEi1FuLhJV',#1,$,$,(#261),#267); +#269=IFCRELAGGREGATES('2iibGpghfAYxr5D8bYzotN',#1,'house - roof container',$,#252,(#261,#285)); +#270=IFCLOCALPLACEMENT(#254,#271); +#271=IFCAXIS2PLACEMENT3D(#272,#273,#274); +#272=IFCCARTESIANPOINT((2100.,6000.,3475.736)); +#273=IFCDIRECTION((-0.707106781186532,-1.5343992092947548E-15,0.7071067811865631)); +#274=IFCDIRECTION((8.401584185916714E-15,-1.,6.231616014037196E-15)); +#275=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#276)); +#276=IFCTRIANGULATEDFACESET(#277,((-1.0319670377555575E-14,-1.4432899320127035E-14,1.),(-1.0319670377555575E-14,-1.4432899320127035E-14,1.),(-1.0319670377555575E-14,-1.4432899320127035E-14,1.),(-1.0319670377555575E-14,-1.4432899320127035E-14,1.),(1.1873982612030798E-14,1.3822276656583199E-14,-1.),(1.1873982612030798E-14,1.3822276656583199E-14,-1.),(1.1873982612030798E-14,1.3822276656583199E-14,-1.),(1.1873982612030798E-14,1.3822276656583199E-14,-1.),(1.,-3.5667292654796704E-15,1.2788136056005132E-13),(1.,-3.5667292654796704E-15,1.2788136056005132E-13),(1.,-3.5667292654796704E-15,1.2788136056005132E-13),(1.,-3.5667292654796704E-15,1.2788136056005132E-13),(7.966214517805886E-15,0.7071067811865844,-0.7071067811865106),(7.966214517805886E-15,0.7071067811865844,-0.7071067811865106),(7.966214517805886E-15,0.7071067811865844,-0.7071067811865106),(7.966214517805886E-15,0.7071067811865844,-0.7071067811865106),(-1.,-9.57196467548433E-16,-8.428195243442083E-14),(-1.,-9.57196467548433E-16,-8.428195243442083E-14),(-1.,-9.57196467548433E-16,-8.428195243442083E-14),(-1.,-9.57196467548433E-16,-8.428195243442083E-14),(-4.913101200086771E-15,-0.7071067811865795,0.7071067811865155),(-4.913101200086771E-15,-0.7071067811865795,0.7071067811865155),(-4.913101200086771E-15,-0.7071067811865795,0.7071067811865155),(-4.913101200086771E-15,-0.7071067811865795,0.7071067811865155)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24)),$); +#277=IFCCARTESIANPOINTLIST3D(((6300.,-3094.113,300.),(-300.,300.,300.),(-300.,-3094.113,300.),(6300.,300.,300.),(6300.,0.,0.),(-300.,-3394.113,0.),(-300.,0.,0.),(6300.,-3394.113,0.),(6300.,0.,0.),(6300.,-3094.113,300.),(6300.,-3394.113,0.),(6300.,300.,300.),(-300.,300.,300.),(6300.,0.,0.),(-300.,0.,0.),(6300.,300.,300.),(-300.,-3094.113,300.),(-300.,0.,0.),(-300.,-3394.113,0.),(-300.,300.,300.),(6300.,-3394.113,0.),(-300.,-3094.113,300.),(-300.,-3394.113,0.),(6300.,-3094.113,300.))); +#278=IFCSTYLEDITEM(#276,(#281),$); +#279=IFCSURFACESTYLERENDERING(#280,0.,$,$,$,$,$,$,.NOTDEFINED.); +#280=IFCCOLOURRGB($,0.9647058823529412,0.6862745098039216,0.4980392156862745); +#281=IFCSURFACESTYLE('composite_element_roof',.BOTH.,(#279)); +#282=IFCPRODUCTDEFINITIONSHAPE($,$,(#275)); +#283=IFCSLABTYPE('3n9C2OuJjE89DiYlOaoccO',#1,'house - roof - slab right','A roof slab that\X\27s got it all covered',$,$,$,'883786','roof',.ROOF.); +#284=IFCRELDEFINESBYTYPE('2LggWrf0b8BBbNxz_kRjsN',#1,$,$,(#285),#283); +#285=IFCSLAB('12UVOn4wvAJPMUExKdZLb8',#1,'house - roof - slab right','A roof slab that\X\27s got it all covered','roof',#291,#300,'454425.1027891.979946.932084.902511',$); +#286=IFCQUANTITYVOLUME('NetVolume',$,$,9.363507996471887,$); +#287=IFCQUANTITYLENGTH('Depth',$,$,300.,$); +#288=IFCQUANTITYAREA('NetArea',$,$,31.21169332156894,$); +#289=IFCELEMENTQUANTITY('3xJ9a9tQn29QQjVHSb0r6h',#1,'Qto_SlabBaseQuantities',$,'BaseQuantities',(#286,#287,#288)); +#290=IFCRELDEFINESBYPROPERTIES('1SDEhjPn94WeDGTHCJXe9x',#1,$,$,(#285),#289); +#291=IFCLOCALPLACEMENT(#254,#292); +#292=IFCAXIS2PLACEMENT3D(#293,#294,#295); +#293=IFCCARTESIANPOINT((2100.,0.,3475.736)); +#294=IFCDIRECTION((0.7071067811865405,1.3827840298789288E-14,0.7071067811865547)); +#295=IFCDIRECTION((-2.475399821121155E-15,1.,-1.708011946775574E-14)); +#296=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#297)); +#297=IFCTRIANGULATEDFACESET(#298,((-1.,5.551417136929974E-16,1.12541683656661E-13),(-1.,5.551417136929974E-16,1.12541683656661E-13),(-1.,5.551417136929974E-16,1.12541683656661E-13),(-1.,5.551417136929974E-16,1.12541683656661E-13),(-2.544851976317381E-16,0.7071067811865758,-0.7071067811865195),(-2.544851976317381E-16,0.7071067811865758,-0.7071067811865195),(-2.544851976317381E-16,0.7071067811865758,-0.7071067811865195),(-2.544851976317381E-16,0.7071067811865758,-0.7071067811865195),(1.8276216453997237E-15,-8.93729534823251E-15,1.),(1.8276216453997237E-15,-8.93729534823251E-15,1.),(1.8276216453997237E-15,-8.93729534823251E-15,1.),(1.8276216453997237E-15,-8.93729534823251E-15,1.),(1.8276216453997237E-15,-8.93729534823251E-15,1.),(1.8276216453997237E-15,-8.93729534823251E-15,1.),(1.8276216453997237E-15,-8.93729534823251E-15,1.),(1.8276216453997237E-15,-8.93729534823251E-15,1.),(1.8276216453997237E-15,-8.93729534823251E-15,1.),(1.8276216453997237E-15,-8.93729534823251E-15,1.),(-1.,-1.2886477620368146E-14,-7.257639950365015E-15),(-1.,-1.2886477620368146E-14,-7.257639950365015E-15),(-1.,-1.2886477620368146E-14,-7.257639950365015E-15),(-1.,-1.2886477620368146E-14,-7.257639950365015E-15),(-7.118249174723844E-15,3.497202527569243E-15,-1.),(-7.118249174723844E-15,3.497202527569243E-15,-1.),(-7.118249174723844E-15,3.497202527569243E-15,-1.),(-7.118249174723844E-15,3.497202527569243E-15,-1.),(-7.118249174723844E-15,3.497202527569243E-15,-1.),(-7.118249174723844E-15,3.497202527569243E-15,-1.),(-7.118249174723844E-15,3.497202527569243E-15,-1.),(-7.118249174723844E-15,3.497202527569243E-15,-1.),(-7.118249174723844E-15,3.497202527569243E-15,-1.),(-7.118249174723844E-15,3.497202527569243E-15,-1.),(1.,5.1143074561679225E-15,-6.197407463554143E-14),(1.,5.1143074561679225E-15,-6.197407463554143E-14),(1.,5.1143074561679225E-15,-6.197407463554143E-14),(1.,5.1143074561679225E-15,-6.197407463554143E-14),(1.2411427317276563E-14,-0.7071067811865416,0.7071067811865535),(1.2411427317276563E-14,-0.7071067811865416,0.7071067811865535),(1.2411427317276563E-14,-0.7071067811865416,0.7071067811865535),(1.2411427317276563E-14,-0.7071067811865416,0.7071067811865535),(-3.3404564307013487E-15,-0.7071067811865449,0.7071067811865501),(-3.3404564307013487E-15,-0.7071067811865449,0.7071067811865501),(-3.3404564307013487E-15,-0.7071067811865449,0.7071067811865501),(-3.3404564307013487E-15,-0.7071067811865449,0.7071067811865501),(-5.907252589038288E-15,-0.7071067811865545,0.7071067811865406),(-5.907252589038288E-15,-0.7071067811865545,0.7071067811865406),(-5.907252589038288E-15,-0.7071067811865545,0.7071067811865406),(-5.907252589038288E-15,-0.7071067811865545,0.7071067811865406),(6.938554616941515E-15,0.7071067811865545,-0.7071067811865406),(6.938554616941515E-15,0.7071067811865545,-0.7071067811865406),(6.938554616941515E-15,0.7071067811865545,-0.7071067811865406),(6.938554616941515E-15,0.7071067811865545,-0.7071067811865406),(1.,4.500210060477742E-15,4.815236217270992E-15),(1.,4.500210060477742E-15,4.815236217270992E-15),(1.,4.500210060477742E-15,4.815236217270992E-15),(1.,4.500210060477742E-15,4.815236217270992E-15),(-1.,-4.5002100604777466E-15,-4.815236217271137E-15),(-1.,-4.5002100604777466E-15,-4.815236217271137E-15),(-1.,-4.5002100604777466E-15,-4.815236217271137E-15),(-1.,-4.5002100604777466E-15,-4.815236217271137E-15)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(10,12,13),(13,12,14),(15,16,17),(16,15,14),(14,15,9),(14,9,11),(14,11,18),(14,18,13),(19,20,21),(20,19,22),(23,24,25),(24,23,26),(24,26,27),(27,26,28),(28,26,29),(29,26,30),(27,31,32),(31,27,28),(32,31,30),(32,30,26),(33,34,35),(34,33,36),(37,38,39),(38,37,40),(41,42,43),(42,41,44),(45,46,47),(46,45,48),(49,50,51),(50,49,52),(53,54,55),(54,53,56),(57,58,59),(58,57,60)),$); +#298=IFCCARTESIANPOINTLIST3D(((-300.,-3094.113,300.),(-300.,0.,0.),(-300.,-3394.113,0.),(-300.,300.,300.),(-300.,0.,0.),(6300.,300.,300.),(6300.,0.,0.),(-300.,300.,300.),(1500.,-5074.012,300.),(4600.,-4366.905,300.),(4600.,-3376.955,300.),(6300.,-5074.012,300.),(5300.,-4366.905,300.),(6300.,300.,300.),(1500.,-3094.113,300.),(-300.,300.,300.),(-300.,-3094.113,300.),(5300.,-3376.955,300.),(1500.,-5074.012,300.),(1500.,-3394.113,0.),(1500.,-5374.012,0.),(1500.,-3094.113,300.),(-300.,0.,0.),(1500.,-3394.113,0.),(-300.,-3394.113,0.),(6300.,0.,0.),(1500.,-5374.012,0.),(4600.,-3676.955,0.),(5300.,-3676.955,0.),(5300.,-4666.905,0.),(4600.,-4666.905,0.),(6300.,-5374.012,0.),(6300.,0.,0.),(6300.,-5074.012,300.),(6300.,-5374.012,0.),(6300.,300.,300.),(1500.,-3394.113,0.),(-300.,-3094.113,300.),(-300.,-3394.113,0.),(1500.,-3094.113,300.),(1500.,-5374.012,0.),(6300.,-5074.012,300.),(1500.,-5074.012,300.),(6300.,-5374.012,0.),(5300.,-3376.955,300.),(4600.,-3676.955,0.),(5300.,-3676.955,0.),(4600.,-3376.955,300.),(4600.,-4666.905,0.),(5300.,-4366.905,300.),(5300.,-4666.905,0.),(4600.,-4366.905,300.),(4600.,-3676.955,0.),(4600.,-4366.905,300.),(4600.,-4666.905,0.),(4600.,-3376.955,300.),(5300.,-4366.905,300.),(5300.,-3676.955,0.),(5300.,-4666.905,0.),(5300.,-3376.955,300.))); +#299=IFCSTYLEDITEM(#297,(#281),$); +#300=IFCPRODUCTDEFINITIONSHAPE($,$,(#296)); +#301=IFCSPATIALZONETYPE('02tV5cCF9FyA9D1O5nS04E',#1,'house - gross volume',$,$,$,$,'884737','gross volume',.USERDEFINED.,$); +#302=IFCRELDEFINESBYTYPE('0gNxHKqrn0uui2jga0HHAV',#1,$,$,(#303),#301); +#303=IFCSPATIALZONE('1yP7NInQz5uQzbiOpVFFJr',#1,'house - gross volume',$,'gross volume',#304,#316,$,$); +#304=IFCLOCALPLACEMENT(#30,#305); +#305=IFCAXIS2PLACEMENT3D(#306,#307,#308); +#306=IFCCARTESIANPOINT((-2800.,-2800.,1300.)); +#307=IFCDIRECTION((0.,0.,1.)); +#308=IFCDIRECTION((1.,0.,0.)); +#309=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#310)); +#310=IFCTRIANGULATEDFACESET(#311,((-0.7071067811865459,2.2010523126980766E-17,0.7071067811865492),(-0.7071067811865459,2.2010523126980766E-17,0.7071067811865492),(-0.7071067811865459,2.2010523126980766E-17,0.7071067811865492),(-0.7071067811865459,2.2010523126980766E-17,0.7071067811865492),(0.7071067811865526,1.4157207832392772E-14,0.7071067811865425),(0.7071067811865526,1.4157207832392772E-14,0.7071067811865425),(0.7071067811865526,1.4157207832392772E-14,0.7071067811865425),(0.7071067811865526,1.4157207832392772E-14,0.7071067811865425),(0.7071067811865526,1.4157207832392772E-14,0.7071067811865425),(0.7071067811865526,1.4157207832392772E-14,0.7071067811865425),(1.,2.5901853658387827E-14,9.924486728288328E-29),(1.,2.5901853658387827E-14,9.924486728288328E-29),(1.,2.5901853658387827E-14,9.924486728288328E-29),(1.,2.5901853658387827E-14,9.924486728288328E-29),(1.4251491698289922E-14,1.,5.7632358717794455E-15),(1.4251491698289922E-14,1.,5.7632358717794455E-15),(1.4251491698289922E-14,1.,5.7632358717794455E-15),(1.4251491698289922E-14,1.,5.7632358717794455E-15),(1.4251491698289922E-14,1.,5.7632358717794455E-15),(-1.,1.487416814333745E-17,0.),(-1.,1.487416814333745E-17,0.),(-1.,1.487416814333745E-17,0.),(-1.,1.487416814333745E-17,0.),(-3.1515459731211106E-14,-1.,8.577165380581265E-16),(-3.1515459731211106E-14,-1.,8.577165380581265E-16),(-3.1515459731211106E-14,-1.,8.577165380581265E-16),(-3.1515459731211106E-14,-1.,8.577165380581265E-16),(1.487416814333745E-17,-1.,-1.2508890969868697E-14),(1.487416814333745E-17,-1.,-1.2508890969868697E-14),(1.487416814333745E-17,-1.,-1.2508890969868697E-14),(1.487416814333745E-17,-1.,-1.2508890969868697E-14),(1.487416814333745E-17,-1.,-1.2508890969868697E-14),(-3.981066847717047E-16,1.6801652408367234E-15,-1.),(-3.981066847717047E-16,1.6801652408367234E-15,-1.),(-3.981066847717047E-16,1.6801652408367234E-15,-1.),(-3.981066847717047E-16,1.6801652408367234E-15,-1.),(-3.981066847717047E-16,1.6801652408367234E-15,-1.),(-3.981066847717047E-16,1.6801652408367234E-15,-1.),(1.,5.395270012942634E-14,-3.00796424805263E-16),(1.,5.395270012942634E-14,-3.00796424805263E-16),(1.,5.395270012942634E-14,-3.00796424805263E-16),(1.,5.395270012942634E-14,-3.00796424805263E-16)),$,((1,2,3),(2,1,4),(5,6,7),(8,9,10),(9,8,6),(9,6,5),(11,12,13),(12,11,14),(15,16,17),(16,15,18),(18,15,19),(20,21,22),(21,20,23),(24,25,26),(25,24,27),(28,29,30),(29,28,31),(31,28,32),(33,34,35),(34,33,36),(35,37,38),(37,35,34),(39,40,41),(40,39,42)),$); +#311=IFCCARTESIANPOINTLIST3D(((2100.,0.,5700.),(0.,6000.,3600.),(0.,0.,3600.),(2100.,6000.,5700.),(5600.,6000.,2200.),(4200.,1800.,3600.),(5600.,1800.,2200.),(4200.,0.,3600.),(2100.,6000.,5700.),(2100.,0.,5700.),(4200.,0.,-300.),(4200.,1800.,3600.),(4200.,0.,3600.),(4200.,1800.,-300.),(0.,6000.,3600.),(5600.,6000.,-300.),(0.,6000.,-300.),(5600.,6000.,2200.),(2100.,6000.,5700.),(0.,6000.,3600.),(0.,0.,-300.),(0.,0.,3600.),(0.,6000.,-300.),(5600.,1800.,2200.),(4200.,1800.,-300.),(5600.,1800.,-300.),(4200.,1800.,3600.),(4200.,0.,3600.),(0.,0.,-300.),(4200.,0.,-300.),(0.,0.,3600.),(2100.,0.,5700.),(5600.,6000.,-300.),(4200.,1800.,-300.),(0.,6000.,-300.),(5600.,1800.,-300.),(4200.,0.,-300.),(0.,0.,-300.),(5600.,6000.,-300.),(5600.,1800.,2200.),(5600.,1800.,-300.),(5600.,6000.,2200.))); +#312=IFCSTYLEDITEM(#310,(#315),$); +#313=IFCSURFACESTYLERENDERING(#314,0.8509803921568627,$,$,$,$,$,$,.NOTDEFINED.); +#314=IFCCOLOURRGB($,0.,0.5686274509803921,0.); +#315=IFCSURFACESTYLE('virtual_spatial-zone',.BOTH.,(#313)); +#316=IFCPRODUCTDEFINITIONSHAPE($,$,(#309)); +#317=IFCBUILDINGELEMENTPROXYTYPE('3w6ICDipzDzBpAKGLlR62f',#1,'sand bedding','A layer of ground floor sand bedding, providing a stable base.',$,$,$,'884803','subgrade',.ELEMENT.); +#318=IFCRELDEFINESBYTYPE('1SihQ7wbb2zxRE28j$a1do',#1,$,$,(#319),#317); +#319=IFCBUILDINGELEMENTPROXY('3_4VN63S96DfWiJjgG8j1C',#1,'sand bedding','A layer of ground floor sand bedding, providing a stable base.','subgrade',#322,#334,'454425.1027891.979946.932086',$); +#320=IFCRELASSOCIATESMATERIAL('1k8uxHQbjDqBL1HxU2VBqX',#1,$,$,(#319),#321); +#321=IFCMATERIAL('bulk-material_sand-coarse_generic',$,$); +#322=IFCLOCALPLACEMENT(#30,#323); +#323=IFCAXIS2PLACEMENT3D(#324,#325,#326); +#324=IFCCARTESIANPOINT((-2800.,-2800.,1300.)); +#325=IFCDIRECTION((0.,0.,1.)); +#326=IFCDIRECTION((1.,0.,0.)); +#327=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#328)); +#328=IFCTRIANGULATEDFACESET(#329,((0.007513022421054994,-0.00031244344452354084,-0.9999717280369456),(-0.04858406266717007,-0.012161989253673932,-0.9987450499863045),(-0.005154216278900322,0.029584184639518177,-0.9995490033378881),(-0.0037090124062605424,-0.03076059193945348,-0.9995198993569386),(-0.052982925958976815,-0.002629629006285744,-0.9985919560101189),(-0.04858406266717007,-0.012161989253673932,-0.9987450499863045),(0.007513022421054994,-0.00031244344452354084,-0.9999717280369456),(0.03664424287006994,-0.07448365854011851,-0.9965487364273553),(-0.04858406266717007,-0.012161989253673932,-0.9987450499863045),(-0.04858406266717007,-0.012161989253673932,-0.9987450499863045),(-0.052982925958976815,-0.002629629006285744,-0.9985919560101189),(-0.0747542897626788,0.04813608726997033,-0.9960395139071619),(0.03664424287006994,-0.07448365854011851,-0.9965487364273553),(-0.0037090124062605424,-0.03076059193945348,-0.9995198993569386),(-0.04858406266717007,-0.012161989253673932,-0.9987450499863045),(-0.04858406266717007,-0.012161989253673932,-0.9987450499863045),(-0.0747542897626788,0.04813608726997033,-0.9960395139071619),(-0.005154216278900322,0.029584184639518177,-0.9995490033378881),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(3.8673826046370475E-17,-3.342182497834653E-17,-1.),(-0.0747542897626788,0.04813608726997033,-0.9960395139071619),(-0.052982925958976815,-0.002629629006285744,-0.9985919560101189),(-0.005154216278900322,0.029584184639518177,-0.9995490033378881),(3.8673826046370475E-17,-3.342182497834653E-17,-1.),(0.007513022421054994,-0.00031244344452354084,-0.9999717280369456),(3.8673826046370475E-17,-3.342182497834653E-17,-1.),(-0.0037090124062605424,-0.03076059193945348,-0.9995198993569386),(3.8673826046370475E-17,-3.342182497834653E-17,-1.),(0.03664424287006994,-0.07448365854011851,-0.9965487364273553),(2.56256138040125E-17,-1.238146701442686E-17,-1.),(2.56256138040125E-17,-1.238146701442686E-17,-1.),(2.56256138040125E-17,-1.238146701442686E-17,-1.),(2.56256138040125E-17,-1.238146701442686E-17,-1.),(2.56256138040125E-17,-1.238146701442686E-17,-1.),(2.56256138040125E-17,-1.238146701442686E-17,-1.),(-1.5985181432499936E-14,-1.,6.015928496102163E-15),(-1.5985181432499936E-14,-1.,6.015928496102163E-15),(-1.5985181432499936E-14,-1.,6.015928496102163E-15),(-1.5985181432499936E-14,-1.,6.015928496102163E-15),(-1.,1.9250971187527647E-14,-1.5039821240256474E-15),(-1.,1.9250971187527647E-14,-1.5039821240256474E-15),(-1.,1.9250971187527647E-14,-1.5039821240256474E-15),(-1.,1.9250971187527647E-14,-1.5039821240256474E-15),(1.0777106191588747E-14,1.,6.015928496102246E-16),(1.0777106191588747E-14,1.,6.015928496102246E-16),(1.0777106191588747E-14,1.,6.015928496102246E-16),(1.0777106191588747E-14,1.,6.015928496102246E-16),(-2.5782550697580924E-16,-1.,6.015928496102182E-16),(-2.5782550697580924E-16,-1.,6.015928496102182E-16),(-2.5782550697580924E-16,-1.,6.015928496102182E-16),(-2.5782550697580924E-16,-1.,6.015928496102182E-16),(-1.,-6.974179963695519E-15,-1.0527874868178796E-15),(-1.,-6.974179963695519E-15,-1.0527874868178796E-15),(-1.,-6.974179963695519E-15,-1.0527874868178796E-15),(-1.,-6.974179963695519E-15,-1.0527874868178796E-15),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(-6.115014377214368E-15,1.,5.4573559046576526E-30),(-6.115014377214368E-15,1.,5.4573559046576526E-30),(-6.115014377214368E-15,1.,5.4573559046576526E-30),(-6.115014377214368E-15,1.,5.4573559046576526E-30),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,-6.277490604628178E-16,-2.4063713984408723E-15),(1.,-6.277490604628178E-16,-2.4063713984408723E-15),(1.,-6.277490604628178E-16,-2.4063713984408723E-15),(1.,-6.277490604628178E-16,-2.4063713984408723E-15),(-5.553164765633306E-16,1.,-1.203185699220436E-15),(-5.553164765633306E-16,1.,-1.203185699220436E-15),(-5.553164765633306E-16,1.,-1.203185699220436E-15),(-5.553164765633306E-16,1.,-1.203185699220436E-15)),$,((1,2,3),(4,5,6),(7,8,9),(10,11,12),(13,14,15),(16,17,18),(19,20,21),(20,19,22),(21,23,24),(23,21,20),(25,26,27),(26,25,28),(29,30,31),(30,29,32),(32,29,33),(32,33,34),(35,36,37),(36,35,29),(36,29,31),(37,36,38),(37,38,34),(37,34,33),(39,40,41),(40,39,42),(42,43,40),(43,42,44),(45,46,47),(46,45,48),(49,50,51),(50,49,52),(53,54,55),(54,53,56),(57,58,59),(58,57,60),(61,62,63),(62,61,64),(65,66,67),(66,65,68),(69,70,71),(70,69,72),(73,74,75),(74,73,76),(77,78,79),(78,77,80),(81,82,83),(82,81,84)),$); +#329=IFCCARTESIANPOINTLIST3D(((3662.324,800.,-550.),(2800.,800.,-598.692),(2800.,1248.138,-550.),(2800.,401.153,-550.),(2508.771,800.,-550.),(2800.,800.,-598.692),(3662.324,800.,-550.),(3034.54,565.46,-550.),(2800.,800.,-598.692),(2800.,800.,-598.692),(2508.771,800.,-550.),(2612.046,987.954,-550.),(3034.54,565.46,-550.),(2800.,401.153,-550.),(2800.,800.,-598.692),(2800.,800.,-598.692),(2612.046,987.954,-550.),(2800.,1248.138,-550.),(5250.,2150.,-250.),(4600.,4500.,-250.),(350.,2150.,-250.),(5250.,4500.,-250.),(4600.,5650.,-250.),(350.,5650.,-250.),(3850.,350.,-250.),(350.,1700.,-250.),(350.,350.,-250.),(3850.,1700.,-250.),(350.,1700.,-550.),(2612.046,987.954,-550.),(2508.771,800.,-550.),(2800.,1248.138,-550.),(3850.,1700.,-550.),(3662.324,800.,-550.),(350.,350.,-550.),(2800.,401.153,-550.),(3850.,350.,-550.),(3034.54,565.46,-550.),(4600.,5650.,-550.),(350.,2150.,-550.),(350.,5650.,-550.),(4600.,4500.,-550.),(5250.,2150.,-550.),(5250.,4500.,-550.),(3850.,350.,-550.),(350.,350.,-250.),(350.,350.,-550.),(3850.,350.,-250.),(350.,350.,-250.),(350.,1700.,-550.),(350.,350.,-550.),(350.,1700.,-250.),(350.,1700.,-250.),(3850.,1700.,-550.),(350.,1700.,-550.),(3850.,1700.,-250.),(5250.,2150.,-550.),(350.,2150.,-250.),(350.,2150.,-550.),(5250.,2150.,-250.),(350.,5650.,-250.),(350.,2150.,-550.),(350.,2150.,-250.),(350.,5650.,-550.),(3850.,1700.,-550.),(3850.,350.,-250.),(3850.,350.,-550.),(3850.,1700.,-250.),(350.,5650.,-250.),(4600.,5650.,-550.),(350.,5650.,-550.),(4600.,5650.,-250.),(5250.,4500.,-550.),(5250.,2150.,-250.),(5250.,2150.,-550.),(5250.,4500.,-250.),(4600.,5650.,-550.),(4600.,4500.,-250.),(4600.,4500.,-550.),(4600.,5650.,-250.),(4600.,4500.,-250.),(5250.,4500.,-550.),(4600.,4500.,-550.),(5250.,4500.,-250.))); +#330=IFCSTYLEDITEM(#328,(#333),$); +#331=IFCSURFACESTYLERENDERING(#332,0.,$,$,$,$,$,$,.NOTDEFINED.); +#332=IFCCOLOURRGB($,0.8588235294117647,0.7725490196078432,0.596078431372549); +#333=IFCSURFACESTYLE('bulk-material_sand-coarse_generic',.BOTH.,(#331)); +#334=IFCPRODUCTDEFINITIONSHAPE($,$,(#327)); +#335=IFCBUILDINGELEMENTPROXYTYPE('3mjKLn_DjE4Beriey9bTvr',#1,'origin','The local position for coordination of aspect models.',$,$,$,'1028017','origin',.USERDEFINED.); +#336=IFCRELDEFINESBYTYPE('21U96ixejDwQmHCVkbTd2U',#1,$,$,(#337),#335); +#337=IFCBUILDINGELEMENTPROXY('2F44QMqSH3TOkM$SZoqCBe',#1,'origin','The local position for coordination of aspect models.','origin',#340,#352,'454425.1027891.1032757',$); +#338=IFCRELASSOCIATESMATERIAL('1QcTgcyaP1C9MT3_T1ZeJj',#1,$,$,(#337),#339); +#339=IFCMATERIAL('virtual_white',$,$); +#340=IFCLOCALPLACEMENT(#30,#341); +#341=IFCAXIS2PLACEMENT3D(#342,#343,#344); +#342=IFCCARTESIANPOINT((-5800.,-5800.,1300.)); +#343=IFCDIRECTION((0.,0.,1.)); +#344=IFCDIRECTION((1.,0.,0.)); +#345=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#346)); +#346=IFCTRIANGULATEDFACESET(#347,((1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24)),$); +#347=IFCCARTESIANPOINTLIST3D(((1000.,1000.,0.),(1000.,0.,1000.),(1000.,0.,0.),(1000.,1000.,1000.),(0.,1000.,1000.),(1000.,1000.,0.),(0.,1000.,0.),(1000.,1000.,1000.),(1000.,1000.,0.),(0.,0.,0.),(0.,1000.,0.),(1000.,0.,0.),(0.,1000.,1000.),(0.,0.,0.),(0.,0.,1000.),(0.,1000.,0.),(1000.,0.,1000.),(0.,1000.,1000.),(0.,0.,1000.),(1000.,1000.,1000.),(1000.,0.,1000.),(0.,0.,0.),(1000.,0.,0.),(0.,0.,1000.))); +#348=IFCSTYLEDITEM(#346,(#351),$); +#349=IFCSURFACESTYLERENDERING(#350,0.,$,$,$,$,$,$,.NOTDEFINED.); +#350=IFCCOLOURRGB($,1.,1.,1.); +#351=IFCSURFACESTYLE('virtual_white',.BOTH.,(#349)); +#352=IFCPRODUCTDEFINITIONSHAPE($,$,(#345)); +#353=IFCBUILDINGELEMENTPROXYTYPE('2IpkHFcdnD3xuZl6H52fWn',#1,'geo-reference','The reference point for transforming the local engineering coordinate system into the coordinate reference system of the underlying map.',$,$,$,'1028019','origin',.USERDEFINED.); +#354=IFCRELDEFINESBYTYPE('3530pFWy94WO4ESJ$CWAXG',#1,$,$,(#355),#353); +#355=IFCBUILDINGELEMENTPROXY('3Fit2Fad92zf2f6aWdJtF5',#1,'geo-reference','The reference point for transforming the local engineering coordinate system into the coordinate reference system of the underlying map.','origin',#359,#371,'454425.1032696',$); +#356=IFCRELASSOCIATESMATERIAL('2EBkr99ef9S8X3ZQxjf56M',#1,$,$,(#355),#357); +#357=IFCMATERIAL('virtual_black',$,$); +#358=IFCRELCONTAINEDINSPATIALSTRUCTURE('0mkbJ67uX3HudxhK_f8TjF',#1,$,$,(#355),#21); +#359=IFCLOCALPLACEMENT(#23,#360); +#360=IFCAXIS2PLACEMENT3D(#361,#362,#363); +#361=IFCCARTESIANPOINT((0.,0.,0.)); +#362=IFCDIRECTION((0.,0.,1.)); +#363=IFCDIRECTION((1.,1.487416814333745E-17,0.)); +#364=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#365)); +#365=IFCTRIANGULATEDFACESET(#366,((-1.,7.21911462561536E-15,-2.8876462805389965E-13),(-1.,7.21911462561536E-15,-2.8876462805389965E-13),(-1.,7.21911462561536E-15,-2.8876462805389965E-13),(-1.,7.21911462561536E-15,-2.8876462805389965E-13),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-0.09801728974624706,0.9951847119559265,-2.8293428708776068E-14),(-0.19509039794774516,0.9807852652994898,-1.421516415386496E-14),(-0.09801728974624706,0.9951847119559265,-2.8293428708776068E-14),(-0.19509039794774516,0.9807852652994898,-1.421516415386496E-14),(-5.775291700492621E-14,1.,6.668325738175412E-26),(-5.775291700492621E-14,1.,6.668325738175412E-26),(-5.775291700492621E-14,1.,6.668325738175412E-26),(-5.775291700492621E-14,1.,6.668325738175412E-26),(-0.9951847119558951,0.09801728974656551,1.7414784486937357E-13),(-0.9807852652994783,0.19509039794780292,8.749523528380382E-14),(-0.9807852652994783,0.19509039794780292,8.749523528380382E-14),(-0.9951847119558951,0.09801728974656551,1.7414784486937357E-13),(0.38268339078040076,-0.9238795497362281,0.),(0.19509039794782512,-0.980785265299474,0.),(0.38268339078040076,-0.9238795497362281,0.),(0.19509039794782512,-0.980785265299474,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.9807852652994759,-0.1950903979478154,-4.900260093397033E-13),(0.9238795497362351,-0.3826833907803836,0.),(0.9238795497362351,-0.3826833907803836,0.),(0.9807852652994759,-0.1950903979478154,-4.900260093397033E-13),(0.9238795497362351,-0.3826833907803836,0.),(0.8314696223790943,-0.5555702179389808,0.),(0.8314696223790943,-0.5555702179389808,0.),(0.9238795497362351,-0.3826833907803836,0.),(0.9951847119559278,-0.09801728974623324,-9.75332807319653E-13),(0.9807852652994759,-0.1950903979478154,-4.900260093397033E-13),(0.9807852652994759,-0.1950903979478154,-4.900260093397033E-13),(0.9951847119559278,-0.09801728974623324,-9.75332807319653E-13),(0.5555702179389931,-0.8314696223790862,0.),(0.38268339078040076,-0.9238795497362281,0.),(0.5555702179389931,-0.8314696223790862,0.),(0.38268339078040076,-0.9238795497362281,0.),(0.7071067811865249,-0.7071067811865702,0.),(0.5555702179389931,-0.8314696223790862,0.),(0.7071067811865249,-0.7071067811865702,0.),(0.5555702179389931,-0.8314696223790862,0.),(-0.19509039794774516,0.9807852652994898,-1.421516415386496E-14),(-0.38268349542963814,0.9238795063890931,0.),(-0.19509039794774516,0.9807852652994898,-1.421516415386496E-14),(-0.38268349542963814,0.9238795063890931,0.),(0.8314696223790943,-0.5555702179389808,0.),(0.7071067811865249,-0.7071067811865702,0.),(0.7071067811865249,-0.7071067811865702,0.),(0.8314696223790943,-0.5555702179389808,0.),(-0.9807852652994783,0.19509039794780292,8.749523528380382E-14),(-0.9238795063891102,0.38268349542959684,0.),(-0.9238795063891102,0.38268349542959684,0.),(-0.9807852652994783,0.19509039794780292,8.749523528380382E-14),(0.19509039794782512,-0.980785265299474,0.),(0.09801728974630905,-0.9951847119559203,0.),(0.19509039794782512,-0.980785265299474,0.),(0.09801728974630905,-0.9951847119559203,0.),(0.9447142547101878,0.3278947650502742,0.),(0.9769903234900121,0.2132836322995312,0.),(0.9769903234900121,0.2132836322995312,0.),(0.9447142547101878,0.3278947650502742,0.),(0.8957596329165385,0.44453872726369803,0.),(0.9447142547101878,0.3278947650502742,0.),(0.9447142547101878,0.3278947650502742,0.),(0.8957596329165385,0.44453872726369803,0.),(0.36763569523471507,-0.9299698896143292,0.),(0.24649919644888388,-0.9691429957184104,0.),(0.36763569523471507,-0.9299698896143292,0.),(0.24649919644888388,-0.9691429957184104,0.),(0.4866110292734116,-0.8736187418945813,0.),(0.36763569523471507,-0.9299698896143292,0.),(0.4866110292734116,-0.8736187418945813,0.),(0.36763569523471507,-0.9299698896143292,0.),(-0.5218882328493185,-0.8530138758621781,0.),(-0.6371382701240347,-0.7707495214032589,0.),(-0.5218882328493185,-0.8530138758621781,0.),(-0.6371382701240347,-0.7707495214032589,0.),(0.9942464699972969,-0.10711655753390546,0.),(0.9752819685766632,-0.22096398296833067,0.),(0.9752819685766632,-0.22096398296833067,0.),(0.9942464699972969,-0.10711655753390546,0.),(0.9999995436725548,-0.0009553296197073197,0.),(0.9942464699972969,-0.10711655753390546,0.),(0.9942464699972969,-0.10711655753390546,0.),(0.9999995436725548,-0.0009553296197073197,0.),(-0.7284943753270046,0.6850517827996052,0.),(-0.8576732356667385,0.5141951194059969,0.),(-0.8576732356667385,0.5141951194059969,0.),(-0.7284943753270046,0.6850517827996052,0.),(-0.7284943753270046,0.6850517827996052,0.),(-0.5669105664485456,0.8237793452430021,0.),(-0.7284943753270046,0.6850517827996052,0.),(-0.5669105664485456,0.8237793452430021,0.),(-0.3790838524776873,0.9253623251411714,0.),(-0.1834995529945839,0.9830197933158762,0.),(-0.3790838524776873,0.9253623251411714,0.),(-0.1834995529945839,0.9830197933158762,0.),(-0.1834995529945839,0.9830197933158762,0.),(-0.012947889549911789,0.9999161725645823,0.),(-0.1834995529945839,0.9830197933158762,0.),(-0.012947889549911789,0.9999161725645823,0.),(-0.5669105664485456,0.8237793452430021,0.),(-0.3790838524776873,0.9253623251411714,0.),(-0.5669105664485456,0.8237793452430021,0.),(-0.3790838524776873,0.9253623251411714,0.),(0.25678560352314495,0.9664683925629717,0.),(0.38760898056242665,0.9218238867524298,0.),(0.25678560352314495,0.9664683925629717,0.),(0.38760898056242665,0.9218238867524298,0.),(-0.021878265380184617,-0.9997606421058765,0.),(0.18338909196229686,-0.9830404065699663,0.),(-0.021878265380184617,-0.9997606421058765,0.),(0.18338909196229686,-0.9830404065699663,0.),(-0.2724781561229833,-0.9621619689199004,0.),(-0.021878265380184617,-0.9997606421058765,0.),(-0.2724781561229833,-0.9621619689199004,0.),(-0.021878265380184617,-0.9997606421058765,0.),(0.9946569870411934,0.10323506250366385,0.),(0.9999995436725548,-0.0009553296197073197,0.),(0.9999995436725548,-0.0009553296197073197,0.),(0.9946569870411934,0.10323506250366385,0.),(0.817214458947544,-0.5763336950821748,0.),(0.7221689293892913,-0.6917167320693673,0.),(0.7221689293892913,-0.6917167320693673,0.),(0.817214458947544,-0.5763336950821748,0.),(0.8893220941653559,-0.45728132788180387,0.),(0.817214458947544,-0.5763336950821748,0.),(0.817214458947544,-0.5763336950821748,0.),(0.8893220941653559,-0.45728132788180387,0.),(-0.9882486706267435,0.15285471862024486,0.),(-0.9997961495365582,-0.02019057631352784,0.),(-0.9997961495365582,-0.02019057631352784,0.),(-0.9882486706267435,0.15285471862024486,0.),(-0.9447848469584931,0.32769130741845615,0.),(-0.9882486706267435,0.15285471862024486,0.),(-0.9882486706267435,0.15285471862024486,0.),(-0.9447848469584931,0.32769130741845615,0.),(0.38760898056242665,0.9218238867524298,0.),(0.5120817306320317,0.8589367270951357,0.),(0.38760898056242665,0.9218238867524298,0.),(0.5120817306320317,0.8589367270951357,0.),(0.9769903234900121,0.2132836322995312,0.),(0.9946569870411934,0.10323506250366385,0.),(0.9946569870411934,0.10323506250366385,0.),(0.9769903234900121,0.2132836322995312,0.),(0.9453223709696031,0.3261374172713214,0.),(0.8598493850403663,0.5105477793955271,0.),(0.8598493850403663,0.5105477793955271,0.),(0.9453223709696031,0.3261374172713214,0.),(0.8598493850403663,0.5105477793955271,0.),(0.7345761428927619,0.6785262635247017,0.),(0.7345761428927619,0.6785262635247017,0.),(0.8598493850403663,0.5105477793955271,0.),(-0.9997961495365582,-0.02019057631352784,0.),(-0.9746360240228631,-0.22379593534491413,0.),(-0.9746360240228631,-0.22379593534491413,0.),(-0.9997961495365582,-0.02019057631352784,0.),(-0.9746360240228631,-0.22379593534491413,0.),(-0.9088850097664936,-0.41704680675166556,0.),(-0.9088850097664936,-0.41704680675166556,0.),(-0.9746360240228631,-0.22379593534491413,0.),(-0.9088850097664936,-0.41704680675166556,0.),(-0.8301610356462975,-0.5575236810169295,0.),(-0.8301610356462975,-0.5575236810169295,0.),(-0.9088850097664936,-0.41704680675166556,0.),(0.9882991966281712,0.15252769566249838,0.),(0.9453223709696031,0.3261374172713214,0.),(0.9453223709696031,0.3261374172713214,0.),(0.9882991966281712,0.15252769566249838,0.),(-0.8576732356667385,0.5141951194059969,0.),(-0.9447848469584931,0.32769130741845615,0.),(-0.9447848469584931,0.32769130741845615,0.),(-0.8576732356667385,0.5141951194059969,0.),(0.9752819685766632,-0.22096398296833067,0.),(0.9408475861876066,-0.3388300747645555,0.),(0.9408475861876066,-0.3388300747645555,0.),(0.9752819685766632,-0.22096398296833067,0.),(-0.0008875531940973642,-0.9999996061245864,0.),(-0.12780975406149545,-0.991798702745038,0.),(-0.0008875531940973642,-0.9999996061245864,0.),(-0.12780975406149545,-0.991798702745038,0.),(0.12233197847190952,-0.9924892377467619,0.),(-0.0008875531940973642,-0.9999996061245864,0.),(0.12233197847190952,-0.9924892377467619,0.),(-0.0008875531940973642,-0.9999996061245864,0.),(0.24649919644888388,-0.9691429957184104,0.),(0.12233197847190952,-0.9924892377467619,0.),(0.24649919644888388,-0.9691429957184104,0.),(0.12233197847190952,-0.9924892377467619,0.),(0.5120817306320317,0.8589367270951357,0.),(0.6291972681526775,0.7772456482664974,0.),(0.5120817306320317,0.8589367270951357,0.),(0.6291972681526775,0.7772456482664974,0.),(0.7362866814501166,0.6766697294243142,0.),(0.8266452258336311,0.5627234406051209,0.),(0.8266452258336311,0.5627234406051209,0.),(0.7362866814501166,0.6766697294243142,0.),(0.8266452258336311,0.5627234406051209,0.),(0.8957596329165385,0.44453872726369803,0.),(0.8957596329165385,0.44453872726369803,0.),(0.8266452258336311,0.5627234406051209,0.),(-0.012947889549911789,0.9999161725645823,0.),(0.12580746189129235,0.9920546771889498,0.),(-0.012947889549911789,0.9999161725645823,0.),(0.12580746189129235,0.9920546771889498,0.),(0.12580746189129235,0.9920546771889498,0.),(0.25678560352314495,0.9664683925629717,0.),(0.12580746189129235,0.9920546771889498,0.),(0.25678560352314495,0.9664683925629717,0.),(0.9408475861876066,-0.3388300747645555,0.),(0.8893220941653559,-0.45728132788180387,0.),(0.8893220941653559,-0.45728132788180387,0.),(0.9408475861876066,-0.3388300747645555,0.),(0.6291972681526775,0.7772456482664974,0.),(0.7362866814501166,0.6766697294243142,0.),(0.6291972681526775,0.7772456482664974,0.),(0.7362866814501166,0.6766697294243142,0.),(-0.12780975406149545,-0.991798702745038,0.),(-0.26163236387882916,-0.9651676052226247,0.),(-0.12780975406149545,-0.991798702745038,0.),(-0.26163236387882916,-0.9651676052226247,0.),(-0.39586511141738157,-0.9183086700900217,0.),(-0.5218882328493185,-0.8530138758621781,0.),(-0.39586511141738157,-0.9183086700900217,0.),(-0.5218882328493185,-0.8530138758621781,0.),(-0.8301610356462975,-0.5575236810169295,0.),(-0.7414983772070644,-0.6709546606137334,0.),(-0.7414983772070644,-0.6709546606137334,0.),(-0.8301610356462975,-0.5575236810169295,0.),(-0.6371382701240347,-0.7707495214032589,0.),(-0.7414983772070644,-0.6709546606137334,0.),(-0.6371382701240347,-0.7707495214032589,0.),(-0.7414983772070644,-0.6709546606137334,0.),(-0.26163236387882916,-0.9651676052226247,0.),(-0.39586511141738157,-0.9183086700900217,0.),(-0.26163236387882916,-0.9651676052226247,0.),(-0.39586511141738157,-0.9183086700900217,0.),(0.9999861252731272,0.00526775675575694,0.),(0.9882991966281712,0.15252769566249838,0.),(0.9882991966281712,0.15252769566249838,0.),(0.9999861252731272,0.00526775675575694,0.),(0.6078907658149572,-0.7940206652454991,0.),(0.4866110292734116,-0.8736187418945813,0.),(0.6078907658149572,-0.7940206652454991,0.),(0.4866110292734116,-0.8736187418945813,0.),(0.0002958514360789271,0.9999999562359629,0.),(-0.19223371225305855,0.981349173267807,0.),(0.0002958514360789271,0.9999999562359629,0.),(-0.19223371225305855,0.981349173267807,0.),(0.19272392771065497,0.9812530191993186,0.),(0.0002958514360789271,0.9999999562359629,0.),(0.19272392771065497,0.9812530191993186,0.),(0.0002958514360789271,0.9999999562359629,0.),(0.9908086705656648,-0.13527075933807678,0.),(0.9999861252731272,0.00526775675575694,0.),(0.9999861252731272,0.00526775675575694,0.),(0.9908086705656648,-0.13527075933807678,0.),(0.9519163807811555,-0.3063579670916137,0.),(0.9908086705656648,-0.13527075933807678,0.),(0.9908086705656648,-0.13527075933807678,0.),(0.9519163807811555,-0.3063579670916137,0.),(0.7221689293892913,-0.6917167320693673,0.),(0.6078907658149572,-0.7940206652454991,0.),(0.7221689293892913,-0.6917167320693673,0.),(0.6078907658149572,-0.7940206652454991,0.),(0.7345761428927619,0.6785262635247017,0.),(0.578454045877275,0.8157149727743213,0.),(0.7345761428927619,0.6785262635247017,0.),(0.578454045877275,0.8157149727743213,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.9643985522083707,-0.2644530818470427,0.),(0.9643985522083707,-0.2644530818470427,0.),(0.9643985522083707,-0.2644530818470427,0.),(0.9643985522083707,-0.2644530818470427,0.),(-0.9625082715910013,0.27125233108473634,0.),(-0.9672095041928837,0.2539798712476175,0.),(-0.9672095041928837,0.2539798712476175,0.),(-0.9625082715910013,0.27125233108473634,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.9769988877805387,0.21324439799345352,0.),(0.9836499297931796,0.18009113142482358,0.),(0.9836499297931796,0.18009113142482358,0.),(0.9769988877805387,0.21324439799345352,0.),(-0.9731576010320436,0.23013970442658913,0.),(-0.9748015785129227,0.22307371545907045,0.),(-0.9748015785129227,0.22307371545907045,0.),(-0.9731576010320436,0.23013970442658913,0.),(0.9668351110436297,-0.25540138616157154,0.),(0.9633571078061799,-0.268222077464389,0.),(0.9633571078061799,-0.268222077464389,0.),(0.9668351110436297,-0.25540138616157154,0.),(0.9701425001453329,-0.24253562503632958,0.),(0.9668351110436297,-0.25540138616157154,0.),(0.9668351110436297,-0.25540138616157154,0.),(0.9701425001453329,-0.24253562503632958,0.),(-0.9649338002855462,-0.2624933543282454,0.),(-0.9638016856477805,-0.2666201619204687,0.),(-0.9638016856477805,-0.2666201619204687,0.),(-0.9649338002855462,-0.2624933543282454,0.),(0.9741171320751483,0.2260438298155657,0.),(0.9767827016489056,0.21423247596819933,0.),(0.9767827016489056,0.21423247596819933,0.),(0.9741171320751483,0.2260438298155657,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(-0.9672095041928837,0.2539798712476175,0.),(-0.9716008047066287,0.2366260262385175,0.),(-0.9716008047066287,0.2366260262385175,0.),(-0.9672095041928837,0.2539798712476175,0.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(-0.5361224862120472,-0.8441402014936934,0.),(-0.2724781561229833,-0.9621619689199004,0.),(-0.5361224862120472,-0.8441402014936934,0.),(-0.2724781561229833,-0.9621619689199004,0.),(-0.7584219831189418,-0.6517638341622919,0.),(-0.5361224862120472,-0.8441402014936934,0.),(-0.7584219831189418,-0.6517638341622919,0.),(-0.5361224862120472,-0.8441402014936934,0.),(-0.989607048477485,0.14379808623093912,0.),(-0.9501115102274097,0.31191043287038495,0.),(-0.9501115102274097,0.31191043287038495,0.),(-0.989607048477485,0.14379808623093912,0.),(-0.9501115102274097,0.31191043287038495,0.),(-0.8675425301753608,0.4973630045921526,0.),(-0.8675425301753608,0.4973630045921526,0.),(-0.9501115102274097,0.31191043287038495,0.),(0.5444171631195075,-0.8388146115208698,0.),(0.7089870822585878,-0.7052214667680322,0.),(0.5444171631195075,-0.8388146115208698,0.),(0.7089870822585878,-0.7052214667680322,0.),(0.7089870822585878,-0.7052214667680322,0.),(0.8581695987356767,-0.5133662823032382,0.),(0.8581695987356767,-0.5133662823032382,0.),(0.7089870822585878,-0.7052214667680322,0.),(-0.8675425301753608,0.4973630045921526,0.),(-0.7411781990788633,0.6713083324450941,0.),(-0.7411781990788633,0.6713083324450941,0.),(-0.8675425301753608,0.4973630045921526,0.),(-0.5817421295538566,0.8133732812811987,0.),(-0.7411781990788633,0.6713083324450941,0.),(-0.5817421295538566,0.8133732812811987,0.),(-0.7411781990788633,0.6713083324450941,0.),(0.8581695987356767,-0.5133662823032382,0.),(0.9519163807811555,-0.3063579670916137,0.),(0.9519163807811555,-0.3063579670916137,0.),(0.8581695987356767,-0.5133662823032382,0.),(0.370770082790638,-0.9287246877882721,0.),(0.5444171631195075,-0.8388146115208698,0.),(0.370770082790638,-0.9287246877882721,0.),(0.5444171631195075,-0.8388146115208698,0.),(0.18338909196229686,-0.9830404065699663,0.),(0.370770082790638,-0.9287246877882721,0.),(0.18338909196229686,-0.9830404065699663,0.),(0.370770082790638,-0.9287246877882721,0.),(0.578454045877275,0.8157149727743213,0.),(0.392800811108307,0.9196235766837736,0.),(0.578454045877275,0.8157149727743213,0.),(0.392800811108307,0.9196235766837736,0.),(0.392800811108307,0.9196235766837736,0.),(0.19272392771065497,0.9812530191993186,0.),(0.392800811108307,0.9196235766837736,0.),(0.19272392771065497,0.9812530191993186,0.),(-0.9079682524707186,-0.41903896299183185,0.),(-0.9807060117051631,-0.19548841041185108,0.),(-0.9807060117051631,-0.19548841041185108,0.),(-0.9079682524707186,-0.41903896299183185,0.),(-0.9807060117051631,-0.19548841041185108,0.),(-0.9999291486926968,-0.011903679880554852,0.),(-0.9999291486926968,-0.011903679880554852,0.),(-0.9807060117051631,-0.19548841041185108,0.),(-0.19223371225305855,0.981349173267807,0.),(-0.3935263597020274,0.9193133329935289,0.),(-0.19223371225305855,0.981349173267807,0.),(-0.3935263597020274,0.9193133329935289,0.),(-0.7584219831189418,-0.6517638341622919,0.),(-0.9079682524707186,-0.41903896299183185,0.),(-0.9079682524707186,-0.41903896299183185,0.),(-0.7584219831189418,-0.6517638341622919,0.),(-0.3935263597020274,0.9193133329935289,0.),(-0.5817421295538566,0.8133732812811987,0.),(-0.3935263597020274,0.9193133329935289,0.),(-0.5817421295538566,0.8133732812811987,0.),(-0.9999291486926968,-0.011903679880554852,0.),(-0.989607048477485,0.14379808623093912,0.),(-0.989607048477485,0.14379808623093912,0.),(-0.9999291486926968,-0.011903679880554852,0.),(-0.9714624054277151,0.23719358094307266,0.),(-0.9731576010320436,0.23013970442658913,0.),(-0.9731576010320436,0.23013970442658913,0.),(-0.9714624054277151,0.23719358094307266,0.),(-0.9665515520007026,-0.256472410455848,0.),(-0.9665515520007026,-0.256472410455848,0.),(-0.9665515520007026,-0.256472410455848,0.),(-0.9665515520007026,-0.256472410455848,0.),(-0.9660482448389756,-0.2583617398987992,0.),(-0.9649338002855462,-0.2624933543282454,0.),(-0.9649338002855462,-0.2624933543282454,0.),(-0.9660482448389756,-0.2583617398987992,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.9622060458243664,0.2723224657993486,0.),(0.965807041701975,0.25926194899923066,0.),(0.965807041701975,0.25926194899923066,0.),(0.9622060458243664,0.2723224657993486,0.),(0.965807041701975,0.25926194899923066,0.),(0.9769988877805387,0.21324439799345352,0.),(0.9769988877805387,0.21324439799345352,0.),(0.965807041701975,0.25926194899923066,0.),(0.9767827016489056,0.21423247596819933,0.),(0.9793050618474799,0.20238971278181062,0.),(0.9793050618474799,0.20238971278181062,0.),(0.9767827016489056,0.21423247596819933,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.8311604628836111,0.5560326293834755,0.),(0.8311604628836111,0.5560326293834755,0.),(0.8311604628836111,0.5560326293834755,0.),(0.8311604628836111,0.5560326293834755,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(-0.8313835216090105,-0.5556990552421339,0.),(-0.8313835216090105,-0.5556990552421339,0.),(-0.8313835216090105,-0.5556990552421339,0.),(-0.8313835216090105,-0.5556990552421339,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(0.9807852652994644,-0.19509039794787292,0.),(0.9951847119559052,-0.09801728974646383,0.),(0.9951847119559052,-0.09801728974646383,0.),(0.9807852652994644,-0.19509039794787292,0.),(-0.8314696169329316,0.5555702260897393,0.),(-0.7071067811865489,0.7071067811865461,0.),(-0.7071067811865489,0.7071067811865461,0.),(-0.8314696169329316,0.5555702260897393,0.),(-0.5555702260896939,0.8314696169329622,0.),(-0.7071067811865489,0.7071067811865461,0.),(-0.5555702260896939,0.8314696169329622,0.),(-0.7071067811865489,0.7071067811865461,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(0.38268349542964936,-0.9238795063890886,0.),(0.555570226089786,-0.8314696169329004,0.),(0.38268349542964936,-0.9238795063890886,0.),(0.555570226089786,-0.8314696169329004,0.),(0.19509039794791153,-0.9807852652994568,0.),(0.38268349542964936,-0.9238795063890886,0.),(0.19509039794791153,-0.9807852652994568,0.),(0.38268349542964936,-0.9238795063890886,0.),(0.09801728974643438,-0.9951847119559081,0.),(0.19509039794791153,-0.9807852652994568,0.),(0.09801728974643438,-0.9951847119559081,0.),(0.19509039794791153,-0.9807852652994568,0.),(-0.38268349542963814,0.9238795063890931,0.),(-0.5555702260896939,0.8314696169329622,0.),(-0.38268349542963814,0.9238795063890931,0.),(-0.5555702260896939,0.8314696169329622,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(-0.9238795063891102,0.38268349542959684,0.),(-0.8314696169329316,0.5555702260897393,0.),(-0.8314696169329316,0.5555702260897393,0.),(-0.9238795063891102,0.38268349542959684,0.),(-0.19509039794789132,0.9807852652994606,0.),(-0.09801728974637888,0.9951847119559135,0.),(-0.19509039794789132,0.9807852652994606,0.),(-0.09801728974637888,0.9951847119559135,0.),(-0.98078526529947,0.19509039794784488,0.),(-0.9951847119559265,0.09801728974624783,0.),(-0.9951847119559265,0.09801728974624783,0.),(-0.98078526529947,0.19509039794784488,0.),(0.9238795063891059,-0.3826834954296072,0.),(0.9807852652994644,-0.19509039794787292,0.),(0.9807852652994644,-0.19509039794787292,0.),(0.9238795063891059,-0.3826834954296072,0.),(0.7071067811865351,-0.70710678118656,0.),(0.8314696169328859,-0.5555702260898077,0.),(0.8314696169328859,-0.5555702260898077,0.),(0.7071067811865351,-0.70710678118656,0.),(0.8314696169328859,-0.5555702260898077,0.),(0.9238795063891059,-0.3826834954296072,0.),(0.9238795063891059,-0.3826834954296072,0.),(0.8314696169328859,-0.5555702260898077,0.),(-0.9238795497362213,0.3826833907804165,0.),(-0.98078526529947,0.19509039794784488,0.),(-0.98078526529947,0.19509039794784488,0.),(-0.9238795497362213,0.3826833907804165,0.),(-0.7071067811865286,0.7071067811865666,0.),(-0.5555702179389774,0.8314696223790966,0.),(-0.7071067811865286,0.7071067811865666,0.),(-0.5555702179389774,0.8314696223790966,0.),(-0.7071067811865286,0.7071067811865666,0.),(-0.8314696223790744,0.5555702179390106,0.),(-0.8314696223790744,0.5555702179390106,0.),(-0.7071067811865286,0.7071067811865666,0.),(-0.8314696223790744,0.5555702179390106,0.),(-0.9238795497362213,0.3826833907804165,0.),(-0.9238795497362213,0.3826833907804165,0.),(-0.8314696223790744,0.5555702179390106,0.),(-0.3826833907803875,0.9238795497362333,0.),(-0.19509039794789132,0.9807852652994606,0.),(-0.3826833907803875,0.9238795497362333,0.),(-0.19509039794789132,0.9807852652994606,0.),(-0.5555702179389774,0.8314696223790966,0.),(-0.3826833907803875,0.9238795497362333,0.),(-0.5555702179389774,0.8314696223790966,0.),(-0.3826833907803875,0.9238795497362333,0.),(0.555570226089786,-0.8314696169329004,0.),(0.7071067811865351,-0.70710678118656,0.),(0.555570226089786,-0.8314696169329004,0.),(0.7071067811865351,-0.70710678118656,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(-0.08709942068020388,0.9961996240298292,0.),(-0.08709942068020388,0.9961996240298292,0.),(-0.08709942068020388,0.9961996240298292,0.),(-0.08709942068020388,0.9961996240298292,0.),(0.9774618285571268,0.21111223013780628,0.),(0.9455208071073157,0.3255616736152011,0.),(0.9455208071073157,0.3255616736152011,0.),(0.9774618285571268,0.21111223013780628,0.),(0.9455208071073157,0.3255616736152011,0.),(0.82228120474033,0.5690813828713708,0.),(0.82228120474033,0.5690813828713708,0.),(0.9455208071073157,0.3255616736152011,0.),(0.82228120474033,0.5690813828713708,0.),(0.618991963670469,0.7853973191394131,0.),(0.618991963670469,0.7853973191394131,0.),(0.82228120474033,0.5690813828713708,0.),(0.618991963670469,0.7853973191394131,0.),(0.3996723632402599,0.9166580616903697,0.),(0.618991963670469,0.7853973191394131,0.),(0.3996723632402599,0.9166580616903697,0.),(0.3996723632402599,0.9166580616903697,0.),(0.19339585438116996,0.9811208098436082,0.),(0.3996723632402599,0.9166580616903697,0.),(0.19339585438116996,0.9811208098436082,0.),(0.19339585438116996,0.9811208098436082,0.),(0.006270084827264089,0.9999803428249272,0.),(0.19339585438116996,0.9811208098436082,0.),(0.006270084827264089,0.9999803428249272,0.),(0.006270084827264089,0.9999803428249272,0.),(-0.1706379345644615,0.9853337989166792,0.),(0.006270084827264089,0.9999803428249272,0.),(-0.1706379345644615,0.9853337989166792,0.),(-0.1706379345644615,0.9853337989166792,0.),(-0.36619292031781997,0.930538954106225,0.),(-0.1706379345644615,0.9853337989166792,0.),(-0.36619292031781997,0.930538954106225,0.),(-0.36619292031781997,0.930538954106225,0.),(-0.5897177588229777,0.8076094135959565,0.),(-0.36619292031781997,0.930538954106225,0.),(-0.5897177588229777,0.8076094135959565,0.),(-0.5897177588229777,0.8076094135959565,0.),(-0.8042639065180913,0.5942723017878747,0.),(-0.5897177588229777,0.8076094135959565,0.),(-0.8042639065180913,0.5942723017878747,0.),(-0.9500076370258789,0.3122266638077316,0.),(-0.8042639065180913,0.5942723017878747,0.),(-0.8042639065180913,0.5942723017878747,0.),(-0.9500076370258789,0.3122266638077316,0.),(-0.999998131781137,0.001932985834453788,0.),(-0.9500076370258789,0.3122266638077316,0.),(-0.9500076370258789,0.3122266638077316,0.),(-0.999998131781137,0.001932985834453788,0.),(-0.9482459825263331,-0.31753670122155864,0.),(-0.999998131781137,0.001932985834453788,0.),(-0.999998131781137,0.001932985834453788,0.),(-0.9482459825263331,-0.31753670122155864,0.),(-0.7856441637606142,-0.6186786305901356,0.),(-0.9482459825263331,-0.31753670122155864,0.),(-0.9482459825263331,-0.31753670122155864,0.),(-0.7856441637606142,-0.6186786305901356,0.),(-0.7856441637606142,-0.6186786305901356,0.),(-0.5602022188465279,-0.8283558860776129,0.),(-0.7856441637606142,-0.6186786305901356,0.),(-0.5602022188465279,-0.8283558860776129,0.),(-0.5602022188465279,-0.8283558860776129,0.),(-0.35572378115320674,-0.9345911360172776,5.525978220010001E-31),(-0.5602022188465279,-0.8283558860776129,0.),(-0.35572378115320674,-0.9345911360172776,5.525978220010001E-31),(-0.35572378115320674,-0.9345911360172776,5.525978220010001E-31),(-0.26435381846863887,-0.964425766278074,1.1000904274438964E-30),(-0.35572378115320674,-0.9345911360172776,5.525978220010001E-31),(-0.31792071801850086,-0.9481173013159294,5.509088677023133E-31),(-0.31792071801850086,-0.9481173013159294,5.509088677023133E-31),(-0.26435381846863887,-0.964425766278074,1.1000904274438964E-30),(-0.31792071801850086,-0.9481173013159294,5.509088677023133E-31),(-0.4669255000030771,-0.8842966569239514,0.),(-0.31792071801850086,-0.9481173013159294,5.509088677023133E-31),(-0.4669255000030771,-0.8842966569239514,0.),(-0.4669255000030771,-0.8842966569239514,0.),(-0.6627300222149948,-0.7488584096175408,0.),(-0.4669255000030771,-0.8842966569239514,0.),(-0.6627300222149948,-0.7488584096175408,0.),(-0.8433903094801822,-0.5373013920277173,0.),(-0.6627300222149948,-0.7488584096175408,0.),(-0.6627300222149948,-0.7488584096175408,0.),(-0.8433903094801822,-0.5373013920277173,0.),(-0.9619276929535128,-0.27330406789715506,0.),(-0.8433903094801822,-0.5373013920277173,0.),(-0.8433903094801822,-0.5373013920277173,0.),(-0.9619276929535128,-0.27330406789715506,0.),(-0.9999804818049974,0.006247880364198881,0.),(-0.9619276929535128,-0.27330406789715506,0.),(-0.9619276929535128,-0.27330406789715506,0.),(-0.9999804818049974,0.006247880364198881,0.),(-0.9572996684082709,0.2890974660307744,0.),(-0.9999804818049974,0.006247880364198881,0.),(-0.9999804818049974,0.006247880364198881,0.),(-0.9572996684082709,0.2890974660307744,0.),(-0.8306807534286091,0.5567490331228951,0.),(-0.9572996684082709,0.2890974660307744,0.),(-0.9572996684082709,0.2890974660307744,0.),(-0.8306807534286091,0.5567490331228951,0.),(-0.6269838321900799,0.779032267734939,0.),(-0.8306807534286091,0.5567490331228951,0.),(-0.8306807534286091,0.5567490331228951,0.),(-0.6269838321900799,0.779032267734939,0.),(-0.6269838321900799,0.779032267734939,0.),(-0.39405829076990984,0.9190854494961267,0.),(-0.6269838321900799,0.779032267734939,0.),(-0.39405829076990984,0.9190854494961267,0.),(-0.39405829076990984,0.9190854494961267,0.),(-0.18580751544945262,0.9825861627371422,0.),(-0.39405829076990984,0.9190854494961267,0.),(-0.18580751544945262,0.9825861627371422,0.),(-0.18580751544945262,0.9825861627371422,0.),(-0.0014495197728581503,0.9999989494456624,0.),(-0.18580751544945262,0.9825861627371422,0.),(-0.0014495197728581503,0.9999989494456624,0.),(-0.0014495197728581503,0.9999989494456624,0.),(0.18439541958058675,0.9828521400687388,0.),(-0.0014495197728581503,0.9999989494456624,0.),(0.18439541958058675,0.9828521400687388,0.),(0.18439541958058675,0.9828521400687388,0.),(0.397653234982458,0.9175357784348174,0.),(0.18439541958058675,0.9828521400687388,0.),(0.397653234982458,0.9175357784348174,0.),(0.397653234982458,0.9175357784348174,0.),(0.6311132446113388,0.7756907067099287,0.),(0.397653234982458,0.9175357784348174,0.),(0.6311132446113388,0.7756907067099287,0.),(0.6311132446113388,0.7756907067099287,0.),(0.8310893844718592,0.5561388630712533,0.),(0.8310893844718592,0.5561388630712533,0.),(0.6311132446113388,0.7756907067099287,0.),(0.8310893844718592,0.5561388630712533,0.),(0.9540840705660083,0.29953895621804594,0.),(0.9540840705660083,0.29953895621804594,0.),(0.8310893844718592,0.5561388630712533,0.),(0.9540840705660083,0.29953895621804594,0.),(0.9862299090912843,0.16538006655518403,0.),(0.9862299090912843,0.16538006655518403,0.),(0.9540840705660083,0.29953895621804594,0.),(0.07505650511901447,-0.9971792822954755,0.),(0.07505650511901447,-0.9971792822954755,0.),(0.07505650511901447,-0.9971792822954755,0.),(0.07505650511901447,-0.9971792822954755,0.),(-0.9176891922159813,-0.3972990642953742,0.),(-0.9655584237881841,-0.2601863375576772,0.),(-0.9655584237881841,-0.2601863375576772,0.),(-0.9176891922159813,-0.3972990642953742,0.),(-0.7878441680336847,-0.6158746356973238,0.),(-0.9176891922159813,-0.3972990642953742,0.),(-0.9176891922159813,-0.3972990642953742,0.),(-0.7878441680336847,-0.6158746356973238,0.),(-0.6319969860598306,-0.7749708443620899,0.),(-0.7878441680336847,-0.6158746356973238,0.),(-0.7878441680336847,-0.6158746356973238,0.),(-0.6319969860598306,-0.7749708443620899,0.),(-0.6319969860598306,-0.7749708443620899,0.),(-0.4492259604736119,-0.8934181755687317,0.),(-0.6319969860598306,-0.7749708443620899,0.),(-0.4492259604736119,-0.8934181755687317,0.),(-0.4492259604736119,-0.8934181755687317,0.),(-0.23786759998517135,-0.9712975882175836,0.),(-0.4492259604736119,-0.8934181755687317,0.),(-0.23786759998517135,-0.9712975882175836,0.),(-0.23786759998517135,-0.9712975882175836,0.),(-0.006729681688991534,-0.9999773554357945,0.),(-0.23786759998517135,-0.9712975882175836,0.),(-0.006729681688991534,-0.9999773554357945,0.),(-0.006729681688991534,-0.9999773554357945,0.),(0.21785673822142915,-0.9759807588326319,0.),(-0.006729681688991534,-0.9999773554357945,0.),(0.21785673822142915,-0.9759807588326319,0.),(0.21785673822142915,-0.9759807588326319,0.),(0.426740401850111,-0.9043741645075924,0.),(0.21785673822142915,-0.9759807588326319,0.),(0.426740401850111,-0.9043741645075924,0.),(0.426740401850111,-0.9043741645075924,0.),(0.6499756897148813,-0.7599550004965191,0.),(0.426740401850111,-0.9043741645075924,0.),(0.6499756897148813,-0.7599550004965191,0.),(0.6499756897148813,-0.7599550004965191,0.),(0.8920265571908663,-0.45198298780619,0.),(0.8920265571908663,-0.45198298780619,0.),(0.6499756897148813,-0.7599550004965191,0.),(0.8920265571908663,-0.45198298780619,0.),(0.9998122896310956,-0.019374867809258792,0.),(0.9998122896310956,-0.019374867809258792,0.),(0.8920265571908663,-0.45198298780619,0.),(0.9998122896310956,-0.019374867809258792,0.),(0.9150023212001752,0.40344857441598614,0.),(0.9150023212001752,0.40344857441598614,0.),(0.9998122896310956,-0.019374867809258792,0.),(0.9150023212001752,0.40344857441598614,0.),(0.6471347723667976,0.7623756202776772,0.),(0.6471347723667976,0.7623756202776772,0.),(0.9150023212001752,0.40344857441598614,0.),(0.6471347723667976,0.7623756202776772,0.),(0.36235316167200854,0.93204087154282,0.),(0.6471347723667976,0.7623756202776772,0.),(0.36235316167200854,0.93204087154282,0.),(0.36235316167200854,0.93204087154282,0.),(0.2550849049142149,0.9669186580498412,0.),(0.36235316167200854,0.93204087154282,0.),(0.2550849049142149,0.9669186580498412,0.),(0.2550849049142149,0.9669186580498412,0.),(0.28595039760148855,0.9582444208611657,0.),(0.2550849049142149,0.9669186580498412,0.),(0.28595039760148855,0.9582444208611657,0.),(0.28595039760148855,0.9582444208611657,0.),(0.42364706687595166,0.9058273360455641,0.),(0.28595039760148855,0.9582444208611657,0.),(0.42364706687595166,0.9058273360455641,0.),(0.42364706687595166,0.9058273360455641,0.),(0.6276382490359698,0.7785051241623668,0.),(0.42364706687595166,0.9058273360455641,0.),(0.6276382490359698,0.7785051241623668,0.),(0.6276382490359698,0.7785051241623668,0.),(0.8269599887954417,0.5622607730683717,0.),(0.8269599887954417,0.5622607730683717,0.),(0.6276382490359698,0.7785051241623668,0.),(0.8269599887954417,0.5622607730683717,0.),(0.9588699203284513,0.2838458664298454,0.),(0.9588699203284513,0.2838458664298454,0.),(0.8269599887954417,0.5622607730683717,0.),(0.9588699203284513,0.2838458664298454,0.),(0.9999875508055405,-0.004989813016214063,0.),(0.9999875508055405,-0.004989813016214063,0.),(0.9588699203284513,0.2838458664298454,0.),(0.9999875508055405,-0.004989813016214063,0.),(0.957401173102709,-0.2887611361342741,0.),(0.957401173102709,-0.2887611361342741,0.),(0.9999875508055405,-0.004989813016214063,0.),(0.957401173102709,-0.2887611361342741,0.),(0.835029876011192,-0.5502046039145194,0.),(0.835029876011192,-0.5502046039145194,0.),(0.957401173102709,-0.2887611361342741,0.),(0.835029876011192,-0.5502046039145194,0.),(0.644888194762835,-0.7642769238015314,0.),(0.644888194762835,-0.7642769238015314,0.),(0.835029876011192,-0.5502046039145194,0.),(0.644888194762835,-0.7642769238015314,0.),(0.42113746186410883,-0.9069968237070384,0.),(0.644888194762835,-0.7642769238015314,0.),(0.42113746186410883,-0.9069968237070384,0.),(0.42113746186410883,-0.9069968237070384,0.),(0.202992057833538,-0.9791803840235496,0.),(0.42113746186410883,-0.9069968237070384,0.),(0.202992057833538,-0.9791803840235496,0.),(0.202992057833538,-0.9791803840235496,0.),(0.008487459676545215,-0.9999639808654306,0.),(0.202992057833538,-0.9791803840235496,0.),(0.008487459676545215,-0.9999639808654306,0.),(0.008487459676545215,-0.9999639808654306,0.),(-0.17916273136199512,-0.9838194527914711,0.),(0.008487459676545215,-0.9999639808654306,0.),(-0.17916273136199512,-0.9838194527914711,0.),(-0.17916273136199512,-0.9838194527914711,0.),(-0.40107835149177207,-0.9160437522109098,0.),(-0.17916273136199512,-0.9838194527914711,0.),(-0.40107835149177207,-0.9160437522109098,0.),(-0.40107835149177207,-0.9160437522109098,0.),(-0.6388336480978726,-0.7693448966867615,0.),(-0.40107835149177207,-0.9160437522109098,0.),(-0.6388336480978726,-0.7693448966867615,0.),(-0.8340779567171348,-0.5516465916858089,0.),(-0.6388336480978726,-0.7693448966867615,0.),(-0.6388336480978726,-0.7693448966867615,0.),(-0.8340779567171348,-0.5516465916858089,0.),(-0.9557741620484655,-0.29410160006459296,0.),(-0.8340779567171348,-0.5516465916858089,0.),(-0.8340779567171348,-0.5516465916858089,0.),(-0.9557741620484655,-0.29410160006459296,0.),(-0.9876333514957574,-0.15678125848856422,0.),(-0.9557741620484655,-0.29410160006459296,0.),(-0.9557741620484655,-0.29410160006459296,0.),(-0.9876333514957574,-0.15678125848856422,0.)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(8,5,9),(9,5,10),(9,10,11),(11,10,12),(12,10,13),(12,13,14),(14,13,15),(15,13,16),(16,13,17),(16,17,18),(18,17,19),(19,17,20),(19,20,21),(19,21,22),(23,24,25),(24,23,26),(27,28,29),(28,27,30),(31,32,33),(32,31,34),(35,36,37),(36,35,38),(39,40,41),(40,39,42),(40,42,43),(40,43,44),(44,43,45),(44,45,46),(44,46,47),(47,46,48),(47,48,49),(47,49,50),(47,50,51),(51,50,52),(51,52,53),(51,53,54),(54,53,55),(55,53,56),(57,58,59),(58,57,60),(61,62,63),(62,61,64),(65,66,67),(66,65,68),(69,70,71),(70,69,72),(73,74,75),(74,73,76),(77,78,79),(78,77,80),(81,82,83),(82,81,84),(85,86,87),(86,85,88),(89,90,91),(90,89,92),(93,94,95),(94,93,96),(97,98,99),(98,97,100),(101,102,103),(102,101,104),(105,106,107),(106,105,108),(109,110,111),(110,109,112),(113,114,115),(114,113,116),(117,118,119),(118,117,120),(121,122,123),(122,121,124),(125,126,127),(126,125,128),(129,130,131),(130,129,132),(133,134,135),(134,133,136),(137,138,139),(138,137,140),(141,142,143),(142,141,144),(145,146,147),(146,145,148),(149,150,151),(150,149,152),(153,154,155),(154,153,156),(157,158,159),(158,157,160),(161,162,163),(162,161,164),(165,166,167),(166,165,168),(169,170,171),(170,169,172),(173,174,175),(174,173,176),(177,178,179),(178,177,180),(181,182,183),(182,181,184),(185,186,187),(186,185,188),(189,190,191),(190,189,192),(193,194,195),(194,193,196),(197,198,199),(198,197,200),(201,202,203),(202,201,204),(205,206,207),(206,205,208),(209,210,211),(210,209,212),(213,214,215),(214,213,216),(217,218,219),(218,217,220),(221,222,223),(222,221,224),(225,226,227),(226,225,228),(229,230,231),(230,229,232),(233,234,235),(234,233,236),(237,238,239),(238,237,240),(241,242,243),(242,241,244),(245,246,247),(246,245,248),(249,250,251),(250,249,252),(253,254,255),(254,253,256),(257,258,259),(258,257,260),(261,262,263),(262,261,264),(265,266,267),(266,265,268),(269,270,271),(270,269,272),(273,274,275),(274,273,276),(277,278,279),(278,277,280),(281,282,283),(282,281,284),(285,286,287),(286,285,288),(289,290,291),(290,289,292),(293,294,295),(294,293,296),(297,298,299),(298,297,300),(301,302,303),(302,301,304),(305,306,307),(306,305,308),(309,310,311),(310,309,312),(313,314,315),(314,313,316),(317,318,319),(318,317,320),(321,322,323),(322,321,324),(325,326,327),(326,325,328),(326,328,329),(329,328,330),(329,330,331),(331,330,332),(331,333,334),(333,331,332),(335,336,337),(336,335,338),(339,340,341),(340,339,342),(343,344,345),(344,343,346),(347,348,349),(348,347,350),(351,352,353),(352,351,354),(355,356,357),(356,355,358),(359,360,361),(360,359,362),(360,362,363),(360,363,364),(364,363,365),(364,365,366),(364,366,367),(367,366,368),(368,366,369),(368,369,370),(370,369,371),(371,369,372),(371,372,373),(371,373,374),(371,374,375),(375,374,376),(375,376,377),(375,377,378),(379,380,381),(380,379,382),(383,384,385),(384,383,386),(386,383,387),(387,383,388),(387,388,389),(389,388,390),(390,388,391),(390,391,392),(390,392,393),(393,392,394),(393,394,395),(393,395,396),(396,395,397),(397,395,398),(398,395,399),(398,399,400),(400,399,401),(401,399,402),(403,404,405),(404,403,406),(407,408,409),(408,407,410),(411,412,413),(412,411,414),(415,416,417),(416,415,418),(419,420,421),(420,419,422),(423,424,425),(424,423,426),(427,428,429),(428,427,430),(431,432,433),(432,431,434),(435,436,437),(436,435,438),(439,440,441),(440,439,442),(443,444,445),(444,443,446),(447,448,449),(448,447,450),(451,452,453),(452,451,454),(455,456,457),(456,455,458),(459,460,461),(460,459,462),(463,464,465),(464,463,466),(467,468,469),(468,467,470),(471,472,473),(472,471,474),(475,476,477),(476,475,478),(479,480,481),(480,479,482),(483,484,485),(484,483,486),(487,488,489),(488,487,490),(491,492,493),(492,491,494),(495,496,497),(496,495,498),(499,500,501),(500,499,502),(503,504,505),(504,503,506),(507,508,509),(508,507,510),(511,512,513),(512,511,514),(515,516,517),(516,515,518),(519,520,521),(520,519,522),(523,524,525),(524,523,526),(527,528,529),(528,527,530),(531,532,533),(532,531,534),(535,536,537),(536,535,538),(539,540,541),(540,539,542),(543,544,545),(544,543,546),(546,543,547),(547,543,540),(547,540,542),(548,544,546),(549,550,551),(550,549,552),(553,554,555),(554,553,556),(557,558,559),(558,557,560),(561,562,563),(562,561,564),(565,566,567),(566,565,568),(569,570,571),(570,569,572),(573,574,575),(574,573,576),(574,576,577),(574,577,578),(574,578,579),(574,579,580),(580,579,581),(581,579,582),(581,582,583),(583,582,584),(584,582,585),(585,582,586),(585,586,587),(587,586,588),(588,586,589),(588,589,590),(591,592,593),(592,591,594),(594,591,595),(595,591,596),(596,591,597),(597,591,598),(597,598,599),(597,599,600),(600,599,601),(600,601,602),(600,602,603),(600,603,604),(604,603,605),(604,605,606),(604,606,607),(607,606,608),(609,610,611),(610,609,612),(613,614,615),(614,613,616),(617,618,619),(618,617,620),(621,622,623),(622,621,624),(625,626,627),(626,625,628),(629,630,631),(630,629,632),(633,634,635),(634,633,636),(637,638,639),(638,637,640),(641,642,643),(642,641,644),(645,646,647),(646,645,648),(649,650,651),(650,649,652),(653,654,655),(654,653,656),(657,658,659),(658,657,660),(661,662,663),(662,661,664),(665,666,667),(666,665,668),(669,670,671),(670,669,672),(673,674,675),(674,673,676),(677,678,679),(678,677,680),(681,682,683),(682,681,684),(685,686,687),(686,685,688),(686,688,689),(689,688,690),(690,688,691),(691,688,692),(691,692,693),(693,692,694),(693,694,695),(695,694,696),(696,694,697),(696,697,698),(698,697,699),(698,699,700),(700,699,701),(700,701,702),(702,701,703),(702,703,704),(704,703,705),(704,705,706),(706,705,707),(706,707,708),(708,707,709),(708,709,710),(710,709,711),(711,709,712),(712,709,713),(712,713,714),(714,713,715),(714,715,716),(716,715,717),(716,717,718),(718,717,719),(718,719,720),(720,719,721),(720,721,722),(723,724,725),(724,723,726),(724,726,727),(727,726,728),(727,728,729),(729,728,685),(729,685,730),(730,685,687),(730,687,731),(730,731,732),(732,731,733),(732,733,734),(732,734,735),(735,734,736),(735,736,737),(737,736,738),(737,738,739),(739,738,740),(739,740,741),(739,741,742),(742,741,743),(742,743,744),(744,743,745),(744,745,746),(746,745,747),(747,745,748),(747,748,749),(749,748,750),(749,750,751),(751,750,752),(751,752,753),(753,752,754),(753,754,755),(753,755,711),(711,755,756),(711,756,710),(757,758,759),(758,757,760),(760,757,761),(760,761,762),(762,761,763),(762,763,764),(764,763,765),(764,765,766),(766,765,767),(767,765,768),(767,768,769),(769,768,770),(770,768,771),(770,771,772),(772,771,773),(772,773,774),(774,773,775),(774,775,776),(776,775,777),(777,775,778),(777,778,779),(779,778,780),(779,780,781),(781,780,782),(781,782,783),(781,783,784),(784,783,785),(784,785,786),(786,785,787),(786,787,788),(788,787,789),(788,789,790),(790,789,791),(791,789,792),(791,792,793),(793,792,794),(764,795,796),(795,764,766),(796,795,797),(796,797,798),(796,798,799),(796,799,800),(800,799,801),(800,801,802),(802,801,803),(802,803,804),(802,804,805),(805,804,806),(805,806,807),(807,806,808),(807,808,809),(809,808,810),(809,810,811),(811,810,812),(811,812,813),(813,812,814),(813,814,815),(815,814,816),(815,816,817),(817,816,794),(817,794,792),(817,792,818),(817,818,819),(819,818,820),(819,820,821),(821,820,822),(821,822,823),(823,822,824),(823,824,825),(825,824,826),(825,826,827),(827,826,828),(829,830,831),(830,829,832),(833,834,835),(834,833,836),(837,838,839),(838,837,840),(841,842,843),(842,841,844),(845,846,847),(846,845,848),(849,850,851),(850,849,852),(853,854,855),(854,853,856),(856,853,857),(857,853,858),(857,858,859),(859,858,860),(860,858,861),(861,858,862),(861,862,863),(861,863,864),(864,863,865),(864,865,866),(866,865,867),(867,865,868),(868,865,869),(868,869,870),(870,869,871),(871,869,872),(872,869,873),(872,873,874),(875,876,877),(876,875,878),(878,875,879),(878,879,880),(880,879,855),(880,855,881),(881,855,854),(881,854,882),(881,882,883),(881,883,884),(884,883,885),(884,885,886),(886,885,887),(886,887,888),(888,887,889),(888,889,890),(888,890,891),(891,890,892),(892,890,893),(892,893,894),(894,893,895),(895,893,896),(896,893,897),(897,893,898),(897,898,899),(899,898,900),(899,900,901),(902,903,904),(903,902,905),(905,902,906),(906,902,907),(906,907,908),(908,907,909),(908,909,910),(908,910,911),(911,910,912),(911,912,913),(911,913,914),(914,913,915),(914,915,916),(914,916,917),(917,916,918),(917,918,919),(919,918,920),(919,920,921),(919,921,896),(896,921,922),(896,922,895),(923,924,925),(924,923,926),(924,926,927),(924,927,928),(928,927,929),(928,929,930),(930,929,931),(931,929,932),(931,932,933),(933,932,934),(934,932,935),(934,935,936),(936,935,937),(937,935,938),(937,938,939),(939,938,940),(939,940,941),(941,940,942),(942,940,943),(942,943,944),(944,943,945),(946,947,948),(947,946,949),(947,949,950),(950,949,951),(950,951,952),(952,951,953),(952,953,954),(954,953,955),(955,953,956),(956,953,957),(956,957,958),(958,957,959),(958,959,960),(960,959,961),(960,961,962),(962,961,963),(963,961,964),(963,964,965),(963,965,966),(966,965,967),(966,967,945),(966,945,943),(966,943,968),(966,968,969),(969,968,970),(969,970,971),(971,970,972),(954,973,952),(973,954,974),(973,974,975),(973,975,976),(976,975,977),(976,977,978),(976,978,979),(976,979,980),(980,979,981),(981,979,982),(981,982,983),(983,982,984),(983,984,985),(983,985,986),(983,986,987),(987,986,988),(987,988,989),(987,989,990),(987,990,991),(991,990,992),(993,994,995),(994,993,996),(997,998,999),(998,997,1000),(1001,1002,1003),(1002,1001,1004),(1005,1006,1007),(1006,1005,1008),(1009,1010,1011),(1010,1009,1012),(1013,1014,1015),(1014,1013,1016),(1017,1018,1019),(1018,1017,1020),(1021,1022,1023),(1022,1021,1024),(1025,1026,1027),(1026,1025,1028),(1029,1030,1031),(1030,1029,1032),(1033,1034,1035),(1034,1033,1036),(1037,1038,1039),(1038,1037,1040),(1041,1042,1043),(1042,1041,1044),(1045,1046,1047),(1046,1045,1048),(1049,1050,1051),(1050,1049,1052),(1053,1054,1055),(1054,1053,1056),(1057,1058,1059),(1058,1057,1060),(1061,1062,1063),(1062,1061,1064),(1064,1061,1065),(1065,1061,1066),(1067,1068,1069),(1068,1067,1070),(1071,1072,1073),(1072,1071,1074),(1075,1076,1077),(1076,1075,1078),(1079,1080,1081),(1080,1079,1082),(1083,1084,1085),(1084,1083,1086),(1087,1088,1089),(1088,1087,1090),(1091,1092,1093),(1092,1091,1094),(1095,1096,1097),(1096,1095,1098),(1099,1100,1101),(1100,1099,1102),(1103,1104,1105),(1104,1103,1106),(1107,1108,1109),(1108,1107,1110),(1111,1112,1113),(1112,1111,1114),(1115,1116,1117),(1116,1115,1118),(1119,1120,1121),(1120,1119,1122),(1123,1124,1125),(1124,1123,1126),(1127,1128,1129),(1128,1127,1130),(1131,1132,1133),(1132,1131,1134),(1135,1136,1137),(1136,1135,1138),(1139,1140,1141),(1140,1139,1142),(1143,1144,1145),(1144,1143,1146),(1147,1148,1149),(1148,1147,1150),(1151,1152,1153),(1152,1151,1154),(1155,1156,1157),(1156,1155,1158),(1159,1160,1161),(1160,1159,1162),(1163,1164,1165),(1164,1163,1166),(1167,1168,1169),(1168,1167,1170),(1171,1172,1173),(1172,1171,1174),(1175,1176,1177),(1176,1175,1178),(1179,1180,1181),(1180,1179,1182),(1183,1184,1185),(1184,1183,1186),(1187,1188,1189),(1188,1187,1190),(1191,1192,1193),(1192,1191,1194),(1195,1196,1197),(1196,1195,1198),(1199,1200,1201),(1200,1199,1202),(1203,1204,1205),(1204,1203,1206),(1207,1208,1209),(1208,1207,1210),(1211,1212,1213),(1212,1211,1214),(1215,1216,1217),(1216,1215,1218),(1219,1220,1221),(1220,1219,1222),(1223,1224,1225),(1224,1223,1226),(1227,1228,1229),(1228,1227,1230),(1231,1232,1233),(1232,1231,1234),(1235,1236,1237),(1236,1235,1238),(1239,1240,1241),(1240,1239,1242),(1243,1244,1245),(1244,1243,1246),(1247,1248,1249),(1248,1247,1250),(1251,1252,1253),(1252,1251,1254),(1255,1256,1257),(1256,1255,1258),(1259,1260,1261),(1260,1259,1262),(1263,1264,1265),(1264,1263,1266),(1267,1268,1269),(1268,1267,1270)),$); +#366=IFCCARTESIANPOINTLIST3D(((0.3,-300.,5.),(0.3,-500.,0.),(0.3,-500.,5.),(0.3,-300.,0.),(97.845,-490.393,5.),(0.3,-300.,5.),(0.3,-500.,5.),(58.827,-294.236,5.),(115.105,-277.164,5.),(191.642,-461.94,5.),(166.971,-249.441,5.),(212.432,-212.132,5.),(278.085,-415.735,5.),(249.741,-166.671,5.),(277.464,-114.805,5.),(294.536,-58.527,5.),(353.853,-353.553,5.),(300.3,0.,5.),(500.3,0.,5.),(416.035,-277.785,5.),(462.24,-191.342,5.),(490.693,-97.545,5.),(0.3,-300.,5.),(58.827,-294.236,0.),(0.3,-300.,0.),(58.827,-294.236,5.),(300.3,0.,5.),(500.3,0.,0.),(300.3,0.,0.),(500.3,0.,5.),(300.3,0.,5.),(294.536,-58.527,0.),(294.536,-58.527,5.),(300.3,0.,0.),(191.642,-461.94,5.),(97.845,-490.393,0.),(191.642,-461.94,0.),(97.845,-490.393,5.),(0.3,-300.,0.),(97.845,-490.393,0.),(0.3,-500.,0.),(58.827,-294.236,0.),(115.105,-277.164,0.),(191.642,-461.94,0.),(166.971,-249.441,0.),(212.432,-212.132,0.),(278.085,-415.735,0.),(249.741,-166.671,0.),(277.464,-114.805,0.),(294.536,-58.527,0.),(353.853,-353.553,0.),(300.3,0.,0.),(500.3,0.,0.),(416.035,-277.785,0.),(462.24,-191.342,0.),(490.693,-97.545,0.),(490.693,-97.545,0.),(462.24,-191.342,5.),(462.24,-191.342,0.),(490.693,-97.545,5.),(462.24,-191.342,0.),(416.035,-277.785,5.),(416.035,-277.785,0.),(462.24,-191.342,5.),(500.3,0.,0.),(490.693,-97.545,5.),(490.693,-97.545,0.),(500.3,0.,5.),(278.085,-415.735,5.),(191.642,-461.94,0.),(278.085,-415.735,0.),(191.642,-461.94,5.),(353.853,-353.553,5.),(278.085,-415.735,0.),(353.853,-353.553,0.),(278.085,-415.735,5.),(58.827,-294.236,5.),(115.105,-277.164,0.),(58.827,-294.236,0.),(115.105,-277.164,5.),(416.035,-277.785,0.),(353.853,-353.553,5.),(353.853,-353.553,0.),(416.035,-277.785,5.),(294.536,-58.527,5.),(277.464,-114.805,0.),(277.464,-114.805,5.),(294.536,-58.527,0.),(97.845,-490.393,5.),(0.3,-500.,0.),(97.845,-490.393,0.),(0.3,-500.,5.),(877.313,53.797,0.),(881.793,37.789,5.),(881.793,37.789,0.),(877.313,53.797,5.),(871.041,68.83,0.),(877.313,53.797,5.),(877.313,53.797,0.),(871.041,68.83,5.),(813.425,-115.375,5.),(798.774,-120.117,0.),(813.425,-115.375,0.),(798.774,-120.117,5.),(827.53,-108.736,5.),(813.425,-115.375,0.),(827.53,-108.736,0.),(813.425,-115.375,5.),(705.8,-107.143,5.),(692.962,-97.994,0.),(705.8,-107.143,0.),(692.962,-97.994,5.),(884.434,-15.353,0.),(881.604,-32.57,5.),(881.604,-32.57,0.),(884.434,-15.353,5.),(885.377,2.85,0.),(884.434,-15.353,5.),(884.434,-15.353,0.),(885.377,2.85,5.),(683.164,95.825,5.),(668.786,76.852,0.),(668.786,76.852,5.),(683.164,95.825,0.),(683.164,95.825,5.),(700.79,110.973,0.),(683.164,95.825,0.),(700.79,110.973,5.),(720.806,121.793,5.),(743.212,128.285,0.),(720.806,121.793,0.),(743.212,128.285,5.),(743.212,128.285,5.),(768.006,130.449,0.),(743.212,128.285,0.),(768.006,130.449,5.),(700.79,110.973,5.),(720.806,121.793,0.),(700.79,110.973,0.),(720.806,121.793,5.),(800.367,126.383,5.),(815.29,121.301,0.),(800.367,126.383,0.),(815.29,121.301,5.),(768.174,102.448,5.),(751.506,100.965,0.),(768.174,102.448,0.),(751.506,100.965,5.),(791.292,99.367,5.),(768.174,102.448,0.),(791.292,99.367,0.),(768.174,102.448,5.),(884.481,20.807,0.),(885.377,2.85,5.),(885.377,2.85,0.),(884.481,20.807,5.),(861.955,-77.91,0.),(852.052,-89.977,5.),(852.052,-89.977,0.),(861.955,-77.91,5.),(870.287,-64.051,0.),(861.955,-77.91,5.),(861.955,-77.91,0.),(870.287,-64.051,5.),(652.354,28.939,5.),(650.3,0.,0.),(650.3,0.,5.),(652.354,28.939,0.),(658.516,54.557,5.),(652.354,28.939,0.),(652.354,28.939,5.),(658.516,54.557,0.),(815.29,121.301,5.),(829.374,114.185,0.),(815.29,121.301,0.),(829.374,114.185,5.),(881.793,37.789,0.),(884.481,20.807,5.),(884.481,20.807,0.),(881.793,37.789,5.),(689.808,-40.22,0.),(697.275,-56.542,5.),(697.275,-56.542,0.),(689.808,-40.22,5.),(697.275,-56.542,0.),(707.728,-70.506,5.),(707.728,-70.506,0.),(697.275,-56.542,5.),(650.3,0.,5.),(653.821,-31.522,0.),(653.821,-31.522,5.),(650.3,0.,0.),(653.821,-31.522,5.),(664.385,-61.368,0.),(664.385,-61.368,5.),(653.821,-31.522,0.),(664.385,-61.368,5.),(672.255,-75.107,0.),(672.255,-75.107,5.),(664.385,-61.368,0.),(685.328,-21.541,0.),(689.808,-40.22,5.),(689.808,-40.22,0.),(685.328,-21.541,5.),(668.786,76.852,5.),(658.516,54.557,0.),(658.516,54.557,5.),(668.786,76.852,0.),(881.604,-32.57,0.),(876.889,-48.803,5.),(876.889,-48.803,0.),(881.604,-32.57,5.),(767.839,-123.91,5.),(750.946,-122.862,0.),(767.839,-123.91,0.),(750.946,-122.862,5.),(783.579,-122.962,5.),(767.839,-123.91,0.),(783.579,-122.962,0.),(767.839,-123.91,5.),(798.774,-120.117,5.),(783.579,-122.962,0.),(798.774,-120.117,0.),(783.579,-122.962,5.),(829.374,114.185,5.),(842.228,105.251,0.),(829.374,114.185,0.),(842.228,105.251,5.),(853.456,94.714,0.),(863.061,82.574,5.),(863.061,82.574,0.),(853.456,94.714,5.),(863.061,82.574,0.),(871.041,68.83,5.),(871.041,68.83,0.),(863.061,82.574,5.),(768.006,130.449,5.),(784.606,129.433,0.),(768.006,130.449,0.),(784.606,129.433,5.),(784.606,129.433,5.),(800.367,126.383,0.),(784.606,129.433,0.),(800.367,126.383,5.),(876.889,-48.803,0.),(870.287,-64.051,5.),(870.287,-64.051,0.),(876.889,-48.803,5.),(842.228,105.251,5.),(853.456,94.714,0.),(842.228,105.251,0.),(853.456,94.714,5.),(750.946,-122.862,5.),(734.975,-119.718,0.),(750.946,-122.862,0.),(734.975,-119.718,5.),(719.926,-114.479,5.),(705.8,-107.143,0.),(719.926,-114.479,0.),(705.8,-107.143,5.),(672.255,-75.107,5.),(681.781,-87.316,0.),(681.781,-87.316,5.),(672.255,-75.107,0.),(692.962,-97.994,5.),(681.781,-87.316,0.),(692.962,-97.994,0.),(681.781,-87.316,5.),(734.975,-119.718,5.),(719.926,-114.479,0.),(734.975,-119.718,0.),(719.926,-114.479,5.),(683.835,-0.503,0.),(685.328,-21.541,5.),(685.328,-21.541,0.),(683.835,-0.503,5.),(840.577,-100.253,5.),(827.53,-108.736,0.),(840.577,-100.253,0.),(827.53,-108.736,5.),(767.671,-96.076,5.),(785.219,-94.463,0.),(767.671,-96.076,0.),(785.219,-94.463,5.),(750.406,-94.478,5.),(767.671,-96.076,0.),(750.406,-94.478,0.),(767.671,-96.076,5.),(685.391,25.261,0.),(683.835,-0.503,5.),(683.835,-0.503,0.),(685.391,25.261,5.),(690.059,47.053,0.),(685.391,25.261,5.),(685.391,25.261,0.),(690.059,47.053,5.),(852.052,-89.977,5.),(840.577,-100.253,0.),(852.052,-89.977,0.),(840.577,-100.253,5.),(707.728,-70.506,5.),(720.434,-81.693,0.),(707.728,-70.506,0.),(720.434,-81.693,5.),(-867.339,-122.904,5.),(-900.538,-122.904,0.),(-867.339,-122.904,0.),(-900.538,-122.904,5.),(-717.104,-122.904,5.),(-748.459,-122.904,0.),(-717.104,-122.904,0.),(-748.459,-122.904,5.),(-649.7,122.904,0.),(-717.104,-122.904,5.),(-717.104,-122.904,0.),(-649.7,122.904,5.),(-826.762,122.904,5.),(-873.543,-43.092,0.),(-873.543,-43.092,5.),(-826.762,122.904,0.),(-64.254,843.159,0.),(-64.254,650.,5.),(-64.254,650.,0.),(-64.254,843.159,5.),(-64.254,650.,5.),(-95.441,895.808,5.),(-95.441,650.,5.),(-64.254,843.159,5.),(-62.074,895.808,5.),(64.854,650.,5.),(67.034,702.817,5.),(98.221,650.,5.),(98.221,895.808,5.),(67.034,895.808,5.),(-740.914,-46.403,0.),(-733.201,-88.531,5.),(-733.201,-88.531,0.),(-740.914,-46.403,5.),(-720.961,-35.044,5.),(-733.201,-88.531,0.),(-733.201,-88.531,5.),(-720.961,-35.044,0.),(-815.193,64.386,0.),(-867.339,-122.904,5.),(-867.339,-122.904,0.),(-815.193,64.386,5.),(-807.983,93.226,0.),(-815.193,64.386,5.),(-815.193,64.386,0.),(-807.983,93.226,5.),(-800.27,64.386,5.),(-748.459,-122.904,0.),(-748.459,-122.904,5.),(-800.27,64.386,0.),(-932.396,122.904,0.),(-895.005,-38.229,5.),(-895.005,-38.229,0.),(-932.396,122.904,5.),(-932.396,122.904,0.),(-900.538,-122.904,0.),(-965.763,122.904,0.),(-895.005,-38.229,0.),(-884.609,-88.531,0.),(-867.339,-122.904,0.),(-873.543,-43.092,0.),(-826.762,122.904,0.),(-815.193,64.386,0.),(-807.983,93.226,0.),(-787.527,122.904,0.),(-800.27,64.386,0.),(-748.459,-122.904,0.),(-752.316,-1.509,0.),(-740.914,-46.403,0.),(-733.201,-88.531,0.),(-717.104,-122.904,0.),(-720.961,-35.044,0.),(-682.396,122.904,0.),(-649.7,122.904,0.),(-873.543,-43.092,5.),(-884.609,-88.531,0.),(-884.609,-88.531,5.),(-873.543,-43.092,0.),(-900.538,-122.904,5.),(-932.396,122.904,5.),(-965.763,122.904,5.),(-895.005,-38.229,5.),(-884.609,-88.531,5.),(-867.339,-122.904,5.),(-873.543,-43.092,5.),(-826.762,122.904,5.),(-815.193,64.386,5.),(-807.983,93.226,5.),(-787.527,122.904,5.),(-800.27,64.386,5.),(-748.459,-122.904,5.),(-752.316,-1.509,5.),(-740.914,-46.403,5.),(-733.201,-88.531,5.),(-717.104,-122.904,5.),(-720.961,-35.044,5.),(-682.396,122.904,5.),(-649.7,122.904,5.),(812.02,90.124,5.),(791.292,99.367,0.),(812.02,90.124,0.),(791.292,99.367,5.),(829.207,75.285,5.),(812.02,90.124,0.),(829.207,75.285,0.),(812.02,90.124,5.),(850.36,-19.356,5.),(845.911,-39.026,0.),(845.911,-39.026,5.),(850.36,-19.356,0.),(845.911,-39.026,5.),(838.497,-55.992,0.),(838.497,-55.992,5.),(845.911,-39.026,0.),(721.786,89.102,5.),(708.734,78.722,0.),(721.786,89.102,0.),(708.734,78.722,5.),(708.734,78.722,0.),(697.84,64.874,5.),(697.84,64.874,0.),(708.734,78.722,5.),(838.497,-55.992,5.),(828.117,-70.255,0.),(828.117,-70.255,5.),(838.497,-55.992,0.),(815.442,-81.552,5.),(828.117,-70.255,0.),(815.442,-81.552,0.),(828.117,-70.255,5.),(697.84,64.874,0.),(690.059,47.053,5.),(690.059,47.053,0.),(697.84,64.874,5.),(736.044,96.517,5.),(721.786,89.102,0.),(736.044,96.517,0.),(721.786,89.102,5.),(751.506,100.965,5.),(736.044,96.517,0.),(751.506,100.965,0.),(736.044,96.517,5.),(720.434,-81.693,5.),(734.66,-89.684,0.),(720.434,-81.693,0.),(734.66,-89.684,5.),(734.66,-89.684,5.),(750.406,-94.478,0.),(734.66,-89.684,0.),(750.406,-94.478,5.),(841.698,55.416,5.),(849.307,31.124,0.),(849.307,31.124,5.),(841.698,55.416,0.),(849.307,31.124,5.),(851.843,3.018,0.),(851.843,3.018,5.),(849.307,31.124,0.),(785.219,-94.463,5.),(801.143,-89.621,0.),(785.219,-94.463,0.),(801.143,-89.621,5.),(829.207,75.285,5.),(841.698,55.416,0.),(841.698,55.416,5.),(829.207,75.285,0.),(801.143,-89.621,5.),(815.442,-81.552,0.),(801.143,-89.621,0.),(815.442,-81.552,5.),(851.843,3.018,5.),(850.36,-19.356,0.),(850.36,-19.356,5.),(851.843,3.018,0.),(-682.396,122.904,5.),(-720.961,-35.044,0.),(-720.961,-35.044,5.),(-682.396,122.904,0.),(-965.763,122.904,5.),(-900.538,-122.904,0.),(-900.538,-122.904,5.),(-965.763,122.904,0.),(-807.983,93.226,5.),(-800.27,64.386,0.),(-800.27,64.386,5.),(-807.983,93.226,0.),(-826.762,122.904,5.),(-787.527,122.904,0.),(-826.762,122.904,0.),(-787.527,122.904,5.),(-682.396,122.904,5.),(-649.7,122.904,0.),(-682.396,122.904,0.),(-649.7,122.904,5.),(-787.527,122.904,0.),(-752.316,-1.509,5.),(-752.316,-1.509,0.),(-787.527,122.904,5.),(-752.316,-1.509,0.),(-740.914,-46.403,5.),(-740.914,-46.403,0.),(-752.316,-1.509,5.),(-895.005,-38.229,0.),(-884.609,-88.531,5.),(-884.609,-88.531,0.),(-895.005,-38.229,5.),(-965.763,122.904,5.),(-932.396,122.904,0.),(-965.763,122.904,0.),(-932.396,122.904,5.),(67.034,895.808,5.),(98.221,895.808,0.),(67.034,895.808,0.),(98.221,895.808,5.),(67.034,895.808,5.),(67.034,702.817,0.),(67.034,702.817,5.),(67.034,895.808,0.),(-95.441,895.808,5.),(-95.441,650.,0.),(-95.441,650.,5.),(-95.441,895.808,0.),(-64.254,650.,5.),(-95.441,650.,0.),(-64.254,650.,0.),(-95.441,650.,5.),(-95.441,895.808,5.),(-62.074,895.808,0.),(-95.441,895.808,0.),(-62.074,895.808,5.),(-62.074,895.808,0.),(67.034,702.817,5.),(67.034,702.817,0.),(-62.074,895.808,5.),(98.221,895.808,0.),(67.034,702.817,0.),(67.034,895.808,0.),(98.221,650.,0.),(-62.074,895.808,0.),(-95.441,650.,0.),(-95.441,895.808,0.),(-64.254,843.159,0.),(64.854,650.,0.),(-64.254,650.,0.),(98.221,650.,5.),(64.854,650.,0.),(98.221,650.,0.),(64.854,650.,5.),(-64.254,843.159,5.),(64.854,650.,0.),(64.854,650.,5.),(-64.254,843.159,0.),(98.221,895.808,0.),(98.221,650.,5.),(98.221,650.,0.),(98.221,895.808,5.),(-293.936,58.527,0.),(-299.7,0.,5.),(-299.7,0.,0.),(-293.936,58.527,5.),(249.741,-166.671,5.),(212.432,-212.132,0.),(212.432,-212.132,5.),(249.741,-166.671,0.),(166.971,-249.441,5.),(212.432,-212.132,0.),(166.971,-249.441,0.),(212.432,-212.132,5.),(-490.093,97.545,0.),(-299.7,0.,0.),(-499.7,0.,0.),(-461.64,191.342,0.),(-415.435,277.785,0.),(-353.253,353.553,0.),(-277.485,415.735,0.),(-293.936,58.527,0.),(-276.864,114.805,0.),(-191.042,461.94,0.),(-249.141,166.671,0.),(-211.832,212.132,0.),(-166.371,249.441,0.),(-97.245,490.393,0.),(-114.505,277.164,0.),(-58.227,294.236,0.),(0.3,500.,0.),(0.3,300.,0.),(-299.7,0.,5.),(-490.093,97.545,5.),(-499.7,0.,5.),(-461.64,191.342,5.),(-415.435,277.785,5.),(-353.253,353.553,5.),(-277.485,415.735,5.),(-293.936,58.527,5.),(-276.864,114.805,5.),(-191.042,461.94,5.),(-249.141,166.671,5.),(-211.832,212.132,5.),(-166.371,249.441,5.),(-97.245,490.393,5.),(-114.505,277.164,5.),(-58.227,294.236,5.),(0.3,500.,5.),(0.3,300.,5.),(0.3,500.,0.),(0.3,300.,5.),(0.3,300.,0.),(0.3,500.,5.),(-114.505,277.164,5.),(-166.371,249.441,0.),(-114.505,277.164,0.),(-166.371,249.441,5.),(-58.227,294.236,5.),(-114.505,277.164,0.),(-58.227,294.236,0.),(-114.505,277.164,5.),(0.3,300.,5.),(-58.227,294.236,0.),(0.3,300.,0.),(-58.227,294.236,5.),(115.105,-277.164,5.),(166.971,-249.441,0.),(115.105,-277.164,0.),(166.971,-249.441,5.),(-299.7,0.,5.),(-499.7,0.,0.),(-299.7,0.,0.),(-499.7,0.,5.),(277.464,-114.805,5.),(249.741,-166.671,0.),(249.741,-166.671,5.),(277.464,-114.805,0.),(-97.245,490.393,5.),(0.3,500.,0.),(-97.245,490.393,0.),(0.3,500.,5.),(-490.093,97.545,5.),(-499.7,0.,0.),(-499.7,0.,5.),(-490.093,97.545,0.),(-276.864,114.805,0.),(-293.936,58.527,5.),(-293.936,58.527,0.),(-276.864,114.805,5.),(-211.832,212.132,0.),(-249.141,166.671,5.),(-249.141,166.671,0.),(-211.832,212.132,5.),(-249.141,166.671,0.),(-276.864,114.805,5.),(-276.864,114.805,0.),(-249.141,166.671,5.),(-461.64,191.342,5.),(-490.093,97.545,0.),(-490.093,97.545,5.),(-461.64,191.342,0.),(-353.253,353.553,5.),(-277.485,415.735,0.),(-353.253,353.553,0.),(-277.485,415.735,5.),(-353.253,353.553,5.),(-415.435,277.785,0.),(-415.435,277.785,5.),(-353.253,353.553,0.),(-415.435,277.785,5.),(-461.64,191.342,0.),(-461.64,191.342,5.),(-415.435,277.785,0.),(-191.042,461.94,5.),(-97.245,490.393,0.),(-191.042,461.94,0.),(-97.245,490.393,5.),(-277.485,415.735,5.),(-191.042,461.94,0.),(-277.485,415.735,0.),(-191.042,461.94,5.),(-166.371,249.441,5.),(-211.832,212.132,0.),(-166.371,249.441,0.),(-211.832,212.132,5.),(683.164,95.825,0.),(685.391,25.261,0.),(683.835,-0.503,0.),(700.79,110.973,0.),(690.059,47.053,0.),(697.84,64.874,0.),(708.734,78.722,0.),(720.806,121.793,0.),(721.786,89.102,0.),(743.212,128.285,0.),(736.044,96.517,0.),(751.506,100.965,0.),(768.006,130.449,0.),(768.174,102.448,0.),(784.606,129.433,0.),(791.292,99.367,0.),(800.367,126.383,0.),(812.02,90.124,0.),(815.29,121.301,0.),(829.207,75.285,0.),(829.374,114.185,0.),(841.698,55.416,0.),(842.228,105.251,0.),(849.307,31.124,0.),(853.456,94.714,0.),(851.843,3.018,0.),(852.052,-89.977,0.),(861.955,-77.91,0.),(863.061,82.574,0.),(870.287,-64.051,0.),(871.041,68.83,0.),(876.889,-48.803,0.),(877.313,53.797,0.),(881.604,-32.57,0.),(881.793,37.789,0.),(884.434,-15.353,0.),(884.481,20.807,0.),(885.377,2.85,0.),(652.354,28.939,0.),(653.821,-31.522,0.),(650.3,0.,0.),(658.516,54.557,0.),(664.385,-61.368,0.),(668.786,76.852,0.),(672.255,-75.107,0.),(681.781,-87.316,0.),(685.328,-21.541,0.),(692.962,-97.994,0.),(689.808,-40.22,0.),(697.275,-56.542,0.),(705.8,-107.143,0.),(707.728,-70.506,0.),(719.926,-114.479,0.),(720.434,-81.693,0.),(734.975,-119.718,0.),(734.66,-89.684,0.),(750.406,-94.478,0.),(750.946,-122.862,0.),(767.671,-96.076,0.),(767.839,-123.91,0.),(785.219,-94.463,0.),(783.579,-122.962,0.),(798.774,-120.117,0.),(801.143,-89.621,0.),(813.425,-115.375,0.),(815.442,-81.552,0.),(827.53,-108.736,0.),(828.117,-70.255,0.),(840.577,-100.253,0.),(838.497,-55.992,0.),(845.911,-39.026,0.),(850.36,-19.356,0.),(653.821,-31.522,5.),(652.354,28.939,5.),(650.3,0.,5.),(658.516,54.557,5.),(664.385,-61.368,5.),(668.786,76.852,5.),(672.255,-75.107,5.),(683.164,95.825,5.),(681.781,-87.316,5.),(683.835,-0.503,5.),(685.328,-21.541,5.),(692.962,-97.994,5.),(689.808,-40.22,5.),(697.275,-56.542,5.),(705.8,-107.143,5.),(707.728,-70.506,5.),(719.926,-114.479,5.),(720.434,-81.693,5.),(734.975,-119.718,5.),(734.66,-89.684,5.),(750.406,-94.478,5.),(750.946,-122.862,5.),(767.671,-96.076,5.),(767.839,-123.91,5.),(785.219,-94.463,5.),(783.579,-122.962,5.),(798.774,-120.117,5.),(801.143,-89.621,5.),(813.425,-115.375,5.),(815.442,-81.552,5.),(827.53,-108.736,5.),(828.117,-70.255,5.),(840.577,-100.253,5.),(838.497,-55.992,5.),(845.911,-39.026,5.),(852.052,-89.977,5.),(850.36,-19.356,5.),(851.843,3.018,5.),(685.391,25.261,5.),(700.79,110.973,5.),(690.059,47.053,5.),(697.84,64.874,5.),(708.734,78.722,5.),(720.806,121.793,5.),(721.786,89.102,5.),(743.212,128.285,5.),(736.044,96.517,5.),(751.506,100.965,5.),(768.006,130.449,5.),(768.174,102.448,5.),(784.606,129.433,5.),(791.292,99.367,5.),(800.367,126.383,5.),(812.02,90.124,5.),(815.29,121.301,5.),(829.207,75.285,5.),(829.374,114.185,5.),(841.698,55.416,5.),(842.228,105.251,5.),(849.307,31.124,5.),(853.456,94.714,5.),(861.955,-77.91,5.),(863.061,82.574,5.),(870.287,-64.051,5.),(871.041,68.83,5.),(876.889,-48.803,5.),(877.313,53.797,5.),(881.604,-32.57,5.),(881.793,37.789,5.),(884.434,-15.353,5.),(884.481,20.807,5.),(885.377,2.85,5.),(0.3,200.,0.),(200.3,0.,0.),(0.3,0.,0.),(200.3,200.,0.),(200.3,0.,100.),(0.3,200.,100.),(0.3,0.,100.),(200.3,200.,100.),(200.3,0.,100.),(0.3,0.,0.),(200.3,0.,0.),(0.3,0.,100.),(0.3,200.,100.),(0.3,0.,0.),(0.3,0.,100.),(0.3,200.,0.),(0.3,200.,100.),(200.3,200.,0.),(0.3,200.,0.),(200.3,200.,100.),(200.3,200.,0.),(200.3,0.,100.),(200.3,0.,0.),(200.3,200.,100.),(-51.846,-658.384,0.),(-61.907,-715.56,0.),(-69.703,-668.716,0.),(-58.532,-701.413,0.),(-48.409,-689.487,0.),(-30.426,-652.096,0.),(-40.659,-684.755,0.),(-30.908,-681.376,0.),(-5.401,-678.672,0.),(-6.742,-650.,0.),(18.975,-652.201,0.),(19.478,-681.648,0.),(41.464,-658.803,0.),(29.323,-685.368,0.),(37.44,-690.577,0.),(43.942,-697.242,0.),(59.929,-669.681,0.),(48.946,-705.332,0.),(54.458,-725.788,0.),(85.645,-723.441,0.),(73.573,-684.708,0.),(82.208,-702.943,0.),(-90.621,-699.736,0.),(-91.103,-733.857,0.),(-93.261,-717.74,0.),(-84.626,-748.34,0.),(-82.698,-682.948,0.),(-73.748,-760.895,0.),(-58.385,-771.227,0.),(-59.517,-727.632,0.),(-52.349,-737.357,0.),(-39.732,-778.668,0.),(-35.393,-746.014,0.),(-10.934,-786.569,0.),(-3.305,-754.879,0.),(32.829,-798.558,0.),(30.125,-763.284,0.),(51.105,-770.557,0.),(46.075,-805.118,0.),(54.961,-813.062,0.),(69.758,-781.77,0.),(59.991,-822.43,0.),(61.668,-833.266,0.),(68.103,-882.981,0.),(81.789,-867.555,0.),(82.795,-795.624,0.),(90.214,-849.635,0.),(90.466,-811.951,0.),(93.023,-830.584,0.),(-71.967,-818.343,0.),(-98.941,-844.396,0.),(-102.651,-821.026,0.),(-89.153,-865.208,0.),(-73.895,-882.29,0.),(-68.341,-835.132,0.),(-53.774,-894.467,0.),(-61.823,-848.608,0.),(-51.658,-859.297,0.),(-28.519,-901.761,0.),(-37.091,-867.723,0.),(-19.276,-873.193,0.),(2.144,-904.192,0.),(0.635,-875.017,0.),(18.157,-873.633,0.),(27.149,-901.782,0.),(33.499,-869.484,0.),(49.512,-894.551,0.),(45.928,-862.923,0.),(54.71,-854.309,0.),(59.929,-844.228,0.),(-98.941,-844.396,5.),(-71.967,-818.343,5.),(-102.651,-821.026,5.),(-89.153,-865.208,5.),(-73.895,-882.29,5.),(-68.341,-835.132,5.),(-53.774,-894.467,5.),(-61.823,-848.608,5.),(-51.658,-859.297,5.),(-28.519,-901.761,5.),(-37.091,-867.723,5.),(-19.276,-873.193,5.),(2.144,-904.192,5.),(0.635,-875.017,5.),(18.157,-873.633,5.),(27.149,-901.782,5.),(33.499,-869.484,5.),(49.512,-894.551,5.),(45.928,-862.923,5.),(54.71,-854.309,5.),(68.103,-882.981,5.),(59.929,-844.228,5.),(61.668,-833.266,5.),(-91.103,-733.857,5.),(-90.621,-699.736,5.),(-93.261,-717.74,5.),(-84.626,-748.34,5.),(-82.698,-682.948,5.),(-73.748,-760.895,5.),(-69.703,-668.716,5.),(-58.385,-771.227,5.),(-61.907,-715.56,5.),(-59.517,-727.632,5.),(-52.349,-737.357,5.),(-39.732,-778.668,5.),(-35.393,-746.014,5.),(-10.934,-786.569,5.),(-3.305,-754.879,5.),(32.829,-798.558,5.),(30.125,-763.284,5.),(51.105,-770.557,5.),(46.075,-805.118,5.),(54.961,-813.062,5.),(69.758,-781.77,5.),(59.991,-822.43,5.),(81.789,-867.555,5.),(82.795,-795.624,5.),(90.214,-849.635,5.),(90.466,-811.951,5.),(93.023,-830.584,5.),(-51.846,-658.384,5.),(-58.532,-701.413,5.),(-48.409,-689.487,5.),(-30.426,-652.096,5.),(-40.659,-684.755,5.),(-30.908,-681.376,5.),(-5.401,-678.672,5.),(-6.742,-650.,5.),(18.975,-652.201,5.),(19.478,-681.648,5.),(41.464,-658.803,5.),(29.323,-685.368,5.),(37.44,-690.577,5.),(43.942,-697.242,5.),(59.929,-669.681,5.),(48.946,-705.332,5.),(54.458,-725.788,5.),(85.645,-723.441,5.),(73.573,-684.708,5.),(82.208,-702.943,5.),(-102.651,-821.026,5.),(-71.967,-818.343,0.),(-102.651,-821.026,0.),(-71.967,-818.343,5.),(-71.967,-818.343,0.),(-68.341,-835.132,5.),(-68.341,-835.132,0.),(-71.967,-818.343,5.),(-68.341,-835.132,0.),(-61.823,-848.608,5.),(-61.823,-848.608,0.),(-68.341,-835.132,5.),(-61.823,-848.608,0.),(-51.658,-859.297,5.),(-51.658,-859.297,0.),(-61.823,-848.608,5.),(-51.658,-859.297,5.),(-37.091,-867.723,0.),(-51.658,-859.297,0.),(-37.091,-867.723,5.),(-37.091,-867.723,5.),(-19.276,-873.193,0.),(-37.091,-867.723,0.),(-19.276,-873.193,5.),(-19.276,-873.193,5.),(0.635,-875.017,0.),(-19.276,-873.193,0.),(0.635,-875.017,5.),(0.635,-875.017,5.),(18.157,-873.633,0.),(0.635,-875.017,0.),(18.157,-873.633,5.),(18.157,-873.633,5.),(33.499,-869.484,0.),(18.157,-873.633,0.),(33.499,-869.484,5.),(33.499,-869.484,5.),(45.928,-862.923,0.),(33.499,-869.484,0.),(45.928,-862.923,5.),(45.928,-862.923,5.),(54.71,-854.309,0.),(45.928,-862.923,0.),(54.71,-854.309,5.),(59.929,-844.228,5.),(54.71,-854.309,0.),(54.71,-854.309,5.),(59.929,-844.228,0.),(61.668,-833.266,5.),(59.929,-844.228,0.),(59.929,-844.228,5.),(61.668,-833.266,0.),(59.991,-822.43,5.),(61.668,-833.266,0.),(61.668,-833.266,5.),(59.991,-822.43,0.),(54.961,-813.062,5.),(59.991,-822.43,0.),(59.991,-822.43,5.),(54.961,-813.062,0.),(54.961,-813.062,5.),(46.075,-805.118,0.),(54.961,-813.062,0.),(46.075,-805.118,5.),(46.075,-805.118,5.),(32.829,-798.558,0.),(46.075,-805.118,0.),(32.829,-798.558,5.),(32.829,-798.558,5.),(-10.934,-786.569,0.),(32.829,-798.558,0.),(-39.732,-778.668,0.),(-39.732,-778.668,5.),(-10.934,-786.569,5.),(-39.732,-778.668,5.),(-58.385,-771.227,0.),(-39.732,-778.668,0.),(-58.385,-771.227,5.),(-58.385,-771.227,5.),(-73.748,-760.895,0.),(-58.385,-771.227,0.),(-73.748,-760.895,5.),(-84.626,-748.34,5.),(-73.748,-760.895,0.),(-73.748,-760.895,5.),(-84.626,-748.34,0.),(-91.103,-733.857,5.),(-84.626,-748.34,0.),(-84.626,-748.34,5.),(-91.103,-733.857,0.),(-93.261,-717.74,5.),(-91.103,-733.857,0.),(-91.103,-733.857,5.),(-93.261,-717.74,0.),(-90.621,-699.736,5.),(-93.261,-717.74,0.),(-93.261,-717.74,5.),(-90.621,-699.736,0.),(-82.698,-682.948,5.),(-90.621,-699.736,0.),(-90.621,-699.736,5.),(-82.698,-682.948,0.),(-69.703,-668.716,5.),(-82.698,-682.948,0.),(-82.698,-682.948,5.),(-69.703,-668.716,0.),(-69.703,-668.716,5.),(-51.846,-658.384,0.),(-69.703,-668.716,0.),(-51.846,-658.384,5.),(-51.846,-658.384,5.),(-30.426,-652.096,0.),(-51.846,-658.384,0.),(-30.426,-652.096,5.),(-30.426,-652.096,5.),(-6.742,-650.,0.),(-30.426,-652.096,0.),(-6.742,-650.,5.),(-6.742,-650.,5.),(18.975,-652.201,0.),(-6.742,-650.,0.),(18.975,-652.201,5.),(18.975,-652.201,5.),(41.464,-658.803,0.),(18.975,-652.201,0.),(41.464,-658.803,5.),(41.464,-658.803,5.),(59.929,-669.681,0.),(41.464,-658.803,0.),(59.929,-669.681,5.),(59.929,-669.681,0.),(73.573,-684.708,5.),(73.573,-684.708,0.),(59.929,-669.681,5.),(73.573,-684.708,0.),(82.208,-702.943,5.),(82.208,-702.943,0.),(73.573,-684.708,5.),(82.208,-702.943,0.),(85.645,-723.441,5.),(85.645,-723.441,0.),(82.208,-702.943,5.),(85.645,-723.441,5.),(54.458,-725.788,0.),(85.645,-723.441,0.),(54.458,-725.788,5.),(48.946,-705.332,5.),(54.458,-725.788,0.),(54.458,-725.788,5.),(48.946,-705.332,0.),(43.942,-697.242,5.),(48.946,-705.332,0.),(48.946,-705.332,5.),(43.942,-697.242,0.),(37.44,-690.577,5.),(43.942,-697.242,0.),(43.942,-697.242,5.),(37.44,-690.577,0.),(37.44,-690.577,5.),(29.323,-685.368,0.),(37.44,-690.577,0.),(29.323,-685.368,5.),(29.323,-685.368,5.),(19.478,-681.648,0.),(29.323,-685.368,0.),(19.478,-681.648,5.),(19.478,-681.648,5.),(-5.401,-678.672,0.),(19.478,-681.648,0.),(-5.401,-678.672,5.),(-5.401,-678.672,5.),(-30.908,-681.376,0.),(-5.401,-678.672,0.),(-30.908,-681.376,5.),(-30.908,-681.376,5.),(-40.659,-684.755,0.),(-30.908,-681.376,0.),(-40.659,-684.755,5.),(-40.659,-684.755,5.),(-48.409,-689.487,0.),(-40.659,-684.755,0.),(-48.409,-689.487,5.),(-48.409,-689.487,0.),(-58.532,-701.413,5.),(-58.532,-701.413,0.),(-48.409,-689.487,5.),(-58.532,-701.413,0.),(-61.907,-715.56,5.),(-61.907,-715.56,0.),(-58.532,-701.413,5.),(-61.907,-715.56,0.),(-59.517,-727.632,5.),(-59.517,-727.632,0.),(-61.907,-715.56,5.),(-59.517,-727.632,0.),(-52.349,-737.357,5.),(-52.349,-737.357,0.),(-59.517,-727.632,5.),(-52.349,-737.357,5.),(-35.393,-746.014,0.),(-52.349,-737.357,0.),(-35.393,-746.014,5.),(-35.393,-746.014,5.),(-3.305,-754.879,0.),(-35.393,-746.014,0.),(-3.305,-754.879,5.),(-3.305,-754.879,5.),(30.125,-763.284,0.),(-3.305,-754.879,0.),(30.125,-763.284,5.),(30.125,-763.284,5.),(51.105,-770.557,0.),(30.125,-763.284,0.),(51.105,-770.557,5.),(51.105,-770.557,5.),(69.758,-781.77,0.),(51.105,-770.557,0.),(69.758,-781.77,5.),(69.758,-781.77,0.),(82.795,-795.624,5.),(82.795,-795.624,0.),(69.758,-781.77,5.),(82.795,-795.624,0.),(90.466,-811.951,5.),(90.466,-811.951,0.),(82.795,-795.624,5.),(90.466,-811.951,0.),(93.023,-830.584,5.),(93.023,-830.584,0.),(90.466,-811.951,5.),(93.023,-830.584,0.),(90.214,-849.635,5.),(90.214,-849.635,0.),(93.023,-830.584,5.),(90.214,-849.635,0.),(81.789,-867.555,5.),(81.789,-867.555,0.),(90.214,-849.635,5.),(81.789,-867.555,0.),(68.103,-882.981,5.),(68.103,-882.981,0.),(81.789,-867.555,5.),(68.103,-882.981,5.),(49.512,-894.551,0.),(68.103,-882.981,0.),(49.512,-894.551,5.),(49.512,-894.551,5.),(27.149,-901.782,0.),(49.512,-894.551,0.),(27.149,-901.782,5.),(27.149,-901.782,5.),(2.144,-904.192,0.),(27.149,-901.782,0.),(2.144,-904.192,5.),(2.144,-904.192,5.),(-28.519,-901.761,0.),(2.144,-904.192,0.),(-28.519,-901.761,5.),(-28.519,-901.761,5.),(-53.774,-894.467,0.),(-28.519,-901.761,0.),(-53.774,-894.467,5.),(-53.774,-894.467,5.),(-73.895,-882.29,0.),(-53.774,-894.467,0.),(-73.895,-882.29,5.),(-89.153,-865.208,5.),(-73.895,-882.29,0.),(-73.895,-882.29,5.),(-89.153,-865.208,0.),(-98.941,-844.396,5.),(-89.153,-865.208,0.),(-89.153,-865.208,5.),(-98.941,-844.396,0.),(-102.651,-821.026,5.),(-98.941,-844.396,0.),(-98.941,-844.396,5.),(-102.651,-821.026,0.))); +#367=IFCSTYLEDITEM(#365,(#370),$); +#368=IFCSURFACESTYLERENDERING(#369,0.,$,$,$,$,$,$,.NOTDEFINED.); +#369=IFCCOLOURRGB($,0.,0.,0.); +#370=IFCSURFACESTYLE('virtual_black',.BOTH.,(#368)); +#371=IFCPRODUCTDEFINITIONSHAPE($,$,(#364)); +ENDSEC; +END-ISO-10303-21; diff --git a/test/fixtures/ifc/Building-Structural.ifc b/test/fixtures/ifc/Building-Structural.ifc new file mode 100644 index 000000000..0a0fc4636 --- /dev/null +++ b/test/fixtures/ifc/Building-Structural.ifc @@ -0,0 +1,348 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [ReferenceView_V1.2]'),'2;1'); +FILE_NAME('Building-Structural.ifc','2026-06-23T11:53:44',(''),(''),'Sketchup-IFC-manager 5.6.0 / SketchUp 2026 (26.2.242)','BIM_Tools - Sketchup_IFC_manager - 5.6.0','None'); +FILE_SCHEMA(('IFC4')); +ENDSEC; +DATA; +#1=IFCOWNERHISTORY(#2,#5,$,.ADDED.,1782208424,#2,#5,1782208424); +#2=IFCPERSONANDORGANIZATION(#3,#4,$); +#3=IFCPERSON('3720f2e9-0107-4ce6-b699-e20d9bd03331','Jan B.',$,$,$,$,$,$); +#4=IFCORGANIZATION($,'buildingSMART International','buildingSMART is the worldwide industry body driving the digital transformation of the built environment.',$,$); +#5=IFCAPPLICATION(#6,'5.6.0','IFC manager for sketchup','su_ifcmanager'); +#6=IFCORGANIZATION($,'BIM-Tools',$,$,$); +#7=IFCAXIS2PLACEMENT3D(#8,#9,#10); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCDIRECTION((0.,0.,1.)); +#10=IFCDIRECTION((1.,0.,0.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.001,#7,$); +#12=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#11,$,.MODEL_VIEW.,$); +#13=IFCPROJECT('2Ndyd$OSX7s9A04nc4lyye',#1,'ifc silly sample scene - project','Demystifying IFC with a playful scene using diverse building elements and compositions.',$,$,$,(#11),#14); +#14=IFCUNITASSIGNMENT((#15,#16,#17)); +#15=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); +#16=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#17=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#18=IFCPROJECTEDCRS('EPSG:32760','EPSG:32760 - WGS 84 / UTM zone 60S','WGS 84',$,$,$,#19); +#19=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#20=IFCMAPCONVERSION(#11,#18,729013.3488297004,9063992.684697364,1.3000000000000018,0.4999999999999999,0.8660254037844387,0.001); +#21=IFCSITE('23sFQGRy90RxVbRHD9iSE2',#1,'environment - site','A sample scene environment, showcasing the surrounding landscape.',$,#23,$,$,.COMPLEX.,$,$,0.,$,$); +#22=IFCRELAGGREGATES('2CQv4GL4b7CAJ85_K3JELu',#1,'ifc silly sample scene - project container',$,#13,(#21)); +#23=IFCLOCALPLACEMENT($,#24); +#24=IFCAXIS2PLACEMENT3D(#25,#26,#27); +#25=IFCCARTESIANPOINT((-28841.016,-14200.,-1300.)); +#26=IFCDIRECTION((0.,0.,1.)); +#27=IFCDIRECTION((0.4999999999999999,-0.8660254037844387,0.)); +#28=IFCSITE('1Pbuu0tu59NfhrTsztVBK1',#1,'house - site','Smoke curls from a friendly chimney, promising warmth within this idyllic hilltop house.',$,#30,$,$,.PARTIAL.,$,$,0.,$,$); +#29=IFCRELAGGREGATES('1dTrjE0av2oPdgHCxN2ciG',#1,'environment - site container',$,#21,(#28)); +#30=IFCLOCALPLACEMENT(#23,#31); +#31=IFCAXIS2PLACEMENT3D(#32,#33,#34); +#32=IFCCARTESIANPOINT((0.,40000.,0.)); +#33=IFCDIRECTION((0.,0.,1.)); +#34=IFCDIRECTION((0.4999999999999999,0.8660254037844387,0.)); +#35=IFCBUILDING('0c$N1CTon2BB2Sp89385G8',#1,'Single-family house','The main building structure, providing shelter and space.','house',#40,$,'house - building',.ELEMENT.,$,$,$); +#36=IFCCLASSIFICATION('Molio','1.0','2023-01-23','CCI Construction',$,'https://identifier.buildingsmart.org/uri/molio/cciconstruction/1.0',$); +#37=IFCCLASSIFICATIONREFERENCE('https://identifier.buildingsmart.org/uri/molio/cciconstruction/1.0/class/E-AAA','E-AAA','Single-family house',#36,$,$); +#38=IFCRELASSOCIATESCLASSIFICATION('0KUjZ7xmPCDwkLM2vZpxtC',#1,'CCI Construction Classification',$,(#35),#37); +#39=IFCRELAGGREGATES('3m9zah5Cj4L9ySOtCdH2$U',#1,'house - site container',$,#28,(#35)); +#40=IFCLOCALPLACEMENT(#30,#41); +#41=IFCAXIS2PLACEMENT3D(#42,#43,#44); +#42=IFCCARTESIANPOINT((-2800.,-2800.,1300.)); +#43=IFCDIRECTION((0.,0.,1.)); +#44=IFCDIRECTION((1.,0.,0.)); +#45=IFCBUILDINGSTOREY('1Ano2ZUxnEIvVQ_beukl8b',#1,'00 groundfloor','The ground floor, forming the base level of the building.','buildingstorey',#47,$,$,.ELEMENT.,0.); +#46=IFCRELAGGREGATES('1d5Yu$YKL4kwFRaH2hYkmD',#1,'Single-family house container',$,#35,(#45)); +#47=IFCLOCALPLACEMENT(#40,#7); +#48=IFCFOOTINGTYPE('39zsrh6sTE69jN0aDa_2y3',#1,'house - foundation','A house strip footing, ensuring stability and support.',$,$,$,'884636','strip_footing',.STRIP_FOOTING.); +#49=IFCRELDEFINESBYTYPE('2Ca0YqD5bBUxjYPcKrr8dB',#1,$,$,(#50),#48); +#50=IFCFOOTING('0pFmhV8oD1dB40_b4pscr8',#1,'house - foundation','A house strip footing, ensuring stability and support.','strip_footing',#54,#66,'454425.1027891.979946.932083.920028',$); +#51=IFCRELASSOCIATESMATERIAL('0oKrXjQf58gwTDmoHg_xVx',#1,$,$,(#50),#52); +#52=IFCMATERIAL('concrete_reinforced_in-situ',$,$); +#53=IFCRELCONTAINEDINSPATIALSTRUCTURE('1ReYcPVFLE5AgeE5A8QZSF',#1,$,$,(#50,#69,#93,#112,#131,#147),#45); +#54=IFCLOCALPLACEMENT(#47,#55); +#55=IFCAXIS2PLACEMENT3D(#56,#57,#58); +#56=IFCCARTESIANPOINT((0.,0.,-500.)); +#57=IFCDIRECTION((0.,0.,1.)); +#58=IFCDIRECTION((1.,0.,0.)); +#59=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#60)); +#60=IFCTRIANGULATEDFACESET(#61,((-1.46491765327155E-18,-1.,5.0132737467518135E-17),(-1.46491765327155E-18,-1.,5.0132737467518135E-17),(-1.46491765327155E-18,-1.,5.0132737467518135E-17),(-1.46491765327155E-18,-1.,5.0132737467518135E-17),(6.273704223900299E-15,1.,1.203185699219874E-16),(6.273704223900299E-15,1.,1.203185699219874E-16),(6.273704223900299E-15,1.,1.203185699219874E-16),(6.273704223900299E-15,1.,1.203185699219874E-16),(1.,-1.925097118752768E-14,-3.224219057469083E-30),(1.,-1.925097118752768E-14,-3.224219057469083E-30),(1.,-1.925097118752768E-14,-3.224219057469083E-30),(1.,-1.925097118752768E-14,-3.224219057469083E-30),(-1.0828671292983906E-14,-1.,9.565299016287626E-30),(-1.0828671292983906E-14,-1.,9.565299016287626E-30),(-1.0828671292983906E-14,-1.,9.565299016287626E-30),(-1.0828671292983906E-14,-1.,9.565299016287626E-30),(2.0085356046416778E-16,1.,8.447344007909837E-30),(2.0085356046416778E-16,1.,8.447344007909837E-30),(2.0085356046416778E-16,1.,8.447344007909837E-30),(2.0085356046416778E-16,1.,8.447344007909837E-30),(1.,6.93550613764915E-15,8.768674695539108E-31),(1.,6.93550613764915E-15,8.768674695539108E-31),(1.,6.93550613764915E-15,8.768674695539108E-31),(1.,6.93550613764915E-15,8.768674695539108E-31),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(1.,-2.159564075523967E-15,-1.59357953415006E-30),(1.,-2.159564075523967E-15,-1.59357953415006E-30),(1.,-2.159564075523967E-15,-1.59357953415006E-30),(1.,-2.159564075523967E-15,-1.59357953415006E-30),(2.2581771231866958E-14,-1.,3.7345825983413234E-14),(2.2581771231866958E-14,-1.,3.7345825983413234E-14),(2.2581771231866958E-14,-1.,3.7345825983413234E-14),(2.2581771231866958E-14,-1.,3.7345825983413234E-14),(-1.,-2.2298598362803405E-16,3.007964247999072E-17),(-1.,-2.2298598362803405E-16,3.007964247999072E-17),(-1.,-2.2298598362803405E-16,3.007964247999072E-17),(-1.,-2.2298598362803405E-16,3.007964247999072E-17),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(6.356640738391217E-18,-2.142368366667172E-17,-1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(5.486730273252906E-18,3.135196050775392E-17,1.),(4.898136526411117E-15,-1.,1.5526841401514399E-16),(4.898136526411117E-15,-1.,1.5526841401514399E-16),(4.898136526411117E-15,-1.,1.5526841401514399E-16),(4.898136526411117E-15,-1.,1.5526841401514399E-16),(1.5250536565293434E-16,1.,5.0132737467518166E-17),(1.5250536565293434E-16,1.,5.0132737467518166E-17),(1.5250536565293434E-16,1.,5.0132737467518166E-17),(1.5250536565293434E-16,1.,5.0132737467518166E-17),(1.,-8.570965950653055E-16,1.8299061265187592E-31),(1.,-8.570965950653055E-16,1.8299061265187592E-31),(1.,-8.570965950653055E-16,1.8299061265187592E-31),(1.,-8.570965950653055E-16,1.8299061265187592E-31),(-1.,4.607945231056927E-16,1.443822839064524E-15),(-1.,4.607945231056927E-16,1.443822839064524E-15),(-1.,4.607945231056927E-16,1.443822839064524E-15),(-1.,4.607945231056927E-16,1.443822839064524E-15),(-1.,6.742225102692942E-16,1.9250971187526995E-15),(-1.,6.742225102692942E-16,1.9250971187526995E-15),(-1.,6.742225102692942E-16,1.9250971187526995E-15),(-1.,6.742225102692942E-16,1.9250971187526995E-15),(-4.0106189974014464E-16,-1.,1.1581246614468541E-30),(-4.0106189974014464E-16,-1.,1.1581246614468541E-30),(-4.0106189974014464E-16,-1.,1.1581246614468541E-30),(-4.0106189974014464E-16,-1.,1.1581246614468541E-30)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24),(25,26,27),(26,25,28),(29,30,31),(30,29,32),(33,34,35),(34,33,36),(37,38,39),(38,37,40),(41,42,43),(42,41,44),(43,42,45),(42,44,46),(46,44,47),(47,44,48),(48,44,49),(49,44,50),(42,51,45),(51,42,52),(51,52,49),(51,49,53),(53,49,54),(53,54,55),(55,54,56),(54,49,50),(45,56,43),(56,45,55),(57,58,59),(58,57,60),(60,57,61),(62,63,64),(65,66,58),(66,65,67),(67,65,61),(67,61,68),(68,61,69),(69,61,57),(68,69,70),(68,70,62),(71,66,72),(66,71,59),(66,59,58),(72,66,63),(72,63,62),(72,62,70),(73,74,75),(74,73,76),(77,78,79),(78,77,80),(81,82,83),(82,81,84),(85,86,87),(86,85,88),(89,90,91),(90,89,92),(93,94,95),(94,93,96)),$); +#61=IFCCARTESIANPOINTLIST3D(((4300.,-100.,250.),(-100.,-100.,-50.),(4300.,-100.,-50.),(-100.,-100.,250.),(350.,350.,-50.),(3850.,350.,250.),(3850.,350.,-50.),(350.,350.,250.),(350.,1700.,-50.),(350.,350.,250.),(350.,350.,-50.),(350.,1700.,250.),(3850.,1700.,-50.),(350.,1700.,250.),(350.,1700.,-50.),(3850.,1700.,250.),(350.,2150.,250.),(5250.,2150.,-50.),(350.,2150.,-50.),(5250.,2150.,250.),(350.,5650.,-50.),(350.,2150.,250.),(350.,2150.,-50.),(350.,5650.,250.),(3850.,1700.,250.),(3850.,350.,-50.),(3850.,350.,250.),(3850.,1700.,-50.),(4300.,1700.,-50.),(4300.,-100.,250.),(4300.,-100.,-50.),(4300.,1700.,250.),(5700.,1700.,250.),(4300.,1700.,-50.),(5700.,1700.,-50.),(4300.,1700.,250.),(-100.,6100.,250.),(-100.,-100.,-50.),(-100.,-100.,250.),(-100.,6100.,-50.),(-100.,6100.,-50.),(350.,5650.,-50.),(-100.,-100.,-50.),(5700.,6100.,-50.),(350.,350.,-50.),(4600.,5650.,-50.),(4600.,4500.,-50.),(5250.,4500.,-50.),(5250.,2150.,-50.),(5700.,1700.,-50.),(350.,1700.,-50.),(350.,2150.,-50.),(3850.,1700.,-50.),(4300.,1700.,-50.),(3850.,350.,-50.),(4300.,-100.,-50.),(4300.,-100.,250.),(350.,350.,250.),(-100.,-100.,250.),(3850.,350.,250.),(3850.,1700.,250.),(5250.,4500.,250.),(4600.,5650.,250.),(4600.,4500.,250.),(350.,1700.,250.),(350.,5650.,250.),(350.,2150.,250.),(5250.,2150.,250.),(4300.,1700.,250.),(5700.,1700.,250.),(-100.,6100.,250.),(5700.,6100.,250.),(4600.,5650.,-50.),(350.,5650.,250.),(350.,5650.,-50.),(4600.,5650.,250.),(-100.,6100.,250.),(5700.,6100.,-50.),(-100.,6100.,-50.),(5700.,6100.,250.),(5700.,6100.,-50.),(5700.,1700.,250.),(5700.,1700.,-50.),(5700.,6100.,250.),(5250.,4500.,250.),(5250.,2150.,-50.),(5250.,2150.,250.),(5250.,4500.,-50.),(4600.,5650.,250.),(4600.,4500.,-50.),(4600.,4500.,250.),(4600.,5650.,-50.),(5250.,4500.,250.),(4600.,4500.,-50.),(5250.,4500.,-50.),(4600.,4500.,250.))); +#62=IFCSTYLEDITEM(#60,(#65),$); +#63=IFCSURFACESTYLERENDERING(#64,0.,$,$,$,$,$,$,.NOTDEFINED.); +#64=IFCCOLOURRGB($,0.5764705882352941,0.5764705882352941,0.5764705882352941); +#65=IFCSURFACESTYLE('concrete_reinforced_in-situ',.BOTH.,(#63)); +#66=IFCPRODUCTDEFINITIONSHAPE($,$,(#59)); +#67=IFCWALLTYPE('0_8SeeJGr948J4bU1RPXce',#1,'house - outer wall - house back','A solid outer wall, forming the back of the house.',$,$,$,'919510','solidwall',.SOLIDWALL.); +#68=IFCRELDEFINESBYTYPE('1Dq$Dv2C19kvvXmEBQkP5l',#1,$,$,(#69),#67); +#69=IFCWALL('0DyViLJJ175RvWQi1rE7a6',#1,'house - outer wall - house back','A solid outer wall, forming the back of the house.','solidwall',#78,#90,'454425.1027891.979946.932083.920030',$); +#70=IFCRELASSOCIATESMATERIAL('0sAYN8OJzFKu1rNoJBdSki',#1,$,$,(#69,#93,#112,#131,#147),#71); +#71=IFCMATERIAL('stone_sand-lime',$,$); +#72=IFCQUANTITYVOLUME('NetVolume',$,$,4.286515368539449,$); +#73=IFCQUANTITYLENGTH('Width',$,$,200.,$); +#74=IFCQUANTITYLENGTH('Length',$,$,5200.,$); +#75=IFCQUANTITYAREA('NetSideArea',$,$,21.432576842688732,$); +#76=IFCELEMENTQUANTITY('3hkprKd8L4Kgi5Lbl29P_N',#1,'Qto_WallBaseQuantities',$,'BaseQuantities',(#72,#73,#74,#75)); +#77=IFCRELDEFINESBYPROPERTIES('1oV94qe_X5PwtMoo0RgYnY',#1,$,$,(#69),#76); +#78=IFCLOCALPLACEMENT(#47,#79); +#79=IFCAXIS2PLACEMENT3D(#80,#81,#82); +#80=IFCCARTESIANPOINT((200.,5900.,0.)); +#81=IFCDIRECTION((0.,0.,1.)); +#82=IFCDIRECTION((1.,0.,0.)); +#83=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#84)); +#84=IFCTRIANGULATEDFACESET(#85,((4.9811294426698665E-15,1.,1.1730609307457722E-14),(4.9811294426698665E-15,1.,1.1730609307457722E-14),(4.9811294426698665E-15,1.,1.1730609307457722E-14),(4.9811294426698665E-15,1.,1.1730609307457722E-14),(4.9811294426698665E-15,1.,1.1730609307457722E-14),(-1.,-3.788930638371891E-14,-4.025217430232042E-15),(-1.,-3.788930638371891E-14,-4.025217430232042E-15),(-1.,-3.788930638371891E-14,-4.025217430232042E-15),(-1.,-3.788930638371891E-14,-4.025217430232042E-15),(1.,-2.6040631536465974E-13,-3.111357568595145E-14),(1.,-2.6040631536465974E-13,-3.111357568595145E-14),(1.,-2.6040631536465974E-13,-3.111357568595145E-14),(1.,-2.6040631536465974E-13,-3.111357568595145E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(-1.705971520025655E-15,-1.,-1.3039587602823116E-14),(1.755639795722081E-14,-1.,4.083747681338051E-14),(1.755639795722081E-14,-1.,4.083747681338051E-14),(1.755639795722081E-14,-1.,4.083747681338051E-14),(1.755639795722081E-14,-1.,4.083747681338051E-14),(-2.4465543524841362E-14,-1.,-2.679959415877872E-14),(-2.4465543524841362E-14,-1.,-2.679959415877872E-14),(-2.4465543524841362E-14,-1.,-2.679959415877872E-14),(-2.4465543524841362E-14,-1.,-2.679959415877872E-14),(-2.4465543524841362E-14,-1.,-2.6799594158773663E-14),(-2.4465543524841362E-14,-1.,-2.6799594158773663E-14),(-2.4465543524841362E-14,-1.,-2.6799594158773663E-14),(-2.4465543524841362E-14,-1.,-2.6799594158773663E-14),(1.3781639673495278E-14,-1.,-3.9561305662955703E-14),(1.3781639673495278E-14,-1.,-3.9561305662955703E-14),(1.3781639673495278E-14,-1.,-3.9561305662955703E-14),(1.3781639673495278E-14,-1.,-3.9561305662955703E-14),(-0.707106781186619,1.3390512319648198E-17,0.7071067811864763),(-0.707106781186619,1.3390512319648198E-17,0.7071067811864763),(-0.707106781186619,1.3390512319648198E-17,0.7071067811864763),(-0.707106781186619,1.3390512319648198E-17,0.7071067811864763),(0.7071067811865721,-6.629412403154337E-14,-0.7071067811865229),(0.7071067811865721,-6.629412403154337E-14,-0.7071067811865229),(0.7071067811865721,-6.629412403154337E-14,-0.7071067811865229),(0.7071067811865721,-6.629412403154337E-14,-0.7071067811865229),(-1.,1.487416814333745E-17,-4.078105374761528E-15),(-1.,1.487416814333745E-17,-4.078105374761528E-15),(-1.,1.487416814333745E-17,-4.078105374761528E-15),(-1.,1.487416814333745E-17,-4.078105374761528E-15),(0.7071067811865587,1.3432091943849734E-15,0.7071067811865365),(0.7071067811865587,1.3432091943849734E-15,0.7071067811865365),(0.7071067811865587,1.3432091943849734E-15,0.7071067811865365),(0.7071067811865587,1.3432091943849734E-15,0.7071067811865365),(0.7071067811865704,-3.058010723403225E-14,-0.7071067811865248),(0.7071067811865704,-3.058010723403225E-14,-0.7071067811865248),(0.7071067811865704,-3.058010723403225E-14,-0.7071067811865248),(0.7071067811865704,-3.058010723403225E-14,-0.7071067811865248),(1.,-1.487416814333745E-17,1.3101998118915924E-14),(1.,-1.487416814333745E-17,1.3101998118915924E-14),(1.,-1.487416814333745E-17,1.3101998118915924E-14),(1.,-1.487416814333745E-17,1.3101998118915924E-14),(0.7071067811865513,-1.276250399837179E-13,-0.7071067811865437),(0.7071067811865513,-1.276250399837179E-13,-0.7071067811865437),(0.7071067811865513,-1.276250399837179E-13,-0.7071067811865437),(0.7071067811865513,-1.276250399837179E-13,-0.7071067811865437),(-0.707106781186549,2.6792114994504473E-14,0.707106781186546),(-0.707106781186549,2.6792114994504473E-14,0.707106781186546),(-0.707106781186549,2.6792114994504473E-14,0.707106781186546),(-0.707106781186549,2.6792114994504473E-14,0.707106781186546),(-0.7071067811865493,9.958960163943525E-14,0.7071067811865457),(-0.7071067811865493,9.958960163943525E-14,0.7071067811865457),(-0.7071067811865493,9.958960163943525E-14,0.7071067811865457),(-0.7071067811865493,9.958960163943525E-14,0.7071067811865457),(-4.07810537476144E-15,6.497202775792069E-14,1.),(-4.07810537476144E-15,6.497202775792069E-14,1.),(-4.07810537476144E-15,6.497202775792069E-14,1.),(-4.07810537476144E-15,6.497202775792069E-14,1.),(0.7071067811865519,-3.341504802643175E-15,0.7071067811865432),(0.7071067811865519,-3.341504802643175E-15,0.7071067811865432),(0.7071067811865519,-3.341504802643175E-15,0.7071067811865432),(0.7071067811865519,-3.341504802643175E-15,0.7071067811865432),(-0.7071067811865523,1.2257118890087393E-15,-0.7071067811865428),(-0.7071067811865523,1.2257118890087393E-15,-0.7071067811865428),(-0.7071067811865523,1.2257118890087393E-15,-0.7071067811865428),(-0.7071067811865523,1.2257118890087393E-15,-0.7071067811865428),(0.7071067811865457,2.607957648797087E-14,0.7071067811865495),(0.7071067811865457,2.607957648797087E-14,0.7071067811865495),(0.7071067811865457,2.607957648797087E-14,0.7071067811865495),(0.7071067811865457,2.607957648797087E-14,0.7071067811865495),(-0.7071067811865144,2.8075565123731614E-14,0.7071067811865807),(-0.7071067811865144,2.8075565123731614E-14,0.7071067811865807),(-0.7071067811865144,2.8075565123731614E-14,0.7071067811865807),(-0.7071067811865144,2.8075565123731614E-14,0.7071067811865807),(0.7071067811865266,1.6974679768819556E-14,0.7071067811865686),(0.7071067811865266,1.6974679768819556E-14,0.7071067811865686),(0.7071067811865266,1.6974679768819556E-14,0.7071067811865686),(0.7071067811865266,1.6974679768819556E-14,0.7071067811865686),(2.2353202173936503E-15,-1.,-3.5469636219794095E-15),(2.2353202173936503E-15,-1.,-3.5469636219794095E-15),(2.2353202173936503E-15,-1.,-3.5469636219794095E-15),(2.2353202173936503E-15,-1.,-3.5469636219794095E-15),(2.2353202173936503E-15,-1.,-3.5469636219794095E-15),(-0.7071067811865488,-6.717931797737223E-15,0.7071067811865462),(-0.7071067811865488,-6.717931797737223E-15,0.7071067811865462),(-0.7071067811865488,-6.717931797737223E-15,0.7071067811865462),(-0.7071067811865488,-6.717931797737223E-15,0.7071067811865462),(-0.7071067811865488,-6.717931797737223E-15,0.7071067811865462),(-0.7071067811865488,-6.717931797737223E-15,0.7071067811865462),(-0.7071067811865488,-6.717931797737223E-15,0.7071067811865462),(-0.7071067811865488,-6.717931797737223E-15,0.7071067811865462),(-0.7071067811865488,-6.717931797737223E-15,0.7071067811865462),(-0.7071067811865488,-6.717931797737223E-15,0.7071067811865462),(8.633435846569322E-16,-2.22213358824778E-14,-1.),(8.633435846569322E-16,-2.22213358824778E-14,-1.),(8.633435846569322E-16,-2.22213358824778E-14,-1.),(8.633435846569322E-16,-2.22213358824778E-14,-1.),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578),(0.7071067811865375,-1.3442768272883055E-13,0.7071067811865578)),$,((1,2,3),(2,1,4),(4,1,5),(6,7,8),(7,6,9),(10,11,12),(11,10,13),(14,15,16),(17,18,19),(20,21,22),(21,20,16),(21,16,15),(21,15,23),(21,23,19),(21,19,18),(21,18,24),(21,24,25),(21,25,26),(21,26,27),(25,28,26),(28,25,29),(30,31,32),(28,33,26),(33,28,34),(33,34,35),(35,34,32),(35,32,36),(35,36,37),(36,32,31),(38,39,40),(39,38,41),(42,43,44),(43,42,45),(46,47,48),(47,46,49),(50,51,52),(51,50,53),(54,55,56),(55,54,57),(58,59,60),(59,58,61),(62,63,64),(63,62,65),(66,67,68),(67,66,69),(70,71,72),(71,70,73),(74,75,76),(75,74,77),(78,79,80),(79,78,81),(82,83,84),(83,82,85),(86,87,88),(87,86,89),(90,91,92),(91,90,93),(94,95,96),(95,94,97),(98,99,100),(99,98,101),(102,103,104),(103,102,105),(106,107,108),(107,106,109),(110,111,112),(111,110,113),(114,115,116),(115,114,117),(117,114,118),(119,120,121),(120,119,122),(122,119,123),(122,123,124),(125,126,127),(126,125,128),(128,125,122),(128,122,124),(129,130,131),(130,129,132),(133,134,135),(136,137,138),(139,140,141),(142,143,144),(145,146,147),(146,145,134),(146,134,148),(148,134,133),(146,148,137),(146,137,149),(149,137,136),(146,149,140),(146,140,150),(150,140,139),(146,150,143),(146,143,142)),$); +#85=IFCCARTESIANPOINTLIST3D(((0.,100.,3375.736),(5200.,100.,-250.),(0.,100.,-250.),(5200.,100.,1975.736),(1900.,100.,5275.736),(0.,100.,3375.736),(0.,-100.,-250.),(0.,-100.,3375.736),(0.,100.,-250.),(5200.,-100.,-250.),(5200.,100.,1975.736),(5200.,-100.,1975.736),(5200.,100.,-250.),(4760.355,-100.,2415.381),(4618.934,-100.,2273.959),(5200.,-100.,1975.736),(3835.355,-100.,3340.381),(3693.934,-100.,3198.959),(4689.645,-100.,2486.091),(5200.,-100.,-250.),(0.,-100.,3375.736),(0.,-100.,-250.),(4548.223,-100.,2344.67),(3623.223,-100.,3269.67),(3764.645,-100.,3411.091),(1031.066,-100.,4123.959),(889.645,-100.,4265.381),(2768.934,-100.,4123.959),(2910.355,-100.,4265.381),(1950.,-100.,5225.736),(1950.,-100.,5025.736),(2839.645,-100.,4336.091),(1101.777,-100.,4194.67),(2698.223,-100.,4194.67),(960.355,-100.,4336.091),(1850.,-100.,5025.736),(1850.,-100.,5225.736),(1101.777,0.,4194.67),(889.645,0.,4265.381),(1031.066,0.,4123.959),(960.355,0.,4336.091),(2910.355,0.,4265.381),(2698.223,0.,4194.67),(2768.934,0.,4123.959),(2839.645,0.,4336.091),(3835.355,0.,3340.381),(3623.223,0.,3269.67),(3693.934,0.,3198.959),(3764.645,0.,3411.091),(4760.355,0.,2415.381),(4548.223,0.,2344.67),(4618.934,0.,2273.959),(4689.645,0.,2486.091),(4760.355,-100.,2415.381),(4618.934,0.,2273.959),(4618.934,-100.,2273.959),(4760.355,0.,2415.381),(3623.223,0.,3269.67),(3764.645,-100.,3411.091),(3623.223,-100.,3269.67),(3764.645,0.,3411.091),(1950.,0.,5225.736),(1950.,-100.,5025.736),(1950.,-100.,5225.736),(1950.,0.,5025.736),(1031.066,-100.,4123.959),(889.645,0.,4265.381),(889.645,-100.,4265.381),(1031.066,0.,4123.959),(4548.223,0.,2344.67),(4689.645,-100.,2486.091),(4548.223,-100.,2344.67),(4689.645,0.,2486.091),(1850.,-100.,5025.736),(1850.,0.,5225.736),(1850.,-100.,5225.736),(1850.,0.,5025.736),(2698.223,-100.,4194.67),(2839.645,0.,4336.091),(2839.645,-100.,4336.091),(2698.223,0.,4194.67),(2910.355,0.,4265.381),(2768.934,-100.,4123.959),(2910.355,-100.,4265.381),(2768.934,0.,4123.959),(3835.355,-100.,3340.381),(3693.934,0.,3198.959),(3693.934,-100.,3198.959),(3835.355,0.,3340.381),(1950.,-100.,5025.736),(1850.,0.,5025.736),(1850.,-100.,5025.736),(1950.,0.,5025.736),(3693.934,0.,3198.959),(3623.223,-100.,3269.67),(3693.934,-100.,3198.959),(3623.223,0.,3269.67),(960.355,-100.,4336.091),(1101.777,0.,4194.67),(1101.777,-100.,4194.67),(960.355,0.,4336.091),(2768.934,-100.,4123.959),(2698.223,0.,4194.67),(2698.223,-100.,4194.67),(2768.934,0.,4123.959),(1031.066,-100.,4123.959),(1101.777,0.,4194.67),(1031.066,0.,4123.959),(1101.777,-100.,4194.67),(4548.223,-100.,2344.67),(4618.934,0.,2273.959),(4548.223,0.,2344.67),(4618.934,-100.,2273.959),(1950.,0.,5225.736),(1850.,0.,5025.736),(1950.,0.,5025.736),(1850.,0.,5225.736),(1900.,0.,5275.736),(1850.,0.,5225.736),(960.355,-100.,4336.091),(1850.,-100.,5225.736),(960.355,0.,4336.091),(1900.,0.,5275.736),(1900.,100.,5275.736),(889.645,0.,4265.381),(0.,-100.,3375.736),(889.645,-100.,4265.381),(0.,100.,3375.736),(5200.,100.,-250.),(0.,-100.,-250.),(0.,100.,-250.),(5200.,-100.,-250.),(2839.645,-100.,4336.091),(1950.,0.,5225.736),(1950.,-100.,5225.736),(3764.645,-100.,3411.091),(2910.355,0.,4265.381),(2910.355,-100.,4265.381),(4689.645,-100.,2486.091),(3835.355,0.,3340.381),(3835.355,-100.,3340.381),(5200.,-100.,1975.736),(4760.355,0.,2415.381),(4760.355,-100.,2415.381),(1900.,0.,5275.736),(5200.,100.,1975.736),(1900.,100.,5275.736),(2839.645,0.,4336.091),(3764.645,0.,3411.091),(4689.645,0.,2486.091))); +#86=IFCSTYLEDITEM(#84,(#89),$); +#87=IFCSURFACESTYLERENDERING(#88,0.,$,$,$,$,$,$,.NOTDEFINED.); +#88=IFCCOLOURRGB($,1.,1.,1.); +#89=IFCSURFACESTYLE('stone_sand-lime',.BOTH.,(#87)); +#90=IFCPRODUCTDEFINITIONSHAPE($,$,(#83)); +#91=IFCWALLTYPE('0KOC4PbVP4CgUUcPIljzX8',#1,'house - outer wall - house front','A solid outer wall, forming the front of the house.',$,$,$,'919267','solidwall',.SOLIDWALL.); +#92=IFCRELDEFINESBYTYPE('2j$nW3pT9Fewa4SjRDvSsa',#1,$,$,(#93),#91); +#93=IFCWALL('3SGBcf7Lv0r80vKtUCgOpf',#1,'house - outer wall - house front','A solid outer wall, forming the front of the house.','solidwall',#100,#109,'454425.1027891.979946.932083.920035',$); +#94=IFCQUANTITYVOLUME('NetVolume',$,$,2.9313093077792756,$); +#95=IFCQUANTITYLENGTH('Width',$,$,200.,$); +#96=IFCQUANTITYLENGTH('Length',$,$,3800.,$); +#97=IFCQUANTITYAREA('NetSideArea',$,$,14.656546538889096,$); +#98=IFCELEMENTQUANTITY('16ypQdqOfFPRN_JffpLWds',#1,'Qto_WallBaseQuantities',$,'BaseQuantities',(#94,#95,#96,#97)); +#99=IFCRELDEFINESBYPROPERTIES('1nAyJKS612oQ79hEiQiVgg',#1,$,$,(#93),#98); +#100=IFCLOCALPLACEMENT(#47,#101); +#101=IFCAXIS2PLACEMENT3D(#102,#103,#104); +#102=IFCCARTESIANPOINT((0.,0.,0.)); +#103=IFCDIRECTION((0.,0.,1.)); +#104=IFCDIRECTION((1.,-7.168623403958414E-16,0.)); +#105=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#106)); +#106=IFCTRIANGULATEDFACESET(#107,((0.,1.1550582712516207E-14,1.),(0.,1.1550582712516207E-14,1.),(0.,1.1550582712516207E-14,1.),(0.,1.1550582712516207E-14,1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(1.,-1.8932661725304286E-30,0.),(1.,-1.8932661725304286E-30,0.),(1.,-1.8932661725304286E-30,0.),(1.,-1.8932661725304286E-30,0.),(-1.,1.8932661725304286E-30,0.),(-1.,1.8932661725304286E-30,0.),(-1.,1.8932661725304286E-30,0.),(-1.,1.8932661725304286E-30,0.),(2.6683192199736136E-28,-1.1550582712516207E-14,-1.),(2.6683192199736136E-28,-1.1550582712516207E-14,-1.),(2.6683192199736136E-28,-1.1550582712516207E-14,-1.),(2.6683192199736136E-28,-1.1550582712516207E-14,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(1.,1.1550582712516422E-14,0.),(1.,1.1550582712516422E-14,0.),(1.,1.1550582712516422E-14,0.),(1.,1.1550582712516422E-14,0.),(-1.,-1.1550582712516422E-14,2.6683192199736127E-28),(-1.,-1.1550582712516422E-14,2.6683192199736127E-28),(-1.,-1.1550582712516422E-14,2.6683192199736127E-28),(-1.,-1.1550582712516422E-14,2.6683192199736127E-28),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(3.933735155787816E-16,1.,1.3194156759284187E-14),(-0.7071067811865455,4.61702870412606E-14,0.7071067811865497),(-0.7071067811865455,4.61702870412606E-14,0.7071067811865497),(-0.7071067811865455,4.61702870412606E-14,0.7071067811865497),(-0.7071067811865455,4.61702870412606E-14,0.7071067811865497),(-0.7071067811865455,4.61702870412606E-14,0.7071067811865497),(-0.7071067811865455,4.61702870412606E-14,0.7071067811865497),(-0.7071067811865455,4.61702870412606E-14,0.7071067811865497),(-0.7071067811865455,4.61702870412606E-14,0.7071067811865497),(-0.7071067811865455,4.61702870412606E-14,0.7071067811865497),(-0.7071067811865455,4.61702870412606E-14,0.7071067811865497),(-1.276171150417997E-15,1.,1.2761711504181268E-15),(-1.276171150417997E-15,1.,1.2761711504181268E-15),(-1.276171150417997E-15,1.,1.2761711504181268E-15),(-1.276171150417997E-15,1.,1.2761711504181268E-15),(1.2761711504180312E-15,1.,1.2761711504180075E-15),(1.2761711504180312E-15,1.,1.2761711504180075E-15),(1.2761711504180312E-15,1.,1.2761711504180075E-15),(1.2761711504180312E-15,1.,1.2761711504180075E-15),(-1.,9.023892744154552E-15,2.4364510409213664E-14),(-1.,9.023892744154552E-15,2.4364510409213664E-14),(-1.,9.023892744154552E-15,2.4364510409213664E-14),(-1.,9.023892744154552E-15,2.4364510409213664E-14),(0.707106781186557,-2.6823203325055444E-14,0.7071067811865381),(0.707106781186557,-2.6823203325055444E-14,0.7071067811865381),(0.707106781186557,-2.6823203325055444E-14,0.7071067811865381),(0.707106781186557,-2.6823203325055444E-14,0.7071067811865381),(1.,1.4799184100408844E-13,-6.497202775791329E-14),(1.,1.4799184100408844E-13,-6.497202775791329E-14),(1.,1.4799184100408844E-13,-6.497202775791329E-14),(1.,1.4799184100408844E-13,-6.497202775791329E-14),(-0.7071067811865521,2.5526613436237096E-15,-0.7071067811865429),(-0.7071067811865521,2.5526613436237096E-15,-0.7071067811865429),(-0.7071067811865521,2.5526613436237096E-15,-0.7071067811865429),(-0.7071067811865521,2.5526613436237096E-15,-0.7071067811865429),(0.7071067811865704,6.256046213579085E-14,-0.7071067811865246),(0.7071067811865704,6.256046213579085E-14,-0.7071067811865246),(0.7071067811865704,6.256046213579085E-14,-0.7071067811865246),(0.7071067811865704,6.256046213579085E-14,-0.7071067811865246),(-0.7071067811865511,-1.2803825152143146E-14,0.7071067811865439),(-0.7071067811865511,-1.2803825152143146E-14,0.7071067811865439),(-0.7071067811865511,-1.2803825152143146E-14,0.7071067811865439),(-0.7071067811865511,-1.2803825152143146E-14,0.7071067811865439),(0.707106781186563,-5.5041527586499864E-15,0.7071067811865321),(0.707106781186563,-5.5041527586499864E-15,0.7071067811865321),(0.707106781186563,-5.5041527586499864E-15,0.7071067811865321),(0.707106781186563,-5.5041527586499864E-15,0.7071067811865321),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(-0.7071067811864788,5.125688251852756E-15,0.7071067811866163),(-0.7071067811864788,5.125688251852756E-15,0.7071067811866163),(-0.7071067811864788,5.125688251852756E-15,0.7071067811866163),(-0.7071067811864788,5.125688251852756E-15,0.7071067811866163),(-1.6127472346338368E-27,1.,4.465001265314941E-15),(-1.6127472346338368E-27,1.,4.465001265314941E-15),(-1.6127472346338368E-27,1.,4.465001265314941E-15),(-1.6127472346338368E-27,1.,4.465001265314941E-15),(-1.6127472346338368E-27,1.,4.465001265314941E-15),(-1.,3.764916747943196E-14,4.977688896942616E-17),(-1.,3.764916747943196E-14,4.977688896942616E-17),(-1.,3.764916747943196E-14,4.977688896942616E-17),(-1.,3.764916747943196E-14,4.977688896942616E-17),(0.707106781186534,1.3284458036190054E-14,0.707106781186561),(0.707106781186534,1.3284458036190054E-14,0.707106781186561),(0.707106781186534,1.3284458036190054E-14,0.707106781186561),(0.707106781186534,1.3284458036190054E-14,0.707106781186561),(0.707106781186534,1.3284458036190054E-14,0.707106781186561),(0.707106781186534,1.3284458036190054E-14,0.707106781186561),(0.707106781186534,1.3284458036190054E-14,0.707106781186561),(0.707106781186534,1.3284458036190054E-14,0.707106781186561),(0.707106781186534,1.3284458036190054E-14,0.707106781186561),(0.707106781186534,1.3284458036190054E-14,0.707106781186561),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(-4.871119585985193E-15,-1.,-1.0132084825662725E-14),(1.,6.309860718924715E-15,1.333823416031891E-29),(1.,6.309860718924715E-15,1.333823416031891E-29),(1.,6.309860718924715E-15,1.333823416031891E-29),(1.,6.309860718924715E-15,1.333823416031891E-29),(6.44563767439433E-17,-4.511946372076356E-16,-1.),(6.44563767439433E-17,-4.511946372076356E-16,-1.),(6.44563767439433E-17,-4.511946372076356E-16,-1.),(6.44563767439433E-17,-4.511946372076356E-16,-1.)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24),(25,26,27),(26,25,28),(29,30,31),(30,29,32),(33,34,35),(34,33,36),(36,33,37),(37,33,38),(36,37,39),(36,39,40),(36,40,41),(42,43,44),(43,42,45),(45,42,33),(33,42,38),(38,42,46),(46,42,47),(47,42,48),(46,47,39),(39,47,40),(47,49,40),(49,47,50),(49,50,51),(49,51,52),(52,51,53),(53,51,54),(52,55,56),(55,52,53),(57,58,59),(58,57,60),(58,60,61),(61,60,62),(62,60,63),(62,63,64),(63,60,65),(66,59,58),(67,68,69),(68,67,70),(71,72,73),(72,71,74),(75,76,77),(76,75,78),(79,80,81),(80,79,82),(83,84,85),(84,83,86),(87,88,89),(88,87,90),(91,92,93),(92,91,94),(95,96,97),(96,95,98),(99,100,101),(100,99,102),(103,104,105),(104,103,106),(107,108,109),(108,107,110),(111,112,113),(112,111,114),(114,111,115),(116,117,118),(117,116,119),(120,121,122),(121,120,123),(121,123,124),(121,124,125),(124,123,126),(126,123,127),(127,123,128),(129,125,124),(130,131,132),(131,130,133),(131,133,134),(134,133,135),(135,133,136),(136,133,137),(136,137,138),(134,139,140),(139,134,141),(141,134,142),(142,134,135),(141,142,138),(141,138,137),(143,144,145),(144,143,146),(147,148,149),(148,147,150)),$); +#107=IFCCARTESIANPOINTLIST3D(((2350.,0.,3200.),(1850.,200.,3200.),(1850.,0.,3200.),(2350.,200.,3200.),(2600.,200.,2200.),(1600.,0.,2200.),(1600.,200.,2200.),(2600.,0.,2200.),(1600.,200.,-250.),(1600.,0.,2200.),(1600.,0.,-250.),(1600.,200.,2200.),(2600.,200.,2200.),(2600.,0.,-250.),(2600.,0.,2200.),(2600.,200.,-250.),(1850.,200.,3700.),(2350.,0.,3700.),(1850.,0.,3700.),(2350.,200.,3700.),(200.,200.,-250.),(1600.,0.,-250.),(200.,0.,-250.),(1600.,200.,-250.),(1850.,200.,3200.),(1850.,0.,3700.),(1850.,0.,3200.),(1850.,200.,3700.),(2350.,200.,3700.),(2350.,0.,3200.),(2350.,0.,3700.),(2350.,200.,3200.),(2600.,200.,2200.),(4000.,200.,-250.),(2600.,200.,-250.),(4000.,200.,3375.736),(2350.,200.,3200.),(1850.,200.,3200.),(2350.,200.,3700.),(2968.934,200.,4123.959),(3110.355,200.,4265.381),(200.,200.,3375.736),(1600.,200.,-250.),(200.,200.,-250.),(1600.,200.,2200.),(1850.,200.,3700.),(1231.066,200.,4123.959),(1089.645,200.,4265.381),(2898.223,200.,4194.67),(1301.777,200.,4194.67),(1160.355,200.,4336.091),(3039.645,200.,4336.091),(2050.,200.,5025.736),(2050.,200.,5225.736),(2150.,200.,5025.736),(2150.,200.,5225.736),(200.,0.,3375.736),(1089.645,100.,4265.381),(200.,200.,3375.736),(2100.,0.,5275.736),(1160.355,100.,4336.091),(1160.355,200.,4336.091),(2050.,100.,5225.736),(2050.,200.,5225.736),(2100.,100.,5275.736),(1089.645,200.,4265.381),(1089.645,100.,4265.381),(1301.777,100.,4194.67),(1231.066,100.,4123.959),(1160.355,100.,4336.091),(2898.223,100.,4194.67),(3110.355,100.,4265.381),(2968.934,100.,4123.959),(3039.645,100.,4336.091),(2150.,200.,5225.736),(2150.,100.,5025.736),(2150.,100.,5225.736),(2150.,200.,5025.736),(1231.066,200.,4123.959),(1089.645,100.,4265.381),(1231.066,100.,4123.959),(1089.645,200.,4265.381),(2050.,200.,5025.736),(2050.,100.,5225.736),(2050.,100.,5025.736),(2050.,200.,5225.736),(1160.355,100.,4336.091),(1301.777,200.,4194.67),(1301.777,100.,4194.67),(1160.355,200.,4336.091),(2898.223,100.,4194.67),(3039.645,200.,4336.091),(3039.645,100.,4336.091),(2898.223,200.,4194.67),(3110.355,200.,4265.381),(2968.934,100.,4123.959),(3110.355,100.,4265.381),(2968.934,200.,4123.959),(2968.934,200.,4123.959),(2898.223,100.,4194.67),(2968.934,100.,4123.959),(2898.223,200.,4194.67),(2050.,100.,5025.736),(2150.,200.,5025.736),(2050.,200.,5025.736),(2150.,100.,5025.736),(1301.777,100.,4194.67),(1231.066,200.,4123.959),(1231.066,100.,4123.959),(1301.777,200.,4194.67),(2050.,100.,5225.736),(2150.,100.,5025.736),(2050.,100.,5025.736),(2150.,100.,5225.736),(2100.,100.,5275.736),(200.,200.,3375.736),(200.,0.,-250.),(200.,0.,3375.736),(200.,200.,-250.),(2100.,0.,5275.736),(2150.,100.,5225.736),(2100.,100.,5275.736),(4000.,0.,3375.736),(3039.645,100.,4336.091),(2150.,200.,5225.736),(3110.355,100.,4265.381),(3110.355,200.,4265.381),(4000.,200.,3375.736),(3039.645,200.,4336.091),(4000.,0.,-250.),(2600.,0.,2200.),(2600.,0.,-250.),(4000.,0.,3375.736),(1600.,0.,2200.),(2350.,0.,3200.),(2350.,0.,3700.),(2100.,0.,5275.736),(1850.,0.,3700.),(200.,0.,-250.),(1600.,0.,-250.),(200.,0.,3375.736),(1850.,0.,3200.),(4000.,200.,-250.),(4000.,0.,3375.736),(4000.,0.,-250.),(4000.,200.,3375.736),(4000.,200.,-250.),(2600.,0.,-250.),(2600.,200.,-250.),(4000.,0.,-250.))); +#108=IFCSTYLEDITEM(#106,(#89),$); +#109=IFCPRODUCTDEFINITIONSHAPE($,$,(#105)); +#110=IFCWALLTYPE('2JyKYAYaHEEwkOiNxZBS0J',#1,'house - outer wall - house front right','A solid outer wall, forming the front right side of the house.',$,$,$,'919673','solidwall',.SOLIDWALL.); +#111=IFCRELDEFINESBYTYPE('0Lutqys6D3UQmJeJXWcI9a',#1,$,$,(#112),#110); +#112=IFCWALL('3oNJ9yHi5FJuFnK8yg68Yt',#1,'house - outer wall - house front right','A solid outer wall, forming the front right side of the house.','solidwall',#119,#128,'454425.1027891.979946.932083.920036',$); +#113=IFCQUANTITYVOLUME('NetVolume',$,$,0.7456913421348147,$); +#114=IFCQUANTITYLENGTH('Width',$,$,200.,$); +#115=IFCQUANTITYLENGTH('Length',$,$,1300.,$); +#116=IFCQUANTITYAREA('NetSideArea',$,$,3.728456710673145,$); +#117=IFCELEMENTQUANTITY('3bBRc0zyj8ePcw96tcBOrQ',#1,'Qto_WallBaseQuantities',$,'BaseQuantities',(#113,#114,#115,#116)); +#118=IFCRELDEFINESBYPROPERTIES('03Urj8W8HEYfq2z7EyWvm1',#1,$,$,(#112),#117); +#119=IFCLOCALPLACEMENT(#47,#120); +#120=IFCAXIS2PLACEMENT3D(#121,#122,#123); +#121=IFCCARTESIANPOINT((5400.,1900.,0.)); +#122=IFCDIRECTION((7.573624267414214E-15,-8.358548678879859E-30,1.)); +#123=IFCDIRECTION((-1.,-1.0829689592158854E-14,7.573624267414214E-15)); +#124=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#125)); +#125=IFCTRIANGULATEDFACESET(#126,((-2.661898271520319E-14,-1.,4.476505013608623E-15),(-2.661898271520319E-14,-1.,4.476505013608623E-15),(-2.661898271520319E-14,-1.,4.476505013608623E-15),(-2.661898271520319E-14,-1.,4.476505013608623E-15),(-2.661898271520319E-14,-1.,4.476505013608623E-15),(-2.661898271520319E-14,-1.,4.476505013608623E-15),(-2.661898271520319E-14,-1.,4.476505013608623E-15),(-2.661898271520319E-14,-1.,4.476505013608623E-15),(6.264249027916633E-15,-1.,-1.7866396105848336E-14),(6.264249027916633E-15,-1.,-1.7866396105848336E-14),(6.264249027916633E-15,-1.,-1.7866396105848336E-14),(6.264249027916633E-15,-1.,-1.7866396105848336E-14),(-0.7071067811865585,1.0329135437736341E-14,-0.7071067811865368),(-0.7071067811865585,1.0329135437736341E-14,-0.7071067811865368),(-0.7071067811865585,1.0329135437736341E-14,-0.7071067811865368),(-0.7071067811865585,1.0329135437736341E-14,-0.7071067811865368),(0.7071067811865657,7.646135024566304E-14,0.7071067811865295),(0.7071067811865657,7.646135024566304E-14,0.7071067811865295),(0.7071067811865657,7.646135024566304E-14,0.7071067811865295),(0.7071067811865657,7.646135024566304E-14,0.7071067811865295),(-0.7071067811865025,1.8175258417197414E-15,0.7071067811865925),(-0.7071067811865025,1.8175258417197414E-15,0.7071067811865925),(-0.7071067811865025,1.8175258417197414E-15,0.7071067811865925),(-0.7071067811865025,1.8175258417197414E-15,0.7071067811865925),(1.8345276457941856E-16,-2.3349322475495577E-14,-1.),(1.8345276457941856E-16,-2.3349322475495577E-14,-1.),(1.8345276457941856E-16,-2.3349322475495577E-14,-1.),(1.8345276457941856E-16,-2.3349322475495577E-14,-1.),(-1.,-2.3572001107331336E-13,1.4709264666823317E-14),(-1.,-2.3572001107331336E-13,1.4709264666823317E-14),(-1.,-2.3572001107331336E-13,1.4709264666823317E-14),(-1.,-2.3572001107331336E-13,1.4709264666823317E-14),(1.,-1.4430286570848327E-14,2.3040049383719444E-18),(1.,-1.4430286570848327E-14,2.3040049383719444E-18),(1.,-1.4430286570848327E-14,2.3040049383719444E-18),(1.,-1.4430286570848327E-14,2.3040049383719444E-18),(-0.7071067811865394,-7.445967753945548E-14,0.7071067811865558),(-0.7071067811865394,-7.445967753945548E-14,0.7071067811865558),(-0.7071067811865394,-7.445967753945548E-14,0.7071067811865558),(-0.7071067811865394,-7.445967753945548E-14,0.7071067811865558),(-0.7071067811865394,-7.445967753945548E-14,0.7071067811865558),(-0.7071067811865394,-7.445967753945548E-14,0.7071067811865558),(-0.7071067811865394,-7.445967753945548E-14,0.7071067811865558),(-0.7071067811865394,-7.445967753945548E-14,0.7071067811865558),(1.8833504969879846E-14,1.,-7.418145606654705E-15),(1.8833504969879846E-14,1.,-7.418145606654705E-15),(1.8833504969879846E-14,1.,-7.418145606654705E-15),(1.8833504969879846E-14,1.,-7.418145606654705E-15)),$,((1,2,3),(2,1,4),(2,4,5),(2,5,6),(4,1,7),(8,6,5),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24),(25,26,27),(26,25,28),(29,30,31),(30,29,32),(33,34,35),(34,33,36),(37,38,39),(40,41,42),(41,40,43),(41,43,44),(42,41,38),(42,38,37),(45,46,47),(46,45,48)),$); +#126=IFCCARTESIANPOINTLIST3D(((1300.,-100.,3275.736),(0.,-100.,-250.),(1300.,-100.,-250.),(651.777,-100.,2344.67),(581.066,-100.,2273.959),(0.,-100.,1975.736),(510.355,-100.,2486.091),(439.645,-100.,2415.381),(651.777,0.,2344.67),(439.645,0.,2415.381),(581.066,0.,2273.959),(510.355,0.,2486.091),(510.355,-100.,2486.091),(651.777,0.,2344.67),(651.777,-100.,2344.67),(510.355,0.,2486.091),(581.066,0.,2273.959),(439.645,-100.,2415.381),(581.066,-100.,2273.959),(439.645,0.,2415.381),(581.066,-100.,2273.959),(651.777,0.,2344.67),(581.066,0.,2273.959),(651.777,-100.,2344.67),(1300.,100.,-250.),(0.,-100.,-250.),(0.,100.,-250.),(1300.,-100.,-250.),(0.,-100.,1975.736),(0.,100.,-250.),(0.,-100.,-250.),(0.,100.,1975.736),(1300.,100.,-250.),(1300.,-100.,3275.736),(1300.,-100.,-250.),(1300.,100.,3275.736),(1300.,-100.,3275.736),(510.355,0.,2486.091),(510.355,-100.,2486.091),(0.,100.,1975.736),(439.645,0.,2415.381),(1300.,100.,3275.736),(0.,-100.,1975.736),(439.645,-100.,2415.381),(0.,100.,1975.736),(1300.,100.,-250.),(0.,100.,-250.),(1300.,100.,3275.736))); +#127=IFCSTYLEDITEM(#125,(#89),$); +#128=IFCPRODUCTDEFINITIONSHAPE($,$,(#124)); +#129=IFCCHIMNEYTYPE('2vWR$XNSf2qhsAEJMXcZLU',#1,'house - chimney','A chimney, standing tall and proud, guiding smoke away from the home.',$,$,$,'884350','flue',.USERDEFINED.); +#130=IFCRELDEFINESBYTYPE('22pEICzjP0uQNvM7rXMZ6g',#1,$,$,(#131),#129); +#131=IFCCHIMNEY('3Fbgsvr8nAYfGs9y5keub0',#1,'house - chimney','A chimney, standing tall and proud, guiding smoke away from the home.','flue',#132,#144,'454425.1027891.979946.932083.2023772',$); +#132=IFCLOCALPLACEMENT(#47,#133); +#133=IFCAXIS2PLACEMENT3D(#134,#135,#136); +#134=IFCCARTESIANPOINT((4700.,5300.,0.)); +#135=IFCDIRECTION((0.,0.,1.)); +#136=IFCDIRECTION((-1.3173934614068503E-15,-1.,0.)); +#137=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#138,#141)); +#138=IFCTRIANGULATEDFACESET(#139,((1.,1.1428889650288931E-15,-1.7079616105392333E-16),(1.,1.1428889650288931E-15,-1.7079616105392333E-16),(1.,1.1428889650288931E-15,-1.7079616105392333E-16),(1.,1.1428889650288931E-15,-1.7079616105392333E-16),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(-4.404519077503367E-16,-1.216614111042097E-15,-1.),(-4.404519077503367E-16,-1.216614111042097E-15,-1.),(-4.404519077503367E-16,-1.216614111042097E-15,-1.),(-4.404519077503367E-16,-1.216614111042097E-15,-1.),(1.932260958298326E-14,-1.,4.812742796881703E-15),(1.932260958298326E-14,-1.,4.812742796881703E-15),(1.932260958298326E-14,-1.,4.812742796881703E-15),(1.932260958298326E-14,-1.,4.812742796881703E-15),(-2.284521082752207E-17,1.,0.),(-2.284521082752207E-17,1.,0.),(-2.284521082752207E-17,1.,0.),(-2.284521082752207E-17,1.,0.),(0.9486832980505189,-0.3162277660168231,4.503028113945746E-16),(0.9486832980505189,-0.3162277660168231,4.503028113945746E-16),(0.9486832980505189,-0.3162277660168231,4.503028113945746E-16),(0.9486832980505189,-0.3162277660168231,4.503028113945746E-16),(0.9486832980505189,-0.3162277660168231,4.503028113945746E-16),(3.1628776618586504E-30,1.2031856992204359E-14,1.),(3.1628776618586504E-30,1.2031856992204359E-14,1.),(3.1628776618586504E-30,1.2031856992204359E-14,1.),(3.1628776618586504E-30,1.2031856992204359E-14,1.),(2.284521082752207E-17,-1.,0.),(2.284521082752207E-17,-1.,0.),(2.284521082752207E-17,-1.,0.),(2.284521082752207E-17,-1.,0.),(2.284521082752207E-17,-1.,0.),(2.284521082752207E-17,-1.,0.),(2.284521082752207E-17,-1.,0.),(2.284521082752207E-17,-1.,0.),(-1.,-4.029468829054302E-15,-1.9625459803697525E-16),(-1.,-4.029468829054302E-15,-1.9625459803697525E-16),(-1.,-4.029468829054302E-15,-1.9625459803697525E-16),(-1.,-4.029468829054302E-15,-1.9625459803697525E-16),(1.800491663919249E-16,-9.023892744152575E-15,-1.),(1.800491663919249E-16,-9.023892744152575E-15,-1.),(1.800491663919249E-16,-9.023892744152575E-15,-1.),(1.800491663919249E-16,-9.023892744152575E-15,-1.),(-0.9486832980505118,-0.3162277660168441,2.7451152156169216E-15),(-0.9486832980505118,-0.3162277660168441,2.7451152156169216E-15),(-0.9486832980505118,-0.3162277660168441,2.7451152156169216E-15),(-0.9486832980505118,-0.3162277660168441,2.7451152156169216E-15),(-0.9486832980505118,-0.3162277660168441,2.7451152156169216E-15)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(8,5,9),(8,9,10),(10,9,11),(11,9,12),(12,9,13),(5,14,15),(14,5,16),(16,5,7),(14,16,17),(14,17,18),(14,18,19),(14,19,20),(14,20,13),(14,13,9),(21,22,23),(22,21,24),(25,26,27),(26,25,28),(29,30,31),(30,29,32),(33,34,35),(34,33,36),(36,33,37),(38,39,40),(39,38,41),(42,43,44),(43,42,45),(43,45,46),(46,45,47),(44,48,49),(48,44,43),(49,48,47),(49,47,45),(50,51,52),(51,50,53),(54,55,56),(55,54,57),(58,59,60),(59,58,61),(61,58,62)),$); +#139=IFCCARTESIANPOINTLIST3D(((700.,700.,-250.),(700.,0.,4700.),(700.,0.,-250.),(700.,700.,4700.),(0.,0.,4700.),(263.397,150.,4700.),(250.,200.,4700.),(300.,113.397,4700.),(700.,0.,4700.),(350.,100.,4700.),(400.,113.397,4700.),(436.603,150.,4700.),(450.,200.,4700.),(700.,700.,4700.),(0.,700.,4700.),(263.397,250.,4700.),(300.,286.603,4700.),(350.,300.,4700.),(400.,286.603,4700.),(436.603,250.,4700.),(700.,700.,-250.),(0.,0.,-250.),(0.,700.,-250.),(700.,0.,-250.),(500.,300.,700.),(200.,300.,300.),(500.,300.,300.),(200.,300.,700.),(0.,700.,4700.),(700.,700.,-250.),(0.,700.,-250.),(700.,700.,4700.),(200.,300.,300.),(100.,0.,700.),(100.,0.,300.),(116.667,50.,700.),(200.,300.,700.),(600.,0.,300.),(200.,300.,300.),(100.,0.,300.),(500.,300.,300.),(700.,0.,-250.),(600.,0.,300.),(0.,0.,-250.),(700.,0.,4700.),(600.,0.,700.),(100.,0.,700.),(100.,0.,300.),(0.,0.,4700.),(0.,700.,4700.),(0.,0.,-250.),(0.,0.,4700.),(0.,700.,-250.),(116.667,50.,700.),(600.,0.,700.),(100.,0.,700.),(583.333,50.,700.),(583.333,50.,700.),(600.,0.,300.),(600.,0.,700.),(500.,300.,300.),(500.,300.,700.))); +#140=IFCSTYLEDITEM(#138,(#89),$); +#141=IFCTRIANGULATEDFACESET(#142,((0.8660254037844475,-0.49999999999998496,-1.389426387474337E-16),(0.49999999999996514,-0.8660254037844588,-2.6441663130442275E-16),(0.8660254037844493,-0.49999999999998185,-1.3894263874742806E-16),(0.49999999999996364,-0.8660254037844597,-2.6441663130442083E-16),(-0.8660254037844538,0.49999999999997397,4.818331962219046E-16),(-0.5000000000000346,0.8660254037844188,1.392004735703411E-16),(-0.5000000000000336,0.8660254037844193,1.392004735703392E-16),(-0.8660254037844549,0.49999999999997186,4.81833196221904E-16),(-0.8660254037844273,-0.5000000000000197,-5.700127056491173E-16),(-1.,-1.6171073399747118E-14,-8.817950942720281E-17),(-1.,-1.3299061495040901E-14,-8.817950942719746E-17),(-0.8660254037844263,-0.5000000000000218,-5.700127056491173E-16),(-2.4004711383966796E-14,0.9701425001453376,-0.24253562503631018),(-2.4004711383966796E-14,0.9701425001453376,-0.24253562503631018),(-2.4004711383966796E-14,0.9701425001453376,-0.24253562503631018),(-2.4004711383966796E-14,0.9701425001453376,-0.24253562503631018),(-2.4004711383966796E-14,0.9701425001453376,-0.24253562503631018),(-2.4004711383966796E-14,0.9701425001453376,-0.24253562503631018),(-2.4004711383966796E-14,0.9701425001453376,-0.24253562503631018),(1.7389063657870903E-14,-0.9701425001453303,-0.24253562503633982),(1.7389063657870903E-14,-0.9701425001453303,-0.24253562503633982),(1.7389063657870903E-14,-0.9701425001453303,-0.24253562503633982),(1.7389063657870903E-14,-0.9701425001453303,-0.24253562503633982),(1.7389063657870903E-14,-0.9701425001453303,-0.24253562503633982),(-8.708917960971257E-17,1.2226263772440967E-14,1.),(-8.708917960971257E-17,1.2226263772440967E-14,1.),(-8.708917960971257E-17,1.2226263772440967E-14,1.),(-8.708917960971257E-17,1.2226263772440967E-14,1.),(-8.708917960971257E-17,1.2226263772440967E-14,1.),(-8.708917960971257E-17,1.2226263772440967E-14,1.),(-8.708917960971257E-17,1.2226263772440967E-14,1.),(-8.708917960971257E-17,1.2226263772440967E-14,1.),(-6.815141820410568E-16,-1.646623560614838E-14,-1.),(-6.815141820410568E-16,-1.646623560614838E-14,-1.),(-6.815141820410568E-16,-1.646623560614838E-14,-1.),(-6.815141820410568E-16,-1.646623560614838E-14,-1.),(-6.815141820410568E-16,-1.646623560614838E-14,-1.),(-6.815141820410568E-16,-1.646623560614838E-14,-1.),(-6.815141820410568E-16,-1.646623560614838E-14,-1.),(-6.815141820410568E-16,-1.646623560614838E-14,-1.),(-6.815141820410568E-16,-1.646623560614838E-14,-1.),(1.,-6.236107377798383E-14,1.9000613460615482E-16),(0.8660254037844839,0.4999999999999216,-3.6638489249847504E-16),(0.8660254037844851,0.49999999999991973,-3.663848924984712E-16),(1.,-5.998297474860927E-14,1.9000613460615403E-16),(9.358070330260165E-16,-1.6754987712617552E-14,-1.),(9.358070330260165E-16,-1.6754987712617552E-14,-1.),(9.358070330260165E-16,-1.6754987712617552E-14,-1.),(9.358070330260165E-16,-1.6754987712617552E-14,-1.),(9.358070330260165E-16,-1.6754987712617552E-14,-1.),(9.358070330260165E-16,-1.6754987712617552E-14,-1.),(9.358070330260165E-16,-1.6754987712617552E-14,-1.),(9.358070330260165E-16,-1.6754987712617552E-14,-1.),(9.358070330260165E-16,-1.6754987712617552E-14,-1.),(-5.195231725710407E-15,-1.,-5.0935900712064705E-17),(0.49999999999996364,-0.8660254037844597,-2.6441663130442083E-16),(-6.183057476373683E-15,-1.,-5.0935900712064994E-17),(0.49999999999996514,-0.8660254037844588,-2.6441663130442275E-16),(-0.4999999999999174,-0.8660254037844863,-3.4276296232769373E-16),(-5.195231725710407E-15,-1.,-5.0935900712064705E-17),(-6.183057476373683E-15,-1.,-5.0935900712064994E-17),(-0.4999999999999189,-0.8660254037844854,-3.4276296232769516E-16),(0.5000000000000531,0.8660254037844081,-1.2417073468224445E-15),(-6.91478025464307E-15,1.,-9.63416900320066E-16),(0.5000000000000545,0.8660254037844074,-1.2417073468224425E-15),(-7.445279268888173E-15,1.,-9.634169003200647E-16),(-1.,-1.3299061495040901E-14,-8.817950942719746E-17),(-0.8660254037844549,0.49999999999997186,4.81833196221904E-16),(-0.8660254037844538,0.49999999999997397,4.818331962219046E-16),(-1.,-1.6171073399747118E-14,-8.817950942720281E-17),(-0.8571428571428575,-0.2857142857142929,-0.42857142857142305),(-0.8571428571428575,-0.2857142857142929,-0.42857142857142305),(-0.8571428571428575,-0.2857142857142929,-0.42857142857142305),(-0.8571428571428575,-0.2857142857142929,-0.42857142857142305),(-0.8660254037844263,-0.5000000000000218,-5.700127056491173E-16),(-0.4999999999999189,-0.8660254037844854,-3.4276296232769516E-16),(-0.4999999999999174,-0.8660254037844863,-3.4276296232769373E-16),(-0.8660254037844273,-0.5000000000000197,-5.700127056491173E-16),(-7.445279268888173E-15,1.,-9.634169003200647E-16),(-0.5000000000000346,0.8660254037844188,1.392004735703411E-16),(-6.91478025464307E-15,1.,-9.63416900320066E-16),(-0.5000000000000336,0.8660254037844193,1.392004735703392E-16),(0.8660254037844475,-0.49999999999998496,-1.389426387474337E-16),(1.,-5.998297474860927E-14,1.9000613460615403E-16),(1.,-6.236107377798383E-14,1.9000613460615482E-16),(0.8660254037844493,-0.49999999999998185,-1.3894263874742806E-16),(0.857142857142863,-0.28571428571427926,-0.42857142857142155),(0.857142857142863,-0.28571428571427926,-0.42857142857142155),(0.857142857142863,-0.28571428571427926,-0.42857142857142155),(0.857142857142863,-0.28571428571427926,-0.42857142857142155),(0.8660254037844851,0.49999999999991973,-3.663848924984712E-16),(0.5000000000000531,0.8660254037844081,-1.2417073468224445E-15),(0.5000000000000545,0.8660254037844074,-1.2417073468224425E-15),(0.8660254037844839,0.4999999999999216,-3.6638489249847504E-16)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(14,16,17),(17,16,18),(18,16,19),(20,21,22),(21,20,23),(23,20,24),(25,26,27),(26,25,28),(26,28,29),(29,28,30),(29,30,31),(29,31,32),(33,34,35),(34,33,36),(36,33,37),(38,39,40),(39,38,41),(39,41,37),(39,37,33),(42,43,44),(43,42,45),(46,47,48),(47,46,49),(49,46,50),(51,52,53),(52,51,54),(54,51,48),(48,51,46),(55,56,57),(56,55,58),(59,60,61),(60,59,62),(63,64,65),(64,63,66),(67,68,69),(68,67,70),(71,72,73),(72,71,74),(75,76,77),(76,75,78),(79,80,81),(80,79,82),(83,84,85),(84,83,86),(87,88,89),(88,87,90),(91,92,93),(92,91,94)),$); +#142=IFCCARTESIANPOINTLIST3D(((263.397,250.,900.),(300.,286.603,4700.),(263.397,250.,4700.),(300.,286.603,900.),(436.603,150.,4700.),(400.,113.397,900.),(400.,113.397,4700.),(436.603,150.,900.),(436.603,250.,4700.),(450.,200.,900.),(450.,200.,4700.),(436.603,250.,900.),(63.962,50.,700.),(583.333,50.,700.),(116.667,50.,700.),(180.629,100.,900.),(636.038,50.,700.),(519.371,100.,900.),(350.,100.,900.),(452.705,300.,900.),(163.962,350.,700.),(536.038,350.,700.),(247.295,300.,900.),(350.,300.,900.),(116.667,50.,700.),(163.962,350.,700.),(63.962,50.,700.),(200.,300.,700.),(536.038,350.,700.),(500.,300.,700.),(583.333,50.,700.),(636.038,50.,700.),(452.705,300.,900.),(400.,286.603,900.),(350.,300.,900.),(436.603,250.,900.),(450.,200.,900.),(400.,113.397,900.),(519.371,100.,900.),(350.,100.,900.),(436.603,150.,900.),(250.,200.,900.),(263.397,150.,4700.),(263.397,150.,900.),(250.,200.,4700.),(247.295,300.,900.),(263.397,250.,900.),(250.,200.,900.),(300.,286.603,900.),(350.,300.,900.),(180.629,100.,900.),(300.,113.397,900.),(350.,100.,900.),(263.397,150.,900.),(350.,300.,4700.),(300.,286.603,900.),(350.,300.,900.),(300.,286.603,4700.),(400.,286.603,900.),(350.,300.,4700.),(350.,300.,900.),(400.,286.603,4700.),(300.,113.397,4700.),(350.,100.,900.),(300.,113.397,900.),(350.,100.,4700.),(450.,200.,4700.),(436.603,150.,900.),(436.603,150.,4700.),(450.,200.,900.),(519.371,100.,900.),(536.038,350.,700.),(636.038,50.,700.),(452.705,300.,900.),(436.603,250.,900.),(400.,286.603,4700.),(400.,286.603,900.),(436.603,250.,4700.),(350.,100.,4700.),(400.,113.397,900.),(350.,100.,900.),(400.,113.397,4700.),(263.397,250.,900.),(250.,200.,4700.),(250.,200.,900.),(263.397,250.,4700.),(163.962,350.,700.),(180.629,100.,900.),(63.962,50.,700.),(247.295,300.,900.),(263.397,150.,900.),(300.,113.397,4700.),(300.,113.397,900.),(263.397,150.,4700.))); +#143=IFCSTYLEDITEM(#141,(#89),$); +#144=IFCPRODUCTDEFINITIONSHAPE($,$,(#137)); +#145=IFCWALLTYPE('3sv$5PJEr5hP_mSgN$A$GJ',#1,'house - inner wall','A solid inner wall, providing structural support within the house.',$,$,$,'919726','solidwall',.SOLIDWALL.); +#146=IFCRELDEFINESBYTYPE('03jzp7gAn8ZhZ3yNm_TOEt',#1,$,$,(#147),#145); +#147=IFCWALL('37GxndZsXCwBzM0QrdRDLo',#1,'house - inner wall','A solid inner wall, providing structural support within the house.','solidwall',#154,#163,'454425.1027891.979946.932083.2037932.920033',$); +#148=IFCQUANTITYVOLUME('NetVolume',$,$,3.0445740264050034,$); +#149=IFCQUANTITYLENGTH('Width',$,$,200.,$); +#150=IFCQUANTITYLENGTH('Length',$,$,3900.,$); +#151=IFCQUANTITYAREA('NetSideArea',$,$,15.22287013201683,$); +#152=IFCELEMENTQUANTITY('2ILQY4UQX6Hw0M8$NmV8EN',#1,'Qto_WallBaseQuantities',$,'BaseQuantities',(#148,#149,#150,#151)); +#153=IFCRELDEFINESBYPROPERTIES('3vQjmX5VP7zR3_yDAASj0o',#1,$,$,(#147),#152); +#154=IFCLOCALPLACEMENT(#47,#155); +#155=IFCAXIS2PLACEMENT3D(#156,#157,#158); +#156=IFCCARTESIANPOINT((4100.,1900.,0.)); +#157=IFCDIRECTION((7.573624267414218E-15,-7.358313131164392E-30,1.)); +#158=IFCDIRECTION((-1.,-1.0678030306608418E-14,7.573624267414218E-15)); +#159=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#160)); +#160=IFCTRIANGULATEDFACESET(#161,((-7.573624267414215E-15,1.3622338373475804E-31,-1.),(-7.573624267414215E-15,1.3622338373475804E-31,-1.),(-7.573624267414215E-15,1.3622338373475804E-31,-1.),(-7.573624267414215E-15,1.3622338373475804E-31,-1.),(1.,-2.2791814966265E-16,-7.573624267414215E-15),(1.,-2.2791814966265E-16,-7.573624267414215E-15),(1.,-2.2791814966265E-16,-7.573624267414215E-15),(1.,-2.2791814966265E-16,-7.573624267414215E-15),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(4.4052702174763076E-15,1.,-7.389549145832176E-16),(-0.7071067811865542,1.456211527056186E-13,0.7071067811865409),(-0.7071067811865542,1.456211527056186E-13,0.7071067811865409),(-0.7071067811865542,1.456211527056186E-13,0.7071067811865409),(-0.7071067811865542,1.456211527056186E-13,0.7071067811865409),(-1.,2.2791814966265E-16,7.573624267414215E-15),(-1.,2.2791814966265E-16,7.573624267414215E-15),(-1.,2.2791814966265E-16,7.573624267414215E-15),(-1.,2.2791814966265E-16,7.573624267414215E-15),(7.573624267414641E-15,3.6095570976610856E-14,1.),(7.573624267414641E-15,3.6095570976610856E-14,1.),(7.573624267414641E-15,3.6095570976610856E-14,1.),(7.573624267414641E-15,3.6095570976610856E-14,1.),(0.7071067811865381,9.84835966355381E-15,0.707106781186557),(0.7071067811865381,9.84835966355381E-15,0.707106781186557),(0.7071067811865381,9.84835966355381E-15,0.707106781186557),(0.7071067811865381,9.84835966355381E-15,0.707106781186557),(-0.7071067811865345,5.722903046632063E-16,0.7071067811865607),(-0.7071067811865345,5.722903046632063E-16,0.7071067811865607),(-0.7071067811865345,5.722903046632063E-16,0.7071067811865607),(-0.7071067811865345,5.722903046632063E-16,0.7071067811865607),(-0.7071067811865345,5.722903046632063E-16,0.7071067811865607),(-0.7071067811865345,5.722903046632063E-16,0.7071067811865607),(-0.7071067811865345,5.722903046632063E-16,0.7071067811865607),(-0.7071067811865345,5.722903046632063E-16,0.7071067811865607),(-1.4674833195258958E-14,-1.,6.380855752085726E-16),(-1.4674833195258958E-14,-1.,6.380855752085726E-16),(-1.4674833195258958E-14,-1.,6.380855752085726E-16),(-1.4674833195258958E-14,-1.,6.380855752085726E-16),(-0.7071067811865756,-6.357642206799978E-14,-0.7071067811865196),(-0.7071067811865756,-6.357642206799978E-14,-0.7071067811865196),(-0.7071067811865756,-6.357642206799978E-14,-0.7071067811865196),(-0.7071067811865756,-6.357642206799978E-14,-0.7071067811865196),(0.7071067811865529,1.0195785339222503E-13,0.7071067811865422),(0.7071067811865529,1.0195785339222503E-13,0.7071067811865422),(0.7071067811865529,1.0195785339222503E-13,0.7071067811865422),(0.7071067811865529,1.0195785339222503E-13,0.7071067811865422),(-1.,1.1756142296897498E-13,-1.9498053965047103E-14),(-1.,1.1756142296897498E-13,-1.9498053965047103E-14),(-1.,1.1756142296897498E-13,-1.9498053965047103E-14),(-1.,1.1756142296897498E-13,-1.9498053965047103E-14),(1.,-1.1756142296897498E-13,1.949805396505874E-14),(1.,-1.1756142296897498E-13,1.949805396505874E-14),(1.,-1.1756142296897498E-13,1.949805396505874E-14),(1.,-1.1756142296897498E-13,1.949805396505874E-14),(0.7071067811865349,-1.4282745190209122E-16,0.7071067811865603),(0.7071067811865349,-1.4282745190209122E-16,0.7071067811865603),(0.7071067811865349,-1.4282745190209122E-16,0.7071067811865603),(0.7071067811865349,-1.4282745190209122E-16,0.7071067811865603),(-0.7071067811865421,-1.460958033574882E-14,0.707106781186553),(-0.7071067811865421,-1.460958033574882E-14,0.707106781186553),(-0.7071067811865421,-1.460958033574882E-14,0.707106781186553),(-0.7071067811865421,-1.460958033574882E-14,0.707106781186553),(0.707106781186591,1.0288569416990323E-15,-0.7071067811865042),(0.707106781186591,1.0288569416990323E-15,-0.7071067811865042),(0.707106781186591,1.0288569416990323E-15,-0.7071067811865042),(0.707106781186591,1.0288569416990323E-15,-0.7071067811865042),(-0.707106781186591,-1.0288569416990323E-15,0.7071067811865042),(-0.707106781186591,-1.0288569416990323E-15,0.7071067811865042),(-0.707106781186591,-1.0288569416990323E-15,0.7071067811865042),(-0.707106781186591,-1.0288569416990323E-15,0.7071067811865042),(-0.7071067811865833,2.8378170286942335E-14,0.7071067811865117),(-0.7071067811865833,2.8378170286942335E-14,0.7071067811865117),(-0.7071067811865833,2.8378170286942335E-14,0.7071067811865117),(-0.7071067811865833,2.8378170286942335E-14,0.7071067811865117),(-0.7071067811865296,2.628887142738077E-16,-0.7071067811865657),(-0.7071067811865296,2.628887142738077E-16,-0.7071067811865657),(-0.7071067811865296,2.628887142738077E-16,-0.7071067811865657),(-0.7071067811865296,2.628887142738077E-16,-0.7071067811865657),(0.7071067811865638,-2.0014995352191287E-16,0.7071067811865313),(0.7071067811865638,-2.0014995352191287E-16,0.7071067811865313),(0.7071067811865638,-2.0014995352191287E-16,0.7071067811865313),(0.7071067811865638,-2.0014995352191287E-16,0.7071067811865313),(0.7071067811865464,2.4550279566219946E-16,0.7071067811865488),(0.7071067811865464,2.4550279566219946E-16,0.7071067811865488),(0.7071067811865464,2.4550279566219946E-16,0.7071067811865488),(0.7071067811865464,2.4550279566219946E-16,0.7071067811865488),(-7.573624267414215E-15,1.3622338373475804E-31,-1.),(-7.573624267414215E-15,1.3622338373475804E-31,-1.),(-7.573624267414215E-15,1.3622338373475804E-31,-1.),(-7.573624267414215E-15,1.3622338373475804E-31,-1.),(1.,-1.7984408250306067E-16,-7.514514211763427E-15),(1.,-1.7984408250306067E-16,-7.514514211763427E-15),(1.,-1.7984408250306067E-16,-7.514514211763427E-15),(1.,-1.7984408250306067E-16,-7.514514211763427E-15),(-2.98647878913672E-15,-2.3687718453397838E-15,-1.),(-2.98647878913672E-15,-2.3687718453397838E-15,-1.),(-2.98647878913672E-15,-2.3687718453397838E-15,-1.),(-2.98647878913672E-15,-2.3687718453397838E-15,-1.),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.994839256222842E-14,-1.,2.0142154177648575E-15),(-1.,2.6172812981112938E-15,-2.3040049383672112E-18),(-1.,2.6172812981112938E-15,-2.3040049383672112E-18),(-1.,2.6172812981112938E-15,-2.3040049383672112E-18),(-1.,2.6172812981112938E-15,-2.3040049383672112E-18)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(14,16,10),(14,10,12),(14,12,17),(17,12,18),(14,17,19),(20,21,22),(17,23,19),(23,17,24),(23,24,25),(25,24,22),(25,22,26),(25,26,27),(26,22,21),(28,14,19),(29,30,31),(30,29,32),(33,34,35),(34,33,36),(37,38,39),(38,37,40),(41,42,43),(42,41,44),(45,46,47),(48,49,50),(49,48,51),(49,51,52),(52,51,46),(52,46,45),(53,54,55),(54,53,56),(57,58,59),(58,57,60),(61,62,63),(62,61,64),(65,66,67),(66,65,68),(69,70,71),(70,69,72),(73,74,75),(74,73,76),(77,78,79),(78,77,80),(81,82,83),(82,81,84),(85,86,87),(86,85,88),(89,90,91),(90,89,92),(93,94,95),(94,93,96),(97,98,99),(98,97,100),(101,102,103),(102,101,104),(105,106,107),(106,105,108),(109,110,111),(110,109,112),(113,114,115),(114,113,116),(117,118,119),(118,117,120),(120,117,121),(121,117,122),(122,117,123),(123,117,124),(124,117,125),(125,117,126),(127,128,125),(128,127,129),(129,127,130),(129,130,131),(131,130,132),(132,130,133),(131,132,134),(135,131,134),(124,128,136),(128,124,125),(121,137,138),(137,121,139),(139,121,122),(139,122,140),(141,142,143),(142,141,144)),$); +#161=IFCCARTESIANPOINTLIST3D(((2500.,100.,2200.),(1500.,-100.,2200.),(1500.,100.,2200.),(2500.,-100.,2200.),(1500.,100.,-250.),(1500.,-100.,2200.),(1500.,-100.,-250.),(1500.,100.,2200.),(0.,100.,-250.),(1500.,100.,2200.),(1500.,100.,-250.),(0.,100.,3275.736),(2500.,100.,-250.),(3900.,100.,3375.736),(3900.,100.,-250.),(2500.,100.,2200.),(1131.066,100.,4123.959),(989.645,100.,4265.381),(2868.934,100.,4123.959),(1950.,100.,5225.736),(1950.,100.,5025.736),(1060.355,100.,4336.091),(2798.223,100.,4194.67),(1201.777,100.,4194.67),(2939.645,100.,4336.091),(2050.,100.,5025.736),(2050.,100.,5225.736),(3010.355,100.,4265.381),(1950.,-100.,5225.736),(1060.355,100.,4336.091),(1060.355,-100.,4336.091),(1950.,100.,5225.736),(2500.,-100.,2200.),(2500.,100.,-250.),(2500.,-100.,-250.),(2500.,100.,2200.),(2050.,-100.,5025.736),(1950.,100.,5025.736),(1950.,-100.,5025.736),(2050.,100.,5025.736),(2939.645,-100.,4336.091),(2050.,100.,5225.736),(2050.,-100.,5225.736),(2939.645,100.,4336.091),(989.645,-100.,4265.381),(135.355,0.,3411.091),(135.355,-100.,3411.091),(64.645,-100.,3340.381),(0.,100.,3275.736),(0.,-100.,3275.736),(64.645,0.,3340.381),(989.645,100.,4265.381),(276.777,0.,3269.67),(64.645,0.,3340.381),(206.066,0.,3198.959),(135.355,0.,3411.091),(135.355,0.,3411.091),(276.777,-100.,3269.67),(135.355,-100.,3411.091),(276.777,0.,3269.67),(206.066,-100.,3198.959),(64.645,0.,3340.381),(64.645,-100.,3340.381),(206.066,0.,3198.959),(2050.,100.,5225.736),(2050.,-100.,5025.736),(2050.,-100.,5225.736),(2050.,100.,5025.736),(1950.,100.,5025.736),(1950.,-100.,5225.736),(1950.,-100.,5025.736),(1950.,100.,5225.736),(1131.066,-100.,4123.959),(989.645,100.,4265.381),(989.645,-100.,4265.381),(1131.066,100.,4123.959),(206.066,-100.,3198.959),(276.777,0.,3269.67),(206.066,0.,3198.959),(276.777,-100.,3269.67),(2798.223,100.,4194.67),(2939.645,-100.,4336.091),(2798.223,-100.,4194.67),(2939.645,100.,4336.091),(3010.355,100.,4265.381),(2868.934,-100.,4123.959),(3010.355,-100.,4265.381),(2868.934,100.,4123.959),(1201.777,-100.,4194.67),(1131.066,100.,4123.959),(1131.066,-100.,4123.959),(1201.777,100.,4194.67),(1060.355,100.,4336.091),(1201.777,-100.,4194.67),(1060.355,-100.,4336.091),(1201.777,100.,4194.67),(2868.934,-100.,4123.959),(2798.223,100.,4194.67),(2798.223,-100.,4194.67),(2868.934,100.,4123.959),(3900.,-100.,3375.736),(3010.355,100.,4265.381),(3010.355,-100.,4265.381),(3900.,100.,3375.736),(2500.,100.,-250.),(3900.,-100.,-250.),(2500.,-100.,-250.),(3900.,100.,-250.),(3900.,100.,-250.),(3900.,-100.,3375.736),(3900.,-100.,-250.),(3900.,100.,3375.736),(1500.,100.,-250.),(0.,-100.,-250.),(0.,100.,-250.),(1500.,-100.,-250.),(3900.,-100.,3375.736),(2500.,-100.,-250.),(3900.,-100.,-250.),(2500.,-100.,2200.),(1500.,-100.,2200.),(206.066,-100.,3198.959),(276.777,-100.,3269.67),(135.355,-100.,3411.091),(2868.934,-100.,4123.959),(3010.355,-100.,4265.381),(2798.223,-100.,4194.67),(1131.066,-100.,4123.959),(1201.777,-100.,4194.67),(2939.645,-100.,4336.091),(1060.355,-100.,4336.091),(2050.,-100.,5025.736),(2050.,-100.,5225.736),(1950.,-100.,5025.736),(1950.,-100.,5225.736),(989.645,-100.,4265.381),(0.,-100.,-250.),(1500.,-100.,-250.),(0.,-100.,3275.736),(64.645,-100.,3340.381),(0.,-100.,3275.736),(0.,100.,-250.),(0.,-100.,-250.),(0.,100.,3275.736))); +#162=IFCSTYLEDITEM(#160,(#89),$); +#163=IFCPRODUCTDEFINITIONSHAPE($,$,(#159)); +#164=IFCROOFTYPE('0GE$iSXKL8jAEeHi$mszPq',#1,'house - roof','A sturdy roof, sheltering the house from the elements.',$,$,$,'902509','gable_roof',.GABLE_ROOF.); +#165=IFCRELDEFINESBYTYPE('3vwqwSGfL8LeMOHvcbNbYk',#1,$,$,(#166),#164); +#166=IFCROOF('2iPwJwpPDCSgMheXwk9cBT',#1,'house - roof','A sturdy roof, sheltering the house from the elements.','gable_roof',#168,$,'454425.1027891.979946.932084',$); +#167=IFCRELCONTAINEDINSPATIALSTRUCTURE('0_unXV8QD96hSTT1bwsdmY',#1,$,$,(#166,#305),#28); +#168=IFCLOCALPLACEMENT(#30,#169); +#169=IFCAXIS2PLACEMENT3D(#170,#171,#172); +#170=IFCCARTESIANPOINT((-2800.,-2800.,3100.)); +#171=IFCDIRECTION((0.,0.,1.)); +#172=IFCDIRECTION((1.,0.,0.)); +#173=IFCBEAMTYPE('1_UeVn6yDFiQNhUkRsBNZI',#1,'house - girder','A strong girder, providing essential support for structures.',$,$,$,'902302','girder_segment',.USERDEFINED.); +#174=IFCRELDEFINESBYTYPE('0QaU_JWFP0egFTAfCdiIGO',#1,$,$,(#175,#197,#213,#229,#245,#261),#173); +#175=IFCBEAM('0fqX614OH1YO1Njdxms2$Q',#1,'girder','A strong girder, providing essential support for structures.','girder_segment',#184,#196,'454425.1027891.979946.932084.902513',$); +#176=IFCRELASSOCIATESMATERIAL('1NsDI1QVHFMfwizftDPlfC',#1,$,$,(#175,#197,#213,#229,#245,#261),#177); +#177=IFCMATERIAL('wood_spruce_beam',$,$); +#178=IFCQUANTITYVOLUME('NetVolume',$,$,0.05400000000000022,$); +#179=IFCQUANTITYLENGTH('Length',$,$,2700.,$); +#180=IFCQUANTITYAREA('CrossSectionArea',$,$,0.020000000000000503,$); +#181=IFCELEMENTQUANTITY('19$drdf1j0_f$49_UFH4NQ',#1,'Qto_BeamBaseQuantities',$,'BaseQuantities',(#178,#179,#180)); +#182=IFCRELDEFINESBYPROPERTIES('3wJx8B_VH3aRJ3sLNPN_J9',#1,$,$,(#175),#181); +#183=IFCRELAGGREGATES('3YpecVm4P1fPcAgmGN$OMa',#1,'house - roof container',$,#166,(#175,#197,#213,#229,#245,#261,#276,#292)); +#184=IFCLOCALPLACEMENT(#168,#185); +#185=IFCAXIS2PLACEMENT3D(#186,#187,#188); +#186=IFCCARTESIANPOINT((4748.223,1900.,544.67)); +#187=IFCDIRECTION((8.27211307593222E-17,-1.,-4.506746872148008E-17)); +#188=IFCDIRECTION((0.7071067811865472,5.979740166137521E-17,-0.707106781186548)); +#189=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#190)); +#190=IFCTRIANGULATEDFACESET(#191,((1.,3.3306690738754706E-16,1.1924617671900018E-16),(1.,3.3306690738754706E-16,1.1924617671900018E-16),(1.,3.3306690738754706E-16,1.1924617671900018E-16),(1.,3.3306690738754706E-16,1.1924617671900018E-16),(7.2164496600635185E-16,-1.,-3.26409460204307E-32),(7.2164496600635185E-16,-1.,-3.26409460204307E-32),(7.2164496600635185E-16,-1.,-3.26409460204307E-32),(7.2164496600635185E-16,-1.,-3.26409460204307E-32),(-1.,-3.3306690738754706E-16,-1.1924617671900018E-16),(-1.,-3.3306690738754706E-16,-1.1924617671900018E-16),(-1.,-3.3306690738754706E-16,-1.1924617671900018E-16),(-1.,-3.3306690738754706E-16,-1.1924617671900018E-16),(-7.2164496600635185E-16,1.,3.26409460204307E-32),(-7.2164496600635185E-16,1.,3.26409460204307E-32),(-7.2164496600635185E-16,1.,3.26409460204307E-32),(-7.2164496600635185E-16,1.,3.26409460204307E-32),(2.5841397986964437E-17,2.0082800523541053E-32,-1.),(2.5841397986964437E-17,2.0082800523541053E-32,-1.),(2.5841397986964437E-17,2.0082800523541053E-32,-1.),(2.5841397986964437E-17,2.0082800523541053E-32,-1.),(-2.5841397986963688E-17,-9.809939192804824E-16,1.),(-2.5841397986963688E-17,-9.809939192804824E-16,1.),(-2.5841397986963688E-17,-9.809939192804824E-16,1.),(-2.5841397986963688E-17,-9.809939192804824E-16,1.)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24)),$); +#191=IFCCARTESIANPOINTLIST3D(((100.,200.,-2700.),(100.,0.,0.),(100.,0.,-2700.),(100.,200.,0.),(100.,0.,0.),(0.,0.,-2700.),(100.,0.,-2700.),(0.,0.,0.),(0.,0.,0.),(0.,200.,-2700.),(0.,0.,-2700.),(0.,200.,0.),(0.,200.,0.),(100.,200.,-2700.),(0.,200.,-2700.),(100.,200.,0.),(0.,200.,-2700.),(100.,0.,-2700.),(0.,0.,-2700.),(100.,200.,-2700.),(0.,0.,0.),(100.,200.,0.),(0.,200.,0.),(100.,0.,0.))); +#192=IFCSTYLEDITEM(#190,(#195),$); +#193=IFCSURFACESTYLERENDERING(#194,0.,$,$,$,$,$,$,.NOTDEFINED.); +#194=IFCCOLOURRGB($,0.7058823529411765,0.6352941176470588,0.49019607843137253); +#195=IFCSURFACESTYLE('wood_spruce_beam',.BOTH.,(#193)); +#196=IFCPRODUCTDEFINITIONSHAPE($,$,(#189)); +#197=IFCBEAM('0rh7bRO0L9fg1NzgGKU$Ut',#1,'girder','A strong girder, providing essential support for structures.','girder_segment',#203,#212,'454425.1027891.979946.932084.902515',$); +#198=IFCQUANTITYVOLUME('NetVolume',$,$,0.11600000000000245,$); +#199=IFCQUANTITYLENGTH('Length',$,$,5800.,$); +#200=IFCQUANTITYAREA('CrossSectionArea',$,$,0.02000000000000051,$); +#201=IFCELEMENTQUANTITY('2cRUAjExjAb9g9L2XAYQlF',#1,'Qto_BeamBaseQuantities',$,'BaseQuantities',(#198,#199,#200)); +#202=IFCRELDEFINESBYPROPERTIES('3mmtHmLXD3eOF9zTWsZaJW',#1,$,$,(#197),#201); +#203=IFCLOCALPLACEMENT(#168,#204); +#204=IFCAXIS2PLACEMENT3D(#205,#206,#207); +#205=IFCCARTESIANPOINT((2968.934,100.,2323.959)); +#206=IFCDIRECTION((4.0636983087920376E-17,1.,-3.925231146709433E-17)); +#207=IFCDIRECTION((0.707106781186548,-5.649026192406043E-17,-0.7071067811865472)); +#208=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#209)); +#209=IFCTRIANGULATEDFACESET(#210,((-1.,-3.3306690738754696E-16,-5.5511151231257784E-17),(-1.,-3.3306690738754696E-16,-5.5511151231257784E-17),(-1.,-3.3306690738754696E-16,-5.5511151231257784E-17),(-1.,-3.3306690738754696E-16,-5.5511151231257784E-17),(-7.216449660063519E-16,1.,1.5194923147441628E-32),(-7.216449660063519E-16,1.,1.5194923147441628E-32),(-7.216449660063519E-16,1.,1.5194923147441628E-32),(-7.216449660063519E-16,1.,1.5194923147441628E-32),(1.,3.3306690738754696E-16,5.5511151231257784E-17),(1.,3.3306690738754696E-16,5.5511151231257784E-17),(1.,3.3306690738754696E-16,5.5511151231257784E-17),(1.,3.3306690738754696E-16,5.5511151231257784E-17),(7.216449660063519E-16,-1.,-1.5194923147441628E-32),(7.216449660063519E-16,-1.,-1.5194923147441628E-32),(7.216449660063519E-16,-1.,-1.5194923147441628E-32),(7.216449660063519E-16,-1.,-1.5194923147441628E-32),(-5.551115123125786E-17,-4.3140830754274083E-32,1.),(-5.551115123125786E-17,-4.3140830754274083E-32,1.),(-5.551115123125786E-17,-4.3140830754274083E-32,1.),(-5.551115123125786E-17,-4.3140830754274083E-32,1.),(5.551115123125625E-17,2.107320271046997E-15,-1.),(5.551115123125625E-17,2.107320271046997E-15,-1.),(5.551115123125625E-17,2.107320271046997E-15,-1.),(5.551115123125625E-17,2.107320271046997E-15,-1.)),$,((3,2,1),(4,1,2),(7,6,5),(8,5,6),(11,10,9),(12,9,10),(15,14,13),(16,13,14),(19,18,17),(20,17,18),(23,22,21),(24,21,22)),$); +#210=IFCCARTESIANPOINTLIST3D(((-100.,-200.,5800.),(-100.,0.,0.),(-100.,0.,5800.),(-100.,-200.,0.),(-100.,0.,0.),(0.,0.,5800.),(-100.,0.,5800.),(0.,0.,0.),(0.,0.,0.),(0.,-200.,5800.),(0.,0.,5800.),(0.,-200.,0.),(0.,-200.,0.),(-100.,-200.,5800.),(0.,-200.,5800.),(-100.,-200.,0.),(0.,-200.,5800.),(-100.,0.,5800.),(0.,0.,5800.),(-100.,-200.,5800.),(0.,0.,0.),(-100.,-200.,0.),(0.,-200.,0.),(-100.,0.,0.))); +#211=IFCSTYLEDITEM(#209,(#195),$); +#212=IFCPRODUCTDEFINITIONSHAPE($,$,(#208)); +#213=IFCBEAM('3roxUKbVv98xiUcl22_T07',#1,'girder','A strong girder, providing essential support for structures.','girder_segment',#219,#228,'454425.1027891.979946.932084.902519',$); +#214=IFCQUANTITYVOLUME('NetVolume',$,$,0.011999999999998975,$); +#215=IFCQUANTITYLENGTH('Length',$,$,600.,$); +#216=IFCQUANTITYAREA('CrossSectionArea',$,$,0.020000000000000486,$); +#217=IFCELEMENTQUANTITY('1DSAthV5z4_B1cmsdtVHuf',#1,'Qto_BeamBaseQuantities',$,'BaseQuantities',(#214,#215,#216)); +#218=IFCRELDEFINESBYPROPERTIES('1UqjCSXHX84RL8RLdxQSl2',#1,$,$,(#213),#217); +#219=IFCLOCALPLACEMENT(#168,#220); +#220=IFCAXIS2PLACEMENT3D(#221,#222,#223); +#221=IFCCARTESIANPOINT((4748.223,5300.,544.67)); +#222=IFCDIRECTION((3.7338368651192706E-16,-1.,-3.4018669938152444E-16)); +#223=IFCDIRECTION((0.7071067811865472,-4.3787816729471714E-17,-0.707106781186548)); +#224=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#225)); +#225=IFCTRIANGULATEDFACESET(#226,((1.,3.3306690738754696E-16,5.366077952355484E-16),(1.,3.3306690738754696E-16,5.366077952355484E-16),(1.,3.3306690738754696E-16,5.366077952355484E-16),(1.,3.3306690738754696E-16,5.366077952355484E-16),(7.216449660063519E-16,-1.,-1.468842570919512E-31),(7.216449660063519E-16,-1.,-1.468842570919512E-31),(7.216449660063519E-16,-1.,-1.468842570919512E-31),(7.216449660063519E-16,-1.,-1.468842570919512E-31),(-1.,-3.3306690738754696E-16,-5.366077952355484E-16),(-1.,-3.3306690738754696E-16,-5.366077952355484E-16),(-1.,-3.3306690738754696E-16,-5.366077952355484E-16),(-1.,-3.3306690738754696E-16,-5.366077952355484E-16),(-7.216449660063519E-16,1.,1.468842570919512E-31),(-7.216449660063519E-16,1.,1.468842570919512E-31),(-7.216449660063519E-16,1.,1.468842570919512E-31),(-7.216449660063519E-16,1.,1.468842570919512E-31),(5.742532885991589E-18,4.462844560786505E-33,-1.),(5.742532885991589E-18,4.462844560786505E-33,-1.),(5.742532885991589E-18,4.462844560786505E-33,-1.),(5.742532885991589E-18,4.462844560786505E-33,-1.),(-5.742532885991422E-18,-2.1799864872897677E-16,1.),(-5.742532885991422E-18,-2.1799864872897677E-16,1.),(-5.742532885991422E-18,-2.1799864872897677E-16,1.),(-5.742532885991422E-18,-2.1799864872897677E-16,1.)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24)),$); +#226=IFCCARTESIANPOINTLIST3D(((100.,200.,-600.),(100.,0.,0.),(100.,0.,-600.),(100.,200.,0.),(100.,0.,0.),(0.,0.,-600.),(100.,0.,-600.),(0.,0.,0.),(0.,0.,0.),(0.,200.,-600.),(0.,0.,-600.),(0.,200.,0.),(0.,200.,0.),(100.,200.,-600.),(0.,200.,-600.),(100.,200.,0.),(0.,200.,-600.),(100.,0.,-600.),(0.,0.,-600.),(100.,200.,-600.),(0.,0.,0.),(100.,200.,0.),(0.,200.,0.),(100.,0.,0.))); +#227=IFCSTYLEDITEM(#225,(#195),$); +#228=IFCPRODUCTDEFINITIONSHAPE($,$,(#224)); +#229=IFCBEAM('0Lvk$Qa81D5et3l3a4S9Vk',#1,'girder','A strong girder, providing essential support for structures.','girder_segment',#235,#244,'454425.1027891.979946.932084.902516',$); +#230=IFCQUANTITYVOLUME('NetVolume',$,$,0.08000000000000054,$); +#231=IFCQUANTITYLENGTH('Length',$,$,4000.,$); +#232=IFCQUANTITYAREA('CrossSectionArea',$,$,0.02000000000000048,$); +#233=IFCELEMENTQUANTITY('0jhhk080jB_vq5U3vdfbhV',#1,'Qto_BeamBaseQuantities',$,'BaseQuantities',(#230,#231,#232)); +#234=IFCRELDEFINESBYPROPERTIES('0t4vIWNOH4TuoEMwPzfp$l',#1,$,$,(#229),#233); +#235=IFCLOCALPLACEMENT(#168,#236); +#236=IFCAXIS2PLACEMENT3D(#237,#238,#239); +#237=IFCCARTESIANPOINT((3823.223,1900.,1469.67)); +#238=IFCDIRECTION((-1.5656965033853333E-17,-1.,-1.7663540160193257E-17)); +#239=IFCDIRECTION((0.7071067811865472,5.979740166137521E-17,-0.707106781186548)); +#240=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#241)); +#241=IFCTRIANGULATEDFACESET(#242,((1.,3.3306690738754706E-16,8.049116928532481E-17),(1.,3.3306690738754706E-16,8.049116928532481E-17),(1.,3.3306690738754706E-16,8.049116928532481E-17),(1.,3.3306690738754706E-16,8.049116928532481E-17),(7.216449660063518E-16,-1.,-2.2032638563790633E-32),(7.216449660063518E-16,-1.,-2.2032638563790633E-32),(7.216449660063518E-16,-1.,-2.2032638563790633E-32),(7.216449660063518E-16,-1.,-2.2032638563790633E-32),(-1.,-3.3306690738754706E-16,-8.049116928532481E-17),(-1.,-3.3306690738754706E-16,-8.049116928532481E-17),(-1.,-3.3306690738754706E-16,-8.049116928532481E-17),(-1.,-3.3306690738754706E-16,-8.049116928532481E-17),(-7.216449660063518E-16,1.,2.2032638563790633E-32),(-7.216449660063518E-16,1.,2.2032638563790633E-32),(-7.216449660063518E-16,1.,2.2032638563790633E-32),(-7.216449660063518E-16,1.,2.2032638563790633E-32),(3.82835525732808E-17,2.9752297071912793E-32,-1.),(3.82835525732808E-17,2.9752297071912793E-32,-1.),(3.82835525732808E-17,2.9752297071912793E-32,-1.),(3.82835525732808E-17,2.9752297071912793E-32,-1.),(-3.8283552573279685E-17,-1.4533243248599799E-15,1.),(-3.8283552573279685E-17,-1.4533243248599799E-15,1.),(-3.8283552573279685E-17,-1.4533243248599799E-15,1.),(-3.8283552573279685E-17,-1.4533243248599799E-15,1.)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24)),$); +#242=IFCCARTESIANPOINTLIST3D(((100.,200.,-4000.),(100.,0.,0.),(100.,0.,-4000.),(100.,200.,0.),(100.,0.,0.),(0.,0.,-4000.),(100.,0.,-4000.),(0.,0.,0.),(0.,0.,0.),(0.,200.,-4000.),(0.,0.,-4000.),(0.,200.,0.),(0.,200.,0.),(100.,200.,-4000.),(0.,200.,-4000.),(100.,200.,0.),(0.,200.,-4000.),(100.,0.,-4000.),(0.,0.,-4000.),(100.,200.,-4000.),(0.,0.,0.),(100.,200.,0.),(0.,200.,0.),(100.,0.,0.))); +#243=IFCSTYLEDITEM(#241,(#195),$); +#244=IFCPRODUCTDEFINITIONSHAPE($,$,(#240)); +#245=IFCBEAM('2ddLgAnQf4mBfh5IpUp54U',#1,'girder','A strong girder, providing essential support for structures.','girder_segment',#251,#260,'454425.1027891.979946.932084.902517',$); +#246=IFCQUANTITYVOLUME('NetVolume',$,$,0.11600000000000235,$); +#247=IFCQUANTITYLENGTH('Length',$,$,5800.,$); +#248=IFCQUANTITYAREA('CrossSectionArea',$,$,0.020000000000000493,$); +#249=IFCELEMENTQUANTITY('2UR3uT7K16fBzZtaOnSKjy',#1,'Qto_BeamBaseQuantities',$,'BaseQuantities',(#246,#247,#248)); +#250=IFCRELDEFINESBYPROPERTIES('2p7xyguVn9Fuu2aQAQaScf',#1,$,$,(#245),#249); +#251=IFCLOCALPLACEMENT(#168,#252); +#252=IFCAXIS2PLACEMENT3D(#253,#254,#255); +#253=IFCCARTESIANPOINT((2050.,100.,3225.736)); +#254=IFCDIRECTION((7.038531937459524E-17,-1.,-2.3801837657530415E-32)); +#255=IFCDIRECTION((1.,7.038531937459524E-17,-8.881784197001246E-16)); +#256=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#257)); +#257=IFCTRIANGULATEDFACESET(#258,((1.,3.3306690738754696E-16,5.5511151231257784E-17),(1.,3.3306690738754696E-16,5.5511151231257784E-17),(1.,3.3306690738754696E-16,5.5511151231257784E-17),(1.,3.3306690738754696E-16,5.5511151231257784E-17),(7.216449660063519E-16,-1.,-1.5194923147441628E-32),(7.216449660063519E-16,-1.,-1.5194923147441628E-32),(7.216449660063519E-16,-1.,-1.5194923147441628E-32),(7.216449660063519E-16,-1.,-1.5194923147441628E-32),(-1.,-3.3306690738754696E-16,-5.5511151231257784E-17),(-1.,-3.3306690738754696E-16,-5.5511151231257784E-17),(-1.,-3.3306690738754696E-16,-5.5511151231257784E-17),(-1.,-3.3306690738754696E-16,-5.5511151231257784E-17),(-7.216449660063519E-16,1.,1.5194923147441628E-32),(-7.216449660063519E-16,1.,1.5194923147441628E-32),(-7.216449660063519E-16,1.,1.5194923147441628E-32),(-7.216449660063519E-16,1.,1.5194923147441628E-32),(5.551115123125786E-17,4.3140830754274083E-32,-1.),(5.551115123125786E-17,4.3140830754274083E-32,-1.),(5.551115123125786E-17,4.3140830754274083E-32,-1.),(5.551115123125786E-17,4.3140830754274083E-32,-1.),(-5.551115123125625E-17,-2.107320271046997E-15,1.),(-5.551115123125625E-17,-2.107320271046997E-15,1.),(-5.551115123125625E-17,-2.107320271046997E-15,1.),(-5.551115123125625E-17,-2.107320271046997E-15,1.)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24)),$); +#258=IFCCARTESIANPOINTLIST3D(((100.,200.,-5800.),(100.,0.,0.),(100.,0.,-5800.),(100.,200.,0.),(100.,0.,0.),(0.,0.,-5800.),(100.,0.,-5800.),(0.,0.,0.),(0.,0.,0.),(0.,200.,-5800.),(0.,0.,-5800.),(0.,200.,0.),(0.,200.,0.),(100.,200.,-5800.),(0.,200.,-5800.),(100.,200.,0.),(0.,200.,-5800.),(100.,0.,-5800.),(0.,0.,-5800.),(100.,200.,-5800.),(0.,0.,0.),(100.,200.,0.),(0.,200.,0.),(100.,0.,0.))); +#259=IFCSTYLEDITEM(#257,(#195),$); +#260=IFCPRODUCTDEFINITIONSHAPE($,$,(#256)); +#261=IFCBEAM('2fjJuPht9EIQaZQYZfC1Op',#1,'girder','A strong girder, providing essential support for structures.','girder_segment',#267,#273,'454425.1027891.979946.932084.902512',$); +#262=IFCQUANTITYVOLUME('NetVolume',$,$,0.11600000000000235,$); +#263=IFCQUANTITYLENGTH('Length',$,$,5800.,$); +#264=IFCQUANTITYAREA('CrossSectionArea',$,$,0.020000000000000493,$); +#265=IFCELEMENTQUANTITY('0WHjnPa4j8felpsOvHemt0',#1,'Qto_BeamBaseQuantities',$,'BaseQuantities',(#262,#263,#264)); +#266=IFCRELDEFINESBYPROPERTIES('3HYZbgUgr3aBDhe21HscN1',#1,$,$,(#261),#265); +#267=IFCLOCALPLACEMENT(#168,#268); +#268=IFCAXIS2PLACEMENT3D(#269,#270,#271); +#269=IFCCARTESIANPOINT((1231.066,100.,2323.959)); +#270=IFCDIRECTION((1.487416814333745E-17,-1.,1.880229722470312E-33)); +#271=IFCDIRECTION((0.7071067811865482,1.0517625158662842E-17,0.7071067811865468)); +#272=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#257)); +#273=IFCPRODUCTDEFINITIONSHAPE($,$,(#272)); +#274=IFCDISCRETEACCESSORYTYPE('1i7uuLYVf6ShdGFfCgAhuD',#1,'beam shoe','A robust shoe, providing stable support for beams.',$,$,$,'880093','shoe',.SHOE.); +#275=IFCRELDEFINESBYTYPE('2WxkgoJp57vPJ9Jr6S$j_w',#1,$,$,(#276,#292),#274); +#276=IFCDISCRETEACCESSORY('38dURdIk57HPT_EckeLnt6',#1,'beam shoe','A robust shoe, providing stable support for beams.','shoe',#279,#291,'454425.1027891.979946.932084.2037920.2037925',$); +#277=IFCRELASSOCIATESMATERIAL('0h96c29SfAxQbCDOLFZN7y',#1,$,$,(#276,#292),#278); +#278=IFCMATERIAL('metal_steel-galvanized',$,$); +#279=IFCLOCALPLACEMENT(#168,#280); +#280=IFCAXIS2PLACEMENT3D(#281,#282,#283); +#281=IFCCARTESIANPOINT((4783.579,5300.,509.315)); +#282=IFCDIRECTION((1.487416814333745E-17,-1.,0.)); +#283=IFCDIRECTION((-0.7071067811865945,-1.051762515866353E-17,0.7071067811865007)); +#284=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#285)); +#285=IFCTRIANGULATEDFACESET(#286,((-2.510024628003296E-13,5.105552743534459E-13,1.),(-2.510024628003296E-13,5.105552743534459E-13,1.),(-2.510024628003296E-13,5.105552743534459E-13,1.),(-2.510024628003296E-13,5.105552743534459E-13,1.),(-2.510024628003296E-13,5.105552743534459E-13,1.),(-2.510024628003296E-13,5.105552743534459E-13,1.),(-2.510024628003296E-13,5.105552743534459E-13,1.),(-2.510024628003296E-13,5.105552743534459E-13,1.),(-2.510024628003296E-13,5.105552743534459E-13,1.),(-2.510024628003296E-13,5.105552743534459E-13,1.),(1.,-5.78981307342019E-14,-1.489467835798555E-13),(1.,-5.78981307342019E-14,-1.489467835798555E-13),(1.,-5.78981307342019E-14,-1.489467835798555E-13),(1.,-5.78981307342019E-14,-1.489467835798555E-13),(6.872280522429719E-14,-1.,0.),(6.872280522429719E-14,-1.,0.),(6.872280522429719E-14,-1.,0.),(6.872280522429719E-14,-1.,0.),(1.,7.632783294297951E-14,3.110398740866835E-14),(1.,7.632783294297951E-14,3.110398740866835E-14),(1.,7.632783294297951E-14,3.110398740866835E-14),(1.,7.632783294297951E-14,3.110398740866835E-14),(1.,7.632783294297951E-14,3.110398740866835E-14),(-3.735345366351339E-13,-0.6050832675335698,-0.7961621941230935),(-3.735345366351339E-13,-0.6050832675335698,-0.7961621941230935),(-3.735345366351339E-13,-0.6050832675335698,-0.7961621941230935),(-3.735345366351339E-13,-0.6050832675335698,-0.7961621941230935),(2.0949908474676704E-13,-0.6050832675334072,-0.7961621941232171),(2.0949908474676704E-13,-0.6050832675334072,-0.7961621941232171),(2.0949908474676704E-13,-0.6050832675334072,-0.7961621941232171),(2.0949908474676704E-13,-0.6050832675334072,-0.7961621941232171),(-0.,-0.,-1.),(-0.,-0.,-1.),(-0.,-0.,-1.),(-0.,-0.,-1.),(-0.,-0.,-1.),(-0.,-0.,-1.),(-0.,-0.,-1.),(-0.,-0.,-1.),(-1.,2.992051051364796E-14,4.773785893591513E-14),(-1.,2.992051051364796E-14,4.773785893591513E-14),(-1.,2.992051051364796E-14,4.773785893591513E-14),(-1.,2.992051051364796E-14,4.773785893591513E-14),(-1.,2.992051051364796E-14,4.773785893591513E-14),(-4.997030444161708E-14,-1.,-3.3689199578799613E-12),(-4.997030444161708E-14,-1.,-3.3689199578799613E-12),(-4.997030444161708E-14,-1.,-3.3689199578799613E-12),(-4.997030444161708E-14,-1.,-3.3689199578799613E-12),(-4.997030444161708E-14,-1.,-3.3689199578799613E-12),(3.083274104062946E-14,-1.,-1.4438228390530732E-12),(3.083274104062946E-14,-1.,-1.4438228390530732E-12),(3.083274104062946E-14,-1.,-1.4438228390530732E-12),(3.083274104062946E-14,-1.,-1.4438228390530732E-12),(3.083274104062946E-14,-1.,-1.4438228390530732E-12),(-1.,-5.3734794391857564E-14,7.5588181517279E-14),(-1.,-5.3734794391857564E-14,7.5588181517279E-14),(-1.,-5.3734794391857564E-14,7.5588181517279E-14),(-1.,-5.3734794391857564E-14,7.5588181517279E-14),(-1.,2.770006446439765E-14,-3.6095570976613566E-12),(-1.,2.770006446439765E-14,-3.6095570976613566E-12),(-1.,2.770006446439765E-14,-3.6095570976613566E-12),(-1.,2.770006446439765E-14,-3.6095570976613566E-12),(1.2416876415955632E-12,-1.1208135741380136E-26,-1.),(1.2416876415955632E-12,-1.1208135741380136E-26,-1.),(1.2416876415955632E-12,-1.1208135741380136E-26,-1.),(1.2416876415955632E-12,-1.1208135741380136E-26,-1.),(1.,-5.5455640080026557E-14,0.),(1.,-5.5455640080026557E-14,0.),(1.,-5.5455640080026557E-14,0.),(1.,-5.5455640080026557E-14,0.),(1.2994405551581886E-13,-5.604067870690068E-27,-1.),(1.2994405551581886E-13,-5.604067870690068E-27,-1.),(1.2994405551581886E-13,-5.604067870690068E-27,-1.),(1.2994405551581886E-13,-5.604067870690068E-27,-1.),(5.362377208939506E-14,1.,-1.3926637620898714E-13),(5.362377208939506E-14,1.,-1.3926637620898714E-13),(5.362377208939506E-14,1.,-1.3926637620898714E-13),(5.362377208939506E-14,1.,-1.3926637620898714E-13),(5.362377208939506E-14,1.,-1.3926637620898714E-13),(5.362377208939506E-14,1.,-1.3926637620898714E-13),(-0.7071067811865883,0.7071067811865067,-3.063019509727667E-12),(-0.7071067811865883,0.7071067811865067,-3.063019509727667E-12),(-0.7071067811865883,0.7071067811865067,-3.063019509727667E-12),(-0.7071067811865883,0.7071067811865067,-3.063019509727667E-12),(0.70710678118667,0.7071067811864251,-2.041749214560281E-12),(0.70710678118667,0.7071067811864251,-2.041749214560281E-12),(0.70710678118667,0.7071067811864251,-2.041749214560281E-12),(0.70710678118667,0.7071067811864251,-2.041749214560281E-12)),$,((3,2,1),(4,1,2),(5,1,4),(8,7,6),(9,6,7),(10,9,7),(4,10,7),(2,10,4),(13,12,11),(14,11,12),(17,16,15),(18,15,16),(21,20,19),(22,19,20),(23,19,22),(26,25,24),(27,24,25),(30,29,28),(31,28,29),(34,33,32),(35,32,33),(36,33,34),(37,35,33),(39,38,37),(35,37,38),(42,41,40),(43,40,41),(44,40,43),(47,46,45),(48,45,46),(48,46,49),(52,51,50),(53,50,51),(54,50,53),(57,56,55),(58,55,56),(61,60,59),(62,59,60),(65,64,63),(66,63,64),(69,68,67),(70,67,68),(73,72,71),(74,71,72),(77,76,75),(78,75,76),(79,78,76),(80,79,76),(83,82,81),(84,81,82),(87,86,85),(88,85,86)),$); +#286=IFCCARTESIANPOINTLIST3D(((-104.,-150.,0.),(-50.,0.,0.),(-50.,-150.,0.),(-54.,4.,0.),(-104.,-46.,0.),(104.,-150.,0.),(54.,4.,0.),(104.,-46.,0.),(50.,-150.,0.),(50.,0.,0.),(54.,4.,-80.),(54.,-150.,-4.),(54.,4.,-4.),(54.,-50.,-80.),(50.,0.,-80.),(-50.,0.,0.),(50.,0.,0.),(-50.,0.,-80.),(-50.,-50.,-80.),(-50.,0.,0.),(-50.,0.,-80.),(-50.,-150.,0.),(-50.,-150.,-4.),(-54.,-50.,-80.),(-50.,-150.,-4.),(-50.,-50.,-80.),(-54.,-150.,-4.),(54.,-50.,-80.),(50.,-150.,-4.),(54.,-150.,-4.),(50.,-50.,-80.),(54.,4.,-80.),(50.,0.,-80.),(54.,-50.,-80.),(-54.,4.,-80.),(50.,-50.,-80.),(-50.,0.,-80.),(-54.,-50.,-80.),(-50.,-50.,-80.),(50.,-150.,0.),(50.,0.,-80.),(50.,0.,0.),(50.,-50.,-80.),(50.,-150.,-4.),(-50.,-150.,-4.),(-104.,-150.,0.),(-50.,-150.,0.),(-54.,-150.,-4.),(-104.,-150.,-4.),(104.,-150.,-4.),(50.,-150.,0.),(104.,-150.,0.),(50.,-150.,-4.),(54.,-150.,-4.),(-54.,4.,-4.),(-54.,-50.,-80.),(-54.,4.,-80.),(-54.,-150.,-4.),(-104.,-46.,0.),(-104.,-150.,-4.),(-104.,-46.,-4.),(-104.,-150.,0.),(-54.,4.,-4.),(-104.,-150.,-4.),(-54.,-150.,-4.),(-104.,-46.,-4.),(104.,-150.,-4.),(104.,-46.,0.),(104.,-46.,-4.),(104.,-150.,0.),(54.,4.,-4.),(104.,-150.,-4.),(104.,-46.,-4.),(54.,-150.,-4.),(-54.,4.,0.),(54.,4.,-4.),(54.,4.,0.),(-54.,4.,-4.),(-54.,4.,-80.),(54.,4.,-80.),(-104.,-46.,0.),(-54.,4.,-4.),(-54.,4.,0.),(-104.,-46.,-4.),(54.,4.,-4.),(104.,-46.,0.),(54.,4.,0.),(104.,-46.,-4.))); +#287=IFCSTYLEDITEM(#285,(#290),$); +#288=IFCSURFACESTYLERENDERING(#289,0.,$,$,$,$,$,$,.NOTDEFINED.); +#289=IFCCOLOURRGB($,0.6,0.6,0.6); +#290=IFCSURFACESTYLE('metal_steel-galvanized',.BOTH.,(#288)); +#291=IFCPRODUCTDEFINITIONSHAPE($,$,(#284)); +#292=IFCDISCRETEACCESSORY('0kNW_gyKT7mgsI4WnaPU0I',#1,'beam shoe','A robust shoe, providing stable support for beams.','shoe',#293,#302,'454425.1027891.979946.932084.2037920.2037924',$); +#293=IFCLOCALPLACEMENT(#168,#294); +#294=IFCAXIS2PLACEMENT3D(#295,#296,#297); +#295=IFCCARTESIANPOINT((4783.579,4600.,509.315)); +#296=IFCDIRECTION((1.487416814333745E-17,-1.,0.)); +#297=IFCDIRECTION((0.7071067811865945,1.051762515866353E-17,-0.7071067811865006)); +#298=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#299)); +#299=IFCTRIANGULATEDFACESET(#300,((2.510024628003296E-13,-5.105552743534459E-13,-1.),(2.510024628003296E-13,-5.105552743534459E-13,-1.),(2.510024628003296E-13,-5.105552743534459E-13,-1.),(2.510024628003296E-13,-5.105552743534459E-13,-1.),(2.510024628003296E-13,-5.105552743534459E-13,-1.),(2.510024628003296E-13,-5.105552743534459E-13,-1.),(2.510024628003296E-13,-5.105552743534459E-13,-1.),(2.510024628003296E-13,-5.105552743534459E-13,-1.),(2.510024628003296E-13,-5.105552743534459E-13,-1.),(2.510024628003296E-13,-5.105552743534459E-13,-1.),(-1.,5.78981307342019E-14,1.489467835798555E-13),(-1.,5.78981307342019E-14,1.489467835798555E-13),(-1.,5.78981307342019E-14,1.489467835798555E-13),(-1.,5.78981307342019E-14,1.489467835798555E-13),(-6.872280522429719E-14,1.,0.),(-6.872280522429719E-14,1.,0.),(-6.872280522429719E-14,1.,0.),(-6.872280522429719E-14,1.,0.),(-1.,-7.632783294297951E-14,-3.110398740866835E-14),(-1.,-7.632783294297951E-14,-3.110398740866835E-14),(-1.,-7.632783294297951E-14,-3.110398740866835E-14),(-1.,-7.632783294297951E-14,-3.110398740866835E-14),(-1.,-7.632783294297951E-14,-3.110398740866835E-14),(3.735345366351339E-13,0.6050832675335698,0.7961621941230935),(3.735345366351339E-13,0.6050832675335698,0.7961621941230935),(3.735345366351339E-13,0.6050832675335698,0.7961621941230935),(3.735345366351339E-13,0.6050832675335698,0.7961621941230935),(-2.0949908474676704E-13,0.6050832675334072,0.7961621941232171),(-2.0949908474676704E-13,0.6050832675334072,0.7961621941232171),(-2.0949908474676704E-13,0.6050832675334072,0.7961621941232171),(-2.0949908474676704E-13,0.6050832675334072,0.7961621941232171),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(1.,-2.992051051364796E-14,-4.773785893591513E-14),(1.,-2.992051051364796E-14,-4.773785893591513E-14),(1.,-2.992051051364796E-14,-4.773785893591513E-14),(1.,-2.992051051364796E-14,-4.773785893591513E-14),(1.,-2.992051051364796E-14,-4.773785893591513E-14),(4.997030444161708E-14,1.,3.3689199578799613E-12),(4.997030444161708E-14,1.,3.3689199578799613E-12),(4.997030444161708E-14,1.,3.3689199578799613E-12),(4.997030444161708E-14,1.,3.3689199578799613E-12),(4.997030444161708E-14,1.,3.3689199578799613E-12),(-3.083274104062946E-14,1.,1.4438228390530732E-12),(-3.083274104062946E-14,1.,1.4438228390530732E-12),(-3.083274104062946E-14,1.,1.4438228390530732E-12),(-3.083274104062946E-14,1.,1.4438228390530732E-12),(-3.083274104062946E-14,1.,1.4438228390530732E-12),(1.,5.3734794391857564E-14,-7.5588181517279E-14),(1.,5.3734794391857564E-14,-7.5588181517279E-14),(1.,5.3734794391857564E-14,-7.5588181517279E-14),(1.,5.3734794391857564E-14,-7.5588181517279E-14),(1.,-2.770006446439765E-14,3.6095570976613566E-12),(1.,-2.770006446439765E-14,3.6095570976613566E-12),(1.,-2.770006446439765E-14,3.6095570976613566E-12),(1.,-2.770006446439765E-14,3.6095570976613566E-12),(-1.2416876415955632E-12,1.1208135741380136E-26,1.),(-1.2416876415955632E-12,1.1208135741380136E-26,1.),(-1.2416876415955632E-12,1.1208135741380136E-26,1.),(-1.2416876415955632E-12,1.1208135741380136E-26,1.),(-1.,5.5455640080026557E-14,0.),(-1.,5.5455640080026557E-14,0.),(-1.,5.5455640080026557E-14,0.),(-1.,5.5455640080026557E-14,0.),(-1.2994405551581886E-13,5.604067870690068E-27,1.),(-1.2994405551581886E-13,5.604067870690068E-27,1.),(-1.2994405551581886E-13,5.604067870690068E-27,1.),(-1.2994405551581886E-13,5.604067870690068E-27,1.),(-5.362377208939506E-14,-1.,1.3926637620898714E-13),(-5.362377208939506E-14,-1.,1.3926637620898714E-13),(-5.362377208939506E-14,-1.,1.3926637620898714E-13),(-5.362377208939506E-14,-1.,1.3926637620898714E-13),(-5.362377208939506E-14,-1.,1.3926637620898714E-13),(-5.362377208939506E-14,-1.,1.3926637620898714E-13),(0.7071067811865883,-0.7071067811865067,3.063019509727667E-12),(0.7071067811865883,-0.7071067811865067,3.063019509727667E-12),(0.7071067811865883,-0.7071067811865067,3.063019509727667E-12),(0.7071067811865883,-0.7071067811865067,3.063019509727667E-12),(-0.70710678118667,-0.7071067811864251,2.041749214560281E-12),(-0.70710678118667,-0.7071067811864251,2.041749214560281E-12),(-0.70710678118667,-0.7071067811864251,2.041749214560281E-12),(-0.70710678118667,-0.7071067811864251,2.041749214560281E-12)),$,((1,2,3),(2,1,4),(4,1,5),(6,7,8),(7,6,9),(7,9,10),(7,10,4),(4,10,2),(11,12,13),(12,11,14),(15,16,17),(16,15,18),(19,20,21),(20,19,22),(22,19,23),(24,25,26),(25,24,27),(28,29,30),(29,28,31),(32,33,34),(33,32,35),(34,33,36),(33,35,37),(37,38,39),(38,37,35),(40,41,42),(41,40,43),(43,40,44),(45,46,47),(46,45,48),(49,46,48),(50,51,52),(51,50,53),(53,50,54),(55,56,57),(56,55,58),(59,60,61),(60,59,62),(63,64,65),(64,63,66),(67,68,69),(68,67,70),(71,72,73),(72,71,74),(75,76,77),(76,75,78),(76,78,79),(76,79,80),(81,82,83),(82,81,84),(85,86,87),(86,85,88)),$); +#300=IFCCARTESIANPOINTLIST3D(((104.,150.,0.),(50.,0.,0.),(50.,150.,0.),(54.,-4.,0.),(104.,46.,0.),(-104.,150.,0.),(-54.,-4.,0.),(-104.,46.,0.),(-50.,150.,0.),(-50.,0.,0.),(-54.,-4.,80.),(-54.,150.,4.),(-54.,-4.,4.),(-54.,50.,80.),(-50.,0.,80.),(50.,0.,0.),(-50.,0.,0.),(50.,0.,80.),(50.,50.,80.),(50.,0.,0.),(50.,0.,80.),(50.,150.,0.),(50.,150.,4.),(54.,50.,80.),(50.,150.,4.),(50.,50.,80.),(54.,150.,4.),(-54.,50.,80.),(-50.,150.,4.),(-54.,150.,4.),(-50.,50.,80.),(-54.,-4.,80.),(-50.,0.,80.),(-54.,50.,80.),(54.,-4.,80.),(-50.,50.,80.),(50.,0.,80.),(54.,50.,80.),(50.,50.,80.),(-50.,150.,0.),(-50.,0.,80.),(-50.,0.,0.),(-50.,50.,80.),(-50.,150.,4.),(50.,150.,4.),(104.,150.,0.),(50.,150.,0.),(54.,150.,4.),(104.,150.,4.),(-104.,150.,4.),(-50.,150.,0.),(-104.,150.,0.),(-50.,150.,4.),(-54.,150.,4.),(54.,-4.,4.),(54.,50.,80.),(54.,-4.,80.),(54.,150.,4.),(104.,46.,0.),(104.,150.,4.),(104.,46.,4.),(104.,150.,0.),(54.,-4.,4.),(104.,150.,4.),(54.,150.,4.),(104.,46.,4.),(-104.,150.,4.),(-104.,46.,0.),(-104.,46.,4.),(-104.,150.,0.),(-54.,-4.,4.),(-104.,150.,4.),(-104.,46.,4.),(-54.,150.,4.),(54.,-4.,0.),(-54.,-4.,4.),(-54.,-4.,0.),(54.,-4.,4.),(54.,-4.,80.),(-54.,-4.,80.),(104.,46.,0.),(54.,-4.,4.),(54.,-4.,0.),(104.,46.,4.),(-54.,-4.,4.),(-104.,46.,0.),(-54.,-4.,0.),(-104.,46.,4.))); +#301=IFCSTYLEDITEM(#299,(#290),$); +#302=IFCPRODUCTDEFINITIONSHAPE($,$,(#298)); +#303=IFCBUILDINGELEMENTPROXYTYPE('3mjKLn_DjE4Beriey9bTvr',#1,'origin','The local position for coordination of aspect models.',$,$,$,'1028017','origin',.USERDEFINED.); +#304=IFCRELDEFINESBYTYPE('21U96ixejDwQmHCVkbTd2U',#1,$,$,(#305),#303); +#305=IFCBUILDINGELEMENTPROXY('2F44QMqSH3TOkM$SZoqCBe',#1,'origin','The local position for coordination of aspect models.','origin',#308,#320,'454425.1027891.1032757',$); +#306=IFCRELASSOCIATESMATERIAL('1QcTgcyaP1C9MT3_T1ZeJj',#1,$,$,(#305),#307); +#307=IFCMATERIAL('virtual_white',$,$); +#308=IFCLOCALPLACEMENT(#30,#309); +#309=IFCAXIS2PLACEMENT3D(#310,#311,#312); +#310=IFCCARTESIANPOINT((-5800.,-5800.,1300.)); +#311=IFCDIRECTION((0.,0.,1.)); +#312=IFCDIRECTION((1.,0.,0.)); +#313=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#314)); +#314=IFCTRIANGULATEDFACESET(#315,((1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(9,10,11),(10,9,12),(13,14,15),(14,13,16),(17,18,19),(18,17,20),(21,22,23),(22,21,24)),$); +#315=IFCCARTESIANPOINTLIST3D(((1000.,1000.,0.),(1000.,0.,1000.),(1000.,0.,0.),(1000.,1000.,1000.),(0.,1000.,1000.),(1000.,1000.,0.),(0.,1000.,0.),(1000.,1000.,1000.),(1000.,1000.,0.),(0.,0.,0.),(0.,1000.,0.),(1000.,0.,0.),(0.,1000.,1000.),(0.,0.,0.),(0.,0.,1000.),(0.,1000.,0.),(1000.,0.,1000.),(0.,1000.,1000.),(0.,0.,1000.),(1000.,1000.,1000.),(1000.,0.,1000.),(0.,0.,0.),(1000.,0.,0.),(0.,0.,1000.))); +#316=IFCSTYLEDITEM(#314,(#319),$); +#317=IFCSURFACESTYLERENDERING(#318,0.,$,$,$,$,$,$,.NOTDEFINED.); +#318=IFCCOLOURRGB($,1.,1.,1.); +#319=IFCSURFACESTYLE('virtual_white',.BOTH.,(#317)); +#320=IFCPRODUCTDEFINITIONSHAPE($,$,(#313)); +#321=IFCBUILDINGELEMENTPROXYTYPE('2IpkHFcdnD3xuZl6H52fWn',#1,'geo-reference','The reference point for transforming the local engineering coordinate system into the coordinate reference system of the underlying map.',$,$,$,'1028019','origin',.USERDEFINED.); +#322=IFCRELDEFINESBYTYPE('3530pFWy94WO4ESJ$CWAXG',#1,$,$,(#323),#321); +#323=IFCBUILDINGELEMENTPROXY('3Fit2Fad92zf2f6aWdJtF5',#1,'geo-reference','The reference point for transforming the local engineering coordinate system into the coordinate reference system of the underlying map.','origin',#327,#339,'454425.1032696',$); +#324=IFCRELASSOCIATESMATERIAL('2EBkr99ef9S8X3ZQxjf56M',#1,$,$,(#323),#325); +#325=IFCMATERIAL('virtual_black',$,$); +#326=IFCRELCONTAINEDINSPATIALSTRUCTURE('1TQuSfFPH3LQf64TA8Xh2z',#1,$,$,(#323),#21); +#327=IFCLOCALPLACEMENT(#23,#328); +#328=IFCAXIS2PLACEMENT3D(#329,#330,#331); +#329=IFCCARTESIANPOINT((0.,0.,0.)); +#330=IFCDIRECTION((0.,0.,1.)); +#331=IFCDIRECTION((1.,1.487416814333745E-17,0.)); +#332=IFCSHAPEREPRESENTATION(#12,'Body','Tessellation',(#333)); +#333=IFCTRIANGULATEDFACESET(#334,((-1.,7.21911462561536E-15,-2.8876462805389965E-13),(-1.,7.21911462561536E-15,-2.8876462805389965E-13),(-1.,7.21911462561536E-15,-2.8876462805389965E-13),(-1.,7.21911462561536E-15,-2.8876462805389965E-13),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-3.058371444293475E-33,2.634474752431885E-33,1.),(-0.09801728974624706,0.9951847119559265,-2.8293428708776068E-14),(-0.19509039794774516,0.9807852652994898,-1.421516415386496E-14),(-0.09801728974624706,0.9951847119559265,-2.8293428708776068E-14),(-0.19509039794774516,0.9807852652994898,-1.421516415386496E-14),(-5.775291700492621E-14,1.,6.668325738175412E-26),(-5.775291700492621E-14,1.,6.668325738175412E-26),(-5.775291700492621E-14,1.,6.668325738175412E-26),(-5.775291700492621E-14,1.,6.668325738175412E-26),(-0.9951847119558951,0.09801728974656551,1.7414784486937357E-13),(-0.9807852652994783,0.19509039794780292,8.749523528380382E-14),(-0.9807852652994783,0.19509039794780292,8.749523528380382E-14),(-0.9951847119558951,0.09801728974656551,1.7414784486937357E-13),(0.38268339078040076,-0.9238795497362281,0.),(0.19509039794782512,-0.980785265299474,0.),(0.38268339078040076,-0.9238795497362281,0.),(0.19509039794782512,-0.980785265299474,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.9807852652994759,-0.1950903979478154,-4.900260093397033E-13),(0.9238795497362351,-0.3826833907803836,0.),(0.9238795497362351,-0.3826833907803836,0.),(0.9807852652994759,-0.1950903979478154,-4.900260093397033E-13),(0.9238795497362351,-0.3826833907803836,0.),(0.8314696223790943,-0.5555702179389808,0.),(0.8314696223790943,-0.5555702179389808,0.),(0.9238795497362351,-0.3826833907803836,0.),(0.9951847119559278,-0.09801728974623324,-9.75332807319653E-13),(0.9807852652994759,-0.1950903979478154,-4.900260093397033E-13),(0.9807852652994759,-0.1950903979478154,-4.900260093397033E-13),(0.9951847119559278,-0.09801728974623324,-9.75332807319653E-13),(0.5555702179389931,-0.8314696223790862,0.),(0.38268339078040076,-0.9238795497362281,0.),(0.5555702179389931,-0.8314696223790862,0.),(0.38268339078040076,-0.9238795497362281,0.),(0.7071067811865249,-0.7071067811865702,0.),(0.5555702179389931,-0.8314696223790862,0.),(0.7071067811865249,-0.7071067811865702,0.),(0.5555702179389931,-0.8314696223790862,0.),(-0.19509039794774516,0.9807852652994898,-1.421516415386496E-14),(-0.38268349542963814,0.9238795063890931,0.),(-0.19509039794774516,0.9807852652994898,-1.421516415386496E-14),(-0.38268349542963814,0.9238795063890931,0.),(0.8314696223790943,-0.5555702179389808,0.),(0.7071067811865249,-0.7071067811865702,0.),(0.7071067811865249,-0.7071067811865702,0.),(0.8314696223790943,-0.5555702179389808,0.),(-0.9807852652994783,0.19509039794780292,8.749523528380382E-14),(-0.9238795063891102,0.38268349542959684,0.),(-0.9238795063891102,0.38268349542959684,0.),(-0.9807852652994783,0.19509039794780292,8.749523528380382E-14),(0.19509039794782512,-0.980785265299474,0.),(0.09801728974630905,-0.9951847119559203,0.),(0.19509039794782512,-0.980785265299474,0.),(0.09801728974630905,-0.9951847119559203,0.),(0.9447142547101878,0.3278947650502742,0.),(0.9769903234900121,0.2132836322995312,0.),(0.9769903234900121,0.2132836322995312,0.),(0.9447142547101878,0.3278947650502742,0.),(0.8957596329165385,0.44453872726369803,0.),(0.9447142547101878,0.3278947650502742,0.),(0.9447142547101878,0.3278947650502742,0.),(0.8957596329165385,0.44453872726369803,0.),(0.36763569523471507,-0.9299698896143292,0.),(0.24649919644888388,-0.9691429957184104,0.),(0.36763569523471507,-0.9299698896143292,0.),(0.24649919644888388,-0.9691429957184104,0.),(0.4866110292734116,-0.8736187418945813,0.),(0.36763569523471507,-0.9299698896143292,0.),(0.4866110292734116,-0.8736187418945813,0.),(0.36763569523471507,-0.9299698896143292,0.),(-0.5218882328493185,-0.8530138758621781,0.),(-0.6371382701240347,-0.7707495214032589,0.),(-0.5218882328493185,-0.8530138758621781,0.),(-0.6371382701240347,-0.7707495214032589,0.),(0.9942464699972969,-0.10711655753390546,0.),(0.9752819685766632,-0.22096398296833067,0.),(0.9752819685766632,-0.22096398296833067,0.),(0.9942464699972969,-0.10711655753390546,0.),(0.9999995436725548,-0.0009553296197073197,0.),(0.9942464699972969,-0.10711655753390546,0.),(0.9942464699972969,-0.10711655753390546,0.),(0.9999995436725548,-0.0009553296197073197,0.),(-0.7284943753270046,0.6850517827996052,0.),(-0.8576732356667385,0.5141951194059969,0.),(-0.8576732356667385,0.5141951194059969,0.),(-0.7284943753270046,0.6850517827996052,0.),(-0.7284943753270046,0.6850517827996052,0.),(-0.5669105664485456,0.8237793452430021,0.),(-0.7284943753270046,0.6850517827996052,0.),(-0.5669105664485456,0.8237793452430021,0.),(-0.3790838524776873,0.9253623251411714,0.),(-0.1834995529945839,0.9830197933158762,0.),(-0.3790838524776873,0.9253623251411714,0.),(-0.1834995529945839,0.9830197933158762,0.),(-0.1834995529945839,0.9830197933158762,0.),(-0.012947889549911789,0.9999161725645823,0.),(-0.1834995529945839,0.9830197933158762,0.),(-0.012947889549911789,0.9999161725645823,0.),(-0.5669105664485456,0.8237793452430021,0.),(-0.3790838524776873,0.9253623251411714,0.),(-0.5669105664485456,0.8237793452430021,0.),(-0.3790838524776873,0.9253623251411714,0.),(0.25678560352314495,0.9664683925629717,0.),(0.38760898056242665,0.9218238867524298,0.),(0.25678560352314495,0.9664683925629717,0.),(0.38760898056242665,0.9218238867524298,0.),(-0.021878265380184617,-0.9997606421058765,0.),(0.18338909196229686,-0.9830404065699663,0.),(-0.021878265380184617,-0.9997606421058765,0.),(0.18338909196229686,-0.9830404065699663,0.),(-0.2724781561229833,-0.9621619689199004,0.),(-0.021878265380184617,-0.9997606421058765,0.),(-0.2724781561229833,-0.9621619689199004,0.),(-0.021878265380184617,-0.9997606421058765,0.),(0.9946569870411934,0.10323506250366385,0.),(0.9999995436725548,-0.0009553296197073197,0.),(0.9999995436725548,-0.0009553296197073197,0.),(0.9946569870411934,0.10323506250366385,0.),(0.817214458947544,-0.5763336950821748,0.),(0.7221689293892913,-0.6917167320693673,0.),(0.7221689293892913,-0.6917167320693673,0.),(0.817214458947544,-0.5763336950821748,0.),(0.8893220941653559,-0.45728132788180387,0.),(0.817214458947544,-0.5763336950821748,0.),(0.817214458947544,-0.5763336950821748,0.),(0.8893220941653559,-0.45728132788180387,0.),(-0.9882486706267435,0.15285471862024486,0.),(-0.9997961495365582,-0.02019057631352784,0.),(-0.9997961495365582,-0.02019057631352784,0.),(-0.9882486706267435,0.15285471862024486,0.),(-0.9447848469584931,0.32769130741845615,0.),(-0.9882486706267435,0.15285471862024486,0.),(-0.9882486706267435,0.15285471862024486,0.),(-0.9447848469584931,0.32769130741845615,0.),(0.38760898056242665,0.9218238867524298,0.),(0.5120817306320317,0.8589367270951357,0.),(0.38760898056242665,0.9218238867524298,0.),(0.5120817306320317,0.8589367270951357,0.),(0.9769903234900121,0.2132836322995312,0.),(0.9946569870411934,0.10323506250366385,0.),(0.9946569870411934,0.10323506250366385,0.),(0.9769903234900121,0.2132836322995312,0.),(0.9453223709696031,0.3261374172713214,0.),(0.8598493850403663,0.5105477793955271,0.),(0.8598493850403663,0.5105477793955271,0.),(0.9453223709696031,0.3261374172713214,0.),(0.8598493850403663,0.5105477793955271,0.),(0.7345761428927619,0.6785262635247017,0.),(0.7345761428927619,0.6785262635247017,0.),(0.8598493850403663,0.5105477793955271,0.),(-0.9997961495365582,-0.02019057631352784,0.),(-0.9746360240228631,-0.22379593534491413,0.),(-0.9746360240228631,-0.22379593534491413,0.),(-0.9997961495365582,-0.02019057631352784,0.),(-0.9746360240228631,-0.22379593534491413,0.),(-0.9088850097664936,-0.41704680675166556,0.),(-0.9088850097664936,-0.41704680675166556,0.),(-0.9746360240228631,-0.22379593534491413,0.),(-0.9088850097664936,-0.41704680675166556,0.),(-0.8301610356462975,-0.5575236810169295,0.),(-0.8301610356462975,-0.5575236810169295,0.),(-0.9088850097664936,-0.41704680675166556,0.),(0.9882991966281712,0.15252769566249838,0.),(0.9453223709696031,0.3261374172713214,0.),(0.9453223709696031,0.3261374172713214,0.),(0.9882991966281712,0.15252769566249838,0.),(-0.8576732356667385,0.5141951194059969,0.),(-0.9447848469584931,0.32769130741845615,0.),(-0.9447848469584931,0.32769130741845615,0.),(-0.8576732356667385,0.5141951194059969,0.),(0.9752819685766632,-0.22096398296833067,0.),(0.9408475861876066,-0.3388300747645555,0.),(0.9408475861876066,-0.3388300747645555,0.),(0.9752819685766632,-0.22096398296833067,0.),(-0.0008875531940973642,-0.9999996061245864,0.),(-0.12780975406149545,-0.991798702745038,0.),(-0.0008875531940973642,-0.9999996061245864,0.),(-0.12780975406149545,-0.991798702745038,0.),(0.12233197847190952,-0.9924892377467619,0.),(-0.0008875531940973642,-0.9999996061245864,0.),(0.12233197847190952,-0.9924892377467619,0.),(-0.0008875531940973642,-0.9999996061245864,0.),(0.24649919644888388,-0.9691429957184104,0.),(0.12233197847190952,-0.9924892377467619,0.),(0.24649919644888388,-0.9691429957184104,0.),(0.12233197847190952,-0.9924892377467619,0.),(0.5120817306320317,0.8589367270951357,0.),(0.6291972681526775,0.7772456482664974,0.),(0.5120817306320317,0.8589367270951357,0.),(0.6291972681526775,0.7772456482664974,0.),(0.7362866814501166,0.6766697294243142,0.),(0.8266452258336311,0.5627234406051209,0.),(0.8266452258336311,0.5627234406051209,0.),(0.7362866814501166,0.6766697294243142,0.),(0.8266452258336311,0.5627234406051209,0.),(0.8957596329165385,0.44453872726369803,0.),(0.8957596329165385,0.44453872726369803,0.),(0.8266452258336311,0.5627234406051209,0.),(-0.012947889549911789,0.9999161725645823,0.),(0.12580746189129235,0.9920546771889498,0.),(-0.012947889549911789,0.9999161725645823,0.),(0.12580746189129235,0.9920546771889498,0.),(0.12580746189129235,0.9920546771889498,0.),(0.25678560352314495,0.9664683925629717,0.),(0.12580746189129235,0.9920546771889498,0.),(0.25678560352314495,0.9664683925629717,0.),(0.9408475861876066,-0.3388300747645555,0.),(0.8893220941653559,-0.45728132788180387,0.),(0.8893220941653559,-0.45728132788180387,0.),(0.9408475861876066,-0.3388300747645555,0.),(0.6291972681526775,0.7772456482664974,0.),(0.7362866814501166,0.6766697294243142,0.),(0.6291972681526775,0.7772456482664974,0.),(0.7362866814501166,0.6766697294243142,0.),(-0.12780975406149545,-0.991798702745038,0.),(-0.26163236387882916,-0.9651676052226247,0.),(-0.12780975406149545,-0.991798702745038,0.),(-0.26163236387882916,-0.9651676052226247,0.),(-0.39586511141738157,-0.9183086700900217,0.),(-0.5218882328493185,-0.8530138758621781,0.),(-0.39586511141738157,-0.9183086700900217,0.),(-0.5218882328493185,-0.8530138758621781,0.),(-0.8301610356462975,-0.5575236810169295,0.),(-0.7414983772070644,-0.6709546606137334,0.),(-0.7414983772070644,-0.6709546606137334,0.),(-0.8301610356462975,-0.5575236810169295,0.),(-0.6371382701240347,-0.7707495214032589,0.),(-0.7414983772070644,-0.6709546606137334,0.),(-0.6371382701240347,-0.7707495214032589,0.),(-0.7414983772070644,-0.6709546606137334,0.),(-0.26163236387882916,-0.9651676052226247,0.),(-0.39586511141738157,-0.9183086700900217,0.),(-0.26163236387882916,-0.9651676052226247,0.),(-0.39586511141738157,-0.9183086700900217,0.),(0.9999861252731272,0.00526775675575694,0.),(0.9882991966281712,0.15252769566249838,0.),(0.9882991966281712,0.15252769566249838,0.),(0.9999861252731272,0.00526775675575694,0.),(0.6078907658149572,-0.7940206652454991,0.),(0.4866110292734116,-0.8736187418945813,0.),(0.6078907658149572,-0.7940206652454991,0.),(0.4866110292734116,-0.8736187418945813,0.),(0.0002958514360789271,0.9999999562359629,0.),(-0.19223371225305855,0.981349173267807,0.),(0.0002958514360789271,0.9999999562359629,0.),(-0.19223371225305855,0.981349173267807,0.),(0.19272392771065497,0.9812530191993186,0.),(0.0002958514360789271,0.9999999562359629,0.),(0.19272392771065497,0.9812530191993186,0.),(0.0002958514360789271,0.9999999562359629,0.),(0.9908086705656648,-0.13527075933807678,0.),(0.9999861252731272,0.00526775675575694,0.),(0.9999861252731272,0.00526775675575694,0.),(0.9908086705656648,-0.13527075933807678,0.),(0.9519163807811555,-0.3063579670916137,0.),(0.9908086705656648,-0.13527075933807678,0.),(0.9908086705656648,-0.13527075933807678,0.),(0.9519163807811555,-0.3063579670916137,0.),(0.7221689293892913,-0.6917167320693673,0.),(0.6078907658149572,-0.7940206652454991,0.),(0.7221689293892913,-0.6917167320693673,0.),(0.6078907658149572,-0.7940206652454991,0.),(0.7345761428927619,0.6785262635247017,0.),(0.578454045877275,0.8157149727743213,0.),(0.7345761428927619,0.6785262635247017,0.),(0.578454045877275,0.8157149727743213,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.9643985522083707,-0.2644530818470427,0.),(0.9643985522083707,-0.2644530818470427,0.),(0.9643985522083707,-0.2644530818470427,0.),(0.9643985522083707,-0.2644530818470427,0.),(-0.9625082715910013,0.27125233108473634,0.),(-0.9672095041928837,0.2539798712476175,0.),(-0.9672095041928837,0.2539798712476175,0.),(-0.9625082715910013,0.27125233108473634,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.9769988877805387,0.21324439799345352,0.),(0.9836499297931796,0.18009113142482358,0.),(0.9836499297931796,0.18009113142482358,0.),(0.9769988877805387,0.21324439799345352,0.),(-0.9731576010320436,0.23013970442658913,0.),(-0.9748015785129227,0.22307371545907045,0.),(-0.9748015785129227,0.22307371545907045,0.),(-0.9731576010320436,0.23013970442658913,0.),(0.9668351110436297,-0.25540138616157154,0.),(0.9633571078061799,-0.268222077464389,0.),(0.9633571078061799,-0.268222077464389,0.),(0.9668351110436297,-0.25540138616157154,0.),(0.9701425001453329,-0.24253562503632958,0.),(0.9668351110436297,-0.25540138616157154,0.),(0.9668351110436297,-0.25540138616157154,0.),(0.9701425001453329,-0.24253562503632958,0.),(-0.9649338002855462,-0.2624933543282454,0.),(-0.9638016856477805,-0.2666201619204687,0.),(-0.9638016856477805,-0.2666201619204687,0.),(-0.9649338002855462,-0.2624933543282454,0.),(0.9741171320751483,0.2260438298155657,0.),(0.9767827016489056,0.21423247596819933,0.),(0.9767827016489056,0.21423247596819933,0.),(0.9741171320751483,0.2260438298155657,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(-0.9672095041928837,0.2539798712476175,0.),(-0.9716008047066287,0.2366260262385175,0.),(-0.9716008047066287,0.2366260262385175,0.),(-0.9672095041928837,0.2539798712476175,0.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(-0.5361224862120472,-0.8441402014936934,0.),(-0.2724781561229833,-0.9621619689199004,0.),(-0.5361224862120472,-0.8441402014936934,0.),(-0.2724781561229833,-0.9621619689199004,0.),(-0.7584219831189418,-0.6517638341622919,0.),(-0.5361224862120472,-0.8441402014936934,0.),(-0.7584219831189418,-0.6517638341622919,0.),(-0.5361224862120472,-0.8441402014936934,0.),(-0.989607048477485,0.14379808623093912,0.),(-0.9501115102274097,0.31191043287038495,0.),(-0.9501115102274097,0.31191043287038495,0.),(-0.989607048477485,0.14379808623093912,0.),(-0.9501115102274097,0.31191043287038495,0.),(-0.8675425301753608,0.4973630045921526,0.),(-0.8675425301753608,0.4973630045921526,0.),(-0.9501115102274097,0.31191043287038495,0.),(0.5444171631195075,-0.8388146115208698,0.),(0.7089870822585878,-0.7052214667680322,0.),(0.5444171631195075,-0.8388146115208698,0.),(0.7089870822585878,-0.7052214667680322,0.),(0.7089870822585878,-0.7052214667680322,0.),(0.8581695987356767,-0.5133662823032382,0.),(0.8581695987356767,-0.5133662823032382,0.),(0.7089870822585878,-0.7052214667680322,0.),(-0.8675425301753608,0.4973630045921526,0.),(-0.7411781990788633,0.6713083324450941,0.),(-0.7411781990788633,0.6713083324450941,0.),(-0.8675425301753608,0.4973630045921526,0.),(-0.5817421295538566,0.8133732812811987,0.),(-0.7411781990788633,0.6713083324450941,0.),(-0.5817421295538566,0.8133732812811987,0.),(-0.7411781990788633,0.6713083324450941,0.),(0.8581695987356767,-0.5133662823032382,0.),(0.9519163807811555,-0.3063579670916137,0.),(0.9519163807811555,-0.3063579670916137,0.),(0.8581695987356767,-0.5133662823032382,0.),(0.370770082790638,-0.9287246877882721,0.),(0.5444171631195075,-0.8388146115208698,0.),(0.370770082790638,-0.9287246877882721,0.),(0.5444171631195075,-0.8388146115208698,0.),(0.18338909196229686,-0.9830404065699663,0.),(0.370770082790638,-0.9287246877882721,0.),(0.18338909196229686,-0.9830404065699663,0.),(0.370770082790638,-0.9287246877882721,0.),(0.578454045877275,0.8157149727743213,0.),(0.392800811108307,0.9196235766837736,0.),(0.578454045877275,0.8157149727743213,0.),(0.392800811108307,0.9196235766837736,0.),(0.392800811108307,0.9196235766837736,0.),(0.19272392771065497,0.9812530191993186,0.),(0.392800811108307,0.9196235766837736,0.),(0.19272392771065497,0.9812530191993186,0.),(-0.9079682524707186,-0.41903896299183185,0.),(-0.9807060117051631,-0.19548841041185108,0.),(-0.9807060117051631,-0.19548841041185108,0.),(-0.9079682524707186,-0.41903896299183185,0.),(-0.9807060117051631,-0.19548841041185108,0.),(-0.9999291486926968,-0.011903679880554852,0.),(-0.9999291486926968,-0.011903679880554852,0.),(-0.9807060117051631,-0.19548841041185108,0.),(-0.19223371225305855,0.981349173267807,0.),(-0.3935263597020274,0.9193133329935289,0.),(-0.19223371225305855,0.981349173267807,0.),(-0.3935263597020274,0.9193133329935289,0.),(-0.7584219831189418,-0.6517638341622919,0.),(-0.9079682524707186,-0.41903896299183185,0.),(-0.9079682524707186,-0.41903896299183185,0.),(-0.7584219831189418,-0.6517638341622919,0.),(-0.3935263597020274,0.9193133329935289,0.),(-0.5817421295538566,0.8133732812811987,0.),(-0.3935263597020274,0.9193133329935289,0.),(-0.5817421295538566,0.8133732812811987,0.),(-0.9999291486926968,-0.011903679880554852,0.),(-0.989607048477485,0.14379808623093912,0.),(-0.989607048477485,0.14379808623093912,0.),(-0.9999291486926968,-0.011903679880554852,0.),(-0.9714624054277151,0.23719358094307266,0.),(-0.9731576010320436,0.23013970442658913,0.),(-0.9731576010320436,0.23013970442658913,0.),(-0.9714624054277151,0.23719358094307266,0.),(-0.9665515520007026,-0.256472410455848,0.),(-0.9665515520007026,-0.256472410455848,0.),(-0.9665515520007026,-0.256472410455848,0.),(-0.9665515520007026,-0.256472410455848,0.),(-0.9660482448389756,-0.2583617398987992,0.),(-0.9649338002855462,-0.2624933543282454,0.),(-0.9649338002855462,-0.2624933543282454,0.),(-0.9660482448389756,-0.2583617398987992,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.9622060458243664,0.2723224657993486,0.),(0.965807041701975,0.25926194899923066,0.),(0.965807041701975,0.25926194899923066,0.),(0.9622060458243664,0.2723224657993486,0.),(0.965807041701975,0.25926194899923066,0.),(0.9769988877805387,0.21324439799345352,0.),(0.9769988877805387,0.21324439799345352,0.),(0.965807041701975,0.25926194899923066,0.),(0.9767827016489056,0.21423247596819933,0.),(0.9793050618474799,0.20238971278181062,0.),(0.9793050618474799,0.20238971278181062,0.),(0.9767827016489056,0.21423247596819933,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.8311604628836111,0.5560326293834755,0.),(0.8311604628836111,0.5560326293834755,0.),(0.8311604628836111,0.5560326293834755,0.),(0.8311604628836111,0.5560326293834755,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(-0.8313835216090105,-0.5556990552421339,0.),(-0.8313835216090105,-0.5556990552421339,0.),(-0.8313835216090105,-0.5556990552421339,0.),(-0.8313835216090105,-0.5556990552421339,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(0.9807852652994644,-0.19509039794787292,0.),(0.9951847119559052,-0.09801728974646383,0.),(0.9951847119559052,-0.09801728974646383,0.),(0.9807852652994644,-0.19509039794787292,0.),(-0.8314696169329316,0.5555702260897393,0.),(-0.7071067811865489,0.7071067811865461,0.),(-0.7071067811865489,0.7071067811865461,0.),(-0.8314696169329316,0.5555702260897393,0.),(-0.5555702260896939,0.8314696169329622,0.),(-0.7071067811865489,0.7071067811865461,0.),(-0.5555702260896939,0.8314696169329622,0.),(-0.7071067811865489,0.7071067811865461,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.8858807962836784E-33,-1.6032830017092906E-33,1.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(0.38268349542964936,-0.9238795063890886,0.),(0.555570226089786,-0.8314696169329004,0.),(0.38268349542964936,-0.9238795063890886,0.),(0.555570226089786,-0.8314696169329004,0.),(0.19509039794791153,-0.9807852652994568,0.),(0.38268349542964936,-0.9238795063890886,0.),(0.19509039794791153,-0.9807852652994568,0.),(0.38268349542964936,-0.9238795063890886,0.),(0.09801728974643438,-0.9951847119559081,0.),(0.19509039794791153,-0.9807852652994568,0.),(0.09801728974643438,-0.9951847119559081,0.),(0.19509039794791153,-0.9807852652994568,0.),(-0.38268349542963814,0.9238795063890931,0.),(-0.5555702260896939,0.8314696169329622,0.),(-0.38268349542963814,0.9238795063890931,0.),(-0.5555702260896939,0.8314696169329622,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(-0.9238795063891102,0.38268349542959684,0.),(-0.8314696169329316,0.5555702260897393,0.),(-0.8314696169329316,0.5555702260897393,0.),(-0.9238795063891102,0.38268349542959684,0.),(-0.19509039794789132,0.9807852652994606,0.),(-0.09801728974637888,0.9951847119559135,0.),(-0.19509039794789132,0.9807852652994606,0.),(-0.09801728974637888,0.9951847119559135,0.),(-0.98078526529947,0.19509039794784488,0.),(-0.9951847119559265,0.09801728974624783,0.),(-0.9951847119559265,0.09801728974624783,0.),(-0.98078526529947,0.19509039794784488,0.),(0.9238795063891059,-0.3826834954296072,0.),(0.9807852652994644,-0.19509039794787292,0.),(0.9807852652994644,-0.19509039794787292,0.),(0.9238795063891059,-0.3826834954296072,0.),(0.7071067811865351,-0.70710678118656,0.),(0.8314696169328859,-0.5555702260898077,0.),(0.8314696169328859,-0.5555702260898077,0.),(0.7071067811865351,-0.70710678118656,0.),(0.8314696169328859,-0.5555702260898077,0.),(0.9238795063891059,-0.3826834954296072,0.),(0.9238795063891059,-0.3826834954296072,0.),(0.8314696169328859,-0.5555702260898077,0.),(-0.9238795497362213,0.3826833907804165,0.),(-0.98078526529947,0.19509039794784488,0.),(-0.98078526529947,0.19509039794784488,0.),(-0.9238795497362213,0.3826833907804165,0.),(-0.7071067811865286,0.7071067811865666,0.),(-0.5555702179389774,0.8314696223790966,0.),(-0.7071067811865286,0.7071067811865666,0.),(-0.5555702179389774,0.8314696223790966,0.),(-0.7071067811865286,0.7071067811865666,0.),(-0.8314696223790744,0.5555702179390106,0.),(-0.8314696223790744,0.5555702179390106,0.),(-0.7071067811865286,0.7071067811865666,0.),(-0.8314696223790744,0.5555702179390106,0.),(-0.9238795497362213,0.3826833907804165,0.),(-0.9238795497362213,0.3826833907804165,0.),(-0.8314696223790744,0.5555702179390106,0.),(-0.3826833907803875,0.9238795497362333,0.),(-0.19509039794789132,0.9807852652994606,0.),(-0.3826833907803875,0.9238795497362333,0.),(-0.19509039794789132,0.9807852652994606,0.),(-0.5555702179389774,0.8314696223790966,0.),(-0.3826833907803875,0.9238795497362333,0.),(-0.5555702179389774,0.8314696223790966,0.),(-0.3826833907803875,0.9238795497362333,0.),(0.555570226089786,-0.8314696169329004,0.),(0.7071067811865351,-0.70710678118656,0.),(0.555570226089786,-0.8314696169329004,0.),(0.7071067811865351,-0.70710678118656,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(0.,-1.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(-1.,0.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(0.,1.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(1.,0.,0.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,-1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(0.,0.,1.),(-0.08709942068020388,0.9961996240298292,0.),(-0.08709942068020388,0.9961996240298292,0.),(-0.08709942068020388,0.9961996240298292,0.),(-0.08709942068020388,0.9961996240298292,0.),(0.9774618285571268,0.21111223013780628,0.),(0.9455208071073157,0.3255616736152011,0.),(0.9455208071073157,0.3255616736152011,0.),(0.9774618285571268,0.21111223013780628,0.),(0.9455208071073157,0.3255616736152011,0.),(0.82228120474033,0.5690813828713708,0.),(0.82228120474033,0.5690813828713708,0.),(0.9455208071073157,0.3255616736152011,0.),(0.82228120474033,0.5690813828713708,0.),(0.618991963670469,0.7853973191394131,0.),(0.618991963670469,0.7853973191394131,0.),(0.82228120474033,0.5690813828713708,0.),(0.618991963670469,0.7853973191394131,0.),(0.3996723632402599,0.9166580616903697,0.),(0.618991963670469,0.7853973191394131,0.),(0.3996723632402599,0.9166580616903697,0.),(0.3996723632402599,0.9166580616903697,0.),(0.19339585438116996,0.9811208098436082,0.),(0.3996723632402599,0.9166580616903697,0.),(0.19339585438116996,0.9811208098436082,0.),(0.19339585438116996,0.9811208098436082,0.),(0.006270084827264089,0.9999803428249272,0.),(0.19339585438116996,0.9811208098436082,0.),(0.006270084827264089,0.9999803428249272,0.),(0.006270084827264089,0.9999803428249272,0.),(-0.1706379345644615,0.9853337989166792,0.),(0.006270084827264089,0.9999803428249272,0.),(-0.1706379345644615,0.9853337989166792,0.),(-0.1706379345644615,0.9853337989166792,0.),(-0.36619292031781997,0.930538954106225,0.),(-0.1706379345644615,0.9853337989166792,0.),(-0.36619292031781997,0.930538954106225,0.),(-0.36619292031781997,0.930538954106225,0.),(-0.5897177588229777,0.8076094135959565,0.),(-0.36619292031781997,0.930538954106225,0.),(-0.5897177588229777,0.8076094135959565,0.),(-0.5897177588229777,0.8076094135959565,0.),(-0.8042639065180913,0.5942723017878747,0.),(-0.5897177588229777,0.8076094135959565,0.),(-0.8042639065180913,0.5942723017878747,0.),(-0.9500076370258789,0.3122266638077316,0.),(-0.8042639065180913,0.5942723017878747,0.),(-0.8042639065180913,0.5942723017878747,0.),(-0.9500076370258789,0.3122266638077316,0.),(-0.999998131781137,0.001932985834453788,0.),(-0.9500076370258789,0.3122266638077316,0.),(-0.9500076370258789,0.3122266638077316,0.),(-0.999998131781137,0.001932985834453788,0.),(-0.9482459825263331,-0.31753670122155864,0.),(-0.999998131781137,0.001932985834453788,0.),(-0.999998131781137,0.001932985834453788,0.),(-0.9482459825263331,-0.31753670122155864,0.),(-0.7856441637606142,-0.6186786305901356,0.),(-0.9482459825263331,-0.31753670122155864,0.),(-0.9482459825263331,-0.31753670122155864,0.),(-0.7856441637606142,-0.6186786305901356,0.),(-0.7856441637606142,-0.6186786305901356,0.),(-0.5602022188465279,-0.8283558860776129,0.),(-0.7856441637606142,-0.6186786305901356,0.),(-0.5602022188465279,-0.8283558860776129,0.),(-0.5602022188465279,-0.8283558860776129,0.),(-0.35572378115320674,-0.9345911360172776,5.525978220010001E-31),(-0.5602022188465279,-0.8283558860776129,0.),(-0.35572378115320674,-0.9345911360172776,5.525978220010001E-31),(-0.35572378115320674,-0.9345911360172776,5.525978220010001E-31),(-0.26435381846863887,-0.964425766278074,1.1000904274438964E-30),(-0.35572378115320674,-0.9345911360172776,5.525978220010001E-31),(-0.31792071801850086,-0.9481173013159294,5.509088677023133E-31),(-0.31792071801850086,-0.9481173013159294,5.509088677023133E-31),(-0.26435381846863887,-0.964425766278074,1.1000904274438964E-30),(-0.31792071801850086,-0.9481173013159294,5.509088677023133E-31),(-0.4669255000030771,-0.8842966569239514,0.),(-0.31792071801850086,-0.9481173013159294,5.509088677023133E-31),(-0.4669255000030771,-0.8842966569239514,0.),(-0.4669255000030771,-0.8842966569239514,0.),(-0.6627300222149948,-0.7488584096175408,0.),(-0.4669255000030771,-0.8842966569239514,0.),(-0.6627300222149948,-0.7488584096175408,0.),(-0.8433903094801822,-0.5373013920277173,0.),(-0.6627300222149948,-0.7488584096175408,0.),(-0.6627300222149948,-0.7488584096175408,0.),(-0.8433903094801822,-0.5373013920277173,0.),(-0.9619276929535128,-0.27330406789715506,0.),(-0.8433903094801822,-0.5373013920277173,0.),(-0.8433903094801822,-0.5373013920277173,0.),(-0.9619276929535128,-0.27330406789715506,0.),(-0.9999804818049974,0.006247880364198881,0.),(-0.9619276929535128,-0.27330406789715506,0.),(-0.9619276929535128,-0.27330406789715506,0.),(-0.9999804818049974,0.006247880364198881,0.),(-0.9572996684082709,0.2890974660307744,0.),(-0.9999804818049974,0.006247880364198881,0.),(-0.9999804818049974,0.006247880364198881,0.),(-0.9572996684082709,0.2890974660307744,0.),(-0.8306807534286091,0.5567490331228951,0.),(-0.9572996684082709,0.2890974660307744,0.),(-0.9572996684082709,0.2890974660307744,0.),(-0.8306807534286091,0.5567490331228951,0.),(-0.6269838321900799,0.779032267734939,0.),(-0.8306807534286091,0.5567490331228951,0.),(-0.8306807534286091,0.5567490331228951,0.),(-0.6269838321900799,0.779032267734939,0.),(-0.6269838321900799,0.779032267734939,0.),(-0.39405829076990984,0.9190854494961267,0.),(-0.6269838321900799,0.779032267734939,0.),(-0.39405829076990984,0.9190854494961267,0.),(-0.39405829076990984,0.9190854494961267,0.),(-0.18580751544945262,0.9825861627371422,0.),(-0.39405829076990984,0.9190854494961267,0.),(-0.18580751544945262,0.9825861627371422,0.),(-0.18580751544945262,0.9825861627371422,0.),(-0.0014495197728581503,0.9999989494456624,0.),(-0.18580751544945262,0.9825861627371422,0.),(-0.0014495197728581503,0.9999989494456624,0.),(-0.0014495197728581503,0.9999989494456624,0.),(0.18439541958058675,0.9828521400687388,0.),(-0.0014495197728581503,0.9999989494456624,0.),(0.18439541958058675,0.9828521400687388,0.),(0.18439541958058675,0.9828521400687388,0.),(0.397653234982458,0.9175357784348174,0.),(0.18439541958058675,0.9828521400687388,0.),(0.397653234982458,0.9175357784348174,0.),(0.397653234982458,0.9175357784348174,0.),(0.6311132446113388,0.7756907067099287,0.),(0.397653234982458,0.9175357784348174,0.),(0.6311132446113388,0.7756907067099287,0.),(0.6311132446113388,0.7756907067099287,0.),(0.8310893844718592,0.5561388630712533,0.),(0.8310893844718592,0.5561388630712533,0.),(0.6311132446113388,0.7756907067099287,0.),(0.8310893844718592,0.5561388630712533,0.),(0.9540840705660083,0.29953895621804594,0.),(0.9540840705660083,0.29953895621804594,0.),(0.8310893844718592,0.5561388630712533,0.),(0.9540840705660083,0.29953895621804594,0.),(0.9862299090912843,0.16538006655518403,0.),(0.9862299090912843,0.16538006655518403,0.),(0.9540840705660083,0.29953895621804594,0.),(0.07505650511901447,-0.9971792822954755,0.),(0.07505650511901447,-0.9971792822954755,0.),(0.07505650511901447,-0.9971792822954755,0.),(0.07505650511901447,-0.9971792822954755,0.),(-0.9176891922159813,-0.3972990642953742,0.),(-0.9655584237881841,-0.2601863375576772,0.),(-0.9655584237881841,-0.2601863375576772,0.),(-0.9176891922159813,-0.3972990642953742,0.),(-0.7878441680336847,-0.6158746356973238,0.),(-0.9176891922159813,-0.3972990642953742,0.),(-0.9176891922159813,-0.3972990642953742,0.),(-0.7878441680336847,-0.6158746356973238,0.),(-0.6319969860598306,-0.7749708443620899,0.),(-0.7878441680336847,-0.6158746356973238,0.),(-0.7878441680336847,-0.6158746356973238,0.),(-0.6319969860598306,-0.7749708443620899,0.),(-0.6319969860598306,-0.7749708443620899,0.),(-0.4492259604736119,-0.8934181755687317,0.),(-0.6319969860598306,-0.7749708443620899,0.),(-0.4492259604736119,-0.8934181755687317,0.),(-0.4492259604736119,-0.8934181755687317,0.),(-0.23786759998517135,-0.9712975882175836,0.),(-0.4492259604736119,-0.8934181755687317,0.),(-0.23786759998517135,-0.9712975882175836,0.),(-0.23786759998517135,-0.9712975882175836,0.),(-0.006729681688991534,-0.9999773554357945,0.),(-0.23786759998517135,-0.9712975882175836,0.),(-0.006729681688991534,-0.9999773554357945,0.),(-0.006729681688991534,-0.9999773554357945,0.),(0.21785673822142915,-0.9759807588326319,0.),(-0.006729681688991534,-0.9999773554357945,0.),(0.21785673822142915,-0.9759807588326319,0.),(0.21785673822142915,-0.9759807588326319,0.),(0.426740401850111,-0.9043741645075924,0.),(0.21785673822142915,-0.9759807588326319,0.),(0.426740401850111,-0.9043741645075924,0.),(0.426740401850111,-0.9043741645075924,0.),(0.6499756897148813,-0.7599550004965191,0.),(0.426740401850111,-0.9043741645075924,0.),(0.6499756897148813,-0.7599550004965191,0.),(0.6499756897148813,-0.7599550004965191,0.),(0.8920265571908663,-0.45198298780619,0.),(0.8920265571908663,-0.45198298780619,0.),(0.6499756897148813,-0.7599550004965191,0.),(0.8920265571908663,-0.45198298780619,0.),(0.9998122896310956,-0.019374867809258792,0.),(0.9998122896310956,-0.019374867809258792,0.),(0.8920265571908663,-0.45198298780619,0.),(0.9998122896310956,-0.019374867809258792,0.),(0.9150023212001752,0.40344857441598614,0.),(0.9150023212001752,0.40344857441598614,0.),(0.9998122896310956,-0.019374867809258792,0.),(0.9150023212001752,0.40344857441598614,0.),(0.6471347723667976,0.7623756202776772,0.),(0.6471347723667976,0.7623756202776772,0.),(0.9150023212001752,0.40344857441598614,0.),(0.6471347723667976,0.7623756202776772,0.),(0.36235316167200854,0.93204087154282,0.),(0.6471347723667976,0.7623756202776772,0.),(0.36235316167200854,0.93204087154282,0.),(0.36235316167200854,0.93204087154282,0.),(0.2550849049142149,0.9669186580498412,0.),(0.36235316167200854,0.93204087154282,0.),(0.2550849049142149,0.9669186580498412,0.),(0.2550849049142149,0.9669186580498412,0.),(0.28595039760148855,0.9582444208611657,0.),(0.2550849049142149,0.9669186580498412,0.),(0.28595039760148855,0.9582444208611657,0.),(0.28595039760148855,0.9582444208611657,0.),(0.42364706687595166,0.9058273360455641,0.),(0.28595039760148855,0.9582444208611657,0.),(0.42364706687595166,0.9058273360455641,0.),(0.42364706687595166,0.9058273360455641,0.),(0.6276382490359698,0.7785051241623668,0.),(0.42364706687595166,0.9058273360455641,0.),(0.6276382490359698,0.7785051241623668,0.),(0.6276382490359698,0.7785051241623668,0.),(0.8269599887954417,0.5622607730683717,0.),(0.8269599887954417,0.5622607730683717,0.),(0.6276382490359698,0.7785051241623668,0.),(0.8269599887954417,0.5622607730683717,0.),(0.9588699203284513,0.2838458664298454,0.),(0.9588699203284513,0.2838458664298454,0.),(0.8269599887954417,0.5622607730683717,0.),(0.9588699203284513,0.2838458664298454,0.),(0.9999875508055405,-0.004989813016214063,0.),(0.9999875508055405,-0.004989813016214063,0.),(0.9588699203284513,0.2838458664298454,0.),(0.9999875508055405,-0.004989813016214063,0.),(0.957401173102709,-0.2887611361342741,0.),(0.957401173102709,-0.2887611361342741,0.),(0.9999875508055405,-0.004989813016214063,0.),(0.957401173102709,-0.2887611361342741,0.),(0.835029876011192,-0.5502046039145194,0.),(0.835029876011192,-0.5502046039145194,0.),(0.957401173102709,-0.2887611361342741,0.),(0.835029876011192,-0.5502046039145194,0.),(0.644888194762835,-0.7642769238015314,0.),(0.644888194762835,-0.7642769238015314,0.),(0.835029876011192,-0.5502046039145194,0.),(0.644888194762835,-0.7642769238015314,0.),(0.42113746186410883,-0.9069968237070384,0.),(0.644888194762835,-0.7642769238015314,0.),(0.42113746186410883,-0.9069968237070384,0.),(0.42113746186410883,-0.9069968237070384,0.),(0.202992057833538,-0.9791803840235496,0.),(0.42113746186410883,-0.9069968237070384,0.),(0.202992057833538,-0.9791803840235496,0.),(0.202992057833538,-0.9791803840235496,0.),(0.008487459676545215,-0.9999639808654306,0.),(0.202992057833538,-0.9791803840235496,0.),(0.008487459676545215,-0.9999639808654306,0.),(0.008487459676545215,-0.9999639808654306,0.),(-0.17916273136199512,-0.9838194527914711,0.),(0.008487459676545215,-0.9999639808654306,0.),(-0.17916273136199512,-0.9838194527914711,0.),(-0.17916273136199512,-0.9838194527914711,0.),(-0.40107835149177207,-0.9160437522109098,0.),(-0.17916273136199512,-0.9838194527914711,0.),(-0.40107835149177207,-0.9160437522109098,0.),(-0.40107835149177207,-0.9160437522109098,0.),(-0.6388336480978726,-0.7693448966867615,0.),(-0.40107835149177207,-0.9160437522109098,0.),(-0.6388336480978726,-0.7693448966867615,0.),(-0.8340779567171348,-0.5516465916858089,0.),(-0.6388336480978726,-0.7693448966867615,0.),(-0.6388336480978726,-0.7693448966867615,0.),(-0.8340779567171348,-0.5516465916858089,0.),(-0.9557741620484655,-0.29410160006459296,0.),(-0.8340779567171348,-0.5516465916858089,0.),(-0.8340779567171348,-0.5516465916858089,0.),(-0.9557741620484655,-0.29410160006459296,0.),(-0.9876333514957574,-0.15678125848856422,0.),(-0.9557741620484655,-0.29410160006459296,0.),(-0.9557741620484655,-0.29410160006459296,0.),(-0.9876333514957574,-0.15678125848856422,0.)),$,((1,2,3),(2,1,4),(5,6,7),(6,5,8),(8,5,9),(9,5,10),(9,10,11),(11,10,12),(12,10,13),(12,13,14),(14,13,15),(15,13,16),(16,13,17),(16,17,18),(18,17,19),(19,17,20),(19,20,21),(19,21,22),(23,24,25),(24,23,26),(27,28,29),(28,27,30),(31,32,33),(32,31,34),(35,36,37),(36,35,38),(39,40,41),(40,39,42),(40,42,43),(40,43,44),(44,43,45),(44,45,46),(44,46,47),(47,46,48),(47,48,49),(47,49,50),(47,50,51),(51,50,52),(51,52,53),(51,53,54),(54,53,55),(55,53,56),(57,58,59),(58,57,60),(61,62,63),(62,61,64),(65,66,67),(66,65,68),(69,70,71),(70,69,72),(73,74,75),(74,73,76),(77,78,79),(78,77,80),(81,82,83),(82,81,84),(85,86,87),(86,85,88),(89,90,91),(90,89,92),(93,94,95),(94,93,96),(97,98,99),(98,97,100),(101,102,103),(102,101,104),(105,106,107),(106,105,108),(109,110,111),(110,109,112),(113,114,115),(114,113,116),(117,118,119),(118,117,120),(121,122,123),(122,121,124),(125,126,127),(126,125,128),(129,130,131),(130,129,132),(133,134,135),(134,133,136),(137,138,139),(138,137,140),(141,142,143),(142,141,144),(145,146,147),(146,145,148),(149,150,151),(150,149,152),(153,154,155),(154,153,156),(157,158,159),(158,157,160),(161,162,163),(162,161,164),(165,166,167),(166,165,168),(169,170,171),(170,169,172),(173,174,175),(174,173,176),(177,178,179),(178,177,180),(181,182,183),(182,181,184),(185,186,187),(186,185,188),(189,190,191),(190,189,192),(193,194,195),(194,193,196),(197,198,199),(198,197,200),(201,202,203),(202,201,204),(205,206,207),(206,205,208),(209,210,211),(210,209,212),(213,214,215),(214,213,216),(217,218,219),(218,217,220),(221,222,223),(222,221,224),(225,226,227),(226,225,228),(229,230,231),(230,229,232),(233,234,235),(234,233,236),(237,238,239),(238,237,240),(241,242,243),(242,241,244),(245,246,247),(246,245,248),(249,250,251),(250,249,252),(253,254,255),(254,253,256),(257,258,259),(258,257,260),(261,262,263),(262,261,264),(265,266,267),(266,265,268),(269,270,271),(270,269,272),(273,274,275),(274,273,276),(277,278,279),(278,277,280),(281,282,283),(282,281,284),(285,286,287),(286,285,288),(289,290,291),(290,289,292),(293,294,295),(294,293,296),(297,298,299),(298,297,300),(301,302,303),(302,301,304),(305,306,307),(306,305,308),(309,310,311),(310,309,312),(313,314,315),(314,313,316),(317,318,319),(318,317,320),(321,322,323),(322,321,324),(325,326,327),(326,325,328),(326,328,329),(329,328,330),(329,330,331),(331,330,332),(331,333,334),(333,331,332),(335,336,337),(336,335,338),(339,340,341),(340,339,342),(343,344,345),(344,343,346),(347,348,349),(348,347,350),(351,352,353),(352,351,354),(355,356,357),(356,355,358),(359,360,361),(360,359,362),(360,362,363),(360,363,364),(364,363,365),(364,365,366),(364,366,367),(367,366,368),(368,366,369),(368,369,370),(370,369,371),(371,369,372),(371,372,373),(371,373,374),(371,374,375),(375,374,376),(375,376,377),(375,377,378),(379,380,381),(380,379,382),(383,384,385),(384,383,386),(386,383,387),(387,383,388),(387,388,389),(389,388,390),(390,388,391),(390,391,392),(390,392,393),(393,392,394),(393,394,395),(393,395,396),(396,395,397),(397,395,398),(398,395,399),(398,399,400),(400,399,401),(401,399,402),(403,404,405),(404,403,406),(407,408,409),(408,407,410),(411,412,413),(412,411,414),(415,416,417),(416,415,418),(419,420,421),(420,419,422),(423,424,425),(424,423,426),(427,428,429),(428,427,430),(431,432,433),(432,431,434),(435,436,437),(436,435,438),(439,440,441),(440,439,442),(443,444,445),(444,443,446),(447,448,449),(448,447,450),(451,452,453),(452,451,454),(455,456,457),(456,455,458),(459,460,461),(460,459,462),(463,464,465),(464,463,466),(467,468,469),(468,467,470),(471,472,473),(472,471,474),(475,476,477),(476,475,478),(479,480,481),(480,479,482),(483,484,485),(484,483,486),(487,488,489),(488,487,490),(491,492,493),(492,491,494),(495,496,497),(496,495,498),(499,500,501),(500,499,502),(503,504,505),(504,503,506),(507,508,509),(508,507,510),(511,512,513),(512,511,514),(515,516,517),(516,515,518),(519,520,521),(520,519,522),(523,524,525),(524,523,526),(527,528,529),(528,527,530),(531,532,533),(532,531,534),(535,536,537),(536,535,538),(539,540,541),(540,539,542),(543,544,545),(544,543,546),(546,543,547),(547,543,540),(547,540,542),(548,544,546),(549,550,551),(550,549,552),(553,554,555),(554,553,556),(557,558,559),(558,557,560),(561,562,563),(562,561,564),(565,566,567),(566,565,568),(569,570,571),(570,569,572),(573,574,575),(574,573,576),(574,576,577),(574,577,578),(574,578,579),(574,579,580),(580,579,581),(581,579,582),(581,582,583),(583,582,584),(584,582,585),(585,582,586),(585,586,587),(587,586,588),(588,586,589),(588,589,590),(591,592,593),(592,591,594),(594,591,595),(595,591,596),(596,591,597),(597,591,598),(597,598,599),(597,599,600),(600,599,601),(600,601,602),(600,602,603),(600,603,604),(604,603,605),(604,605,606),(604,606,607),(607,606,608),(609,610,611),(610,609,612),(613,614,615),(614,613,616),(617,618,619),(618,617,620),(621,622,623),(622,621,624),(625,626,627),(626,625,628),(629,630,631),(630,629,632),(633,634,635),(634,633,636),(637,638,639),(638,637,640),(641,642,643),(642,641,644),(645,646,647),(646,645,648),(649,650,651),(650,649,652),(653,654,655),(654,653,656),(657,658,659),(658,657,660),(661,662,663),(662,661,664),(665,666,667),(666,665,668),(669,670,671),(670,669,672),(673,674,675),(674,673,676),(677,678,679),(678,677,680),(681,682,683),(682,681,684),(685,686,687),(686,685,688),(686,688,689),(689,688,690),(690,688,691),(691,688,692),(691,692,693),(693,692,694),(693,694,695),(695,694,696),(696,694,697),(696,697,698),(698,697,699),(698,699,700),(700,699,701),(700,701,702),(702,701,703),(702,703,704),(704,703,705),(704,705,706),(706,705,707),(706,707,708),(708,707,709),(708,709,710),(710,709,711),(711,709,712),(712,709,713),(712,713,714),(714,713,715),(714,715,716),(716,715,717),(716,717,718),(718,717,719),(718,719,720),(720,719,721),(720,721,722),(723,724,725),(724,723,726),(724,726,727),(727,726,728),(727,728,729),(729,728,685),(729,685,730),(730,685,687),(730,687,731),(730,731,732),(732,731,733),(732,733,734),(732,734,735),(735,734,736),(735,736,737),(737,736,738),(737,738,739),(739,738,740),(739,740,741),(739,741,742),(742,741,743),(742,743,744),(744,743,745),(744,745,746),(746,745,747),(747,745,748),(747,748,749),(749,748,750),(749,750,751),(751,750,752),(751,752,753),(753,752,754),(753,754,755),(753,755,711),(711,755,756),(711,756,710),(757,758,759),(758,757,760),(760,757,761),(760,761,762),(762,761,763),(762,763,764),(764,763,765),(764,765,766),(766,765,767),(767,765,768),(767,768,769),(769,768,770),(770,768,771),(770,771,772),(772,771,773),(772,773,774),(774,773,775),(774,775,776),(776,775,777),(777,775,778),(777,778,779),(779,778,780),(779,780,781),(781,780,782),(781,782,783),(781,783,784),(784,783,785),(784,785,786),(786,785,787),(786,787,788),(788,787,789),(788,789,790),(790,789,791),(791,789,792),(791,792,793),(793,792,794),(764,795,796),(795,764,766),(796,795,797),(796,797,798),(796,798,799),(796,799,800),(800,799,801),(800,801,802),(802,801,803),(802,803,804),(802,804,805),(805,804,806),(805,806,807),(807,806,808),(807,808,809),(809,808,810),(809,810,811),(811,810,812),(811,812,813),(813,812,814),(813,814,815),(815,814,816),(815,816,817),(817,816,794),(817,794,792),(817,792,818),(817,818,819),(819,818,820),(819,820,821),(821,820,822),(821,822,823),(823,822,824),(823,824,825),(825,824,826),(825,826,827),(827,826,828),(829,830,831),(830,829,832),(833,834,835),(834,833,836),(837,838,839),(838,837,840),(841,842,843),(842,841,844),(845,846,847),(846,845,848),(849,850,851),(850,849,852),(853,854,855),(854,853,856),(856,853,857),(857,853,858),(857,858,859),(859,858,860),(860,858,861),(861,858,862),(861,862,863),(861,863,864),(864,863,865),(864,865,866),(866,865,867),(867,865,868),(868,865,869),(868,869,870),(870,869,871),(871,869,872),(872,869,873),(872,873,874),(875,876,877),(876,875,878),(878,875,879),(878,879,880),(880,879,855),(880,855,881),(881,855,854),(881,854,882),(881,882,883),(881,883,884),(884,883,885),(884,885,886),(886,885,887),(886,887,888),(888,887,889),(888,889,890),(888,890,891),(891,890,892),(892,890,893),(892,893,894),(894,893,895),(895,893,896),(896,893,897),(897,893,898),(897,898,899),(899,898,900),(899,900,901),(902,903,904),(903,902,905),(905,902,906),(906,902,907),(906,907,908),(908,907,909),(908,909,910),(908,910,911),(911,910,912),(911,912,913),(911,913,914),(914,913,915),(914,915,916),(914,916,917),(917,916,918),(917,918,919),(919,918,920),(919,920,921),(919,921,896),(896,921,922),(896,922,895),(923,924,925),(924,923,926),(924,926,927),(924,927,928),(928,927,929),(928,929,930),(930,929,931),(931,929,932),(931,932,933),(933,932,934),(934,932,935),(934,935,936),(936,935,937),(937,935,938),(937,938,939),(939,938,940),(939,940,941),(941,940,942),(942,940,943),(942,943,944),(944,943,945),(946,947,948),(947,946,949),(947,949,950),(950,949,951),(950,951,952),(952,951,953),(952,953,954),(954,953,955),(955,953,956),(956,953,957),(956,957,958),(958,957,959),(958,959,960),(960,959,961),(960,961,962),(962,961,963),(963,961,964),(963,964,965),(963,965,966),(966,965,967),(966,967,945),(966,945,943),(966,943,968),(966,968,969),(969,968,970),(969,970,971),(971,970,972),(954,973,952),(973,954,974),(973,974,975),(973,975,976),(976,975,977),(976,977,978),(976,978,979),(976,979,980),(980,979,981),(981,979,982),(981,982,983),(983,982,984),(983,984,985),(983,985,986),(983,986,987),(987,986,988),(987,988,989),(987,989,990),(987,990,991),(991,990,992),(993,994,995),(994,993,996),(997,998,999),(998,997,1000),(1001,1002,1003),(1002,1001,1004),(1005,1006,1007),(1006,1005,1008),(1009,1010,1011),(1010,1009,1012),(1013,1014,1015),(1014,1013,1016),(1017,1018,1019),(1018,1017,1020),(1021,1022,1023),(1022,1021,1024),(1025,1026,1027),(1026,1025,1028),(1029,1030,1031),(1030,1029,1032),(1033,1034,1035),(1034,1033,1036),(1037,1038,1039),(1038,1037,1040),(1041,1042,1043),(1042,1041,1044),(1045,1046,1047),(1046,1045,1048),(1049,1050,1051),(1050,1049,1052),(1053,1054,1055),(1054,1053,1056),(1057,1058,1059),(1058,1057,1060),(1061,1062,1063),(1062,1061,1064),(1064,1061,1065),(1065,1061,1066),(1067,1068,1069),(1068,1067,1070),(1071,1072,1073),(1072,1071,1074),(1075,1076,1077),(1076,1075,1078),(1079,1080,1081),(1080,1079,1082),(1083,1084,1085),(1084,1083,1086),(1087,1088,1089),(1088,1087,1090),(1091,1092,1093),(1092,1091,1094),(1095,1096,1097),(1096,1095,1098),(1099,1100,1101),(1100,1099,1102),(1103,1104,1105),(1104,1103,1106),(1107,1108,1109),(1108,1107,1110),(1111,1112,1113),(1112,1111,1114),(1115,1116,1117),(1116,1115,1118),(1119,1120,1121),(1120,1119,1122),(1123,1124,1125),(1124,1123,1126),(1127,1128,1129),(1128,1127,1130),(1131,1132,1133),(1132,1131,1134),(1135,1136,1137),(1136,1135,1138),(1139,1140,1141),(1140,1139,1142),(1143,1144,1145),(1144,1143,1146),(1147,1148,1149),(1148,1147,1150),(1151,1152,1153),(1152,1151,1154),(1155,1156,1157),(1156,1155,1158),(1159,1160,1161),(1160,1159,1162),(1163,1164,1165),(1164,1163,1166),(1167,1168,1169),(1168,1167,1170),(1171,1172,1173),(1172,1171,1174),(1175,1176,1177),(1176,1175,1178),(1179,1180,1181),(1180,1179,1182),(1183,1184,1185),(1184,1183,1186),(1187,1188,1189),(1188,1187,1190),(1191,1192,1193),(1192,1191,1194),(1195,1196,1197),(1196,1195,1198),(1199,1200,1201),(1200,1199,1202),(1203,1204,1205),(1204,1203,1206),(1207,1208,1209),(1208,1207,1210),(1211,1212,1213),(1212,1211,1214),(1215,1216,1217),(1216,1215,1218),(1219,1220,1221),(1220,1219,1222),(1223,1224,1225),(1224,1223,1226),(1227,1228,1229),(1228,1227,1230),(1231,1232,1233),(1232,1231,1234),(1235,1236,1237),(1236,1235,1238),(1239,1240,1241),(1240,1239,1242),(1243,1244,1245),(1244,1243,1246),(1247,1248,1249),(1248,1247,1250),(1251,1252,1253),(1252,1251,1254),(1255,1256,1257),(1256,1255,1258),(1259,1260,1261),(1260,1259,1262),(1263,1264,1265),(1264,1263,1266),(1267,1268,1269),(1268,1267,1270)),$); +#334=IFCCARTESIANPOINTLIST3D(((0.3,-300.,5.),(0.3,-500.,0.),(0.3,-500.,5.),(0.3,-300.,0.),(97.845,-490.393,5.),(0.3,-300.,5.),(0.3,-500.,5.),(58.827,-294.236,5.),(115.105,-277.164,5.),(191.642,-461.94,5.),(166.971,-249.441,5.),(212.432,-212.132,5.),(278.085,-415.735,5.),(249.741,-166.671,5.),(277.464,-114.805,5.),(294.536,-58.527,5.),(353.853,-353.553,5.),(300.3,0.,5.),(500.3,0.,5.),(416.035,-277.785,5.),(462.24,-191.342,5.),(490.693,-97.545,5.),(0.3,-300.,5.),(58.827,-294.236,0.),(0.3,-300.,0.),(58.827,-294.236,5.),(300.3,0.,5.),(500.3,0.,0.),(300.3,0.,0.),(500.3,0.,5.),(300.3,0.,5.),(294.536,-58.527,0.),(294.536,-58.527,5.),(300.3,0.,0.),(191.642,-461.94,5.),(97.845,-490.393,0.),(191.642,-461.94,0.),(97.845,-490.393,5.),(0.3,-300.,0.),(97.845,-490.393,0.),(0.3,-500.,0.),(58.827,-294.236,0.),(115.105,-277.164,0.),(191.642,-461.94,0.),(166.971,-249.441,0.),(212.432,-212.132,0.),(278.085,-415.735,0.),(249.741,-166.671,0.),(277.464,-114.805,0.),(294.536,-58.527,0.),(353.853,-353.553,0.),(300.3,0.,0.),(500.3,0.,0.),(416.035,-277.785,0.),(462.24,-191.342,0.),(490.693,-97.545,0.),(490.693,-97.545,0.),(462.24,-191.342,5.),(462.24,-191.342,0.),(490.693,-97.545,5.),(462.24,-191.342,0.),(416.035,-277.785,5.),(416.035,-277.785,0.),(462.24,-191.342,5.),(500.3,0.,0.),(490.693,-97.545,5.),(490.693,-97.545,0.),(500.3,0.,5.),(278.085,-415.735,5.),(191.642,-461.94,0.),(278.085,-415.735,0.),(191.642,-461.94,5.),(353.853,-353.553,5.),(278.085,-415.735,0.),(353.853,-353.553,0.),(278.085,-415.735,5.),(58.827,-294.236,5.),(115.105,-277.164,0.),(58.827,-294.236,0.),(115.105,-277.164,5.),(416.035,-277.785,0.),(353.853,-353.553,5.),(353.853,-353.553,0.),(416.035,-277.785,5.),(294.536,-58.527,5.),(277.464,-114.805,0.),(277.464,-114.805,5.),(294.536,-58.527,0.),(97.845,-490.393,5.),(0.3,-500.,0.),(97.845,-490.393,0.),(0.3,-500.,5.),(877.313,53.797,0.),(881.793,37.789,5.),(881.793,37.789,0.),(877.313,53.797,5.),(871.041,68.83,0.),(877.313,53.797,5.),(877.313,53.797,0.),(871.041,68.83,5.),(813.425,-115.375,5.),(798.774,-120.117,0.),(813.425,-115.375,0.),(798.774,-120.117,5.),(827.53,-108.736,5.),(813.425,-115.375,0.),(827.53,-108.736,0.),(813.425,-115.375,5.),(705.8,-107.143,5.),(692.962,-97.994,0.),(705.8,-107.143,0.),(692.962,-97.994,5.),(884.434,-15.353,0.),(881.604,-32.57,5.),(881.604,-32.57,0.),(884.434,-15.353,5.),(885.377,2.85,0.),(884.434,-15.353,5.),(884.434,-15.353,0.),(885.377,2.85,5.),(683.164,95.825,5.),(668.786,76.852,0.),(668.786,76.852,5.),(683.164,95.825,0.),(683.164,95.825,5.),(700.79,110.973,0.),(683.164,95.825,0.),(700.79,110.973,5.),(720.806,121.793,5.),(743.212,128.285,0.),(720.806,121.793,0.),(743.212,128.285,5.),(743.212,128.285,5.),(768.006,130.449,0.),(743.212,128.285,0.),(768.006,130.449,5.),(700.79,110.973,5.),(720.806,121.793,0.),(700.79,110.973,0.),(720.806,121.793,5.),(800.367,126.383,5.),(815.29,121.301,0.),(800.367,126.383,0.),(815.29,121.301,5.),(768.174,102.448,5.),(751.506,100.965,0.),(768.174,102.448,0.),(751.506,100.965,5.),(791.292,99.367,5.),(768.174,102.448,0.),(791.292,99.367,0.),(768.174,102.448,5.),(884.481,20.807,0.),(885.377,2.85,5.),(885.377,2.85,0.),(884.481,20.807,5.),(861.955,-77.91,0.),(852.052,-89.977,5.),(852.052,-89.977,0.),(861.955,-77.91,5.),(870.287,-64.051,0.),(861.955,-77.91,5.),(861.955,-77.91,0.),(870.287,-64.051,5.),(652.354,28.939,5.),(650.3,0.,0.),(650.3,0.,5.),(652.354,28.939,0.),(658.516,54.557,5.),(652.354,28.939,0.),(652.354,28.939,5.),(658.516,54.557,0.),(815.29,121.301,5.),(829.374,114.185,0.),(815.29,121.301,0.),(829.374,114.185,5.),(881.793,37.789,0.),(884.481,20.807,5.),(884.481,20.807,0.),(881.793,37.789,5.),(689.808,-40.22,0.),(697.275,-56.542,5.),(697.275,-56.542,0.),(689.808,-40.22,5.),(697.275,-56.542,0.),(707.728,-70.506,5.),(707.728,-70.506,0.),(697.275,-56.542,5.),(650.3,0.,5.),(653.821,-31.522,0.),(653.821,-31.522,5.),(650.3,0.,0.),(653.821,-31.522,5.),(664.385,-61.368,0.),(664.385,-61.368,5.),(653.821,-31.522,0.),(664.385,-61.368,5.),(672.255,-75.107,0.),(672.255,-75.107,5.),(664.385,-61.368,0.),(685.328,-21.541,0.),(689.808,-40.22,5.),(689.808,-40.22,0.),(685.328,-21.541,5.),(668.786,76.852,5.),(658.516,54.557,0.),(658.516,54.557,5.),(668.786,76.852,0.),(881.604,-32.57,0.),(876.889,-48.803,5.),(876.889,-48.803,0.),(881.604,-32.57,5.),(767.839,-123.91,5.),(750.946,-122.862,0.),(767.839,-123.91,0.),(750.946,-122.862,5.),(783.579,-122.962,5.),(767.839,-123.91,0.),(783.579,-122.962,0.),(767.839,-123.91,5.),(798.774,-120.117,5.),(783.579,-122.962,0.),(798.774,-120.117,0.),(783.579,-122.962,5.),(829.374,114.185,5.),(842.228,105.251,0.),(829.374,114.185,0.),(842.228,105.251,5.),(853.456,94.714,0.),(863.061,82.574,5.),(863.061,82.574,0.),(853.456,94.714,5.),(863.061,82.574,0.),(871.041,68.83,5.),(871.041,68.83,0.),(863.061,82.574,5.),(768.006,130.449,5.),(784.606,129.433,0.),(768.006,130.449,0.),(784.606,129.433,5.),(784.606,129.433,5.),(800.367,126.383,0.),(784.606,129.433,0.),(800.367,126.383,5.),(876.889,-48.803,0.),(870.287,-64.051,5.),(870.287,-64.051,0.),(876.889,-48.803,5.),(842.228,105.251,5.),(853.456,94.714,0.),(842.228,105.251,0.),(853.456,94.714,5.),(750.946,-122.862,5.),(734.975,-119.718,0.),(750.946,-122.862,0.),(734.975,-119.718,5.),(719.926,-114.479,5.),(705.8,-107.143,0.),(719.926,-114.479,0.),(705.8,-107.143,5.),(672.255,-75.107,5.),(681.781,-87.316,0.),(681.781,-87.316,5.),(672.255,-75.107,0.),(692.962,-97.994,5.),(681.781,-87.316,0.),(692.962,-97.994,0.),(681.781,-87.316,5.),(734.975,-119.718,5.),(719.926,-114.479,0.),(734.975,-119.718,0.),(719.926,-114.479,5.),(683.835,-0.503,0.),(685.328,-21.541,5.),(685.328,-21.541,0.),(683.835,-0.503,5.),(840.577,-100.253,5.),(827.53,-108.736,0.),(840.577,-100.253,0.),(827.53,-108.736,5.),(767.671,-96.076,5.),(785.219,-94.463,0.),(767.671,-96.076,0.),(785.219,-94.463,5.),(750.406,-94.478,5.),(767.671,-96.076,0.),(750.406,-94.478,0.),(767.671,-96.076,5.),(685.391,25.261,0.),(683.835,-0.503,5.),(683.835,-0.503,0.),(685.391,25.261,5.),(690.059,47.053,0.),(685.391,25.261,5.),(685.391,25.261,0.),(690.059,47.053,5.),(852.052,-89.977,5.),(840.577,-100.253,0.),(852.052,-89.977,0.),(840.577,-100.253,5.),(707.728,-70.506,5.),(720.434,-81.693,0.),(707.728,-70.506,0.),(720.434,-81.693,5.),(-867.339,-122.904,5.),(-900.538,-122.904,0.),(-867.339,-122.904,0.),(-900.538,-122.904,5.),(-717.104,-122.904,5.),(-748.459,-122.904,0.),(-717.104,-122.904,0.),(-748.459,-122.904,5.),(-649.7,122.904,0.),(-717.104,-122.904,5.),(-717.104,-122.904,0.),(-649.7,122.904,5.),(-826.762,122.904,5.),(-873.543,-43.092,0.),(-873.543,-43.092,5.),(-826.762,122.904,0.),(-64.254,843.159,0.),(-64.254,650.,5.),(-64.254,650.,0.),(-64.254,843.159,5.),(-64.254,650.,5.),(-95.441,895.808,5.),(-95.441,650.,5.),(-64.254,843.159,5.),(-62.074,895.808,5.),(64.854,650.,5.),(67.034,702.817,5.),(98.221,650.,5.),(98.221,895.808,5.),(67.034,895.808,5.),(-740.914,-46.403,0.),(-733.201,-88.531,5.),(-733.201,-88.531,0.),(-740.914,-46.403,5.),(-720.961,-35.044,5.),(-733.201,-88.531,0.),(-733.201,-88.531,5.),(-720.961,-35.044,0.),(-815.193,64.386,0.),(-867.339,-122.904,5.),(-867.339,-122.904,0.),(-815.193,64.386,5.),(-807.983,93.226,0.),(-815.193,64.386,5.),(-815.193,64.386,0.),(-807.983,93.226,5.),(-800.27,64.386,5.),(-748.459,-122.904,0.),(-748.459,-122.904,5.),(-800.27,64.386,0.),(-932.396,122.904,0.),(-895.005,-38.229,5.),(-895.005,-38.229,0.),(-932.396,122.904,5.),(-932.396,122.904,0.),(-900.538,-122.904,0.),(-965.763,122.904,0.),(-895.005,-38.229,0.),(-884.609,-88.531,0.),(-867.339,-122.904,0.),(-873.543,-43.092,0.),(-826.762,122.904,0.),(-815.193,64.386,0.),(-807.983,93.226,0.),(-787.527,122.904,0.),(-800.27,64.386,0.),(-748.459,-122.904,0.),(-752.316,-1.509,0.),(-740.914,-46.403,0.),(-733.201,-88.531,0.),(-717.104,-122.904,0.),(-720.961,-35.044,0.),(-682.396,122.904,0.),(-649.7,122.904,0.),(-873.543,-43.092,5.),(-884.609,-88.531,0.),(-884.609,-88.531,5.),(-873.543,-43.092,0.),(-900.538,-122.904,5.),(-932.396,122.904,5.),(-965.763,122.904,5.),(-895.005,-38.229,5.),(-884.609,-88.531,5.),(-867.339,-122.904,5.),(-873.543,-43.092,5.),(-826.762,122.904,5.),(-815.193,64.386,5.),(-807.983,93.226,5.),(-787.527,122.904,5.),(-800.27,64.386,5.),(-748.459,-122.904,5.),(-752.316,-1.509,5.),(-740.914,-46.403,5.),(-733.201,-88.531,5.),(-717.104,-122.904,5.),(-720.961,-35.044,5.),(-682.396,122.904,5.),(-649.7,122.904,5.),(812.02,90.124,5.),(791.292,99.367,0.),(812.02,90.124,0.),(791.292,99.367,5.),(829.207,75.285,5.),(812.02,90.124,0.),(829.207,75.285,0.),(812.02,90.124,5.),(850.36,-19.356,5.),(845.911,-39.026,0.),(845.911,-39.026,5.),(850.36,-19.356,0.),(845.911,-39.026,5.),(838.497,-55.992,0.),(838.497,-55.992,5.),(845.911,-39.026,0.),(721.786,89.102,5.),(708.734,78.722,0.),(721.786,89.102,0.),(708.734,78.722,5.),(708.734,78.722,0.),(697.84,64.874,5.),(697.84,64.874,0.),(708.734,78.722,5.),(838.497,-55.992,5.),(828.117,-70.255,0.),(828.117,-70.255,5.),(838.497,-55.992,0.),(815.442,-81.552,5.),(828.117,-70.255,0.),(815.442,-81.552,0.),(828.117,-70.255,5.),(697.84,64.874,0.),(690.059,47.053,5.),(690.059,47.053,0.),(697.84,64.874,5.),(736.044,96.517,5.),(721.786,89.102,0.),(736.044,96.517,0.),(721.786,89.102,5.),(751.506,100.965,5.),(736.044,96.517,0.),(751.506,100.965,0.),(736.044,96.517,5.),(720.434,-81.693,5.),(734.66,-89.684,0.),(720.434,-81.693,0.),(734.66,-89.684,5.),(734.66,-89.684,5.),(750.406,-94.478,0.),(734.66,-89.684,0.),(750.406,-94.478,5.),(841.698,55.416,5.),(849.307,31.124,0.),(849.307,31.124,5.),(841.698,55.416,0.),(849.307,31.124,5.),(851.843,3.018,0.),(851.843,3.018,5.),(849.307,31.124,0.),(785.219,-94.463,5.),(801.143,-89.621,0.),(785.219,-94.463,0.),(801.143,-89.621,5.),(829.207,75.285,5.),(841.698,55.416,0.),(841.698,55.416,5.),(829.207,75.285,0.),(801.143,-89.621,5.),(815.442,-81.552,0.),(801.143,-89.621,0.),(815.442,-81.552,5.),(851.843,3.018,5.),(850.36,-19.356,0.),(850.36,-19.356,5.),(851.843,3.018,0.),(-682.396,122.904,5.),(-720.961,-35.044,0.),(-720.961,-35.044,5.),(-682.396,122.904,0.),(-965.763,122.904,5.),(-900.538,-122.904,0.),(-900.538,-122.904,5.),(-965.763,122.904,0.),(-807.983,93.226,5.),(-800.27,64.386,0.),(-800.27,64.386,5.),(-807.983,93.226,0.),(-826.762,122.904,5.),(-787.527,122.904,0.),(-826.762,122.904,0.),(-787.527,122.904,5.),(-682.396,122.904,5.),(-649.7,122.904,0.),(-682.396,122.904,0.),(-649.7,122.904,5.),(-787.527,122.904,0.),(-752.316,-1.509,5.),(-752.316,-1.509,0.),(-787.527,122.904,5.),(-752.316,-1.509,0.),(-740.914,-46.403,5.),(-740.914,-46.403,0.),(-752.316,-1.509,5.),(-895.005,-38.229,0.),(-884.609,-88.531,5.),(-884.609,-88.531,0.),(-895.005,-38.229,5.),(-965.763,122.904,5.),(-932.396,122.904,0.),(-965.763,122.904,0.),(-932.396,122.904,5.),(67.034,895.808,5.),(98.221,895.808,0.),(67.034,895.808,0.),(98.221,895.808,5.),(67.034,895.808,5.),(67.034,702.817,0.),(67.034,702.817,5.),(67.034,895.808,0.),(-95.441,895.808,5.),(-95.441,650.,0.),(-95.441,650.,5.),(-95.441,895.808,0.),(-64.254,650.,5.),(-95.441,650.,0.),(-64.254,650.,0.),(-95.441,650.,5.),(-95.441,895.808,5.),(-62.074,895.808,0.),(-95.441,895.808,0.),(-62.074,895.808,5.),(-62.074,895.808,0.),(67.034,702.817,5.),(67.034,702.817,0.),(-62.074,895.808,5.),(98.221,895.808,0.),(67.034,702.817,0.),(67.034,895.808,0.),(98.221,650.,0.),(-62.074,895.808,0.),(-95.441,650.,0.),(-95.441,895.808,0.),(-64.254,843.159,0.),(64.854,650.,0.),(-64.254,650.,0.),(98.221,650.,5.),(64.854,650.,0.),(98.221,650.,0.),(64.854,650.,5.),(-64.254,843.159,5.),(64.854,650.,0.),(64.854,650.,5.),(-64.254,843.159,0.),(98.221,895.808,0.),(98.221,650.,5.),(98.221,650.,0.),(98.221,895.808,5.),(-293.936,58.527,0.),(-299.7,0.,5.),(-299.7,0.,0.),(-293.936,58.527,5.),(249.741,-166.671,5.),(212.432,-212.132,0.),(212.432,-212.132,5.),(249.741,-166.671,0.),(166.971,-249.441,5.),(212.432,-212.132,0.),(166.971,-249.441,0.),(212.432,-212.132,5.),(-490.093,97.545,0.),(-299.7,0.,0.),(-499.7,0.,0.),(-461.64,191.342,0.),(-415.435,277.785,0.),(-353.253,353.553,0.),(-277.485,415.735,0.),(-293.936,58.527,0.),(-276.864,114.805,0.),(-191.042,461.94,0.),(-249.141,166.671,0.),(-211.832,212.132,0.),(-166.371,249.441,0.),(-97.245,490.393,0.),(-114.505,277.164,0.),(-58.227,294.236,0.),(0.3,500.,0.),(0.3,300.,0.),(-299.7,0.,5.),(-490.093,97.545,5.),(-499.7,0.,5.),(-461.64,191.342,5.),(-415.435,277.785,5.),(-353.253,353.553,5.),(-277.485,415.735,5.),(-293.936,58.527,5.),(-276.864,114.805,5.),(-191.042,461.94,5.),(-249.141,166.671,5.),(-211.832,212.132,5.),(-166.371,249.441,5.),(-97.245,490.393,5.),(-114.505,277.164,5.),(-58.227,294.236,5.),(0.3,500.,5.),(0.3,300.,5.),(0.3,500.,0.),(0.3,300.,5.),(0.3,300.,0.),(0.3,500.,5.),(-114.505,277.164,5.),(-166.371,249.441,0.),(-114.505,277.164,0.),(-166.371,249.441,5.),(-58.227,294.236,5.),(-114.505,277.164,0.),(-58.227,294.236,0.),(-114.505,277.164,5.),(0.3,300.,5.),(-58.227,294.236,0.),(0.3,300.,0.),(-58.227,294.236,5.),(115.105,-277.164,5.),(166.971,-249.441,0.),(115.105,-277.164,0.),(166.971,-249.441,5.),(-299.7,0.,5.),(-499.7,0.,0.),(-299.7,0.,0.),(-499.7,0.,5.),(277.464,-114.805,5.),(249.741,-166.671,0.),(249.741,-166.671,5.),(277.464,-114.805,0.),(-97.245,490.393,5.),(0.3,500.,0.),(-97.245,490.393,0.),(0.3,500.,5.),(-490.093,97.545,5.),(-499.7,0.,0.),(-499.7,0.,5.),(-490.093,97.545,0.),(-276.864,114.805,0.),(-293.936,58.527,5.),(-293.936,58.527,0.),(-276.864,114.805,5.),(-211.832,212.132,0.),(-249.141,166.671,5.),(-249.141,166.671,0.),(-211.832,212.132,5.),(-249.141,166.671,0.),(-276.864,114.805,5.),(-276.864,114.805,0.),(-249.141,166.671,5.),(-461.64,191.342,5.),(-490.093,97.545,0.),(-490.093,97.545,5.),(-461.64,191.342,0.),(-353.253,353.553,5.),(-277.485,415.735,0.),(-353.253,353.553,0.),(-277.485,415.735,5.),(-353.253,353.553,5.),(-415.435,277.785,0.),(-415.435,277.785,5.),(-353.253,353.553,0.),(-415.435,277.785,5.),(-461.64,191.342,0.),(-461.64,191.342,5.),(-415.435,277.785,0.),(-191.042,461.94,5.),(-97.245,490.393,0.),(-191.042,461.94,0.),(-97.245,490.393,5.),(-277.485,415.735,5.),(-191.042,461.94,0.),(-277.485,415.735,0.),(-191.042,461.94,5.),(-166.371,249.441,5.),(-211.832,212.132,0.),(-166.371,249.441,0.),(-211.832,212.132,5.),(683.164,95.825,0.),(685.391,25.261,0.),(683.835,-0.503,0.),(700.79,110.973,0.),(690.059,47.053,0.),(697.84,64.874,0.),(708.734,78.722,0.),(720.806,121.793,0.),(721.786,89.102,0.),(743.212,128.285,0.),(736.044,96.517,0.),(751.506,100.965,0.),(768.006,130.449,0.),(768.174,102.448,0.),(784.606,129.433,0.),(791.292,99.367,0.),(800.367,126.383,0.),(812.02,90.124,0.),(815.29,121.301,0.),(829.207,75.285,0.),(829.374,114.185,0.),(841.698,55.416,0.),(842.228,105.251,0.),(849.307,31.124,0.),(853.456,94.714,0.),(851.843,3.018,0.),(852.052,-89.977,0.),(861.955,-77.91,0.),(863.061,82.574,0.),(870.287,-64.051,0.),(871.041,68.83,0.),(876.889,-48.803,0.),(877.313,53.797,0.),(881.604,-32.57,0.),(881.793,37.789,0.),(884.434,-15.353,0.),(884.481,20.807,0.),(885.377,2.85,0.),(652.354,28.939,0.),(653.821,-31.522,0.),(650.3,0.,0.),(658.516,54.557,0.),(664.385,-61.368,0.),(668.786,76.852,0.),(672.255,-75.107,0.),(681.781,-87.316,0.),(685.328,-21.541,0.),(692.962,-97.994,0.),(689.808,-40.22,0.),(697.275,-56.542,0.),(705.8,-107.143,0.),(707.728,-70.506,0.),(719.926,-114.479,0.),(720.434,-81.693,0.),(734.975,-119.718,0.),(734.66,-89.684,0.),(750.406,-94.478,0.),(750.946,-122.862,0.),(767.671,-96.076,0.),(767.839,-123.91,0.),(785.219,-94.463,0.),(783.579,-122.962,0.),(798.774,-120.117,0.),(801.143,-89.621,0.),(813.425,-115.375,0.),(815.442,-81.552,0.),(827.53,-108.736,0.),(828.117,-70.255,0.),(840.577,-100.253,0.),(838.497,-55.992,0.),(845.911,-39.026,0.),(850.36,-19.356,0.),(653.821,-31.522,5.),(652.354,28.939,5.),(650.3,0.,5.),(658.516,54.557,5.),(664.385,-61.368,5.),(668.786,76.852,5.),(672.255,-75.107,5.),(683.164,95.825,5.),(681.781,-87.316,5.),(683.835,-0.503,5.),(685.328,-21.541,5.),(692.962,-97.994,5.),(689.808,-40.22,5.),(697.275,-56.542,5.),(705.8,-107.143,5.),(707.728,-70.506,5.),(719.926,-114.479,5.),(720.434,-81.693,5.),(734.975,-119.718,5.),(734.66,-89.684,5.),(750.406,-94.478,5.),(750.946,-122.862,5.),(767.671,-96.076,5.),(767.839,-123.91,5.),(785.219,-94.463,5.),(783.579,-122.962,5.),(798.774,-120.117,5.),(801.143,-89.621,5.),(813.425,-115.375,5.),(815.442,-81.552,5.),(827.53,-108.736,5.),(828.117,-70.255,5.),(840.577,-100.253,5.),(838.497,-55.992,5.),(845.911,-39.026,5.),(852.052,-89.977,5.),(850.36,-19.356,5.),(851.843,3.018,5.),(685.391,25.261,5.),(700.79,110.973,5.),(690.059,47.053,5.),(697.84,64.874,5.),(708.734,78.722,5.),(720.806,121.793,5.),(721.786,89.102,5.),(743.212,128.285,5.),(736.044,96.517,5.),(751.506,100.965,5.),(768.006,130.449,5.),(768.174,102.448,5.),(784.606,129.433,5.),(791.292,99.367,5.),(800.367,126.383,5.),(812.02,90.124,5.),(815.29,121.301,5.),(829.207,75.285,5.),(829.374,114.185,5.),(841.698,55.416,5.),(842.228,105.251,5.),(849.307,31.124,5.),(853.456,94.714,5.),(861.955,-77.91,5.),(863.061,82.574,5.),(870.287,-64.051,5.),(871.041,68.83,5.),(876.889,-48.803,5.),(877.313,53.797,5.),(881.604,-32.57,5.),(881.793,37.789,5.),(884.434,-15.353,5.),(884.481,20.807,5.),(885.377,2.85,5.),(0.3,200.,0.),(200.3,0.,0.),(0.3,0.,0.),(200.3,200.,0.),(200.3,0.,100.),(0.3,200.,100.),(0.3,0.,100.),(200.3,200.,100.),(200.3,0.,100.),(0.3,0.,0.),(200.3,0.,0.),(0.3,0.,100.),(0.3,200.,100.),(0.3,0.,0.),(0.3,0.,100.),(0.3,200.,0.),(0.3,200.,100.),(200.3,200.,0.),(0.3,200.,0.),(200.3,200.,100.),(200.3,200.,0.),(200.3,0.,100.),(200.3,0.,0.),(200.3,200.,100.),(-51.846,-658.384,0.),(-61.907,-715.56,0.),(-69.703,-668.716,0.),(-58.532,-701.413,0.),(-48.409,-689.487,0.),(-30.426,-652.096,0.),(-40.659,-684.755,0.),(-30.908,-681.376,0.),(-5.401,-678.672,0.),(-6.742,-650.,0.),(18.975,-652.201,0.),(19.478,-681.648,0.),(41.464,-658.803,0.),(29.323,-685.368,0.),(37.44,-690.577,0.),(43.942,-697.242,0.),(59.929,-669.681,0.),(48.946,-705.332,0.),(54.458,-725.788,0.),(85.645,-723.441,0.),(73.573,-684.708,0.),(82.208,-702.943,0.),(-90.621,-699.736,0.),(-91.103,-733.857,0.),(-93.261,-717.74,0.),(-84.626,-748.34,0.),(-82.698,-682.948,0.),(-73.748,-760.895,0.),(-58.385,-771.227,0.),(-59.517,-727.632,0.),(-52.349,-737.357,0.),(-39.732,-778.668,0.),(-35.393,-746.014,0.),(-10.934,-786.569,0.),(-3.305,-754.879,0.),(32.829,-798.558,0.),(30.125,-763.284,0.),(51.105,-770.557,0.),(46.075,-805.118,0.),(54.961,-813.062,0.),(69.758,-781.77,0.),(59.991,-822.43,0.),(61.668,-833.266,0.),(68.103,-882.981,0.),(81.789,-867.555,0.),(82.795,-795.624,0.),(90.214,-849.635,0.),(90.466,-811.951,0.),(93.023,-830.584,0.),(-71.967,-818.343,0.),(-98.941,-844.396,0.),(-102.651,-821.026,0.),(-89.153,-865.208,0.),(-73.895,-882.29,0.),(-68.341,-835.132,0.),(-53.774,-894.467,0.),(-61.823,-848.608,0.),(-51.658,-859.297,0.),(-28.519,-901.761,0.),(-37.091,-867.723,0.),(-19.276,-873.193,0.),(2.144,-904.192,0.),(0.635,-875.017,0.),(18.157,-873.633,0.),(27.149,-901.782,0.),(33.499,-869.484,0.),(49.512,-894.551,0.),(45.928,-862.923,0.),(54.71,-854.309,0.),(59.929,-844.228,0.),(-98.941,-844.396,5.),(-71.967,-818.343,5.),(-102.651,-821.026,5.),(-89.153,-865.208,5.),(-73.895,-882.29,5.),(-68.341,-835.132,5.),(-53.774,-894.467,5.),(-61.823,-848.608,5.),(-51.658,-859.297,5.),(-28.519,-901.761,5.),(-37.091,-867.723,5.),(-19.276,-873.193,5.),(2.144,-904.192,5.),(0.635,-875.017,5.),(18.157,-873.633,5.),(27.149,-901.782,5.),(33.499,-869.484,5.),(49.512,-894.551,5.),(45.928,-862.923,5.),(54.71,-854.309,5.),(68.103,-882.981,5.),(59.929,-844.228,5.),(61.668,-833.266,5.),(-91.103,-733.857,5.),(-90.621,-699.736,5.),(-93.261,-717.74,5.),(-84.626,-748.34,5.),(-82.698,-682.948,5.),(-73.748,-760.895,5.),(-69.703,-668.716,5.),(-58.385,-771.227,5.),(-61.907,-715.56,5.),(-59.517,-727.632,5.),(-52.349,-737.357,5.),(-39.732,-778.668,5.),(-35.393,-746.014,5.),(-10.934,-786.569,5.),(-3.305,-754.879,5.),(32.829,-798.558,5.),(30.125,-763.284,5.),(51.105,-770.557,5.),(46.075,-805.118,5.),(54.961,-813.062,5.),(69.758,-781.77,5.),(59.991,-822.43,5.),(81.789,-867.555,5.),(82.795,-795.624,5.),(90.214,-849.635,5.),(90.466,-811.951,5.),(93.023,-830.584,5.),(-51.846,-658.384,5.),(-58.532,-701.413,5.),(-48.409,-689.487,5.),(-30.426,-652.096,5.),(-40.659,-684.755,5.),(-30.908,-681.376,5.),(-5.401,-678.672,5.),(-6.742,-650.,5.),(18.975,-652.201,5.),(19.478,-681.648,5.),(41.464,-658.803,5.),(29.323,-685.368,5.),(37.44,-690.577,5.),(43.942,-697.242,5.),(59.929,-669.681,5.),(48.946,-705.332,5.),(54.458,-725.788,5.),(85.645,-723.441,5.),(73.573,-684.708,5.),(82.208,-702.943,5.),(-102.651,-821.026,5.),(-71.967,-818.343,0.),(-102.651,-821.026,0.),(-71.967,-818.343,5.),(-71.967,-818.343,0.),(-68.341,-835.132,5.),(-68.341,-835.132,0.),(-71.967,-818.343,5.),(-68.341,-835.132,0.),(-61.823,-848.608,5.),(-61.823,-848.608,0.),(-68.341,-835.132,5.),(-61.823,-848.608,0.),(-51.658,-859.297,5.),(-51.658,-859.297,0.),(-61.823,-848.608,5.),(-51.658,-859.297,5.),(-37.091,-867.723,0.),(-51.658,-859.297,0.),(-37.091,-867.723,5.),(-37.091,-867.723,5.),(-19.276,-873.193,0.),(-37.091,-867.723,0.),(-19.276,-873.193,5.),(-19.276,-873.193,5.),(0.635,-875.017,0.),(-19.276,-873.193,0.),(0.635,-875.017,5.),(0.635,-875.017,5.),(18.157,-873.633,0.),(0.635,-875.017,0.),(18.157,-873.633,5.),(18.157,-873.633,5.),(33.499,-869.484,0.),(18.157,-873.633,0.),(33.499,-869.484,5.),(33.499,-869.484,5.),(45.928,-862.923,0.),(33.499,-869.484,0.),(45.928,-862.923,5.),(45.928,-862.923,5.),(54.71,-854.309,0.),(45.928,-862.923,0.),(54.71,-854.309,5.),(59.929,-844.228,5.),(54.71,-854.309,0.),(54.71,-854.309,5.),(59.929,-844.228,0.),(61.668,-833.266,5.),(59.929,-844.228,0.),(59.929,-844.228,5.),(61.668,-833.266,0.),(59.991,-822.43,5.),(61.668,-833.266,0.),(61.668,-833.266,5.),(59.991,-822.43,0.),(54.961,-813.062,5.),(59.991,-822.43,0.),(59.991,-822.43,5.),(54.961,-813.062,0.),(54.961,-813.062,5.),(46.075,-805.118,0.),(54.961,-813.062,0.),(46.075,-805.118,5.),(46.075,-805.118,5.),(32.829,-798.558,0.),(46.075,-805.118,0.),(32.829,-798.558,5.),(32.829,-798.558,5.),(-10.934,-786.569,0.),(32.829,-798.558,0.),(-39.732,-778.668,0.),(-39.732,-778.668,5.),(-10.934,-786.569,5.),(-39.732,-778.668,5.),(-58.385,-771.227,0.),(-39.732,-778.668,0.),(-58.385,-771.227,5.),(-58.385,-771.227,5.),(-73.748,-760.895,0.),(-58.385,-771.227,0.),(-73.748,-760.895,5.),(-84.626,-748.34,5.),(-73.748,-760.895,0.),(-73.748,-760.895,5.),(-84.626,-748.34,0.),(-91.103,-733.857,5.),(-84.626,-748.34,0.),(-84.626,-748.34,5.),(-91.103,-733.857,0.),(-93.261,-717.74,5.),(-91.103,-733.857,0.),(-91.103,-733.857,5.),(-93.261,-717.74,0.),(-90.621,-699.736,5.),(-93.261,-717.74,0.),(-93.261,-717.74,5.),(-90.621,-699.736,0.),(-82.698,-682.948,5.),(-90.621,-699.736,0.),(-90.621,-699.736,5.),(-82.698,-682.948,0.),(-69.703,-668.716,5.),(-82.698,-682.948,0.),(-82.698,-682.948,5.),(-69.703,-668.716,0.),(-69.703,-668.716,5.),(-51.846,-658.384,0.),(-69.703,-668.716,0.),(-51.846,-658.384,5.),(-51.846,-658.384,5.),(-30.426,-652.096,0.),(-51.846,-658.384,0.),(-30.426,-652.096,5.),(-30.426,-652.096,5.),(-6.742,-650.,0.),(-30.426,-652.096,0.),(-6.742,-650.,5.),(-6.742,-650.,5.),(18.975,-652.201,0.),(-6.742,-650.,0.),(18.975,-652.201,5.),(18.975,-652.201,5.),(41.464,-658.803,0.),(18.975,-652.201,0.),(41.464,-658.803,5.),(41.464,-658.803,5.),(59.929,-669.681,0.),(41.464,-658.803,0.),(59.929,-669.681,5.),(59.929,-669.681,0.),(73.573,-684.708,5.),(73.573,-684.708,0.),(59.929,-669.681,5.),(73.573,-684.708,0.),(82.208,-702.943,5.),(82.208,-702.943,0.),(73.573,-684.708,5.),(82.208,-702.943,0.),(85.645,-723.441,5.),(85.645,-723.441,0.),(82.208,-702.943,5.),(85.645,-723.441,5.),(54.458,-725.788,0.),(85.645,-723.441,0.),(54.458,-725.788,5.),(48.946,-705.332,5.),(54.458,-725.788,0.),(54.458,-725.788,5.),(48.946,-705.332,0.),(43.942,-697.242,5.),(48.946,-705.332,0.),(48.946,-705.332,5.),(43.942,-697.242,0.),(37.44,-690.577,5.),(43.942,-697.242,0.),(43.942,-697.242,5.),(37.44,-690.577,0.),(37.44,-690.577,5.),(29.323,-685.368,0.),(37.44,-690.577,0.),(29.323,-685.368,5.),(29.323,-685.368,5.),(19.478,-681.648,0.),(29.323,-685.368,0.),(19.478,-681.648,5.),(19.478,-681.648,5.),(-5.401,-678.672,0.),(19.478,-681.648,0.),(-5.401,-678.672,5.),(-5.401,-678.672,5.),(-30.908,-681.376,0.),(-5.401,-678.672,0.),(-30.908,-681.376,5.),(-30.908,-681.376,5.),(-40.659,-684.755,0.),(-30.908,-681.376,0.),(-40.659,-684.755,5.),(-40.659,-684.755,5.),(-48.409,-689.487,0.),(-40.659,-684.755,0.),(-48.409,-689.487,5.),(-48.409,-689.487,0.),(-58.532,-701.413,5.),(-58.532,-701.413,0.),(-48.409,-689.487,5.),(-58.532,-701.413,0.),(-61.907,-715.56,5.),(-61.907,-715.56,0.),(-58.532,-701.413,5.),(-61.907,-715.56,0.),(-59.517,-727.632,5.),(-59.517,-727.632,0.),(-61.907,-715.56,5.),(-59.517,-727.632,0.),(-52.349,-737.357,5.),(-52.349,-737.357,0.),(-59.517,-727.632,5.),(-52.349,-737.357,5.),(-35.393,-746.014,0.),(-52.349,-737.357,0.),(-35.393,-746.014,5.),(-35.393,-746.014,5.),(-3.305,-754.879,0.),(-35.393,-746.014,0.),(-3.305,-754.879,5.),(-3.305,-754.879,5.),(30.125,-763.284,0.),(-3.305,-754.879,0.),(30.125,-763.284,5.),(30.125,-763.284,5.),(51.105,-770.557,0.),(30.125,-763.284,0.),(51.105,-770.557,5.),(51.105,-770.557,5.),(69.758,-781.77,0.),(51.105,-770.557,0.),(69.758,-781.77,5.),(69.758,-781.77,0.),(82.795,-795.624,5.),(82.795,-795.624,0.),(69.758,-781.77,5.),(82.795,-795.624,0.),(90.466,-811.951,5.),(90.466,-811.951,0.),(82.795,-795.624,5.),(90.466,-811.951,0.),(93.023,-830.584,5.),(93.023,-830.584,0.),(90.466,-811.951,5.),(93.023,-830.584,0.),(90.214,-849.635,5.),(90.214,-849.635,0.),(93.023,-830.584,5.),(90.214,-849.635,0.),(81.789,-867.555,5.),(81.789,-867.555,0.),(90.214,-849.635,5.),(81.789,-867.555,0.),(68.103,-882.981,5.),(68.103,-882.981,0.),(81.789,-867.555,5.),(68.103,-882.981,5.),(49.512,-894.551,0.),(68.103,-882.981,0.),(49.512,-894.551,5.),(49.512,-894.551,5.),(27.149,-901.782,0.),(49.512,-894.551,0.),(27.149,-901.782,5.),(27.149,-901.782,5.),(2.144,-904.192,0.),(27.149,-901.782,0.),(2.144,-904.192,5.),(2.144,-904.192,5.),(-28.519,-901.761,0.),(2.144,-904.192,0.),(-28.519,-901.761,5.),(-28.519,-901.761,5.),(-53.774,-894.467,0.),(-28.519,-901.761,0.),(-53.774,-894.467,5.),(-53.774,-894.467,5.),(-73.895,-882.29,0.),(-53.774,-894.467,0.),(-73.895,-882.29,5.),(-89.153,-865.208,5.),(-73.895,-882.29,0.),(-73.895,-882.29,5.),(-89.153,-865.208,0.),(-98.941,-844.396,5.),(-89.153,-865.208,0.),(-89.153,-865.208,5.),(-98.941,-844.396,0.),(-102.651,-821.026,5.),(-98.941,-844.396,0.),(-98.941,-844.396,5.),(-102.651,-821.026,0.))); +#335=IFCSTYLEDITEM(#333,(#338),$); +#336=IFCSURFACESTYLERENDERING(#337,0.,$,$,$,$,$,$,.NOTDEFINED.); +#337=IFCCOLOURRGB($,0.,0.,0.); +#338=IFCSURFACESTYLE('virtual_black',.BOTH.,(#336)); +#339=IFCPRODUCTDEFINITIONSHAPE($,$,(#332)); +ENDSEC; +END-ISO-10303-21; diff --git a/test/fixtures/ifc/LICENSE.buildingSMART-CC-BY-4.0.txt b/test/fixtures/ifc/LICENSE.buildingSMART-CC-BY-4.0.txt new file mode 100644 index 000000000..0ac4732f2 --- /dev/null +++ b/test/fixtures/ifc/LICENSE.buildingSMART-CC-BY-4.0.txt @@ -0,0 +1,6 @@ +(C) buildingSMART International Ltd. + +This work is licensed under the Creative Commons Attribution 4.0 International License. +More info and a link to the full license text is available on http://creativecommons.org/licenses/by/4.0/ + +Read the full license on https://creativecommons.org/licenses/by/4.0/legalcode.txt diff --git a/test/fixtures/ifc/README.md b/test/fixtures/ifc/README.md new file mode 100644 index 000000000..b24372052 --- /dev/null +++ b/test/fixtures/ifc/README.md @@ -0,0 +1,20 @@ +# IFC regression fixtures + +These IFC files are copied unchanged from the buildingSMART public sample/certification dataset and are committed so File Viewer can validate IFC parsing without relying on a network download during browser smoke tests. + +License: **Creative Commons Attribution 4.0 International (CC BY 4.0)**. The upstream license text is preserved as `LICENSE.buildingSMART-CC-BY-4.0.txt`. + +Attribution: © buildingSMART International Ltd. + +Upstream project: `buildingSMART/Sample-Test-Files` (historically/compatibly reachable as `buildingSMART/Certification-datasets`). + +Included files: + +- `Building-Architecture.ifc` — IFC4 Simple-Scene architecture sample. +- `Building-Structural.ifc` — IFC4 Simple-Scene structural sample. + +Source path: `IFC 4.0.2.1 (IFC 4 ADD2 TC1)/Simple-Scene/`. + +`SHA256SUMS` records the checksums of the exact committed `.ifc` files so future fixture updates are explicit and reviewable. + +The fixtures are test/demo evidence only; File Viewer does not claim authorship or relicense the source data. diff --git a/test/fixtures/ifc/SHA256SUMS b/test/fixtures/ifc/SHA256SUMS new file mode 100644 index 000000000..aca451105 --- /dev/null +++ b/test/fixtures/ifc/SHA256SUMS @@ -0,0 +1,2 @@ +8790a1e193e82b8e7e7f337ec2633cd40f2120590317a1443503a25b079e2e80 Building-Architecture.ifc +903b5a005901397aa2b235daf6a60f46c099eae286cb01c815abf0a341707432 Building-Structural.ifc diff --git a/test/ifc-optional-capability.spec.ts b/test/ifc-optional-capability.spec.ts new file mode 100644 index 000000000..d1f2c6480 --- /dev/null +++ b/test/ifc-optional-capability.spec.ts @@ -0,0 +1,128 @@ +import { readFile } from 'node:fs/promises' +import { resolve } from 'node:path' +import { afterEach, describe, expect, it, vi } from 'vitest' +import { renderFileViewerModel } from '../packages/renderers/3d/src/index' +import { + isFileViewerIfcCapabilityEnabled, + registerFileViewerIfcCapability, +} from '../packages/renderers/3d/src/optionalCapabilities' + +const root = process.cwd() +const json = async (path: string) => JSON.parse(await readFile(resolve(root, path), 'utf8')) + +afterEach(() => { + registerFileViewerIfcCapability(false) +}) + +describe('optional IFC capability boundary', () => { + it('keeps IFC engines outside the base 3D and preset dependency closure', async () => { + const renderer = await json('packages/renderers/3d/package.json') + const capability = await json('packages/capabilities/ifc/package.json') + const assetsModel = await json('packages/tools/assets-model/package.json') + const assetsIfc = await json('packages/tools/assets-ifc/package.json') + const engineering = await json('packages/presets/engineering/package.json') + const all = await json('packages/presets/all/package.json') + + for (const dependency of ['web-ifc', '@thatopen/components', '@thatopen/fragments']) { + expect(renderer.dependencies?.[dependency]).toBeUndefined() + expect(assetsModel.devDependencies?.[dependency]).toBeUndefined() + } + expect(capability.dependencies?.['web-ifc']).toBe('0.0.77') + expect(capability.dependencies?.['@thatopen/components']).toBe('3.4.8') + expect(capability.dependencies?.['@thatopen/fragments']).toBe('3.4.7') + expect(assetsIfc.devDependencies?.['web-ifc']).toBe('0.0.77') + expect(assetsIfc.devDependencies?.['@thatopen/fragments']).toBe('3.4.7') + + for (const preset of [engineering, all]) { + expect(preset.dependencies?.['@file-viewer/capability-ifc']).toBeUndefined() + expect(preset.dependencies?.['@file-viewer/assets-ifc']).toBeUndefined() + expect(preset.dependencies?.['@thatopen/components']).toBeUndefined() + expect(preset.dependencies?.['@thatopen/fragments']).toBeUndefined() + } + }) + + it('declares IFC as a heavy explicit enhancement with third-party notices', async () => { + const manifest = await json('packages/capabilities/ifc/file-viewer.capability.json') + expect(manifest).toMatchObject({ + id: 'ifc', + packageName: '@file-viewer/capability-ifc', + enhancesPackage: '@file-viewer/renderer-3d', + activation: { kind: 'side-effect-import', import: '@file-viewer/capability-ifc', export: 'enableFileViewerIfc' }, + rendererIds: ['model'], + formats: ['ifc'], + weight: 'heavy', + profiles: [], + }) + expect(manifest.assets.packageName).toBe('@file-viewer/assets-ifc') + expect(manifest.license.notices).toEqual(expect.arrayContaining([ + expect.objectContaining({ packageName: 'web-ifc', spdx: 'MPL-2.0' }), + expect.objectContaining({ packageName: '@thatopen/components', spdx: 'MIT' }), + expect.objectContaining({ packageName: '@thatopen/fragments', spdx: 'MIT' }), + ])) + }) + + it('requires explicit runtime activation and registers one lazy That Open handler', async () => { + registerFileViewerIfcCapability(false) + expect(isFileViewerIfcCapabilityEnabled()).toBe(false) + registerFileViewerIfcCapability(true) + expect(isFileViewerIfcCapabilityEnabled()).toBe(true) + registerFileViewerIfcCapability(false) + + const capabilitySource = await readFile(resolve(root, 'packages/capabilities/ifc/src/index.ts'), 'utf8') + const rendererSource = await readFile(resolve(root, 'packages/renderers/3d/src/index.ts'), 'utf8') + expect(capabilitySource).toContain("import('./thatOpenBackend.js')") + expect(rendererSource).toContain('IFC support is opt-in') + expect(rendererSource).not.toContain("import('./ifc.js')") + expect(rendererSource).not.toContain('requestedBackend') + }) + + it('routes both small and large IFC files through the same capability handler', async () => { + const specialist = vi.fn(async () => ({ $el: {} as HTMLDivElement, unmount: () => undefined })) + registerFileViewerIfcCapability(specialist) + + await renderFileViewerModel(new ArrayBuffer(2), {} as HTMLDivElement, 'ifc', { + options: { ifc: { performance: { largeModelThresholdBytes: 1024 } } }, + } as never) + await renderFileViewerModel(new ArrayBuffer(2), {} as HTMLDivElement, 'ifc', { + options: { ifc: { performance: { largeModelThresholdBytes: 1 } } }, + } as never) + + expect(specialist).toHaveBeenCalledTimes(2) + }) + + it('enforces an application hard source-size limit before invoking the IFC capability', async () => { + const specialist = vi.fn(async () => ({ $el: {} as HTMLDivElement, unmount: () => undefined })) + registerFileViewerIfcCapability(specialist) + + await expect(renderFileViewerModel(new ArrayBuffer(4), {} as HTMLDivElement, 'ifc', { + options: { ifc: { performance: { maxSourceBytes: 3 } } }, + } as never)).rejects.toThrow('maxSourceBytes') + expect(specialist).not.toHaveBeenCalled() + }) + + it('keeps the That Open compatibility bridge opaque and exposes the underlying web-ifc instance', async () => { + const typesSource = await readFile(resolve(root, 'packages/renderers/3d/src/ifcTypes.ts'), 'utf8') + const backendSource = await readFile(resolve(root, 'packages/capabilities/ifc/src/thatOpenBackend.ts'), 'utf8') + expect(typesSource).toContain('export interface FileViewerIfcOpaqueConfig') + expect(typesSource).toContain('[key: string]: unknown') + expect(typesSource).not.toContain('FileViewerIfcBackend') + expect(backendSource).toContain('await loader.setup(options.thatOpen.components)') + expect(backendSource).toContain('Object.assign(fragments.core.settings, options.thatOpen.fragments)') + expect(backendSource).toContain('processData: options.thatOpen.importer') + expect(backendSource).toContain('webIfc: loader?.webIfc') + }) + + it('ships attributed open-license IFC fixtures', async () => { + const license = await readFile(resolve(root, 'test/fixtures/ifc/LICENSE.buildingSMART-CC-BY-4.0.txt'), 'utf8') + const readme = await readFile(resolve(root, 'test/fixtures/ifc/README.md'), 'utf8') + expect(license).toContain('Creative Commons Attribution 4.0 International License') + expect(readme).toContain('buildingSMART') + expect(readme).toContain('CC BY 4.0') + + for (const filename of ['Building-Architecture.ifc', 'Building-Structural.ifc']) { + const fixture = await readFile(resolve(root, `test/fixtures/ifc/${filename}`), 'utf8') + expect(fixture.startsWith('ISO-10303-21;')).toBe(true) + expect(fixture).toContain("FILE_SCHEMA(('IFC4'))") + } + }) +})