平台部分已全面开源 · 欢迎共建

面向船舶行业的交互式电子技术手册软件
开源社区

面向船舶行业的交互式电子技术手册软件由中国船舶工业集团第七零八研究所所属、上海中船船舶设计技术国家工程研究中心研发, 核心理念为知识化、联合化、数字化、敏捷与自主可控。当前平台部分(含核心数据库、几何及数据库开发工具)已开源。

3 大层级
核心 · 平台 · 基础
30+ 模块
开放源码工程
100% 国产
自主可控 · 安全可控
VS2019
推荐开发环境

开源模块

核心、平台与基础层 30+ 模块(工程),按依赖顺序编译即可跑通完整平台。

查看模块清单 →

从零上手

两条路径:VS2019「新人模板」向导三步生成,或跟着手册手动搭建。

打开新人手册 →

开发者文档

48 份技术文档与示例代码,涵盖数据库、几何曲面、观察者机制等主题。

浏览文档 →

社区与贡献

提交 Issue、贡献代码、完善文档,与我们一起推动面向船舶行业的交互式电子技术手册软件持续演进。

参与贡献 →

学习中心

新人手册、模块模板与示例文档配齐,从环境搭建一路做到二次开发。

开始学习 →
Features

为什么选择面向船舶行业的交互式电子技术手册软件

🧩

模块化架构

核心层 + 平台层 + 基础层三大层级,ncsKernel、ncsDB、CASISGeom 等 30+ 开源模块(工程),按依赖顺序编译。

🔄

观察者机制二次开发

OProp / OTb / OInit 等宏声明「可观察属性」,属性变化自动派发,触发 Refresh 完成 UI 联动。

🗄️

数据库驱动

基于 ncsDB / ODBC 支持 MySQL,封装模型类、Set 类、DBCtrl 类,一套骨架完成数据读写。

🧊

三维视图与 STEP 导入

NBaseGLView / GLViewer 绑定三维窗口,ncsStepCtrl::Import 一键导入 STEP 模型。

⚡

新人模板一键生成(新人学习上手迅速)

VS2019 NuCASWizard 向导三步生成带菜单挂载的最小可运行扩展模块,降低上手门槛。

🛡️

国产自主可控

知识化、联合化、数字化、敏捷、自主可控(K-CASA)五大理念贯穿平台架构与开发路线。

Core Philosophy

核心理念

面向船舶行业的交互式电子技术手册软件的核心理念缩写为「K-CASA」,指导软件的架构设计与开放路线。

Knowledgebased

知识化

将工业知识与设计经验融入设计软件,让软件承载行业 Know-how。

Union

联合化 · 开源

联合共建、开放共享,通过开源社区汇聚开发者力量,共同完善软件。

Cyberspace

数字化

构建虚拟体再落地为实体,实现设计与制造的数字孪生闭环。

Agile

敏捷

从传统的需求—分析—测试流程,转向快速迭代、持续完善、按反馈改进。

Safe & Controllable

自主可控

支撑船舶设计制造相关技术与系统的自主可控,保障安全与可控。

K-CASA

理念驱动,开放共赢

五大理念贯穿面向船舶行业的交互式电子技术手册软件的平台架构与开发路线,指引我们持续构建更完善的国产船舶设计软件生态。

Architecture

开源架构与模块体系

面向船舶行业的交互式电子技术手册软件开源部分分为核心、平台与基础层三大层级,其中基础层包含几何与几何接口,每个层级由若干模块(工程)组成。

CORE

核心层

系统核心模型架构与基础设施

ncsKernel 核心架构库

最基础的模型架构:模型本体 CObj、代理 GModule、模型树、智能指针 HObj/HModule、模型队列 HObjs。

ncsBasic 算法 · 控件库

核心模型算法与控件库,由 ncsBasicObj(对象)、ncsBasicCtrl(控件)、ncsBasicFunc(算法)三个包组成。

BaseCtrl 界面控件库

最基础的界面控件库,提供永久类的创建、初始化等方法,随模块提供 TestBaseCtrl 验证工程。

ncsStore 存储模块

负责文件的存储与读写。

TestKernel 测试

随 ncsBasic 提供的核心层程序验证工程。

PLATFORM

面向船舶行业的交互式电子技术手册软件平台

数据库与界面控制扩展

ncsDB 数据库核心

关系型数据库模块核心层,定义数据库连接。

ncsDBCtrl 数据库控制

继承 ncsDB,实现具体的数据库驱动。

ncsDBTest 测试

数据库测试层,验证数据库模块功能。

AdvCtrl 界面扩展

BaseCtrl 基础上的界面控制扩展库,含 Property 属性窗口等,拓展为 ProCtrl。

ncsFunc 功能包

封装核心算法与业务逻辑。

CASISComm 通信中间件

通信中间件模块,由 CASISComm、casiscomm、CommFunc、CommObj 组成,几何等模块已与其解耦。

TestAdv 测试

平台层程序验证工程。

BASE

基础层

几何内核与几何接口

GEOMETRY

几何

曲线曲面与实体造型内核

CASISGeom 几何核心

几何建模核心:几何对象 GeomObj、几何数据 GeomData、几何控制 GeomCtrl、几何接口 ncsGI、OpenGL 端口 portGL,派生层为 AdvGeom。

CASISDraw 绘图模块

二维绘图与显示,含绘图对象 DrawObj、绘图控制 DrawCtrl,派生层为 AdvDraw。

CASISNurbs 曲线曲面

NURBS 曲线曲面造型,含 NurbsObj、NurbsCtrl,派生层为 AdvNurbs。

CASISSolid 实体造型

三维实体造型,含 SolidObj、SolidCtrl,派生层为 AdvSolid。

INTERFACE

几何接口

与外部几何格式互换的导入 / 导出接口

ncsDXF DXF 接口

DXF 文件的导入与导出接口,随模块提供 DXFTest 验证工程。

ncsStep STEP 接口

STEP 模型的导入与导出接口,随模块提供 TestStep 验证工程。

面向船舶行业的交互式电子技术手册软件社区活力

1
贡献者
1
社区用户
1
开源模块
1
技术文档
1
需求 & 问题
查看贡献详情

无论你是软件开发者,还是对国产工业软件充满热情的技术爱好者,都欢迎你提交 Issue、贡献代码、完善文档,与我们一起推动面向船舶行业的交互式电子技术手册软件的持续演进。

前往参与贡献
Learning

学习

从零上手面向船舶行业的交互式电子技术手册软件:新人培训手册、扩展模块模板与具体功能示例文档都在这里,配合视频教学与常见问题入口,边看边做。

Tutorials

教程与资料

VIDEO

视频教学

从环境搭建、模块创建到运行调试的全流程录屏演示,跟着视频一步步操作,零基础也能快速上手。

观看视频
DOCX

新人培训手册

Word 版完整手册:模板三步、MFC 基础与调试快捷键、手动创建模块、观察者机制、进阶实战。

下载手册
DOCX

基于VS2019的扩展模块模板

模板的安装位置、使用方法与生成内容说明,配合 NuCASWizard 使用。

下载文档
PPTX

面向船舶行业的交互式电子技术手册软件介绍

平台定位、模块组成与整体能力介绍,快速建立对系统的全局认识。

下载文档
MD

新增菜单栏

ModuleUnit + ADD_SYSMENU,把自定义菜单挂到宿主「开始」面板。

打开文档
MD

通用数据库类

模型类 + Set 类 + DBCtrl 类的完整数据读写骨架,含 ODBC 配置。

打开文档
MD

ogrid 界面

OFindResource + OGrid + DBBrowseTable,构建数据库表格展示界面。

打开文档
Need Help

遇到问题?

FAQ

常见问题及解决方法

编译报错、模块注册、数据库连接等高频问题与解决办法。

查看 FAQ
REPO

提 Issue

文档与 FAQ 都没覆盖的问题,直接在开源仓库提交,社区会跟进。

去提问题
Development

开发

面向二次开发者的工程指南:开发环境、开发工具、开发流程、协作准则。

Environment

开发环境

Tools

开发工具下载(VS2019)

Workflow

开发流程

Code of Conduct

开发行为准则

Documents

文档

技术文档来自仓库 Document/ 目录,按模块分组;另含开源模块清单与新人手册,从零跑通第一个模块。

文档总览

以下文档均来自仓库 Document/ 目录,按所属模块分组,点击卡片可直接打开或下载对应文件。

说明:文档链接使用相对路径 Document/…。把站点文件放在仓库根目录即可直接生效; 若站点位于子目录,全局替换成 ../Document/…。

入门与开源

来源:Document/DemoDocument/

MD

README.md

开源项目总览:目录说明、环境依赖与快速上手步骤。

打开文档
DOCX

面向船舶行业的交互式电子技术手册软件开源说明

开源范围、开源协议与使用约定,说明平台部分开源的具体边界。

下载文档
PPTX

面向船舶行业的交互式电子技术手册软件介绍

平台定位、模块组成与整体能力介绍,快速建立对系统的全局认识。

下载文档
DOCX

基于VS2019的扩展模块模板

NuCASWizard 模板的安装位置、使用方法与生成内容说明。

下载文档
ZIP

moduletemplet.zip

VS2019 扩展模块模板包,放到 ProjectTemplates 目录即可在新建项目时选择。

下载模板
PDF

navicat安装教程

数据库客户端 Navicat 的安装与连接配置,配合 MySQL / ODBC 使用。

下载文档

平台与架构

来源:Document/NUCASDocument/

DOC

面向船舶行业的交互式电子技术手册软件设计文档(系统架构)

核心层 / 平台层的分层结构、模块依赖与调用关系。

下载文档
DOC

面向船舶行业的交互式电子技术手册软件设计文档(顶层设计)

顶层设计思路、总体技术方案与关键设计决策。

下载文档
DOC

面向船舶行业的交互式电子技术手册软件顶层方案设计报告

面向船舶前期设计集成平台的整体方案设计报告。

下载文档
DOC

面向船舶行业的交互式电子技术手册软件需求分析文档(系统平台)

系统平台层的功能需求、性能需求与约束条件。

下载文档
DOC

面向船舶行业的交互式电子技术手册软件开发常见错误

二次开发中高频踩坑与排查办法,编译、链接、注册问题速查。

下载文档
DOC

面向船舶行业的交互式电子技术手册软件规范化准则

命名约定、目录结构与代码风格要求,贡献代码前请先阅读。

下载文档
DOCX

面向船舶行业的交互式电子技术手册软件登录使用手册

客户端登录、授权与日常使用操作说明。

下载文档
DOC

建立数据库工程

创建数据库工程、配置 ODBC 数据源与建表流程。

下载文档
DOC

新模型建立说明

新增数据模型(CObj 派生类)的步骤与字段声明规范。

下载文档
DOC

面向船舶行业的交互式电子技术手册软件打包程序

安装程序打包流程与 InstallShield 配置要点。

下载文档
DOC

面向船舶行业的交互式电子技术手册软件发布程序

版本发布流程、发布件组成与版本管理规则。

下载文档
DOC

网络版配置

网络版部署、加密与服务端配置说明。

下载文档
DOC

帮助文件制作说明

模块帮助文档的制作与挂载方式。

下载文档
XLSX

面向船舶行业的交互式电子技术手册软件资源

模块、菜单 ID、资源编号等资源清单汇总表。

下载文档

内核与建模

来源:Document/ncsKernelDocument/

DOC

模型架构设计文档

内核对象模型(CObj / HObj)的架构设计与实现说明。

下载文档
DOC

模型架构需求分析文档

内核模型层的需求来源与设计约束。

下载文档
DOCX

面向船舶行业的交互式电子技术手册软件消息响应机制

消息派发、观察者注册与属性联动的底层机制说明。

下载文档
DOC

面向船舶行业的交互式电子技术手册软件设计文档(宏设计文档)

宏命令体系的设计与执行流程。

下载文档
DOC

面向船舶行业的交互式电子技术手册软件设计文档(相关建模)

关联建模能力的设计说明与典型用法。

下载文档
DOC

宏命令单元测试

宏命令模块的单元测试计划与用例说明。

下载文档

几何与曲面

来源:Document/CASISGeomDocument/、CASISNurbsDocument/、CASISSurfDocument/

DOC

面向船舶行业的交互式电子技术手册软件设计文档(几何包)

几何内核包的整体设计,几何对象与算法组织方式。

下载文档
DOC

几何包设计文档

几何包内部结构设计、类关系与接口说明。

下载文档
DOC

几何包需求分析文档

几何包的需求来源、功能边界与验收标准。

下载文档
PDF

面向船舶行业的交互式电子技术手册软件设计文档(NURBS曲面求交)

NURBS 曲面求交算法设计与实现。

下载文档
PDF

面向船舶行业的交互式电子技术手册软件设计文档(NURBS等照度线)

NURBS 等照度线算法设计与实现。

下载文档
DOC

大表面包设计文档

大表面(CASISSurf)模块的设计与算法说明。

下载文档

专业模块

来源:Document/CASISDrawDocument/、CASISBasicDocument/、CASISElmeDocument/、CASISGadesDocument/、LinesDBDocument/、IETMOSDocument/

DOC

CASISDraw需求规格说明

制图模块的功能需求与性能指标。

下载文档
DOC

制图设计文档

制图模块的设计方案与核心流程。

下载文档
DOC

面向船舶行业的交互式电子技术手册软件基本信息模块需求规格说明

基本信息(CASISBasic)模块的需求说明。

下载文档
DOC

桌面系统设计软件(用户手册)

桌面系统(CASISElme)模块的最终用户操作手册。

下载文档
DOCX

桌面系统软件设计说明

桌面系统模块的设计说明与结构组织。

下载文档
DOC

舱室布置设计文档

舱室布置(CASISGades)模块的设计说明。

下载文档
DOCX

综合性能计算系统设计方案

综合性能(LinesDB)模块的系统设计方案。

下载文档
DOC

综合性能计算系统需求规格说明书

综合性能模块的需求规格与计算范围。

下载文档
DOCX

航行性能经验公式

航行性能计算所使用的经验公式汇总。

下载文档
DOCX

IETM研制任务书 v2

IETM 项目的研制任务书与交付要求。

下载文档

文档模板

来源:Document/DemoDocument/各类文档模板/

模板集

各类文档模板(24 份)

系统规格说明、设计说明、数据库设计说明、测试计划/说明/报告、用户手册、安装手册、研制总结等国家标准模板。

查看目录
PPTX

软件工程文档编写要点

各类软件工程文档的编写要点与评审关注项。

下载文档
DOCX

新人培训

面向新晋开发者的培训资料,含 MFC 基础、解决方案配置与二次开发入门。

下载文档

功能示例

来源:Document/DemoDocument/具体功能示例/

MD

新增菜单栏

ModuleUnit + ADD_SYSMENU,把自定义菜单挂到宿主「开始」面板,含资源属性说明。

打开文档
MD

通用数据库类

模型类 + Set 类 + DBCtrl 类的完整数据读写骨架,含 ODBC 配置步骤。

打开文档
MD

ogrid界面

OFindResource + OGrid + DBBrowseTable,构建数据库表格展示界面。

打开文档

开源模块清单

来源:开源仓库(Gitcode)· 核心层 5 + 平台层 7 + 基础层 6,共 30+ 可编译工程

📌
建议编译顺序:核心层 ncsKernel → ncsBasic → BaseCtrl → ncsStore; 平台层 ncsDB → ncsDBCtrl → AdvCtrl → ncsFunc; 基础层 CASISGeom → CASISDraw → CASISNurbs → CASISSolid → ncsDXF → ncsStep。

ncsKernel

核心层

最基础的模型架构:模型本体 CObj、代理 GModule、模型树、智能指针 HObj/HModule、模型队列 HObjs。

C++ 核心架构库 编译顺序 1

NcsBasic

核心层

核心模型算法与控件库(含虚拟控件),由 NcsBasicCtrl、NcsBasicFunc、NcsBasicObj 三个包组成。

C++ 算法 · 控件库 编译顺序 2

BaseCtrl

核心层

最基础的界面控件库,提供永久类的创建、初始化等方法。

C++ 界面控件库 编译顺序 3

ncsStore

核心层

负责文件的存储与读写。

C++ 存储模块 编译顺序 4

ncsDB

平台层

关系型数据库模块核心层,定义数据库连接。

C++ 数据库核心 编译顺序 5

ncsDBCtrl

平台层

继承 ncsDB,实现具体的数据库驱动。

C++ 数据库控制 编译顺序 6

AdvCtrl

平台层

BaseCtrl 基础上的界面控制扩展库,含 Property 属性窗口等,拓展为 ProCtrl。

C++ 界面扩展 编译顺序 7

ncsFunc

平台层

封装核心算法与业务逻辑。

C++ 功能包 编译顺序 8

CASISComm

平台层

通信中间件模块,由 CASISComm、casiscomm、CommFunc、CommObj 组成,几何等模块已与其解耦。

C++ 通信中间件 可独立编译

TestKernel / TestBaseCtrl

测试

核心层对应的测试模块,用于验证 ncsKernel 与 BaseCtrl 的功能。

C++ 核心层测试

ncsDBTest

测试

数据库测试层,验证数据库模块功能。

C++ 数据库测试

TestAdv

测试

平台层测试模块。

C++ 平台层测试

CASISGeom

基础层

几何建模核心:几何对象 GeomObj、几何数据 GeomData、几何控制 GeomCtrl、几何接口 ncsGI、OpenGL 端口 portGL。

C++ 几何内核 编译顺序 9

CASISDraw

基础层

二维绘图与显示模块,含绘图对象 DrawObj、绘图控制 DrawCtrl,派生层为 AdvDraw。

C++ 几何内核 编译顺序 10

CASISNurbs

基础层

NURBS 曲线曲面造型,含 NurbsObj、NurbsCtrl,派生层为 AdvNurbs。

C++ 几何内核 编译顺序 11

CASISSolid

基础层

三维实体造型,含 SolidObj、SolidCtrl,派生层为 AdvSolid。

C++ 几何内核 编译顺序 12

ncsDXF

基础层

DXF 文件的导入与导出接口,随模块提供 DXFTest 验证工程。

C++ 几何接口 编译顺序 13

ncsStep

基础层

STEP 模型的导入与导出接口,随模块提供 TestStep 验证工程。

C++ 几何接口 编译顺序 14

新人手册 · 从零到第一个模块

两条上手路径:用「新人模板」向导一键生成,或按手册手动搭建。下面先看模板,再讲原理。

下载完整新人手册(Word) 含 MFC 基础 · 新建解决方案及属性配置 · 二次开发(观察者机制),附操作截图
NuCASWizard · VS2019 扩展模块模板

新人模板:三步生成可运行模块

在 VS2019 新建项目时选择「NuCAS New Person Module」,向导会让你填三个字段,其余代码与资源配置自动生成。

1
中文显示名称

模块在系统里显示的中文名,写入 DECLARE_TEST 第二参

2
菜单项名称

「开始」菜单里出现的菜单项文字

3
菜单资源 ID

菜单资源 ID,对应 ADD_SYSMENU 与 ON_COMMAND

向导自动生成的核心代码(以「外板面积计算」模块为例)

// pch.h —— 模块身份(由向导自动填写)
#define SYSNAME "MyModule"          // 模块 ID,须与 .dlc 文件名一致
#define NCS_FREEMODULE

// Test.cpp —— 模块注册与菜单挂载
DECLARE_TEST("MyModule", "外板面积计算", MyModule)   // 英文名 / 中文名 / id
BEGIN_UPDATE(MyTestUnit)
  ADD_SYSMENU(IDR_面向船舶行业的交互式电子技术手册软件_MENU);      // 菜单资源 ID
  POP_PANE("Start")
END_UPDATE()
下载 VS2019 模板(.zip) 把 zip 压缩包放到 C:\Users\用户名\Documents\Visual Studio 2019\Templates\ProjectTemplates 即可在 VS2019 中选择模板

MFC 基础 · 调试快捷键

01 MFC 基础

两种经典程序形态,是看懂模块代码的前提。

  • 基于 Dialog 对话框:CWinApp 是程序入口,CDialog 派生类管理对话框资源与控件消息。
  • 基于 MDI 多文档:在视图类 OnDraw 中绘制,在文档类中存储数据。
重要思路:数据是核心,算法是关键,成功靠应用界面。

02 调试快捷键

MFC / VS2019 常用调试操作速查。

操作快捷键说明
设置断点F9代码行左侧点击或按 F9
开始调试F5启动并停在断点处
逐语句F11进入函数内部
逐过程F10执行当前行,不进入函数
跳出Shift+F11执行完当前函数返回调用处

手动创建模块(原理)

1 新建解决方案

新建 MFC DLL 项目,向导选「MFC 扩展 DLL」。

  1. 新建项目 → MFC DLL
  2. DLL 类型选择 MFC 扩展 DLL
  3. 位置设为面向船舶行业的交互式电子技术手册软件主目录

2 添加属性表

在属性管理器中添加主目录的 .props 文件。

  1. Debug|x64 → NuCASDebugMacro_x64.props
  2. Release|x64 → NuCASReleaseMacro_x64.props
  3. 输出目录 $(NuCASExePath)/

3 更改属性

关键属性与平台按需切换。

  1. 目标文件扩展名 .dlc(图形界面模块)
  2. 字符集 多字节字符集
  3. 附加库目录 $(NuCASLibPath)/
  4. 调试命令 $(OutDir)NuCAS.exe

4 编译并注册

生成 .dlc 后在宿主里注册。

  1. 重新生成解决方案
  2. 运行 NuCAS.exe
  3. 菜单「编辑模块 → 重新注册」

二次开发 · 观察者机制

03 核心思路

以「外板面积计算」为例,讲清面向船舶行业的交互式电子技术手册软件动态加载与数据联动。

  • 用 OProp / OTb 宏声明「可观察属性」与对应回调
  • 用 OInit 把绑定注册到框架通知系统
  • 属性变化时框架自动派发,触发 Refresh / Flush_Refresh 完成 UI 刷新或联动更新

04 数据层示例

外板面积计算的对象类,继承自 CObj。

class MyShellCalc : public CObj {
  DECLARE_OBJ(MyShellCalc)
  VARIABLE(double, Fore);    // 前端
  VARIABLE(double, Aft);     // 后端
  VARIABLE(double, Bottom);  // 下端
  VARIABLE(double, Top);     // 上端
  VARIABLE(double, Area);    // 面积
  VARIABLE(double, Length);  // 周长
};

进阶实战 · 新手教程2

在「新手教程1」MFC 基础上,用观察者机制完成三维视图、文件导入与完整业务模块。以「轮轨计算(MyWheelCalc)」为例。

步骤
  1. 属性页 C/C++ 常规 → 附加包含目录加入 ../CasisInc/CASISGeom
  2. 链接器输入 → 附加依赖项加入 CASISGeom.lib GeomObj.lib GeomCtrl.lib
  3. MyObserve.cpp 引入 #include "BaseGLView.h",声明资源观察者
  4. 菜单响应里调用 calc.Open() 打开窗口,重新生成并运行
核心代码
#include "BaseGLView.h"
class MoXingFindResource : public OFindResource {
  DECLARE_OBSERVE(MoXingFindResource)
protected:
  DECLARE_WRITE_MAP()
  BOOL OnMyWheelCalc(const HObj& o) const;
};
IMPLEMENT_OBSERVE(MoXingFindResource)
BEGIN_WRITE_MAP(MoXingFindResource, OFindResource)
  ON_WRITE(MyWheelCalc, OnMyWheelCalc)
END_WRITE_MAP()
BOOL MoXingFindResource::OnMyWheelCalc(const HObj& /*o*/) const {
  m_FrameClass = RUNTIME_CLASS(NChildWnd);
  m_ViewClass  = RUNTIME_CLASS(NBaseGLView);
  return TRUE;
}
// 菜单响应里打开三维窗口:
calc.Open();
步骤
  1. 包含目录加 ../CasisInc/ncsTest ../CasisInc/ncsStep;链接加 ncsGL.lib ncsStep.lib
  2. 数据类加字段:OBJ(HObj, STEP),SERIALIZE_WITHVER(STEP, 2),OBSERVE(STEP) UPDATEOBJ(STEP)
  3. 资源视图加按钮并设 ID_STEP
  4. 菜单响应里调用 ncsStepCtrl::Import(path) 导入
核心代码
class LoadStepGLViewer : public GLViewer {
  DECLARE_OBSERVE(LoadStepGLViewer)
protected:
  DECLARE_WRITE_MAP()
  BOOL OnMyWheelCalc(const HObj& obj) const;
};
IMPLEMENT_OBSERVE(LoadStepGLViewer)
BEGIN_WRITE_MAP(LoadStepGLViewer, GLViewer)
  ON_WRITE(MyWheelCalc, OnMyWheelCalc)
END_WRITE_MAP()
BOOL LoadStepGLViewer::OnMyWheelCalc(const HObj& o) const {
  HMyWheelCalc obj = o;
  Write(obj->STEP());
  return TRUE;
}
// 菜单响应(POBJUnit::OnOurStep):
HObj obj = ncsStepCtrl::Import(path);
HMyWheelCalc calc = GetObj();
calc->STEP(obj);  calc.Update();
步骤
  1. 数据类 MyWheelCalc 继承 CObj,用 VARIABLE 声明字段
  2. 用 OMaxMin / OProp / OTb / OInit 观察者宏声明属性联动
  3. 菜单 cpp 中用 POBJUnit(CObjUnit) + WheelRegUnit(ORegUnit) 挂载单元
  4. 重新生成解决方案并运行,在宿主里重新注册
核心代码
// 包围盒联动:导入 STEP 后自动算外接盒
class WheelCalcMaxMin : public OMaxMin {
  DECLARE_OBSERVE(WheelCalcMaxMin)
protected:
  DECLARE_WRITE_MAP()
  BOOL OnWheelCalc(const HObj& obj) const;
};
IMPLEMENT_OBSERVE(WheelCalcMaxMin)
BEGIN_WRITE_MAP(WheelCalcMaxMin, OMaxMin)
  ON_WRITE(MyWheelCalc, OnWheelCalc)
END_WRITE_MAP()
BOOL WheelCalcMaxMin::OnWheelCalc(const HObj& o) const {
  HMyWheelCalc obj = o;
  gBox box = obj->STEP().MaxMin();
  m_Box = box;
  return TRUE;
}

文档持续完善中,发现问题欢迎到 社区 反馈 Issue 或直接提交修订。

Open Source

开源项目

面向船舶行业的交互式电子技术手册软件开源项目与模块工程总览:有哪些项目、代码在哪里、可以从哪里开始参与。

最基础的模型架构:模型本体 CObj、代理 GModule、模型树、智能指针 HObj/HModule、模型队列 HObjs。

C++核心架构库编译顺序 1
开源协议 —

核心模型算法与控件库(含虚拟控件),由 NcsBasicCtrl、NcsBasicFunc、NcsBasicObj 三个包组成。

C++算法 · 控件库编译顺序 2
开源协议 —

最基础的界面控件库,提供永久类的创建、初始化等方法。

C++界面控件库编译顺序 3
开源协议 —

负责文件的存储与读写。

C++存储模块编译顺序 4
开源协议 —

关系型数据库模块核心层,定义数据库连接。

C++数据库核心编译顺序 5
开源协议 —

继承 ncsDB,实现具体的数据库驱动。

C++数据库控制编译顺序 6
开源协议 —

BaseCtrl 基础上的界面控制扩展库,含 Property 属性窗口等,拓展为 ProCtrl。

C++界面扩展编译顺序 7
开源协议 —

封装核心算法与业务逻辑。

C++功能包编译顺序 8
开源协议 —

通信中间件模块,由 CASISComm、casiscomm、CommFunc、CommObj 组成,几何等模块已与其解耦。

C++通信中间件可独立编译
开源协议 —
Downloads

下载中心

面向船舶行业的交互式电子技术手册软件开源平台的下载资源汇总。点击下方按钮即可获取源码包、新人培训手册与开发模板。

其他资料

与仓库根目录同级的配套文件,点击卡片右下角按钮下载。

DOCX

新人培训手册

Word 版新人手册:NuCASWizard 模板三步、MFC 基础与调试快捷键、手动创建模块、观察者机制、进阶实战。

新人培训手册.docx · 约 7.3 MB 下载
ZIP

VS2019 新人模板

面向船舶行业的交互式电子技术手册软件扩展模块项目模板,放入 VS2019 项目模板目录后,可在「新建项目」中直接选择。

NuCAS_NewPerson_Template.zip · 约 10.3 MB 下载
DOCX

面向船舶行业的交互式电子技术手册软件开源说明

开源范围、许可证与目录结构说明,了解哪些部分已开源、可以怎样参与共建。

面向船舶行业的交互式电子技术手册软件开源说明.docx · 约 94 KB 下载
FAQ

常见问题及解决方法

环境搭建、编译链接、数据库连接与二次开发里最容易卡住的几件事,点开每一条看具体步骤。没找到答案可以往下直接提问。

共 8 个问题

  1. 开源时未完整上传调试文件,因此缺少部分 dll
  2. 请使用 Release / 开始运行,不要进行调试运行(F5)
  3. 确认附加库目录 $(NuCASLibPath)/ 与输出目录 $(NuCASExePath)/ 配置正确
  1. 下载 NuCAS_NewPerson_Template.zip(不要解压)
  2. 放到 C:\Users\用户名\Documents\Visual Studio 2019\Templates\ProjectTemplates
  3. 重启 VS2019,新建项目时搜索「NuCAS New Person Module」
  1. 在属性管理器为 Debug|x64 / Release|x64 添加主目录的 .props 属性表
  2. 附加包含目录补上所需模块(如 ../CasisInc/ncsDB、../CasisInc/CASISGeom)
  3. 链接器输入补上对应 .lib(如 ncsDB.lib、ncsStep.lib)
  1. 解压 MARICDB2008.zip
  2. 将整个 MARICDB2008 文件夹放置到 C:\Windows 目录下
  3. 再打开「ODBC 数据源管理程序(64 位)」新建数据源并测试链接
  1. 确认安装的是 MySQL ODBC 5.3.10 驱动
  2. 使用64 位 ODBC 数据源管理程序(软件为 Windows x64)
  3. 先用 Navicat 确认 MySQL 服务可正常链接,再排查数据源配置
  1. 附加包含目录加入 ../CasisInc/CASISGeom,链接器输入加入 CASISGeom.lib、GeomObj.lib、GeomCtrl.lib
  2. 引入 #include "BaseGLView.h",声明资源观察者(如 MoXingFindResource)
  3. 在观察者里指定 m_FrameClass = RUNTIME_CLASS(NChildWnd)、m_ViewClass = RUNTIME_CLASS(NBaseGLView)
  4. 菜单响应里调用 calc.Open() 打开窗口,重新生成并运行

看手册里的完整代码

  1. 包含目录加 ../CasisInc/ncsTest、../CasisInc/ncsStep,链接加 ncsGL.lib、ncsStep.lib
  2. 数据类加字段:OBJ(HObj, STEP)、SERIALIZE_WITHVER(STEP, 2)、OBSERVE(STEP)、UPDATEOBJ(STEP)
  3. 资源视图加按钮并设 ID_STEP
  4. 菜单响应里调用 ncsStepCtrl::Import(path),把返回对象写回数据类并 Update()

看手册里的完整代码

  1. 数据类继承 CObj,用 VARIABLE 声明字段
  2. 用 OMaxMin / OProp / OTb / OInit 观察者宏声明属性联动,在 ON_WRITE 里写联动逻辑
  3. 菜单 cpp 中用 POBJUnit(CObjUnit) + 自定义 ORegUnit 挂载单元
  4. 重新生成解决方案并运行,在宿主里重新注册模块

看手册里的完整代码

没有匹配的问题 换个关键词再试,或者直接提问,也可以到 开源仓库 提交 Issue。
Still Stuck

没找到答案?

把现象、报错信息和已经试过的办法写清楚,社区按这些线索帮你定位问题。

ASK

提问题

在对话框里描述你遇到的问题,提交后可一键复制到开源仓库。

去提问题
REPO

提交 Issue

文档与 FAQ 都没覆盖的问题,直接在开源仓库提交,社区会跟进。

前往仓库
Ask

提问题

把遇到的问题写在下面的对话框里。社区会按问题跟进,你也可以一键复制到开源仓库提交 Issue,让更多人看到答案。

提问对话框 公开提问 · 请勿粘贴涉密内容
  • 请描述你遇到的问题:现象是什么、报错的原文是什么、已经试过哪些办法。信息越具体,定位越快。
0 / 800
面向船舶行业的交互式电子技术手册软件 logo

登录面向船舶行业的交互式电子技术手册软件开源社区

登录后可同步学习进度、提交 Issue、参与开源共建。

忘记密码?

还没有账号? 注册