原創|行業資訊|編輯:吳秋紅|2024-04-08 11:50:56.230|閱讀 90 次
概述:該演示介紹了使用HOOPS Communicator的獨特工作流程,該工作流程可用于各種行業,例如維護手冊、工作指令或電子商務(自定義訂單)等。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
該演示介紹了使用的獨特工作流程,該工作流程從零件列表中加載零件,并使用自定義配合操作符(例如共線、同心和共面)構建裝配模型。該工作流程可用于各種行業,例如維護手冊、工作指令或電子商務(自定義訂單)等。
創建的裝配結構可以用JSON字符串表示并復制。
從以下Git存儲庫下載示例項目:
git clone //github.com/techsoft3d/assembly_creator.git
通過在GitHub上創建帳戶來為techsoft3d/ assembly_creator開發做出貢獻。
請README.MD在Git存儲庫中參考。
該演示實現了幾個自定義運算符。
每個自定義運算符都可以獨立用于其他項目。
該類PartDragDropOperator是一個自定義操作符,用于通過在零件列表中開始拖動并將其放入Web查看器來插入零件。
1.注冊自定義算子并激活
this.partDropOp = new PartDragDropOperator(this.viewer, this);
this.partDropOpHandle = this.viewer.operatorManager.registerCustomOperator(this.partDropOp);
this.viewer.operatorManager.push(this.partDropOpHandle);
2.創建零件列表
每個零件圖像都屬于該類partList_thumbnail,并且具有SC模型名稱作為數據集屬性:data-model
3.將鼠標按下事件處理程序注冊到零件縮略圖。
當拖動零件縮略圖時,其SC型號名稱將設置給使用該setPart功能的操作員。
$('.partsList_thumbnail').on('mousedown', (e) => {
const partName = e.currentTarget.dataset.model;
this._partDropOp.setPart(partName);
e.preventDefault();
});
LoadSubtreeConfig.attachInvisible
當該setPart函數加載拖動的部分SC模型時,設置LoadSubtreeConfig.attachInvisibly = true避免在鼠標光標放置在Web查看器中之前顯示加載的模型。
盡管鼠標光標在2D屏幕上滑動,但零件的位置應根據其在3D中的2D位置來確定。
在此運算符中,零件位置確定如下:
1.創建一個錨平面,該平面位于現有模型的邊界框(錨)的中心并垂直于向量(當前相機位置-錨)
2.使用以下命令計算當前鼠標位置(2D)的射線View.raycastFromPoint
3.使用以下命令計算錨平面和射線之間的交點(3D)Plane.intersectsRay
該類CollinearMateOperator是一個自定義運算符,用于通過選擇要匹配的兩個襯里邊緣來對齊零件。
使用翻轉按鈕可以反轉移動部件的方向。
在配合操作符中,在onMouseMove事件期間使用方法SelectionItem返回來計算用于配合的目標線/面實體View.pickFromPoint。提供了、、、等
SelectionItem多種方法來檢索實體參數。 預選實體使用、和(common_utilities.js)表示。isLineSelectionisFaceSelectiongetLineEntitygetFaceEntity
Model.setNodeLineHighlightedModel.setNodeFaceHighlightedArrowMarkup
在配合運算符中,通過以下步驟將零件位置應用于選定的實體向量:
1.使用函數 (common_utilities.js)中的 API計算旋轉軸Point3.cross和角度Point3.dotvectorsAngleDeg
2.使用API創建軸和角度的旋轉矩陣Matrix.createFromOffAxisRotation,并使用以下命令將其應用到移動部件節點Model.setNodeMatrix
3.計算平移距離
4.使用創建距離的平移矩陣Matrix.setTranslationComponent并將其應用于移動部件節點實際的旋轉和平移過程在名為(node_translation.js)
的單獨自定義類中執行nodeTranslation
該類ConcentricMateOperator是一個自定義運算符,用于通過選擇同心的兩個圓形邊/面來對齊零件。
移動部件的角度和位置可以使用按鈕進行調整。
CoplanarMateOperator (coplanar_mate_operator.js)
該類CoplanarMateOperator 是一個自定義運算符,用于通過選擇兩個要匹配的平面來對齊零件。
可以使用按鈕調整移動部件的位置。
HandleOperatorOperator (handle_oprator_oprator.js)
除了三個配合操作符之外,還可以通過拖放手柄操作符來移動零件。
默認情況下(沒有命令運行),HandleOperatorOperator被激活。自HandleOperatorOperator定義內置的行為,HandleOperator以便它可以使用傾斜軸平移零件。
盡管可以使用 激活手柄操作器HandleOperator.addHandles,但可以使用 更新手柄的位置和旋轉HandleOperator.updatePosition。根據所選實體更新手柄旋轉: HandleOperatorOperator
該演示使用jquery插件:jsTree來表示模型結構并控制部件的可見性。
類ModelTree(model_tree.js)是一個包裝類,提供用于創建模型結構(例如createRoot、addNode和)的函數deleteNode。
盡管Web查看器API不提供撤消/重做功能,但該演示支持使用原始對象和方法進行撤消/重做操作。
const history = {
type: "transform",
nodeId: this._mobileNode,
initialMatrix: initialMatrix,
newMatrix: newMatrix,
}
this._owner.createHistory(history);
在此演示中,裝配結構的結果(成員零件以及每個可見性和位置)使用JSON字符串表示。
通過保留JSON字符串,該演示即使在重新加載頁面后也可以重現組裝結構的結果。
慧都科技是Tech Soft 3D-HOOPS在中國區的唯一增值服務商,負責與試用,咨詢,銷售,技術支持,售后,旨在為企業提供一站式的3D開發解決方案。如果您的企業目前也有、的需求,歡迎咨詢在線客服申請3D 輕量化引擎的60天免費試用。
↓↓掃碼添加客服微信,及時獲取“HOOPS技術”支持↓↓
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn