当前位置: 首页 > article >正文

基于OpenCASCADE7.4+OSG3.6.3+Qt5.12.7的多文档初级CAD/CAE...

基于opencascade7.4osg3.6.3qt5.12.7的多文档初级Cad/cae平台支持十几种格式文件包括step,igs,stl,obj,3dsosg等支持视角切换显示模式切换仿Cad命令注册机制装配体显示模型高亮点选功能着色功能测量功能个性化导出图片功能集成netgen6.2和gmesh8网格划分支持导出stl,obj,osg等格式C前阵子帮实验室改毕设的时候翻了一圈开源CAD工具要么是功能太单一要么是依赖堆得吓人干脆自己攒了个轻量的多文档CAD/CAE小平台基于Occt7.4OSG3.6.3Qt5.12.7折腾俩月总算把基础功能跑通了今天来碎碎念一下。先唠唠技术栈的选择为啥选这仨组合Qt负责UI和多文档窗口是最省心的自带的MDI框架直接就能搞定多文件并行打开OpenCASCADE也就是Occt是开源CAD的顶流底层几何解析、CAD命令逻辑全靠它撑着最后把Occt自带的Viewer换成了OSG主要是后期想加多视角同步、自定义着色、网格叠加这些功能的时候OSG的渲染管线比Occt原生的灵活太多踩坑也更少。先上一段导入STEP文件的代码也是最核心的导入逻辑一开始我直接抄Occt官方样例的导入代码后来改了改适配自己的项目大概长这样// 导入STEP格式文件的核心逻辑 Handle(TDocStd_Document) stepDoc; // 初始化STEP读取器 Handle(XSControl_Reader) reader new XSControl_Reader; IFSelect_ReturnStatus readStatus reader-ReadFile(filePath.toStdString().c_str()); if (readStatus IFSelect_RetDone) { // 读取成功后转移所有根节点 Standard_Integer rootCount reader-NbRootsForTransfer(); for (Standard_Integer i 1; i rootCount; i) { reader-TransferRoot(i); } // 把Occt的模型转成OSG能识别的场景节点 osg::ref_ptrosg::Group modelRoot Occt2OsgConverter::transferDocToOsg(stepDoc-Main()); // 把节点加到当前的多文档子窗口里 currentMdiChild-addModelNode(modelRoot); }这段代码看着简单其实坑挺多的比如Occt默认的三角化精度太低转出来的复杂曲面会破面后来加了个参数让用户自己调精度还有装配体导入的时候内存会暴涨我加了个进度条提示用户别着急关掉程序。仿CAD的命令注册机制省了我好多重复代码最开始加新命令的时候都是直接在主窗口写槽函数后来越攒越多代码乱成一团干脆写了个单例的命令管理器注册和调用都靠它class CommandManager { public: using CmdCallback std::functionvoid(); static CommandManager getInstance() { static CommandManager inst; return inst; } // 注册新命令 void registerCmd(const QString cmdName, CmdCallback callback) { m_cmdMap.insert(cmdName, std::move(callback)); } // 执行命令 void execCmd(const QString cmdName) { if (m_cmdMap.contains(cmdName)) { m_cmdMap[cmdName](); } } private: QHashQString, CmdCallback m_cmdMap; }; // 举个例子注册测量距离的命令 CommandManager::getInstance().registerCmd(measure_distance, [this](){ // 先点选第一个点 gp_Pnt pointA currentView-pickPointFromScene(); // 再点选第二个点 gp_Pnt pointB currentView-pickPointFromScene(); double dist pointA.Distance(pointB); QMessageBox::information(this, 测量结果, QString(两点直线距离%1 mm).arg(dist, 0, f, 2)); });后来再加剖切、高亮、导出这些命令直接注册就行完全不用碰主窗口的代码爽得不行。网格划分这块集成了Netgen和GmshOcct自带的网格划分工具实在太拉胯复杂模型根本跑不动后来直接调用Netgen6.2和Gmsh8的API代码简化一下大概是这样// 调用Netgen生成网格 NETGEN-PROJECT::Mesh* rawMesh NETGEN-PROJECT::GenerateMesh(occtTargetShape, 5.0); // 转成OSG能渲染的面片节点这里要注意坐标系翻转 osg::ref_ptrosg::Geometry meshGeo Netgen2OsgConverter::convert(rawMesh); // 把网格叠加到模型上面 currentView-addOverlayNode(meshGeo);这里踩的最大的坑就是坐标系不统一Netgen默认Y轴朝上Occt是Z轴朝上转的时候要给OSG的节点乘一个旋转矩阵不然网格会歪成麻花。而且导出网格的时候也支持STL、OBJ、OSG格式直接用OSG的writeImageFile就行。其他杂七杂八的功能比如视角切换就是给OSG的相机绑定不同的控制模式正交/透视一键切换显示模式切换改一下OSG的PolygonMode就行线框、着色、隐藏线都能快速切模型高亮就是给选中的节点加一个红色的自发光材质装配体的时候还能单独高亮某个零件点选功能用OSG的PickVisitor点击的时候遍历场景算射线交点再传回给Occt获取精确的几何信息。基于opencascade7.4osg3.6.3qt5.12.7的多文档初级Cad/cae平台支持十几种格式文件包括step,igs,stl,obj,3dsosg等支持视角切换显示模式切换仿Cad命令注册机制装配体显示模型高亮点选功能着色功能测量功能个性化导出图片功能集成netgen6.2和gmesh8网格划分支持导出stl,obj,osg等格式C还有个性化导出图片一开始用Qt的grabWindow但是会把Qt的标题栏也截进去后来换成OSG自带的截图接口想截多大分辨率都没问题osg::ref_ptrosg::Image exportImg new osg::Image; exportImg-allocateImage(3840, 2160, 1, GL_RGBA, GL_UNSIGNED_BYTE); currentView-getCamera()-attach(osg::Camera::COLOR_BUFFER, exportImg); osgDB::writeImageFile(*exportImg, savePath);最后唠唠现状目前这个小平台已经支持STEP、IGS、STL、OBJ、3DS、OSG等十几种格式了多文档切换、装配体树状显示、模型高亮、测量、导出图片这些功能都能用网格划分导出也没问题后续打算加个参数化建模的模块和剖切功能。代码已经开源到Gitee了有兴趣的小伙伴可以去扒拉要是能给个star就更开心了

相关文章:

基于OpenCASCADE7.4+OSG3.6.3+Qt5.12.7的多文档初级CAD/CAE...

基于opencascade7.4osg3.6.3qt5.12.7的多文档初级Cad/cae平台,支持十几种格式文件,包括step,igs,stl,obj,3ds,osg等,支持视角切换,显示模式切换,仿Cad命令注册机制,装配体显示,模型高…...

三极管信号滤波原理与工程实践

1. 三极管在信号滤波中的独特应用作为一名嵌入式硬件工程师,我经常需要处理各种传感器信号。最近在无刷电机驱动项目中,遇到了霍尔信号毛刺干扰的问题。传统教科书上总是强调三极管的放大作用,但实际工程中,我发现三极管在信号滤波…...

快马平台十分钟速建:openclaw机器人抓取参数可视化配置原型

最近在做一个机器人抓取控制的项目,需要快速搭建一个openclaw的参数配置界面。作为一个前端开发经验不多的工程师,我惊喜地发现InsCode(快马)平台可以帮我快速实现这个需求。下面分享下我的实现过程。 首先明确需求 这个配置工具需要实现五个核心功能&a…...

基于Maxwell的750W内转子伺服电机设计:14极12槽优化方案解析

基于maxwwell设计的经典750W,3000RPM 内转子 私服电机,14极12槽,外径76 轴向长度56.7 ,转矩1Nm,直流母线12V,辅助槽优化了齿槽转矩,特色是转子加工方便,永磁同步电机(PMSM BLDC&…...

【手把手教学】使用stitch 生成ui图,导入figma,再用codebuddy生成工程代码

目录 一.stich使用 1.1 关键词生成 1.2 生成ui图 1.3 导出figma​编辑 二. codebuddy使用 ​编辑2.1打开figma ​编辑 2.2 复制ui到设计面板 2.3生成工程代码 三. 结语 一.stich使用 stich官网地址 Google Stitch 是 Google Labs 推出的、基于 Gemini 大模型驱动的A…...

Java继承详解:从基础到实战,吃透面向对象核心特性

哈喽,各位Java学习者!今天咱们深入拆解面向对象编程(OOP)的三大核心特性之一——继承。作为Java开发的基础重点,继承不仅能帮我们实现代码复用、简化开发,更是后续理解多态、抽象类、接口的关键前提。不管你…...

QModMaster:5分钟掌握免费开源ModBus调试工具终极指南

QModMaster:5分钟掌握免费开源ModBus调试工具终极指南 【免费下载链接】qModbusMaster 项目地址: https://gitcode.com/gh_mirrors/qm/qModbusMaster 你是否在为工业设备调试而烦恼?面对复杂的ModBus通信协议,商业软件价格昂贵&#…...

告别预烘焙!在UE材质编辑器中实时生成FlowMap和法线贴图(附节点图)

实时材质魔法:UE引擎中FlowMap与法线贴图的动态生成技术 在游戏开发与动态视觉创作领域,材质表现的真实感与动态效果一直是技术美术师们追求的核心目标。传统工作流中,FlowMap(流场图)和法线贴图的生成往往依赖于外部软…...

AI辅助架构设计:让快马平台智能规划trae状态管理方案

用AI辅助设计trae状态管理方案:以博客后台系统为例 最近在开发一个博客后台管理系统时,遇到了状态管理的难题。系统需要处理文章列表、编辑草稿、用户评论和系统设置等多种数据,如何合理组织这些状态让我头疼不已。幸运的是,在In…...

群晖更换RAID类型无需重建服务,保持Volume磁盘盘符不变

我的环境:DSM型号:DS3617xs(黑群晖)系统版本:DSM 7.1.1-42962 Update 6硬盘数据库更新时间:2026-01-23更改前磁盘序号(btrfs):Raid1(volume1)&…...

K8s中pod的创建与销毁

刚开始学习,整了一下流程图1.pod的创建2.pod的销毁有不对的地方,大家共同探讨...

seo规则中的内容创作有哪些注意事项

SEO规则中的内容创作有哪些注意事项 在当今互联网时代,搜索引擎优化(SEO)已成为网站流量和曝光度提升的关键手段。其中,内容创作是SEO的核心要素之一。仅仅创作大量内容并不能保证网站的高排名和高流量。要想在百度等搜索引擎上取…...

在wsl中利用快马平台五分钟搭建flask博客后端原型

最近在Windows系统下折腾WSL(Windows Subsystem for Linux)时,发现结合InsCode(快马)平台可以快速搭建项目原型,特别适合需要Linux环境特性的开发验证。就拿搭建一个Flask博客后端来说,传统方式从零开始配置环境、编写…...

WSL+VSCode+Jupyter+R配置总结(2026年)

题记:网上相关的资料很多了,现阶段跟随AI也能少走很多弯路,但体验下来依旧有些细节没有被很好的提及,故写本文一方面作为自己的备忘录,一方面希望帮助更多像我一样的新手。 用了上述的配置跑了scanpy一年多了&#xf…...

告别重复编码:用Copaw结合快马平台,自动化生成你的常用工具模块

作为一名经常需要整理会议纪要的开发者,我一直在寻找能提升效率的工具。最近尝试用Copaw结合InsCode(快马)平台做了一个会议纪要自动生成器,效果出乎意料地好。整个过程几乎没写代码,却实现了核心功能,分享下具体实现思路&#xf…...

从 14 万美元支付事故看:AI 写的代码过了所有测试,为什么活不过生产?

我审计过的一家科技公司,曾因一段 AI 生成的异步支付处理代码,遭遇了一场灾难性的生产事故。这段代码完美通过了所有自动化检查、单元测试与集成测试,标注着「All checks passed」被顺利合并到生产环境,最终却触发了竞态条件与重复…...

FastAPI + SQLite:从基础CRUD到安全并发的实战指南

核心摘要本文将带你超越FastAPI SQLite的基础CRUD搭建,聚焦于安全防护(认证、授权、输入验证)与并发处理(数据库连接池、异步优化)两大实战痛点。你会获得一套可直接复用的项目骨架,并理解其背后的设计逻辑…...

MySQL

我目前正在学习SQL语句,我所了解到的MySQL其实是一堆服务器,在下载服务器的时候,可以选择下载一些客户端,MySQL会自带一些客户端,像类似于终端的小黑框,还有什么bench;我还是喜欢外观好看的客户端 !我学SQL语句目前学到了数据类型,有数值型的,字符型的,二进制型的,值得一提的是…...

OpenCore Legacy Patcher终极指南:让老旧Mac焕发新生的完整方案

OpenCore Legacy Patcher终极指南:让老旧Mac焕发新生的完整方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher&#xf…...

N_m3u8DL-CLI-SimpleG:Windows平台最简M3U8视频下载工具完全指南

N_m3u8DL-CLI-SimpleG:Windows平台最简M3U8视频下载工具完全指南 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 如果你正在寻找一款简单易用的M3U8视频下载工具&…...

一步步教你:星图平台部署Qwen3-VL:30B完整流程,Clawdbot飞书集成实战

一步步教你:星图平台部署Qwen3-VL:30B完整流程,Clawdbot飞书集成实战 想象一下这个场景:你的团队在飞书群里讨论产品设计,有人发了一张UI截图问“这个按钮位置是不是太靠下了?”;财务同事上传了一张发票照…...

Python智能内存回收实战:3种GC策略对比+4个生产级调优参数配置(附压测数据)

第一章:Python智能体内存管理策略生产环境部署在高并发、长生命周期的Python智能体服务中,内存管理直接影响系统稳定性与响应延迟。默认的CPython引用计数循环垃圾回收(GC)机制在动态对象频繁创建销毁的场景下易引发内存抖动和不可…...

如何用GPU加速的MediaPipe TouchDesigner插件实现实时视觉交互

如何用GPU加速的MediaPipe TouchDesigner插件实现实时视觉交互 【免费下载链接】mediapipe-touchdesigner GPU Accelerated MediaPipe Plugin for TouchDesigner 项目地址: https://gitcode.com/gh_mirrors/me/mediapipe-touchdesigner MediaPipe TouchDesigner插件是一…...

实战派指南:用MaPLe思路优化你的CLIP下游任务,附关键配置与避坑建议

实战派指南:用MaPLe思路优化你的CLIP下游任务,附关键配置与避坑建议 当CLIP遇上业务场景,90%的开发者都会遇到相同的问题:模型在新类别上的表现总是不尽如人意。上周团队用默认参数跑跨模态检索任务时,基类准确率82%的…...

大模型RL算法梳理:从全量词元到部分词元的路径演化

一、 引言:大模型强化学习算法的演化格局 近年来,以 OpenAI 的 o1 系列、DeepSeek 的 R1,以及 Qwen 系列模型为代表,大语言模型在数学证明、代码生成等长链路推理任务中展现出更强的稳定性与推理深度。 在这一背景下,面…...

ARP 协议超详细讲解

前言网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址&…...

Spring AI 流式输出底层原理解析

在 AI 应用开发中,流式输出早已成为提升用户体验的核心能力——像 ChatGPT 那样的打字机式实时回复,既能避免用户长时间干等,又能解决长连接超时问题,是 AI 产品的必备特性。 一、流式输出的两种技术,不是对立而是“底…...

【个人推荐】一些好用的录音转写工具

因为助教课备课的缘故,需要录制讲座的音频以整理知识点。一次讲座的音频内容很长,即使3x速快进播放依然很耗费时间,因此录音转写的需求浮现了出来。于是闲暇之余探索了下市面上的录音转写工具,浅浅记录下体验。 下面主要推荐三款…...

Ollama在Apple Silicon上预览,性能大提升

2026年3月30日,Ollama开启在Apple silicon上的预览,由苹果MLX框架支持,解锁新性能,加速繁重工作,还在多方面有显著改进。MLX驱动,性能飞升基于Apple silicon的Ollama构建在MLX框架上,利用统一内…...

聚点智行:WorkBuddy 辅助开发 AI 地图智能应用实战

一、从痛点到创意:一个真实场景的启发 作为一名经常组织朋友聚会的"社交达人",我遇到了一个看似简单却让人头疼的问题:每次约饭,大家都在问"在哪见?" 张三住在回龙观,李四在东直门&…...