nx二次开发c语言,NX二次开发-UFUN API函数编程基础
1.NXOpen C 的函數(shù)
函數(shù)名稱的約定
NX Open C 共有2類名稱約定:一個是標(biāo)準(zhǔn)的NX Open C 的函數(shù)名稱約定;另一個是以前版本的原有的名稱約定。
1.標(biāo)準(zhǔn)名稱約定
【格式】UF__
【說明】
(1)UF:User Funciton的簡寫,表示該函數(shù)為NX Open C 函數(shù)。
(2):應(yīng)用或模塊的名稱縮寫。例如MODL和DISP分別是Modeling模塊和Display功能的名稱縮寫。
(3):表示其實(shí)現(xiàn)功能的語言描述,一般由下劃線分開的動詞和名詞(或詞組)組成。常用的動詞由ask(查詢)、create(創(chuàng)建)、edit(編輯)、set(設(shè)置)、delete(刪除)等。
例如:
UF_MODL_create_block1() 為創(chuàng)建塊的函數(shù);
UF_DISP_set_highlight()為高亮顯示對象的函數(shù)。
【格式】uc和uf
【說明】代表NX Open C 函數(shù),通常為4位數(shù)或3位數(shù)接一個字母。
例如:uc1601位一個提示信息函數(shù)。
-----------------------------------------------------------------------------------------------------------------------------------
函數(shù)參數(shù)的約定
NX Open C 提供的函數(shù)遵守ANSI/ISO C的標(biāo)準(zhǔn)。并以下列格式在頭文件中提供函數(shù)原型:
(變量列表);
返回數(shù)據(jù)類型通常是C語言數(shù)據(jù)類型或NX Open C自定義數(shù)據(jù)類型。參數(shù)的輸入輸出方式有3種,分別為I(Input)、O(Output)和OF(Output Free),具體說明見表。
參數(shù)輸入方式說明
元素
描述
I
表示參數(shù)為輸入方式,參數(shù)在使用前必須賦值
O
表示參數(shù)為輸出方式,使用前無須賦值
OF
表示參數(shù)為輸出方式,切使用后需要釋放內(nèi)存。NX Open 提供的常用釋放內(nèi)存函數(shù)有UF_free()、UF_free_string()和UF_STYLER_free_value()等,至于選擇哪種釋放函數(shù)需視具體情況而定
例如,函數(shù)UF_PART_open()的相關(guān)信息如下:
【名稱】UF_PART_open
【使用環(huán)境】Internal & External
【語法格式】
int UF_PART_open(
char *part_name,
tag_t *part,
UF_PART_load_status_t *error_status );
【描述】加載一個NX部件文件到NX的交互環(huán)境中,并把它設(shè)為工作部件和當(dāng)前顯示部件,該函數(shù)的描述見表。
函數(shù)UF_PART_open參數(shù)描述
2.NX Open C 的數(shù)據(jù)類型
除了C語言標(biāo)準(zhǔn)的數(shù)據(jù)類型外,NX Open C還提供了一些自定義的數(shù)據(jù)類型,如tag_t類型、結(jié)構(gòu)類型(Structure Type)、枚舉類型(Enum Type)、聯(lián)合類型(Union Type)與指針類型(Pointer Type)等,它們統(tǒng)一用后綴“_t”表示,且這些數(shù)據(jù)類型的指針用后綴“_p_t”命名表示。
數(shù)據(jù)類型約定如表所示
后綴
描述
_t
數(shù)據(jù)類型
_p_t
數(shù)據(jù)類型的指針
_s
結(jié)構(gòu)類型
_e
枚舉類型
_u
聯(lián)合類型
_f_t
函數(shù)指針
tag_t 類型
NX Open C 使用最多的數(shù)據(jù)類型是tag_t,在“%UGII_BASE_DIR%\ugopen”目錄下,文件uf_defs.h中定義如下:
typedef unsigned int tag_t, *tag_p_t;
在NX環(huán)境中,tag_t是NX對象的句柄,即任何確定存在的NX對象的唯一標(biāo)識。它是一種不重復(fù)的無符號整型數(shù)值,主要用于標(biāo)識應(yīng)用程序中的對象,如部件、特征、草圖、曲線、屬性和表達(dá)式導(dǎo)等。NX應(yīng)用程序只能訪問句柄,而不能直接訪問句柄所指示的實(shí)際對象。應(yīng)用程序一般通過調(diào)用API函數(shù)獲取句柄,并且在其他API函數(shù)中使用這個句柄,以引用它指示的對象,在此過程中,句柄的實(shí)際值對程序來說是無關(guān)緊要的。NULL_TAG是用來表示暫時不標(biāo)識任何對象的Tag,相當(dāng)于初始值為零。此外,tag_p_t是指向tag_t數(shù)據(jù)類型的指針。
以部件對象為例,下面的代碼首先獲取工作部件的tag_t值,然后獲取該句柄所引用部件對象的文件名:
tag_t tWorkPart;
char cPartName[128];
tWorkPart = UF_ASSEM_ask_work_part();
UF_PART_ask_part_name(tWorkPart, cPartName);
結(jié)構(gòu)類型
NX Open C 采用C語言的語法定義了一些常用的結(jié)構(gòu)類型,將相關(guān)的不同類型數(shù)據(jù)封裝在一起使用,這些結(jié)構(gòu)類型用后綴“_s”表示。例如:
struct UF_STYLER_item_id;
{
int reason;
const char *item_id;
int subitem_index;
int count;
int item_attr;
int indicator;
UF_STYLER_value_t value;
}
Typedef struct UF_STYLER_item_value_type_s UF_STYLER_item_value_type_t,
*UF_STYLER_item_value_type_p_t;
結(jié)構(gòu)體UF_STYLER_item_value_type_s封裝了UI Styler對話框控件的基本屬性,如reason、item_id和value等。
NX Open 使用關(guān)鍵字typedef將該結(jié)構(gòu)類型定義為新類型UF_STYLER_item_value_type_t,用戶可以使用它定義結(jié)構(gòu)變量,然后引用結(jié)構(gòu)體內(nèi)的數(shù)據(jù)成員。例如:
UF_STYLER_item_value_type_t data;
UF_STYLER_ask_value(dialog_id, &data);
...
UF_STYLER_free_value(&data);
枚舉類型
枚舉類型將變量的值一一列舉出來,變量的值只限于所列舉的范圍。NX Open C 采用C語言的語法定義了一些常用的枚舉類型,使用后綴“_e”表示。以枚舉類型UF_ASSEM_load_status_e為例,下面給出其詳細(xì)定義:
enum UF_ASSEM_load_status_e
{
UF_ASSEM_ok,
UF_ASSEM_suppressed,
UF_ASSEM_not_loaded,
UF_ASSEM_instance_suppressed
};
typedef enum UF_ASSEM_load_status_e UF_ASSEM_load_status_t;
枚舉類型 UF_ASSEM_load_status_e 表示部件在裝配體中的狀態(tài)。NX Open C 使用typedef關(guān)鍵字將該枚舉類型定義為新類型UF_ASSEM_load_status_t,例如:
char sPartPath[] = "E:\\Example\\part.prt";
tag_t tPart = NULL_TAG;
UF_ASSEM_load_status_t error_status;
UF_PART_open(sPart, &tPart, &error_status);
聯(lián)合類型
有時候需要將不同數(shù)據(jù)類型的變量放在同一段內(nèi)存單元中,這種使不同變量占用同一段內(nèi)存的結(jié)構(gòu)類型稱為聯(lián)合類型。聯(lián)合類型與結(jié)構(gòu)類型的定義形式相似,但含義不同。聯(lián)合類型變量所占的內(nèi)存長度等于其內(nèi)部最長數(shù)據(jù)成員的長度,而結(jié)構(gòu)類型變量所占的內(nèi)存長度則是其各數(shù)據(jù)成員所占內(nèi)存長度之和。
NX Open C 采用C語言的語法定義了一些常用的聯(lián)合類型,使用后綴“_u”表示。以聯(lián)合類型UF_STYLER_value_u為例,下面給出其詳細(xì)定義:
union UF_STYLER_value_u
{
char *string;
char **strings;
int integer;
int *integers;
double real;
double *reals;
UF_UI_selection_p_t selection;
UF_STYLER_notification_p_t notify;
UF_UI_attachment_t attach;
UF_UI_option_toggle_t option_tiggle;
};
typedef union UF_STYLER_value_u UF_STYLER_value_t;
聯(lián)合體UF_STYLER_value_u 封裝了UI Styler 對話框,對話框控件的屬性,如string、integer和real等。NX Open 使用typedef關(guān)鍵字將該聯(lián)合類型定義為新的類型UF_STYLER_value_t,它是UF_STYLER_item_value_type_t中的數(shù)據(jù)成員value的類型,例如:
UF_STYLER_item_value_type_t data;
double rValue;
sel_data.item_id = REAL_BUTTOM_DIAMETER;
UF_STYLER_ask_value(dialog_id, &sel_data);
rValue = data.value.real;
NX二次開發(fā)技術(shù)專欄
NX二次開發(fā)技術(shù)專欄【持續(xù)更新】
點(diǎn)擊進(jìn)入專欄
更多NX二次開發(fā)內(nèi)容
NX二次開發(fā)-數(shù)據(jù)類型結(jié)構(gòu)及類型轉(zhuǎn)換博客目錄【持續(xù)更新】
點(diǎn)擊進(jìn)入目錄
NX二次開發(fā)-UFUN API函數(shù)例子博客目錄【持續(xù)更新】
點(diǎn)擊進(jìn)入目錄
NX二次開發(fā)-Block UI控件的獲取例子博客目錄【持續(xù)更新】
點(diǎn)擊進(jìn)入目錄
NX二次開發(fā)-算法應(yīng)用博客目錄【持續(xù)更新】
點(diǎn)擊進(jìn)入目錄
總結(jié)
以上是生活随笔為你收集整理的nx二次开发c语言,NX二次开发-UFUN API函数编程基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言入门数组,C语言入门之数组(2)
- 下一篇: android编程绘图,Android编