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 ...
随机推荐
- linux centos7 tail
2021-08-30 # 不指定行数,默认显示 10 行 # 显示 /var/log/crond 后100行 taile -100 /var/log/crond # 动态显示 /var/log/cro ...
- BUUCTF-[CISCN2019 华东南赛区]Web4
BUUCTF-[CISCN2019 华东南赛区]Web4 看题 点击Read somethings,会跳转到 http://3fd8b1f9-614f-47ff-8e79-0f678e7bb4eb.n ...
- QT学习日记篇01(1)-QT界面初探- *.pro文件详解
一: 项目管理文件(.pro文件) 项目管理文件用于记录项目的一些设置,以及项目包含文件的组织管理 后缀为".pro"的 文件是项目的管理文件,文件名就是项目的名称,如Demo.p ...
- 前后端数据交互(二)——原生 ajax 请求详解
一.ajax介绍 ajax 是前后端交互的重要手段或桥梁.它不是一个技术,是一组技术的组合. ajax :a:异步:j:js:a:和:x:服务端的数据. ajax的组成: 异步的 js 事件 其他 j ...
- ELK+kafka+filebeat搭建生产ELFK集群
文章原文 ELK 架构介绍 集群服务版本 服务 版本 java 1.8.0_221 elasticsearch 7.10.1 filebeat 7.10.1 kibana 7.10.1 logstas ...
- Jenkins 构建JOB失败
问题描述 同事在使用Jenkins打包项目的时候报错 error:index-pack died of signal 15 fatal: index-pack failed 出现这个问题,初步怀疑是拉 ...
- PPP协议、PPPoE协议、L2TP协议的关系
1. 简述 首先对这3中协议做一个简单的描述: 协议 协议类型 描述 PPP 点对点链路层协议 应用最广泛的点对点协议,可应用在多种网络,改善了SLIP协议的不足 PPPoE 点对点链路层协议 对PP ...
- Java优化if-else代码
前言 开发系统一些状态,比如订单状态:数据库存储是数字或字母,但是需要显示中文或英文,一般用到if-else代码判断,但这种判断可读性比较差,也会影响后期维护,也比较容易出现bug.比如: 假设状态对 ...
- Elasticsearch-head插件的安装与配置
第一种: 通过浏览器添加插件 通过chrome安装插件的方式提供一个可操作es的图形化界面. 在chrome 浏览器中,通过"扩展程序" 添加 elasticsearch head ...
- JAVA语言程序设计课程评价
紧张的又短暂的一个学期结束了,这个学期也许将成为我人生中一个重要的转折点,作为一名半路出家的选手,在初次了解Java语言时我感到非常的迷茫与不知所措.因为之前很多同学都是通过假期时间在家自学,刚转入新 ...