UG二次开发-CAM-获取修改路径参数
项目中要获取路径参数,网上大多是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-获取修改路径参数的更多相关文章
- NX二次开发-UFUN获取球的参数UF_MODL_ask_sphere_parms
NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_ui.h> UF_initialize( ...
- NX二次开发-UFUN获取块的参数UF_MODL_ask_block_parms
NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_ui.h> UF_initialize( ...
- NX二次开发-UFUN获取圆柱的参数UF_MODL_ask_cylinder_parms
NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_ui.h> UF_initialize( ...
- 【UG二次开发】获取系统信息UF_ask_system_info
获取系统信息可以使用这个函数UF_ask_system_info 下面是例子: 1 extern DllExport void ufsta(char *param, int *returnCode, ...
- 【UG二次开发】获取对象类型 UF_OBJ_ask_type_and_subtype
代码: int type=0, subtype=0; UF_OBJ_ask_type_and_subtype(objTag, &type, &subtype);
- NX二次开发-UFUN获取NX系统默认导出CGM的选项设置UF_CGM_ask_default_export_options
文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...
- NX二次开发-UFUN获取当前导出CGM选项设置UF_CGM_ask_session_export_options
文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...
- 【NX二次开发】获取指定矩阵标识的矩阵值
函数:UF_CSYS_ask_matrix_values () 函数说明:获取指定矩阵标识的矩阵值. 用法: #include <uf.h> #include <uf_csys.h& ...
- 【NX二次开发】获取当前鼠标选择的对象 UF_UI_ask_global_sel_object_list
先选择多个对象object,然后使用此函数获取选择的对象的tag,最后就可以使用object的一些函数了. ufun例子: extern DllExport void ufusr(char *parm ...
- 【NX二次开发】 获取产品曲面上多个点对应的面的垂直矢量!
说明:选择一个产品面,选择面上的点,生成点在此面上的法线反向,生成直线.生成矢量的起点坐标,和矢量方向信息.可用于三坐标测量,如果需要可以自己编个插件用! 效果图: 源码: //----------- ...
随机推荐
- vs输出重定向
1.右键点击解决工程->项目属性 2.配置属性->生成事件->生成后事件 在命令行中输入:"$(TargetPath) >$(outdir)\1.txt" ...
- AVL tree rotate
AVL tree single rotate /** * Rotate binary tree node with left child. * For AVL trees, this is a sin ...
- Physics Informed Deep Learning for Flow and Transport in Porous Media
Paper presented at the SPE Reservoir Simulation Conference, On-Demand, October 2021. 这篇论文关注石油储藏模拟问题, ...
- 在LUbuntu上搭建Neovim+Markdown环境
前言 想搭建自己的电子笔记系统.一开始用VMware+Ubuntu,后来想,如果这个虚拟机文件比较小,就可以用克隆到U盘里,随身带了. 于是转Lubuntu. 总体步骤 安装系统 安装neovim 安 ...
- 真实世界的算法_pdf
链接:https://pan.baidu.com/s/1OZiDnd2My3FvGIuwO91E7Q 提取码:t88i
- docker的使用以及常用命令
查看docker镜像仓库中是否存在某个镜像,通常第一个或stars最多的就是我们要是使用的,以nginx为例 # 搜索一下是否存在该镜像文件 docker search nginx # 安装使用该镜像 ...
- gauva cache
guava 的cache比较好用. 用户使用的对象是LoadingCache, 通过CacheBuilder来创建,通过 CacheLoader来根据key加载数据.而且可以定时刷新缓存(有访问 ...
- python爬虫--房产数据爬取并保存本地
import requestsimport csvfrom bs4 import BeautifulSoupheaders={'user-agent':'Mozilla/5.0 (Windows NT ...
- mysql建表常用关键字
DISTRIBUTE BY HASH(`id`) INDEX_ALL='Y' STORAGE_POLICY='HOT'
- python如何实现对word内段落文本及表格的读取
在以下方法中用到的三方库是:python-docx from docx import Document 获取指定段落的文本 def get_paragraph_text(path, n): " ...