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