NX二次开发UF_CURVE_create_joined_curve 函数介绍

news/2024/4/17 18:02:25

文章作者:里海
来源网站:https://blog.csdn.net/WangPaiFeiXingYuan

UF_CURVE_create_joined_curve

Defined in: uf_curve.h 
int UF_CURVE_create_joined_curve(uf_list_p_t uf_curve_list, int creation_method, tag_t * joined_curve, int * status )

overview 概述

Creates a new spline curve that represents the input list of joined
curves and edges. The curves or edges that you join may not have gaps.
The Modeling distance and angle tolerance are used to create and
validate the resulting spline curve. The modeling tolerance can be
modified by UF_MODL_set_distance_tolerance or UF_MODL_set_angle_tolerance.
The curves you join must be input in order: either clockwise or
counterclockwise.

创建一个新的样条曲线,该曲线表示连接的曲线和边的输入列表。连接的曲线或边可能没有间隙。建模距离和角度公差用于创建和验证得到的样条曲线。建模公差可以通过 UF _ MODL _ set _ range _  或 UF _ MODL _ set _ angle _  公差进行修正。你连接的曲线必须按顺序输入: 顺时针或逆时针方向。

UFUN例子

欢迎订阅《里海NX二次开发3000例专栏》https://blog.csdn.net/wangpaifeixingyuan/category_8840986.html,点击链接扫码即可订阅(持续更新中)。已经有几百人订阅,订阅是永久的,无限期阅读,如需帮助请私信。

parameters 参数

uf_list_p_tuf_curve_listInputList of curves or edges to be joined
要连接的曲线或边的列表
intcreation_methodInputThe method to join the list of curves: 1 = Polynomial Cubic 2 = General Spline 3 = polynomial quintic 4 = advanced
连接曲线列表的方法: 1 = 多项式三次曲线2 = 一般样条3 = 多项式五次曲线4 = 高级曲线
tag_t *joined_curveOutputThe resulting joined curve spline
由此产生的连接曲线样条
int *statusOutputA flag indicating if the joined curve returned has corners: 0 = Curve has no corners 1 = Curve has corners
一个标志,指示是否连接的曲线返回有角: 0 = 曲线没有角1 = 曲线有角

分割

C++语言在UG二次开发中的应用及综合分析

  1. C++ 是C语言的扩展,它既可以执行C语言的过程化程序设计,也可以进行以抽象数据类型为特点的基于对象的设计,以及面向对象的程序设计。C++ 在处理问题规模上具有很大的适应性。
  2. C++不仅具有计算机高效运行的实用性特征,并且致力于提升大规模程序的编程质量以及程序设计语言的问题描述能力。

在UG二次开发中,C++语言具有以下特点

  1. C++语言支持多种程序设计风格
  2. C++的许多特性以库的形式存在,保证了语言的简洁和开发运行的效率
  3. 与C语言相比,C++引入了面向对象的概念,使得UG二次开发的人机交互界面更加简洁
  4. 通过借助UG自带的2000多种API函数,结合高级语言C++以及编程软件Visual Studio,可以对UG进行二次开发
  5. 需要注意的是,市场上的Visual Studio和UG版本众多,并非所有版本都能兼容

程序设计过程通常包括以下步骤:

  1. 问题分析:对要解决的问题进行深入的分析,理解问题的具体需求和限制。
  2. 需求定义:明确程序的目标和功能,包括用户需求、系统需求等。
  3. 设计:根据需求进行设计,包括算法设计、数据结构设计、界面设计等。
  4. 编码:根据设计的结果,使用一种编程语言将程序代码实现出来。
  5. 测试:通过各种测试方法来确保程序的正确性,包括单元测试、集成测试、系统测试等。
  6. 维护:对程序进行修改和完善,以解决可能出现的问题或满足新的需求。
  7. 文档编写:编写程序文档,描述程序的功能、操作方法、注意事项等。

以下是一个创建体素特征(块、柱、锥、球)的二次开发例子

#include <stdio.h>
#include <stdarg.h>
#include <uf_modl_primitives.h>
#include <uf_ui_ugopen.h>
#include <uf.h>
#include <uf_defs.h>
//封装打印函数,用于将信息打印到信息窗口
//QQ3123197280
int ECHO(const char* szFormat, ...)
{char szMsg[5000] = "";va_list arg_ptr;va_start(arg_ptr, szFormat);vsprintf_s(szMsg, szFormat, arg_ptr);va_end(arg_ptr);UF_UI_open_listing_window();UF_UI_write_listing_window(szMsg);return 0;
}
extern DllExport void ufusr(char* param, int* returnCode, int rlen)
{UF_initialize();//创建块UF_FEATURE_SIGN sign = UF_NULLSIGN;//块起点相对于ABSdouble block_orig[3] = { 0.0,0.0,0.0 };//方向相对于WCSchar* block_len[3] = { "10", "30", "10" };tag_t blk_obj;//体特征UF_MODL_create_block1(sign, block_orig, block_len, &blk_obj);int iEdit = 0;  char* size[3];UF_MODL_ask_block_parms(blk_obj, iEdit, size);ECHO("%s,%s,%s\n", size[0], size[1], size[2]);//输出: p6=10,p7=30,p8=10//创建圆柱UF_FEATURE_SIGN sign1 = UF_NULLSIGN;double origin[3] = { 10.0,0.0,10.0 };char  height[] = "20";char  diam[] = "10";double direction[3] = { 0,0,1 };//方向tag_t  cyl_obj_id;UF_MODL_create_cyl1(sign1, origin, height, diam, direction, &cyl_obj_id);int iEdit2 = 0;  char* cDiameter;char* cHeight;UF_MODL_ask_cylinder_parms(cyl_obj_id, iEdit2, &cDiameter, &cHeight);ECHO("%s,%s\n", cDiameter, cHeight);//输出:p9=10,p10=20UF_free(cDiameter);UF_free(cHeight);//创建圆锥UF_FEATURE_SIGN sign2 = UF_NULLSIGN;double origin2[3] = { 0.0,0.0,10.0 };char  height2[] = "20";char* diam2[2] = { "10" ,"5" };double direction2[3] = { 0,0,1 };//方向tag_t  cone_obj_id;UF_MODL_create_cone1(sign2, origin2, height2, diam2, direction2, &cone_obj_id);int iEdit3 = 0;  char* cD1;char* cD2;char* cH;char* cAngle;UF_MODL_ask_cone_parms(cone_obj_id, iEdit3, &cD1, &cD2, &cH, &cAngle);ECHO("%s,%s,%s,%s\n", cD1, cD2, cH, cAngle);//输出:p11=10,p12=5,p13=20,p14=7.1250163489018UF_free(cD1);UF_free(cD2);UF_free(cH);UF_free(cAngle);//创建球UF_FEATURE_SIGN sign3 = UF_NULLSIGN;double douCenter2[3] = { 0.0,0.0,30.0 };char  cDiam[] = "8";tag_t  sphere_obj_id;UF_MODL_create_sphere1(sign3, douCenter2, cDiam, &sphere_obj_id);int iEdit4 = 0;  char* cDiam_parm;UF_MODL_ask_sphere_parms(sphere_obj_id, iEdit4, &cDiam_parm);ECHO("%s\n", cDiam_parm);//输出:p15=8UF_free(cDiam_parm);UF_terminate();
}
extern int ufusr_ask_unload(void)
{return (UF_UNLOAD_IMMEDIATELY);
}

效果:
效果


https://www.xjx100.cn/news/3118809.html

相关文章

Redis使用管道实现批量处理

管道&#xff08;Pipeline&#xff09; 使用管道可以将多个命令打包在一起发送到服务器&#xff0c;减少网络往返的开销&#xff0c;从而实现批量操作。管道可以通过 Redis 客户端提供的 pipeline() 方法创建&#xff0c;并通过 execute() 方法执行。 优点 减少网络往返次数…

Windows如何启动MySQL

手动启动MySQL服务 如果您选择手动启动MySQL服务&#xff0c;则需要在“服务”控制面板中手动启动MySQL服务。步骤如下&#xff1a; 1&#xff09;按下WinR键打开运行窗口&#xff0c;输入services.msc并回车。 2&#xff09;在服务管理器中&#xff0c;搜索MySQL服务&#…

昨日一题 1670. 设计前中后队列(中等,列表)

维护左右两个队列&#xff0c;控制左队列的长度比右队列长&#xff0c;且不超过1pushFront 往左队列的左边添加元素pushMiddle 往左队列的右边或者右队列的左边添加元素其余同理&#xff0c;可以参照代码 class FrontMiddleBackQueue:def __init__(self):self.llist, self.rli…

CI/CD 最佳实践,让研发团队效率起飞!

目录 CI/CD 是什么&#xff1f; CI/CD 有哪些最佳实践&#xff1f; 深入研究 CD 的最佳实践 如何改进 CI/CD 流水线&#xff1f; 如何衡量 CI/CD 是否成功&#xff1f; 遵循 CI/CD 最佳实践有哪些收益&#xff1f; CI/CD 部署策略 如何在组织中实施 CI/CD&#xff1f; …

VSCode 代码调试

断点调试&#xff08;debug&#xff09;&#xff1a; 指在程序的某一行设置一个断点&#xff0c;调试时&#xff0c;程序运行到这一行就会停住&#xff0c;然后你可以一步一步往下调试&#xff0c;调试过程中可以看各个变量当前的值&#xff0c;出错的话&#xff0c;调试到出错…

pytorch 多卡并行训练

目录 设置参数&#xff1a; 训练时参数&#xff1a; 调用命令&#xff1a; 设置参数&#xff1a; import argparseparser argparse.ArgumentParser()parser.add_argument(--batch_size, typeint, default64, helpBatch size for training)parser.add_argument(--local_rank…

layui 日期选择框弹出后消失

原因是窗口太小&#xff0c;日期窗碰撞边缘后会消失&#xff0c;解决方法是增加 trigger: click 属性。 laydate.render({ elem: #kp_date , type: date , trigger: click });

机器学习与 S3 相集成 :释放数据的力量

文章作者&#xff1a;Libai 引言 在当今数据驱动的世界中&#xff0c;企业不断寻求如何高效利用企业自身所产生的数据的解决方案。机器学习已经成为一种提取有价值的见解和做出数据驱动决策的强大工具。然而&#xff0c;机器学习模型的成功在很大程度上依赖于高质量数据的可用…