亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于NX自動計(jì)算沖壓方向旋轉(zhuǎn)角度的二次開發(fā)

        2022-04-20 09:17:42劉麗莉李麗芳周燕芳
        模具制造 2022年3期
        關(guān)鍵詞:二次開發(fā)沖壓坐標(biāo)系

        劉麗莉,李麗芳,周燕芳

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

        1 引言

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

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

        2 基本原理

        2.1 繞單一軸旋轉(zhuǎn)

        假定絕對坐標(biāo)系按照X軸旋轉(zhuǎn)α°,根據(jù)三角函數(shù)計(jì)算可得繞X軸旋轉(zhuǎn)的旋轉(zhuǎn)矩陣TX,同理得到繞Y軸旋轉(zhuǎn)β°,繞Z軸旋轉(zhuǎn)γ°的旋轉(zhuǎn)矩陣TY和TZ。

        2.2 繞多個(gè)軸旋轉(zhuǎn)

        沖壓坐標(biāo)系的旋轉(zhuǎn)過程屬于圍繞當(dāng)下自身坐標(biāo)系某軸轉(zhuǎn)動,即每次旋轉(zhuǎn)都固定被圍繞的某一軸,另兩軸動。同時(shí),由于旋轉(zhuǎn)順序不固定,可以隨意組合,例如可以先繞X軸,再繞Y軸,最后繞Z軸旋轉(zhuǎn),也可根據(jù)需要調(diào)整為先繞Y軸,再繞Z軸,最后繞X軸旋轉(zhuǎn)。根據(jù)歐拉旋轉(zhuǎn)公式,只需根據(jù)旋轉(zhuǎn)順序,將先旋轉(zhuǎn)的矩陣放前面,即可推算出在不同旋轉(zhuǎn)順序繞多個(gè)軸旋轉(zhuǎn)的旋轉(zhuǎn)矩陣。以旋轉(zhuǎn)順序?yàn)閄、Y、Z為例:

        2.3 角度計(jì)算

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

        同時(shí),若已知最終坐標(biāo)系的矩陣,根據(jù)不同的旋轉(zhuǎn)順序,亦可推算出每次旋轉(zhuǎn)的旋轉(zhuǎn)角度。還是以旋轉(zhuǎn)順序?yàn)閄、Y、Z為例,具體計(jì)算過程如下。

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

        在NX二次開發(fā)過程中,通過NXopen數(shù)據(jù)庫的調(diào)用,求出當(dāng)前制件的工作坐標(biāo)系即沖壓坐標(biāo)系的矩陣,再根據(jù)上述公式,即可計(jì)算出當(dāng)前沖壓坐標(biāo)系相對于絕對坐標(biāo)系的旋轉(zhuǎn)角度值。

        3 界面設(shè)計(jì)

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

        圖1 程序UI界面設(shè)計(jì)

        如果用戶對當(dāng)前的沖壓坐標(biāo)方向不滿意,仍可繼續(xù)調(diào)整當(dāng)前坐標(biāo)系??梢酝ㄟ^Tip Vector控件對其進(jìn)行修正,首先在Rotate By中選擇此次調(diào)整的角度值,然后在相應(yīng)的旋轉(zhuǎn)軸(X軸/Y軸/Z軸)處選擇所需調(diào)整的“+”或“-”按鈕作相應(yīng)的調(diào)整(“+”表示順時(shí)針旋轉(zhuǎn),“-”表示逆時(shí)針旋轉(zhuǎn)),并在信息欄中實(shí)時(shí)顯示當(dāng)前工作坐標(biāo)系相對于絕對坐標(biāo)系的旋轉(zhuǎn)角度。

        4 開發(fā)流程

        本次二次開發(fā)為了盡可能減少用戶的選擇,打開該程序后,會自動識別出當(dāng)前工作坐標(biāo)系,默認(rèn)旋轉(zhuǎn)順序?yàn)閄-Y-Z,通過2.3節(jié)中的角度計(jì)算關(guān)系通過當(dāng)前沖壓坐標(biāo)系矩陣計(jì)算出旋轉(zhuǎn)角度,并實(shí)時(shí)顯示在信息欄中,實(shí)現(xiàn)信息的自動識別和顯示。

        當(dāng)用戶選擇調(diào)整當(dāng)前坐標(biāo)系時(shí),程序讀取當(dāng)前工作坐標(biāo)系的旋轉(zhuǎn)順序以及旋轉(zhuǎn)角度,根據(jù)用戶選擇的調(diào)整角度,結(jié)合已有的旋轉(zhuǎn)角度值,計(jì)算出新的坐標(biāo)系的旋轉(zhuǎn)角度。根據(jù)2.2旋轉(zhuǎn)矩陣計(jì)算公式推算出坐標(biāo)系的新的矩陣值,并在NX中更新沖壓坐標(biāo)系,實(shí)現(xiàn)對零件沖壓方向的優(yōu)化調(diào)整。

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

        圖2 程序核心算法流程

        5 代碼開發(fā)

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

        在Visual Studio中創(chuàng)建工程項(xiàng)目文件,選擇NXOpen C++Wizard模板,選擇相應(yīng)的設(shè)置后完成工程項(xiàng)目創(chuàng)建,并將之前生成的hpp和cpp復(fù)制到工程項(xiàng)目中,即可完成項(xiàng)目框架的搭建工作?;旧纤写a均使用C++程序語言編寫在hpp和cpp中,通過編譯和調(diào)試后生成后綴名為dll的文件,在NX中通過Ctrl+U命令調(diào)用dll文件即可實(shí)現(xiàn)二次開發(fā)的功能。NX二次開發(fā)需特別注意NX版本和Visual Studio版本的匹配。

        C++相對于C的增強(qiáng),表現(xiàn)在兩個(gè)方面:①在原來基于過程的機(jī)制基礎(chǔ)上,對C語言做了不少的擴(kuò)充;②增加了面向?qū)ο蟮臋C(jī)制。面向?qū)ο蟪绦蛟O(shè)計(jì),是針對開發(fā)較大規(guī)模的程序而提出來的,目的是為了提高軟件開發(fā)的效率[1]。其最大特性是增加了面向?qū)ο蟪绦蛟O(shè)計(jì)的“類(class)”,通過設(shè)計(jì)類的成員及成員函數(shù),實(shí)現(xiàn)功能的封裝與調(diào)用,可以盡可能地提升程序的執(zhí)行效率。

        本文整個(gè)程序的主要類及函數(shù)功能包括工作坐標(biāo)系角度計(jì)算、旋轉(zhuǎn)角度計(jì)算、根據(jù)角度設(shè)置坐標(biāo)系等等,部分代碼如下:

        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 實(shí)現(xiàn)案例

        在NX中打開某車型翼子板的零件數(shù)模,調(diào)用此應(yīng)用程序,系統(tǒng)自動計(jì)算出在默認(rèn)的先繞X軸、再Y軸、再Z軸的旋轉(zhuǎn)順序下的旋轉(zhuǎn)角度并顯示在信息區(qū)域,如圖3所示。當(dāng)用戶在Tip Order控件中選擇旋轉(zhuǎn)順序先Y軸、再Z軸、再X軸后,系統(tǒng)再次計(jì)算出新的旋轉(zhuǎn)順序下的旋轉(zhuǎn)角度并顯示在信息區(qū)域,如圖4所示。當(dāng)用戶使用Tip Vector控件對工作坐標(biāo)系進(jìn)行調(diào)整時(shí),調(diào)整后的繞各坐標(biāo)軸的旋轉(zhuǎn)角度會在信息區(qū)域?qū)崟r(shí)更新,同時(shí)程序也會自動執(zhí)行將NX中的工作坐標(biāo)系調(diào)整至相應(yīng)位置的操作。最后,程序?qū)X界面的視圖調(diào)整至當(dāng)前工作坐標(biāo)系下主視圖。對比前后兩個(gè)工作坐標(biāo)系下的零件,可見零件的沖壓方向已發(fā)生變化,如圖5所示。

        圖3 首次調(diào)用程序

        圖4 調(diào)整旋轉(zhuǎn)順序后

        圖5 調(diào)整旋轉(zhuǎn)角度前后對比

        7 結(jié)語

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

        猜你喜歡
        二次開發(fā)沖壓坐標(biāo)系
        轎車后車門外板沖壓工藝及模具設(shè)計(jì)
        淺談基于Revit平臺的二次開發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        淺談Mastercam后處理器的二次開發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        解密坐標(biāo)系中的平移變換
        坐標(biāo)系背后的故事
        西門子Easy Screen對倒棱機(jī)床界面二次開發(fā)
        基于重心坐標(biāo)系的平面幾何證明的探討
        端拾器在沖壓自動化生產(chǎn)線上應(yīng)用
        極坐標(biāo)系下移動機(jī)器人的點(diǎn)鎮(zhèn)定
        基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
        蜜桃av精品一区二区三区| 成激情人妻视频| 日本免费三片在线播放| 变态另类人妖一区二区三区| 99久久精品费精品国产一区二| 国内揄拍国内精品少妇国语| 亚洲av午夜成人片精品| 蜜桃视频在线在线观看| 无码aⅴ精品一区二区三区| 国产乱人伦在线播放| 91成人午夜性a一级毛片| 99久久久69精品一区二区三区| 欧美性生交大片免费看app麻豆| 亚洲av成人一区二区三区| 2021精品国产综合久久| 国产美女冒白浆视频免费| 精品无码国产一区二区三区麻豆| 白天躁晚上躁麻豆视频| 亚洲AV无码精品一区二区三区l| 国产伦一区二区三区久久| 国色天香社区视频在线| 越南女子杂交内射bbwbbw| 日本中文字幕一区二区高清在线 | 一片内射视频在线观看| 亚洲国产丝袜久久久精品一区二区| 成年女人粗暴毛片免费观看 | 日韩一区二区三区人妻中文字幕| 综合偷自拍亚洲乱中文字幕| 精品人妻伦九区久久aaa片69| 日韩一二三四精品免费| 国产精品国产三级国产an不卡 | 欧美一级在线全免费| 给我播放的视频在线观看| 午夜福利理论片在线观看播放| 日韩高清在线观看永久| 白色橄榄树在线免费观看| 国产在线精品观看一区二区三区| 色欲人妻综合aaaaa网| 国产v视频| 久久蜜桃一区二区三区| 久久99精品久久久久久琪琪|