Commit Graph

63 Commits

Author SHA1 Message Date
yuding
9a185699ae 提交代码 2026-04-20 10:38:42 +08:00
yuding
0b730da6f4 现版本 2026-04-14 10:16:37 +08:00
yuding
819992f331 feat: 迁移BimEngine到radial+dock并完善测量/剖切/漫游面板 2026-03-30 15:56:18 +08:00
yuding
2574a11284 feat: 新增底部Dock测量面板与回调联动 2026-03-30 10:53:39 +08:00
yuding
c11140f967 更新了版本 2026-03-26 09:34:21 +08:00
yuding
dd4600bb5b 提交代码 2026-03-16 16:13:36 +08:00
yuding
507112fcf9 feat: add camera switch, fix click event/dialog resize/map state sync
- fix(engine): adapt click handler to base engine array format data[0].url/ids
- feat(toolbar): add perspective/orthographic camera switch button with dynamic icon
- fix(dialog): clamp resize to container bounds to prevent overflow
- feat(demo): add auto-combine feature with robust URL parsing and validation
- fix(walk): close minimap on walk exit and sync map state between toolbar and walk panel
- fix(engine): correct MiniMap getstate() casing to match base engine API
- build: rebuild demo libs
2026-03-05 17:43:50 +08:00
yuding
b96e5f3262 refactor: slim down EngineManager from 861 to 290 lines by removing passthrough proxy pattern
- EngineManager now only exposes public SDK API (initialize, loadModel, pause/resumeRendering, getEngineComponent, destroy)
- Internal managers access Engine component directly via this.engineComponent getter on BaseManager
- Non-manager components use registry.engine3d.getEngineComponent() for direct Engine access
- Replaced getEngine() with onRawEvent()/offRawEvent() for raw engine event access
- Migrated 62 call sites across 13 files (9 managers, 1 panel, 3 toolbar buttons)
- Updated all architecture docs, API docs, and README to reflect new patterns
2026-03-05 11:15:57 +08:00
yuding
c3bd82c03a feat: upgrade to v1.3.2 with settings panel overhaul, clear height enhancements and bug fixes
- Overhaul settings dialog: add edge line toggle, contrast/saturation/light intensity sliders, environment and ground type selectors
- Add clear height measurement options: direction (up/down) and select type (point/element) with radio button UI
- Fix right-click context menu triggering during model drag rotation (add move threshold)
- Fix measure dialog event listener leak (on → off for cleanup)
- Update mini map API to use engine.minMap.toggle()
- Replace text-based measure icons with proper SVG assets (净高/净距/坐标/面积)
- Add i18n keys for all new settings and clear height options (zh-CN / en-US)
- Bump iflow-engine-base dependency to ^2.0.5
- Rebuild dist and sync demo libs
2026-03-04 16:40:35 +08:00
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
7d7fbd9c14 fix(button-group): add horizontal scroll for bottom toolbar overflow
When container width is too small, the bottom toolbar now scrolls
horizontally. Also removes box-shadow on glass-pill sections to prevent
clipping artifacts and sets transparent background on root element.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-28 10:09:09 +08:00
yuding
2395dff81e refactor(components): accept registry in menu, engine, walk-path, button-group
Menu button factories, Engine component, WalkPathPanel, and BimButtonGroup
now accept registry via options/parameters. Engine component adds public
resize() method wrapping EngineKernel.handleWindowResize().

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-28 10:09:01 +08:00
yuding
bb1d18a4e7 refactor(toolbar): pass registry to all button factories
Toolbar component now receives registry from ButtonGroupManager options
and passes it to all 16 toolbar button factory functions.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-28 10:08:52 +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
8fd1870f42 refactor(engine): update Engine layer to accept models parameter
- Add getHighlightModels() to retrieve selected models
- Rename hideSelectedModels → hideModels(models)
- Rename translucentSelectedModels → translucentModels(models)
- Rename isolateSelectedModels → isolateModels(models)
- Update translucentOtherModels to accept models parameter
- Update batch select methods to accept models parameter

Tasks 1-6 completed from refactor-model-operations plan.
2026-02-04 15:29:27 +08:00
yuding
a30e87e577 docs(engine): add JSDoc comments to all public methods
Add documentation for:
- saveMeasureSetting: 保存测量设置
- fitSectionBoxToModel: 剖切盒适应选中模型
- setWalkSpeed/Gravity/Collision: 漫游参数设置
- toggleMiniMap: 切换小地图
- getTypeTreeData/LevelTreeData/MajorTreeData: 模型树数据获取
- activateZoomBox: 框选放大
- getEngineInfo: 获取引擎信息
2026-02-04 15:17:23 +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
316f42ae6b feat(clipping): add section-move event listener
Listen for 'section-move' event from underlying engine and emit as 'section:move'.
Currently outputs to console for debugging.

Event type: { x?: {min, max}, y?: {min, max}, z?: {min, max} }
2026-02-02 16:38:43 +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
76da6cf3ac refactor(engine): migrate clipping to unified activeSection API
- Replace old state variables with currentSectionMode
- Implement unified activeSection(mode) for all clipping types (x/y/z/box/face)
- Remove deprecated methods: activateSectionAxis, activateSectionBox, etc.
- Use new underlying API: engine.clipping.active(mode)
- Code reduction: ~175 lines → ~38 lines (78% reduction)
2026-02-02 16:25:24 +08:00
你的用户名
45d3035d8a 引入css 2026-01-29 17:03:25 +08:00
yuding
0b8dcd36fa feat(tree,menu,docs): 对接目录树三类数据并中文化文档 2026-01-28 17:19:36 +08:00
yuding
3ab9d4b0ea style(collapse): 深色模式下使用更深的边框颜色 border-strong 2026-01-28 16:07:49 +08:00
yuding
bf4d4ff3c9 style(collapse): 使用更深的边框颜色 border-default 2026-01-28 16:06:01 +08:00
yuding
ff0ca20e96 style(collapse): 为 ghost 模式表头添加下边框分隔
- 添加 border-bottom: 1px solid var(--bim-border-subtle)
- 修复 setTheme 中的 CSS 变量命名,使用标准名称
- 折叠的多个面板现在有明显的视觉分隔
2026-01-28 16:03:07 +08:00
yuding
c66e34422f fix(collapse): 添加缺失的 CSS 变量 --bim-component-bg-hover
- BimCollapse.setTheme() 现在设置标准的 component 变量
- 修复 ghost 模式下背景色无法显示的问题
- 添加 --bim-component-bg, --bim-component-bg-hover, --bim-component-bg-active
2026-01-28 15:57:47 +08:00
yuding
b884109b9e refactor(component-detail): 移除 PropertyPanelManager,统一使用 ComponentDetailManager
- 删除 PropertyPanelManager 文件(移至 .recycle/2026-01-28/)
- 修改 Toolbar 按钮调用 componentDetail.show() 而非 propertyPanel.show()
- 修复折叠面板 ghost 模式样式:添加背景色和左边距
- 清理 BimEngine 和 ManagerRegistry 中的 PropertyPanelManager 引用
- 构建验证通过
2026-01-28 15:46:01 +08:00
yuding
89789e003b feat(registry): 注册 ComponentDetailManager 到全局 Registry 和 BimEngine 2026-01-28 12:00:55 +08:00
yuding
cf20389a30 feat(engine): 监听构件点击事件并记录选中状态 2026-01-28 11:55:57 +08:00
yuding
0e38f58052 feat(engine): 新增漫游功能方法 2026-01-28 11:24:31 +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
f2460fb981 refactor: 重命名SDK为iflow-engine,使用npm包引入第三方引擎
- 将包名从 @fishdingding/bim-engine-sdk 改为 iflow-engine
- 将构建输出文件从 bim-engine-sdk.*.js 改为 iflow-engine.*.js
- 将全局变量从 LyzBimEngineSDK 改为 IflowEngine
- 将第三方引擎SDK从本地引入改为npm包引入 (iflow-engine-base)
- 移除本地 src/engine_base 目录,移至回收站
- 更新所有文档和demo中的引用
2026-01-22 11:29:51 +08:00
yuding
70523e54e5 fix(theme): 优化深色模式二级菜单悬浮颜色
- 二级菜单使用主题变量替代硬编码颜色
- hover 背景使用 floatingBtnBg 增强与背景区分度
- 同步 floating 变量到 dropdown 元素
2026-01-21 16:50:00 +08:00
yuding
99aece7b89 refactor(theme): 使用通用 floating 变量替代 glassPill overrides
- 新增 ThemeConfig 浮动组件层变量 (floatingBg, floatingBtnBg 等)
- 移除 overrides.glassPill,改用主层级通用变量
- 优化深色模式配色增强容器与按钮区分度
- CSS 变量名统一为 --bim-floating-*

BREAKING CHANGE: glassPill overrides 已移除,使用 floating* 变量替代
2026-01-21 16:46:14 +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
a930bc8a50 feat: 更新 SDK 构建产物和文档
- 更新 SDK 构建文件 (es/umd)
- 更新 SDK 使用文档
- 删除 gujianzhu.glb 模型文件
- 更新 package.json 配置
- 调整 tab 组件样式和 vite 配置

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 16:46:53 +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
cd1f8186d0 初始化 2025-12-26 17:08:02 +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