Skip to content

Commit 1e90907

Browse files
committed
feat: add model settings
1 parent f532a4f commit 1e90907

File tree

2 files changed

+37
-40
lines changed

2 files changed

+37
-40
lines changed

packages/clay/src/core/Model/index.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ export class Model {
1111
absolute: false,
1212
};
1313

14+
settings: WEBIFC.LoaderSettings = {
15+
TAPE_SIZE: 5000000, // 5MB
16+
};
17+
1418
/**
1519
* Opaque material of the model. All models have just 1 shared opaque and transparent material.
1620
*/
@@ -70,9 +74,7 @@ export class Model {
7074
await this._ifcAPI.Init();
7175
this._modelID = this._ifcAPI.CreateModel(
7276
{ schema: WEBIFC.Schemas.IFC4X3 },
73-
{
74-
TAPE_SIZE: 5000000, // 5MB
75-
},
77+
this.settings,
7678
);
7779
this._context = new WEBIFC.IFC4X3.IfcRepresentationContext(
7880
new WEBIFC.IFC4X3.IfcLabel("Default"),
@@ -139,7 +141,6 @@ export class Model {
139141
* Updates a model. Necessary for applying new boolean operations.
140142
*/
141143
async update() {
142-
console.log("hey")
143144
if (this._modelID === undefined) {
144145
throw new Error("Malformed model!");
145146
}
@@ -151,6 +152,6 @@ export class Model {
151152
this._ifcAPI = new WEBIFC.IfcAPI();
152153

153154
await this.init();
154-
this._modelID = this._ifcAPI.OpenModel(model);
155+
this._modelID = this._ifcAPI.OpenModel(model, this.settings);
155156
}
156157
}

packages/clay/src/elements/Walls/SimpleWall/example.ts

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import * as BUI from "@thatopen/ui";
33
import Stats from "stats.js";
44
import * as OBC from "@thatopen/components";
55

6+
import * as WEBIFC from "web-ifc";
67
import * as CLAY from "../../..";
78

89
const container = document.getElementById("container")!;
@@ -33,7 +34,7 @@ model.wasm = { path: "https://unpkg.com/[email protected]/", absolute: true };
3334
await model.init();
3435

3536
const simpleWallType = new CLAY.SimpleWallType(model);
36-
//
37+
3738
const wall1 = simpleWallType.addInstance();
3839
world.scene.three.add(...wall1.meshes);
3940
wall1.startPoint = new THREE.Vector2(1, 1);
@@ -96,48 +97,48 @@ const panel = BUI.Component.create<BUI.PanelSection>(() => {
9697
return BUI.html`
9798
<bim-panel label="Simple Walls Tutorial" class="options-menu">
9899
<bim-panel-section collapsed label="Controls">
99-
100+
100101
<div style="display: flex; gap: 12px">
101-
102+
102103
<bim-number-input slider step="0.1" label="Start X" vertical="true" value="${wall1.startPoint.x}" @change="${(
103104
event: any,
104105
) => {
105106
wall1.startPoint.x = event.target.value;
106107
wall1.update(true);
107108
simpleWallType.updateCorners();
108109
}}"></bim-number-input>
109-
110+
110111
<bim-number-input slider step="0.1" label="Start Y" vertical="true" value="${wall1.startPoint.y}" @change="${(
111112
event: any,
112113
) => {
113114
wall1.startPoint.y = event.target.value;
114115
wall1.update(true);
115116
simpleWallType.updateCorners();
116117
}}"></bim-number-input>
117-
118+
118119
</div>
119-
120+
120121
<div style="display: flex; gap: 12px">
121-
122+
122123
<bim-number-input slider step="0.1" label="End X" vertical="true" value="${wall1.endPoint.x}" @change="${(
123124
event: any,
124125
) => {
125126
wall1.endPoint.x = event.target.value;
126127
wall1.update(true);
127128
simpleWallType.updateCorners();
128129
}}"></bim-number-input>
129-
130+
130131
<bim-number-input slider step="0.1" label="End Y" vertical="true" value="${wall1.endPoint.y}" @change="${(
131132
event: any,
132133
) => {
133134
wall1.endPoint.y = event.target.value;
134135
wall1.update(true);
135136
simpleWallType.updateCorners();
136137
}}"></bim-number-input>
137-
138-
138+
139+
139140
</div>
140-
141+
141142
<bim-number-input slider step="0.05" label="Elevation" value="${wall1.elevation}" @change="${(
142143
event: any,
143144
) => {
@@ -147,7 +148,7 @@ const panel = BUI.Component.create<BUI.PanelSection>(() => {
147148
wall1.update(true);
148149
simpleWallType.updateCorners();
149150
}}"></bim-number-input>
150-
151+
151152
<bim-number-input slider step="0.01" label="Offset" value="${wall1.offset}" @change="${(
152153
event: any,
153154
) => {
@@ -157,23 +158,23 @@ const panel = BUI.Component.create<BUI.PanelSection>(() => {
157158
wall2.update(true);
158159
simpleWallType.updateCorners();
159160
}}"></bim-number-input>
160-
161+
161162
<bim-number-input slider step="0.05" label="Thickness" value="${simpleWallType.width}" @change="${(
162163
event: any,
163164
) => {
164165
simpleWallType.width = event.target.value;
165166
simpleWallType.update(true);
166167
simpleWallType.updateCorners();
167-
}}"></bim-number-input>
168-
168+
}}"></bim-number-input>
169+
169170
<bim-number-input slider step="0.05" label="Height" value="${wall1.height}" @change="${(
170171
event: any,
171172
) => {
172173
wall1.height = event.target.value;
173174
wall1.update(true);
174175
simpleWallType.updateCorners();
175176
}}"></bim-number-input>
176-
177+
177178
</bim-panel-section>
178179
</bim-panel>
179180
`;
@@ -199,26 +200,21 @@ document.body.append(button);
199200

200201
// window.addEventListener("keydown", async (e) => {
201202
// if (e.code === "KeyP") {
202-
// const directoryHandle = await window.showDirectoryPicker();
203-
// async function writeIFC() {
204-
// const buffer = model.ifcAPI.SaveModel(model.modelID);
205-
//
206-
// console.log(buffer);
207-
//
208-
// const fileName = "example.ifc";
209-
// const fileHandle = await directoryHandle.getFileHandle("example.ifc", {
210-
// create: true,
211-
// });
212-
//
213-
// // Create a FileSystemWritableFileStream to write to.
214-
// const writable = await fileHandle.createWritable();
215-
// await writable.truncate(0);
216-
// // Write the contents of the file to the stream.
217-
// await writable.write(buffer);
218-
// // Close the file and write the contents to disk.
219-
// await writable.close();
203+
// simpleWallType.attributes = {};
204+
// console.log("hey");
205+
// if (model._modelID === undefined) {
206+
// throw new Error("Malformed model!");
220207
// }
208+
// // TODO: Fix memory leak
209+
// const asdf = model._ifcAPI.SaveModel(model._modelID);
210+
//
211+
// model._ifcAPI.Dispose();
212+
// model._ifcAPI = null as any;
213+
// model._ifcAPI = new WEBIFC.IfcAPI();
221214
//
222-
// setInterval(() => writeIFC(), 1000);
215+
// await model.init();
216+
// model._modelID = model._ifcAPI.OpenModel(asdf, {
217+
// TAPE_SIZE: 5000000, // 5MB
218+
// });
223219
// }
224220
// });

0 commit comments

Comments
 (0)