vs如何把c语言写的函数生成dll文件,VS2012如何把一个exe 文件转化成一个dll并导出里面的函数以供调用?...

本文介绍了一个使用Siemens NX软件进行装配编程的具体实例。通过创建新的部件文件并逐步导入刀柄、夹套及刀杆等组件,展示了如何进行精确的位置调整与尺寸匹配。最终将装配好的工具保存为指定文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*****************************************************************************

**

** Tool_Assemble_External.cpp

**

** Description:

**    Main file for the application.

**

*****************************************************************************/

/* Include files */

#include

#include

#include

using std::ostrstream;

using std::endl;

using std::ends;

using std::cerr;

#include

#include

#include

#include

#include

#include

static void ECHO(char *format, ...)

{

char msg[UF_UI_MAX_STRING_NCHARS+1];

va_list args;

va_start(args, format);

vsnprintf_s(msg, sizeof(msg), UF_UI_MAX_STRING_NCHARS, format, args);

va_end(args);

printf(msg);

UF_print_syslog(msg, FALSE);

}

#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))

static int report_error( char *file, int line, char *call, int irc)

{

if (irc)

{

char err[133];

UF_get_fail_message(irc, err);

ECHO("*** ERROR code %d at line %d in %s:\n",

irc, line, file);

ECHO("+++ %s\n", err);

ECHO("%s;\n", call);

}

return(irc);

}

//-------------------------------------------------------

void Import();                //这是我自己定义的函数;

//--------------------------------------------------------

/* Main routine */

extern void main( char argc, char *argv[] )

{

/* Initialize the API environment */

if( UF_CALL(UF_initialize()) )

{

/* Failed to initialize */

return;

}

/* TODO: Add your application code here */

Import();                        //在这里调用

/* Terminate the API environment */

UF_CALL(UF_terminate());

}

//--------------------------------------------------------------

void Import()

{

//新建一个一个prt文件

tag_t PartTAG = NULL_TAG;

UF_CALL(UF_PART_new("D:\\Program Files\\Siemens\\NX 10.0\\SECONDARY_DEVELOPMENT\\DateBase\\Temp\\Newpart.prt", UF_PART_METRIC, &PartTAG));

printf("第一步,新建一个prt部件!\n");

//导入刀柄

UF_import_part_modes_t modes;

modes.layer_mode = 0;

modes.group_mode = 0;

modes.view_mode = 0;

modes.cam_mode = false;

double dest_csys0 [ 6 ] = {1.0, 0.0, 0.0, 0.0, 0.0, 1.0};

//由三个坐标值确定的X方向和Y方向,笛卡尔坐标系,确定两个就能确定第三个坐标方向

double dest_point0 [ 3 ] = {0.0, 0.0, 0.0,};        //导入的原点

double scale0 = 1.0;                //缩放比例

tag_t group0 = NULL_TAG;

UF_CALL(UF_PART_import("D:\\Program Files\\Siemens\\NX 10.0\\SECONDARY_DEVELOPMENT\\DateBase\\ToolBase\\刀柄库\\BT40-ER32-100.prt", &modes, dest_csys0, dest_point0, scale0, &group0));

printf("第二步,导入刀柄\n");

//导入夹套

UF_import_part_modes_t modes1;

modes1.layer_mode = 0;

modes1.group_mode = 0;

modes1.view_mode = 0;

modes1.cam_mode = false;

double dest_csys1 [ 6 ] = {1.0, 0.0, 0.0, 0.0, 0.0, 1.0};

//由三个坐标值确定的X方向和Y方向,笛卡尔坐标系,确定两个就能确定第三个坐标方向

double dest_point1 [ 3 ] = {0.0, 0.0, 0.0,};        //导入的原点

double scale1 = 1.0;                //缩放比例

tag_t group1 = NULL_TAG;

UF_CALL(UF_PART_import("D:\\Program Files\\Siemens\\NX 10.0\\SECONDARY_DEVELOPMENT\\DateBase\\ToolBase\\夹套库\\ER32-10.prt", &modes1, dest_csys1, dest_point1, scale1, &group1));

printf("第三步,导入夹套!");

//导入刀杆

UF_import_part_modes_t modes2;

modes2.layer_mode = 0;

modes2.group_mode = 0;

modes2.view_mode = 0;

modes2.cam_mode = false;

double dest_csys2 [ 6 ] = {1.0, 0.0, 0.0, 0.0, 0.0, 1.0};

//由三个坐标值确定的X方向和Y方向,笛卡尔坐标系,确定两个就能确定第三个坐标方向

double dest_point2 [ 3 ] = {0.0, -50.0, 0.0,};        //导入的原点

double scale2 = 1.0;                //缩放比例

tag_t group2 = NULL_TAG;

UF_CALL(UF_PART_import("D:\\Program Files\\Siemens\\NX 10.0\\SECONDARY_DEVELOPMENT\\DateBase\\ToolBase\\刀杆库\\266RKF-D10.prt", &modes2, dest_csys2, dest_point2, scale2, &group2));

printf("第四步,导入刀杆!");

UF_CALL(UF_PART_save_as("D:\\Program Files\\Siemens\\NX 10.0\\SECONDARY_DEVELOPMENT\\DateBase\\Temp\\ToolNum.prt"));

UF_CALL(UF_PART_close(PartTAG, 0, 1));

printf("保存文件!");

}

/*****************************************************************************

**  Utilities

*****************************************************************************/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值