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