NX二次开发UF_CSYS_map_point 函数介绍

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

UF_CSYS_map_point

Defined in: uf_csys.h 
int UF_CSYS_map_point(int input_csys, double input_point [ 3 ] , int output_csys, double output_point [ 3 ] )

overview 概述

Maps a point from one coordinate system to a point in another
coordinate system. The coordinate system can be one of the following
constants.
UF_CSYS_ROOT_COORDS is the ABS of the displayed part.
UF_CSYS_WORK_COORDS is the ABS of the work part.
UF_CSYS_ROOT_WCS_COORDS is the WCS of the displayed part.
For example:
To convert a point from absolute coordinates of the displayed part to
the WCS:
input_csys = UF_CSYS_ROOT_COORDS;
output_csys = UF_CSYS_ROOT_WCS_COORDS;
To convert a point from the work part absolute coordinates to the
displayed part absolute coordinates:
input_csys = UF_CSYS_WORK_COORDS;
output_csys = UF_CSYS_ROOT_COORDS;

将一个点从一个坐标系映射到另一个坐标系。坐标系可以是下列常量之一。UF _ CSYS _ ROOT _ COORDS 是显示部件的 ABS。UF _ CSYS _ WORK _ COORDS 是工作部分的 ABS。UF _ CSYS _ ROOT _ WCS _ COORDS 是显示部分的 WCS。例如: 将一个点从显示部分的绝对坐标转换为 WCS: input _ csys = UF _ CSYS _ ROOT _ COORDS; output _ csys = UF _ CSYS _ ROOT _ WCS _ COORDS; 将一个点从工作部分的绝对坐标转换为显示部分的绝对坐标: input _ csys = UF _ CSYS _ WORK _ COORDS; output _ csys = UF _ CSYS _ ROOT _ COORDS;

UFUN例子

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

parameters 参数

intinput_csysInputCSYS of point to be mapped which can be: UF_CSYS_ROOT_COORDS ( Coordinate space of the root part which is the whole part being displayed), UF_CSYS_WORK_COORDS ( Coordinate space of the work part), UF_CSYS_ROOT_WCS_COORDS ( Root WCS)
要映射的点的 CSYS 可以是: UF _ CSYS _ ROOT _ COORDS (根部分的坐标空间,即显示的整个部分) ,UF _ CSYS _ WORK _ COORDS (工作部分的坐标空间) ,UF _ CSYS _ ROOT _ WCS _ COORDS (根 WCS)
doubleinput_point [ 3 ]InputThe point (xyz) to be mapped.
要映射的点(xyz)。
intoutput_csysInputCSYS to be mapped to
要映射到的 CSYS
doubleoutput_point [ 3 ]OutputThe resultant point (xyz) of the mapping
映射的合点(xyz)

分割

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

效果:
效果

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【腾讯云云上实验室】探索保护数据之盾背后的安全监控机制

当今数字化时代&#xff0c;数据安全成为了企业和个人最为关注的重要议题之一。随着数据规模的不断增长和数据应用的广泛普及&#xff0c;如何保护数据的安全性和隐私性成为了迫切的需求。 今天&#xff0c;我将带领大家一起探索腾讯云云上实验室所推出的向量数据库&#xff0c…

git 对已有的项目代码建立github仓库

首先在项目根路径下使用以下命令初始化git配置文件&#xff1b; git init关联github仓库地址&#xff0c;我这里使用的是SSH连接方式&#xff1b; git remote add origin gitgithub.com:xxxxx.git关联main分支&#xff0c;其中current_branch代表着你需要push的分支&#xff…

小学语文老师重点工作

小学语文老师是学生在语言学习过程中的关键引导者&#xff0c;他们的主要职责是帮助学生建立正确的语言基础&#xff0c;培养良好的阅读习惯&#xff0c;并提高学生的语文素养。以下是小学语文老师的一些重点工作。 一、教授语言知识 小学语文老师首要的任务是教授学生语言知识…

zerotier 入门及初始使用

官网终端下载地址 https://www.zerotier.com/download/ 配置 创建网络 到默认的控制中心创建网络 https://my.zerotier.com/ 点击进入,将网络ID复制 加入网络 MacOS 将上面的网络ID复制到下方进行输入 Windows Linux # xxxxxxxxxxxxxx 网络节点ID sudo zerotier-cli join xx…

ResizeObserver loop limit exceeded报错解决方案

前言&#xff1a; 控制台没有报错&#xff0c;但是开发Vue项目过程中一直报ResizeObserver loop limit exceeded 错&#xff0c;找到以下解决方式。在main.js文件中重写 ResizeObserver 方法。 main.js文件 &#xff08;完整版&#xff09; import { createApp } from "v…

Django QuerySet.order_by SQL注入漏洞(CVE-2021-35042)

漏洞描述 Django 于 2021年7月1日发布了一个安全更新&#xff0c;修复了函数QuerySet.order_by中的 SQL 注入漏洞。 参考链接&#xff1a; Django security releases issued: 3.2.5 and 3.1.13 | Weblog | Django 该漏洞需要开发人员使用order_by功能。此外&#xff0c;还可…

手动实现 git 的 git diff 功能

这是 git diff 后的效果&#xff0c;感觉挺简单的&#xff0c;不就是 比较新旧版本&#xff0c;新增了就用 "" 显示新加一行&#xff0c;删除了就用 "-" 显示删除一行&#xff0c;修改了一行就用 "-"、"" 显示将旧版本中的该行干掉了并…

【分布式】分布式中的时钟

一、物理时钟 vs 逻辑时钟 时钟的存在主要是为了标识事件的发生顺序。 分布式系统不使用物理时钟记录事件&#xff0c;分布式系统中每个节点记录的时间并不一样&#xff0c;即使设置了 NTP 时间同步节点间也存在毫秒级别的偏差 所以需要有另外的方法记录事件顺序关系&#x…

盘点43个Python登录第三方源码Python爱好者不容错过

盘点43个Python登录第三方源码Python爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 项目名称 bnuz中国电信校园网模拟登录&#xff0c;python selenium BNUZ教务系统认证爬虫Python语言实现&#xff0c;你可以用…

Windows IDEA Python开发环境安装+爬虫示例

文章目录 Python下载安装开发工具IDEA包管理安装pip基本用法从 requirements.txt 安装依赖 项目示例部署在 Linux 上安装Python在 Linux 上创建虚拟环境&#xff1a;安装依赖&#xff1a;运行你的爬虫 Python下载安装 Python 安装包下载地址&#xff1a;https://www.python.or…

windbg双机调试

1&#xff1a;虚拟机增加串行端口 2&#xff1a;操作步骤&#xff1a;编辑虚拟机设置 -> 添加 -> 串行端口 -> 完成 参数配置&#xff1a;使用命名管道 -> \\.\pipe\com_1 -> 该端是服务器&#xff0c;另一端是应用程序 -> 轮询时主动放弃CPU->确定 3 -b…

【学习笔记】GameFramework的非官方实例TowerDefense-GameFramework-Demo的流程

一、从游戏开始到打开一个Menu GameStart.unity GameEntry.Builtin.cs ProcedureComponent.cs GameStart.unity->GameFramework->Builtin->Procedure ProcedureLaunch.cs ProcedureSplash.cs ProcedurePreload.cs ProcedureLoadingScene.cs DataTables/Scene.txt Pro…