Revit二次开发开源高性能 3D 可视化工具库,基于 HelixToolkit.Wpf.SharpDX

🌐 项目地址

GitHub: https://github.com/ViewSuSu/Su.Revit.HelixToolkit.SharpDX
Gitee: https://gitee.com/SususuChang/su.-revit.-helix-toolkit.-sharp-dx

🎬 演示动画

甚至可以进行动态高亮显示

📦 安装方式

通过 NuGet 安装(推荐)

# Package Manager Install-Package Su.Revit.HelixToolkit.SharpDX # .NET CLI dotnet add package Su.Revit.HelixToolkit.SharpDX 

兼容性

  • 支持版本: Revit 2013 - Revit 2026
  • .NET Framework: 4.8+
  • 依赖项: HelixToolkit.Wpf.SharpDX, Revit API

📖 简介

Su.Revit.HelixToolkit.SharpDX 是一个专为 Revit 插件开发设计的高性能 3D 可视化工具库。基于 HelixToolkit.Wpf.SharpDX 开发,提供了简单易用的 API 来在 Revit 插件中创建功能丰富的 3D 视图窗口。

核心特性:

  • 🚀 高性能渲染: 对 Solid 三角面进行了索引优化,能够承载海量三角面数据的 Solid 模型
  • 🎯 完整交互: 支持鼠标悬停高亮、点击选择、多选、旋转、缩放、平移等完整交互功能
  • 📐 坐标系适配: 自动处理 Revit 与 Helix 坐标系转换,无缝集成
  • 🎨 材质系统: 支持 Revit 原生材质、自定义颜色、贴图材质等多种渲染方式
  • 内存优化: 高效的几何数据管理和内存释放机制

🎯 快速开始

⚡ 基本使用

// 1. 📦 初始化构建器var builder = HelixViewport3DBuilder.Init( revitDocument, geometryObjects,newViewport3DXOptions());// 2. 🖥️ 获取 3D 视口控件Viewport3DX viewport = builder.Viewport;// 3. 📝 将 viewport 添加到你的 WPF 窗口中

🔥 完整示例

// 准备要显示的几何对象var geometryObjects =newList<GeometryObjectOptions>{// 添加你的几何对象...};// 🎨 配置视口选项var visualOptions =newViewport3DXOptions{ BackgroundColor = System.Windows.Media.Colors.LightGray, FXAALevel =4// 抗锯齿等级};// 🏗️ 创建构建器var builder = HelixViewport3DBuilder.Init( document, geometryObjects, visualOptions );// 📐 设置相机视图 builder.SetCamera(revitView);// ✨ 启用交互功能 builder.SetHoverHighlightEnabled(true).SetClickHighlightEnabled(true);

🎮 交互功能

🖱️ 鼠标操作

操作功能图标
🖱️ 中键双击缩放至视图范围🔍
🖱️ 中键拖动平移视图👐
🖱️ Shift + 右键旋转视角🔄
🖱️ 鼠标悬停半透明高亮显示👆
🖱️ 左键点击选中模型
🖱️ Ctrl + 点击多选模型📋

🎨 高亮功能

// 🌈 设置高亮颜色 builder.SetHighlightColor(Colors.Red,0.8f);// 红色高亮// 💫 启用闪烁效果 builder.SetHighlightBlinking(true,100);// 100ms 闪烁间隔// 🔧 程序化高亮特定对象 builder.HighlightGeometryObject(specificGeometry);

📊 视图控制

🎥 相机设置

// 方法1: 使用 Revit 视图 builder.SetCamera(revitView);// 方法2: 自定义相机 builder.SetCamera(newXYZ(0,0,10),// 📍 相机位置newXYZ(0,0,-1),// 👀 观察方向newXYZ(0,1,0)// ⬆️ 上方向);

🧭 导航控件

  • 视图立方体: 显示在右上角,点击快速切换视角
  • 自动缩放: 载入时自动调整到合适视图范围
  • 抗锯齿: 可配置的图形质量设置

🛠️ 高级功能

📡 事件监听

// 👂 监听模型选中事件 builder.OnModelSelected +=(sender, args)=>{var selectedModel = args.SelectedModel;var geometryObject = args.GeometryObject;var hitPoint = args.HitPoint;// 🎯 处理选中逻辑 Console.WriteLine($"选中了模型: {geometryObject}");};// 👂 监听取消选中事件 builder.OnModelDeselected +=(sender, args)=>{// 🗑️ 清除选中状态};

🔍 选择管理

// 📋 获取当前选中的模型var selectedModels = builder.GetSelectedModels();// 📋 获取当前选中的几何对象var selectedGeometry = builder.GetSelectedGeometryObjects();// 🧹 清除所有选择 builder.ClearHighlight();

⚙️ 配置选项

🎨 视觉配置

var options =newViewport3DXOptions{ BackgroundColor = Colors.Black,// 🎨 背景颜色 FXAALevel =8,// 🔍 抗锯齿等级 (0-8) EnableRenderFrustum =true// 🎯 视锥体裁剪};

🔧 功能开关

// 启用/禁用悬停高亮 builder.SetHoverHighlightEnabled(true);// 启用/禁用点击高亮  builder.SetClickHighlightEnabled(true);

🎨 GeometryObjectOptions 使用指南

📝 基本配置

GeometryObjectOptions 用于配置几何对象的渲染方式:

使用 Revit 材质
var options =newGeometryObjectOptions( geometryObject,// 📐 Revit 几何对象 revitMaterial // 🎨 Revit 材质(可选));
使用自定义颜色
var options =newGeometryObjectOptions( geometryObject,// 📐 Revit 几何对象 Colors.Blue,// 🔵 自定义颜色0.8f// 💧 透明度 (0-1));
使用贴图材质
var options =newGeometryObjectOptions( geometryObject,// 📐 Revit 几何对象 textureStream,// 🖼️ 贴图流 Colors.White,// ⚪ 自发光颜色1.0f// 💧 透明度);

⚙️ 渲染参数配置

var options =newGeometryObjectOptions(geometryObject, material){ LevelOfDetail =0.8,// 🎯 细节等级 (0-1) MinAngleInTriangle =0,// 📐 三角面最小角度 MinExternalAngleBetweenTriangles = Math.PI /4,// 📏 相邻面最小外角 IsDrawSolidEdges =true,// 📏 绘制轮廓线 SolidEdgeThickness =2f,// 🖊️ 轮廓线粗细 SolidEdgeSmoothness =10f// ✨ 轮廓线平滑度};

🔧 参数说明

参数说明默认值影响
LevelOfDetail渲染细节等级0.5值越高网格越密集,精度越高但性能消耗越大
MinAngleInTriangle三角面最小夹角0控制网格生成时的平滑度
MinExternalAngleBetweenTriangles相邻三角面最小外角判断曲面平滑过渡程度
IsDrawSolidEdges是否绘制轮廓线true显示边界线条
SolidEdgeThickness轮廓线粗细2f线条的像素宽度
SolidEdgeSmoothness轮廓线平滑度10f数值越大边缘越平滑

💡 使用技巧

🚀 性能优化

  • ✅ 使用 EnableSwapChainRendering 提升渲染性能
  • ✅ 合理设置 FXAALevel 平衡画质和性能
  • ✅ 及时调用 Clear() 释放资源
  • ✅ 根据需求调整 LevelOfDetail,避免不必要的细节
  • ✅ 利用 Solid 三角面索引优化处理海量数据

🎯 最佳实践

  1. 📱 响应式设计: 视口会自动适应容器大小
  2. 🔄 实时更新: 支持动态添加/移除几何对象
  3. 🎮 用户友好: 提供直观的鼠标交互反馈
  4. 🎨 视觉一致: 保持与 Revit 相似的视觉风格
  5. ⚡ 性能平衡: 根据场景复杂度调整渲染参数
  6. 💾 内存管理: 及时清理不再使用的几何对象

🔄 场景管理

// 🧹 清空场景 builder.Clear();// 📦 重新添加对象 builder.Add(newGeometryObjects);// 🎯 重置相机 builder.SetCamera(newView);

❓ 常见问题

❓ 如何更改高亮颜色?

builder.SetHighlightColor(Colors.Blue,0.7f);// 🔵 蓝色高亮

❓ 如何禁用所有交互?

builder.SetHoverHighlightEnabled(false).SetClickHighlightEnabled(false);

❓ 如何获取点击位置的世界坐标?

builder.OnModelSelected +=(sender, args)=>{var worldPosition = args.HitPoint;// 🌍 世界坐标};

❓ 如何优化复杂模型的性能?

var options =newGeometryObjectOptions(geometryObject, material){ LevelOfDetail =0.3,// 🎯 降低细节等级 IsDrawSolidEdges =false// 📏 禁用轮廓线绘制};

❓ 如何处理材质透明度?

// 方法1: 使用颜色透明度var options =newGeometryObjectOptions(geometryObject, Colors.Red,0.5f);// 方法2: 使用 Revit 材质的透明度var material = document.GetElement(materialId)asAutodesk.Revit.DB.Material;var options =newGeometryObjectOptions(geometryObject, material);

❓ 如何处理海量三角面的 Solid 模型?

// 库已内置三角面索引优化,自动处理海量数据// 只需正常创建 GeometryObjectOptions 即可var options =newGeometryObjectOptions(largeSolidModel, material);

📞 技术支持

如果在使用过程中遇到问题,请检查:

  • ✅ Revit 文档对象是否正确传递
  • ✅ 几何对象集合是否包含有效数据
  • ✅ 视口控件是否正确添加到 WPF 可视化树
  • ✅ 事件处理程序是否正确注册和注销
  • ✅ 渲染参数是否在合理范围内
  • ✅ 内存使用是否正常,及时调用 Clear() 释放资源

🔍 调试技巧

// 检查选中的模型var selected = builder.GetSelectedModels(); Console.WriteLine($"选中了 {selected.Count()} 个模型");// 检查几何对象映射var geometryObjects = builder.GetSelectedGeometryObjects();foreach(var geoObj in geometryObjects){ Console.WriteLine($"几何对象类型: {geoObj.GetType()}");}

📚 更多资源

  • 📖 完整源代码: 请访问上面的 GitHub 或 Gitee 仓库
  • 🐛 问题反馈: 欢迎在仓库中提交 Issue
  • 💡 功能建议: 欢迎提交 Pull Request 或功能建议
  • 📋 更新日志: 查看仓库的 Release 页面获取最新版本信息

🎉 开始使用 Su.Revit.HelixToolkit.SharpDX 创建出色的 3D 可视化体验吧!

Read more

AI写作大师Qwen3-4B性能测试:CPU环境下的token生成速度

AI写作大师Qwen3-4B性能测试:CPU环境下的token生成速度 1. 引言 1.1 背景与需求 随着大模型在内容创作、代码生成和逻辑推理等领域的广泛应用,越来越多的开发者和创作者希望在本地环境中部署高性能AI助手。然而,GPU资源昂贵且不易获取,使得基于CPU的高效推理方案成为轻量化部署的重要方向。 阿里云推出的 Qwen3-4B-Instruct 模型凭借其40亿参数规模,在保持较强智能水平的同时,具备了在高端CPU上运行的可能性。本文将围绕“AI写作大师”这一基于该模型构建的镜像系统,重点评测其在纯CPU环境下的token生成速度,并分析影响性能的关键因素。 1.2 测试目标 本次测试旨在回答以下问题: * Qwen3-4B在典型CPU配置下能实现多快的推理速度? * 不同输入长度对输出延迟有何影响? * 使用low_cpu_mem_usage优化后,内存占用与稳定性表现如何? * 是否适合用于长文本写作、代码生成等实际场景? 2. 技术架构与实现原理 2.1 模型核心特性 Qwen3-4B-Instruct 是通义千问系列中面向指令理解与任

By Ne0inhk
全网最靠谱有效!!!解决新机型 Copilot 键替代右 Ctrl 键问题

全网最靠谱有效!!!解决新机型 Copilot 键替代右 Ctrl 键问题

引路者👇: 前言 一、先搞懂:Copilot 键原本是干嘛的? 二、核心解决方案:用微软官方工具 PowerToys 映射 步骤 1:下载安装 PowerToys 步骤 2:开启 “键盘管理器” 功能 步骤 3:添加 “快捷键映射”(关键步骤) 步骤 4:测试功能是否生效 三、注意事项:确保映射长期生效 四、常见问题排查(避坑指南) 五、总结 前言         作为一名长期依赖右 Ctrl 键进行操作的程序员 / 办公用户,今年换了新的拯救者笔记本后,发现键盘上原本的右 Ctrl 键被一个陌生的 “Copilot 键” 取代了。日常用 “Ctrl+

By Ne0inhk

Windows 环境下 llama.cpp 编译 + Qwen 模型本地部署全指南

在大模型落地场景中,本地轻量化部署因低延迟、高隐私性、无需依赖云端算力等优势,成为开发者与 AI 爱好者的热门需求。本文聚焦 Windows 10/11(64 位)环境,详细拆解 llama.cpp 工具的编译流程(支持 CPU/GPU 双模式,GPU 加速需依赖 NVIDIA CUDA),并指导如何通过 modelscope 下载 GGUF 格式的 Qwen-7B-Chat 模型,最终实现模型本地启动与 API 服务搭建。 1.打开管理员权限的 PowerShell/CMD,执行以下命令克隆代码: git clone https://github.com/ggml-org/llama.cpp mkdir

By Ne0inhk