3D Web轻量引擎HOOPS Communicator装配制造流程演示

介绍

该演示介绍了使用HOOPS Communicator的独特工作流程,该工作流程从零件列表中加载零件,并使用自定义配合操作符(例如共线、同心和共面)构建装配模型。该工作流程可用于各种行业,例如维护手册、工作指令或电子商务(自定义订单)等。
创建的装配结构可以用JSON字符串表示并复制。

HOOPS中文网icon-default.png?t=N7T8http://techsoft3d.evget.com/

示例项目

从以下Git存储库下载示例项目:

git clone https://github.com/techsoft3d/assembly_creator.git

通过在GitHub上创建帐户来为techsoft3d/ assembly_creator开发做出贡献。

设置和使用

请README.MD在Git存储库中参考。

自定义运算符

该演示实现了几个自定义运算符。
每个自定义运算符都可以独立用于其他项目。

PartDragDropOperator (part_drag_drop_operator.js)

该类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();

    });

尖端(1)

LoadSubtreeConfig.attachInvisible

当该setPart函数加载拖动的部分SC模型时,设置LoadSubtreeConfig.attachInvisibly = true避免在鼠标光标放置在Web查看器中之前显示加载的模型。

  • 拖动零件定位

尽管鼠标光标在2D屏幕上滑动,但零件的位置应根据其在3D中的2D位置来确定。

tupian

在此运算符中,零件位置确定如下:

1.创建一个锚平面,该平面位于现有模型的边界框(锚)的中心并垂直于向量(当前相机位置-锚)

2.使用以下命令计算当前鼠标位置(2D)的射线View.raycastFromPoint

3.使用以下命令计算锚平面和射线之间的交点(3D)Plane.intersectsRay

CollinearMateOperator (collinear_mate_operator.js)

该类CollinearMateOperator是一个自定义运算符,用于通过选择要匹配的两个衬里边缘来对齐零件。

tupian

使用翻转按钮可以反转移动部件的方向。

tupian

尖端(2)
  • 预选择

在配合操作符中,在onMouseMove事件期间使用方法SelectionItem返回来计算用于配合的目标线/面实体View.pickFromPoint。提供了、、、等
SelectionItem多种方法来检索实体参数。 预选实体使用、和(common_utilities.js)表示。isLineSelectionisFaceSelectiongetLineEntitygetFaceEntity
Model.setNodeLineHighlightedModel.setNodeFaceHighlightedArrowMarkup

tupian

  • 零件对齐

在配合运算符中,通过以下步骤将零件位置应用于选定的实体向量:

1.使用函数 (common_utilities.js)中的 API计算旋转轴Point3.cross和角度Point3.dotvectorsAngleDeg

tupian

2.使用API创建轴和角度的旋转矩阵Matrix.createFromOffAxisRotation,并使用以下命令将其应用到移动部件节点Model.setNodeMatrix

3.计算平移距离

tupian

4.使用创建距离的平移矩阵Matrix.setTranslationComponent并将其应用于移动部件节点实际的旋转和平移过程在名为(node_translation.js)
的单独自定义类中执行nodeTranslation

ConcentricMateOperator (concentric_mate_operator.js)

该类ConcentricMateOperator是一个自定义运算符,用于通过选择同心的两个圆形边/面来对齐零件。

tupian

移动部件的角度和位置可以使用按钮进行调整。

tupian

CoplanarMateOperator (coplanar_mate_operator.js)

该类CoplanarMateOperator 是一个自定义运算符,用于通过选择两个要匹配的平面来对齐零件。

tupian

可以使用按钮调整移动部件的位置。

tupian

HandleOperatorOperator (handle_oprator_oprator.js)

除了三个配合操作符之外,还可以通过拖放手柄操作符来移动零件。
默认情况下(没有命令运行),HandleOperatorOperator被激活。自HandleOperatorOperator定义内置的行为,HandleOperator以便它可以使用倾斜轴平移零件。

tupian

尖端(3)

尽管可以使用 激活手柄操作器HandleOperator.addHandles,但可以使用 更新手柄的位置和旋转HandleOperator.updatePosition。根据所选实体更新手柄旋转: HandleOperatorOperator

  • 选择圆柱面时,它将Z轴与面的中心轴对齐
  • 当选择平面时,它将Z轴与该面的法线向量对齐
  • 选择衬垫边缘时,它将Z轴与边缘方向对齐
模型树

该演示使用jquery插件:jsTree来表示模型结构并控制部件的可见性。
类ModelTree(model_tree.js)是一个包装类,提供用于创建模型结构(例如createRoot、addNode和)的函数deleteNode。

tupian

撤消/重做支持

尽管Web查看器API不提供撤消/重做功能,但该演示支持使用原始对象和方法进行撤消/重做操作。

const history = {

    type: "transform",

    nodeId: this._mobileNode,

    initialMatrix: initialMatrix,

    newMatrix: newMatrix,

}

this._owner.createHistory(history);

tupian

使用JSON保存装配结构

在此演示中,装配结构的结果(成员零件以及每个可见性和位置)使用JSON字符串表示。

tupian

通过保留JSON字符串,该演示即使在重新加载页面后也可以重现组装结构的结果。

tupian

申请HOOPS试用icon-default.png?t=N7T8http://x7pfmmn259623uby.mikecrm.com/d7EBgIv 如果您的企业目前也有3D数据格式转换、3D Web轻量化渲染的需求,欢迎联系我们哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BMS基础之锂电池充放电特性

磷酸铁锂电池 它充电在3.3V以后,会有一个猛地增加,所以3.3v其实就是他的饱和电压,如果继续充电就会损坏电池,同理放电到一定程度电压就会急剧下降,过放也会损坏电池(充放电截止电压) 三元锂电…

Social Skill Training with Large Language Models

Social Skill Training with Large Language Models 关键字:社交技能训练、大型语言模型、人工智能伙伴、人工智能导师、跨学科创新 摘要 本文探讨了如何利用大型语言模型(LLMs)进行社交技能训练。社交技能如冲突解决对于有效沟通和在工作和…

线程的666种状态

文章目录 在Java中,线程有以下六种状态: NEW:新建状态,表示线程对象已经被创建但还未启动。RUNNABLE:可运行状态,表示线程处于就绪状态,等待系统分配CPU资源执行。BLOCKED:阻塞状态…

SpringBoot的旅游管理系统+论文+ppt+免费远程调试

项目介绍: 基于SpringBoot旅游网站 旅游管理系统 本旅游管理系统采用的数据库是Mysql,使用SpringBoot框架开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 (1&…

想进阶为 Go 语言高级开发工程师吗?那么,一定要阅读此文!

大家好,我是孔令飞,字节跳动云原生开发专家、前腾讯云原生技术专家;《企业级Go项目开发实战》作者,云原生实战营 知识星球星主; 我们知道,Go 出自名门 Google 公司,是一门支持并发、垃圾回收的编…

如何快速开启一个项目-ApiHug - API design Copilot

ApiHug101-001开启篇 🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin |…

ClickHouse 介绍

前言 一个通用系统意味着更广泛的适用性,但通用的另一种解释是平庸,因为它无法在所有场景内都做到极致。 ClickHouse 在没有像三驾马车这样的指导性论文的背景下,通过针对特定场景的极致优化,获得闪电般的查询性能。 ClickHous…

[StartingPoint][Tier2]Oopsie

Task 1 With what kind of tool can intercept web traffic? (哪种工具可以拦截web数据包) proxy Task 2 What is the path to the directory on the webserver that returns a login page? (路径到返回登录页面的 Web 服务器目录是什么?) /cdn-cgi/login Tas…

标定系列——Ubuntu18.04下opencv-4.5.3与opencv_contrib-4.5.3源码编译(二十)

Ubuntu18.04下opencv-4.5.3与opencv_contrib-4.5.3源码编译 说明下载安装步骤1.更新2.安装必要的依赖包3.下载源码包并解压4.终端运行如下命令5.添加配置路径6.验证安装是否成功 说明 Ubuntu18.04下对opencv-4.5.3与opencv_contrib-4.5.3源码编译 下载 CSDN下载 安装步骤 …

基于单片机数码管20V电压表仿真设计

**单片机设计介绍,基于单片机数码管20V电压表仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机数码管20V电压表仿真设计的主要目的是通过单片机和数码管显示电路实现一个能够测量0到20V直流电压的电…

如果用大模型考公,kimi、通义千问谁能考高分?

都说大模型要超越人类了,今天就试试让kimi和通义千问做公务员考试题目,谁能考高分? 测评结果再次让人震惊! 问题提干:大小两种规格的盒装鸡蛋,大盒装23个,小盒装16个,采购员小王买了…

【鸿蒙开发】系统组件Row

Row组件 Row沿水平方向布局容器 接口: Row(value?:{space?: number | string }) 参数: 参数名 参数类型 必填 参数描述 space string | number 否 横向布局元素间距。 从API version 9开始,space为负数或者justifyContent设置为…

用vue.js写案例——ToDoList待办事项 (步骤和全码解析)

目录 一.准备工作 二.编写各个组件的页面结构 三.实现初始任务列表的渲染 四.新增任务 五.删除任务 六.展示未完成条数 七.切换状态-筛选数据 八.待办事项(全)代码 一.准备工作 在开发“ToDoList”案例之前,需要先完成一些准备工作&a…

电力变压器数据集介绍和预处理

1 电力变压器数据集介绍 1.1 数据背景 在这个Github仓库中,作者提供了几个可以用于长序列时间序列问题的数据集。所有数据集都经过了预处理,并存储为.csv文件。数据集的范围从2016/07到2018/07。 ETT-small: 含有2个电力变压器(来自2个站点…

React - 你使用过高阶组件吗

难度级别:初级及以上 提问概率:55% 高阶组件并不能单纯的说它是一个函数,或是一个组件,在React中,函数也可以做为一种组件。而高阶组件就是将一个组件做为入参,被传入一个函数或者组件中,经过一定的加工处理,最终再返回一个组件的组合…

公网环境下如何端口映射?

公网端口映射是一种网络技术,它允许将本地网络中的设备暴露在公共互联网上,以便能够从任何地方访问这些设备。通过公网端口映射,用户可以通过互联网直接访问和控制局域网中的设备,而无需在本地网络中进行复杂的配置。 公网端口映射…

AUTOSAR配置工具开发教程 - 开篇

简介 本系列的教程,主要讲述如何自己开发一套简单的AUTOSAR ECU配置工具。适用于有C# WPF基础的人员。 简易介绍见:如何打造AUTOSAR工具_autosar_mod_ecuconfigurationparameters-CSDN博客 实现版本 AUTOSAR 4.0.3AUTOSAR 4.2.2AUTOSAR 4.4.0 效果 …

GD32零基础教程第一节(开发环境搭建及工程模板介绍)

文章目录 前言一、MDK keil5安装二、设备支持包安装三、CH340串口驱动安装四、STLINIK驱动安装五、工程风格介绍总结 前言 本篇文章正式带大家开始学习GD32F407VET6国产单片机的学习,国产单片机性能强,而且价格也便宜,下面就开始带大家来介绍…

LeetCode-移除元素

题目 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长…

如何使用群晖Synology Drive结合cpolar内网穿透实现同步Obsidian笔记文件

文章目录 一、简介软件特色演示: 二、使用免费群晖虚拟机搭建群晖Synology Drive服务,实现局域网同步1 安装并设置Synology Drive套件2 局域网内同步文件测试 三、内网穿透群晖Synology Drive,实现异地多端同步Windows 安装 Cpolar步骤&#…