合并面并删除参数

  1 // NX 8.5.3.3
  2 // Journal created by Administrator on Mon Apr 20 11:21:24 2020 中国标准时间
  3 //
  4 #include "C:\\all_uf.h"
  5 #include <uf_defs.h>
  6 #include <NXOpen/NXException.hxx>
  7 #include <NXOpen/Session.hxx>
  8 #include <NXOpen/BasePart.hxx>
  9 #include <NXOpen/Builder.hxx>
 10 #include <NXOpen/Expression.hxx>
 11 #include <NXOpen/ExpressionCollection.hxx>
 12 #include <NXOpen/Face.hxx>
 13 #include <NXOpen/FaceDumbRule.hxx>
 14 #include <NXOpen/Features_Brep.hxx>
 15 #include <NXOpen/Features_DeleteFaceBuilder.hxx>
 16 #include <NXOpen/Features_FeatureCollection.hxx>
 17 #include <NXOpen/NXObject.hxx>
 18 #include <NXOpen/Part.hxx>
 19 #include <NXOpen/PartCollection.hxx>
 20 #include <NXOpen/Plane.hxx>
 21 #include <NXOpen/PlaneCollection.hxx>
 22 #include <NXOpen/Preferences_PartModeling.hxx>
 23 #include <NXOpen/Preferences_PartPreferences.hxx>
 24 #include <NXOpen/Preferences_PartPreferences.hxx>
 25 #include <NXOpen/Preferences_PartVisualizationLine.hxx>
 26 #include <NXOpen/ScCollector.hxx>
 27 #include <NXOpen/ScRuleFactory.hxx>
 28 #include <NXOpen/SelectISurface.hxx>
 29 #include <NXOpen/SelectObject.hxx>
 30 #include <NXOpen/SelectionIntentRule.hxx>
 31 #include <NXOpen/Session.hxx>
 32 #include <NXOpen/TaggedObject.hxx>
 33 #include <NXOpen/Unit.hxx>
 34 #include <NXOpen/Face.hxx>
 35 #include <NXOpen/FaceTangentRule.hxx>
 36 #include <NXOpen/NXObjectManager.hxx>
 37 #include <uf_defs.h>
 38 #include <uf_ui_types.h>
 39 #include <iostream>
 40 #include <NXOpen/Session.hxx>
 41 #include <NXOpen/UI.hxx>
 42 #include <NXOpen/NXMessageBox.hxx>
 43 #include <NXOpen/Callback.hxx>
 44 #include <NXOpen/NXException.hxx>
 45 #include <NXOpen/BlockStyler_UIBlock.hxx>
 46 #include <NXOpen/BlockStyler_BlockDialog.hxx>
 47 #include <NXOpen/BlockStyler_PropertyList.hxx>
 48  #include <NXOpen/BlockStyler_Group.hxx>
 49 #include <NXOpen/BlockStyler_FaceCollector.hxx>
 50 #include <uf.h>
 51  #include <uf_obj.h>
 52 #include <NXOpen/NXObjectManager.hxx>
 53 #include <NXOpen/PartCollection.hxx>
 54 #include <NXOpen/Face.hxx>
 55 #include <NXOpen/FaceTangentRule.hxx>
 56 #include <NXOpen/ScCollectorCollection.hxx>
 57 #include <NXOpen/ScRuleFactory.hxx>
 58 using namespace NXOpen;
 59 
 60 #define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))
 61 static int report(char *file, int line, char *call, int irc)
 62 {
 63     if (irc)
 64     {
 65         char    messg[133];
 66         printf("%s, line %d:  %s\n", file, line, call);
 67         (UF_get_fail_message(irc, messg)) ?
 68             printf("    returned a %d\n", irc) :
 69             printf("    returned error %d:  %s\n", irc, messg);
 70     }
 71     return(irc);
 72 }
 73 
 74 
 75 
 76 extern "C" DllExport int ufusr_ask_unload()
 77 {
 78     return (int)Session::LibraryUnloadOptionImmediately;
 79 }
 80 
 81 static int select_filter_proc_fn(tag_t object, int type[1], void* user_data, UF_UI_selection_p_t select)
 82 {
 83     //uf_list_p_t  edge_list;
 84     //int edge_count = 0, Type = 0;
 85     //double Point[3];
 86     //double Dir[3];
 87     //double Box[6];
 88     //double Radius[3];
 89     //double RadData[3];
 90     //int NormDir, vertex_count = 0;
 91     //UF_MODL_ask_face_data(object, &Type, Point, Dir, Box, Radius, RadData, &NormDir);
 92     //UF_MODL_ask_face_edges(object, &edge_list);
 93     //UF_MODL_ask_list_count(edge_list, &edge_count);
 94 
 95     //tag_t edge_tag = NULL_TAG;
 96     //UF_MODL_ask_list_item(edge_list, 1, &edge_tag);
 97     //double point1[3];
 98     //double point2[3];
 99     //UF_MODL_ask_edge_verts(edge_tag, point1, point2, &vertex_count);
100 
101 
102     if (object == NULL)
103     {
104         return UF_UI_SEL_REJECT;
105     }
106     /*else if (object&&edge_count == 2 && Type == UF_cone_subtype && vertex_count <= 0)*/
107     else if (object)
108     {
109         return UF_UI_SEL_ACCEPT;
110     }
111 }
112 
113 static int init_proc(UF_UI_selection_p_t select, void* user_data)
114 {
115     int num_triples = 1;//可选类型的数量
116     
117     UF_UI_mask_t mask_triples[] =
118     {UF_solid_type, UF_UI_SEL_NOT_A_FEATURE };//可选对象类型
119     UF_UI_set_sel_mask(select, UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC, num_triples, mask_triples);
120     if ((UF_UI_set_sel_procs(select, select_filter_proc_fn, NULL, user_data)) == 0)
121     {
122         return UF_UI_SEL_SUCCESS;
123     }
124     else
125     {
126         return UF_UI_SEL_FAILURE;
127     }
128 }
129 
130 
131 
132 extern "C" DllExport void ufusr(char *param, int *retCode, int paramLen)
133 {
134     UF_initialize();
135     char sCue[] = "象选择对话框";
136     char sTitle[] = "象选择对话框";
137     int iScope = UF_UI_SEL_SCOPE_NO_CHANGE;
138     int iResponse;
139     tag_t *tObject;
140     int count = 0;
141     UF_UI_select_with_class_dialog(sCue, sTitle, iScope, init_proc, NULL, &iResponse, &count, &tObject);
142     if (count)
143     {
144         uf_list_p_t bodylist=NULL;
145         UF_MODL_create_list(&bodylist);
146         for (size_t i = 0; i < count; i++)
147         {
148 
149             int opt = 1;                 //1=在同一个曲面上,2=转换为B曲面        
150             tag_t face_tags = NULL_TAG;    //如果第一个参数是2需要输入
151             tag_t result_tag = NULL_TAG;   //返回特征
152             UF_MODL_edit_face_join(opt, tObject[i], &face_tags, &result_tag);
153             UF_DISP_set_highlight(tObject[i], 0);
154             UF_MODL_put_list_item(bodylist, tObject[i]);            
155         }
156         UF_CALL(UF_MODL_delete_body_parms(bodylist));
157         UF_CALL(UF_MODL_delete_list(&bodylist));
158     }
159     else
160     {
161         return;
162     }
163             
164 }

 

posted @ 2020-04-25 14:14  老婆饼里有老婆  阅读(246)  评论(0编辑  收藏  举报