(Demo3D 学习笔记)案例1:自创组件,可以一键自动连接场景中的其他相关组件

2023-05-16

1、模型描述

在场景中自创一个组件,通过该组件,可以一键自动连接场景中的各相关组件。

2、模型布局

首先将自定义组件(绿色)分别连接输送机(左),叉车,输送机(右)后(见左图),通过组件的自定义功能,一键完成输送机(左)连接叉车,再让叉车连接输送机(右)的最终效果(右图)。

  

3、解决方案

3.1、创建自定义组件

在场景中添加一个Box1,颜色为绿色,高度设置为较小值,使得此Box1呈现扁平状。

对Box1创建自定义属性如下:

定义好后,可以看到此组件的属性栏中只出现了A、B、C、PortA、PortB、PortC 属性(下图左),而 iConnect、iDisconnect 属性类型因为是脚本,故这2个属性实际显示在事件栏中(下图右)。

  

 在自定义组件Box1 的 OnReset 事件中,编写代码如下:

function Box1_OnReset( sender : Demo3D.Visuals.BoxVisual )
{
    var portA: CustomEnumeration = sender.PortA;  //定义枚举变量
    portA.AllowedValues=New ArrayList(["Start","End"]);  //定义枚举变量的值
     var portB: CustomEnumeration = sender.PortB;
    portB.AllowedValues=New ArrayList(["Start","End"]);
     var portC: CustomEnumeration = sender.PortC;
    portC.AllowedValues=New ArrayList(["Start","End"]);
}

3.2、将自定义组件Box1 的A/B/C点分别进行连接

连接后,再到Box1的属性栏中赋值,其中 PortA="End",PortB="Start",PortC="Start"。

完成上述一系列操作的目的,在于我们接下来编写代码时,需要通过这些属性来引用各实体组件的端口。右下图很明显,A表示左边3个输送机,B表示叉车,C表示右边3个输送机,这样的话,我们可以在代码中通过 A.PortA 方式,就可以引用左边3个输送机 SR1.End、SR2.End、SR3.End 端口,其他类同。

  

 3.3、编写代码

3.3.1、iConnect 事件(一键连接相关实体的端口连接)

在 Box1 的事件栏中找到 iConnect 事件,选择 New;

编写代码如下:

function Box1_iConnect( sender : Demo3D.Visuals.BoxVisual )
{
    var a:VisualList=sender.A; //定义数组变量,取值为输送机 SR1/SR2/SR3
    var b:VisualList=sender.B;
    var c:VisualList=sender.C;
    //针对左边每个输送机做循环
    for(eachA:Visual in a){

        //获取左边单个输送机的端口,因PortA="End",故获取到的是此输送机的输出端口
        var aconn:Connector = eachA.FindConnector(sender.PortA.ToString()); //务必要用ToString函数转换为字符串
        //针对每个叉车做循环(这里只有1个叉车)
        for(eachB:Visual in b){

           //获取叉车的端口,因PortB="Start",故获取到的是叉车的输入端口
            var bconn:Connector = eachB.FindConnector(sender.PortB.ToString());

           //输送机输出端口与叉车输入端口连接
            aconn.ConnectTo(bconn,0,1,1);
         }
      }
    //以下代码同上面类似
    for(eachC:Visual in c){
        var cconn:Connector = eachC.FindConnector(sender.PortC.ToString());
        
        for(eachB:Visual in b){
            var bconn:Connector;
            if(sender.PortC.ToString()=="Start"){
                bconn = eachB.FindConnector("End");
                
            }
            else{
                bconn = eachB.FindConnector("Start");
            }
            cconn.ConnectTo(bconn,0,1);
        
        }
        
    }
    

3.3.2、iDisconnect 事件(一键断开相关实体的端口所有连接)

在 Box1 的事件栏中找到 iDisconnect 事件,选择 New,编写代码如下;

function Box1_iDisconnect( sender : Demo3D.Visuals.BoxVisual )
{
    var a:VisualList=sender.A;
    var b:VisualList=sender.B;
    var c:VisualList=sender.C;
    //对左边3个输送机做循环
    for(eachA:Visual in a){
        var aconn:Connector = eachA.FindConnector(sender.PortA.ToString());
        aconn.DisconnectAll();  //断开此输送机的所有端口连接
    }
    for(eachB:Visual in b){
        var bconn:Connector = eachB.FindConnector(sender.PortB.ToString());
        bconn.DisconnectAll();
    }
    for(eachC:Visual in c){
        var cconn:Connector = eachC.FindConnector(sender.PortC.ToString());
        cconn.DisconnectAll();
    }    

}

3.4、最终效果


 

 3.5、学习小结

3.5.1、创建组件的自定义属性时,类型为 Script 的属性实际是事件,显示在该组件的事件栏中;

3.5.2、枚举变量的定义及取值;

3.5.3、sender.FindConnecter(portName)函数用法,注意 portName 参数是字符串类型。如 portName 是其他类型值,需用 portName.ToString() 方式转换为字符串

3.5.4、端口连接:ConnectTo() 函数的用法,特别注意其中有个允许多端口连接的参数;

3.5.5、断开所有端口连接:DisconnectAll() 函数的用法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(Demo3D 学习笔记)案例1:自创组件,可以一键自动连接场景中的其他相关组件 的相关文章

  • SDN和SD-WAN有本质区别—Vecloud微云

    作为软件定义网络 xff08 SDN xff09 技术中的一个细分 xff0c 软件定义广域网 xff08 SD WAN xff09 无疑是从2015年到现在企业级广域网布局中最热门的技术之一 SDN SDN旨在支持局域网 xff08 LA
  • 企业MPLS专线的价格及计费方式——微云专线

    企业MPLS专线的费用 MPLS最大技术特色为可以指定资料包传送的先后顺序 xff0c 提供优质增值服务 xff0c 如 xff1a 差别服务 Diff serv 服务级别 CoS 和服务质量 QoS 等 因为MPLS整合了第三层路由和第二
  • 网络专线MPLS配置原理

    MPLS最早的意思是让中间设备只是查找一个表 xff0c 这样就可以相对更快地工作 xff0c 随着CPU运算能力的不断提高 xff0c 包的交换方式从原始到传统 一次路由多次交换 xff0c 最后再到快速的CEF数据交换方式 xff0c
  • 什么是BGP,BGP的优点有哪些?-Vecloud

    什么是BGP 边界网关协议 BGP 是运行于 TCP 上的一种自治系统 AS 的路由协议 xff0c 是唯一能够妥善处理不相关路由域间的多路连接的协议 通俗点讲 中国电信 中国联通 中国移动和一些拥有AS自治域的大型民营IDC运营商就可以通
  • 从linux接入到windows远程桌面

    Windows 提供了一种远程桌面系统 xff0c 可使用户远程登录进行系统管理或作为终端服务器运行各种应用软件 要连接Windows远程桌面 xff0c 需在Windows客户端安装 相应的软件 xff08 tsclient xff09
  • ssh命令使用总结

    前言 为了安全起见 xff0c 公司服务器只给开放了一个ssh端口其他服务器通过跳板机登录 xff0c 这样难免会造成一些不便 xff0c 但是ssh总体还比较强大 xff0c 可以通过配置 xff0c 方便容易的进行登录 也可以通过端口转
  • **matlab subs函数**

    matlab subs函数 matlab中subs 是符号计算函数 xff0c 表示将符号表达式中的某些符号变量替换为指定的新的变量 xff0c 常用调用方式为 xff1a subs S OLD NEW 表示将符号表达式S中的符号变量OLD
  • Python爬虫库推荐,建议收藏留用

    很多人学Python xff0c 都是从爬虫开始的 xff0c 毕竟网上类似的资源很丰富 xff0c 开源项目也非常多 Python学习网络爬虫主要分3个大的版块 xff1a 抓取 xff0c 分析 xff0c 存储 当我们在浏览器中输入一
  • 【深度学习】:Faster RCNN论文详解

    Faster RCNN详解 Faster RCNN 是在Fast RCNN的基础上 xff0c 进一步改进 xff0c 解决select search 算法选择候选框速度太慢的问题 Faster R CNN Towards Real Tim
  • 优化命令之taskset——查询或设置进程绑定CPU

    目录 一 xff1a taskset概述 二 xff1a 安装taskset工具 2 1taskset语法 2 2taskset用法 2 2 1指定PID为8528的进程在CPU1上运行 2 2 2更改具体某一进程 xff08 或 线程 x
  • Kubernetes:(十八)flannel网络

    目录 一 xff1a 什么是Flannel 1 1 Flannel实现原理 1 2 数据转发流程 二 xff1a Flannel网络概述 2 1 Vxlan 模式 2 1 1 通信流程 2 1 2 部署 2 1 3 相关配置 2 1 4 卸
  • 串口调试工具 O-ComTool V1.1.3

    新版本 O ComTool V2 0 0点击访问 写在之前 由于本人从事嵌入式工作 xff08 物联网方向 xff09 xff0c 经常需要和串口打交道 xff0c 面对各种规约 协议 xff0c 调试实在麻烦 xff0c 于是本人根据同事
  • 关于VSCODE的插件 一

    官方API文档 1 要学好TypeScript 官方教程 1 1TypeScript是一门弱类型语言 强类型和弱类型主要是站在变量类型处理的角度进行分类的 这些概念未经过严格定义 xff0c 它们并不是属于语言本身固有的属性 xff0c 而
  • Keil_debug

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 目录 前言 一 使用步骤 1 引入库 2 读入数据 总结 前言 程序员的工作中调试 debug xff0c 修bug xff0c 改bug
  • 前端基础知识梳理——html中的长度单位与颜色RGB值

    前言 我们在编写前端业务的时候很定会使用到长度单位 xff0c 这对于我们构建前端元素 xff0c 布局 xff0c 定位是很重要的 就像我们在盖房子的时候 xff0c 需要使用标尺线精确的测量 xff0c 也要使用颜色用于装饰页面 在ht
  • 【Hadoop】熟悉常用的HBase操作(Java实现)

    一 实验平台 操作系统 xff1a Linux deepin Hadoop版本 xff1a 2 7 7 HBase版本 xff1a 1 2 6 Java IDE xff1a Eclipse 二 实验内容 1 使用 Hadoop提供的Java
  • Hadoop权威指南:知识梳理(一)

    第一章 xff1a 初识Hadoop MapReduce三大设计目标 xff1a 为只需要短短几分钟或几个小时就可以完成的作业提供服务运行于同一个内部有高速网络连接的数据中心内数据中心内的计算器都是可靠的 专门的硬件 提供Hadoop支持的
  • tasksel —– ubuntu里面方便安装服务的软件

    用这个软件可以方便安装dns server lamp kubuntu desktop ubuntu desktop xubuntu之类的软件包 这个软件在ubuntu server里是预装的 xff0c 而在桌面版里是不预装的 xff0c
  • 信号量能被 FixedThreadPool 替代吗?

    Semaphore 信号量 从图中可以看出 xff0c 信号量的一个最主要的作用就是 xff0c 来控制那些需要限制并发访问量的资源 具体来讲 xff0c 信号量会维护 许可证 的计数 xff0c 而线程去访问共享资源前 xff0c 必须先
  • 带参数的宏定义(宏函数)

    宏函数没有普通函数压栈 跳转 返回等的开销 xff0c 可以提高程序的效率 宏的名字中不能有空格 xff1b 用括号括住每一个参数 xff0c 并括住宏的整体定义 xff1b 用大写字母表示宏的函数名 define SUM xff08 a

随机推荐

  • OVN&OVS代码下载、编译安装以及运行步骤

    1 代码下载 新建代码目录 home code 下载ovs代码 xff1a git clone b branch 2 15 https github com openvswitch ovs git 下载ovn代码 xff1a git clo
  • CMMI过程改进反例

    xfeff xfeff 最近一直在看 CMMI 的资料 xff0c 越看觉得越有意思 xff0c 今天看到过程改进的时候 xff0c 突然想起来之前所在的公司发生的过程改进相关的事儿来 公司通过 CMMI3 级认证之后 xff0c PMO
  • hadoop 超详细入门wordcount

    概述 今天博客收到了第一条评论 xff0c 感觉很赞哦 xff0c 最近一直在学习hadoop xff0c 主要是结合 实战Hadop xff1a 开启通向云计算的捷径 刘鹏 xff0c 然后apache官网的doc xff08 还是要以官
  • NOIP2018集训总结

    由于语文水平有限 xff0c 精美的桥段 xff0c 跌宕起伏的情节是不可能的了 xff0c 也许看起来会很智障 初赛 前排沙发祝贺墙根火 这次初赛主要在 读程序填空 上失分较多 先找几个不是原因的原因 xff1a 考前那晚宿舍里人巨吵考前
  • Hadoop大数据入门到实战(第四节) - HDFS文件系统(使用)

    这一小节我们来学习 xff1a 1 HDFS的设计 xff0c 2 HDFS常用命令 HDFS的设计 分布式文件系统 客户 xff1a 帮我保存一下这几天的数据 程序猿 xff1a 好嘞 xff0c 有多大呢 xff1f 客户 xff1a
  • HashMap什么时候重写hashcode和equals方法,为什么需要重写

    转载自 xff1a http bdcwl blog 163 com blog static 765222652009112744733937 HashSet内部是通过HashMap实现 只有使用排序的时候才使用TreeMap 否知使用Has
  • 运维如何解决终端部门投诉

    东部某省会城市的联通分公司 xff0c 内部业务系统都运行在VMware为基础的虚拟化环境中 xff0c 但联通的网络运维部在运维时却遇到了很多难题 由于V center的operation manager等云管产品只能监控到虚拟化网络的基
  • Latex并排显示两张图片

    begin figure htbp begin minipage t 0 5 linewidth centering includegraphics width 61 textwidth figures karate graph pdf c
  • HashMap原理深入理解

    hashing 哈希法 的概念 散列法 xff08 Hashing xff09 是一种将字符组成的字符串转换为固定长度 xff08 一般是更短长度 xff09 的数值或索引值的方法 xff0c 称为散列法 xff0c 也叫哈希法 由于通过更
  • ROS2通过话题的发布与订阅进行串口通信

    目录 步骤新建一个cpp header的包进入include xff0c 新建头文件minimal publisher hpp进入src目录 xff0c 新建文件minimal publisher cpp进入src目录 xff0c 新建文件
  • 【增大C盘内存——拓展卷】C盘与未分配空间之间有恢复分区的解决方法——安装diskgenius

    目录 1 简述 2 diskgenius的使用 1 简述 C盘内存告急 xff0c 一般方法是删除 移动 xff0c 还有一类就是拓展C盘的大小 通常来说 xff0c 电脑或笔记本刚买来的时候 xff0c 硬盘分区都是出厂时早就被先划分好的
  • 【使用ubuntu时电脑很卡,连切换个页面都要等好一会儿】

    之前用ubuntu我都是看运气的 xff0c 一打开运行内存必定到达92 左右 xff0c 有时候很卡很卡 xff0c 做个作业花了大半天 xff0c 只有偶尔莫名的顺畅 直至昨天 xff0c 我发现了一个地方 xff0c 将它改过来就好多
  • 使用宝塔部署JavaWeb前后端项目到服务器

    1 我使用的是腾讯云的轻量应用服务器 xff0c 在安装系统的时候可以选择使用宝塔Linux面板 2 安装了宝塔面板以后 xff0c 可以在应用管理中看到宝塔面板的登陆地址 在登录之前需要在用户名和密码那一栏登录 xff0c 来获取宝塔的用
  • VMware USB Arbitration Service无法启动的解决方案

    原文地址 xff1a VMware USB Arbitration Service无法启动的解决方案 作者 xff1a 尔心眼坏坏 问题描述 xff1a 常用VMware虚拟机的朋友们有时应该遇到这种情况 xff0c 就是装完VMware
  • VMware安装linux虚拟机(完整版)

    vmware的安装 去官网进行下载虚拟机 虚拟机下载地址 xff1a VMware16下载 vmware workstation pro 16官方版下载 虚拟机 华军软件园 第一步 打开安装包 第二步 选择稍后安装 是最快的方式 第三步 看
  • AWK中BEGIN和END的使用理解

    awk中begin和end的使用 awk使用 语法 awk 39 script 39 filenames awk使用语法中的script又由多个pattern 43 action组成 单个 pattern actions 应用不通的patt
  • 教你彻底搞懂Cocos Creator Tween

    Cocos 使用了Tween来代替原来的Action系统 今天来给大家讲解Tween如何使用 帮助大家掌握Tween的使用 xff0c 并且对Tween有一个更深入的了解 这里有个cocos creator学习交流点击可以直接进入 1 Tw
  • Hexo的常用指令合集

    Hexo xff1a 一个基于Node js的静态网页生成器 xff0c 常将它与Github Page搭配使用 xff0c 创建个人博客网站 hexo有许多主题 xff0c 其实最火爆的是NexT Matery等 xff0c 复制关键词到
  • (Demo3D 学习笔记)案例2:飞板传输货物,并按指定货位上架

    1 模型描述 通过红色飞板 xff0c 将输送机处的货物逐个传送到货架指定货位 xff0c 货位由货位表指定 2 模型布局 3 解决方案 3 1 载荷发生器 首先给载荷发生器创建自定义属性Loc xff0c 类型为表 在载荷发生器的属性窗口
  • (Demo3D 学习笔记)案例1:自创组件,可以一键自动连接场景中的其他相关组件

    1 模型描述 在场景中自创一个组件 xff0c 通过该组件 xff0c 可以一键自动连接场景中的各相关组件 2 模型布局 首先将自定义组件 xff08 绿色 xff09 分别连接输送机 xff08 左 xff09 xff0c 叉车 xff0