NX二次开发UF_MTX3_mtx4 函数介绍

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

UF_MTX3_mtx4

Defined in: uf_mtx.h 
void UF_MTX3_mtx4(const double mtx_3D [ 9 ] , double mtx_4D [ 16 ] )

overview 概述

Converts a 3D matrix to a 4D matrix with a scale of 1.0 and a zero
translation vector.

将3D 矩阵转换为比例为1.0的4D 矩阵和零平移矢量。

UFUN例子

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

parameters 参数

const doublemtx_3D [ 9 ]Input3D matrix
3D 矩阵
doublemtx_4D [ 16 ]Output4D matrix
4D 矩阵

分割

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;
	//块起点相对于ABS
	double block_orig[3] = { 0.0,0.0,0.0 };
	//方向相对于WCS
	char* 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=20
	UF_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.1250163489018
	UF_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=8
	UF_free(cDiam_parm);
	UF_terminate();
}
extern int ufusr_ask_unload(void)
{
	return (UF_UNLOAD_IMMEDIATELY);
}

效果:
效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Anaconda离线下载torch与安装包

一、下载离线安装包 命令&#xff1a; pip download 安装包名 -d 安装到文件夹名 -i https://pypi.tuna.tsinghua.edu.cn/simple执行这样的命令就会把安装包的离线文件下载到指定文件夹中。 操作&#xff1a; 打开cmd命令行&#xff0c;并进入相应的目录中。 如果是tor…

比尔盖茨:GPT-5不会比GPT-4好多少,生成式AI已达到极限

比尔盖茨一句爆料&#xff0c;成为机器学习社区热议焦点&#xff1a; “GPT-5不会比GPT-4好多少。” 虽然他已不再正式参与微软的日常运营&#xff0c;但仍在担任顾问&#xff0c;并且熟悉OpenAI领导团队的想法。 消息来自德国《商报》&#xff08;Handelsblatt&#xff09;对…

酷开系统 | 追求娱乐不止一种方式,酷开科技带你开启新体验!

在当今社会&#xff0c;娱乐方式多种多样&#xff0c;人们对于娱乐的需求和追求也在日益增长。然而&#xff0c;传统的娱乐方式已经无法满足大家对于多元化、个性化的体验需求。此时&#xff0c;酷开科技以其独特的视角和领先的技术&#xff0c;为消费者们带来了全新的娱乐体验…

蓝桥杯第229题 迷宫与陷阱 BFS C++ 模拟 带你理解迷宫的深奥

题目 迷宫与陷阱 - 蓝桥云课 (lanqiao.cn)https://www.lanqiao.cn/problems/229/learning/?page1&first_category_id1&name%E8%BF%B7%E5%AE%AB%E4%B8%8E%E9%99%B7%E9%98%B1 思路和解题方法 首先&#xff0c;定义了一个结构体node来表示迷宫中的每个节点&#xff0c;包…

苍穹外卖项目笔记(6)— Redis操作营业状态设置

1 在 Java 中操作 Redis 1.1 Redis 的 Java 客户端 Jedis&#xff08;官方推荐&#xff0c;且命令语句同 redis 命令&#xff09;Lettuce&#xff08;底层基于 Netty 多线程框架实现&#xff0c;性能高效&#xff09;Spring Data Redis&#xff08;对 Jedis 和 Lettuce 进行了…

解密Long型数据传递:Spring Boot后台如何避免精度丢失问题

前端和后端之间的数据传递至关重要。然而&#xff0c;当涉及到Long类型数据时&#xff0c;可能会出现精度丢失问题&#xff0c;这会影响数据的准确性。本文将为你介绍两种解决方案&#xff0c;帮助你确保Long类型数据在前端和后端之间的精确传递。 精度丢失测试 访问:http://l…

基于微信小程序的爱心捐赠平台的设计与实现-计算机毕业设计源码64923

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c; 小程序的爱心捐赠平台被用户普遍使用&#xff0c;为方便…

【计算机网络笔记】以太网

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

数学建模-基于BL回归模型和决策树模型对早产危险因素的探究和预测

整体求解过程概述(摘要) 近年来&#xff0c;全球早产率总体呈上升趋势&#xff0c;在我国&#xff0c;早产儿以每年 20 万的数目逐年递增&#xff0c;目前早产已经成为重大的公共卫生问题之一。据研究,早产是威胁胎儿及新生儿健康的重要因素&#xff0c;可能会造成死亡或智力体…

面试必须要知道的MySQL知识--索引

10 索引 10.1 数据页存储结构 10.1.1 数据页的各个部分 在讲索引之前&#xff0c;让我们看看一个单独的数据页是什么样子的 去除掉一些我们不太需要那么关注的部分后&#xff0c;简化如下&#xff1a; 也就是说平时我们在一个表里插入的一行一行的数据会存储在数据页里&#…

MySQL企业版之Firewall(SQL防火墙)

​​​1. 关于Firewall插件 2. Firewall插件的工作方式 3. Firewall插件测试 4. 总结延伸阅读 1. 关于Firewall插件 Friewall是MySQL企业版非常不错的功能插件之一,启用Firewall功能后,SQL的执行流程见下图示意: 2. Firewall插件的工作方式 Firewall插件的工作机制大概是…

FL Studio水果软件21.1新版!新增Hyper Chorus插件及自动更新功能

我们很高兴地宣布在去年12月发布重大版本更新后&#xff0c;FL Studio在2023年8月正式更新到21.1版。本次更新虽然只是维护性质&#xff0c;但我们还是为大家带来了一些全新的功能&#xff0c;包括通过钢琴卷中的音阶捕捉和自定义音符工具&#xff0c;引入更快、更有创意的音符…

4/150:寻找两个正序数组的中位数⭐

题目&#xff1a;寻找两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 题解1&#xff1a;暴力 暴力思路简介&#xff0c;…

实测有效的 8 个顶级Android 数据恢复工具

由于我们现在生活在一个依赖数字数据的时代&#xff0c;当重要文件从我们的 Android 手机中消失时&#xff0c;这将是一场数字噩梦。如果您没有预先备份Android手机上的数据或未能通过备份找到已删除的数据&#xff0c;那么选择最好的Android数据恢复软件是最佳选择。 因此&am…

uniapp中进行地图定位

目录 一、创建map 二、data中声明变量 三、获取当前位置信息&#xff0c;进行定位 四、在methods中写移动图标获取地名地址的方法 五、最终展示效果 一、创建map <!-- 地图展示 --><view class"mymap"><!-- <view class"mymap__map"…

大数据存储技术期中考点梳理

1.CAP理论 分布式系统的CAP理论: 首先将分布式系统中的三个特性进行如下归纳: 口(一致性(C):在分布式系统中的所有数据备份&#xff0c;在同一时刻是否有同样的值。(等于所有节点访问同一份最新的数据副本) 口可用性(A):在集群中一部分节点故障后&#xff0c;集群整体是否还能…

再探Java集合系列—ArrayList

适用于什么场景&#xff1f; 检索比较多的场景&#xff0c;例如学生成绩管理系统&#xff0c;老师对学生的成绩进行排名或查询操作 ArrayList有哪些特点&#xff1f; 1、ArrayList集合底层采用了数组数据结构&#xff0c;是Object类型 2、动态数组。ArrayList的默认初始容量…

西南科技大学(数据结构A)期末自测练习二

一、填空题(每空1分,共10分) 1、在线性表的下列运算中,不改变数据元素之间结构关系的运算是( D ) A、插入 B、删除 C、排序 D、定位 2、顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( B ) A.110 B.108 C.100 …

爱普生L3153变ET-2710修复

晚上还在加班&#xff0c;老婆发来消息说打印机故障了&#xff0c;通过网络不能访问 回家一下&#xff0c;三个灯&#xff08;电源&#xff0c;网络&#xff0c;墨水&#xff09;闪烁 重启多次没效果&#xff0c;问客服&#xff0c;说是存储错误&#xff0c;要送售后&#xff…

4.4-Docker bridge0详解

在Docker世界中&#xff0c;两个container是通过bridge0连接起来的。 首先&#xff0c;介绍一个命令&#xff1a;docker network ls 这个docker network ls明令会列举出来当前这台机器上docker有哪些网络。 先看一下bridge。 现在有一个容器flask-hello-docker&#xff0c;它是…