项目中要获取路径参数,网上大多是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. SAP物料类型

    1.物料主数据界面设置行业领域默认值并隐藏行业领域 2.物料类型设置:主要控制视图需要维护的部门,是否可以采购,及是否进行数量或者价值更新等操作 spro --> 后勤常规--> 物料主数 ...

  2. python学习之路---基础概念扩展:变量,表达式,算法,语句,函数,模块,字符串

    对于学过一点编程语言的人,学习python基础知识不难,基本大同小异 本章是根据一本书来学习python的编程(强烈推荐)来记录学习python中的有意思的总结 Python 基础教程(第三版)    ...

  3. -bash: ./mlnxofedinstall: /usr/bin/perl: bad interpreter: No such file or directory

    -bash: ./mlnxofedinstall: /usr/bin/perl: bad interpreter: No such file or directory 解决办法:安装相关的环境即可 输 ...

  4. pytorch中 model.cuda的作用

    在pytorch中,即使是有GPU的机器,它也不会自动使用GPU,而是需要在程序中显示指定.调用model.cuda(),可以将模型加载到GPU上去.这种方法不被提倡,而建议使用model.to(de ...

  5. QTextEdit

    if texttmp != "": # 光标自动下移 self.textEdit.append(texttmp) QApplication.processEvents() self ...

  6. (面试题)面试官为啥总是让我们手撕call、apply、bind?

    引言 上一篇关于<面试官为啥总是喜欢问前端路由实现方式>的文章发布后,发现还是挺受欢迎的.这就给我造成了一定的困惑 之前花了很长时间,实现了一个自认为创意还不错的关于前端如何利用node+ ...

  7. JavaScript异步概念及与c#异步的区别

    JS的异步操作函数往往是通过回调函数来实现异步任务的结果处理,在ES6之前如setTimeout函数和异步AJAX编程: 在ES6规范后Promise 类对象使得书写异步任务更加容易,返回Promis ...

  8. const引用和指针

    1.可以为const引用初始化一个非const的对象.字面值,甚至是一般表达式. 2.对引用初始化时必须严格进行类型匹配,但是const引用初始化时不需要类型匹配,只要可以转换为const所定义的类型 ...

  9. 解决PageHelper分页不正常,pages始终等于1,total 始终等于pageSize的问题

    问题 pages始终等于1,total 始终等于pageSize 原因 原因是我在查询到list数据之后,对list做了操作,导致分页不正常 // 这是service层的类 public PageIn ...

  10. 移动端及pc端适配

    1.rem搭配CSS预处理器使用 这里我就用vue+less来简单操作一下,具体可以封装到底层,这里暂且演示一下原理. 这里推荐一下使用我的自制脚手架 (songyao-cli) 来快速生成一个vue ...