每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看了两个月唐康林工程师二次开发视频教程就跑出来找工作的我,显然是不会UDO的,后来采用了将handle值写到部件属性里,然后每次打开工具对话框前先去部件属性里读,在给到对话框里.在然后项目没做完我就特么滚蛋了. 时隔差不多两年,以前技术底子太差,好多东西都不懂,直到最近我对UDO才有了一些认知了解,会…
NX9+VS2012 #include <uf.h> #include <uf_curve.h> #include <uf_obj.h> UF_initialize(); //起点 ]; ArcStartPoint[] = 0.0; ArcStartPoint[] = 0.0; ArcStartPoint[] = 0.0; tag_t ArcStartPointTag = NULL_TAG; UF_CURVE_create_point(ArcStartPoint, &a…
NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> UF_initialize(); UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔 ] = {0.0, 0.0, 0.0};//设置原点 ] = {"};//设置长宽高 tag_t BlkTag = NULL_TAG; UF_MODL_create_block1(Sign, Corner_pt…
NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_disp.h> UF_initialize(); //创建块 UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔 ] = { 0.0, 0.0, 0.0 };//设置原点 ] = { " };//设置长宽高 tag_t BlkTag = NULL_TAG; UF_MODL_create_block1(Sig…
NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include <uf_part.h> UF_initialize(); //遍历当前显示部件 std::vector<tag_t> SolidVector; tag_t ObjectTag = NULL_TAG; int Type, SubType, Body_Type; ]; UF_OBJ_cycle_ob…
/**************************************************************************** Copyright (c) 2010 Siemens Product Lifecycle Management Software, Inc. Unpublished - All rights reserved File Description: Define names of all NX object types and subtypes.…
NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_part.h> #include <uf_obj.h> UF_initialize(); //遍历当前part所有body lw->Open(); ; tag_t BodyTag = NULL_TAG; UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_solid_t…
今天看到胡工对bounding_box的分享,我也来测试一番(原帖地址:https://www.ugapi.com/thread-10287.html) 获取对象的边界盒子的三个函数: 1 UF_MODL_ask_bounding_box //只能得到绝对坐标系下的边界盒子,速度快,结果不精确 2 UF_MODL_ask_bounding_box_aligned //可以得到指定坐标系下的盒子,速度快,结果不精确 3 UF_MODL_ask_bounding_box_exact //可以得到指定…
使用uf5946获取镜像矩阵注意:uf5946镜像这个函数,只能用#define UF_plane_type=46这种类型的数据作为镜像面,不能用#define UF_datum_plane_type=197这种类型的数据作为镜像面. 镜像对象: extern DllExport void ufusr(char *param, int *returnCode, int rlen) { uc1601("镜像体",1); UF_initialize(); tag_t tagBody0 =…
#include <uf.h> #include <uf_modl.h> #include <uf_obj.h> UF_initialize(); //创建块 UF_FEATURE_SIGN sign = UF_NULLSIGN; ] = { 0.0, 0.0, 0.0 }; ] = { " }; tag_t block_tag = NULL_TAG; UF_MODL_create_block1(sign, block_pt, block_edge, &…
NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include <uf_part.h> UF_initialize(); //遍历当前显示部件所有体 std::vector<tag_t> SolidVector; tag_t ObjectTag = NULL_TAG; int Type, SubType, Body_Type; ; ]; UF_OBJ_cyc…
变换的种类: uf5942 矩阵乘积变换 uf5943 平移变换 uf5944 缩放变换 uf5945 旋转变换 uf5946 镜像变换 最后使用 uf5947 实现uf5942-uf5946的变换. 例子: [NX二次开发]镜像对象 [NX二次开发]uf5945获得旋转矩阵.uf5947根据变换矩阵移动或复制对象 OPENC函数 UF_TRNS(平移 变换)( uf5943 , uf5947)…
返回所有层上指定类型部件中的所有对象,不管它们的当前显示状态如何.这个例程不返回表达式.指定对象.临时(系统创建的)对象或休眠对象.休眠对象指的是从模型中删除的对象例如,如果你混合了一条边,那么这条边就是休眠的.WCS将不会被返回,除非它已经被保存. 注意:当指定的类型为UF_feature_type时,这个例程循环部件中的特征.在循环查找到的对象时,不要尝试删除对象.当前对象已被删除时,尝试读取下一个对象时,可能会出现问题.要删除对象,可以在循环时将对象保存到一个包含对象的数组,然后在完成循环…
第一次调用 :返回第一个启用层中的第一个对象. 第二次调用 :返回下一个已启用层中的下一个对象. 最后一次调用:当所有对象都被耗尽时,将返回object_tag = NULL_TAG. 在循环数据库时,不要尝试删除对象. 当 当前对象已被删除时,尝试读取下一个对象时,可能会出现问题. 要删除对象,保存一个包含对象的数组,然后在完成循环后,使用 UF_OBJ_delete_array_of_objects删除保存的对象数组. 查找当前工作部件下,工作图层中的所有体 例子: extern DllEx…
先选择多个对象object,然后使用此函数获取选择的对象的tag,最后就可以使用object的一些函数了. ufun例子: extern DllExport void ufusr(char *parm, int *returnCode, int rlen) { UF_initialize(); tag_t *tagObjects; int iCount = 0; UF_UI_ask_global_sel_object_list(&iCount, &tagObjects); for (int…
uc6434 (); //旋转视图 参数1:如果输入""则旋转当前工作视图参数2:1.按照ABS旋转视图.2.按照WCS选择视图.3.按照参数3旋转视图.4.按照参数4旋转视图参数3:参数2=3时使用.输入一个有坐标系的对象标识符,例如圆弧.曲线.绘图对象.CSYS等.参数4:参数2=4时使用.矩阵(6个元素数组)的x轴和y轴.视图矩阵的Z轴将通过取两个输入轴的叉乘来内部计算. 效果: 源码: extern DllExport void ufusr(char *param, int *…
半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二次开发的机会,在到去专业NX二次开发公司上班又混不下去,最后去干画图仔,但我没放弃这行,每晚坚持那份热爱,现在技术也终究有了些进步了.[如果有写得不对的地方,各位可以给我留言批评指正] 先上两张图片 将MFC进度条嵌套在NX窗口左下角 将MFC进度条嵌套在BlockUI对话框里 ----------…
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的方法,无论C++还是C#还是VB方式思路都是一样的.先介绍用MFC去做,然后在写一篇博客介绍怎么在NX的二次开发的向导模板里去做.NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article…
在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article/details/88922030 这篇博客,要不然你听不懂我下面在说什么. 版本NX11+VS2013+office2016 首先我们通过NX开发向导创建了一个模板. 先把项目属性改成多字节.下面我们把前面做的MFC项目里的几个EXCAL头文件和stdafx一块拷过来,加到NX的项目里. 在NX的…
NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. #include <uf.h> #include <uf_curve.h> #include <uf_modl.h> #include <uf_obj.h> UF_initialize(); //创建直线1 UF_CURVE_line_t LineCoords…
NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. #include <uf.h> #include <uf_curve.h> #include <uf_modl.h> #include <uf_obj.h> UF_initialize(); //创建直线1 UF_CURVE_line_t LineCoords…
在网上看到一篇C#二次开发环境搭建的文章:NX二次开发-使用NXOPEN C#手工搭建开发环境配置 ,写得非常好.我按照文章操作,过程中遇到几个问题,把问题分享给大家,希望对各位有帮助. 注意三点: 1)一定要查看NX DLL的.NET版本,例如NX8.5对应的是.NET 版本是4.0,因此当前工程及依赖的其他工程必须保持一致(包括引用的DLL),如果不是,则无法执行.那么如何查看NX对应的的.NET版本?在引用中选中NXOpen,右键属性,查看运行时版本,即是.NET版本. 2)执行程序如果报…
Block UI 目录  基本   标签/位图   切换开关   枚举   字符串   多行字符串   操作按钮   列表框   分割线   对象颜色选择器   RGB颜色选择器   绘图区   图层   线型   线宽   线条颜色/线型/宽度   文本颜色/字体/宽度  编号   整形   双精度   表达式   线性尺寸   角度尺寸   半径尺寸(沿曲线的位置)   整数表   双精度表  布局   组   表   选项卡控件   向导   浏览器   滚动窗口  选择   选择对象  …
函数:UF_CSYS_ask_csys_info() 函数说明:获取工作坐标系对象的标识符. 用法: #include <uf.h> #include <uf_csys.h> extern DllExport void ufusr(char *param, int *returnCode, int rlen) { UF_initialize(); //获取WCS标识 tag_t tagWCS = NULL_TAG; UF_CSYS_ask_wcs(&tagWCS); //获…
函数:UF_CSYS_ask_wcs() 函数说明:获取工作坐标系对象的标识. 用法: 1 #include <uf.h> 2 #include <uf_csys.h> 3 extern DllExport void ufusr(char *param, int *returnCode, int rlen) 4 { 5 UF_initialize(); 6 7 //获取WCS标识 8 tag_t tagWCS = NULL_TAG; 9 UF_CSYS_ask_wcs(&t…
uc6464("布局名","旧视图名","新视图名");输入布局名.旧视图名.新视图名.如果布局名为空则更新当前布局.如果旧视图名为空,则工作视图将被替换.如果新视图名为空,则在布局上复制视图.如果旧视图名和新视图名都是空的,那么工作视图将被更新. 按视图名称旋转工作视图: 源码: extern DllExport void ufusr(char *param, int *returnCode, int rlen) { UF_initialize…
C#/AutoCAD 2018/ObjectArx/二次开发添加圆对象的的例子(五) 1.创建一个图形对象的步骤如下见上一篇博客(三)2.添加删除实体的工具函数见上一篇博客(四) 3.添加圆的例子(完整源代码请加云幽学院免费课yunyun.ke.qq.com)   [CommandMethod("MKCircle")]        public void MKCircle()        {            //(1)获取当前活动图形数据库            Databa…
关于 在Block UI中UF_initialize();和UF_terminate();的使用 用Block UI作NX二次开发的时候,不需要在使用UFUN函数的时候加UF_initialize();和UF_terminate();. 可以直接加在CPP里这个位置: extern "C" DllExport void ufusr(char *param, int *retcod, int param_len) { TwoPointCyl *theTwoPointCyl = NULL;…
打开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 libnxopen…
NX11+VS2013 #include <uf.h> #include <uf_curve.h> #include <uf_vec.h> UF_initialize(); //创建点1 ] = { 10.0, 10.0, 10.0 }; tag_t PointTag1 = NULL_TAG; UF_CURVE_create_point(Point1, &PointTag1); //创建点2 ] = { 100.0, 100.0, 100.0 }; tag_t…