项目中要获取路径参数,网上大多是C++的例子,而本项目是用C#写的,探索了下,记录下。

以获取某条路径的刀具号为例,其他参数依此类推。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NXOpen;
using NXOpen.Utilities;
using NXOpen.UF;
using NXOpen.CAM;
namespace NXTest
{
public class NXCAM
{
public static Session theSession;
public static UFSession theUfSession;
public static UFUi theUFUi;
public static NXOpen.Part workPart; static bool GetPathToolNumber(string pathName, out int toolNumber)
{
toolNumber = -1;
NXOpen.CAM.CAMSetup camSetup = workPart.CAMSetup;
NXOpen.CAM.NCGroup ncGroup = camSetup.GetRoot(NXOpen.CAM.CAMSetup.View.MachineTool);//获取机床视图下的所有刀具组
NXOpen.CAM.CAMObject[] camObjArr = ncGroup.GetMembers();
foreach (NXOpen.CAM.CAMObject camObj in camObjArr)//tool
{
if (camObj is NXOpen.CAM.NCGroup)
{
NXOpen.CAM.NCGroup toolGroup = camObj as NXOpen.CAM.NCGroup;
NXOpen.CAM.CAMObject[] pathArr = toolGroup.GetMembers();
foreach (NXOpen.CAM.CAMObject path in pathArr)//path
{
if (path.Name == pathName)
{
Tool tool = toolGroup as Tool;
if (tool == null)
return false; //方法一
NXOpen.UF.UFSession.GetUFSession().Param.AskIntValue(tool.Tag, NXOpen.UF.UFConstants.UF_PARAM_TL_NUMBER, out toolNumber); //方法二
NXOpen.CAM.MillToolBuilder millToolBuilder1;
millToolBuilder1 = workPart.CAMSetup.CAMGroupCollection.CreateMillToolBuilder(tool);
toolNumber = millToolBuilder1.TlNumberBuilder.Value;
millToolBuilder1.Destroy(); return true;
}
}
}
}
return false;
} public static int Main()
{
NXOpen.Session theSession = NXOpen.Session.GetSession();
theUfSession = UFSession.GetUFSession();
theUFUi = theUfSession.Ui;
workPart = theSession.Parts.Work;
NXOpen.Part displayPart = theSession.Parts.Display;
UI theUI = UI.GetUI();
TaggedObject obj = theUI.SelectionManager.GetSelectedTaggedObject(0);//获取路径树上被选中的路径
NXObject nxobj = obj as NXObject;int num = 0;
if (GetPathToolNumber(nxobj.Name, out num))
theUFUi.DisplayMessage(nxobj.Name + " tool number is " + num, 1);
else
theUFUi.DisplayMessage("cannot get " + nxobj.Name + " tool number", 1);
return 0;
} public static int GetUnloadOption(string dummy)
{
return UFConstants.UF_UNLOAD_IMMEDIATELY;
}
}
}

可以看到,有两种途径都可以获得:

NXOpen.UF.UFSession.GetUFSession().Param.AskIntValue
NXOpen.CAM.MillToolBuilder

值得注意的是,UG 的开发,引用的 dll 的版本要和实际使用的 UG 的版本严格对应,否则可能出错。

刚开始,我引用的是 UG12 的dll,在 UG11上调试,发现使用上述方法二总是报错,找了好久没找到原因,后来才发现是版本的原因。

完整代码:(修改3D圆角半径补偿的一键设置)

https://www.aliyundrive.com/s/ZrQg5KMhCYc

UG二次开发-CAM-获取修改路径参数的更多相关文章

  1. NX二次开发-UFUN获取球的参数UF_MODL_ask_sphere_parms

    NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_ui.h> UF_initialize( ...

  2. NX二次开发-UFUN获取块的参数UF_MODL_ask_block_parms

    NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_ui.h> UF_initialize( ...

  3. NX二次开发-UFUN获取圆柱的参数UF_MODL_ask_cylinder_parms

    NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_ui.h> UF_initialize( ...

  4. 【UG二次开发】获取系统信息UF_ask_system_info

    获取系统信息可以使用这个函数UF_ask_system_info 下面是例子: 1 extern DllExport void ufsta(char *param, int *returnCode, ...

  5. 【UG二次开发】获取对象类型 UF_OBJ_ask_type_and_subtype

    代码: int type=0, subtype=0; UF_OBJ_ask_type_and_subtype(objTag, &type, &subtype);

  6. NX二次开发-UFUN获取NX系统默认导出CGM的选项设置UF_CGM_ask_default_export_options

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  7. NX二次开发-UFUN获取当前导出CGM选项设置UF_CGM_ask_session_export_options

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  8. 【NX二次开发】获取指定矩阵标识的矩阵值

    函数:UF_CSYS_ask_matrix_values () 函数说明:获取指定矩阵标识的矩阵值. 用法: #include <uf.h> #include <uf_csys.h& ...

  9. 【NX二次开发】获取当前鼠标选择的对象 UF_UI_ask_global_sel_object_list

    先选择多个对象object,然后使用此函数获取选择的对象的tag,最后就可以使用object的一些函数了. ufun例子: extern DllExport void ufusr(char *parm ...

  10. 【NX二次开发】 获取产品曲面上多个点对应的面的垂直矢量!

    说明:选择一个产品面,选择面上的点,生成点在此面上的法线反向,生成直线.生成矢量的起点坐标,和矢量方向信息.可用于三坐标测量,如果需要可以自己编个插件用! 效果图: 源码: //----------- ...

随机推荐

  1. OJ19

    1 // we have defined the necessary header files here for this problem. 2 // If additional header fil ...

  2. Twitter Bootstrap Grid System

    Bootstrap是什么?Bootstrap是一个用来快速并且容易的开发web页面,强大的前端框架.它包含html和css基本设计模板,包含通用用户界面组件,如:排版,形式,按钮,表格,导航,下拉框, ...

  3. KEIL5中C/C++优化等级问题

    知乎上有篇详解   https://zhuanlan.zhihu.com/p/24402180 强烈推荐 C/C++的优化等级会对程序产生 不定性的影响,至于选择哪种优化等级必须从 现有的程序分析才行 ...

  4. React中使用CSS的N种方式

    1.在组件中直接使用style,注意,div1各个属性值加双引号 const div1 = { width: "300px", margin: "30px auto&qu ...

  5. iOS开发之检测项目是否包含UIWebView

    应苹果审核要求不能包含UIWebView,所以我们上线之前应该扫一下项目是否包含UIWebView 我们直接打开终端 cd 到工程文件下面 执行命令 grep -r UIWebView .  在扫描结 ...

  6. 【Java】zuul

    报错 com.netflix.zuul.exception.ZuulException: Hystrix Readed time out 解决办法,zuul模块的yml配置文件增加 ribbon: C ...

  7. S家lic

    1,用1patch里对应的工具patch 2019的s家的工具2,用ocad里的lmgrd和snpslmd替换s家的scl里的3,用scl_keygen产生license,再用fix.bat,添加si ...

  8. getinstance方法(转)

    getinstance方法 https://www.cnblogs.com/roadone/p/7977544.html //实例化 public static DBConnect instance; ...

  9. git常用命令查询手册

    默认已经连接到远程仓库的情况下 本地文件夹初始化成git仓库.提交本地仓库并添加注释 git init git add 文件1(文件夹1) 文件2(文件夹2)... git commit -m &qu ...

  10. python 冰墩墩

    1. python, turtles 以下为代码: import turtle # 设置一个画布 turtle.setup(800,600) turtle.speed(10) # 画左手和手内 tur ...