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

查看代码

调用方法如下:

这样就解决了问题,不过缺陷是:由于本人技术有限,没有卸载非托管代码使用的的内存。还望大牛们赐教!!!

时间: 2024-09-29 01:17:29

NX Open 切削层加载的相关文章

Android的jni层如何加载bmp位图

============问题描述============ 最近在做关于opengles的jni开发的东西,遇见一些问题,以前在java层加载位图然后贴图很容易,当时把相应代码移植到jni层之后,其他的都没问题,但是位图加载遇见了问题,有没有大神指导怎么才能在jni层将bmp图加载到代码中,然后去贴图?? 我实在ubuntu环境下开发的 ============解决方案1============ 引用 楼主 u010654357 的回复: 最近在做关于opengles的jni开发的东西,遇见一些问

Android 自定义View修炼-自定义加载进度动画LoadingImageView

一.概述 本自定义View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果. 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进度颜色. 直接看下面的效果图吧. 二.效果图 废话不说,先来看看效果图吧~~ 三.实现原理方案 1.自定义View-XCLoadingImageView,继承ImageVIew来实现,这样就不用自己再处理drawable和测量的工作内容. 2.根据蒙层颜色创建一个蒙层bitmap,然后根据这个bitmap来

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

作者:白狼 出处:www.manks.top/article/yii2_load_js_css_in_end 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 正所谓命由己造,相由心生,那么我们的问题又是怎么抛出来的喃? 这个问题也算是个比较久远但是经常会有人要问到的问题.究其原因, 一来实际开发中不可避免,二来也就是刚接触yii的小伙伴喜欢揪着不放.那 为啥了解过这个问题的人就不纠结了喃?外星人:楼主你si不si撒,人家都

lufylegend:加载进度

实现图片加载进度 LoadingSample Class 用来显示进度条的对象. 引擎中目前提供的进度条类有:LoadingSample1-7 你可以制作自己的进度条,自制进度条类中要包含setProgress函数. //初始化引擎组件 init(50, "div_caiquan", 800, 400, main); //定义游戏层,加载进度层.游戏背景层 var loadingLayer, backLayer; //定义游戏图片 //定义图片资源加载完成后返回的图片对象 var im

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

在做cordova项目的时候,感觉应用的响应速度跟原生应用比相差甚远,一个主要问题就是如加载层.进度条等弹出对话框的效率不行.毕竟项目中的这些弹框都是用dom拼成的,dom的渲染效率和原生控件比起来慢也是正常的.为了能够让应用尽可能的接近原生应用的效果,我业余时间做了一套对话框插件,使用后应用的使用体验立马有了很大的提升.兼容ios和安卓平台.插件包括加载层.进度条.文件选择.项目已经放到了github,有兴趣的小伙伴可以下载试一试. 插件只支持cordova5.0及以上版本,初始化如下: co

微网站|h5弹窗|手机网站 html5 弹窗、弹层、提示框、加载条

为了精确体验,您可通过Chrome设备模式浏览.或通过[url=]手机扫二维码进入[/url] layer mobile是为移动设备(手机.平板等webkit内核浏览器/webview)量身定做的弹层支撑,采用Native JavaScript编写,完全独立于PC版的layer,您需要按照场景选择使用.GitHub layer mobile是为移动设备(手机.平板等webkit内核浏览器/webview)量身定做的弹层支撑,采用Native JavaScript编写,您需要按照场景选择使用. 文

layui加载层的写法

<script type="text/javascript" src="jquery-1.8.3.min.js"></script> <script type="text/javascript" src="layer/layer.js"></script> //在js中写出前后加载的函数 加载层 1 ; !function () { 2 layer.config({//加载扩展模

基于layer封装的异步加载分部视图弹出层

背景:之前一直用的artdialog,但是样式不是很好看,后来偶然看到layer,觉得不错,但是对于.net mvc来说,不能像artdialog一样弹出分部视图是很难受的.所以下面的方法就解决了. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta na

ajax异步加载遮罩层特效

<!doctype html> <html> <head> <title>遮罩层(正在加载中)</title> <meta charset="utf-8" /> <style> #cover{ display:none; position:fixed; z-index:1; top:0; left:0; width:100%; height:100%; background:rgba(0, 0, 0,