NX二次开发-直线分析函数UF_EVAL_ask_line与NXOpen::Line直线分析的用法
2024-09-06 06:48:02
NX11+VS2013 #include <NXOpen/Line.hxx>
#include <NXOpen/NXException.hxx>
#include <NXOpen/PartCollection.hxx>
#include <NXOpen/Session.hxx>
#include <uf.h>
#include <uf_curve.h>
#include <uf_ui.h>
#include <NXOpen/Edge.hxx>
#include <NXOpen/NXObjectManager.hxx>
#include <uf_eval.h> NXOpen::Session *theSession = NXOpen::Session::GetSession();
NXOpen::Part *workPart(theSession->Parts()->Work());
NXOpen::Part *displayPart(theSession->Parts()->Display()); UF_initialize(); //创建一条直线
UF_CURVE_line_t Line_Coords;
Line_Coords.start_point[] = 10.0;
Line_Coords.start_point[] = 0.0;
Line_Coords.start_point[] = 0.0;
Line_Coords.end_point[] = 100.0;
Line_Coords.end_point[] = 0.0;
Line_Coords.end_point[] = 0.0;
tag_t LineTag = NULL_TAG;
UF_CURVE_create_line(&Line_Coords, &LineTag); //方法1:UFUN方法
//获得一条直线两个端点坐标、直线长度、向量方向 //函数1(UF_CURVE_ask_line_data)
UF_CURVE_line_t AskLinePoint;
UF_CURVE_ask_line_data(LineTag, &AskLinePoint);
double UF1LinePoint1[] = { AskLinePoint.start_point[], AskLinePoint.start_point[], AskLinePoint.start_point[] };//获得直线起点坐标
double UF1LinePoint2[] = { AskLinePoint.end_point[], AskLinePoint.end_point[], AskLinePoint.end_point[] };//获得直线终点坐标 //函数2(UF_EVAL_ask_line)
UF_EVAL_p_t evaluator;
UF_EVAL_initialize(LineTag, &evaluator); UF_EVAL_line_t line;
UF_EVAL_ask_line(evaluator, &line);
double UFLineLength = line.length;//获得直线长度
double UF2LinePoint1[] = { line.start[], line.start[], line.start[] };//获得直线起点坐标
double UF2LinePoint2[] = { line.end[], line.end[], line.end[] };//获得直线终点坐标
double UFLineVec[] = { line.unit[], line.unit[], line.unit[] };//获得直线向量方向 char msg[];
sprintf_s(msg, "直线的长度为:%.3f\n直线的起点坐标X为:%.3f 直线的起点坐标Y为:%.3f 直线的起点坐标Z为:%.3f\n直线的终点坐标X为%.3f 直线的终点坐标Y为:%.3f 直线的终点坐标Z为:%.3f\n直线的向量方向为:%.0f,%.0f,%.0f",
UFLineLength, UF2LinePoint1[], UF2LinePoint1[], UF2LinePoint1[], UF2LinePoint2[], UF2LinePoint2[], UF2LinePoint2[], UFLineVec[], UFLineVec[], UFLineVec[]); lw->Open();
lw->WriteLine(msg); UF_EVAL_free(evaluator); //方法2:NXOpen方法
//获得一条直线两个端点坐标、直线长度
std::vector<Line*> LineVector;
LineVector.push_back(dynamic_cast<Line*>(NXObjectManager::Get(LineTag))); for (int i = ; i < LineVector.size(); i++)
{
double NXLineLength = LineVector[i]->GetLength();//获得直线长度
Point3d NXLinePoint1 = LineVector[i]->StartPoint();//获得直线起点坐标
//char msg[200];
//sprintf_s(msg, "%.3f,%.3f,%.3f", NXLinePoint1.X, NXLinePoint1.Y, NXLinePoint1.Z);
//uc1601(msg, 1);
Point3d NXLinePoint2 = LineVector[i]->EndPoint();//获得直线终点坐标
//sprintf_s(msg, "%.3f,%.3f,%.3f", NXLinePoint2.X, NXLinePoint2.Y, NXLinePoint2.Z);
//uc1601(msg, 1);
} UF_terminate();
最新文章
- 死去活来,而不变质:Domain Model(领域模型) 和 EntityFramework 如何正确进行对象关系映射?
- Django--全文检索功能
- Xcopy命令参数
- Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置
- QQServer_update
- .NET特性-Attribute
- css背景图片、隐藏、指针、垂直居中、去除下划线、缩进、列表类型
- codeforces 755D. PolandBall and Polygon
- python web环境相关
- IIS 服务无法在此时接受控制信息
- laravel5.5解决小程序登陆态的问题
- 【译】索引进阶(六):SQL SERVER索引书签
- pyCharm编辑器激活使用
- L2-008. 最长对称子串
- Priority Queue
- 用JQuery 判断某个属性是否存在hasAttr的解决方法
- Eclipse_生成webservice客户端
- linux 系统文件的特殊权限
- 线程访问ui,使用委托方式
- 编译可移植的python
热门文章
- loj2573[TJOI2018]数字计算
- mysql 日期函数大全
- sql delete语句
- BZOJ 3159: 决战 解题报告
- 「ZJOI2019」线段树 解题报告
- 【LeetCode 27】移除元素
- STL————bitset
- windows server2012r2 安装NET Framework 3.5
- 记录解决java.io.IOException: Server returned HTTP response code: 500 for URL:xxxxxxxx
- IIS身份验证和文件操作权限(二、匿名身份验证)