Shridhar Patil
Shridhar Patil

Reputation: 33

Navisworks COM API for Exporting geometry and calculating faces and vertices

I am trying to export the vertices, faces and colors of a selected object in the Navis. After a bit of research I found that we can do it using the COM API provided by the Navisworks. I used getprimitives to find the triangles. which looks is something as below.

'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
'

The problem here is I am not able to find faces, I do get vertices by using triangle method. Please let me know if anyone knows how to find faces and color of the object.

Upvotes: 3

Views: 3347

Answers (0)

Related Questions