沈剛 官雄明 馮衛(wèi)星 張杰銘
摘 ?要:Composer player是法國達索公司開發(fā)的一款輕量化三維模型播放軟件,輕量化模型的展示在產(chǎn)品驗證、推廣、銷售等環(huán)節(jié)起著至關(guān)重要的作用。本文結(jié)合控件提供的開發(fā)接口,簡要介紹了Web網(wǎng)頁內(nèi)調(diào)用該控件的方法,并輔以實例講解控件所提供方法、事件、屬性的調(diào)用步驟。
關(guān)鍵詞:Composer API;二次開發(fā);輕量化模型;網(wǎng)頁開發(fā)
中圖分類號:TP311.1 ? ? 文獻標識碼:A
Abstract:Composer player is a 3D model desktop application developed by Dassault Systèmes,which plays significant role in the fields of marketing,sales,customer service,etc.In combination with the API in the ActiveX control,this paper introduces how to use the control and how to call the methods,events,and properties provided by the ActiveX control in a web page.
Keywords:Composer API;secondary development;simplified models;web development
1 ? 引言(Introduction)
Composer是法國Dassault Systèmes研發(fā)的一款桌面應(yīng)用程序,旨在為非CAD用戶提供一個可以直接從3D源文檔創(chuàng)建相關(guān)的2D、3D輕量化產(chǎn)品文檔的平臺,被廣泛應(yīng)用于銷售、市場推廣、客戶服務(wù)、培訓(xùn)、支持等領(lǐng)域[1]。Composer支持直接打開大部分3D CAD設(shè)計軟件的原始設(shè)計文檔(Catia、UG、Creo、Solidworks、Inventor),以及各類中間格式,并可以在原始設(shè)計文檔發(fā)生變更時,將變更更新到Composer內(nèi),避免了Composer文檔的重建。
目前,基于Composer的輕量化三維模型可視化系統(tǒng)在各大行業(yè)得到了廣泛的應(yīng)用,相關(guān)研究人員分別提出了三維模型裝配工藝可視化系統(tǒng)[2-4];基于Flash的網(wǎng)絡(luò)教學(xué)虛擬仿真課件平臺[5],這些成果重點研究了輕量化模型的展示效果,未對輕量化平臺與其他系統(tǒng)集成的具體實施過程進行介紹。本文將重點討論輕量化軟件Composer Player與網(wǎng)頁集成的詳細方法。
2 ?網(wǎng)頁與3D模型的結(jié)合(Combination of 3D modelsand web pages)
Composer最初是達索公司的獨立軟件3D Via Composer,后來被分別集成到CatiaV6和Solidworks的安裝包內(nèi)供用戶選擇購買安裝,相應(yīng)的名稱分別變更為Catia Composer和Solidworks Composer,但其在使用方法與內(nèi)核上保持一致。
當下,越來越多的行業(yè)將產(chǎn)品3D模型置于WEB網(wǎng)站供用戶瀏覽,以此提高客戶對產(chǎn)品的感知度,幫助客戶制定精準可靠的采購計劃。WEB作為企業(yè)宣傳的有力保障,相對于傳統(tǒng)的Word、PPT,其適用面更廣泛,用戶群體更大,更方便用戶通過WEB與產(chǎn)品進行互動交流操作,更有利于企業(yè)產(chǎn)品的宣傳推廣。
在工業(yè)領(lǐng)域,3D模型零件數(shù)量龐大,產(chǎn)品結(jié)構(gòu)復(fù)雜。為降低企業(yè)設(shè)計圖紙泄密風(fēng)險,同時提高用戶體驗,3D模型發(fā)布至網(wǎng)頁端前的精簡輕量化必不可少。Composer為企業(yè)提供了可靠的模型輕量化解決方案,同時開放眾多的API接口,用戶可以靈活地定制符合工作需求的各類命令及功能[6]。
3 ? 二次開發(fā)準備(Secondary development preparation)
本文將結(jié)合Catia Composer Player Pro的ActivX控件所提供的API,使用Visual Studio 2015作為開發(fā)工具,介紹如何在HTML網(wǎng)頁內(nèi)調(diào)用接口內(nèi)的事件、方法和屬性。
在進行網(wǎng)頁開發(fā)前,需在電腦上安裝Composer Player軟件并取得相應(yīng)許可。其中,Player ActiveX 內(nèi)的部分功能需取得Pro許可證后方可訪問??丶谲浖惭b過程中自動注冊到計算機,用戶也可通過安裝路徑內(nèi)的批處理文件“\bin\Register.bat”進行手動注冊[1]。
4 ? 網(wǎng)頁框架構(gòu)建(Web framework construction)
4.1 ? 初始化控件
首先,新建一個ASP.NET空網(wǎng)站,本文以Visual C#語言為例。在新建的空網(wǎng)站項目上添加一個WEB窗體,并命名為MyWebPlayer。接下來,在該WEB窗體內(nèi)聲明Composer Player ActiveX.ocx控件,OCX控件存放在Composer安裝路徑下。要聲明OCX控件,首先需要獲得控件的ClassID,ClassID是ActiveX控件的唯一標識符,ClassID可以從注冊表編輯器中獲得?!保蹾KEY_CLASSES_ROOT\CLSID\{410B702D-FCFC-46B7-A954-E876C84AE4C0}”,花括號內(nèi)的字符串即為所需ClassID。
在MyWebPlayer.aspx文件的
間使用
標簽聲明該控件。
聲明語句中,“id”是用戶為該控件定義的身份標識,用戶通過該id在WEB應(yīng)用程序內(nèi)調(diào)用控件的屬性和方法;“height”和“width”定義了控件在WEB窗口中的大小,WEB應(yīng)用程序通過“classid”調(diào)用ActiveX控件。
同時,在“”標簽內(nèi)通過“ ”定義控件的一系列屬性值,如模型渲染模式、燈光效果、大地柵格、自動播放、循環(huán)播放等模型加載后的顯示效果,也可以定義控件加載時是否顯示視圖框、標準工具條、協(xié)同窗口等用戶操作菜單欄。需要說明的是,禁用不必要的工具欄能夠極大地提高控件加載速度、改善用戶體驗。文中僅定義了控件初始化時打開的文檔路徑及名稱,自動播放“AutoPlay”處于關(guān)閉狀態(tài)。用戶可以查閱編程手冊定制更多的屬性值。
至此,WEB網(wǎng)頁完成了控件的聲明,用戶可在以IE為內(nèi)核的瀏覽器中查看效果。
4.2 ? 控件交互
網(wǎng)頁內(nèi)的按鈕、文本框、進度條是實現(xiàn)用戶與操作界面交互的基本手段,交互界面的設(shè)計應(yīng)力求簡潔。簡單易懂的界面設(shè)計既可以提升用戶使用過程中的易用性,又能夠降低使用者的培訓(xùn)成本[7]。
在WEB頁面內(nèi)設(shè)計三個按鈕,分別用于改變所選零件的顏色、位置,重載默認屬性;插入一個文本框,用于顯示信息。
在
標簽內(nèi)聲明鼠標左鍵單擊事件,當用戶單擊3D零件時,在文本框內(nèi)顯示所選零件名稱;同時聲明"EndLoadModel"事件,當模型加載完畢后,觸發(fā)該事件,獲取并備份所有幾何模型的默認屬性值,默認屬性值用于在用戶誤操作后將零件屬性重置為初始值。
ShowName(); ?//鼠標左鍵單擊事件
5 ? 功能實現(xiàn)(Function implementation)
為實現(xiàn)用戶的定制化需求,控件內(nèi)提供了大量事件與方法供用戶訪問。本文將控件提供的方法封裝到JavaScript文件內(nèi),簡化代碼編寫和調(diào)用過程。
為項目添加一個Js文件,命名為“MyFunctions.js”。在文件內(nèi)添加函數(shù)以實現(xiàn)按鈕功能,添加事件響應(yīng)函數(shù)以處理鼠標單擊事件。
文中主要使用了API提供的以下接口函數(shù),如表1所示。
“MyFunctions.js”文件中,各函數(shù)的實現(xiàn)代碼如下所示:
function SetColor() { ? //改變所選零件的顏色
var strSelection;
var bValue;
var strPropertySet;
strPropertySet=" "
strSelection=document._ComposerPlayerActiveX.Selection();
bValue=document._ComposerPlayerActiveX.SetPropertySet(strSelection,strPropertySet);
document._ComposerPlayerActiveX.RefreshScene(1);
}
function MovePart() { ? ? //零件平移
var strSelection;
var bValue;
strSelection=document._ComposerPlayerActiveX.Selection();
bValue=document._ComposerPlayerActiveX.TranslateInWCS(strSelection,30,0,25);
document._ComposerPlayerActiveX.RefreshScene(1);
}
function ShowName() { ? //鼠標單擊事件響應(yīng)
var strSelection;
var TextBox;
TextBox=document.getElementById("MsgBox");
TextBox.value=document._ComposerPlayerActiveX.Selection();
}
function RstDft() { ? ? //恢復(fù)默認屬性
var bRtn;
bRtn=document._ComposerPlayerActiveX.SetPropertyMap(strProps);
document._ComposerPlayerActiveX.RefreshScene(1);
}
function GetNeutralProps() { ? ?//獲取默認屬性,在模型加載完畢后觸發(fā)事件
var strSelection;
strSelection = document._ComposerPlayerActiveX.GetAllActorsByType("CLitActorMesh");
strProps = document._ComposerPlayerActiveX.GetActorsProperties(strSelection);
}
在瀏覽器內(nèi)打開網(wǎng)頁,驗證各命令按鈕功能是否與設(shè)計相符,如圖1所示。
6 ? 結(jié)論(Conclusion)
本文以Visual Studio 2015為開發(fā)平臺,簡單介紹了Catia Composer Player ActiveX在WEB端二次開發(fā)的基本流程,并結(jié)合實例講解了實際應(yīng)用過程中的關(guān)鍵步驟。定制化的瀏覽器端產(chǎn)品三維展示平臺的搭建,能夠極大地增強企業(yè)產(chǎn)品的展示效果,助力銷售、研發(fā)、制造等環(huán)節(jié)。
參考文獻(References)
[1] Dassault Systèmes.Composer Programming Guide R2015x.D Systèmes,2014.
[2] 屈力剛,魏佩振,苑俊超.基于三維工藝模型的裝配現(xiàn)場可視化[J].制造業(yè)自動化,2013,35(20):83-87.
[3] 周亞麗,江征風(fēng),王立偉,等.基于3 DVIA Composer 的金剛石線切割機裝配工藝可視化研究[J].現(xiàn)代制造工程,2015(3):71-74.
[4] 彭煜,盛步云,潘陽芬,等.基于3DVIA Composer的汽輪機裝配工藝可視化研究[J].智能制造,2012(4):87-89.
[5] 谷艷華,朱艷萍,楊得軍,等.用于網(wǎng)絡(luò)教學(xué)的虛擬仿真交互式課件研究[J].圖學(xué)學(xué)報,2016,37(4):545-549.
[6] DS SOLIDWORKS公司.SolidWorks Composer使用指南[M].北京:機械工業(yè)出版社,2014.
[7] 馬躍.SolidWorksComposerAPI應(yīng)用小窺[J].智能制造,2015(11):56-59.
作者簡介:
沈 ?剛(1990-),男,碩士,助理工程師.研究領(lǐng)域:軟件開發(fā).
官雄明(1988-),男,碩士,助理工程師.研究領(lǐng)域:虛擬仿真.
馮衛(wèi)星(1972-),男,本科,助理工程師.研究領(lǐng)域:機械設(shè)計.
張杰銘(1987-),男,本科,工程技術(shù)員.研究領(lǐng)域:前端設(shè)計.