NX二开ufun函数UF_MODL_create_surf_from_cloud(使用现有点创建B曲面)

news2024/10/9 8:25:39

本节主要讲使用现有点创建B曲面的ufun函数UF_MODL_create_surf_from_cloud,这些点可以按任何顺序出现,但是必须有足够的点来定义平面。

先看实例效果图:

  1、函数结构

int UF_MODL_create_surf_from_cloud 

int point_cnt,
double cloud [] [3],
double csys_matrix [2] [3],
double bnd_corners [4] [3],
int U_degree,
int V_degree,
int U_patches,
int V_patches,
int corner_switch,
double * average_error,
double * max_error,
int * max_error_index,
tag_t * surface_tag

2、实例源码  

#include <stdio.h>
#include <uf.h>
#include <uf_modl.h>
#define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))
static int report( char *file, int line, char *call, int irc)
{
  if (irc)
  {
     char    messg[133];
     printf("%s, line %d:  %s\n", file, line, call);
     (UF_get_fail_message(irc, messg)) ?
       printf("    returned a %d\n", irc) :
       printf("    returned error %d:  %s\n", irc, messg);
  }
  return(irc);
}
static void do_ugopen_api(void)
{
  int             pnt_cnt = 16;
  int             u_degree = 3, v_degree = 3;
  int             u_patches = 1, v_patches = 1;
  int             corner_switch = 0;
  int             max_err_index;
  double          average_error, max_error;
  tag_t           surface_tag = NULL_TAG;

  static double   mtx[2][3] = { {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0} };
  static double   cloud_pnts[][3]=
        { { 2200.0,  548.0, 1472.0 }, { 1400.0, 1168.0, 1213.0 },
          { 1000.0,  285.0, 1377.0 }, { 1000.0, 1107.0, 1154.0 },
          { 1000.0, -254.0,  950.0 }, { 2200.0,  951.0, 1462.0 },
          { 1400.0, -353.0, 1049.0 }, { 1800.0,  605.0, 1388.0 },
          { 1400.0,  222.0, 1550.0 }, { 1800.0, -426.0, 1121.0 },
          { 2200.0,  207.0, 1750.0 }, { 1800.0, 1007.0, 1406.0 },
          { 1800.0,  259.0, 1655.0 }, { 1400.0,  649.0, 1301.0 },
          { 2200.0, -479.0, 1175.0 }, { 1000.0,  704.0, 1167.0 } };


  UF_CALL(UF_MODL_create_surf_from_cloud( pnt_cnt,
                                          cloud_pnts,
                                          mtx,
                                          NULL,
                                          u_degree,
                                          v_degree,
                                          u_patches,
                                          v_patches,
                                          corner_switch,
                                          &average_error,
                                          &max_error,
                                          &max_err_index,
                                          &surface_tag ));
}
/*ARGSUSED*/
void ufusr(char *param, int *retcode, int param_len)
{
  if (!UF_CALL(UF_initialize()))
  {
    do_ugopen_api();
    UF_CALL(UF_terminate());
  }
}
int ufusr_ask_unload(void)
{
  return (UF_UNLOAD_IMMEDIATELY);
}

3、源码分析 

这个ufun函数,主要用来实现点列表创建B曲面, 点的顺序决定了面的U和V方向。如果指向bnd_corners的指针为NULL,则便捷为包含XY平面中的点列表的最小矩形。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/191105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双栏Latex模板插入多个图片的各种排布

目录 问题描述&#xff1a; 问题解决&#xff1a; 1. 插入一个图片 示意图如下&#xff1a; 2.插入2x1两个图片&#xff1a;2x1 示意图如下&#xff1a; 3. 插入1x2两个图片&#xff1a;1x2 示意图如下&#xff1a; 4.插入2x2两个图片&#xff1a;2x2 示意图如下&…

shell脚本set -eu引起的学习笔记

本文将介绍Bash中 set -euxo pipefail 大佬的文章学习膜拜体验&#xff0c;它们可以帮助你写出更容易维护也更安全的脚本。这也是Bash脚本的终极调试手段&#xff0c;希望你以后在自己的脚本中加上这么一行&#xff0c;头顶也能少秃一点 今天打开一个脚本《JetsonNano使能SPI总…

00后真的是躺平的一代吗?已经被公司新来的00后卷哭了

2023年开年了&#xff0c;公司也来了许多新面孔&#xff0c;其中居然有一个是00年的&#xff0c;虽然也给公司带来了一些新的血液&#xff0c;但也让我意识到&#xff0c;自己年级确实不小了。这小老弟是去年毕业的&#xff0c;在某软件公司干了半年&#xff0c;现在跳槽到我们…

java常用类: String,StringBuffer和StringBuilder的底层区别

java常用类型: Ineteger等包装类 String类&#xff0c;StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录String介绍String创建细节String s…

大数据技术架构(组件)13——Hive:字符串函数

1.4.7、字符串函数1.4.7.1、asciiselect ascii(a);1.4.7.2、base64-->Hive0.12.0select base64(cast(abcd as binary));1.4.7.3、character_length-->Hive2.2.01.4.7.4、chr-->Hive1.3.01.4.7.5、concatselect concat(1,1,2,a),concat(1,a,null);1.4.7.6、context_ngr…

【JavaSE】ArrayList的扩容机制源码分析

文章目录1. ArrayList概述2. ArrayList构造方法源码分析3. ArrayList.add()源码分析4. ArrayList.addAll()源码分析5. 总结1. ArrayList概述 ArrayList是Java集合框架中比较常用的一个数据结构了&#xff0c;它底层是基于数组实现的。数组是固定大小的&#xff0c;但是ArrayLi…

禾川HCQ+X3E ModBUS 电机远程启动

前面讲过了 通过EtherCat总线级联X3E控制伺服电机,这次使用ModBus总线远程控制该电机启停。 硬件: HCQ0 1100/1200D X3EB 驱动 SV系列电机,主机电脑或者主PLC,硬件连接:电脑网口连HCQ0 port1 port2 连X3EB,软件需要用到TCP调试工具。 步骤一通讯: 1建立工程,修改本机地…

1月31日 : 读书笔记

为了让操作系统能够使用32位模式&#xff0c;需要对CPU做各种设定 最近的操作系统能同时运行多个程序&#xff0c;如果内存地址的使用范围重叠了怎么办&#xff1f;解决这个问题的方法就是分段。 什么是分段&#xff1f; 打个比方&#xff0c;将4GB的内存分成很多块&#xff0c…

【Mysql第五期 排序与分页】

文章目录案例使用的数据脚本1. 排序数据1.1 排序规则1.2 单列排序1.3 多列排序2.分页2.1 需求2.2 实现规则3.课后习题扩展分析原因问题解决总结案例使用的数据脚本 1.mysql脚本下载链接https://download.csdn.net/download/qq_43674360/87408079 2.或者自己新建一个sql后缀文本…

京东数据分析(竞品监控):飞利浦王牌产品在中国失利

近日&#xff0c;飞利浦集团发布了2022年第四季度及全年的业绩报告。根据报告显示&#xff0c;第四季度集团销售额达54亿欧元&#xff0c;可比销售额增长3%&#xff0c;可比订单量减少8%。 而全年业绩数据显示&#xff0c;集团销售额为178亿欧元&#xff0c;可比销售额下降3%&a…

sql进阶,多表及关联

–odps sql –– –author:宋文理 –create time:2023-02-01 16:24:24 –– – 创建非分区表 CREATE TABLE csxx_ffq( rq STRING COMMENT ‘日期’, xh BIGINT COMMENT ‘序号’, sj STRING COMMENT ‘数据’ ) COMMENT ‘测试数据&#xff08;非分区表)’; – 创建分区表 CRE…

ModuleNotFoundError: No module named ‘jnius‘

在termux中安了 ubuntu22.04 &#xff0c;在其中中使用apt install python3-pip 后运行pip3出错 Traceback (most recent call last):File "/usr/lib/python3/dist-packages/pip/_vendor/platformdirs/android.py", line 85, in _android_folderfrom jnius import au…

call,apply,bind的使用及原理

call,apply,bind的使用方法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"…

StarRocks市场渗透率跻身Top10!

近日&#xff0c;国内著名的研究咨询机构艾瑞咨询发布了《2022年中国数据库研究报告》&#xff08;以下简称“报告”&#xff09;。报告指出&#xff0c;目前数据库产品的国内渗透率达到前所未有的高度&#xff0c;且头部效应明显。其中&#xff0c;StarRocks以“极速统一”的性…

java常用类:日期类Date,Calender和LocalDateTime

java常用类型: Ineteger等包装类 String类&#xff0c;StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录引言日期类Date(第一代)时间戳转字…

缓存更新策略分析

缓存常用于读多写少的场景&#xff0c;用于缓存结果数据&#xff0c;降低响应时间&#xff0c;提高服务性能。通常缓存与数据库一起使用&#xff0c;数据库负责持久化&#xff0c;缓存负责高性能。数据库无法同时满足持久化与高性能&#xff0c;所以引入缓存解决高性能问题。缓…

SwiftUI 文本框TextField添加清除按钮

这里写自定义目录标题前言/背景实现参考前言/背景 使用SwiftUI框架&#xff0c;希望在文本框TextField控件中输入内容后显示一个清除按钮,可以清空内容,像这样&#xff1a; UIKit 框架的 UITextField可以配置clearButtonMode,但是SwiftUI框架里的TextField没有这个&#xff…

javaScript常用语法

一、数据类型1. 原始数据类型(7个)number, string, boolean, undefined, null, symbol, bigint1.1 number包括以下三种浮点和整型数字(如3.1416926和3)NaN(not a number)不是数字infinity超出js数字范围的数值2. 引用数据类型(3个)object, array, function2.1 特殊类型RegExp, …

MySQL Performance Schema知识点

MySQL Performance Schema知识点 程序插桩&#xff08;instrument&#xff09;。程序插桩在MySQL代码中插入探测代码&#xff0c;以获取我们想了解的信息。 消费者表&#xff08;consumer&#xff09;&#xff0c;指的是存储关于程序插桩代码信息的表。如果我们为查询模块添加…

基于Springboot搭建java项目(二十六)——创建Vue前端项目

创建Vue前端项目 一、创建Vue前端项目 1、安装 Vue CLI 1.1、下载Node.js 因为需要使用 npm 安装 Vue CLI&#xff0c;而 npm 是集成在 Node.js 中的&#xff0c;所以第一步我们需要安装 Node.js&#xff0c;访问官网 https://nodejs.org/en/&#xff0c;首页即可下载。 下…