胡迪 羅輝
關(guān)鍵詞:CREO;WebLink;二次開發(fā);二維碼
0 引言
Creo是美國PTC公司推出的一款三維設(shè)計軟件,已成為國內(nèi)制造企業(yè)最普及的標(biāo)準(zhǔn)軟件之一,針對其進行二次開發(fā)獲得個性化功能也成為國內(nèi)外研究熱點之一[1-5]。Creo 提供了Creo/Toolkit、VB API、J-Link 等豐富的二次開發(fā)接口[6-9],其中WebLink使用JavsS? cript語言進行開發(fā),可在Creo軟件的內(nèi)置瀏覽器中通過HTML網(wǎng)頁進行訪問和運行,不僅完全免費,而且易于上手[5,10],編程效率高,可與Windchill等PLM服務(wù)器進行無縫連接,且部署容易。
本文根據(jù)近年來實際工作中取得的開發(fā)經(jīng)驗,闡述如何使用WebLink對Creo進行二次開發(fā),降低Creo 二次開發(fā)的難度。
1 WebLink 環(huán)境設(shè)置
1.1 Creo 的設(shè)置
要在Creo中使用WebLink功能,首先必須在安裝Creo時,選中WebLink功能。之后在Creo中修改以下選項:
2) web_link_file_read和web_link_file_write。將這兩個選項設(shè)置為yes,表示可以通過WebLink程序進行本地文件操作。
3) web_link_proe_read和web_link_proe_write。將這兩個選項設(shè)置為yes,表示可以通過WebLink程序從Creo會話中讀取數(shù)據(jù)。
4) web_link_security_autoprompt。將該選項設(shè)置為yes,表示當(dāng)WebLink程序功能超出當(dāng)前設(shè)置的安全訪問時,顯示“安全”對話框。
5) windows_browser_type。指定Creo內(nèi)置瀏覽器的類型,在Creo2.0及之前僅有IE和Firefox內(nèi)核的瀏覽器選項,在Creo3.0及以后則將Firefox內(nèi)核瀏覽器給更換為Chromium內(nèi)核瀏覽器選項。盡管IE瀏覽器因為安全問題已被微軟棄用,但由于其獨有的Ac? tiveX控件可以擴展WebLink程序進行一定程度的本地文件操作,也有其一定的便利性,可以根據(jù)需要選擇Creo內(nèi)置瀏覽器的類型。
1.2 IE 瀏覽器安全設(shè)置
完成上述設(shè)置后,WebLink程序在Firefox內(nèi)核或Chromium內(nèi)核的內(nèi)置瀏覽器即可運行。如果選擇使用IE瀏覽器,則仍需要對JavaScript腳本的執(zhí)行環(huán)境進行設(shè)置:
1) 設(shè)置IE安全選項,將部署WebLink程序的站點網(wǎng)址加入受信任站點。
2) 設(shè)置IE安全選項,將“對未標(biāo)記為可安全執(zhí)行腳本的ActiveX控件初始化并執(zhí)行腳本”選項設(shè)置為啟用。
2 WebLink 開發(fā)的關(guān)鍵技術(shù)
2.1 WebLink 中的類和對象
WebLink采用面向?qū)ο蟮姆绞竭M行編碼。由于JavaScript在IE、Firefox以及Chromium內(nèi)核瀏覽器創(chuàng)建對象的機理和方式各不相同,但創(chuàng)建對象所有的操作和代碼編寫是一致的,所以首先可以抽象出一個根據(jù)不同內(nèi)核的瀏覽器創(chuàng)建對象的函數(shù):
由于JavaScript是一種動態(tài)類型的腳本語言,因此在編程過程中,子類調(diào)用父類的屬性或方法無須進行類型轉(zhuǎn)換,且如果父類對象確定也是子類的對象實例后,一樣可以直接調(diào)用子類的屬性或方法。例如pf? cSolid的父類分別為pfcFamilyMember和pfcModel,當(dāng)系統(tǒng)獲得一個pfcModel對象時,如果能夠確定也是Ip? fcsolid對象,則該對象可以直接調(diào)用pfcFamilyMember 類的屬性和方法,無須進行顯式類轉(zhuǎn)換。
2.2 WebLink 程序與Creo 的連接
WebLink程序采用網(wǎng)頁的形式運行,導(dǎo)致Creo在切換窗口、打開新實例等操作時無法與WebLink程序?qū)崟r通信,必須在WebLink程序運行過程中,先單向檢查當(dāng)前Creo會話是否與網(wǎng)頁打開時一致。每次檢查過程可使用如下方式獲取Creo的Session對象,進而再進行模型檢查等操作:
3 WebLink 程序的調(diào)試
3.1 系統(tǒng)設(shè)置
作為JavaScript 編寫的網(wǎng)頁程序,WebLink應(yīng)該是具備調(diào)試功能的,只是由于 Creo 2.0及之前的嵌入式瀏覽器內(nèi)核為IE和Firefox而暫時無法使用瀏覽器的調(diào)試工具。如前文所述,Creo 在3.0 版本后嵌入式瀏覽器內(nèi)核加入了Chromium,自此當(dāng)Creo瀏覽器設(shè)置為Chromium內(nèi)核瀏覽器就可以使用Chromium內(nèi)核瀏覽器進行調(diào)試了,相關(guān)設(shè)置如下:
1) 添加Windows 系統(tǒng)環(huán)境變量,設(shè)置Chromium 的調(diào)試端口,變量名為CEF_DEBUG_PORT,端口填一個不要與別的程序沖突的值,例如可設(shè)置為9222。也可以直接在parametric.psf中添加對應(yīng)的設(shè)置,添加如下內(nèi)容到文件最后:“ENV=CEF_DEBUG_PORT=9222”。
2) 確保本機已經(jīng)安裝了獨立的Chrome/Chromium 內(nèi)核的瀏覽器,微軟默認(rèn)瀏覽器Edge等使用了Chro? mium內(nèi)核的瀏覽器也可以。
3.2 調(diào)試步驟
在Creo的嵌入式瀏覽器打開要調(diào)試的網(wǎng)頁。之后在瀏覽器的地址欄輸入“Chrome://inspect/#de? v#iLcOesC”A。LH稍O(shè)作ST等”下待面,在會瀏顯覽示器Cr的eo頁嵌面入中瀏“覽Re器m中ote打 T開arg的et頁面,如圖3所示。
從圖3可以看到,外置瀏覽器中最下方Target下面顯示了Creo嵌入瀏覽器打開的網(wǎng)頁列表。點擊該網(wǎng)頁下面的“inspect”鏈接,會彈出Chrome內(nèi)核瀏覽器的獨立調(diào)試窗口,之后的操作就和調(diào)試普通網(wǎng)頁一樣,執(zhí)行調(diào)試窗口的源碼處打上斷點,添加監(jiān)視等,然后在Creo內(nèi)置瀏覽器中執(zhí)行相關(guān)操作就可以了,調(diào)試過程和界面如圖4所示。
4 工程應(yīng)用實例
4.1 系統(tǒng)功能分析
二維碼(Dimensional Barcode),又稱二維條碼,是在一維條碼的基礎(chǔ)上擴展出的一種具有可讀性的條碼,可靠性高、存儲可擴性強、成本低廉、保密性和糾錯能力較好[11] 。二維碼在縱橫兩個方向都存有字母、漢字、照片、指紋等各種信息是由一系列黑白點按照一定的規(guī)律構(gòu)成的幾何圖形,在代碼編制上巧妙地利用構(gòu)成計算機內(nèi)部邏輯基礎(chǔ)的“0”“1”比特流的概念,使用若干個與二進制相對應(yīng)的幾何形體來表示文字?jǐn)?shù)值信息,通過圖像輸入設(shè)備或光電掃描設(shè)備自動識讀[12]。
隨著信息技術(shù)在工業(yè)領(lǐng)域的全面深入融合,在工程圖中插入二維碼可以方便機器掃描讀取圖紙信息,易于將圖紙與MES、ERP等系統(tǒng)結(jié)合。由于Creo并未直接提供生成并插入二維碼的功能,因此在上述研究的基礎(chǔ)上,綜合設(shè)計經(jīng)驗,以在工程圖中插入二維碼為例,對本文介紹的方法進行驗證。添加二維碼一般可以考慮以下方式:
1) 在工程圖中插入圖片等OLE內(nèi)容??梢栽贑reo中導(dǎo)入外部程序生成的諸如jpg、png等圖片格式的二維碼文件。經(jīng)測試,插入OLE內(nèi)容暫時不僅未提供Toolkit接口,并且錄制宏發(fā)現(xiàn),插入圖片的操作也無法通過宏的方式實現(xiàn),所以該方法只能由設(shè)計人員手動添加,無法進行二次開發(fā)。
2) 在工程圖中插入dxf。可以在Creo中導(dǎo)入外部程序生成的dxf格式的二維碼文件。經(jīng)測試,導(dǎo)入的dxf文件會轉(zhuǎn)換為草繪對象,而且WebLink也提供了對應(yīng)的函數(shù)和方法用于導(dǎo)入dxf文件,所以該方法不僅可以手動操作,也適合于二次開發(fā)。但該方法導(dǎo)入dxf后添加了一系列草繪圖元,當(dāng)需要修改時難以確定哪些草繪時導(dǎo)入的dxf文件轉(zhuǎn)換得到,導(dǎo)致難以對二維碼相關(guān)的草繪刪除修改,故該方法僅適用于一次性導(dǎo)入二維碼的操作。
3) 生成包含二維碼信息的符號??梢栽诶L圖中添加一個符號,在符號中繪制對應(yīng)的二維碼圖案,之后插入該符號。該方法手工操作較復(fù)雜,主要需要手動繪制對應(yīng)的二維碼符號,但易于插入修改及替換,而WebLink也提供了繪制符號的函數(shù)和方法。
考慮系統(tǒng)的茁壯性和易操作修改,采用第三種方法在繪圖中添加二維碼,根據(jù)日常操作習(xí)慣,繪圖中應(yīng)該只有一個二維碼,故使用WebLink二次開發(fā)為工程圖添加二維碼的基本流程主要包含以下幾個步驟:
1) 遍歷工程圖所有符號,刪除之前添加的二維碼符號定義和所有實例;
2) 對輸入進行轉(zhuǎn)碼,生成二維碼信息;
3) 創(chuàng)建新的符號定義,根據(jù)二維碼信息對該符號定義進行修改,生成包含二維碼信息的符號定義;
4) 通過鼠標(biāo)點選的方式將新的二維碼符號實例擺放到正確的位置。
4.2 代碼實現(xiàn)
4.2.1 系統(tǒng)初始化
在具體操作過程中,首先保證瀏覽器所在Creo窗口中打開的模型為繪圖類型才能確保進行下一步操作。判斷當(dāng)前窗口模型類型為繪圖關(guān)鍵代碼如下:
4.2.2 刪除符號定義和所有實例
在WebLink義使用pfcDetailItem類進行描述,其詳細(xì)信息由pfcDetailSymbolDefIn? sDtrruawctiinogns的類Li描stD述eta。ilI可tem通s方過法繪訪圖問對繪象圖pf包c?含的所有符號pfcDetailItem 對象。由于在Creo中符號定義的名稱是唯一的,所以可以遍歷繪圖包含的符號通過名稱進行比對后確定需要刪除的符號定義。刪除符號定義可由pfcDetailItem類的Delete方法完成,故刪除對應(yīng)的符號定義關(guān)鍵代碼如下:
同時,由于WebLink程序直接刪除符號定義后,符號定義生成的對象實例也同時一并刪除,故無須進行刪除符號實例的操作。
4.2.3 生成二維碼符號定義
將字符串轉(zhuǎn)為二維碼是一項成熟的技術(shù),針對JavaScript語言,Github.com上已有人提供了庫。本文直接調(diào)用其接口函數(shù),輸入對應(yīng)的文字信息即可獲得要生成的二維碼的二維矩陣數(shù)據(jù):
生成新的符號定義后,根據(jù)二維碼的矩陣數(shù)據(jù)依次在符號定義中繪畫對應(yīng)的點即可完成二維碼的繪制。點的繪制可以設(shè)定為一個線長1 mm、線寬1 mm 的線段,可先通過pfcLineDescriptor類生成對應(yīng)的線段對象,再由pfcDetailItem類的CreateDetailItem方法將其插入到符號定義中。最后依次遍歷二維碼矩陣數(shù)據(jù),即可完成在符號中的二維碼繪制工作,關(guān)鍵代碼如下:
4.2.4 插入符號實例
插入符號的位置可以采用鼠標(biāo)點擊的方式獲取。
首先,通過WebLink 中的Session 對象的UIGetNext? MousePick方法獲得鼠標(biāo)點擊的坐標(biāo)點。插入符號實例依然是通過pfcDetailItem類的CreateDetailItem方法實現(xiàn),但是在設(shè)定好符號實例pfcDetailSymbolInstIn? structions 類的Attachment 為自由,AttachmentPoint 為鼠標(biāo)點選的位置即可:
最終開發(fā)的系統(tǒng)如圖5所示。用戶在左側(cè)網(wǎng)頁中輸入需要轉(zhuǎn)換成二維碼的文字,點擊“左鍵單擊繪圖位置插入二維碼”按鈕,之后根據(jù)提示在工程圖中點擊鼠標(biāo)左鍵選擇需要插入二維碼的位置即可完成工程圖二維碼的插入。
5 結(jié)束語
本文探討了使用WebLink二次開發(fā)Creo的方法和關(guān)鍵技術(shù),由于其具有易于編程和升級維護方便等特點,降低了開發(fā)難度,提高了開發(fā)效率,有助于相關(guān)領(lǐng)域的推廣應(yīng)用。