Fusion 360 获取装配部件的三角面片顶点在装配坐标系中的数值

来源:互联网 发布:日本高中留学 知乎 编辑:程序博客网 时间:2024/04/29 21:01

原文链接:

https://forums.autodesk.com/t5/api-and-scripts/getting-triangulated-mesh-data-in-world-object-space/m-p/5613860#M354


如果您熟悉Inventor API,对部件与装配的关系不会陌生。在Fusion 360 也是类似的,即,部件是原始零件/子装 在装配中的引用,其形体即所谓代理实体,加入到装配后,部件的位置是基于装配基点做的偏移,自然其面片的数据也是偏移后的。所以,要是想拿到装配坐标系的的数值,需要再拿到原始零件的数值,再加上位置变换量。API提供了方便的方法,当拿到零件的body后 (目前还只是 BrepBody),可用以下方法得到装配环境中的代理body,进而通过这个代理body得到的三角面片信息就是装配坐标系的数值了。

BRepBody.createForAssemblyContext (部件引用)


function run(context) {    "use strict";    if (adsk.debug === true) {        /*jslint debug: true*/        debugger;        /*jslint debug: false*/    }     var ui;    try {        var app = adsk.core.Application.get();        ui = app.userInterface;                var meshStr = '';        var allOccs = app.activeProduct.rootComponent.allOccurrences;        for(var i = 0; i < allOccs.count; i++){            var occ = allOccs.item(i);            var comp = occ.component;            var bodies = comp.bRepBodies;            for(var j = 0; j < bodies.count; j++){                var body = bodies.item(j);                body = body.createForAssemblyContext(occ);                var meshMgr = body.meshManager;                var meshList = meshMgr.displayMeshes;                for(var k = 0; k < meshList.count; k++){                    var triMesh = meshList.item(k);                    var data = triMesh.nodeCoordinatesAsDouble;                    var dataStr = data.join(",");                    meshStr += dataStr;                    meshStr += '\n';                }            }        }        //ui.messageBox(meshStr);    }     catch (e) {        if (ui) {            ui.messageBox('Failed : ' + (e.description ? e.description : e));        }    }    adsk.terminate(); }


0 0
原创粉丝点击