.NET下使用ufun函数取CAM操作的进给速度
UF_PARAM_ask_subobj_ptr_value,这个函数在封装的时候,给了很大一个坑啊。
NXOpen.UF.UFParam.AskSubobjPtrValue(ByVal param_tag As NXOpen.Tag,
ByVal param_index As Integer,
ByRef value As System.IntPtr)
如果你想使用如下的代码可以取到竟给速度,那你就错了
Dim cb As Integer = Marshal.SizeOf(GetType(NXOpen.UF.UFParam.Feedrate))
Dim ptr As IntPtr = Marshal.AllocHGlobal(cb)
theUfSession.Param.AskSubobjPtrValue(oper.tag, UFConstants.UF_PARAM_FEED_CUT, ptr)
Dim feed_cut As NXOpen.UF.UFParam.Feedrate = CType(Marshal.PtrToStructure(ptr, GetType(NXOpen.UF.UFParam.Feedrate)), NXOpen.UF.UFParam.Feedrate)
这个函数一直让我头疼了三年多,今天终于想到办法了
其实这里不能使用指针,而是直接使用结构体NXOpen.UF.UFParam.Feedrate
将UF_PARAM_ask_subobj_ptr_value函数重新封装定义一下:
<DllImport("libufun.dll", EntryPoint:="UF_PARAM_ask_subobj_ptr_value", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Ansi)> _
Friend Shared Function _AskFeedRate(ByVal param_tag As Tag, ByVal param_index As Integer, <Out> ByRef value As NXOpen.UF.UFParam.Feedrate) As Integer
End Function <DllImport("libufun.dll", EntryPoint:="UF_PARAM_set_subobj_ptr_value", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Ansi)> _
Friend Shared Function _SetFeedRate(ByVal param_tag As Tag, ByVal param_index As Integer, ByVal value As NXOpen.UF.UFParam.Feedrate) As Integer
End Function
整理了一下使用方法,代码如下:
Public Function AskFeedRate(ByVal param_index As Integer) As NXOpen.UF.UFParam.Feedrate
Dim value As NXOpen.UF.UFParam.Feedrate
Dim errorCode As Integer = _AskFeedRate(_camobject, param_index, value)
If errorCode <> 0 Then
Throw NXOpen.NXException.Create(errorCode)
End If
Return value
End Function Public Sub SetFeedRate(ByVal param_index As Integer, ByVal value As NXOpen.UF.UFParam.Feedrate)
Dim errorCode As Integer = _SetFeedRate(_camobject, param_index, value)
If errorCode <> 0 Then
Throw NXOpen.NXException.Create(errorCode)
End If
End Sub
.NET下使用ufun函数取CAM操作的进给速度的更多相关文章
- 工程实践:给函数取一个"好"的名字
工程实践:给函数取一个"好"的名字 早在2013年,国外有个程序员做了一个有意思的投票统计(原始链接请见:<程序员:你认为最难做的事情是什么?>),该投票是让程序员从以 ...
- python系列3之内置函数和文件操作
目录 自定义函数 内置函数 文件的操作 练习题 一. 自定义函数 1. 函数的创建 函数的创建 1.def关键字 2.函数名+() 3.冒号 4.缩进 5. return返回值,可以不写,默认的返回值 ...
- C++ 链式继承下的虚函数列表
目录 1.虚函数列表的位置 2.虚函数列表的内容 3.链式继承中虚函数列表的内容 注: 虚函数列表 又称为虚表, vtbl , 指向它的指针称为vptr, vs2019中称为__vfptr 操作系 ...
- MySQL主从环境下存储过程,函数,触发器,事件的复制情况
下面,主要是验证在MySQL主从复制环境下,存储过程,函数,触发器,事件的复制情况,这些确实会让人混淆. 首先,创建一张测试表 mysql),age int); Query OK, rows affe ...
- C++:一般情况下,设计函数的形参只需要两种形式
C++:一般情况下,设计函数的形参只需要两种形式.一,是引用形参,例如 void function (int &p_para):二,是常量引用形参,例如 void function(const ...
- day3-Python集合、函数、文件操作,python包的概念
本节大纲: 1 python程序由包(package).模块(module)和函数组成.包是由一系列模块组成的集合.模块是处理某一类问题的函数和类的集合. 2 包就是一个完成特定任务的工具箱. 3 包 ...
- 【C/C++】Linux下使用system()函数一定要谨慎
[C/C++]Linux下使用system()函数一定要谨慎 http://my.oschina.net/renhc/blog/53580 曾经的曾经,被system()函数折磨过,之所以这样,是因为 ...
- 短路运算|字符串操作函数|内存mem操作函数
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- 简单介绍下python中函数的基础语法
python 函数 定义 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 特性 减少代码重复 使程序变得可扩展 使程序变得易于维护 函数的创建 pyt ...
随机推荐
- 基于Linux系统下Apache服务器的安装部署
企业中常用的web服务,用来提供http://(超文本传输协议). web系统是客户端/服务器模式的,所以应该有服务器和客户端里两个部分.常用的服务器程序时Apache,常用的客户端程序是浏览器.ww ...
- Photoshop 各混合模式 RGB 是如何计算的
原文链接:https://www.jb51.net/photoshop/249182.html 1.正常模式(Normal) 默认模式,显示混合色图层的像素,没有进行任何的图层混合.这意味着基色图层( ...
- 磁盘“Seagate”没有被推出,因为一个或多个程序可能正在使用它。
推出移动硬盘失败,解决方案: 执行 lsof /Volumes/Seagate/ 可以看到哪些进程在占用磁盘 $ lsof /Volumes/Seagate/ COMMAND PID USER FD ...
- springMVC学习总结(二) --springMVC表单处理、标签库、静态文件处理
根据springMVC学习总结(一) --springMVC搭建 搭建项目 一.表单处理 1.创建两个java类 Student.java, StudentController.java. 2.在js ...
- openswan协商流程之(四):main_inI2_outR2()
主模式第四包:main_inI2_outR2 1. 序言 main_inI2_outR2()函数是ISAKMP协商过程中第四包的核心处理函数的入口,同时在此处理流程中已经获取到足够的隧道信息,可以生成 ...
- Delphi使用AcroPDF ActiveX显示PDF文件
效果展示 调用方式 放入窗体即可使用,不想安装太多组件,可使用纯代码方式调用 interface ..... var AcroPDF: TAcroPDF; .... implementation .. ...
- 多线程run()方法是不能够被直接调用的
操作系统线程的五种状态: 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于"可运行 ...
- HDU 6170 Two strings( DP+字符串匹配)
http://acm.hdu.edu.cn/showproblem.php?pid=6170 题目大意: 给出两个字符串s1和s2(长度小于等于2500). s1是一个正常的包含大小写字母的字符串,s ...
- stderr,stdin,stdout相关
转载请保留原作者. 目录 一.stdin和stdout 1.意义 2.缓冲 2.1.scanf的缓冲问题 2.2.fflush 3.freopen 二.stderr 1.输出方法 2.默认缓冲 一.s ...
- PHP的bz2压缩扩展工具
在日常的开发和电脑使用中,我们经常会接触到压缩和解压的一些工具,PHP 也为我们准备了很多相关的操作扩展包,都有直接可用的函数能够方便的操作一些压缩解压功能.今天,我们先学习一个比较简单但不太常用的压 ...