君方智能三维设计平台-ShipMaker软件介绍

本文介绍了具有丰富经验的软件开发者分享其在CAD和服务器开发领域的专长,特别是他个人开发的ShipMaker船舶协同设计软件,涵盖了基础功能和架构设计,以及未来可能的技术升级和开源计划。

作者简介:

有将近20年的软件开发经验,包括15年CAD(7年船舶和8年建筑CAD软件)软件开发和5年高性能服务器开发。熟悉了解Tribon、Aveva Marine、Foran、SPD、AutoCAD AEC/MEP 和Revit等CAD设计软件,精通CAD建模平台底层技术原理及架构和服务器开发技术,包括对象存储管理及拷贝、图形对象渲染、文件保存及升级、事务管理、对象交互框架、对象捕捉框架、夹点编辑框架、动态尺寸显示及编辑、自动化测试框架、基于脚本的构件编辑器及构件级协同设计,对协同设计有自己的理解。

ShipMaker是一款基于Qt、OCC、MySQL、SQLite、Redis、Nginx、QPID、SARibbon和Lua等技术,个人独立开发的三维设计的协同设计软件(个人业余爱好),支持Linux(Ubuntu)和Windows平台和国产信创操作系统。从2015年开始,经过10年的积累开发(近20万行代码),已经完成基础建模平台及基础能力,以及部分通用应用的开发,功能会逐步完善。由于个人精力有限,可能会考虑开源。

后期会考虑切换渲染引擎会到OSG或Coin3D,ShipMaker的软件架构设计支持渲染引擎及建模引擎的无感切换,而不会影响上层应用。

下面对ShipMaker的软件架构设计和软件功能做一个简单的介绍,软件详细设计可以参见博客其他技术文章。

1.架构设计

1.1 产品架构

1.1 技术架构

      整体架构

 详细架构

1.2 设计目标
(1)可扩展性
提供灵活的扩展接口和机制,允许用户根据需求定制和扩展功能,同时保持平台的稳定    和高性能。
(2)国际化版本
能够灵活支持多语言版本。
(3)兼容性
保持向后兼容性,包括数据兼容和API的兼容性,确保扩展的稳定性和可迁移性,防止扩展对原有功能的冲突和破坏。
(4)支持跨平台
支持Windows和Linux平台,能够适配国产操作系统。
(5)安全性
保证数据不能丢失,用户信息不能泄露。

1.3 技术实现

整体采用C++开发语言,Qt6.3和C++17标准库,支持跨平台开发和适配国产操作系统。采用增量更新存储机制,提高保存性能。

另外,显示渲染使用VTK(OSG或Coin3d),几何内核采用OCC,网格处理采用OpenMesh或借鉴Blender的网格处理算法。

它能够支持参数化设计,数据存储,Redo/Undo,交互编辑,显示渲染,二次开发Python接口,插件开发机制等.主要采用机制实现设计目标。

(1)采用平台+插件机制

接口模块和实现模块分离,事件订阅机制,减少系统耦合,增强可扩展性。

(2)采用分层架构

明确各层的职责,底层模块不能使用高层模块,模块间不能跨层调用。例如业务模块只能使用数据层,基础Builder业务模块,基础设施模块,不能使用UI模块。

(3)跨平台开发库

采用Qt6.3跨平台UI库,C++11标准库,避免选用非快平台的三方库。采用CMake管理编译项目。

(4)基于版本号升级机制

使用灵活的基于版本号控制数据和行为升级机制和基于Impl模式的API接口。

(5)资源和代码模块分离

将资源模块和代码模块分离,通过动态加载切换资源模块实现多语言版本。

(6)加密传输和日志机制

采用OpenSSL网络加密传输,用户敏感信息加密保存。采用日志机制可以确保程序崩溃时数据的恢复问题

(7)模型存储

除采用自定义文件格式进行存储,亦可考虑数据库。例如,点云等非结构化数据采用MongoDB,用户管理等数据采用MySQL数据库存储。数据库存储采用Master/Slave架构。

对于自定义文件格式存储实现方案:

   (1)建立自己的对象结构体系模型

   (2)OM反射框架

   (3)模型数据和业务数据存储分离

   (4)各专业模型独立存储,利于多线程操作。

   (5)恢复备份和定时保存机制,防止数据丢失

   (6)项目文件采用压缩包成一个项目文件,各种数据文件:族文件,模型文件,专业数据文件,项目配置文件等。考虑多线程文件打开和保存,对象访问考虑同步情况。

1.4 技术选型

  • 后端服务

采用开源Nginx服务器对外提供服务。

  • 桌面交互设计端
  1. 采用Visual Studio2019作为集成开发环境,CMake作为项目管理和编译工具。
  2. 使用C++开发语言,采用C++17标准库,Pybind11支持Python二次开发接口。
  3. Qt6.3开发库和SARibbon开源库UI框架库.
  4. 采用gTest的单元测试框架,采用sqlite作为本地数据存储,采用boost.aiso通讯库对接前后端通讯。
  5. 显示渲染可以使用VTK,几何内核采用OCC,网格处理采用OpenMesh或借鉴Blender的网格处理算法。
  • 数据存储

本地文件采用二进制流文件压缩包,结构化数据采用MySQL或PostgreSQL,非结构化数据采用MongoDB数据库。

  • 开发工具

Visual Studio2019集成开发工具,Git版本控制,CMake项目管理和编译,Jenkins持续集成/持续部署(CI/CD)。

2.软件功能

2.1 软件登入

2.2 项目打开及工作区的设置选择

2.3 功能界面

(1)视图

(2)通用操作

(3)草图绘制

(4)明细表

(5)构件编辑器

支持自定义参数化构件库以及构件库的管理,支持本地和云端存储。

(6)建筑结构

(7)MEP管道

(8)碰撞检查

(9)协同设计

(10)开发测试

(11)自动化测试

后面会陆续介绍各个功能。

欢迎转发。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值