打开VS2013

点击新建,选择MFC DLL

点击确定

点下一步

什么都不改,直接点完成

进来之后先编译一下,看是否编译成功

打开项目属性,更改这几处

$(UGII_BASE_DIR)\ugopen

libufun.lib
libufun_cae.lib
libufun_cam.lib
libufun_die.lib
libufun_vdac.lib
libufun_weld.lib
libnxopencpp.lib
libnxopencpp_annotations.lib
libnxopencpp_assemblies.lib
libnxopencpp_bodydes.lib
libnxopencpp_cae.lib
libnxopencpp_cam.lib
libnxopencpp_diagramming.lib
libnxopencpp_diagramminglibraryauthor.lib
libnxopencpp_die.lib
libnxopencpp_display.lib
libnxopencpp_drafting.lib
libnxopencpp_drawings.lib
libnxopencpp_facet.lib
libnxopencpp_features.lib
libnxopencpp_fields.lib
libnxopencpp_formboard.lib
libnxopencpp_gateway.lib
libnxopencpp_geometricanalysis.lib
libnxopencpp_geometricutilities.lib
libnxopencpp_issue.lib
libnxopencpp_layer.lib
libnxopencpp_layout2d.lib
libnxopencpp_markup.lib
libnxopencpp_mechanicalrouting.lib
libnxopencpp_mechatronics.lib
libnxopencpp_mfg.lib
libnxopencpp_modldirect.lib
libnxopencpp_motion.lib
libnxopencpp_openxml.lib
libnxopencpp_optimization.lib
libnxopencpp_options.lib
libnxopencpp_partfamily.lib
libnxopencpp_pdm.lib
libnxopencpp_physmat.lib
libnxopencpp_placement.lib
libnxopencpp_plas.lib
libnxopencpp_positioning.lib
libnxopencpp_preferences.lib
libnxopencpp_report.lib
libnxopencpp_routing.lib
libnxopencpp_shapesearch.lib
libnxopencpp_sheetmetal.lib
libnxopencpp_shipdesign.lib
libnxopencpp_sim.lib
libnxopencpp_tooling.lib
libnxopencpp_userdefinedobjects.lib
libnxopencpp_userdefinedtemplate.lib
libnxopencpp_validate.lib
libnxopencpp_visualreporting.lib
libnxopencpp_weld.lib
libugopenint.lib
libugopenint_cae.lib
libugopenint_cam.lib
libnxopenuicpp.lib

然后点确定

添加头文件

添加ufusr入口函数和卸载方式

 extern "C" DllExport void  ufusr(char *param, int *retcod, int param_len)
{ if (UF_initialize())
{
/* Failed to initialize */
return;
}
// The following method shows the dialog immediately UF_terminate();
} extern "C" DllExport int ufusr_ask_unload()
{
return (UF_UNLOAD_UG_TERMINATE);
//return (UF_UNLOAD_IMMEDIATELY);
//return UF_UNLOAD_SEL_DIALOG;
}

将项目改成64位的

打开配置管理器

编译项目,成功

添加对话框,找到资源视图,右键添加资源

选择Dialog,点新建

添加类

对话框右键-添加类

随便取名字,CFirstMFCDialog,点完成

编译项目成功

添加对话框初始化虚函数

对话框点右键-添加类向导

然后点确定

在编译项目成功

添加头文件

在去ufusr入口函数里获取UG窗口句柄,设置对话框。写的内容固定格式

     AFX_MANAGE_STATE(AfxGetStaticModuleState());

     HWND UGHwnd = (HWND)UF_UI_get_default_parent();//获取UG窗口句柄

     CWnd *ugwindow = CWnd::FromHandle(UGHwnd);

     CFirstMFCDialog *dlg = new CFirstMFCDialog(ugwindow);

     if (dlg != NULL)

     {

         BOOL ret = dlg->Create(IDD_DIALOG1, ugwindow);

         dlg->ShowWindow(SW_SHOW);

         //dlg->SetWindowPos(ugwindow, 300, 220, 200, 200, SWP_NOSIZE);//设置对话框固定位置

     }

在编译项目成功

打开UG去调对话框就出来了

提示,因为选择的卸载方式,需求每次修改代码重新编译,都要关闭UG。来卸载掉。

截止到这个MFC+NX二次开发的这个环境搭建就结束了

下面做一个实例。

选择位置,创建块。(大概演示,不在详细写步骤)

对话框

对话框初始化代码

 BOOL CFirstMFCDialog::OnInitDialog()
{
CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 //对话框初始值
m_edit1.SetWindowText("");
m_edit2.SetWindowText("");
m_edit3.SetWindowText(""); return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}

点构造器代码

 void CFirstMFCDialog::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码 UF_initialize(); UF_UI_lock_ug_access(UF_UI_FROM_CUSTOM);//对话框加锁 char sCue[] = "点构造器";
UF_UI_POINT_base_method_t base_method = UF_UI_POINT_INFERRED;
tag_t tPoint = NULL_TAG;
double sBasePoint[];
int iResponse;
UF_UI_point_construct(sCue, &base_method, &tPoint, sBasePoint, &iResponse); UF_UI_unlock_ug_access(UF_UI_FROM_CUSTOM);//对话框解锁 UF_terminate();
}

点确定的代码

 void CFirstMFCDialog::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CDialogEx::OnOK(); UF_initialize(); //获取对话框里的输入值
CString length;
m_edit1.GetWindowTextA(length); CString width;
m_edit2.GetWindowTextA(width); CString high;
m_edit3.GetWindowTextA(high); //转换
//CString转char*
USES_CONVERSION;
char* length1 = T2A(length.GetBuffer());
length.ReleaseBuffer(); char* width1 = T2A(width.GetBuffer());
width.ReleaseBuffer(); char* high1 = T2A(high.GetBuffer());
high.ReleaseBuffer(); UF_FEATURE_SIGN sign = UF_NULLSIGN;
char * edge_len[] = { length1, width1, high1 };
tag_t blk_obj_id = NULL_TAG;
UF_MODL_create_block1(sign, sBasePoint, edge_len, &blk_obj_id); UF_terminate();
}

Caesar卢尚宇

2019年7月13日

NX二次开发CreateDialog函数在UI.hxx文件和WinUser.h中的冲突【转载】

https://www.cnblogs.com/nxopen2018/p/11811708.html

NX二次开发-基于MFC界面对话框与NX交互的开发的更多相关文章

  1. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  2. vs2012开发基于MFC的ActiveX控件

    1.新建工程 2.一直点击下一步,直到出现一下界面,注意红色标注选项,点击完成. 3.进入工程的属性界面,设置工程属性 4.添加对话框资源及其他控件,添加对话框类, 5.设置对话框属性 6.设置Dia ...

  3. NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

    在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...

  4. 最全的基于MFC的ActiveX控件开发教程

    浏览器插件之ActiveX开发(一) 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题.在有特殊需求(如涉及数据安全的金融业务 ...

  5. NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条

    半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...

  6. NX二次开发-Block UI C++界面关于 在Block UI中UF_initialize();和UF_terminate();的使用

    关于 在Block UI中UF_initialize();和UF_terminate();的使用 用Block UI作NX二次开发的时候,不需要在使用UFUN函数的时候加UF_initialize() ...

  7. 基于MFC开发的指纹识别系统.

    MFC-FingerPrint 基于MFC开发的指纹识别系统. 效果图如下: 在第12步特征入库中,会对当前指纹的mdl数据与databases中所有的mdl进行对比,然后返回识别结果. 一.载入图像 ...

  8. 基于MFC的ActiveX控件开发教程------------浏览器插件之ActiveX开发

    浏览器插件之ActiveX开发(一) 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题.在有特殊需求(如涉及数据安全的金融业务 ...

  9. NX二次开发-C#使用DllImport调用libufun.dll里的UF函数(反编译.net.dll)调用loop等UF函数

    在写这篇文章的时候,我正在头晕,因为下班坐车回家,有些晕车了.头疼的要死.也吃不下去饭. 版本:NX11+VS2013 最近这一年已经由C++过度到C#,改用C#做应用程序开发和NX二次开发. C#在 ...

随机推荐

  1. 【LeetCode 33】搜索旋转排序数组

    题目链接 [题解] 会发现旋转之后,假设旋转点是i 则0..i-1是递增有序的.然后i..len-1也是递增有序的. 且nums[i..len-1]<nums[0]. 而nums[1..i-1] ...

  2. AcWing 231. 天码 (容斥)打卡

    题目:https://www.acwing.com/problem/content/233/ 题意:给你n个不同的数,让你选取一个四元组,gcd为1,让你求这样的四元组数量是多少 思路:我们单独直接去 ...

  3. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】01、环境准备

    开发环境 windows+STS(一个针对Spring优化的Eclipse版本)+Maven+SQLServer 环境部署 1.安装SQLServer(使用版本2008R2) 自行安装,此处略过 2. ...

  4. python笔试做错的题目

    a = [1,2,3] b = a print(id(a),id(b),a == b) print(a,b) b = b + [1,2,3] print(a,b) print(id(a),id(b), ...

  5. (5)C++ 循环和判断

    循环 一.for循环 ; i < ; i++) { cout << "abc"<< endl; } 或 ; i; i--) { cout <&l ...

  6. inline-block 导致元素下沉 解决方法添加vertical-align:middle属性

    <div class="layui-input-block"> <input name="username" lay-verify=" ...

  7. Qt4 QWebView的使用例子

    最近项目中使用QT4框架开发PC端软件,所以耐着性子学习了一下QT相关的东西. 下面是QT4中QWebView的使用方法,觉得蛮方便的. 我使用的开发环境是:Win7+Qt 4.8.5开发库+qtcr ...

  8. 使用font-size:0px 来制作跨浏览器的inline-block css属性

    如果排列的元素是等高的话,相信很多人都会使用浮动来布局,不过如果元素不等高的话,不添加多余的标签,浮动布局是很难实现下图中的效果.如果遇到这种情况,可以使用inline-block来布局. 现代浏览器 ...

  9. jQuery选择器我犯的错误(原创)

    jQuery的选择器十分强大,但是在使用jQuery选择器的时候一定要十分小心,空格.冒号.引号到处都是坑,老手也不能避免,只能勤加练习,熟能生巧,掌握规律,为了练习,凡是到选择器的地方我都自己先敲, ...

  10. Python django tests

    单元测试函数必须以test_开头,否则无法被识别