@sequent-org/ifc-viewer 1.0.5-ci.9.0 → 1.0.7-ci.10.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/README.md +162 -13
- package/package.json +4 -3
- package/src/ifc/IfcService.js +16 -12
- package/public/wasm/web-ifc.wasm +0 -0
package/README.md
CHANGED
|
@@ -4,12 +4,46 @@ IFC 3D model viewer component for web applications. Основан на Three.js
|
|
|
4
4
|
|
|
5
5
|
**✨ Полностью автономный пакет** - не требует внешних CSS фреймворков (Tailwind, Bootstrap и т.д.).
|
|
6
6
|
|
|
7
|
+
## ⚡ Быстрый старт для интеграции
|
|
8
|
+
|
|
9
|
+
### Минимальная настройка
|
|
10
|
+
|
|
11
|
+
1. **Установите пакет:**
|
|
12
|
+
```bash
|
|
13
|
+
npm install @sequent-org/ifc-viewer
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
2. **Используйте в коде:**
|
|
17
|
+
```javascript
|
|
18
|
+
import { IfcViewer } from '@sequent-org/ifc-viewer'
|
|
19
|
+
|
|
20
|
+
const viewer = new IfcViewer({
|
|
21
|
+
container: '#viewer-container',
|
|
22
|
+
ifcUrl: '/path/to/model.ifc'
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
await viewer.init()
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Готово!** WASM файл автоматически загружается из пакета. Никаких дополнительных настроек не требуется.
|
|
29
|
+
|
|
7
30
|
## 🚀 Установка
|
|
8
31
|
|
|
9
32
|
```bash
|
|
10
33
|
npm install @sequent-org/ifc-viewer
|
|
11
34
|
```
|
|
12
35
|
|
|
36
|
+
### ✨ Автоматическая настройка WASM
|
|
37
|
+
|
|
38
|
+
**WASM файл автоматически включается в пакет** - никаких дополнительных настроек не требуется!
|
|
39
|
+
|
|
40
|
+
- ✅ WASM файл автоматически загружается из пакета
|
|
41
|
+
- ✅ Не нужно копировать файлы в публичную папку
|
|
42
|
+
- ✅ Работает "из коробки" в любом проекте
|
|
43
|
+
- ✅ Совместимо с любыми сборщиками (Vite, Webpack, Rollup)
|
|
44
|
+
|
|
45
|
+
**Важно:** Пакет использует парсинг в главном потоке (Web Workers отключены) для максимальной совместимости с различными окружениями.
|
|
46
|
+
|
|
13
47
|
## 📋 Основное использование
|
|
14
48
|
|
|
15
49
|
### Простой пример
|
|
@@ -24,6 +58,21 @@ const viewer = new IfcViewer({
|
|
|
24
58
|
// showSidebar: false (по умолчанию)
|
|
25
59
|
// showControls: false (по умолчанию)
|
|
26
60
|
// showToolbar: true (по умолчанию)
|
|
61
|
+
// wasmUrl: null (автоматически определяет путь к WASM)
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
await viewer.init()
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Пример с кастомным WASM путем
|
|
68
|
+
|
|
69
|
+
```javascript
|
|
70
|
+
import { IfcViewer } from '@sequent-org/ifc-viewer'
|
|
71
|
+
|
|
72
|
+
const viewer = new IfcViewer({
|
|
73
|
+
container: document.getElementById('viewer-container'),
|
|
74
|
+
ifcUrl: '/models/building.ifc',
|
|
75
|
+
wasmUrl: '/custom-path/web-ifc.wasm' // Кастомный путь к WASM файлу
|
|
27
76
|
})
|
|
28
77
|
|
|
29
78
|
await viewer.init()
|
|
@@ -54,28 +103,44 @@ function showIfcModal(ifcUrl) {
|
|
|
54
103
|
}
|
|
55
104
|
```
|
|
56
105
|
|
|
57
|
-
**Настройка
|
|
58
|
-
|
|
59
|
-
1. Скопируйте `web-ifc.wasm` в папку `public/storage/`:
|
|
60
|
-
```bash
|
|
61
|
-
cp node_modules/web-ifc/web-ifc.wasm public/storage/
|
|
62
|
-
```
|
|
106
|
+
**Настройка в Laravel:**
|
|
63
107
|
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
php artisan storage:link
|
|
67
|
-
# Затем скопируйте файл в storage/app/public/
|
|
68
|
-
```
|
|
108
|
+
WASM файл автоматически загружается из пакета. Дополнительная настройка не требуется!
|
|
69
109
|
|
|
70
|
-
|
|
110
|
+
**Для кастомных путей (опционально):**
|
|
71
111
|
```javascript
|
|
72
112
|
const viewer = new IfcViewer({
|
|
73
113
|
container: container,
|
|
74
114
|
ifcUrl: ifcUrl,
|
|
75
|
-
wasmUrl: '/
|
|
115
|
+
wasmUrl: '/custom-path/web-ifc.wasm' // Только если нужен кастомный путь
|
|
76
116
|
})
|
|
77
117
|
```
|
|
78
118
|
|
|
119
|
+
**Важно для Laravel:** Пакет работает "из коробки" без дополнительных настроек Vite.
|
|
120
|
+
|
|
121
|
+
## 🔧 Особенности и совместимость
|
|
122
|
+
|
|
123
|
+
### ✅ Что включено в пакет
|
|
124
|
+
|
|
125
|
+
- **Автономные стили** - не требует Tailwind CSS, Bootstrap или других фреймворков
|
|
126
|
+
- **Автоматический WASM** - файл автоматически включается в пакет
|
|
127
|
+
- **Отключенные Web Workers** - парсинг в главном потоке для максимальной совместимости
|
|
128
|
+
- **Fallback защита** - автоматическое переключение на резервные пути при ошибках WASM
|
|
129
|
+
- **Обработка ошибок** - graceful degradation при критических ошибках
|
|
130
|
+
- **Поддержка wasmUrl** - гибкая настройка пути к WASM файлу (опционально)
|
|
131
|
+
|
|
132
|
+
### 🚫 Что НЕ включено
|
|
133
|
+
|
|
134
|
+
- **IFCWorker** - Web Workers отключены для предотвращения проблем интеграции
|
|
135
|
+
- **Внешние зависимости** - все стили и ресурсы включены в пакет
|
|
136
|
+
|
|
137
|
+
### 🎯 Совместимость
|
|
138
|
+
|
|
139
|
+
- **Браузеры:** Chrome 80+, Firefox 75+, Safari 13+, Edge 80+
|
|
140
|
+
- **Фреймворки:** React, Vue, Angular, Laravel, Next.js, Nuxt.js
|
|
141
|
+
- **Сборщики:** Vite, Webpack, Rollup
|
|
142
|
+
- **Серверы:** Node.js, PHP, Python, .NET
|
|
143
|
+
|
|
79
144
|
### Загрузка пользовательского файла
|
|
80
145
|
|
|
81
146
|
```javascript
|
|
@@ -315,6 +380,56 @@ Failed to load web-ifc.wasm
|
|
|
315
380
|
- Проверьте консоль на предупреждения о `wasmUrl`
|
|
316
381
|
- Убедитесь, что файл `web-ifc.wasm` существует и доступен
|
|
317
382
|
|
|
383
|
+
### Проблемы с Web Workers
|
|
384
|
+
|
|
385
|
+
**Ошибка IFCWorker:**
|
|
386
|
+
```
|
|
387
|
+
Failed to load IFCWorker.js
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
**Решение:** Эта ошибка не должна возникать, так как Web Workers отключены в пакете. Если она появляется:
|
|
391
|
+
|
|
392
|
+
1. **Проверьте версию пакета:**
|
|
393
|
+
```bash
|
|
394
|
+
npm list @sequent-org/ifc-viewer
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
2. **Очистите кэш:**
|
|
398
|
+
```bash
|
|
399
|
+
npm cache clean --force
|
|
400
|
+
rm -rf node_modules package-lock.json
|
|
401
|
+
npm install
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
3. **Проверьте консоль браузера** - должно быть сообщение "Web Workers отключены"
|
|
405
|
+
|
|
406
|
+
### Проблемы интеграции
|
|
407
|
+
|
|
408
|
+
**Ошибка при импорте:**
|
|
409
|
+
```
|
|
410
|
+
Cannot resolve module '@sequent-org/ifc-viewer'
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
**Решения:**
|
|
414
|
+
1. **Убедитесь в правильной установке:**
|
|
415
|
+
```bash
|
|
416
|
+
npm install @sequent-org/ifc-viewer
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
2. **Проверьте package.json:**
|
|
420
|
+
```json
|
|
421
|
+
{
|
|
422
|
+
"dependencies": {
|
|
423
|
+
"@sequent-org/ifc-viewer": "^1.0.1"
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
3. **Для TypeScript проектов:**
|
|
429
|
+
```typescript
|
|
430
|
+
import { IfcViewer } from '@sequent-org/ifc-viewer'
|
|
431
|
+
```
|
|
432
|
+
|
|
318
433
|
## 🔧 Системные требования
|
|
319
434
|
|
|
320
435
|
- Node.js >= 16
|
|
@@ -322,6 +437,40 @@ Failed to load web-ifc.wasm
|
|
|
322
437
|
- Для работы требуются файлы `web-ifc.wasm` в публичной папке проекта
|
|
323
438
|
- Поддержка ES6 модулей в браузере
|
|
324
439
|
|
|
440
|
+
## 👨💻 Информация для разработчиков
|
|
441
|
+
|
|
442
|
+
### Архитектура пакета
|
|
443
|
+
|
|
444
|
+
- **IfcViewer** - основной класс-обертка для интеграции
|
|
445
|
+
- **IfcService** - сервис загрузки и парсинга IFC файлов
|
|
446
|
+
- **Viewer** - Three.js сцена и рендеринг
|
|
447
|
+
- **IfcTreeView** - компонент дерева IFC структуры
|
|
448
|
+
|
|
449
|
+
### Ключевые особенности
|
|
450
|
+
|
|
451
|
+
- **Web Workers отключены** - парсинг в главном потоке
|
|
452
|
+
- **IFCWorker исключен** - предотвращает проблемы интеграции
|
|
453
|
+
- **Fallback защита** - множественные пути к WASM файлу
|
|
454
|
+
- **Автономные стили** - встроенные CSS без внешних зависимостей
|
|
455
|
+
|
|
456
|
+
### Для ассистентов по интеграции
|
|
457
|
+
|
|
458
|
+
При помощи с интеграцией пакета учитывайте:
|
|
459
|
+
|
|
460
|
+
1. **WASM файл автоматически включен** - никаких дополнительных настроек не требуется
|
|
461
|
+
2. **Web Workers отключены** - не пытайтесь их включить
|
|
462
|
+
3. **Используйте параметр wasmUrl** только для кастомных путей (опционально)
|
|
463
|
+
4. **Пакет полностью автономен** - не требует внешних CSS фреймворков
|
|
464
|
+
5. **Поддерживает все современные фреймворки** - React, Vue, Angular, Laravel
|
|
465
|
+
6. **Работает "из коробки"** - просто установите и используйте
|
|
466
|
+
|
|
467
|
+
### Отладка
|
|
468
|
+
|
|
469
|
+
- Проверьте консоль на сообщение "Web Workers отключены"
|
|
470
|
+
- WASM файл автоматически загружается из пакета
|
|
471
|
+
- Используйте DevTools → Network для проверки загрузки ресурсов
|
|
472
|
+
- При проблемах используйте параметр `wasmUrl` для кастомного пути
|
|
473
|
+
|
|
325
474
|
## 📄 Лицензия
|
|
326
475
|
|
|
327
476
|
MIT License
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sequent-org/ifc-viewer",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.7-ci.10.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "IFC 3D model viewer component for web applications",
|
|
7
7
|
"main": "src/index.js",
|
|
@@ -10,11 +10,12 @@
|
|
|
10
10
|
".": {
|
|
11
11
|
"import": "./src/index.js"
|
|
12
12
|
},
|
|
13
|
-
"./style.css": "./src/style.css"
|
|
13
|
+
"./style.css": "./src/style.css",
|
|
14
|
+
"./wasm/web-ifc.wasm": "./wasm/web-ifc.wasm"
|
|
14
15
|
},
|
|
15
16
|
"files": [
|
|
16
17
|
"src/",
|
|
17
|
-
"
|
|
18
|
+
"wasm/",
|
|
18
19
|
"README.md"
|
|
19
20
|
],
|
|
20
21
|
"keywords": [
|
package/src/ifc/IfcService.js
CHANGED
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
// Требует three@^0.149 и web-ifc-three совместимой версии
|
|
3
3
|
|
|
4
4
|
import { IFCLoader } from "web-ifc-three/IFCLoader";
|
|
5
|
-
//
|
|
5
|
+
// Автоматический импорт WASM файла из пакета
|
|
6
6
|
import WEBIFC_WASM_URL from '/wasm/web-ifc.wasm?url';
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
// т.к. web-ifc-three создаёт воркер без { type: 'module' }
|
|
10
|
-
import IFCWorkerUrl from 'web-ifc-three/IFCWorker.js?url';
|
|
7
|
+
// Примечание: IFCWorker не используется, так как мы отключаем Web Workers
|
|
8
|
+
// для стабильности работы в различных окружениях
|
|
11
9
|
|
|
12
10
|
export class IfcService {
|
|
13
11
|
/**
|
|
@@ -28,8 +26,14 @@ export class IfcService {
|
|
|
28
26
|
init() {
|
|
29
27
|
try {
|
|
30
28
|
this.loader = new IFCLoader();
|
|
31
|
-
// Отключаем Web
|
|
32
|
-
|
|
29
|
+
// Отключаем Web Workers: парсим в главном потоке для стабильности
|
|
30
|
+
// Это предотвращает проблемы с загрузкой IFCWorker в различных окружениях
|
|
31
|
+
try {
|
|
32
|
+
this.loader.ifcManager.useWebWorkers?.(false);
|
|
33
|
+
console.log('IfcService: Web Workers отключены, парсинг в главном потоке');
|
|
34
|
+
} catch (error) {
|
|
35
|
+
console.warn('IfcService: не удалось отключить Web Workers:', error.message);
|
|
36
|
+
}
|
|
33
37
|
|
|
34
38
|
// Настройка пути к WASM файлу с улучшенной обработкой ошибок
|
|
35
39
|
this._setupWasmPath();
|
|
@@ -77,17 +81,17 @@ export class IfcService {
|
|
|
77
81
|
paths.push(this.wasmUrl);
|
|
78
82
|
}
|
|
79
83
|
|
|
80
|
-
// 2.
|
|
84
|
+
// 2. WASM файл из пакета (автоматически включен в сборку)
|
|
81
85
|
try {
|
|
82
|
-
|
|
83
|
-
paths.push(wasmDir);
|
|
86
|
+
paths.push(WEBIFC_WASM_URL);
|
|
84
87
|
} catch (_) {}
|
|
85
88
|
|
|
86
89
|
try {
|
|
87
|
-
|
|
90
|
+
const wasmDir = new URL('.', WEBIFC_WASM_URL).href;
|
|
91
|
+
paths.push(wasmDir);
|
|
88
92
|
} catch (_) {}
|
|
89
93
|
|
|
90
|
-
// 3. Резервные пути
|
|
94
|
+
// 3. Резервные пути для обратной совместимости
|
|
91
95
|
paths.push('/wasm/', '/wasm/web-ifc.wasm', '/web-ifc.wasm');
|
|
92
96
|
|
|
93
97
|
return paths;
|
package/public/wasm/web-ifc.wasm
DELETED
|
Binary file
|