NX Open 切削层加载
UF_CUT_LEVELS_load
Loads the current cut levels for the specified operation into the data
structure UF_CUT_LEVELS_t.
在.NET下面使用方法为NXOpen.UF.UFCutLevels.Load(ByVal operation_tag As NXOpen.Tag, ByRef cut_levels_ptr_addr() As NXOpen.UF.UFCutLevels.CutLevelsStruct)
可是你想加载成功,是不可能的。我觉得是在封装API库的时候出了点问题。
以下源代码会引发异常:


解决办法重新封装UF_CUT_LEVELS_load
以下为源代码:
1 #Region "UF_CUT_LEVELS_load"
2 Friend Function CreateException(ByVal errorCode As Integer) As NXOpen.NXException
3 Return NXOpen.NXException.Create(errorCode)
4 End Function
5
6 <DllImport("libufun.dll", EntryPoint:="UF_CUT_LEVELS_load", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Ansi)> _
7 Private Function _CUT_LEVELS_load(ByVal operation_tag As Tag, ByRef cut_levels_ptr_addr As IntPtr) As Integer
8 End Function
9 Private Structure _CutLevelsStruct
10 Public num_levels As Integer
11 Public cut_levels As IntPtr
12 Public num_top_off_levels As Integer
13 Public top_off_levels As IntPtr
14 End Structure
15 ''' <summary>
16 ''' 加载切削层
17 ''' </summary>
18 ''' <param name="operation_tag">操作tag值</param>
19 ''' <param name="cut_levels_ptr_addr">切削层参数结构</param>
20 ''' <remarks>重写加载切削层结构</remarks>
21 Public Sub UF_CUT_LEVELS_load(ByVal operation_tag As NXOpen.Tag, ByRef cut_levels_ptr_addr As NXOpen.UF.UFCutLevels.CutLevelsStruct)
22 Dim ptr As IntPtr
23 NXOpen.Utilities.JAM.StartUFCall()
24 Dim errorCode As Integer = _CUT_LEVELS_load(operation_tag, ptr)
25 NXOpen.Utilities.JAM.EndUFCall()
26 If errorCode <> 0 Then
27 Throw CreateException(errorCode)
28 End If
29 Dim structArray As New _CutLevelsStruct
30 cut_levels_ptr_addr = New NXOpen.UF.UFCutLevels.CutLevelsStruct
31 structArray = DirectCast(Marshal.PtrToStructure(ptr, GetType(_CutLevelsStruct)), _CutLevelsStruct)
32 cut_levels_ptr_addr.num_levels = structArray.num_levels
33 Dim num As Integer = Marshal.SizeOf(GetType(NXOpen.UF.CutLevelSingle))
34 Dim num2 As Integer = structArray.num_levels
35 Dim zero As Long = structArray.cut_levels.ToInt64
36 If num2 > 0 Then
37 cut_levels_ptr_addr.cut_levels = New NXOpen.UF.CutLevelSingle(num2 - 1) {}
38 End If
39 If zero <> Nothing Then
40 Dim num6 As Integer = 0
41 Do While num6 < num2
42 cut_levels_ptr_addr.cut_levels(num6) = DirectCast(Marshal.PtrToStructure(CType(zero, IntPtr), GetType(NXOpen.UF.CutLevelSingle)), NXOpen.UF.CutLevelSingle)
43 zero = (zero + num)
44 num6 += 1
45 Loop
46 End If
47 'Marshal.FreeHGlobal(structArray.cut_levels)
48 structArray.cut_levels = IntPtr.Zero
49
50 cut_levels_ptr_addr.num_top_off_levels = structArray.num_top_off_levels
51 num2 = structArray.num_top_off_levels
52 num = Marshal.SizeOf(GetType(NXOpen.UF.CutLevelSingle))
53 zero = structArray.top_off_levels.ToInt64
54 If (num2 > 0) Then
55 cut_levels_ptr_addr.top_off_levels = New NXOpen.UF.CutLevelSingle(num2 - 1) {}
56 End If
57 If (zero <> Nothing) Then
58 For num6 = 0 To num2 - 1
59 cut_levels_ptr_addr.top_off_levels(num6) = DirectCast(Marshal.PtrToStructure(CType(zero, IntPtr), GetType(NXOpen.UF.CutLevelSingle)), NXOpen.UF.CutLevelSingle)
60 zero = (zero + num)
61 Next num6
62 End If
63 'Marshal.FreeHGlobal(structArray.top_off_levels)
64 structArray.top_off_levels = IntPtr.Zero
65 End Sub
66 #End Region
查看代码
调用方法如下:

这样就解决了问题,不过缺陷是:由于本人技术有限,没有卸载非托管代码使用的的内存。还望大牛们赐教!!!
NX Open 切削层加载的更多相关文章
- JQuery浮动层Loading页面加载特效
之前做项目,经常需要一些浮动层加载Loading. 现在好多前端框架都能实现了,最常用的就是 artDialog 下面记录下当时的代码. <!DOCTYPE html PUBLIC " ...
- 用Loading 加载中的整页加载来做蒙层
总结:遇见的bug 如何写一个蒙层 最初我打算的是自己写一个蒙层,但是写出来后, 不能够将整个屏幕全部覆盖.只能够覆盖 除[顶部导航] 和[左侧菜单栏] 于是我就使用了element-ui中的 [Lo ...
- yii2 如何在页面底部加载css和js
作者:白狼 出处:www.manks.top/article/yii2_load_js_css_in_end 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接 ...
- Android 自定义View修炼-自定义加载进度动画XCLoadingImageView
一.概述 本自定义View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果. 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进度颜色. ...
- 闭包创建自己的 plugin 示例 加载 loading
plugin 插件 什么是 plugin? 实现一个功能,与主应用程序分离,减少主应用程序的大小,高复用,可维护 制作过程中,一定要避免依赖其他的元素,减少 id 等的使用,避免与页面中其他内容冲突 ...
- lufylegend:加载进度
实现图片加载进度 LoadingSample Class 用来显示进度条的对象. 引擎中目前提供的进度条类有:LoadingSample1-7 你可以制作自己的进度条,自制进度条类中要包含setPro ...
- Android酷炫加载进度动画
概述 本自定义动画进度酷炫View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果. 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进 ...
- cordova加载层、进度条、文件选择插件
在做cordova项目的时候,感觉应用的响应速度跟原生应用比相差甚远,一个主要问题就是如加载层.进度条等弹出对话框的效率不行.毕竟项目中的这些弹框都是用dom拼成的,dom的渲染效率和原生控件比起来慢 ...
- C# Winform 实现自定义半透明loading加载遮罩层
在网页中通过div+css实现半透明效果不难,今天我们看看一种在winfrom中实现的方法: 效果图如下,正常时: 显示遮罩层时: 自定义遮罩层控件的源码如下: View Row Code 1 usi ...
随机推荐
- Python - 3.8 新特性之仅位置参数 & 仅关键字参数
前置知识 Python 函数:https://www.cnblogs.com/poloyy/p/15092393.html 什么是仅限位置形参 仅限位置形参是 Python 3.8 才有的新特性 新增 ...
- inet_aton和inet_ntoa
3.1 inet_aton() int inet_aton(const char *cp, struct in_addr *inp); 参数说明: cp : IPv4点分十进制字符串,例如" ...
- 计算机网络-HTTP篇
目录 计算机网络-HTTP篇 HTTP的一些问题 HTTP 基本概念 常见状态码 常见字段 Get 与 Post HTTP 特性 HTTP(1.1) HTTP/1.1 HTTPS 与 HTTP HTT ...
- Java一般命名规范
一.项目名称 最好用英文,所有单词全部用小写,如testjavaproject.studentmanagement等,当然也也可以用中文,如"学生管理系统"等. 二.Java pr ...
- learn git(本地仓库)
#本地 在Windows上安装Git 在Windows上使用Git,可以从Git官网直接https://git-scm.com/downloads下载,然后按默认选项安装即可. 装完成后,在开始菜单里 ...
- JS HTML5仿微信朋友圈特效
完美! 图片相册翻页可定位在第几张,右上角可关闭. 源代码下载地址: 链接: https://pan.baidu.com/s/1o7PA7wu 密码: asyt
- JavaScript进阶面向对象ES6
类和对象 对象:万物皆对象,对象是一个具体的事物,看得见摸得着的实物 对象是由属性和方法组成的: 属性:事物的特征,再对象中用属性来表示(常用名词) 方法:事物的行为,再对象中用方法来表示(常用动词) ...
- setTimeout 与setInterval的区别
setTimeout(code,millisec) 方法用于在指定的毫秒数后调用函数或计算表达式 setInterval(code,millisec) 方法可按照指定的周期(以毫秒计)来调用函数或计算 ...
- sublime text 3 在Windows下配置sublimelinter-php的路径问题
首先用package control安装sublimelinter和sublimelinter-php,然后依次点击菜单preference-package settings-sublimelinte ...
- c++ 的学习笔记 第一集cim cout
1. 你要用这个东西,所以得有包含它得头文件,就像java 你要用某个模块,你得包含这个模块 模块化??单片机里面学的模块化(可以在vs里面实现) 2. 当我把注册表regedit 程序删除之后成功了 ...