NX二次開發-UFUN獲得映象矩陣uf5946
阿新 • • 發佈:2021-10-17
內容為轉載,出自https://www.cnblogs.com/KMould/p/14084087.html
使用uf5946獲取映象矩陣
注意:uf5946映象這個函式,只能用#defineUF_plane_type=46這種型別的資料作為映象面,不能用#defineUF_datum_plane_type=197這種型別的資料作為映象面。
NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_modl.h> #include <uf_trns.h> UF_initialize(); uc1601("映象體",1); //建立塊 UF_FEATURE_SIGN Sign = UF_NULLSIGN;//設定布林 double Corner_pt[3] = {0.0, 100.0, 0.0};//設定原點 char *Edge_Len[3] = {"100", "100", "100"};//設定長寬高 tag_t BlkTag = NULL_TAG; UF_MODL_create_block(Sign, NULL_TAG, Corner_pt, Edge_Len, &BlkTag); //特徵找體 tag_t body_tag = NULL_TAG; UF_MODL_ask_feat_body(BlkTag, &body_tag);//建立基準面 double dP1[3] = { 0.0,0.0,0.0 }; double dDir[3] = { 0.0,1.0,0.0 }; tag_t tagPlane; UF_MODL_create_plane(dP1, dDir, &tagPlane); //獲取轉換矩陣 double douMatris[12]; int iSt = 0; tag_t tagPlanes[] = { tagPlane }; uf5946(tagPlanes, douMatris, &iSt); tag_t tagObjs[] = { body_tag }; int iCount = 1; int iMoveOrCopy = 2;//1:Move 2:Copy int iDestLayer = 0; //0:原來的圖層 //-1活動的圖層 //1-256指定的圖層 int iTraceCurves = 1;//軌跡狀態,1:開,2:關。 tag_t tagCopies = NULL_TAG; //變化後坐標tag 複製的物件識別符號的列表。當move_or_copy等於1 (move)時不使用。 //當move_or_copy為2(copy)時,呼叫者必須將其賦予足夠大的維度,以包含物件陣列中相同數量的物件。 tag_t tagTraceCurveGroup = NULL_TAG; //一組軌跡曲線。當trace_curves輸入被設定為2(off)時,不會使用這個函式。 int iStatus = 0;//0:成功 1-12錯誤 if (iSt == 0) { //轉換的實現 uf5947(douMatris, tagObjs, &iCount, &iMoveOrCopy, &iDestLayer, &iTraceCurves, &tagCopies, &tagTraceCurveGroup, &iStatus); } UF_terminate();
錯誤示例
當使用UF_MODL_create_fixed_dplane建立基準面時,不能映象
NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_modl.h> #include <uf_trns.h> UF_initialize(); uc1601("映象體",1); //建立塊 UF_FEATURE_SIGN Sign = UF_NULLSIGN;//設定布林 double Corner_pt[3] = {0.0, 100.0, 0.0};//設定原點 char *Edge_Len[3] = {"100", "100", "100"};//設定長寬高 tag_t BlkTag = NULL_TAG; UF_MODL_create_block(Sign, NULL_TAG, Corner_pt, Edge_Len, &BlkTag); //特徵找體 tag_t body_tag = NULL_TAG; UF_MODL_ask_feat_body(BlkTag, &body_tag); //建立固定的基準平面 double Origin_Point[3] = { 0.0,0.0,0.0 }; double Plane_Normal[3] = { 0.0,1.0,0.0 }; tag_t tagPlane = NULL_TAG; UF_MODL_create_fixed_dplane(Origin_Point, Plane_Normal, &tagPlane); //獲取轉換矩陣 double douMatris[12]; int iSt = 0; tag_t tagPlanes[] = { tagPlane }; uf5946(tagPlanes, douMatris, &iSt); tag_t tagObjs[] = { body_tag }; int iCount = 1; int iMoveOrCopy = 2;//1:Move 2:Copy int iDestLayer = 0; //0:原來的圖層 //-1活動的圖層 //1-256指定的圖層 int iTraceCurves = 1;//軌跡狀態,1:開,2:關。 tag_t tagCopies = NULL_TAG; //變化後坐標tag 複製的物件識別符號的列表。當move_or_copy等於1 (move)時不使用。 //當move_or_copy為2(copy)時,呼叫者必須將其賦予足夠大的維度,以包含物件陣列中相同數量的物件。 tag_t tagTraceCurveGroup = NULL_TAG; //一組軌跡曲線。當trace_curves輸入被設定為2(off)時,不會使用這個函式。 int iStatus = 0;//0:成功 1-12錯誤 if (iSt == 0) { //轉換的實現 uf5947(douMatris, tagObjs, &iCount, &iMoveOrCopy, &iDestLayer, &iTraceCurves, &tagCopies, &tagTraceCurveGroup, &iStatus); } UF_terminate();
阿飛
2021年10月16日