• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Cleo圖紙的信息提取與反填

      2020-12-02 23:57朱文偉
      數(shù)碼設(shè)計(jì) 2020年11期

      省教育廳課題:浙江省教育廳《PDM下圖紙信息自動獲取與反填技術(shù)的研究》(Y201430802)

      浙江省公益性技術(shù)應(yīng)用研究計(jì)劃《可穿戴下肢助力機(jī)器人設(shè)計(jì)》2017C31106

      摘要:圖紙信息的提取與反填是實(shí)現(xiàn)產(chǎn)品數(shù)據(jù)高效管理的基礎(chǔ)。Creo軟件在工程設(shè)計(jì)制造領(lǐng)域應(yīng)用廣泛,針對Creo文件,提出一種基于VS2015平臺的信息提取與反填的應(yīng)用程序,既可以將Creo文件中的信息提取出來,也可以將數(shù)據(jù)反填到Creo文件。通過實(shí)例驗(yàn)證,表明應(yīng)用程序信息提取與反填有效。

      關(guān)鍵詞:Creo;信息提取;信息反填

      中圖分類號:TG802?? 文獻(xiàn)標(biāo)識碼:A?? 文章編號:1672-9129(2020)11-0152-03

      前言:一個產(chǎn)品的生產(chǎn)過程中,會產(chǎn)生大量的圖紙文件。隨著時(shí)間的推移,企業(yè)產(chǎn)品的數(shù)量急劇增加,容易造成文件丟失、信息丟失,因此往往需要引入管理軟件比如PDM軟件,進(jìn)行信息管理。但是,管理軟件需要將產(chǎn)品信息錄入到系統(tǒng)中,而這些信息往往存在圖紙中,使用這些信息就需要打開一個個產(chǎn)品的圖紙文件,然后將信息拷貝出來,效率非常低,且容易出錯,不利于管理。同時(shí)新的圖紙也有類似問題,由于設(shè)計(jì)者往往不會使用管理軟件,而管理軟件使用者也不會使用CAD軟件,新圖紙信息的獲取也是費(fèi)時(shí)費(fèi)力。因此,如何高效且準(zhǔn)確地提取信息,解決圖紙?jiān)O(shè)計(jì)軟件“信息孤島”現(xiàn)狀成為企業(yè)負(fù)責(zé)人十分關(guān)注的問題。

      為此,本文針對如何高效且準(zhǔn)確地提取信息,開發(fā)了一個應(yīng)用程序,可以將所需信息直觀地顯示在界面上,并可以按照一定格式生成文本文件,供任意管理軟件調(diào)用。最終生成動態(tài)鏈接庫文件,提供接口信息,嵌入到任意管理軟件中,實(shí)現(xiàn)無縫連接。

      CAD軟件的類型眾多,其中Creo軟件是一款主流的、應(yīng)用非常廣泛的軟件。因此,本文選用的CAD軟件為Creo 4.0。

      1 開發(fā)環(huán)境配置

      根據(jù)Creo4.0的官方規(guī)定,其二次開發(fā)的應(yīng)用軟件為VS2015,因此,本文將通過VS2015設(shè)計(jì)開發(fā)應(yīng)用程序,實(shí)現(xiàn)Creo4.0文件的信息提取與反填,其中信息的提取與反填可以定制化。

      (1)API開發(fā)包。隨著Creo軟件的發(fā)展,其二次開發(fā)的庫由ProToolkit向Creo Object TOOLKIT C++轉(zhuǎn)變,但是ProToolkit的部分功能還是能應(yīng)用的,因此,本文將同時(shí)使用ProToolkit與OTK進(jìn)行二次開發(fā)。

      (2)環(huán)境變量。為了實(shí)現(xiàn)高效且獨(dú)立的信息提取,將采用異步模式對Creo進(jìn)行開發(fā),因此,需要設(shè)置環(huán)境變量PRO_COMM_MSG_EXE,它的值設(shè)定為pro_comm_msg的絕對路徑。

      (3)VS2015開發(fā)環(huán)境設(shè)置。配置Creo4.0庫,包含目錄和庫目錄,將工程中的包含目錄設(shè)定軟件安裝目錄下~\\Common Files\\\\otk\\otk_cpp\\include和~\\Common Files\\protoolkit\\includes。

      將工程中的庫目錄設(shè)定為軟件安裝目錄下~\\Common Files\\otk\\otk_cpp\\x86e_win64\\obj和~\\Common Files\\protoolkit\\x86e_win64\\obj。

      同時(shí),將Creo4.0庫的附加依賴項(xiàng),如:otk_cpp_async.lib、otk_222.lib、pt_asynchronous.lib、protoolkit_NU.lib、ucore.lib、udata.lib等。

      2 信息提取與反填

      2.1信息提取算法。

      首先,明確信息來源,輸入工程文件的絕對地址或者選擇一個工程文件;

      接著,根據(jù)輸入的不同工程文件,取不同的信息。具體如下:1)零件圖,提取標(biāo)題欄信息;2)裝配圖,提取標(biāo)題欄信息和子圖的信息;3)工程圖,提取標(biāo)題欄信息和明細(xì)表信息。

      最后,將信息按照一定格式保存。

      信息提取算法的流程圖如圖1所示。

      2.2信息提取的實(shí)現(xiàn)。

      首先,檢查是否已經(jīng)啟動Creo,如果已經(jīng)啟動,獲取其會話對象;如果沒有啟動Creo,則以異步模式下不可見方式啟動Creo。利用pfcAsyncConnection::Start(“pro -g:no_graphics -i:rpc_input”)來實(shí)現(xiàn)非交互式、無界面的啟動Creo。其中pro是啟動Creo Parametric的命令。

      connection= pfcAsyncConnection::GetActiveConnection();

      if (!connection)

      {

      connection = pfcAsyncConnection::Start("C:\\\\Program Files\\\\PTC\\\\Creo 4.0\\\\M080\\\\Parametric\\\\bin\\\\parametric.exe -g:no_graphics -i:rpc_input", "");

      if(!connection)

      {

      ::MessageBox(NULL, _T("Creo啟動錯誤!"), _T("Fail"), NULL);

      return;

      }

      }

      else

      {

      ::MessageBox(NULL, _T("Creo已經(jīng)啟動,獲取成功!"), _T("Get"), NULL);

      }

      然后,通過函數(shù)ProMdlFiletypeLoad打開文件;

      GetDlgItemText(IDC_EDIT1, filename);

      ProStringToWstring(proPath, filename);

      status = ProMdlFiletypeLoad(proPath, PRO_MDLFILE_PART, b, &proMdl);

      if (status != PRO_TK_NO_ERROR)

      {

      ::MessageBox(NULL, _T("打開文件錯誤!"), _T("Get"), NULL);

      }

      其次,判斷文件類型,根據(jù)文件擴(kuò)展名的不同判斷當(dāng)前文件是裝配圖還是工程圖還是零件圖。

      接著,根據(jù)不同文件,提取不同信息;

      status=ProMdlToModelitem(proMdl, &item);

      GetSolidParam(item, &appdata);

      ProArraySizeGet((ProArray)appdata, ¶mCount);

      for (int i = 0;i

      {

      char name[PRO_NAME_SIZE];

      char value[PRO_TYPE_SIZE];

      ProParamvalue proval;

      ProParameterValueGet(appdata + i, &proval);

      Num = m_MyListBox.GetCount();

      CString strTemp, strTemp1;

      strTemp1 = " = ";

      if (proval.type == PRO_PARAM_DOUBLE)

      {

      strTemp.Format(_T("%.4f"), proval.value.d_val);

      strTemp = ((appdata + i)->id) + strTemp1+ strTemp;

      m_MyListBox.InsertString(Num, strTemp);

      }

      else

      {

      strTemp = ((appdata + i)->id) + strTemp1 + proval.value.s_val;

      m_MyListBox.InsertString(Num, strTemp);

      }

      }

      最后,將信息保存成可以讓管理軟件使用的文本格式。

      2.3信息反填算法。

      首先,明確信息反填對象,輸入工程文件的絕對地址或者選擇一個工程文件;

      接著,判斷信息是否已經(jīng)存在,如果存在,更改屬性內(nèi)容;如果不存在,新建屬性及其設(shè)定值。

      最后,保存文件。

      信息反填算法的流程圖如圖2所示。

      2.4信息反填的實(shí)現(xiàn)。

      首先,檢查是否已經(jīng)啟動Creo,此過程類似信息提取算法;

      然后,通過函數(shù)ProMdlFiletypeLoad打開文件;

      其次,判斷反填信息是否已經(jīng)存在,存在則修改,不存在則新建;

      status = ProParameterInit(&item, strParam1.AllocSysString(), &new_param);

      if (status != PRO_TK_NO_ERROR)

      {

      ProParamvalueSet(&new_value, &plTemp1, PRO_PARAM_STRING);

      status = ProParameterWithUnitsCreate(&item, name1, &new_value,NULL,&new_param);

      if (status != PRO_TK_NO_ERROR)

      {

      AfxMessageBox(_T("屬性參數(shù)創(chuàng)建失敗!"));

      }

      }

      else//反填信息已存在,更新之

      {

      ProParamvalueSet(&new_value, &plTemp1, PRO_PARAM_STRING);

      status = ProParameterValueWithUnitsSet(&new_param, &new_value,NULL);

      }

      最后,保存文件。

      3 實(shí)例驗(yàn)證

      本文所述的信息提取與反填算法將通過MFC應(yīng)用程序來驗(yàn)證。以某一個零件圖為對象,根據(jù)測試要求,在零件圖的參數(shù)對話框中設(shè)置屬性,如圖3所示:

      設(shè)置屬性完畢,運(yùn)行MFC程序,點(diǎn)擊選擇文件按鈕,在彈出的文件選擇對話框中,將上述文件選中,再點(diǎn)擊開始提取,經(jīng)過后臺自動提取,將零件圖中的參數(shù)信息提取出來,并按照一定形式顯示在顯示框內(nèi),顯示形式可以自定義。比較程序提取出來的信息與零件圖中的信息,兩者一致。如圖4所示

      提取完畢后,在信息反填中,將需要修改的屬性內(nèi)容與添加的內(nèi)容填寫上去,如將材料修改為45號鋼,購買者修改為趙張武,添加一個新的屬性,如新屬性=測試。然后點(diǎn)擊開始反填按鈕,經(jīng)過后臺自動反填,完成屬性的修改與添加。同時(shí),為了更好觀察是否反填完畢,再次點(diǎn)擊開始提取,比對發(fā)現(xiàn)信息已經(jīng)反填成功。最后通過打開零件圖的參數(shù)對話框驗(yàn)證,信息反填成功。如圖5所示:

      4 結(jié)論

      本文通過VS2015實(shí)現(xiàn)Creo圖紙信息的提取與反填,可以自動分辨圖紙的種類,根據(jù)定制需求提取出定制形式信息。在本文論述過程中,通過MFC應(yīng)用程序方式完成。推廣到實(shí)際應(yīng)用上的時(shí)候,可以將實(shí)現(xiàn)過程用MFC DLL的形式,提供出信息提取與信息反填2個接口,生成動鏈接庫文件,從而方便其他管理軟件的調(diào)用。

      參考文獻(xiàn):

      [1]晏恒兵,仲梁維,基于Creo的智能模型庫插件研究與開發(fā)[J].軟件工程,2020,23(4):12-14

      [2]張文曉,基于Excel VBA對Creo進(jìn)行異步模式下的二次開發(fā)[J].電腦知識與技術(shù),2019,15(7):212-214.

      [3]宮潘威,時(shí)小磊,陶高周等,CREO環(huán)境下三維模型及信息集成共享實(shí)現(xiàn)方法研究[J],機(jī)械設(shè)計(jì)與制造,2019,0(2):218-221.

      [4] Creo Object TOOLKIT C++ Users Guide (4.0 M080),PTC,2019.

      [5]張文彬,沈精虎,姜兆康,基于Creo二次開發(fā)的零件參數(shù)化變型設(shè)計(jì)[J],微型電腦應(yīng)用,2018,34(2):48-50.

      作者簡介:朱文偉,1983.12.27,男,漢,浙江瑞安市人,碩士,溫州大學(xué)甌江學(xué)院,研究方向:機(jī)電一體化、數(shù)字化設(shè)計(jì)。

      李美琴,1982.06.30,女,浙江溫州人,碩士,溫州大學(xué)甌江學(xué)院,研究方向:機(jī)械設(shè)計(jì)及理論。

      汉源县| 平乡县| 缙云县| 淮北市| 同江市| 邢台市| 揭东县| 迁西县| 婺源县| 贞丰县| 车险| 兴化市| 社旗县| 江永县| 阜康市| 凤庆县| 抚顺市| 余姚市| 昭觉县| 墨竹工卡县| 涿鹿县| 珲春市| 南康市| 崇阳县| 德安县| 个旧市| 双峰县| 蓬溪县| 田阳县| 马山县| 威海市| 南康市| 姚安县| 米易县| 临朐县| 瑞昌市| 新巴尔虎右旗| 内丘县| 新竹市| 乌兰县| 遵化市|