Navisworks COM API для экспорта геометрии и расчета граней и вершин

Я пытаюсь экспортировать вершины, грани и цвета выбранного объекта в Navis. После небольшого исследования я обнаружил, что мы можем сделать это, используя COM API, предоставленный Navisworks. Я использовал getprimitives, чтобы найти треугольники. который выглядит так, как показано ниже.

'using Autodesk.Navisworks.Api;
using Autodesk.Navisworks.Api.Plugins;
using ComBridge = Autodesk.Navisworks.Api.ComApi.ComApiBridge;
using COMApi = Autodesk.Navisworks.Api.Interop.ComApi;

#region InwSimplePrimitivesCB Class
class CallbackGeomListener : COMApi.InwSimplePrimitivesCB
{
    public void Line(COMApi.InwSimpleVertex v1,
            COMApi.InwSimpleVertex v2)
    {
        // do your work
    }

    public void Point(COMApi.InwSimpleVertex v1)
    {
        // do your work
    }

    public void SnapPoint(COMApi.InwSimpleVertex v1)
    {
        // do your work
    }

    public void Triangle(COMApi.InwSimpleVertex v1,
            COMApi.InwSimpleVertex v2,
            COMApi.InwSimpleVertex v3)
    {
        // do your work
    }


 }
 #endregion

 #region NW Plugin
[PluginAttribute("Test","ADSK",DisplayName= "Test")]
[AddInPluginAttribute(AddInLocation.AddIn)]
public class Class1:AddInPlugin
{
    public override int Execute(params string[] parameters)
    {
        // get the current selection
        ModelItemCollection oModelColl =
            Autodesk.Navisworks.Api.Application.
                ActiveDocument.CurrentSelection.SelectedItems;

        //convert to COM selection
        COMApi.InwOpState oState = ComBridge.State;
        COMApi.InwOpSelection oSel =
                ComBridge.ToInwOpSelection(oModelColl);

        // create the callback object
        CallbackGeomListener callbkListener =
                new CallbackGeomListener();
        foreach (COMApi.InwOaPath3 path in oSel.Paths())
        {
            foreach (COMApi.InwOaFragment3 frag in path.Fragments())
            {
                // generate the primitives
                frag.GenerateSimplePrimitives(
                    COMApi.nwEVertexProperty.eNORMAL, 
                                   callbkListener);
            }
        }

        return 0;
    }
}
  #endregion
'

Проблема в том, что я не могу найти грани, я получаю вершины, используя метод треугольника. Пожалуйста, дайте мне знать, если кто-нибудь знает, как найти лица и цвет объекта.

0 ответов

Другие вопросы по тегам