1. 程式人生 > 其它 >NX二次開發-UFUN獲得映象矩陣uf5946

NX二次開發-UFUN獲得映象矩陣uf5946

內容為轉載,出自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日