【问题标题】:Create a section plane leaning against one object创建一个靠在一个对象上的剖面
【发布时间】:2020-08-22 13:17:51
【问题描述】:

我需要创建一个靠在选定对象上的垂直剖面。例如选择这样的对象

我需要得到一个靠在物体最长边上的剖面

我正在使用查看器版本 7.16,它在右键单击选择中提供了一个剖面选项,但它无法正常工作。

我正在使用 frags.getWordBounds 方法来获取对象“周围”的框,并使用一点三角函数计算了方向,但我想这不是正确的方法,因为我无法确定正确的对象方向:

+-------------+
|.           *|
| .         * |
|  .       *  |
|   .     *   |
|    .   *    |
|     . *     | is my object the dot or the asterisk?
|      *      |
|     * .     |
|    *   .    |
|   *     .   |
|  *       .  |
| *         . |
|*           .|
+-------------+

提前感谢您的支持。

【问题讨论】:

    标签: autodesk-forge autodesk-viewer plane


    【解决方案1】:

    我正在使用查看器版本 7.16,它在右键单击选择中提供了一个剖面选项,但它无法正常工作。

    感谢您告知我们该问题 - 您是否可以将有问题的模型上传到在线驱动器,然后将下载链接放到 forge.help@autodesk.com,并详细说明它是如何不起作用的正确,以便我们可以尝试修复它?

    看起来你正在尝试实现你自己的东西来替换切片选项为什么不通过实现你自己的tool 来捕获画布上的鼠标点击事件,然后从那里使用命中测试结果计算切割面?比如:

     const hitTest = viewer.hitTest(event.x,event.y)
     const SectionTool = viewer.getExtension("Autodesk.Section")
     SectionTool.activate()
     SectionTool.tool.setSectionPlane(hitTest.face.normal, hitTest.point)
    

    【讨论】:

    • 谢谢布莱恩。我正在阅读 Petr 帖子以了解如何创建自己的工具。
    • 当我说查看器的截面平面选项工作不正确时,我的意思是新平面通常是正交的并且不靠在对象上。这就是为什么我需要获取对象的方向(如 hitTest.face.normal)和对象外表面上的一个点作为 setSectionPlane 方法的参数。我应该在 stackflow 上创建另一个问题以便更清楚吗?
    【解决方案2】:

    我在创建自己的剖面工具时遇到了类似的问题。你可以在这里看到问题: Getting global normal from hitTest.face.normal

    不确定你是否正在创建自己的,但如果你是我发现有两件事对我来说至关重要:

    onst normal = this.hitTest.face.normal.clone();
    normal.transformDirection( this.hitTest.object.matrixWorld );
    

    const currentFragId = this.hitTest.fragId;
    const renderProxy = this.viewer.impl.getRenderProxy(this.viewer.model,currentFragId);
    

    第一个 sn-p 从对象空间到世界空间获取世界法线,第二个 sn-p 似乎重新计算在 hitTest 中收到的片段。

    【讨论】:

    • 感谢您对易视网的支持。我一定会听从你的建议。
    猜你喜欢
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多