项目中要获取路径参数,网上大多是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. Ubuntu20.04 无网络标识,网卡显示network为UNCLAIMED。附回退内核方法

    ubuntu自动装完驱动后发现没有网络标识了,打开设置发现Network里边只有VPN,没有网卡的信息. 输入以下代码查看网络信息: sudo lshw -C network 发现输出"*- ...

  2. 论文笔记:Access Path Selection In A Relational Database Management System

    论文笔记:Access Path Selection In A Relation Database Management System 这篇文章是 1979 年由 IBM 发表的.主要介绍了 Syst ...

  3. flutter卡在Running Gradle task 'assembleDebug'...

    https://www.cnblogs.com/lovewhatIlove/p/16323828.html

  4. cuda 11.8

    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_a ...

  5. Json数组转List

    List<Person> list = obj.list.ToObject<List<Person>>()

  6. Bug_Android error: duplicate attribute. (错误:重复属性。)

    error: duplicate attribute. 错误:重复属性. 如报错信息提示,属性重复赋值了 场景:刚拿到项目源码,进行修改前,先设置它的背景色,区分是哪一块内容,但没看到组件已定义了背景 ...

  7. R8051_simulation

    1 下载 git clone https://github.com/risclite/R8051.git 2 编辑文件 mkdir work && mv sim tb flist .. ...

  8. 睿爸信奥-【临阵磨枪】练习赛(第二场)- T2

    目录 题面 code 题面 徐老师在[睿爸信奥]里面颇受学生欢迎,有一天校长石老师想要搞个最受欢迎老师投票,徐老师就很想拿到这个奖.假设有 名候选者,有 人参加了投票,与以往不同的是,这次所有得票数超 ...

  9. 【剑指Offer】【链表】链表中环的入口结点

    题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. A:创建两个指针,一个pFast一个pSlow指向链头,pFast一次走2步,pSlow一次走1步,如果两个指针必相遇 ...

  10. requests断点续传功能

    requests取消ssl验证会出现告警InsecureRequestWarning,取消告警如下: import urllib3urllib3.disable_warnings(urllib3.ex ...