NX Open,怎样取到面的环LOOP
在封装的ufun .NET库里面,对UF_MODL_ask_face_loops这个函数并没有封装,导致我们很多不便,那我们在.NET下怎样才能使用这个函数呢??当然是手动处理一下
- Public Function AskFaceLoops(ByVal faceTag As NXOpen.Tag) As loop_list()
- Dim loop_t As IntPtr
- NXOpen.Utilities.JAM.StartUFCall()
- Dim errorCode As Integer = UF_MODL_ask_face_loops(faceTag, loop_t)
- NXOpen.Utilities.JAM.EndUFCall()
- If errorCode <> 0 Then
- Throw NXOpen.NXException.Create(errorCode)
- End If
- Dim ptr As IntPtr = loop_t
- Dim loopList As New List(Of loop_list)
- While ptr <> IntPtr.Zero
- Dim loop_list_t As _loop_list = CType(Marshal.PtrToStructure(ptr, GetType(_loop_list)), _loop_list)
- Dim count As Integer
- errorCode = UF_MODL_ask_list_count(loop_list_t.edge_list, count)
- Dim edgeArray(count - 1) As NXOpen.Tag
- For i As Integer = 0 To count - 1
- UF_MODL_ask_list_item(loop_list_t.edge_list, i, edgeArray(i))
- Next
- 'UF_MODL_delete_list(loop_list_t.edge_list)
- loopList.Add(New loop_list With {
- .type = loop_list_t.type,
- .edge_list = edgeArray})
- ptr = loop_list_t.next
- End While
- UF_MODL_delete_loop_list(loop_t)
- Return loopList.ToArray()
- End Function
- <DllImport("libufun.dll", EntryPoint:="UF_MODL_ask_face_loops", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Ansi)> _
- Friend Shared Function UF_MODL_ask_face_loops(ByVal face As Tag, <Out> ByRef loop_list As IntPtr) As Integer
- End Function
- <DllImport("libufun.dll", EntryPoint:="UF_MODL_ask_list_count", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Ansi)> _
- Friend Shared Function UF_MODL_ask_list_count(ByVal list As IntPtr, <Out> ByRef count As Integer) As Integer
- End Function
- <DllImport("libufun.dll", EntryPoint:="UF_MODL_ask_list_item", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Ansi)> _
- Friend Shared Function UF_MODL_ask_list_item(ByVal list As IntPtr, ByVal index As Integer, <Out> ByRef [object] As Tag) As Integer
- End Function
- <DllImport("libufun.dll", EntryPoint:="UF_MODL_delete_list", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Ansi)> _
- Public Shared Function UF_MODL_delete_list(ByRef list As IntPtr) As Integer
- End Function
- <DllImport("libufun.dll", EntryPoint:="UF_MODL_delete_loop_list", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Ansi)> _
- Friend Shared Function UF_MODL_delete_loop_list(ByRef list As IntPtr) As Integer
- End Function
- Friend Structure _loop_list
- Public type As Integer
- Public edge_list As IntPtr
- Public [next] As IntPtr
- End Structure
- Public Structure loop_list
- Public type As Integer 'Peripheral=1, Hole=2, Other=3
- Public edge_list() As NXOpen.Tag
- End Structure
- using System;
- using System.Collections.Generic;
- using System.Runtime.InteropServices;
- public class AskFaceLoop
- {
- public LoopList[] AskFaceLoops(NXOpen.Tag faceTag)
- {
- System.IntPtr loopT;
- NXOpen.Utilities.JAM.StartUFCall();
- int errorCode = UF_MODL_ask_face_loops(faceTag,out loopT);
- NXOpen.Utilities.JAM.EndUFCall();
- if (errorCode != 0)
- {
- throw NXOpen.NXException.Create(errorCode);
- }
- System.IntPtr ptr = loopT;
- List<LoopList> loopList = new List<LoopList>();
- while (ptr != IntPtr.Zero)
- {
- _loop_list loopListT = (_loop_list)Marshal.PtrToStructure(ptr, typeof(_loop_list));
- int count;
- errorCode = UF_MODL_ask_list_count(loopListT.edge_list,out count);
- NXOpen.Tag[] edgeArray = new NXOpen.Tag[count];
- for (int i = 0; i < count; i++)
- {
- UF_MODL_ask_list_item(loopListT.edge_list, i,out edgeArray[i]);
- }
- //UF_MODL_delete_list(out loopListT.edge_list);
- loopList.Add(new LoopList{Type = loopListT.type,EdgeList = edgeArray});
- ptr = loopListT.next;
- }
- UF_MODL_delete_loop_list(out loopT);
- return loopList.ToArray();
- }
- [DllImport("libufun.dll", EntryPoint = "UF_MODL_ask_face_loops", CallingConvention = CallingConvention.Cdecl,CharSet = CharSet.Ansi)]
- internal static extern int UF_MODL_ask_face_loops(NXOpen.Tag face, out IntPtr loopList);
- [DllImport("libufun.dll", EntryPoint = "UF_MODL_ask_list_count", CallingConvention = CallingConvention.Cdecl,
- CharSet = CharSet.Ansi)]
- internal static extern int UF_MODL_ask_list_count(IntPtr list, out int count);
- [DllImport("libufun.dll", EntryPoint = "UF_MODL_ask_list_item", CallingConvention = CallingConvention.Cdecl,CharSet = CharSet.Ansi)]
- internal static extern int UF_MODL_ask_list_item(IntPtr list, int index, out NXOpen.Tag @object);
- [DllImport("libufun.dll", EntryPoint = "UF_MODL_delete_list", CallingConvention = CallingConvention.Cdecl,CharSet = CharSet.Ansi)]
- internal static extern int UF_MODL_delete_list(out IntPtr list);
- [DllImport("libufun.dll", EntryPoint = "UF_MODL_delete_loop_list", CallingConvention = CallingConvention.Cdecl,CharSet = CharSet.Ansi)]
- internal static extern int UF_MODL_delete_loop_list(out IntPtr list);
- internal struct _loop_list
- {
- public int type;
- public IntPtr edge_list;
- public IntPtr next;
- }
- public struct LoopList
- {
- /// <summary>
- /// Peripheral=1, Hole=2, Other=3
- /// </summary>
- public int Type;
- public NXOpen.Tag[] EdgeList;
- }
- }
NX Open,怎样取到面的环LOOP的更多相关文章
- wineshark分析抓取本地回环包
wineshark分析抓取本地回环包 摘要 由于windows系统没有提供本地回环网络的接口,用Wireshark监控网络的话看不到localhost的流量.想要获取本地的网络数据包,可以通过一款小巧 ...
- wireshark抓取本地回环及其问题
一:The NPF driver isn't running 这个错误是因为没有开启NPF服务造成的. NPF即网络数据包过滤器(Netgroup Packet Filter,NPF)是Winpcap ...
- List<List<model>>如何更快捷的取里面的model?
访问接口返回数据类型为List<List<model>>,现在想将其中的model插入数据库,感觉一点点循环有点傻,0.0...,各位有没有其他的方法? List<Lis ...
- Wireshark抓取本地回环接口数据包 RawCap.exe
Wireshark提供了winpcap可以抓取远程网卡数据包...但我尝试了不成功.后来发现RawCap.exe不仅可以抓取回环接口数据包,远程跑了拿到pcap文件再打开用起来比winpcap更方便最 ...
- wireshark抓取本地回环及其问题 转摘:http://www.cnblogs.com/luminji/p/3503464.html
一:The NPF driver isn’t running 这个错误是因为没有开启NPF服务造成的. NPF即网络数据包过滤器(Netgroup Packet Filter,NPF)是Winpcap ...
- windows下使用wineshark分析抓取本地回环包
## 摘要 由于windows系统没有提供本地回环网络的接口,用Wireshark监控网络的话看不到localhost的流量. 想要获取本地的网络数据包,可以通过一款小巧的开源软件RawCap来进行抓 ...
- RawCap抓取本地回环接口数据包
RawCap.exe --help ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 D: ...
- NX二次开发-获取面的法向向量UF_MODL_ask_face_data
NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...
- NX二次开发-获取面的外围边和孔槽边
函数: UF_MODL_ask_face_loops() 获取面的所有封闭边组合(多组edge) UF_MODL_ask_loop_list_count() 获取loop的数量(面上孔.槽的数量+1 ...
随机推荐
- C#多线程开发-线程基础 01
最近由于工作的需要,一直在使用C#的多线程进行开发,其中也遇到了很多问题,但也都解决了.后来发觉自己对于线程的知识和运用不是很熟悉,所以将利用几篇文章来系统性的学习汇总下C#中的多线程开发. 线程基础 ...
- 微信小程序基础知识笔记
微信小程序笔记 文件构成 全局文件 app.json 小程序全局配置文件,必要,自动生成 app.js 小程序入口JS文件,一般只需申明全局变量.处理生命周期以及版本升级即可,必要 app.wxss ...
- Docker | 入门 & 基础操作
Dcoker 入门 确保docker 已经安装好了,如没有装好的可以参考:Docker | 安装 运行第一个容器 docker run -it ubuntu /bin/bash docker run ...
- freemodbus移植、实例及其测试方法
Modbus简介 参考:Modbus协议深入讲解 https://www.ni.com/zh-cn/innovations/white-papers/14/the-modbus-protocol ...
- 依赖注入Bean属性——手动装配Bean
一.构造方法注入 其中,可以根据不同的参数列表调用不同的重载的构造方法: 其中,基本数据类型没有包,引用类型都有包路径,基本类型对应封装类: 二.通过property标签调用类的set方法注入 三.通 ...
- [第十六篇]——Docker 安装 CentOS之Spring Cloud直播商城 b2b2c电子商务技术总结
Docker 安装 CentOS CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise ...
- 通过mstsc复制粘贴失败需要重新启动RDP剪切板监视程序rdpclip.exe
先结束程序 再重新启动程序
- Dockerfile常见命令
Dockerfile结构 Dockerfile的结构分成了若干部分,每个部分之间的先后顺序有明确的要求: 部分 命令 基础镜像信息 FROM 维护者信息 MAINTAINER 镜像操作指令 RUN.C ...
- Hadoop-3.1.3安装
0.创建用户并付权限 sudo useradd iwbdsudo passwd iwbd 配置iwbd用户具有root权限 修改/etc/sudoers文件,找到下面一行(91行),在root下面添加 ...
- Spotlight监控工具的使用
Spotlight下载地址:http://spotlight-on-unix.software.informer.com/download/#downloading Spotlight是Quest公司 ...