首页 > 其他分享 >NX二次开发UF_CSYS_edit_matrix_of_object 函数介绍

NX二次开发UF_CSYS_edit_matrix_of_object 函数介绍

时间:2023-11-27 15:03:41浏览次数:34  
标签:obj matrix edit char 二次开发 UF MODL id


文章作者:里海

UF_CSYS_edit_matrix_of_object

Defined in: uf_csys.h 
int UF_CSYS_edit_matrix_of_object(tag_t object_id, tag_t matrix_id )

overview 概述

Updates the specified coordinate system matrix with the identifier of
the new coordinate system matrix that you specify.
This function does not perform an update. In order for all of the
effects of changing the object’s matrix to occur, you must call
UF_MODL_update at some point after calling this function.

使用指定的新坐标系矩阵的标识符更新指定的坐标系矩阵。此函数不执行更新。为了使更改对象矩阵的所有效果发生,必须在调用此函数之后的某个时间点调用 UF _ MODL _ update。

UFUN例子


parameters 参数

tag_t

object_id

Input

Identifier of the object whose matrix is to be updated.

要更新其矩阵的对象的标识符。

tag_t

matrix_id

Input

Object identifier of the new matrix for the object

对象的新矩阵的对象标识符

NX二次开发UF_CSYS_edit_matrix_of_object 函数介绍_NX二次开发

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);
}

效果:

NX二次开发UF_CSYS_edit_matrix_of_object 函数介绍_jvm_02


标签:obj,matrix,edit,char,二次开发,UF,MODL,id
From: https://blog.51cto.com/wangpaifeixingy/8586285

相关文章

  • NX二次开发UF_CSYS_set_wcs_display 函数介绍
    文章作者:里海UF_CSYS_set_wcs_displayDefinedin:uf_csys.h intUF_CSYS_set_wcs_display(intdisplay_status)overview概述Setdisplayofworkcoordinatesystem.展示工作坐标系。UFUN例子parameters参数intdisplay_statusInput1=thewcsshouldbedisplayed0=thewc......
  • NX二次开发UF_CSYS_create_csys 函数介绍
    文章作者:里海UF_CSYS_create_csysDefinedin:uf_csys.h intUF_CSYS_create_csys(constdoublecsys_origin[3],tag_tmatrix_id,tag_t*csys_id)overview概述CreatesaCSYS.创建一个CSYS。UFUN例子parameters参数constdoublecsys_origin[3]InputTheoriginfor......
  • NX二次开发UF_CSYS_set_wcs 函数介绍
    文章作者:里海UF_CSYS_set_wcsDefinedin:uf_csys.h intUF_CSYS_set_wcs(tag_tcsys_id)overview概述Setstheworkcoordinatesystemtotheprototypecoordinatesystemwhosetagyouspecifyandthenupdatesthedisplay.Ifanoccurrencecoordinatesystemisspeci......
  • 7-Bioedit软件做测序后的序列比对和序列的反向互补与翻译
     1,我有两段序列,一段是基因组提取出来的CDS序列,一段是PCR出来的测序的序列,我们需要将它们比对,看看有没有碱基的变化。这时候就需要用到Bioedit软件了。首先,将两端待比对的序列,放到记事本中,要fasta格式,做个例子,如下: 2,选中全部,CTRL+C,先复制。再打开Bioedit软件,File>NewAlignm......
  • 从word复制内容到wangEditor富文本框的时候会把html标签也复制过来,如果只想实现直接复
    从word复制内容到wangEditor富文本框的时候会把html标签也复制过来,如果只想实现直接复制纯文本,有什么好的实现方式?将Word中的内容复制到富文本编辑器时,常常会带有大量的HTML标签和样式,这可能导致不必要的格式混乱。要实现纯文本的粘贴,你可以尝试以下方法:1.使用纯文本粘贴快捷......
  • CodeForces 1898F Vova Escapes the Matrix
    洛谷传送门CF传送门Type\(1\)是简单的。直接输出空格个数即可。Type\(2\)也是简单的。显然要堵住不在起点和出口最短路上的格子,答案为空格个数减去起点到任一出口的最短路。考虑Type\(3\)。容易发现答案为空格个数减去起点到任两个出口的最短路(公共部分只算一次)。考虑......
  • monaco editor自定义代码解析和代码高亮颜色配置
    //目前使用到的关于解析配置exportconstlanguage={//是否区分大小写,true区分ignoreCase:false,//关键字keywords:['aaa','bbb'],//类型关键字typeKeywords:[],//代码解析配置格式为[正则表达式,对应的类型如(string,number,comment)]tokenizer:......
  • vue2+element+vue-quill-editor实现富文本框组件(使用链接引入视频+上传本地视频+上传
    参考文档:https://www.duidaima.com/Group/Topic/Vue/12272前提不赘述,npm引入插件并全局导入 components文件夹下创建ArticleEditor.vue:<template><divclass=""><!--富文本框--><quill-editorref="myQuillEditor"v-bind:va......
  • 本地Stackedit Markdown编辑器设置远程访问
    StackEdit是一个受欢迎的Markdown编辑器,在GitHub上拥有20.7kStar!,它支持将Markdown笔记保存到多个仓库,包括Gitee、GitHub和Gitea。此在线笔记工具还提供了一些便捷功能,如拖拽或粘贴上传图片、文件搜索功能,以及可切换为炫酷的暗黑主题,这些功能特别适合那些喜欢使用Markdown来记录笔......
  • 分享我对DiscuzQ这款现代化开源轻社区的二次开发成果。DiscuzQ依然是站长的最佳选择!
    简要说一下二开的功能:贴文列表样式优化、增加国内AI大模型功能、增加社区AI助手(会自动发帖和回帖)、编辑器功能优化、pc端导航优化、h5端导航优化、修复各种加载不出来加载缓慢的问题等等细节。还有多少站长在使用DiscuzQ呢?我为什么选择了DiscuzQ?一个月前,我在寻找合适......