Commit Graph

42 Commits

Author SHA1 Message Date
yuding
0ccc891d7c feat: upgrade to v1.2.0 with model param validation and UI improvements
- Upgrade iflow-engine-base to ^2.0.0
- Add sanitizeModelParams for robust model operation validation
- Add try-catch error handling for render mode and model tool calls
- Preserve tree scroll position across tab switches
- Optimize tree node reveal with visibility check and centered scrolling
- Refactor collectModelParams to support multi-model grouping
- Fix tree CSS: remove duplicates, constrain overflow, improve layout
- Move version label to bottom-left
- Rebuild demo libs
2026-03-02 09:45:59 +08:00
yuding
837177f3f2 feat: add settings dialog with render mode selection
- Add SettingDialogManager with radio-style render mode picker (simple/balance/advanced)
- Add getRenderMode/setRenderMode API to Engine and EngineManager layers
- Wire setting toolbar button to toggle the settings dialog
- Add i18n keys for settings dialog (zh-CN/en-US)
- Add version display at bottom-right of engine wrapper
- Bump version to 1.1.7, rebuild and sync demo libs
2026-02-28 11:26:59 +08:00
yuding
73edf0b3b8 refactor(managers): accept registry parameter via constructor injection
All 16 managers now receive ManagerRegistry instance through constructor
instead of calling ManagerRegistry.getInstance(). This enables each
BimEngine instance to have its own isolated set of managers.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-28 10:08:36 +08:00
yuding
fdc6f884aa refactor: change loadModel parameter from string to string array
- Update loadModel signature: url: string -> urls: string[]
- Update validation logic for array parameter
- Update all demo files to pass array instead of single string
2026-02-26 16:03:38 +08:00
yuding
191c571f40 refactor: sync managers and section box actions
Wire section box scale/reverse/reset to clipping APIs and sync demo artifacts.
2026-02-04 18:20:30 +08:00
yuding
1ff331e0e0 refactor(engine): update EngineManager layer to accept models parameter
- Add getHighlightModels() to retrieve selected models
- Update hideSelectedModels → hideModels(models)
- Update translucentSelectedModels → translucentModels(models)
- Update isolateSelectedModels → isolateModels(models)
- Update translucentOtherModels to accept models parameter
- Update batch select methods to accept models parameter
- Update right-click menu handlers to use new API pattern

Tasks 7-9 completed from refactor-model-operations plan.
2026-02-04 15:28:50 +08:00
yuding
ad19934e19 feat(menu): add cancel translucent option to right-click menu
- Add cancelTranslucent i18n translations (zh-CN: 取消半透明, en-US: Cancel Translucent)
- Add unTranslucentModel() method to Engine layer
- Add unTranslucentModel() proxy to EngineManager
- Add menu item after 'Transparent Selected' (order: 4)
- Update menu item order numbers (5-8)
2026-02-04 15:10:51 +08:00
yuding
89783d0a9b feat(menu): implement right-click menu functions for model operations
- Add i18n translations for quick select menu (zh-CN, en-US)
- Add 8 model operation methods to Engine layer
- Add 8 proxy methods to EngineManager layer
- Implement right-click menu handlers for hide/translucent/isolate/show all
- Add quick select submenu (same type/level/level+type)
- Replace console.log placeholders with actual API calls
2026-02-03 18:01:31 +08:00
yuding
044cd0e034 refactor(measure): centralize measure type config and migrate API
- Add unified MEASURE_TYPES config in types/measure.ts
- Export MEASURE_MODES_ORDERED, ENGINE_TYPE_TO_MODE, MODE_TO_ENGINE_TYPE
- Refactor measure-dialog-manager to use centralized config
- Refactor measure-panel to use MEASURE_TYPES for icons/order/valueType
- Simplify engine/index.ts measureMap with dynamic key access
- Add measure settings API (saveMeasureSetting) with cache sync
- Add direct engine event listening for measure-changed and section-move
- Update i18n keys for 8 measure modes
2026-02-02 18:18:36 +08:00
yuding
4a09d52283 feat(clipping): implement hide/recover toggle for all section dialogs
Update all three section dialogs to support hide/show toggle:

SectionAxisDialogManager:
- onHideToggle now calls hideSection()/recoverSection()

SectionBoxDialogManager:
- onHideToggle now calls hideSection()/recoverSection()

SectionPlanePanel:
- Add isHidden state tracking
- Change onHide to onHideToggle(isHidden)
- Add setHiddenState/getHiddenState methods
- Update button to toggle active state

SectionPlaneDialogManager:
- Switch to onHideToggle callback
- Call hideSection()/recoverSection() based on toggle state

Behavior: Click hide button to hide section, click again to recover.
2026-02-02 16:36:17 +08:00
yuding
41abd9ed67 feat(clipping): add hideSection and recoverSection methods
Add new methods for temporary section plane visibility control:
- hideSection(): Hide section plane temporarily (calls engine.clipping.disabled())
- recoverSection(): Recover hidden section plane (calls engine.clipping.recover())

Update SectionPlaneDialogManager to use hideSection() instead of direct API call.
2026-02-02 16:32:22 +08:00
yuding
6db24d23bb docs(code): add JSDoc comments for clipping API methods
Add comprehensive documentation for:
- activeSection(mode): Unified activation API with mode descriptions
- getCurrentSectionMode(): Current mode getter
- setSectionBoxRange(range): Box range setter with percentage format
- deactivateSection(): Unified deactivation

Includes @param, @returns, @remarks, and @example sections in Chinese.
2026-02-02 16:30:07 +08:00
yuding
679d792de2 refactor(section-managers): adapt to unified clipping API
SectionAxisDialogManager:
- Update activateSectionAxis → activeSection in callbacks

SectionBoxDialogManager:
- Update activateSectionBox → activeSection('box')
- Disable fitSectionBoxToModel and resetSectionBox (not supported)

SectionPlaneDialogManager:
- Add activeSection('face') to onDialogCreated
- Add deactivateSection() to onBeforeDestroy
- Wire onHide to engine.clipping.disabled()
- Keep onReverse/onReset as log-only (not supported)
2026-02-02 16:25:32 +08:00
yuding
b36cc3edf3 refactor(engine-manager): update clipping API to unified activeSection
- Add activeSection(mode) method
- Add getCurrentSectionMode() method
- Remove deprecated methods: activateSectionAxis, activateSectionBox, etc.
- Keep deactivateSection() and setSectionBoxRange()
- Code reduction: ~78 lines → ~27 lines (65% reduction)
2026-02-02 16:25:27 +08:00
yuding
0b8dcd36fa feat(tree,menu,docs): 对接目录树三类数据并中文化文档 2026-01-28 17:19:36 +08:00
yuding
89789e003b feat(registry): 注册 ComponentDetailManager 到全局 Registry 和 BimEngine 2026-01-28 12:00:55 +08:00
yuding
33f1c72791 feat: 新增构件详情弹窗管理器 2026-01-28 11:58:16 +08:00
yuding
e75886d671 feat(engine-manager): 添加构件选中方法和动态右键菜单 2026-01-28 11:57:20 +08:00
yuding
1c66b48b28 feat(walk-control): 对接漫游功能到底层 API 2026-01-28 11:24:33 +08:00
yuding
dc63f94e44 feat(engine-manager): 暴露漫游功能方法 2026-01-28 11:24:32 +08:00
yuding
283410fd7d feat(section-axis): integrate dialog manager with engine methods 2026-01-27 17:59:52 +08:00
yuding
5e62c8fdc3 feat(engine): add section axis clipping methods 2026-01-27 17:58:56 +08:00
yuding
89ae01ffd7 feat: upgrade iflow-engine-base to v1.0.5, add pause/resume rendering API
- Update iflow-engine-base from 1.0.1 to 1.0.5
- Change default engine version from v1 to v2
- Add pauseRendering() and resumeRendering() methods
- Add switch model feature in demos
- Update model URLs in demos
- Add new documentation files
2026-01-23 16:27:04 +08:00
yuding
31b60e84ce refactor: 重构 Manager 架构,引入 ManagerRegistry 和 BaseManager 基类
- 新增 ManagerRegistry 单例注册表,统一管理所有 Manager 实例
- 新增 BaseManager 基类,自动管理事件订阅清理
- 新增 BaseDialogManager 基类,统一对话框生命周期管理
- 重构 15 个 Manager 使用新基类
- 重构 Toolbar 按钮和 Menu 按钮移除 engine 参数依赖
- 删除 BimComponent 基类(已不再使用)
- 为所有 Manager 和核心模块添加中文 JSDoc 注释
2026-01-22 15:23:57 +08:00
yuding
19f7e3ffbc feat(theme): 重构主题系统,新增 glass-pill 按钮样式
- ThemeConfig 接口扩展至 60+ 语义化属性
- 新增深浅主题预设 (glassPill overrides)
- button-group 支持 glass-pill 样式变体
- 默认主题改为浅色
- 移除 toolbar 容器硬编码定位
- 统一组件 CSS 变量命名规范
- 暂时隐藏下拉箭头
2026-01-21 15:50:07 +08:00
yuding
f6257f5162 feat: 优化测量功能架构与引擎组件
- 重构测量激活逻辑,在 Engine 组件中添加统一的 activateMeasure(mode) 方法
- 简化 MeasureDialogManager,移除冗余的 handleMeasureTypeChange 方法
- 添加 EngineManager.activateMeasure 转发方法
- 修复 loadModel 错误,正确调用 Engine 组件方法
- 为 Engine 组件设置固定背景渐变色
- MeasurePanel 初始化时触发 onModeChange 回调
- 添加 MeasureMode 共享类型定义

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 14:13:13 +08:00
yuding
bb82a1c555 初始化 2025-12-25 18:57:09 +08:00
yuding
9b6959585d 初始化 2025-12-25 15:47:57 +08:00
yuding
04a5e74284 初始化 2025-12-24 19:02:34 +08:00
yuding
4b5eb78bbb 增加测量窗口 2025-12-23 11:31:16 +08:00
yuding
7d522afb70 增加测量窗口 2025-12-22 18:48:38 +08:00
yuding
e1bb5558ff feat: enhance description component, update property panel with tabs, and refine docs 2025-12-22 16:41:24 +08:00
yuding
ed0414c75b 添加折叠面板 2025-12-22 15:39:58 +08:00
yuding
005535a26d 修改 2025-12-22 14:31:23 +08:00
yuding
9d1ebfd817 添加测试信息 2025-12-16 11:57:44 +08:00
yuding
2a2258cb9c feat(tree): implement tree component with checkbox support and manager pattern
- Added core Tree component (BimTree, BimTreeNode)
- Added TreeManager for lifecycle management
- Added ModelTreeManager for business logic encapsulation (Tree + Dialog)
- Integrated into BimEngine and updated demos
- Added internationalization support
2025-12-10 18:34:14 +08:00
yuding
ef79b5b370 refactor(right-key): move interaction logic to component and trigger on mouseup 2025-12-10 10:10:09 +08:00
yuding
9903a71015 style(menu): remove default list style bullets from menu 2025-12-10 09:42:05 +08:00
yuding
9ae1d9d809 fix(menu): refactor menu system to use pure config objects and fix submenu click events 2025-12-09 18:34:43 +08:00
yuding
c112c87dad 添加测试信息 2025-12-08 10:02:24 +08:00
yuding
244891ceec 添加测试信息 2025-12-04 18:41:11 +08:00
yuding
c45cdc9f7d refactor: reorganize project structure and implement self-managed i18n/theme for components 2025-12-04 15:24:44 +08:00