如何调整对象大小 - Autodesk Forge Viewer

2024-01-11

我怎样才能改变对象的大小?

我需要改变物体的高度

例如,我们需要更改门或窗帘的高度

在此代码中我的对象消失了

let change = function () {

    const viewer = oViewer;
    const model = viewer.model;

    const frags = [
        123,
        361,
    ];

    for(let i in frags){

        let fragId = frags[i];

        // Get mesh with frag id
        let mesh = viewer.impl.getRenderProxy(model, fragId);

        // Selection ID
        let dbId = 1280; // viewer.getSelection()[0]

        model.getData().instanceTree.enumNodeFragments(dbId, fragId => {
            mesh.scale.x += 0.5;
            // mesh.scale.y = 5;
            // mesh.scale.z = 5;

            model.getFragmentList().setMesh(fragId, mesh, true);
            viewer.impl.invalidate(true);
        });
    }
};

以下代码调整了对象大小,但变得太大并且无法缩放

const viewer = oViewer;
const model = viewer.model;

viewer.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, onSelectedCallback);

function onSelectedCallback(event) {

    const fragId = event.fragIdsArray[0];

    if (typeof fragId == 'undefined') {return;}

    const fragIdsArray = (Array.isArray(fragId) ? fragId : [fragId]);

    fragIdsArray.forEach(function (subFragId) {

        let mesh = viewer.impl.getRenderProxy(model, subFragId).clone();

        mesh.scale.y += 0.2;
        mesh.scale.x += 0.2;
        mesh.scale.z += 0.2;

        model.getFragmentList().setMesh(subFragId, mesh, true);
        viewer.impl.invalidate(true);
    });
}

我找到了解决方案并为其编写了脚本

let transform = new function () {

    let _self = this;

    this.fragId = null;
    this.proxy = null;
    this.viewer = oViewer;
    this.model = this.viewer.model;

    this.setFragId = function (fragId) {
        this.fragId = fragId;
        this.proxy = this.viewer.impl.getFragmentProxy(this.model, this.fragId);
        this.proxy.getAnimTransform();
    };

    this.update = function(){
        this.proxy.updateAnimTransform();
        this.viewer.impl.sceneUpdated(true);
    };

    this.scaleX = function (num) {
        this.proxy.scale.x = num + 1;
        this.update();
    };

    this.scaleY = function (num) {
        this.proxy.scale.y = num + 1;
        this.update();
    };

    this.scaleZ = function (num) {
        this.proxy.scale.z = num + 1;
        this.update();
    };

    this.positionX = function (num) {
        this.proxy.position.x = num;
        this.update();
    };

    this.positionY = function (num) {
        this.proxy.position.y = num;
        this.update();
    };

    this.positionZ = function (num) {
        this.proxy.position.z = num;
        this.update();
    };

};

对于查找碎片 ID,您可以使用以下代码

let selection = new function () {

    this.viewer = oViewer;

    let _self = this;

    this.ids = function () {
        return this.viewer.getSelection();
    };

    this.count = function () {
        return this.viewer.getSelectionCount();
    };

    // Mesh Object
    this.mesh = new function () {
        this.all = function () {
            if (_self.count() === 0) return {};

            let meshes = _self.viewer.impl.selectionMeshes;
            let output = [];

            for (let index in meshes) {
                output.push(meshes[index]);
            }

            return output;
        };

        this.fragIds = function(){
            let meshes = this.all();
            let ids = [];
            meshes.forEach(function(mesh){
                ids.push(mesh.fragId);
            });
            return ids;
        };

        this.first = function () {
            return this.all()[0];
        };

        this.last = function () {
            return this.all().reverse()[0];
        }
    };

};

如何使用 ?

  • 用鼠标选择您的元素
  • 打开浏览器控制台
  • Type selection.mesh.fragIds() // [11]
  • Type transform.setFragId(11)
  • 现在您可以更改比例和位置:)

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

    如何调整对象大小 - Autodesk Forge Viewer 的相关文章

    • 如何使用expressjs发送多个文件?

      我希望能够发送许多文件 如果可能的话 发送整个目录 以便我可以在从 html 文件调用的其他 js 文件中访问它 const app require express const http require http Server app co
    • JavaScript 对输入的循环创建一个对象数组

      我正在尝试循环 div 中的输入元素 以创建对象数组 div div
    • 如何在 moment.js 中将日期格式化为 ISO 8601?

      这个文档提到moment ISO 8601作为格式化选项 从 2 7 0 http momentjs com docs parsing special formats http momentjs com docs parsing speci
    • 使用通过 (document.getElementById('ID')) 添加到数组的元素

      为什么这段代码不起作用 var all obj element new Array all obj element 0 document getElementById Img3 alert all obj element 0 style w
    • JavaScript 原型继承和 html canvas

      我是一名 Ruby 开发人员 最终决定认真学习 JavaScript 所以我买了一些书 开始深入研究 但当我试图理解原型继承时 我很快就陷入了困境 这本书的例子之一如下 给定一个 Shape 其原型有一个绘制方法 以及两个子形状 一个 Tr
    • 使用 Bluebird.js 和 Twitter 流的 Promise 和流

      我对 Promises 和 Node 非常陌生 并且对在流中使用 Promise 感到好奇 我可以承诺直播吗 使用 Bluebirdjs 和 Twit 模块 我有以下内容 var Twit require twit var Promise
    • 始终滚动 div 元素而不是页面本身

      我有一个带有内部的页面布局 div 包含页面上重要内容的元素 设计的重要部分是 content height 300px width 500px overflow scroll 现在 当包含的文本大于 300px 时 我需要能够滚动它 是否
    • Firebase 模拟器无法促进/运行新功能

      我有三个云功能 其中两个已部署到我的 firebase 项目中 其中一个是我刚刚添加的 我希望在部署之前在本地测试新的功能 但是当我尝试使用它时却无法使用 并且只有两个已部署的功能可用 Firebase 模拟器在端口上运行良好5001 像往
    • 无法使用 MV3 从 Firefox 下的通用脚本导出到 background.js

      我试图在服务工作者 background js 和内容脚本之间重用一些功能 https stackoverflow com questions 73421706 how to reuse a javascript function betw
    • 确定用户是否在shadow dom之外单击

      我正在尝试实现一个下拉菜单 您可以单击外部将其关闭 下拉列表是自定义日期输入的一部分 并且封装在输入的影子 DOM 内 我想写一些类似的东西 window addEventListener mousedown function evt if
    • 如何在正则表达式中区分数字和ip地址?

      例如 如果我们查看 5 56 和 183 55 0 144 基本上 当你做这样的事情时 d d 它匹配 5 56 189 55 和 0 144 有没有办法通过正则表达式仅匹配数字而不匹配 ip 地址的部分 我尝试使用前瞻 但我不知道它应该是
    • 如何使用 Eclipse 作为 Javascript IDE?

      我从官方下载页面下载了 eclipse Javascript IDE 但是 当我启动应用程序时 它显示 必须提供 Java 运行时环境或 Java 开发工具包才能运行 eclipse 我已经有一个运行良好的 eclipse 的 java I
    • Ember:命名出口错误

      我不知道为什么我的模板没有在指定的插座中呈现 这是我第一次尝试学习 ember 我被困在指定的渠道上 我想渲染侧边栏模板 in the outlet sidebar 和内容模板 in the outlet content 但我不断在控制台中
    • Java:从 ScriptEngine javascript 返回一个对象

      我正在尝试使用 Java 来评估 javascript脚本引擎 https docs oracle com javase 7 docs api javax script ScriptEngine html班级 这是我正在尝试做的事情的一个简
    • 如何使用 ui-router 中的 ui-sref 将参数传递给控制器

      我需要传递和接收两个参数到我想要转换到的状态ui srefui router 的 例如使用下面的链接将状态转换为home with foo and bar参数 a Go to home state with foo and bar para
    • JavaScript - 类根据条件扩展

      事情是这样的 我有一个名为 A 的主课 我希望这个班级能够扩展 B 级 class A extends B 但事实上 我希望 B 类在特定条件下扩展 C D 或 E class B extends B1 or class B extends
    • jQuery 和所有 .js 文件无法在本地运行,只能在外部运行

      我有一个奇怪的问题 我正在编写一个网站 包括 jQuery 和一些插件 它们存储在 js 文件夹中 当我尝试通过浏览器 jQuery 打开它时 插件和所有自定义脚本都不起作用 也许这与我的代码有关 但不这么认为 当然 当我在外部包含 jQu
    • 从数据库中给定时间起经过的时间

      我有一个 HTML 表 其中包含从数据库中提取的记录 我正在使用 PHP MySQL 我的表中名为 Timer 的列未从数据库中检索 我需要在此处显示经过的时间 从数据库中的特定时间开始 例如 假设现在的时间是2013年2月21日下午6点2
    • 如何使用 javascript 迭代文件系统目录和文件?

      我正在使用 Javascript 编写一个应用程序 该应用程序将与 Phonegap 一起使用来制作 Android 应用程序 我正在使用 Phonegap File API 来读取目录和文件 相关代码如下所示 document addEv
    • 如何使用正则表达式解析 OCC 选项符号?

      OCC 选项符号由 4 部分组成 标的股票或 ETF 的根代码 用空格填充至 6 个字符 到期日期 6 位数字 格式为 yymmdd 期权类型 P 或 C 用于看跌或看涨期权 执行价格 为价格 x 1000 前面填充 0 至 8 位数字 举

    随机推荐

    • 如何在.NET中调用DrawThemeTextEx

      我需要在 Vista 7 玻璃窗中编写带有发光效果的文本 并且我正在尝试调用 API 来在那里编写一些文本 我已经检查了一个很棒的sample http www codeproject com KB vista textonglass as
    • 到底如何将 ckeditor 与 Paperclip 集成,以便它可以上传图像文件?

      你怎么获得http github com galetahub rails ckeditor http github com galetahub rails ckeditor工作 以便您可以上传图像文件 我认为我不会使用 s3 存储 任何帮助
    • Swift 初始化规则混乱

      Rule 1 如果您的子类没有定义任何指定初始值设定项 它将自动继承其超类的所有指定初始值设定项 困惑 我在子类中提供了一个指定的初始值设定项 这意味着超类指定的初始化器不会归结为子类 但我还是需要写override关键字提供子类中任何超类
    • 使用 PowerShell 移动 xlsx 文件中的列

      PowerShell 和 Excel 问题在这里 我有几个电子表格 每个电子表格约有 9000 行数据 我想将 A 列与 B 列交换 并将数据保留在两列中 并使用 PowerShell 来执行此操作 我在谷歌上做了很多查找 看看是否可以做到
    • 如何在同一解决方案中引用来自单独项目的资源 (png)

      我的解决方案的结构如下 Class Library Name Chess Images Pawn png WPF Core 3 1 Project Name ChessApp 主窗口 xaml 我想在我的内部显示 Pawn png 图像主窗
    • C++ 运算符重载将指针类型作为参数?

      我是 C 新手 试图找出指针和引用之间的区别 我刚刚读过 作者在文章中提到day operator day d 不会编译 注意 day是枚举类型 并认为此重载运算符函数的参数必须是 T T 或 T const 类型 其中 T 是类或枚举类型
    • 为什么javascript中bool(true) && string的结果是string?

      测试代码是 console log true abc abc 谁能告诉我为什么结果是abc From 如果可以转换为 false 则返回 expr1 否则 返回 表达式2 因此 当与布尔值一起使用时 返回 true 如果两者都 操作数为真
    • 获取 facebook api 的访问令牌

      要获取访问令牌 GET https graph facebook com oauth access token client id YOUR APP ID client secret YOUR APP SECRET redirect uri
    • Python Pandas TypeError:第一个参数必须是字符串或编译模式

      我很抱歉这个超级简单的问题 但我无法让它发挥作用 我正在清理数据 并且想要添加一个标志 如果名称 分为名字和姓氏两列 错误 我建立了多种模式 但现在我正在处理单独的语句 我可以将所有这些语句合并为一个吗 pattern match incr
    • Rails:使用回形针上传文件

      我想使用回形针上传文件 通过基本的开箱即用设置 我能够将文件上传到默认目录 公共 系统中的某个目录 但是 当我尝试更改 url 或路径 或两者 时 class Cvit lt ActiveRecord Base has attached f
    • 时间:2019-03-17 标签:c#richtextboxoutofmemory

      我编写了一个应用程序 可以读取传入的聊天内容 有点像即时通讯工具 对其进行格式化并将其插入到 Richtextbox 中 如果您让程序运行足够长的时间 您将收到内存不足错误 查看我的代码后 我认为这是因为我从不修剪 Richtextbox
    • 如何布局图像及其左侧和下方的文本?

      我需要制作一个特定于网页的布局 它需要看起来像一篇网络文章 其中包含图像和文本 看图片 由于这在网络世界中很容易做到 所以我不确定如何在 XML 布局中做到这一点 显然 TextView当图像存在时必须位于左侧 并且在到达图像底部后 它必须
    • 如何在springboot中跳过失败的bean以避免reportFailure:771 >>应用程序启动失败

      有没有办法跳过失败 bean 以避免应用程序启动失败 让我解释一下这个场景 我在应用程序启动时创建 hazlecast bean 有时 hazecast 服务器可能不存在 那时 当我启动 springboot 应用程序时 hazecast
    • UI 测试中的呼叫按钮?

      我想知道是否可以从电话方案中点击呼叫按钮 例如 tel 555555555 因为如果我触摸通话按钮 我会收到一条提醒 提示我需要确认通话或取消通话 是否可以 我的代码中有这个 addUIInterruptionMonitor withDes
    • 使用 NSPredicate 删除对象

      我有以下词典 其中有很多子词典 如何删除其中的对象isChanged 1从父字典中使用NSPredicate 0 496447097042228 cellHeight 437 isChanged 1 100000019882803 1936
    • 如何为 PHP 全局设置 CURLOPT_CAINFO?

      我知道我可以在任何特定实例上设置该选项 但是我真正想要的是设置 php ini 或类似的地方 以便在所有项目和所有实例中处理此问题 有谁知道我可以实现这个目标的方法吗 编辑 我对允许证书位于不同服务器上的不同位置的解决方案特别感兴趣 我正在
    • 使用 JavaScript 代替 AppleScript 实现邮件规则自动化

      我正在尝试使用 Javascript 自动化而不是 AppleScript 构建 Mail app 规则 在 OS X Yosemite 上 但我停留在基础知识上 我在 AppleScript 中看到这段代码 using terms fro
    • 如何将参数传递给 Rails 控制器方法,然后使用 JQuery/AJAX 返回值?

      我使用单击函数首先获取数组 位置 然后通过 AJAX 调用将其发布到控制器方法 然后我希望该方法返回一个布尔值以启用 jquery 函数中的 addClass 控制台始终抛出 500 服务器错误 这是 js 文件 document read
    • 安装 GDL 以在 Python 中使用

      我需要使用一些GDL http gnudatalanguage sourceforge net credits php我的 Python 代码中的例程 In the GitHub 仓库 https github com cenit GDL
    • 如何调整对象大小 - Autodesk Forge Viewer

      我怎样才能改变对象的大小 我需要改变物体的高度 例如 我们需要更改门或窗帘的高度 在此代码中我的对象消失了 let change function const viewer oViewer const model viewer model