NX二次开发-基于MFC界面对话框与NX交互的开发
打开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交互的开发的更多相关文章
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- vs2012开发基于MFC的ActiveX控件
1.新建工程 2.一直点击下一步,直到出现一下界面,注意红色标注选项,点击完成. 3.进入工程的属性界面,设置工程属性 4.添加对话框资源及其他控件,添加对话框类, 5.设置对话框属性 6.设置Dia ...
- NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))
在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...
- 最全的基于MFC的ActiveX控件开发教程
浏览器插件之ActiveX开发(一) 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题.在有特殊需求(如涉及数据安全的金融业务 ...
- NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条
半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...
- NX二次开发-Block UI C++界面关于 在Block UI中UF_initialize();和UF_terminate();的使用
关于 在Block UI中UF_initialize();和UF_terminate();的使用 用Block UI作NX二次开发的时候,不需要在使用UFUN函数的时候加UF_initialize() ...
- 基于MFC开发的指纹识别系统.
MFC-FingerPrint 基于MFC开发的指纹识别系统. 效果图如下: 在第12步特征入库中,会对当前指纹的mdl数据与databases中所有的mdl进行对比,然后返回识别结果. 一.载入图像 ...
- 基于MFC的ActiveX控件开发教程------------浏览器插件之ActiveX开发
浏览器插件之ActiveX开发(一) 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题.在有特殊需求(如涉及数据安全的金融业务 ...
- NX二次开发-C#使用DllImport调用libufun.dll里的UF函数(反编译.net.dll)调用loop等UF函数
在写这篇文章的时候,我正在头晕,因为下班坐车回家,有些晕车了.头疼的要死.也吃不下去饭. 版本:NX11+VS2013 最近这一年已经由C++过度到C#,改用C#做应用程序开发和NX二次开发. C#在 ...
随机推荐
- JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?
千呼万唤始出来,在经历了整整一年的跳票之后,Java 9 终于在 9 月 21 日拨开云雾,露出真正的面目.对众多 Java 程序员来说,这一天无疑是一个重大的日子,首先 Java 开发者们再也不用羡 ...
- Python基础教程(004)--Python的设计哲学
前言 Python已经成为了一门流行的编程语言. 知识点 1,优雅 2,明确 3,简单 Python开发者的哲学是:用一种方法,最好是只有一种方法来做一件事. 如果面临多种选择,Python开发者都会 ...
- k8s pod,pvc,pv无法删除问题
注意步骤: 一般删除步骤为:先删pod再删pvc最后删pv 但是遇到pv始终处于“Terminating”状态,而且delete不掉 pod一直删不掉 [root@hadoop01 nacos-k8s ...
- CDN(Content Delivery Network)内容分发网络
CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定.通过在网络各处放置节 ...
- winserver安装zabbixAgent
zabbix 布署实践[8 监控windows server] 参考http://www.cnblogs.com/likehua/p/3968689.html的思路,我安装的是zabbix 3.0 ...
- cent OS 7 下安装 python 3.6
step1:安装依赖环境 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readli ...
- 自动化测试之CSS定位
之前做自动化测试一直用RF框架来操作,发现了明显与unittest的灵活性相差一点. 重新温习了unittest框架,其中这个框架,元素定位是难点,以前更多的使用JQUERY方式定位, 发现其实与CS ...
- mybatis的sqlprovider用法扩展自定义sql
SqlProvider使用 public class MemberRewardSqlProvider { private static final Logger log = LoggerFactory ...
- Django框架(二十四)—— Django rest_framework-视图组件
目录 视图组件 一.基本视图 二.自定义的封装视图 三.利用mixin类和generice类编写视图 1.使用 2.源码 四.利用generics 下的ListCreateAPIView,Retrie ...
- php的闭包函数use的使用
PHP在默认情况下,匿名函数不能调用所在代码块的上下文变量,而需要通过使用use关键字. function getMoney() { $rmb = 1; $dollar = 6; $fun ...