999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于NX自動計算沖壓方向旋轉角度的二次開發

2022-04-20 09:17:42劉麗莉李麗芳周燕芳
模具制造 2022年3期
關鍵詞:二次開發界面程序

劉麗莉,李麗芳,周燕芳

(上汽通用汽車有限公司,上海 201206)

1 引言

確定沖壓零件的沖壓方向是沖壓工藝排布過程中的第一步,沖壓方向的選擇是否合理直接影響了工藝質量的好壞,因此是非常重要的一個步驟。目前,沖壓件的沖壓方向一般是在Autoform里確定好后,再將沖壓坐標系導出至NX中。沖壓坐標系相對于絕對坐標系的繞軸旋轉順序以及旋轉角度僅在Autoform軟件中記錄顯示,導出后在NX中并無信息記錄,信息的傳遞一般為人工記錄。另外,一旦在NX中發現需要重新調整沖壓方向時,仍需回到Autoform中對零件進行旋轉調整并再次導出至NX中,反復操作導致效率相對較低。

因此,非常有必要在NX中開發一款能自動計算出指定沖壓坐標系相對絕對坐標系在某一特定旋轉順序下的旋轉角度值,并且可以支持直接在NX中繼續優化調整沖壓方向的插件。本文基于C++對NX進行二次開發,利用Visual Studio編程工具,開發了一款能自動計算指定坐標系相對于絕對坐標系在特定旋轉順序下的旋轉角度值,同時還在NX中建立交互界面,可以實現對沖壓坐標系繞指定坐標軸進一步旋轉調整,建立新的沖壓坐標系,并實時顯示調整之后的坐標系的旋轉角度值,避免了用戶在兩款軟件之間來回切換操作,提高了用戶在NX內處理沖壓方向的效率。

2 基本原理

2.1 繞單一軸旋轉

假定絕對坐標系按照X軸旋轉α°,根據三角函數計算可得繞X軸旋轉的旋轉矩陣TX,同理得到繞Y軸旋轉β°,繞Z軸旋轉γ°的旋轉矩陣TY和TZ。

2.2 繞多個軸旋轉

沖壓坐標系的旋轉過程屬于圍繞當下自身坐標系某軸轉動,即每次旋轉都固定被圍繞的某一軸,另兩軸動。同時,由于旋轉順序不固定,可以隨意組合,例如可以先繞X軸,再繞Y軸,最后繞Z軸旋轉,也可根據需要調整為先繞Y軸,再繞Z軸,最后繞X軸旋轉。根據歐拉旋轉公式,只需根據旋轉順序,將先旋轉的矩陣放前面,即可推算出在不同旋轉順序繞多個軸旋轉的旋轉矩陣。以旋轉順序為X、Y、Z為例:

2.3 角度計算

根據以上公式推斷,不難看出,若已知旋轉順序及旋轉角度,可以根據旋轉矩陣推算出旋轉后坐標系的矩陣方程,通過NX二次開發過程中的坐標系創建即可以得到我們所希望的坐標系。這就為在NX二次開發中實現通過旋轉順序和旋轉角度的輸入更新沖壓坐標系提供了依據。

同時,若已知最終坐標系的矩陣,根據不同的旋轉順序,亦可推算出每次旋轉的旋轉角度。還是以旋轉順序為X、Y、Z為例,具體計算過程如下。

如 果β=90°,則α=0°,γ=atan2(r21,r22),如 果β=-90°,則α=0°,γ=-atan2(r21,r22)。

在NX二次開發過程中,通過NXopen數據庫的調用,求出當前制件的工作坐標系即沖壓坐標系的矩陣,再根據上述公式,即可計算出當前沖壓坐標系相對于絕對坐標系的旋轉角度值。

3 界面設計

界面設計主要考慮界面簡潔,操作簡單,靈活方便等原則,UI界面如圖1所示。打開dll調用應用程序后,會自動計算出當前工作坐標系相對于絕對坐標系按先X軸,再Y軸,再Z軸的旋轉順序的各自旋轉的角度,并在下側信息欄同步顯示。同時用戶也可以通過Tip Order指令選擇旋轉先后順序,系統會自動計算出當前順序下的各自旋轉角度,并在信息窗口欄處更新輸出。

圖1 程序UI界面設計

如果用戶對當前的沖壓坐標方向不滿意,仍可繼續調整當前坐標系。可以通過Tip Vector控件對其進行修正,首先在Rotate By中選擇此次調整的角度值,然后在相應的旋轉軸(X軸/Y軸/Z軸)處選擇所需調整的“+”或“-”按鈕作相應的調整(“+”表示順時針旋轉,“-”表示逆時針旋轉),并在信息欄中實時顯示當前工作坐標系相對于絕對坐標系的旋轉角度。

4 開發流程

本次二次開發為了盡可能減少用戶的選擇,打開該程序后,會自動識別出當前工作坐標系,默認旋轉順序為X-Y-Z,通過2.3節中的角度計算關系通過當前沖壓坐標系矩陣計算出旋轉角度,并實時顯示在信息欄中,實現信息的自動識別和顯示。

當用戶選擇調整當前坐標系時,程序讀取當前工作坐標系的旋轉順序以及旋轉角度,根據用戶選擇的調整角度,結合已有的旋轉角度值,計算出新的坐標系的旋轉角度。根據2.2旋轉矩陣計算公式推算出坐標系的新的矩陣值,并在NX中更新沖壓坐標系,實現對零件沖壓方向的優化調整。

程序核心算法流程圖如圖2所示。

圖2 程序核心算法流程

5 代碼開發

本案例是針對UI界面的NX二次開發,首先在NX中設計出圖1所示的UI界面,在代碼生成模塊語言選擇C++,保存后生成dlx、hpp和cpp文件。

在Visual Studio中創建工程項目文件,選擇NXOpen C++Wizard模板,選擇相應的設置后完成工程項目創建,并將之前生成的hpp和cpp復制到工程項目中,即可完成項目框架的搭建工作。基本上所有代碼均使用C++程序語言編寫在hpp和cpp中,通過編譯和調試后生成后綴名為dll的文件,在NX中通過Ctrl+U命令調用dll文件即可實現二次開發的功能。NX二次開發需特別注意NX版本和Visual Studio版本的匹配。

C++相對于C的增強,表現在兩個方面:①在原來基于過程的機制基礎上,對C語言做了不少的擴充;②增加了面向對象的機制。面向對象程序設計,是針對開發較大規模的程序而提出來的,目的是為了提高軟件開發的效率[1]。其最大特性是增加了面向對象程序設計的“類(class)”,通過設計類的成員及成員函數,實現功能的封裝與調用,可以盡可能地提升程序的執行效率。

本文整個程序的主要類及函數功能包括工作坐標系角度計算、旋轉角度計算、根據角度設置坐標系等等,部分代碼如下:

void Tip::Calculate_WCS_Angles()

{

tag_t wcs_id;

tag_t matrix_id_new;

double matrix_values[9];

UF_CSYS_ask_wcs(&wcs_id);

UF_CSYS_ask_matrix_of_object(wcs_id,&matrix_id_new);

UF_CSYS_ask_matrix_values(matrix_id_new,matrix_values);

double degree_x;

double degree_y;

double degree_z;

double degree_x_float;

double degree_y_float;

double degree_z_float;

degree_y = atan2(-matrix_values[2],sqrt(matrix_values[0]*matrix_values[0]+matrix_values[1]*matrix_values[1]));

if(degree_y!=PI/2||degree_y!=-PI/2)

{

degree_z = atan2(matrix_values[1]/cos(degree_y),matrix_values[0]/cos(degree_y));

degree_x = atan2(matrix_values[5]/cos(degree_y),matrix_values[8]/cos(degree_y));

}

else if(degree_y==PI/2)

{

degree_z=0;

degree_x=atan2(matrix_values[3],matrix_values[4]);

}

else if(degree_y==-PI/2)

{

degree_z=0;

degree_x=-atan2(matrix_values[3],matrix_values[4]);

}

degree_x_float=degree_x/PI*180;

degree_y_float=degree_y/PI*180;

degree_z_float=degree_z/PI*180;

double03->SetValue(degree_x_float);

double04->SetValue(degree_y_float);

double05->SetValue(degree_z_float);

}

void View_CSYS_set(int n,tag_t csys_tag)

{

tag_t object_id;

tag_t matrix_id_new;

double matrix_values[9];

UF_CSYS_ask_matrix_of_object(csys_tag,&matrix_id_new);

UF_CSYS_ask_matrix_values(matrix_id_new,matrix_values);

double axes[6];

if(n==1)

{

axes[0]=matrix_values[3];

axes[1]=matrix_values[4];

axes[2]=matrix_values[5];

axes[3]=matrix_values[6];

axes[4]=matrix_values[7];

axes[5]=matrix_values[8];

}

if(n==2)

{

axes[0]=matrix_values[0];

axes[1]=matrix_values[1];

axes[2]=matrix_values[2];

axes[3]=matrix_values[6];

axes[4]=matrix_values[7];

axes[5]=matrix_values[8];

}

if(n==3)

{

axes[0]=matrix_values[0];

axes[1]=matrix_values[1];

axes[2]=matrix_values[2];

axes[3]=matrix_values[3];

axes[4]=matrix_values[4];

axes[5]=matrix_values[5];

}

UF_VIEW_set_rotation(NULL_TAG,axes);

NXOpen::Session*theSession=NXOpen::Session::GetSession();

NXOpen::Part*workPart(theSession->Parts()->Work());

NXOpen::Part*displayPart(theSession->Parts()->Display());

workPart->ModelingViews()->WorkView()->Fit();

}

6 實現案例

在NX中打開某車型翼子板的零件數模,調用此應用程序,系統自動計算出在默認的先繞X軸、再Y軸、再Z軸的旋轉順序下的旋轉角度并顯示在信息區域,如圖3所示。當用戶在Tip Order控件中選擇旋轉順序先Y軸、再Z軸、再X軸后,系統再次計算出新的旋轉順序下的旋轉角度并顯示在信息區域,如圖4所示。當用戶使用Tip Vector控件對工作坐標系進行調整時,調整后的繞各坐標軸的旋轉角度會在信息區域實時更新,同時程序也會自動執行將NX中的工作坐標系調整至相應位置的操作。最后,程序將NX界面的視圖調整至當前工作坐標系下主視圖。對比前后兩個工作坐標系下的零件,可見零件的沖壓方向已發生變化,如圖5所示。

圖3 首次調用程序

圖4 調整旋轉順序后

圖5 調整旋轉角度前后對比

7 結語

本文通過Visual Studio2019搭建了NX二次開發環境,基于C++開發了自動識別當前工作坐標系相對于絕對坐標系的旋轉角度,并通過UI界面的設計,實現了在UI界面內對當前坐標系進行旋轉調整并能計算最新的旋轉角度,同時更新沖壓坐標系,并且可以讓用戶自定義選擇旋轉順序,增加了該程序的使用柔性。通過此程序,在制件沖壓方向設定過程中可以減少從NX到Autoform的轉換,同時若前后工序的沖壓方向存在偏差或希望繼續優化沖壓方向,也可以在NX中進行靈活的調整,大大提高了工作效率,拓展了NX應用范圍。

猜你喜歡
二次開發界面程序
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
西門子Easy Screen對倒棱機床界面二次開發
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
人機交互界面發展趨勢研究
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 国产在线98福利播放视频免费| 午夜在线不卡| 美女无遮挡拍拍拍免费视频| 日本成人一区| 久996视频精品免费观看| 色婷婷视频在线| 国产丰满成熟女性性满足视频 | 亚洲无码视频图片| 亚洲国产综合精品中文第一| 久久精品国产999大香线焦| 色天天综合| 成人小视频网| 无码精品一区二区久久久| 国产精品第一区| 欧美国产成人在线| 免费观看欧美性一级| 亚洲伊人天堂| 高清欧美性猛交XXXX黑人猛交| 色哟哟国产精品一区二区| 亚洲精品va| 亚洲人成日本在线观看| 亚洲一区二区三区麻豆| 在线观看精品自拍视频| 日韩第一页在线| 久久毛片免费基地| 国产精品yjizz视频网一二区| 成年人福利视频| 久久综合亚洲色一区二区三区 | 九九久久精品国产av片囯产区| 亚洲精品视频网| 国内99精品激情视频精品| 性欧美在线| 亚洲另类国产欧美一区二区| 国产精品嫩草影院视频| 丰满人妻被猛烈进入无码| 97视频在线精品国自产拍| 99精品视频播放| 亚洲欧美日韩高清综合678| 国产精品任我爽爆在线播放6080 | a色毛片免费视频| 免费看黄片一区二区三区| m男亚洲一区中文字幕| 婷婷五月在线| 亚洲无码视频一区二区三区| 先锋资源久久| 久久久久免费精品国产| 成人国产精品一级毛片天堂 | 波多野结衣第一页| 亚洲一区国色天香| 欧美成人午夜在线全部免费| 日本三级欧美三级| 无码 在线 在线| 久久综合伊人 六十路| 久久福利片| 久久国产拍爱| 黄色一及毛片| 午夜福利无码一区二区| 久久综合久久鬼| 亚洲区视频在线观看| 中文字幕在线欧美| 精品久久久久无码| 99视频在线精品免费观看6| 黄片一区二区三区| 91口爆吞精国产对白第三集| 国产精品福利在线观看无码卡| 毛片一区二区在线看| 国产精品国产三级国产专业不| 国产乱子伦无码精品小说 | 国产精品亚洲一区二区三区在线观看 | 亚洲欧美日韩成人高清在线一区| 久久国产精品嫖妓| 国产午夜精品鲁丝片| 91青草视频| 伊人查蕉在线观看国产精品| 久久情精品国产品免费| 人禽伦免费交视频网页播放| 免费看美女毛片| 色男人的天堂久久综合| a天堂视频| 在线免费亚洲无码视频| 亚洲国产中文精品va在线播放 | 永久免费av网站可以直接看的 |