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

基于Mapkey和Excel的一種Creo Parametric二次開發技術

2021-02-21 07:47:12莊志凡陳賓賓
機械工程師 2021年2期
關鍵詞:二次開發用戶設計

莊志凡,陳賓賓

(特靈科技亞太研發中心,江蘇 太倉215400)

0 引言

當工程師利用PTC的CAD產品Creo Parametric進行產品設計研發的過程當中,會經常遇到很多重復性、標準化的任務,因此要做到簡化并自動執行這些任務就需要對Creo進行一些具備企業風格的二次開發。

假設完成一款CAD軟件的二次開發,需要開發者同時具備編程語言、算法設計、CAD高級建模等多學科應用能力。而工程師是用戶或需求方,通常并不具備其中的軟件開發能力,企業往往會讓二次開發部門或者外部供應商來幫助進行開發,這其中需要花費很多的溝通和測試的時間。另外,長期的維護成本也是企業管理者考慮的一個重要的因素。

當前筆者所闡述的一種基于Excel和Mapkey的二次開發技術,具有簡單、快速等特點,其學習的難度和成本較低,主要因為創建這個開發環境不需要大量的編程知識和構架能力,因而可以讓需求者(工程師)自主開發自己需要的二次開發軟件,來實現工作效率和質量的提升。

1 與常見二次開發技術的比較

目前Creo的主流二次開發程序有兩種,Pro/toolkit和VB API。

Pro/toolkit是一款PTC官方的開發模塊,它有一套獨立的工具包并且需要購買MS Visual Studio等付費開發軟件,其成本高昂。另外,開發者需要掌握基本的C語言和C++框架才能夠使用它進行開發。Pro/toolkit技術已趨近成熟,開發周期通常比較長,國內已有相關的企業和大學對其開發模式進行深入的研究。

VB API則是另一種PTC官方提供的二次開發包,這種開發模式相比較Pro/toolkit而言價格會比較低廉,只要用VB代碼就可以完成創建。但是它仍然需要開發者去學習及查詢PTC API的英文手冊并進行實踐,同時也需要開發者掌握VB編程的基本知識和實踐能力。它能夠實現的功能比較局限,運行的效率一般,其開發的周期也是相對較長的,目前在國內仍處于探索階段[1]。

相比前兩者開發工具,本文所描述的二次開發技術主要基于Excel和Mapkey這兩大平臺。Excel是一款微軟平臺上常用的綜合性圖表軟件,它擁有豐富的計算和數據分析模塊,其內嵌的VBA語言適合初級軟件開發者學習并使用。也由于它有很強的通用性,適合各個不同專業領域的用戶使用,其上手的難度比較低。因此將Excel作為這類二次開發平臺的客戶端和執行語言。Mapkey作為Creo內置的宏模塊,它和Creo的兼容性非常好,能夠涵蓋軟件內部許多不同的設計模塊。使用這類技術開發門檻比較低,可以通過手動錄制的方法隨時設計自己所需的流程和代碼,它的代碼字符通常也是和界面命令相似,便于開發者理解使用。同時因為它和Creo處于同一獨立的模式和進程,執行程序時并不影響其他軟件的使用效率,甚至能夠提高Creo內部運行的速度。因此選用Mapkey作為開發的底層語言模塊。

綜合運用Excel和Mapkey兩個模塊的二次開發技術,可以更好地結合兩者獨立的優勢,來達到開發和使用的效率提升。

表1 不同開發模式特點對比

2 二次開發的知識儲備和主要流程

在搭建開發環境之前,需要準備兩部分內容,第一部分需要準備一個notepad++工具來編輯及儲存Mapkey,第二部分需要準備一個Excel來進行VBA簡易編程,其中要求開發者至少入門應用這兩種基本的編程技術:Mapkey和VBA。

Mapkey編碼技術:Creo內置二次開發宏模塊,它主要功能是模擬用戶操作軌跡并且重復執行,搭建這個二次開發則需要用戶會錄制和解讀簡單的Mapkey,來完成一些流程設計即可。

VBA技術:VBA是VB基于Excel做的一個拓展包,其底層的知識結構大致和VB一樣,在當前這類二次開發技術中VBA只是作為一個基本框架和模板,無需開發者單獨設計具體算法。

主要流程:首先需要利用VBA從Excel端口創建一個自定義宏文件→同時利用VBA創建自定義的Mapkey并且傳遞儲存至創建好的自定義宏文件→設計一個Mapkey執行器可以在Creo端口利用它的執行功能直接運行自定義的Mapkey→創建一個啟動器和Creo進行連接 并 喚 醒Mapkey執行器完成二次開發環境的最終環節。 二次開發流程如圖1所示。

圖1 二次開發流程(總)

3 二次開發的實戰操作

3.1 自定義宏文件的搭建

Mapkey的主要特點就是其宏的獨特性和單一性,但是在實際應用中用戶的流程和需求是千變萬化的,需要更多地考慮靈活性和通用性。讓Creo每次都能夠接受不同的用戶信號并快速地運用Mapkey去運行。因此,筆者采用了創建臨時自定義宏文件的方案,目的就是可以隨時調用其中的Mapkey宏,這個文件是由用戶按照特定的規則創造,且可以生成不同的自動化流程。它需要具備以下幾大特點:1)文件必須是臨時的,且不會永久地修改Creo的設置和一切宏;2)文件儲存的區域必須是已知有效的本地通用路徑;3)文件需要自己獨立的名稱,避免與其他文件的文件名沖突;4)文件格式和編碼必須和默認宏文件一致。

筆者在設計這個宏文件的自動創建流程時采用的是VBA 工作簿啟動事件,目的是在Excel用戶開發工具啟動的同時識別或創建該文件,自定義宏文件開發流程如圖2所示,具體代碼如圖3所示。

圖2 自定義宏文件開發流程

圖3 自定義宏文件程序代碼

其中:變量SourceFile為筆者公司系統默認宏儲存路徑和名稱config.pro;變量DestinationFile為筆者定義自定宏的儲存路徑和名稱USER.pro。

該程序主要先利用IF語句判斷自定宏文件是否存在,當用戶第一次使用該工作簿時,系統會自動復制同目錄下的config文件到自定義宏文件,同時打開該文件并清空內容。而用戶第二次啟動時,則會識別到該文件而自動退出程序,目的就是確保自定義宏文件的成功創建為后續的開發作安全保障。

3.2 自定義Mapkey的創建及傳遞

當完成自定義宏文件的創建之后,需要開發者繼續定義創建Mapkey的方法并且把Mapkey傳遞及儲存到自定義宏文件中去。針對這種流程,筆者采取的是VBA編程技術,主要需要完成大致兩項內容:Mapkey創建和動態參數關聯,以及Mapkey代碼到自定義宏文件的傳遞。Mapkey創建及傳遞流程如圖4所示。

圖4 Mapkey創建及傳遞流程

3.2.1 Mapkey創建和動態參數關聯

通常在VBA編程里會利用Print命令去輸出需要的Mapkey代碼字符。對于一個靜態參數的Mapkey代碼,它的處理方式比較簡單,只需要依次輸入print的字符串就可以將整套程序代碼生成出來。圖5所示是一個實現打開固定零件的Mapkey靜態參數語句。

圖5 靜態參數語句

其中:Print #1是指在1號通道輸出該值,1號通道由開發者定義,引號內部則是該Mapkey主要代碼。

對于帶有動態參數的Mapkey程序,除了輸出常規的語句之后,需要對動態參數語句進行和輸入端口的一個關聯,通常將靜態和動態兩種參數作一個關聯語句就能夠完成匹配。例如,輸入端口為單元格A1的值,那輸出的語句為print #1“Text1”&Range(“A1”),這樣就能夠返回用戶在A1內輸入的值的Mapkey字符串。圖6所示是一個實現打開用戶輸入的零件Mapkey動態參數語句。

圖6 動態參數語句

其中:Range(“A1”)為單元格A1的參數。

當用戶輸入的信號是多種,數量不定的動態參數的時候,單一輸出的語句就無法滿足該類型的Mapkey創建,因此在VBA程序內部就需要添加一個基于參數清單的循環語句,實現批量打開零件語句代碼實例如圖7所示。

圖7 動態循環參數語句

本案例的目標就是在Creo連續循環打開清單內的模型號碼直到最后一個為止。其中第一句是Mapkey的起始句,它僅能夠出現一次,因此它不在循環語句內,主語句根據Excel A列清單做了一個循環過程,分別依次輸出基于當前單元格的Mapkey語句,最終執行到最后的單元格的時候用if語句來判斷并執行,最后一行末端換行符“”的移除表示程序終止。這就是一個簡單的循環動態參數的設定。基于有時候代碼的數量會比較多,建議將字符都賦給一個變量,從而簡化代碼的字符數量和行數[2]。

3.2.2 Mapkey代碼到自定義宏文件的傳遞

將Mapkey代碼用print輸出字符后,需要定向地將其儲存傳遞到自定義宏文件內,因此可以建立一個文本文件字符串的添加事件,來完成Mapkey字符串填寫并儲存。其格式通常為:

總而言之,從open→print→close的一個過程,可以完成一個簡易Mapkey創建及傳遞,其中自定義宏文件的地址一定是先前工作簿啟動事件的地址。針對不同的二次開發程序,一般只需套用此類模板,對Mapkey創建代碼區域進行編輯修改即可,Mapkey的快捷鍵位必須設置成同一種,目的為后續執行器的設計提供統一的標準,筆者采用的標準快捷鍵位為“\”,主語句設計則結合實際需求進行定制。

3.3 Mapkey執行器創建

當自定義宏文件及其內部Mapkey代碼搭建完成后,需要去加載執行該宏內的代碼。筆者的解決方案則是設計一個Mapkey執行器,目的是載入自定義宏文件并運行其內部用戶創建的自定義Mapkey,來完成單批次的自動運行。具體代碼如圖8所示。

圖8 Mapkey執行器代碼

該Mapkey功能是快速地調用已存在的USER.PRO文件,即自定義宏文件,并再運行其內部的Mapkey宏\,即自定義Mapkey的快捷鍵位。

需要注意的是:1)該宏代碼建議儲存在默認配置文件config.pro中,重啟Creo即可,作用是讓用戶下一次啟動Creo時能夠自動載入該配置。2)==和\是筆者根據自己偏好設置的Mapkey快捷鍵,在定義之前需要從當前可用的Mapkey清單內檢查是否有快捷鍵沖突的鍵位,避免Mapkey失效問題。3)不同版本Creo,該Mapkey代碼可能會稍有區別,筆者所用的當前版本為4.0 M050。

3.4 啟動器設計

自定義宏創建及內部Mapkey 的傳遞完成之后,就需要讓Creo自行啟動Mapkey執行器來完成自定義Mapkey的運行。要實現這一步操作需要介入一些編程算法,由于此前所采用的都是Excel的VBA技術,為了保證代碼的兼容性,筆者仍舊利用該語言去進行啟動器代碼的異步算法設計,當下有3類常用的啟動器設計方法:

3.4.1 Creo parametric 輔助窗口啟動器

該技術需要對Mapkey執行器進行進一步的修改,先設計一個Mapkey輔助窗口,再定義執行該窗口下的resume按鈕就可以運行Mapkey執行器,Mapkey代碼如圖9所示,Creo輔助窗口如圖10所示。

圖9 Mapkey輔助窗口代碼

圖10 Creo輔助窗口

用appactivate來激活該窗口,再用keybd_event來模擬鍵盤事件就可以使Creo執行該輔助窗口的程序運行按鈕,代碼如圖11所示。

利用這種啟動器運行程序,需要首先在Creo窗口用Mapkey的快捷鍵喚醒圖10的輔助窗口,本案例所采用的是鍵位是“GE”,然后再運行圖11代碼完成啟動器程序的執行,其中的If語句目的是為了判斷輔助窗口是否被打開,再選擇是否繼續執行。

圖11 輔助窗口啟動器代碼

3.4.2 VB API啟動器

利用VB API技術找到Excel與Creo窗口的接口,并執行Mapkey執行器的宏代碼,代碼如圖12所示。

圖12 VB API啟動器代碼

圖13 Creo控件激活

首先需要加載如圖13上的Creo 控件,然后定義API的幾個窗口同步的變量,最后利用Session.RunMacro(“%==”)來運行快捷鍵“==”完成程序執行[3-4]。

3.4.3 Creo parametric母窗口啟動器

該方法與第一種類似,區別是它直接用appactivate激活Creo的通用母窗口,并且用keybd_event來模擬鍵盤事件啟動Mapkey執行器代碼,代碼如圖14所示。

圖14 母窗口啟動器代碼

可以看到這類啟動器上會加一個On error報錯修復功能,由于VBA無法快速判斷Creo 窗口的狀態。因此當它未打開時,該語句前會出現一個窗口未找到的報錯,這時,系統會進入修復模式,出現一個彈窗提醒用戶打開Creo并重新運行。

這3類啟動器都能夠實現程序的啟動運行,利用Creo parametric輔助窗口啟動器運行程序的優點是運行狀態較為穩定,效率也比較適中,但是由于開啟輔助窗口需要用戶手動操作,不夠快速、直觀。VB API啟動器狀態為最穩定的,但是它和Creo之間的連接時間過長,運行效率相對較差。而Creo parametric母窗口啟動器運行效率是最快的,并且用戶使用十分方便,但是它和Creo之間的連接穩定性一般。不同啟動器特點對比如表2所示。

表2 不同啟動器特點對比

筆者推薦使用的是第三類啟動器,由于用戶在使用的時候需要得到快速的輸入響應,更多地關注使用效率的問題;其次,它無需安裝或者激活任何第三方的控件,通用性強,能夠在任何一臺配置的工作站上進行開發使用;即使第三類啟動器有時候連接穩定性不夠好,但是它在當前啟動模式下是十分穩定的,更多影響它的是公司的登陸程序等第三方插件和網絡連接斷開等風險。

通常這類二次開發理念中,自定義宏文件、Mapkey執行器及啟動器都是固定不變的,開發者只需進行個性化定制的是自定義Mapkey的創建及傳遞,從而達到開發效率的最大化,完成企業綜合性CAD軟件自動化的應用。

4 該二次開發理念目前存在的不足

雖然結合Excel和Mapkey能夠實現很多功能的自動化,但是這種技術仍有一些不足:1)Mapkey目前只是一個執行模塊單元,無法實現更高級的功能;2)不同Creo版本的Mapkey代碼不太一樣,很難完全統一;3)Mapkey的編碼目前沒有官方的指導手冊和學習平臺,需要用戶錄制去完成整理;4)Excel作為輸入端,運行時需要兼顧其他Excel宏文件,代碼的安全級別低。這些問題目前尚未有成熟的解決方案。

5 結論

這類二次開發技術除了應用在一些簡易的宏開發,還可以結合Excel其他的功能完成一些更復雜的數據運算和處理。在實際CAD模型設計中它能夠完成Creo圖樣搭建、3D建模、裝配體搭建等,在質量管理過程中也能夠有效地監控各個設計環節,甚至可以結合其他Creo內置的編程模塊進行跨平臺項目的搭建,例如CAD軟件結合PDM系統和項目管理文檔等,讓開發者根據企業實際應用需求去靈活地訂制方案。

本文所闡述的二次開發的技術和理念,目的是為了滿足工程師及其他領域設計人員的日常工作需求。其實際操作也只是引用了筆者常用的一種編程技術來進行描述,希望能夠讓讀者從中得到一些啟發,可以更高效、自由地利用這種技術和理念。

猜你喜歡
二次開發用戶設計
淺談基于Revit平臺的二次開發
甘肅科技(2020年20期)2020-04-13 00:30:02
淺談Mastercam后處理器的二次開發
模具制造(2019年3期)2019-06-06 02:11:02
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
西門子Easy Screen對倒棱機床界面二次開發
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
主站蜘蛛池模板: 午夜毛片免费观看视频 | 五月天天天色| 在线日韩一区二区| 大香网伊人久久综合网2020| 凹凸精品免费精品视频| 狠狠色综合网| 欧亚日韩Av| 99久久免费精品特色大片| 超碰91免费人妻| 国产精品无码久久久久久| 国产AV无码专区亚洲A∨毛片| 亚洲无限乱码| 毛片最新网址| 国产一在线| 无码AV高清毛片中国一级毛片| 亚洲成a人片| 2024av在线无码中文最新| 久久毛片免费基地| а∨天堂一区中文字幕| 亚洲国产精品一区二区第一页免 | 91年精品国产福利线观看久久| 人妻一本久道久久综合久久鬼色| 成人免费黄色小视频| 亚洲成人www| 99久久精品免费看国产免费软件| 免费播放毛片| 四虎影视8848永久精品| 国产成人综合在线观看| 亚洲中文字幕久久无码精品A| 国产美女一级毛片| 亚洲av成人无码网站在线观看| 国产精品极品美女自在线网站| 国产95在线 | 伊人无码视屏| 91精品网站| 福利姬国产精品一区在线| a级毛片毛片免费观看久潮| 亚洲黄网在线| 亚洲精品成人福利在线电影| 人妻丝袜无码视频| 欧美色99| 国产成人精品一区二区免费看京| 日韩毛片基地| 日本高清免费一本在线观看| 黄色三级网站免费| 亚洲六月丁香六月婷婷蜜芽| 美女裸体18禁网站| 一本久道久综合久久鬼色| 国产精品美女免费视频大全| 国产尤物在线播放| 国产制服丝袜91在线| 成人亚洲视频| 天堂中文在线资源| 国产精品99久久久久久董美香| 国产污视频在线观看| 欧美亚洲一区二区三区导航| 国产精品999在线| 国产乱人免费视频| 伊人久热这里只有精品视频99| 欧美国产另类| 黄片一区二区三区| 亚洲免费播放| 精品无码日韩国产不卡av | 99视频国产精品| 男女性色大片免费网站| 91精选国产大片| 国产激情无码一区二区免费| 日韩欧美国产区| 中文无码毛片又爽又刺激| 国产精品九九视频| 99re热精品视频中文字幕不卡| 久久亚洲中文字幕精品一区| 毛片久久网站小视频| 高清免费毛片| 萌白酱国产一区二区| 在线视频精品一区| 538国产在线| 日韩精品无码免费专网站| 99re免费视频| 国产特级毛片aaaaaa| 国产精品欧美亚洲韩国日本不卡| 99人体免费视频|