@sequent-org/ifc-viewer 1.0.5-ci.9.0 → 1.0.6-ci.11.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 +177 -6
- package/package.json +1 -2
- package/src/ifc/IfcService.js +19 -20
- package/public/wasm/web-ifc.wasm +0 -0
package/README.md
CHANGED
|
@@ -4,12 +4,58 @@ 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. **Скопируйте WASM файл (один раз):**
|
|
17
|
+
```bash
|
|
18
|
+
cp node_modules/web-ifc/web-ifc.wasm public/wasm/
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
3. **Используйте в коде:**
|
|
22
|
+
```javascript
|
|
23
|
+
import { IfcViewer } from '@sequent-org/ifc-viewer'
|
|
24
|
+
|
|
25
|
+
const viewer = new IfcViewer({
|
|
26
|
+
container: '#viewer-container',
|
|
27
|
+
ifcUrl: '/path/to/model.ifc'
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
await viewer.init()
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Готово!** Пакет автоматически найдет WASM файл по стандартным путям.
|
|
34
|
+
|
|
7
35
|
## 🚀 Установка
|
|
8
36
|
|
|
9
37
|
```bash
|
|
10
38
|
npm install @sequent-org/ifc-viewer
|
|
11
39
|
```
|
|
12
40
|
|
|
41
|
+
### 📁 Настройка WASM файла
|
|
42
|
+
|
|
43
|
+
После установки пакета скопируйте WASM файл в публичную папку:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Скопируйте web-ifc.wasm в папку public/wasm/
|
|
47
|
+
cp node_modules/web-ifc/web-ifc.wasm public/wasm/
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Умный поиск:** Пакет автоматически ищет WASM файл по популярным путям:
|
|
51
|
+
- `/wasm/web-ifc.wasm` (рекомендуемый)
|
|
52
|
+
- `/web-ifc.wasm`
|
|
53
|
+
- `/wasm/`
|
|
54
|
+
- `/node_modules/web-ifc/web-ifc.wasm`
|
|
55
|
+
- И другие стандартные пути
|
|
56
|
+
|
|
57
|
+
**Важно:** Пакет использует парсинг в главном потоке (Web Workers отключены) для максимальной совместимости с различными окружениями.
|
|
58
|
+
|
|
13
59
|
## 📋 Основное использование
|
|
14
60
|
|
|
15
61
|
### Простой пример
|
|
@@ -24,6 +70,21 @@ const viewer = new IfcViewer({
|
|
|
24
70
|
// showSidebar: false (по умолчанию)
|
|
25
71
|
// showControls: false (по умолчанию)
|
|
26
72
|
// showToolbar: true (по умолчанию)
|
|
73
|
+
// wasmUrl: null (автоматически определяет путь к WASM)
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
await viewer.init()
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Пример с кастомным WASM путем
|
|
80
|
+
|
|
81
|
+
```javascript
|
|
82
|
+
import { IfcViewer } from '@sequent-org/ifc-viewer'
|
|
83
|
+
|
|
84
|
+
const viewer = new IfcViewer({
|
|
85
|
+
container: document.getElementById('viewer-container'),
|
|
86
|
+
ifcUrl: '/models/building.ifc',
|
|
87
|
+
wasmUrl: '/custom-path/web-ifc.wasm' // Кастомный путь к WASM файлу
|
|
27
88
|
})
|
|
28
89
|
|
|
29
90
|
await viewer.init()
|
|
@@ -56,26 +117,52 @@ function showIfcModal(ifcUrl) {
|
|
|
56
117
|
|
|
57
118
|
**Настройка WASM файла в Laravel:**
|
|
58
119
|
|
|
59
|
-
1.
|
|
120
|
+
1. **Скопируйте WASM файл в public папку:**
|
|
60
121
|
```bash
|
|
61
|
-
cp node_modules/web-ifc/web-ifc.wasm public/
|
|
122
|
+
cp node_modules/web-ifc/web-ifc.wasm public/wasm/
|
|
62
123
|
```
|
|
63
124
|
|
|
64
|
-
2.
|
|
125
|
+
2. **Или используйте Laravel Storage:**
|
|
65
126
|
```bash
|
|
127
|
+
cp node_modules/web-ifc/web-ifc.wasm storage/app/public/
|
|
66
128
|
php artisan storage:link
|
|
67
|
-
# Затем скопируйте файл в storage/app/public/
|
|
68
129
|
```
|
|
69
130
|
|
|
70
|
-
3.
|
|
131
|
+
3. **Для кастомных путей:**
|
|
71
132
|
```javascript
|
|
72
133
|
const viewer = new IfcViewer({
|
|
73
134
|
container: container,
|
|
74
135
|
ifcUrl: ifcUrl,
|
|
75
|
-
wasmUrl: '/
|
|
136
|
+
wasmUrl: '/storage/web-ifc.wasm' // Путь к WASM в Laravel storage
|
|
76
137
|
})
|
|
77
138
|
```
|
|
78
139
|
|
|
140
|
+
**Важно для Laravel:** Убедитесь, что Vite настроен для обслуживания статических файлов из `public/` папки.
|
|
141
|
+
|
|
142
|
+
## 🔧 Особенности и совместимость
|
|
143
|
+
|
|
144
|
+
### ✅ Что включено в пакет
|
|
145
|
+
|
|
146
|
+
- **Автономные стили** - не требует Tailwind CSS, Bootstrap или других фреймворков
|
|
147
|
+
- **Умный поиск WASM** - автоматический поиск по популярным путям
|
|
148
|
+
- **Отключенные Web Workers** - парсинг в главном потоке для максимальной совместимости
|
|
149
|
+
- **Fallback защита** - автоматическое переключение на резервные пути при ошибках WASM
|
|
150
|
+
- **Обработка ошибок** - graceful degradation при критических ошибках
|
|
151
|
+
- **Поддержка wasmUrl** - гибкая настройка пути к WASM файлу
|
|
152
|
+
|
|
153
|
+
### 🚫 Что НЕ включено
|
|
154
|
+
|
|
155
|
+
- **IFCWorker** - Web Workers отключены для предотвращения проблем интеграции
|
|
156
|
+
- **Внешние зависимости** - все стили и ресурсы включены в пакет
|
|
157
|
+
- **WASM файл** - нужно скопировать из node_modules (один раз)
|
|
158
|
+
|
|
159
|
+
### 🎯 Совместимость
|
|
160
|
+
|
|
161
|
+
- **Браузеры:** Chrome 80+, Firefox 75+, Safari 13+, Edge 80+
|
|
162
|
+
- **Фреймворки:** React, Vue, Angular, Laravel, Next.js, Nuxt.js
|
|
163
|
+
- **Сборщики:** Vite, Webpack, Rollup
|
|
164
|
+
- **Серверы:** Node.js, PHP, Python, .NET
|
|
165
|
+
|
|
79
166
|
### Загрузка пользовательского файла
|
|
80
167
|
|
|
81
168
|
```javascript
|
|
@@ -315,6 +402,56 @@ Failed to load web-ifc.wasm
|
|
|
315
402
|
- Проверьте консоль на предупреждения о `wasmUrl`
|
|
316
403
|
- Убедитесь, что файл `web-ifc.wasm` существует и доступен
|
|
317
404
|
|
|
405
|
+
### Проблемы с Web Workers
|
|
406
|
+
|
|
407
|
+
**Ошибка IFCWorker:**
|
|
408
|
+
```
|
|
409
|
+
Failed to load IFCWorker.js
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
**Решение:** Эта ошибка не должна возникать, так как Web Workers отключены в пакете. Если она появляется:
|
|
413
|
+
|
|
414
|
+
1. **Проверьте версию пакета:**
|
|
415
|
+
```bash
|
|
416
|
+
npm list @sequent-org/ifc-viewer
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
2. **Очистите кэш:**
|
|
420
|
+
```bash
|
|
421
|
+
npm cache clean --force
|
|
422
|
+
rm -rf node_modules package-lock.json
|
|
423
|
+
npm install
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
3. **Проверьте консоль браузера** - должно быть сообщение "Web Workers отключены"
|
|
427
|
+
|
|
428
|
+
### Проблемы интеграции
|
|
429
|
+
|
|
430
|
+
**Ошибка при импорте:**
|
|
431
|
+
```
|
|
432
|
+
Cannot resolve module '@sequent-org/ifc-viewer'
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
**Решения:**
|
|
436
|
+
1. **Убедитесь в правильной установке:**
|
|
437
|
+
```bash
|
|
438
|
+
npm install @sequent-org/ifc-viewer
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
2. **Проверьте package.json:**
|
|
442
|
+
```json
|
|
443
|
+
{
|
|
444
|
+
"dependencies": {
|
|
445
|
+
"@sequent-org/ifc-viewer": "^1.0.1"
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
3. **Для TypeScript проектов:**
|
|
451
|
+
```typescript
|
|
452
|
+
import { IfcViewer } from '@sequent-org/ifc-viewer'
|
|
453
|
+
```
|
|
454
|
+
|
|
318
455
|
## 🔧 Системные требования
|
|
319
456
|
|
|
320
457
|
- Node.js >= 16
|
|
@@ -322,6 +459,40 @@ Failed to load web-ifc.wasm
|
|
|
322
459
|
- Для работы требуются файлы `web-ifc.wasm` в публичной папке проекта
|
|
323
460
|
- Поддержка ES6 модулей в браузере
|
|
324
461
|
|
|
462
|
+
## 👨💻 Информация для разработчиков
|
|
463
|
+
|
|
464
|
+
### Архитектура пакета
|
|
465
|
+
|
|
466
|
+
- **IfcViewer** - основной класс-обертка для интеграции
|
|
467
|
+
- **IfcService** - сервис загрузки и парсинга IFC файлов
|
|
468
|
+
- **Viewer** - Three.js сцена и рендеринг
|
|
469
|
+
- **IfcTreeView** - компонент дерева IFC структуры
|
|
470
|
+
|
|
471
|
+
### Ключевые особенности
|
|
472
|
+
|
|
473
|
+
- **Web Workers отключены** - парсинг в главном потоке
|
|
474
|
+
- **IFCWorker исключен** - предотвращает проблемы интеграции
|
|
475
|
+
- **Fallback защита** - множественные пути к WASM файлу
|
|
476
|
+
- **Автономные стили** - встроенные CSS без внешних зависимостей
|
|
477
|
+
|
|
478
|
+
### Для ассистентов по интеграции
|
|
479
|
+
|
|
480
|
+
При помощи с интеграцией пакета учитывайте:
|
|
481
|
+
|
|
482
|
+
1. **Обязательно скопируйте WASM файл** в публичную папку проекта (один раз)
|
|
483
|
+
2. **Web Workers отключены** - не пытайтесь их включить
|
|
484
|
+
3. **Используйте параметр wasmUrl** для кастомных путей к WASM файлу
|
|
485
|
+
4. **Пакет полностью автономен** - не требует внешних CSS фреймворков
|
|
486
|
+
5. **Поддерживает все современные фреймворки** - React, Vue, Angular, Laravel
|
|
487
|
+
6. **Умный поиск WASM** - автоматически найдет файл по стандартным путям
|
|
488
|
+
|
|
489
|
+
### Отладка
|
|
490
|
+
|
|
491
|
+
- Проверьте консоль на сообщение "Web Workers отключены"
|
|
492
|
+
- Убедитесь, что WASM файл скопирован в публичную папку
|
|
493
|
+
- Используйте DevTools → Network для проверки загрузки ресурсов
|
|
494
|
+
- При проблемах используйте параметр `wasmUrl` для кастомного пути
|
|
495
|
+
|
|
325
496
|
## 📄 Лицензия
|
|
326
497
|
|
|
327
498
|
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.6-ci.11.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "IFC 3D model viewer component for web applications",
|
|
7
7
|
"main": "src/index.js",
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
16
|
"src/",
|
|
17
|
-
"public/wasm/",
|
|
18
17
|
"README.md"
|
|
19
18
|
],
|
|
20
19
|
"keywords": [
|
package/src/ifc/IfcService.js
CHANGED
|
@@ -2,12 +2,8 @@
|
|
|
2
2
|
// Требует three@^0.149 и web-ifc-three совместимой версии
|
|
3
3
|
|
|
4
4
|
import { IFCLoader } from "web-ifc-three/IFCLoader";
|
|
5
|
-
//
|
|
6
|
-
|
|
7
|
-
// URL собранного воркера через Vite (даёт корректный путь для useWebWorkers)
|
|
8
|
-
// Важно: используем ?url, чтобы получить сырой URL ассета и создать классический Worker,
|
|
9
|
-
// т.к. web-ifc-three создаёт воркер без { type: 'module' }
|
|
10
|
-
import IFCWorkerUrl from 'web-ifc-three/IFCWorker.js?url';
|
|
5
|
+
// Примечание: IFCWorker не используется, так как мы отключаем Web Workers
|
|
6
|
+
// для стабильности работы в различных окружениях
|
|
11
7
|
|
|
12
8
|
export class IfcService {
|
|
13
9
|
/**
|
|
@@ -28,8 +24,14 @@ export class IfcService {
|
|
|
28
24
|
init() {
|
|
29
25
|
try {
|
|
30
26
|
this.loader = new IFCLoader();
|
|
31
|
-
// Отключаем Web
|
|
32
|
-
|
|
27
|
+
// Отключаем Web Workers: парсим в главном потоке для стабильности
|
|
28
|
+
// Это предотвращает проблемы с загрузкой IFCWorker в различных окружениях
|
|
29
|
+
try {
|
|
30
|
+
this.loader.ifcManager.useWebWorkers?.(false);
|
|
31
|
+
console.log('IfcService: Web Workers отключены, парсинг в главном потоке');
|
|
32
|
+
} catch (error) {
|
|
33
|
+
console.warn('IfcService: не удалось отключить Web Workers:', error.message);
|
|
34
|
+
}
|
|
33
35
|
|
|
34
36
|
// Настройка пути к WASM файлу с улучшенной обработкой ошибок
|
|
35
37
|
this._setupWasmPath();
|
|
@@ -77,18 +79,15 @@ export class IfcService {
|
|
|
77
79
|
paths.push(this.wasmUrl);
|
|
78
80
|
}
|
|
79
81
|
|
|
80
|
-
// 2.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
// 3. Резервные пути
|
|
91
|
-
paths.push('/wasm/', '/wasm/web-ifc.wasm', '/web-ifc.wasm');
|
|
82
|
+
// 2. Популярные пути по умолчанию
|
|
83
|
+
paths.push(
|
|
84
|
+
'/wasm/web-ifc.wasm', // Стандартный путь в public/wasm/
|
|
85
|
+
'/web-ifc.wasm', // Корневой путь
|
|
86
|
+
'/wasm/', // Директория wasm
|
|
87
|
+
'/node_modules/web-ifc/web-ifc.wasm', // Прямо из node_modules
|
|
88
|
+
'./web-ifc.wasm', // Относительный путь
|
|
89
|
+
'web-ifc.wasm' // Просто имя файла
|
|
90
|
+
);
|
|
92
91
|
|
|
93
92
|
return paths;
|
|
94
93
|
}
|
package/public/wasm/web-ifc.wasm
DELETED
|
Binary file
|