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 切削层加载的更多相关文章

  1. JQuery浮动层Loading页面加载特效

    之前做项目,经常需要一些浮动层加载Loading. 现在好多前端框架都能实现了,最常用的就是 artDialog 下面记录下当时的代码. <!DOCTYPE html PUBLIC " ...

  2. 用Loading 加载中的整页加载来做蒙层

    总结:遇见的bug 如何写一个蒙层 最初我打算的是自己写一个蒙层,但是写出来后, 不能够将整个屏幕全部覆盖.只能够覆盖 除[顶部导航] 和[左侧菜单栏] 于是我就使用了element-ui中的 [Lo ...

  3. yii2 如何在页面底部加载css和js

    作者:白狼 出处:www.manks.top/article/yii2_load_js_css_in_end 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接 ...

  4. Android 自定义View修炼-自定义加载进度动画XCLoadingImageView

    一.概述 本自定义View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果. 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进度颜色. ...

  5. 闭包创建自己的 plugin 示例 加载 loading

    plugin  插件 什么是 plugin? 实现一个功能,与主应用程序分离,减少主应用程序的大小,高复用,可维护 制作过程中,一定要避免依赖其他的元素,减少 id 等的使用,避免与页面中其他内容冲突 ...

  6. lufylegend:加载进度

    实现图片加载进度 LoadingSample Class 用来显示进度条的对象. 引擎中目前提供的进度条类有:LoadingSample1-7 你可以制作自己的进度条,自制进度条类中要包含setPro ...

  7. Android酷炫加载进度动画

    概述 本自定义动画进度酷炫View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果. 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进 ...

  8. cordova加载层、进度条、文件选择插件

    在做cordova项目的时候,感觉应用的响应速度跟原生应用比相差甚远,一个主要问题就是如加载层.进度条等弹出对话框的效率不行.毕竟项目中的这些弹框都是用dom拼成的,dom的渲染效率和原生控件比起来慢 ...

  9. C# Winform 实现自定义半透明loading加载遮罩层

    在网页中通过div+css实现半透明效果不难,今天我们看看一种在winfrom中实现的方法: 效果图如下,正常时: 显示遮罩层时: 自定义遮罩层控件的源码如下: View Row Code 1 usi ...

随机推荐

  1. 4.React生命周期

    4.React生命周期 4.1引出生命周期 class Life extends React.Component { state = { opacity:0.5 } death = () => ...

  2. RHEL7.2下DHCP服务器的搭建

    DHCP(?Dynamic Host Configuration Protocol)是一种帮助计算机从指定的DHCP服务器获取配置信息的自举协议 请求配置信息的计算机叫做DHCP客户端,而提供信息的叫 ...

  3. Python中的私有属性私有方法、类属性类方法以及单例设计模式

    私有属性是对象不希望公开的属性,私有方法是对象不希望公开的方法.在定义私有属性和私有方法时,在属性或者方法前,加上__(两个下划线) 公有方法可以通过对象名直接调用,私有方法不能通过对象名直接调用,只 ...

  4. ELK数据迁移,ES快照备份迁移

    通过curl命令或者kibana快照备份,恢复的方式进行数据迁移 环境介绍 之前创建的ELK 因为VPC环境的问题,需要对ELK从新部署,但是还需要保留现有的数据,于是便有了这篇文档. 10.0.20 ...

  5. Dockerfile简介及基于centos7的jdk镜像制作

    Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像, 另外,使用Dockerfile去构建镜像好比使用pom去构建m ...

  6. shp的基本操作

    本节将介绍如何利用python完成对shp的基本操作 1.读取shp四至 import shapefile sf = shapefile.Reader(r"E:\shp\1.shp" ...

  7. JAVA安全基础之代理模式(二)

    JAVA安全基础之代理模式(二) 上篇讲到静态代理模式,这时候我们发现,一个代理类只能为一个类服务,如果需要代理的类很多,那么就需要编写大量的代理类,比较繁琐.所以就有了动态代理 动态代理 动态代理的 ...

  8. 从零开始学习SQL SERVER(2)--- 基本操作及语句

    声明:仅为本人随笔及经验之谈,有错误敬请指出. # 后的文字为注释 Microsoft SQL Server Management Studio 中的SQL命令 添加数据库 1 CREATE DATA ...

  9. 在开发中使用GMap.Net 控件的心得一

    首先必须先加载GMap.Net这个控件,先通过"添加引用"来加载相应的.dll文件,如果在工具箱中找不到GMapControl这个控件,也别心急. 点击"工具" ...

  10. linux错误: locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory

    命令 locate my.cnf 产生以上错误 此时执行 # updatedb 更新下数据库即可