【中望3D 2025】配置【vs2022】开发环境

一、下载安装vs2022

vs2022下载安装https://visualstudio.microsoft.com/zh-hans/downloads/下载安装社区版即可

二、下载安装中望3D 2025

中望3d下载安装https://pan.baidu.com/s/11jh6Ym3W4oWkLkYeSEaELQ?pwd=smis

2.1 安装zw3d

安装完不要打开,直接点x关闭即可

2.2 安装许可证

把crack文件夹里的patch.exe解压后放在根目录

点击运行

然后点击应用即可

三、配置二次开发环境

3.1 安装模板

模板安装程序在zw3d的安装目录中

打开vs验证

3.2 二次开发教程

教程一:官方下载

官方教程链接https://www.zwsoft.cn/support/zw3d-devdoc

教程二:安装包里的教程

四、二次开发例子

4.1 输出helloword(自带示例)

选择模板,创建项目

不需要改动任何代码,直接生成解决方案

把生成的解决方案放到zw3d的安装目录中

打开ZW 3D 2025

验证

4.2 输出helloworld(加强版)

修改内容

修改完记得再次生成解决方案,然后把解决方案放在apilib文件夹里,重新加载

选择上面的转换按钮

新建零件,测试功能

4.3 新建小方块

新建项目

新建项,命名为create_block

在cpp文件中写入以下内容

第一部分:注册和卸载命令

是用于创建zw 3d命令的,输入create_block执行某某程序

cpp 复制代码
int RegisteBlockCommand(void){
	cvxCmdFunc("CreateBlockApi", (void*)CreateBlockApi, VX_CODE_GENERAL);
	return 0;
}

int UnloadBlockCommand(void){
	cvxCmdFuncUnload("CreateBlockApi");
	return 0;
}

第二部分:编写创建方块的代码

cpp 复制代码
int CreateBlockApi(void) {
    cvxMsgDisp("启动绘制正方体!!!");

    double length = 50.0;

    // 定义中心立方体数据结构
    szwCenterBoxData boxData = {};  // 初始化为0

    // 设置组合模式:新建特征
    boxData.combine = ZW_BOOL_BASE;

    // 基础体数量(用于布尔操作),此处为新建,所以为0或1均可,但需设为0更安全
    boxData.baseCount = 0;
    //boxData.baseList = NULL;  // 无基础体

    // 工作平面句柄:设为 NULL 使用默认基准平面(如XY平面)
    //boxData.planeHandle = NULL;

    // 是否使用自定义轴系(0=否,使用默认坐标系)
    boxData.useAxis = 0;
    //boxData.axis = NULL;  // 不使用自定义轴

    // 设置立方体尺寸(X, Y, Z方向长度)
    boxData.x = length;
    boxData.y = length;
    boxData.z = length;

    // 设置特征名称(注意:featureName 是字符数组,直接赋值)
    strcpy_s(boxData.featureName, sizeof(boxData.featureName), "myCube");
    boxData.featureName[sizeof(boxData.featureName) - 1] = '\0';  // 确保结尾

    // 设置建模公差
    boxData.tolerance = 0.02;

    // 【关键】调用 API 创建立方体
    int count = 1;
    szwEntityHandle* boxList = nullptr;

    // 检查返回结果
    ezwErrors res = ZwFeatureBoxCreateByCenter(boxData, &count, &boxList);
    // === 结果输出增强部分 ===
    if (res == ZW_API_NO_ERROR) {

        // 输出每个实体的句柄信息(可用于后续操作)
        cvxMsgDisp("创建成功!!!");

    }
    else {
        // 将错误码转换为可读字符串
        // 将错误码转换为可读字符串
		const char* errorMsg = "未知错误";
		switch (res) {
		    case ZW_API_GENERAL_ERROR:           errorMsg = "操作失败"; break;
		    case ZW_API_INVALID_INPUT:           errorMsg = "输入参数无效"; break;
		    case ZW_API_ROOT_OBJ_ACT_FAIL:       errorMsg = "根对象激活失败"; break;
		    case ZW_API_WRONG_ROOT_ENV:          errorMsg = "未在有效建模会话中"; break;
		    case ZW_API_CMMD_INIT_ERROR:         errorMsg = "命令初始化失败"; break;
		    case ZW_API_INPUT_ERROR:             errorMsg = "输入参数错误"; break;
		    case ZW_API_CMMD_EXEC_ERROR:         errorMsg = "命令执行失败"; break;
		    default:                             errorMsg = "其他错误"; break;
		}
        cvxMsgDisp(errorMsg);
    }

    // 清理返回的实体列表内存(非常重要!API 分配的内存需手动释放)
    ZwEntityHandleListFree(count, &boxList);

    return int(res);
}

create_block.cpp全部内容如下:

cpp 复制代码
#include "..\inc\ZW3D_create_blockPr.h"
#if _MSC_VER
#define snprintf _snprintf
#endif
static int CreateBlockApi(void);

int RegisteBlockCommand(void){
	cvxCmdFunc("CreateBlockApi", (void*)CreateBlockApi, VX_CODE_GENERAL);
	return 0;
}

int UnloadBlockCommand(void){
	cvxCmdFuncUnload("CreateBlockApi");
	return 0;
}

int CreateBlockApi(void) {
    cvxMsgDisp("启动绘制正方体!!!");

    double length = 50.0;

    // 定义中心立方体数据结构
    szwCenterBoxData boxData = {};  // 初始化为0

    // 设置组合模式:新建特征
    boxData.combine = ZW_BOOL_BASE;

    // 基础体数量(用于布尔操作),此处为新建,所以为0或1均可,但需设为0更安全
    boxData.baseCount = 0;
    //boxData.baseList = NULL;  // 无基础体

    // 工作平面句柄:设为 NULL 使用默认基准平面(如XY平面)
    //boxData.planeHandle = NULL;

    // 是否使用自定义轴系(0=否,使用默认坐标系)
    boxData.useAxis = 0;
    //boxData.axis = NULL;  // 不使用自定义轴

    // 设置立方体尺寸(X, Y, Z方向长度)
    boxData.x = length;
    boxData.y = length;
    boxData.z = length;

    // 设置特征名称(注意:featureName 是字符数组,直接赋值)
    strcpy_s(boxData.featureName, sizeof(boxData.featureName), "myCube");
    boxData.featureName[sizeof(boxData.featureName) - 1] = '\0';  // 确保结尾

    // 设置建模公差
    boxData.tolerance = 0.02;

    // 【关键】调用 API 创建立方体
    int count = 1;
    szwEntityHandle* boxList = nullptr;

    // 检查返回结果
    ezwErrors res = ZwFeatureBoxCreateByCenter(boxData, &count, &boxList);
    // === 结果输出增强部分 ===
    if (res == ZW_API_NO_ERROR) {

        // 输出每个实体的句柄信息(可用于后续操作)
        cvxMsgDisp("创建成功!!!");

    }
    else {
        // 将错误码转换为可读字符串
        // 将错误码转换为可读字符串
		const char* errorMsg = "未知错误";
		switch (res) {
		    case ZW_API_GENERAL_ERROR:           errorMsg = "操作失败"; break;
		    case ZW_API_INVALID_INPUT:           errorMsg = "输入参数无效"; break;
		    case ZW_API_ROOT_OBJ_ACT_FAIL:       errorMsg = "根对象激活失败"; break;
		    case ZW_API_WRONG_ROOT_ENV:          errorMsg = "未在有效建模会话中"; break;
		    case ZW_API_CMMD_INIT_ERROR:         errorMsg = "命令初始化失败"; break;
		    case ZW_API_INPUT_ERROR:             errorMsg = "输入参数错误"; break;
		    case ZW_API_CMMD_EXEC_ERROR:         errorMsg = "命令执行失败"; break;
		    default:                             errorMsg = "其他错误"; break;
		}
        cvxMsgDisp(errorMsg);
    }

    // 清理返回的实体列表内存(非常重要!API 分配的内存需手动释放)
    ZwEntityHandleListFree(count, &boxList);

    return int(res);
}

第三部分:在头文件中加入创建和卸载命令的调用函数

cpp 复制代码
#pragma once

#include "zwapi_cmd.h"
#include "zwapi_memory.h"
#include "zwapi_message.h"
#include <VxApi.h>
#include <zwapi_feature_shape.h>
#include <string.h>

/* Function declaration */
int RegisterCustomCommand(void);
int UnloadCustomCommand(void);
int RegisterTemplateCommand(void);
int UnloadTemplateCommand(void);
int RegisterFormCommand(void);
int UnloadFormCommand(void);
int RegisteBlockCommand(void);
int UnloadBlockCommand(void);

第四部分:在主程序中调用函数

第五部分:生成dll,加载到zw3d中

把生成的解决方案复制到zw 3d的apilibs文件夹下

新建零件,点击按钮,运行成功

相关推荐
woshigaowei514613 天前
VS(QT)调用Matlab函数的方法
qt·matlab·vs
【ql君】qlexcel1 个月前
Visual Studio主题、字体、快捷键、开发环境设置,自用
ide·字体·visual studio·vs·主题·快捷键·开关环境
mozun20206 个月前
VS BUG(6) LINK : fatal error LNK1158: 无法运行“rc.exe”
c++·bug·vs·链接器·资源文件
想做后端的小C7 个月前
Visual Studio 2022 UI机器学习训练模块
机器学习·vs
任小七7 个月前
VTK-8.2.0源码编译和初步使用(Cmake+VS2015+Qt5.14.2)
qt·vtk·vs
PfCoder8 个月前
C#运算符详解
java·开发语言·算法·c#·visual studio·vs·winform
PfCoder8 个月前
C# 常用数据类型
开发语言·c#·vs·winform
SunkingYang10 个月前
如何设置通过Visual Studio(VS)打开的C#项目工具集?
ide·c#·visual studio·vs·修改·工具集·平台工具集
o(╥﹏╥)10 个月前
在 Ubuntu 上安装 VS Code
linux·运维·vscode·ubuntu·vs