当前位置: 首页 > news >正文

创建孔、阵列以及body(体)feature(特征)face(面)edge(边)之间的访问源码

//创建操作的函数 // Mandatory UF Includes #include <uf.h> #include <uf_object_types.h> // Internal Includes #include <NXOpen/ListingWindow.hxx> #include <NXOpen/NXMessageBox.hxx> #include <NXOpen/UI.hxx> // Internal+External Includes #include <NXOpen/Annotations.hxx> #include <NXOpen/Assemblies_Component.hxx> #include <NXOpen/Assemblies_ComponentAssembly.hxx> #include <NXOpen/Body.hxx> #include <NXOpen/BodyCollection.hxx> #include <NXOpen/Face.hxx> #include <NXOpen/Line.hxx> #include <NXOpen/NXException.hxx> #include <NXOpen/NXObject.hxx> #include <NXOpen/Part.hxx> #include <NXOpen/PartCollection.hxx> #include <NXOpen/Session.hxx> // Std C++ Includes #include <iostream> #include <sstream> #include<uf_modl.h> using namespace NXOpen; using std::string; using std::exception; using std::stringstream; using std::endl; using std::cout; using std::cerr; //------------------------------------------------------------------------------ // NXOpen c++ test class //------------------------------------------------------------------------------ class MyClass { // class members public: static Session *theSession; static UI *theUI; MyClass(); ~MyClass(); void do_it(); void print(const NXString &); void print(const string &); void print(const char*); private: BasePart *workPart, *displayPart; NXMessageBox *mb; ListingWindow *lw; LogFile *lf; }; //------------------------------------------------------------------------------ // Initialize static variables //------------------------------------------------------------------------------ Session *(MyClass::theSession) = NULL; UI *(MyClass::theUI) = NULL; //------------------------------------------------------------------------------ // Constructor //------------------------------------------------------------------------------ MyClass::MyClass() { // Initialize the NX Open C++ API environment MyClass::theSession = NXOpen::Session::GetSession(); MyClass::theUI = UI::GetUI(); mb = theUI->NXMessageBox(); lw = theSession->ListingWindow(); lf = theSession->LogFile(); workPart = theSession->Parts()->BaseWork(); displayPart = theSession->Parts()->BaseDisplay(); } //------------------------------------------------------------------------------ // Destructor //------------------------------------------------------------------------------ MyClass::~MyClass() { } //------------------------------------------------------------------------------ // Print string to listing window or stdout //------------------------------------------------------------------------------ void MyClass::print(const NXString &msg) { if(! lw->IsOpen() ) lw->Open(); lw->WriteLine(msg); } void MyClass::print(const string &msg) { if(! lw->IsOpen() ) lw->Open(); lw->WriteLine(msg); } void MyClass::print(const char * msg) { if(! lw->IsOpen() ) lw->Open(); lw->WriteLine(msg); } //------------------------------------------------------------------------------ // Do something //------------------------------------------------------------------------------ void MyClass::do_it() { // TODO: add your code here //创建一个体 double coner[3] = { 0,0,0 }; char *edge[3] = { "100","60","40" }; tag_t blk_tag; UF_MODL_create_block1(UF_NULLSIGN, coner, edge, &blk_tag); //create a blend start char *radius = "20"; uf_list_p_t blend_list, face_list, edge_list; tag_t body_tag, tem_face, tem_edge, faces[6], edges[12], blend_feature; int face_count, edge_count; // 遍历面 UF_MODL_create_list(&face_list); UF_MODL_ask_feat_body(blk_tag, &body_tag); UF_MODL_ask_body_faces(body_tag, &face_list); UF_MODL_ask_list_count(face_list, &face_count); for (int i = 0; i <face_count; i++) { UF_MODL_ask_list_item(face_list, i, &tem_face); faces[i] = tem_face; } UF_MODL_delete_list(&face_list); //遍历边 UF_MODL_create_list(&edge_list); UF_MODL_ask_body_edges(body_tag, &edge_list); UF_MODL_ask_list_count(edge_list, &edge_count); for (int j = 0; j < edge_count; j++) { UF_MODL_ask_list_item(edge_list, j, &tem_edge); edges[j] = tem_edge; } UF_MODL_delete_list(&edge_list); // 创建阵列 UF_MODL_create_list(&blend_list); UF_MODL_put_list_item(blend_list, edges[6]); UF_MODL_create_blend(radius, blend_list, 0, 0, 0, 0.5, &blend_feature); UF_MODL_delete_list(&blend_list); // 创建孔 double location[3] = { 80,40,40 }; double direction[3] = { 0,0,-1 }; const char * diame = "15"; const char * depth = "5"; const char * angle = "0"; tag_t hole_id; UF_MODL_create_simple_hole(location, direction, diame, depth, angle, faces[0], faces[1], &hole_id); // create instance double origin[3] = { 10,10,0 }; double dir[3] = { 0,0,1 }; tag_t cyl_tag; UF_MODL_create_cyl1(UF_NEGATIVE, origin, "20", "10", dir, &cyl_tag); char * number_in_x = "2"; char * distance_x = "30"; char * number_in_y = "2"; char * distance_y = "30"; tag_t feature_obj_id; uf_list_p_t feature_list; UF_MODL_create_list(&feature_list); UF_MODL_put_list_item(feature_list, cyl_tag); UF_MODL_create_linear_iset(0, number_in_x, distance_x, number_in_y, distance_y, feature_list, &feature_obj_id); UF_MODL_delete_list(&feature_list); } //------------------------------------------------------------------------------ // Entry point(s) for unmanaged internal NXOpen C/C++ programs //------------------------------------------------------------------------------ // Explicit Execution extern "C" DllExport void ufusr( char *parm, int *returnCode, int rlen ) { UF_initialize();//入口函数 try { // Create NXOpen C++ class instance MyClass *theMyClass; theMyClass = new MyClass(); theMyClass->do_it(); delete theMyClass; } catch (const NXException& e1) { UI::GetUI()->NXMessageBox()->Show("NXException", NXOpen::NXMessageBox::DialogTypeError, e1.Message()); } catch (const exception& e2) { UI::GetUI()->NXMessageBox()->Show("Exception", NXOpen::NXMessageBox::DialogTypeError, e2.what()); } catch (...) { UI::GetUI()->NXMessageBox()->Show("Exception", NXOpen::NXMessageBox::DialogTypeError, "Unknown Exception."); } UF_terminate();//出口函数 } //------------------------------------------------------------------------------ // Unload Handler //------------------------------------------------------------------------------ extern "C" DllExport int ufusr_ask_unload() { return (int)NXOpen::Session::LibraryUnloadOptionImmediately; }
http://www.jsqmd.com/news/521495/

相关文章:

  • 别再只用feature_importance了!用SHAP给你的XGBoost回归模型做个‘CT扫描’(附Python代码)
  • Unidbg补JNI环境踩坑实录:从‘乱码’到正确签名的完整调试过程
  • 文墨共鸣快速上手:3步搭建语义相似度评估系统,小白也能用
  • SAP HANA内存计算实战:从列式存储到CDS View的5个高效技巧
  • Realistic Vision V5.1写实模型参数详解:官方‘起手式’摄影提示词结构拆解
  • 『NAS』颜值即正义!在绿联NAS部署LobeHub接入DeepSeek
  • 3大核心功能让炉石传说决策效率提升60%:HSTracker智能卡组跟踪工具全解析
  • Qwen-Image-2512-Pixel-Art-LoRA部署教程:解决OOM问题的CPU卸载配置详解
  • TinyML决策树库:MCU端原生训练与推理
  • 74HC595驱动4位数码管Arduino库设计与工业级实践
  • FLUX.1-devWebUI定制化:修改主题色、添加水印、导出带版权信息图像
  • 重构游戏体验:StardewXnbHack游戏资源编辑与自定义MOD开发完全指南
  • UDOP-large实际效果:英文新闻首页标题提取准确率98%实测报告
  • 面向“十五五”的仓储空间动态建模与智能计算基础设施构建
  • RAG系统优化必备:Qwen3-Reranker-0.6B轻量部署与集成实战
  • [特殊字符] mPLUG-Owl3-2B部署实战:解决FlashAttention2与SDPA共存冲突的工程方案
  • 基于Jupyter Notebook的深度学习开发:星图GPU平台环境配置指南
  • C语言GUI开发避坑指南:GTK/Qt/WinAPI三大库性能对比与选型建议
  • Anything to RealCharacters 2.5D转真人引擎参数详解:自然皮肤纹理强化提示词库
  • Ostrakon-VL-8B垂直场景:奶茶店原料区标签朝向+保质期+存量三合一识别
  • Ubuntu20.04/Centos8下FSL6.0.4安装避坑指南:从Anaconda环境配置到FSLeyes修复全流程
  • Gemma-3 Pixel Studio真实案例:用户上传手机录屏→操作路径分析→优化建议生成
  • uStepper 8b库详解:STM32闭环步进电机控制实战指南
  • Qwen2-VL-2B-Instruct行业应用:医疗影像报告图文互检、工业质检图文一致性验证
  • 造相 Z-Image文生图快速上手:输入提示词→选模式→点生成→得PNG全流程
  • CLIP ViT-H-14 Web界面使用教程:无需代码交互式图像特征可视化
  • SmallThinker-3B-Preview实战教程:构建带思维链回溯的客服对话系统
  • C++学习基础
  • Swin2SR效果评测:传统插值算法VS智能超分对比
  • AcousticSense AI惊艳案例:雷鬼音乐标志性切分节奏在梅尔频谱中的时序模式