@ifc-lite/bcf 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +373 -0
- package/dist/guid.d.ts +41 -0
- package/dist/guid.d.ts.map +1 -0
- package/dist/guid.js +184 -0
- package/dist/guid.js.map +1 -0
- package/dist/index.d.ts +76 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +112 -0
- package/dist/index.js.map +1 -0
- package/dist/reader.d.ts +9 -0
- package/dist/reader.d.ts.map +1 -0
- package/dist/reader.js +632 -0
- package/dist/reader.js.map +1 -0
- package/dist/types.d.ts +229 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/viewpoint.d.ts +138 -0
- package/dist/viewpoint.d.ts.map +1 -0
- package/dist/viewpoint.js +386 -0
- package/dist/viewpoint.js.map +1 -0
- package/dist/writer.d.ts +9 -0
- package/dist/writer.d.ts.map +1 -0
- package/dist/writer.js +445 -0
- package/dist/writer.js.map +1 -0
- package/package.json +51 -0
package/dist/writer.js
ADDED
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* BCF file writer
|
|
6
|
+
*
|
|
7
|
+
* Creates .bcfzip files from BCFProject structure
|
|
8
|
+
*/
|
|
9
|
+
import JSZip from 'jszip';
|
|
10
|
+
import { generateUuid } from './guid.js';
|
|
11
|
+
/**
|
|
12
|
+
* Write a BCFProject to a .bcfzip file
|
|
13
|
+
*
|
|
14
|
+
* @param project - BCF project to write
|
|
15
|
+
* @returns Blob containing the .bcfzip file
|
|
16
|
+
*/
|
|
17
|
+
export async function writeBCF(project) {
|
|
18
|
+
const zip = new JSZip();
|
|
19
|
+
// Write version file
|
|
20
|
+
writeVersionFile(zip, project.version);
|
|
21
|
+
// Write project file (optional)
|
|
22
|
+
if (project.projectId || project.name) {
|
|
23
|
+
writeProjectFile(zip, project);
|
|
24
|
+
}
|
|
25
|
+
// Write topics
|
|
26
|
+
for (const [guid, topic] of project.topics) {
|
|
27
|
+
await writeTopicFolder(zip, topic);
|
|
28
|
+
}
|
|
29
|
+
// Generate zip file
|
|
30
|
+
return zip.generateAsync({
|
|
31
|
+
type: 'blob',
|
|
32
|
+
compression: 'DEFLATE',
|
|
33
|
+
compressionOptions: { level: 6 },
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Write bcf.version file
|
|
38
|
+
* Uses buildingSMART standard format with both xsi and xsd namespaces
|
|
39
|
+
*/
|
|
40
|
+
function writeVersionFile(zip, version) {
|
|
41
|
+
const content = `<?xml version="1.0" encoding="UTF-8"?>
|
|
42
|
+
<Version xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" VersionId="${version}">
|
|
43
|
+
<DetailedVersion>${version}</DetailedVersion>
|
|
44
|
+
</Version>`;
|
|
45
|
+
zip.file('bcf.version', content);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Write project.bcfp file
|
|
49
|
+
* Uses buildingSMART standard format
|
|
50
|
+
*/
|
|
51
|
+
function writeProjectFile(zip, project) {
|
|
52
|
+
const projectId = project.projectId || generateUuid();
|
|
53
|
+
const nameElement = project.name ? `\n <Name>${escapeXml(project.name)}</Name>` : '';
|
|
54
|
+
const content = `<?xml version="1.0" encoding="UTF-8"?>
|
|
55
|
+
<ProjectExtension xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
|
56
|
+
<Project ProjectId="${projectId}">${nameElement}
|
|
57
|
+
</Project>
|
|
58
|
+
</ProjectExtension>`;
|
|
59
|
+
zip.file('project.bcfp', content);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Write a topic folder with all its contents
|
|
63
|
+
*/
|
|
64
|
+
async function writeTopicFolder(zip, topic) {
|
|
65
|
+
const folder = zip.folder(topic.guid);
|
|
66
|
+
if (!folder)
|
|
67
|
+
return;
|
|
68
|
+
// Write markup.bcf
|
|
69
|
+
writeMarkupFile(folder, topic);
|
|
70
|
+
// Write viewpoints
|
|
71
|
+
for (let i = 0; i < topic.viewpoints.length; i++) {
|
|
72
|
+
const viewpoint = topic.viewpoints[i];
|
|
73
|
+
const isDefault = i === 0;
|
|
74
|
+
await writeViewpointFiles(folder, viewpoint, isDefault);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Write markup.bcf file
|
|
79
|
+
* Uses buildingSMART standard format
|
|
80
|
+
*/
|
|
81
|
+
function writeMarkupFile(folder, topic) {
|
|
82
|
+
let content = `<?xml version="1.0" encoding="UTF-8"?>
|
|
83
|
+
<Markup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
|
84
|
+
<Topic Guid="${topic.guid}"${topic.topicType ? ` TopicType="${escapeXml(topic.topicType)}"` : ''}${topic.topicStatus ? ` TopicStatus="${escapeXml(topic.topicStatus)}"` : ''}>
|
|
85
|
+
<Title>${escapeXml(topic.title)}</Title>`;
|
|
86
|
+
if (topic.description) {
|
|
87
|
+
content += `\n <Description>${escapeXml(topic.description)}</Description>`;
|
|
88
|
+
}
|
|
89
|
+
if (topic.priority) {
|
|
90
|
+
content += `\n <Priority>${escapeXml(topic.priority)}</Priority>`;
|
|
91
|
+
}
|
|
92
|
+
if (topic.index !== undefined) {
|
|
93
|
+
content += `\n <Index>${topic.index}</Index>`;
|
|
94
|
+
}
|
|
95
|
+
content += `\n <CreationDate>${topic.creationDate}</CreationDate>`;
|
|
96
|
+
content += `\n <CreationAuthor>${escapeXml(topic.creationAuthor)}</CreationAuthor>`;
|
|
97
|
+
if (topic.modifiedDate) {
|
|
98
|
+
content += `\n <ModifiedDate>${topic.modifiedDate}</ModifiedDate>`;
|
|
99
|
+
// BCF spec requires ModifiedAuthor when ModifiedDate is present
|
|
100
|
+
const modifiedAuthor = topic.modifiedAuthor || topic.creationAuthor;
|
|
101
|
+
content += `\n <ModifiedAuthor>${escapeXml(modifiedAuthor)}</ModifiedAuthor>`;
|
|
102
|
+
}
|
|
103
|
+
if (topic.dueDate) {
|
|
104
|
+
content += `\n <DueDate>${topic.dueDate}</DueDate>`;
|
|
105
|
+
}
|
|
106
|
+
if (topic.assignedTo) {
|
|
107
|
+
content += `\n <AssignedTo>${escapeXml(topic.assignedTo)}</AssignedTo>`;
|
|
108
|
+
}
|
|
109
|
+
if (topic.stage) {
|
|
110
|
+
content += `\n <Stage>${escapeXml(topic.stage)}</Stage>`;
|
|
111
|
+
}
|
|
112
|
+
if (topic.labels && topic.labels.length > 0) {
|
|
113
|
+
for (const label of topic.labels) {
|
|
114
|
+
content += `\n <Labels>${escapeXml(label)}</Labels>`;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (topic.relatedTopics && topic.relatedTopics.length > 0) {
|
|
118
|
+
for (const relatedGuid of topic.relatedTopics) {
|
|
119
|
+
content += `\n <RelatedTopic Guid="${relatedGuid}"/>`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
content += `\n </Topic>`;
|
|
123
|
+
// Write viewpoint references
|
|
124
|
+
for (let i = 0; i < topic.viewpoints.length; i++) {
|
|
125
|
+
const viewpoint = topic.viewpoints[i];
|
|
126
|
+
// Use standard buildingSMART naming convention: Viewpoint_<guid>.bcfv
|
|
127
|
+
const filename = `Viewpoint_${viewpoint.guid}.bcfv`;
|
|
128
|
+
const snapshotName = `Snapshot_${viewpoint.guid}.png`;
|
|
129
|
+
content += `\n <Viewpoints Guid="${viewpoint.guid}">`;
|
|
130
|
+
content += `\n <Viewpoint>${filename}</Viewpoint>`;
|
|
131
|
+
if (viewpoint.snapshot || viewpoint.snapshotData) {
|
|
132
|
+
content += `\n <Snapshot>${snapshotName}</Snapshot>`;
|
|
133
|
+
}
|
|
134
|
+
content += `\n </Viewpoints>`;
|
|
135
|
+
}
|
|
136
|
+
// Write comments
|
|
137
|
+
for (const comment of topic.comments) {
|
|
138
|
+
content += `\n <Comment Guid="${comment.guid}">`;
|
|
139
|
+
content += `\n <Date>${comment.date}</Date>`;
|
|
140
|
+
content += `\n <Author>${escapeXml(comment.author)}</Author>`;
|
|
141
|
+
content += `\n <Comment>${escapeXml(comment.comment)}</Comment>`;
|
|
142
|
+
if (comment.viewpointGuid) {
|
|
143
|
+
content += `\n <Viewpoint Guid="${comment.viewpointGuid}"/>`;
|
|
144
|
+
}
|
|
145
|
+
if (comment.modifiedDate) {
|
|
146
|
+
content += `\n <ModifiedDate>${comment.modifiedDate}</ModifiedDate>`;
|
|
147
|
+
}
|
|
148
|
+
if (comment.modifiedAuthor) {
|
|
149
|
+
content += `\n <ModifiedAuthor>${escapeXml(comment.modifiedAuthor)}</ModifiedAuthor>`;
|
|
150
|
+
}
|
|
151
|
+
content += `\n </Comment>`;
|
|
152
|
+
}
|
|
153
|
+
content += `\n</Markup>`;
|
|
154
|
+
folder.file('markup.bcf', content);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Write viewpoint files (bcfv and snapshot)
|
|
158
|
+
*/
|
|
159
|
+
async function writeViewpointFiles(folder, viewpoint, _isDefault) {
|
|
160
|
+
// Use standard buildingSMART naming convention: Viewpoint_<guid>.bcfv
|
|
161
|
+
const filename = `Viewpoint_${viewpoint.guid}.bcfv`;
|
|
162
|
+
const snapshotName = `Snapshot_${viewpoint.guid}.png`;
|
|
163
|
+
// Write viewpoint XML - use buildingSMART standard format
|
|
164
|
+
let content = `<?xml version="1.0" encoding="UTF-8"?>
|
|
165
|
+
<VisualizationInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="${viewpoint.guid}">`;
|
|
166
|
+
// Write components
|
|
167
|
+
if (viewpoint.components) {
|
|
168
|
+
content += writeComponents(viewpoint.components);
|
|
169
|
+
}
|
|
170
|
+
// Write perspective camera
|
|
171
|
+
if (viewpoint.perspectiveCamera) {
|
|
172
|
+
content += writePerspectiveCamera(viewpoint.perspectiveCamera);
|
|
173
|
+
}
|
|
174
|
+
// Write orthogonal camera
|
|
175
|
+
if (viewpoint.orthogonalCamera) {
|
|
176
|
+
content += writeOrthogonalCamera(viewpoint.orthogonalCamera);
|
|
177
|
+
}
|
|
178
|
+
// Write lines
|
|
179
|
+
if (viewpoint.lines && viewpoint.lines.length > 0) {
|
|
180
|
+
content += `\n <Lines>`;
|
|
181
|
+
for (const line of viewpoint.lines) {
|
|
182
|
+
content += writeLine(line);
|
|
183
|
+
}
|
|
184
|
+
content += `\n </Lines>`;
|
|
185
|
+
}
|
|
186
|
+
// Write clipping planes
|
|
187
|
+
if (viewpoint.clippingPlanes && viewpoint.clippingPlanes.length > 0) {
|
|
188
|
+
content += `\n <ClippingPlanes>`;
|
|
189
|
+
for (const plane of viewpoint.clippingPlanes) {
|
|
190
|
+
content += writeClippingPlane(plane);
|
|
191
|
+
}
|
|
192
|
+
content += `\n </ClippingPlanes>`;
|
|
193
|
+
}
|
|
194
|
+
// Write bitmaps
|
|
195
|
+
if (viewpoint.bitmaps && viewpoint.bitmaps.length > 0) {
|
|
196
|
+
content += `\n <Bitmaps>`;
|
|
197
|
+
for (const bitmap of viewpoint.bitmaps) {
|
|
198
|
+
content += writeBitmap(bitmap);
|
|
199
|
+
}
|
|
200
|
+
content += `\n </Bitmaps>`;
|
|
201
|
+
}
|
|
202
|
+
content += `\n</VisualizationInfo>`;
|
|
203
|
+
folder.file(filename, content);
|
|
204
|
+
// Write snapshot
|
|
205
|
+
if (viewpoint.snapshotData) {
|
|
206
|
+
folder.file(snapshotName, viewpoint.snapshotData);
|
|
207
|
+
}
|
|
208
|
+
else if (viewpoint.snapshot && viewpoint.snapshot.startsWith('data:')) {
|
|
209
|
+
// Convert data URL to binary
|
|
210
|
+
const base64Data = viewpoint.snapshot.split(',')[1];
|
|
211
|
+
const binaryString = atob(base64Data);
|
|
212
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
213
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
214
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
215
|
+
}
|
|
216
|
+
folder.file(snapshotName, bytes);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Write components XML
|
|
221
|
+
*
|
|
222
|
+
* BCF 2.1 schema order (MUST follow this order):
|
|
223
|
+
* 1. ViewSetupHints (optional)
|
|
224
|
+
* 2. Selection (optional)
|
|
225
|
+
* 3. Visibility (REQUIRED)
|
|
226
|
+
* 4. Coloring (optional)
|
|
227
|
+
*/
|
|
228
|
+
function writeComponents(components) {
|
|
229
|
+
let content = `\n <Components>`;
|
|
230
|
+
// 1. Write ViewSetupHints (if present in visibility)
|
|
231
|
+
if (components.visibility?.viewSetupHints) {
|
|
232
|
+
const hints = components.visibility.viewSetupHints;
|
|
233
|
+
content += `\n <ViewSetupHints`;
|
|
234
|
+
if (hints.spacesVisible !== undefined) {
|
|
235
|
+
content += ` SpacesVisible="${hints.spacesVisible}"`;
|
|
236
|
+
}
|
|
237
|
+
if (hints.spaceBoundariesVisible !== undefined) {
|
|
238
|
+
content += ` SpaceBoundariesVisible="${hints.spaceBoundariesVisible}"`;
|
|
239
|
+
}
|
|
240
|
+
if (hints.openingsVisible !== undefined) {
|
|
241
|
+
content += ` OpeningsVisible="${hints.openingsVisible}"`;
|
|
242
|
+
}
|
|
243
|
+
content += `/>`;
|
|
244
|
+
}
|
|
245
|
+
// 2. Write selection (before visibility per schema)
|
|
246
|
+
if (components.selection && components.selection.length > 0) {
|
|
247
|
+
content += `\n <Selection>`;
|
|
248
|
+
for (const component of components.selection) {
|
|
249
|
+
content += writeComponent(component);
|
|
250
|
+
}
|
|
251
|
+
content += `\n </Selection>`;
|
|
252
|
+
}
|
|
253
|
+
// 3. Write visibility (REQUIRED by schema)
|
|
254
|
+
content += writeVisibility(components.visibility);
|
|
255
|
+
// 4. Write coloring
|
|
256
|
+
if (components.coloring && components.coloring.length > 0) {
|
|
257
|
+
content += `\n <Coloring>`;
|
|
258
|
+
for (const coloring of components.coloring) {
|
|
259
|
+
content += writeColoringEntry(coloring);
|
|
260
|
+
}
|
|
261
|
+
content += `\n </Coloring>`;
|
|
262
|
+
}
|
|
263
|
+
content += `\n </Components>`;
|
|
264
|
+
return content;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Write visibility XML
|
|
268
|
+
*
|
|
269
|
+
* Per BCF 2.1 schema:
|
|
270
|
+
* - Visibility is REQUIRED inside Components
|
|
271
|
+
* - DefaultVisibility attribute defaults to false
|
|
272
|
+
* - Exceptions contains Component elements (entities to show/hide opposite of default)
|
|
273
|
+
* - ViewSetupHints is NOT inside Visibility (moved to Components level)
|
|
274
|
+
*/
|
|
275
|
+
function writeVisibility(visibility) {
|
|
276
|
+
// Default visibility to true (show all) if not specified
|
|
277
|
+
const defaultVis = visibility?.defaultVisibility ?? true;
|
|
278
|
+
let content = `\n <Visibility DefaultVisibility="${defaultVis}">`;
|
|
279
|
+
if (visibility?.exceptions && visibility.exceptions.length > 0) {
|
|
280
|
+
content += `\n <Exceptions>`;
|
|
281
|
+
for (const component of visibility.exceptions) {
|
|
282
|
+
content += writeComponent(component, ' ');
|
|
283
|
+
}
|
|
284
|
+
content += `\n </Exceptions>`;
|
|
285
|
+
}
|
|
286
|
+
content += `\n </Visibility>`;
|
|
287
|
+
return content;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Write a single component XML
|
|
291
|
+
*
|
|
292
|
+
* Per BCF 2.1 schema:
|
|
293
|
+
* - IfcGuid is an ATTRIBUTE (required for IFC objects)
|
|
294
|
+
* - OriginatingSystem is a child ELEMENT (optional)
|
|
295
|
+
* - AuthoringToolId is a child ELEMENT (optional)
|
|
296
|
+
*/
|
|
297
|
+
function writeComponent(component, indent = ' ') {
|
|
298
|
+
const hasChildren = component.originatingSystem || component.authoringToolId;
|
|
299
|
+
let content = `\n${indent}<Component`;
|
|
300
|
+
if (component.ifcGuid) {
|
|
301
|
+
content += ` IfcGuid="${component.ifcGuid}"`;
|
|
302
|
+
}
|
|
303
|
+
if (hasChildren) {
|
|
304
|
+
content += `>`;
|
|
305
|
+
if (component.originatingSystem) {
|
|
306
|
+
content += `\n${indent} <OriginatingSystem>${escapeXml(component.originatingSystem)}</OriginatingSystem>`;
|
|
307
|
+
}
|
|
308
|
+
if (component.authoringToolId) {
|
|
309
|
+
content += `\n${indent} <AuthoringToolId>${escapeXml(component.authoringToolId)}</AuthoringToolId>`;
|
|
310
|
+
}
|
|
311
|
+
content += `\n${indent}</Component>`;
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
content += `/>`;
|
|
315
|
+
}
|
|
316
|
+
return content;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Write coloring entry XML
|
|
320
|
+
*/
|
|
321
|
+
function writeColoringEntry(coloring) {
|
|
322
|
+
let content = `\n <Color Color="${coloring.color}">`;
|
|
323
|
+
for (const component of coloring.components) {
|
|
324
|
+
content += writeComponent(component, ' ');
|
|
325
|
+
}
|
|
326
|
+
content += `\n </Color>`;
|
|
327
|
+
return content;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Write perspective camera XML
|
|
331
|
+
*/
|
|
332
|
+
function writePerspectiveCamera(camera) {
|
|
333
|
+
return `\n <PerspectiveCamera>
|
|
334
|
+
<CameraViewPoint>
|
|
335
|
+
<X>${camera.cameraViewPoint.x}</X>
|
|
336
|
+
<Y>${camera.cameraViewPoint.y}</Y>
|
|
337
|
+
<Z>${camera.cameraViewPoint.z}</Z>
|
|
338
|
+
</CameraViewPoint>
|
|
339
|
+
<CameraDirection>
|
|
340
|
+
<X>${camera.cameraDirection.x}</X>
|
|
341
|
+
<Y>${camera.cameraDirection.y}</Y>
|
|
342
|
+
<Z>${camera.cameraDirection.z}</Z>
|
|
343
|
+
</CameraDirection>
|
|
344
|
+
<CameraUpVector>
|
|
345
|
+
<X>${camera.cameraUpVector.x}</X>
|
|
346
|
+
<Y>${camera.cameraUpVector.y}</Y>
|
|
347
|
+
<Z>${camera.cameraUpVector.z}</Z>
|
|
348
|
+
</CameraUpVector>
|
|
349
|
+
<FieldOfView>${camera.fieldOfView}</FieldOfView>
|
|
350
|
+
</PerspectiveCamera>`;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Write orthogonal camera XML
|
|
354
|
+
*/
|
|
355
|
+
function writeOrthogonalCamera(camera) {
|
|
356
|
+
return `\n <OrthogonalCamera>
|
|
357
|
+
<CameraViewPoint>
|
|
358
|
+
<X>${camera.cameraViewPoint.x}</X>
|
|
359
|
+
<Y>${camera.cameraViewPoint.y}</Y>
|
|
360
|
+
<Z>${camera.cameraViewPoint.z}</Z>
|
|
361
|
+
</CameraViewPoint>
|
|
362
|
+
<CameraDirection>
|
|
363
|
+
<X>${camera.cameraDirection.x}</X>
|
|
364
|
+
<Y>${camera.cameraDirection.y}</Y>
|
|
365
|
+
<Z>${camera.cameraDirection.z}</Z>
|
|
366
|
+
</CameraDirection>
|
|
367
|
+
<CameraUpVector>
|
|
368
|
+
<X>${camera.cameraUpVector.x}</X>
|
|
369
|
+
<Y>${camera.cameraUpVector.y}</Y>
|
|
370
|
+
<Z>${camera.cameraUpVector.z}</Z>
|
|
371
|
+
</CameraUpVector>
|
|
372
|
+
<ViewToWorldScale>${camera.viewToWorldScale}</ViewToWorldScale>
|
|
373
|
+
</OrthogonalCamera>`;
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Write line XML
|
|
377
|
+
*/
|
|
378
|
+
function writeLine(line) {
|
|
379
|
+
return `\n <Line>
|
|
380
|
+
<StartPoint>
|
|
381
|
+
<X>${line.startPoint.x}</X>
|
|
382
|
+
<Y>${line.startPoint.y}</Y>
|
|
383
|
+
<Z>${line.startPoint.z}</Z>
|
|
384
|
+
</StartPoint>
|
|
385
|
+
<EndPoint>
|
|
386
|
+
<X>${line.endPoint.x}</X>
|
|
387
|
+
<Y>${line.endPoint.y}</Y>
|
|
388
|
+
<Z>${line.endPoint.z}</Z>
|
|
389
|
+
</EndPoint>
|
|
390
|
+
</Line>`;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Write clipping plane XML
|
|
394
|
+
*/
|
|
395
|
+
function writeClippingPlane(plane) {
|
|
396
|
+
return `\n <ClippingPlane>
|
|
397
|
+
<Location>
|
|
398
|
+
<X>${plane.location.x}</X>
|
|
399
|
+
<Y>${plane.location.y}</Y>
|
|
400
|
+
<Z>${plane.location.z}</Z>
|
|
401
|
+
</Location>
|
|
402
|
+
<Direction>
|
|
403
|
+
<X>${plane.direction.x}</X>
|
|
404
|
+
<Y>${plane.direction.y}</Y>
|
|
405
|
+
<Z>${plane.direction.z}</Z>
|
|
406
|
+
</Direction>
|
|
407
|
+
</ClippingPlane>`;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Write bitmap XML
|
|
411
|
+
*/
|
|
412
|
+
function writeBitmap(bitmap) {
|
|
413
|
+
return `\n <Bitmap>
|
|
414
|
+
<Format>${bitmap.format}</Format>
|
|
415
|
+
<Reference>${escapeXml(bitmap.reference)}</Reference>
|
|
416
|
+
<Location>
|
|
417
|
+
<X>${bitmap.location.x}</X>
|
|
418
|
+
<Y>${bitmap.location.y}</Y>
|
|
419
|
+
<Z>${bitmap.location.z}</Z>
|
|
420
|
+
</Location>
|
|
421
|
+
<Normal>
|
|
422
|
+
<X>${bitmap.normal.x}</X>
|
|
423
|
+
<Y>${bitmap.normal.y}</Y>
|
|
424
|
+
<Z>${bitmap.normal.z}</Z>
|
|
425
|
+
</Normal>
|
|
426
|
+
<Up>
|
|
427
|
+
<X>${bitmap.up.x}</X>
|
|
428
|
+
<Y>${bitmap.up.y}</Y>
|
|
429
|
+
<Z>${bitmap.up.z}</Z>
|
|
430
|
+
</Up>
|
|
431
|
+
<Height>${bitmap.height}</Height>
|
|
432
|
+
</Bitmap>`;
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Escape XML special characters
|
|
436
|
+
*/
|
|
437
|
+
function escapeXml(str) {
|
|
438
|
+
return str
|
|
439
|
+
.replace(/&/g, '&')
|
|
440
|
+
.replace(/</g, '<')
|
|
441
|
+
.replace(/>/g, '>')
|
|
442
|
+
.replace(/"/g, '"')
|
|
443
|
+
.replace(/'/g, ''');
|
|
444
|
+
}
|
|
445
|
+
//# sourceMappingURL=writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ifc-lite/bcf",
|
|
3
|
+
"version": "1.4.0",
|
|
4
|
+
"description": "BIM Collaboration Format (BCF) support for IFC-Lite",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"jszip": "^3.10.0"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"typescript": "^5.3.0",
|
|
19
|
+
"vitest": "^1.6.0"
|
|
20
|
+
},
|
|
21
|
+
"license": "MPL-2.0",
|
|
22
|
+
"author": "Louis True",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/louistrue/ifc-lite.git",
|
|
26
|
+
"directory": "packages/bcf"
|
|
27
|
+
},
|
|
28
|
+
"homepage": "https://louistrue.github.io/ifc-lite/",
|
|
29
|
+
"bugs": "https://github.com/louistrue/ifc-lite/issues",
|
|
30
|
+
"keywords": [
|
|
31
|
+
"ifc",
|
|
32
|
+
"bim",
|
|
33
|
+
"bcf",
|
|
34
|
+
"buildingsmart",
|
|
35
|
+
"collaboration",
|
|
36
|
+
"issue-tracking",
|
|
37
|
+
"aec"
|
|
38
|
+
],
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"files": [
|
|
43
|
+
"dist",
|
|
44
|
+
"README.md"
|
|
45
|
+
],
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "tsc",
|
|
48
|
+
"dev": "tsc --watch",
|
|
49
|
+
"test": "vitest run"
|
|
50
|
+
}
|
|
51
|
+
}
|