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. 一、Rabbitmq的简单介绍

    以下只是本人从零学习过程的整理 部分内容参考地址:https://www.cnblogs.com/ysocean/p/9240877.html 1.RabbitMQ的概念 RabbitMQ是实现了高级 ...

  2. 羽夏笔记——PE结构(不包含.Net)

    写在前面   本笔记是由本人独自整理出来的,图片来源于网络.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你 ...

  3. Coreos配置docker镜像加速器

    CoreOS配置docker镜像加速器 CoreOS下的Docker配置是通过flannel unit来实现的. 1) 通过命令 systemctl cat docker 可以看出配置文件的默认位置 ...

  4. Solon 1.5.29 发布,轻量级 Java 基础开发框架

    本次版本主要变化: 增加 captcha-solon-plugin 插件(提供滑块验证与选文字验证能力) 插件 sa-token-solon-plugin,升级 sa-token 为 1.26.0 插 ...

  5. Element UI:DatePicker的终止日期与起始日期关联

    Template // 起始日期 <el-date-picker v-model="queryParams.startTime" :picker-options=" ...

  6. vue-cli3项目中使用vue-ueditor-wrap

    Vue + UEditor + v-model 双向绑定 一.安装 1 npm i vue-ueditor-wrap 2 # 或者 3 yarn add vue-ueditor-wrap 二.下载文件 ...

  7. vscode快速添加引号 批量增加引号(用于批量格式化代码)

    一.在浏览器中将Params复制到pycharm的py文件中 二.选中需要添加引号的部分,Ctrl+H 调出替换工具栏 三.填写正则表达式 (.*?): (.*) '$1':'$2', 右侧注意点击使 ...

  8. PC端利用Xshell连接Android上的Termux

    需要准备的工具 Android端:Termux.RE管理器 PC端:Xshell 开始操作 1. 启动Termux,安装openssh pkg install openssh 2. 安装好后,启动ss ...

  9. Jmeter线程组设置

    添加线程组:右键测试计划->添加->Threads->线程组 左侧树形标签栏中,显示标签信息. 选中线程组,右侧内容栏中显示线程组的相关信息. 名称:可以给线程组设置一个个性化的命名 ...

  10. Jenkins持续集成体系 | 最完整的介绍及资料

    这篇文章是来给大家普及Jenkins知识的, Jenkins能解决什么问题, 有哪些应用场景, 为何要掌握Jenkins, 掌握Jenkins后有哪些好处, 弄懂Jenkins需要掌握哪些知识 不知道 ...