当前位置: 首页 > news >正文

实例:NX二次开发使用链表进行拉伸功能(链表相关功能练习)

一、概述

        在进行批量操作时经常会利用链表进行存放相应特征的TAG值,以便后续操作,最常见的就是拉伸功能。这里我们以拉伸功能为例子进行说明。

二、常用链表相关函数

UF_MODL_create_list                创建一个链表,并返回链表的头指针。

UF_MODL_put_list_item             插入元素到链表中,不检验对象是否重复,或者已经存在。

UF_MODL_ask_list_count           获取链表对象数量,从头开始遇到NULL_Tag结束。

UF_MODL_ask_list_item             查询链表对象标识,给个位子返回标识

UF_MODL_delete_list_item         删除列表的对象,给一个tag就可以删除链表的对象。

UF_MODL_delete_list                  删除整个链表,释放内存。

三、实现的功能

1、创建四条直线

2、根据四条直线创建拉伸特征

3、查询链表中的数量

4、删除链表中的第一个对象

5、查询删除后的链表数量

6、查询删除后链表的第一个对象TAG值

四、代码分析

//用户定义
#include <uf_ui.h>
#include <uf_curve.h>
#include <uf_modl.h>void MyClass::do_it()
{// TODO: add your code hereUF_initialize();//创建一条直线UF_CURVE_line_t line1,line2,line3,line4;tag_t line1TAG[4];line1.start_point[0] = 0.0;line1.start_point[1] = 0.0;line1.start_point[2] = 0.0;line1.end_point[0] = 10.0;line1.end_point[1] = 0.0;line1.end_point[2] = 0.0;UF_CURVE_create_line(&line1, &line1TAG[0]);line2.start_point[0] = 10.0;line2.start_point[1] = 0.0;line2.start_point[2] = 0.0;line2.end_point[0] = 10.0;line2.end_point[1] = 10.0;line2.end_point[2] = 0.0;UF_CURVE_create_line(&line2, &line1TAG[1]);line3.start_point[0] = 10.0;line3.start_point[1] = 10.0;line3.start_point[2] = 0.0;line3.end_point[0] = 0.0;line3.end_point[1] = 10.0;line3.end_point[2] = 0.0;UF_CURVE_create_line(&line3, &line1TAG[2]);line4.start_point[0] = 0.0;line4.start_point[1] = 10.0;line4.start_point[2] = 0.0;line4.end_point[0] = 0.0;line4.end_point[1] = 0.0;line4.end_point[2] = 0.0;tag_t line4TAG = NULL_TAG;UF_CURVE_create_line(&line4, &line1TAG[3]);//链表操作uf_list_p_t objectslist = NULL;UF_MODL_create_list(&objectslist);//创建链表for (int i = 0; i < 4; i++){UF_MODL_put_list_item(objectslist, line1TAG[i]);//放置链表}//创建拉伸char *taper_angle = "0";//抜模char * limit[2] = { "0.0", "20.0" };//拉伸高度double point[3] = { 0.0,0.0,0.0 };//已经弃用double direction[3] = { 0.0,0.0,1.0 };//矢量方向UF_FEATURE_SIGN sign = UF_NULLSIGN;uf_list_t *features = NULL;UF_MODL_create_extruded2(objectslist, taper_angle, limit, point, direction, sign, &features);//访问链表数量int cout;UF_MODL_ask_list_count(objectslist, &cout);char msg[256];sprintf(msg, "%d", cout);uc1601(msg, 1);//删除链表中的第一个UF_MODL_delete_list_item(&objectslist, line1TAG[0]);int cout1;UF_MODL_ask_list_count(objectslist, &cout1);char msg1[256];sprintf(msg1, "%d", cout1);uc1601(msg1, 1);tag_t object = NULL_TAG;UF_MODL_ask_list_item(objectslist, 1, &object);char msg2[256];sprintf(msg2, "%d", object);uc1601(msg2, 1);UF_MODL_create_list(&objectslist);//删除链表UF_terminate();
}

五、运行结果

http://www.lryc.cn/news/324105.html

相关文章:

  • 【VSTO开发】遍历 Ribbon 中的所有控件或按钮
  • 上位机图像处理和嵌入式模块部署(qmacvisual图像识别)
  • 当Java 22遇到 SpringBoot 3.3.0!
  • 贪吃蛇(C语言超详细版)
  • python(django)之流程接口管理后台开发
  • Hive入门
  • 【神经网络】得分函数,损失函数~
  • FFmepg--AVFilter过滤器使用以及yuv视频裁剪
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • string类的详细模拟实现
  • 【EasyX】 使用说明
  • 以太坊基金会JUSTIN DRAKE确认出席Hack.Summit() 2024区块链开发者大会
  • 数学建模常用代码
  • 学点儿Java_Day7_在实体类当中IDEA无法进行单元测试(@Test没有启动按钮)
  • C语言:二叉树基础
  • LeetCode热题Hot100-两数之和
  • 鸿蒙实战开发-如何通过拖动滑块调节应用内字体大小
  • matlab实现神经网络检测手写数字
  • 增强现实与虚拟现实中的大模型应用:沉浸式体验的创新
  • 【数据分析案列】--- 北京某平台二手房可视化数据分析
  • 【Golang星辰图】创造美丽图表,洞察数据:解析Go语言中的数据可视化和数据分析库
  • 阿里云原生:如何熟悉一个系统
  • Scala第十一章节(正则表达式和异常处理)
  • Flutter运行MacOs网络请求报错Unhandled Exception: DioException [connection error]:...
  • 基于SpringBoot+MyBatis框架的智慧生活商城系统的设计与实现(源码+LW+部署+讲解)
  • Godot 学习笔记(5):彻底的项目工程化,解决GodotProjectDir is null
  • Openharmony
  • 24计算机考研调剂 | 华南师范大学
  • 【Node.js】全局变量和全局 API
  • Install Docker