VS C# - The object default preview disappear after implementing "DrawViewportMeshes"

Hi all,

I am trying to wrap-up a component In Visual Studio - C# but when I implement “public override void DrawViewportMeshes(IGH_PreviewArgs args)” to preview the plane vectors the default shade for Srfs disappear.

public override void DrawViewportMeshes(IGH_PreviewArgs args)
{

        args.Display.DrawDirectionArrow(_OriginDirDisplayA, _zDirDisplayA, Color.Blue);
        args.Display.DrawDirectionArrow(_OriginDirDisplayA, _xDirDisplayA, Color.Red);
        args.Display.DrawDirectionArrow(_OriginDirDisplayA, _yDirDisplayA, Color.Green);

        for (int i = 0; i < _xDirDisplayB.Count; i++)
        {

            args.Display.DrawDirectionArrow(_OriginDirDisplayB[i], _zDirDisplayB[i], Color.Blue);
            args.Display.DrawDirectionArrow(_OriginDirDisplayB[i], _xDirDisplayB[i], Color.Red);
            args.Display.DrawDirectionArrow(_OriginDirDisplayB[i], _yDirDisplayB[i], Color.Green);

        }
       
    }

Also I try to implement this code to get something similar to the default preview but only works for the C# component in GH not in VS, but the result is not as good as the default shade, it hides the vectors when look form below:

public override void DrawViewportWires(IGH_PreviewArgs args)
{

       for (int i = 0; i < _srfXXXs.Count; i++)
        {
            args.Display.DrawBrepShaded(_srfXXXs[i], _material);
            args.Display.DrawBrepWires(_srfXXXs[i], Color.Red);
        }

    }

Any suggestion how to get the default shading in VS?

Best

Iker

base.DrawViewportMeshes

1 Like

Thanks Keyu,

where should I implement this?

best

Iker

public override void DrawViewportMeshes(IGH_PreviewArgs args)
{

    base.DrawViewportMeshes(args) // <---- Here

        args.Display.DrawDirectionArrow(_OriginDirDisplayA, _zDirDisplayA, Color.Blue);
        args.Display.DrawDirectionArrow(_OriginDirDisplayA, _xDirDisplayA, Color.Red);
        args.Display.DrawDirectionArrow(_OriginDirDisplayA, _yDirDisplayA, Color.Green);

        for (int i = 0; i < _xDirDisplayB.Count; i++)
        {

            args.Display.DrawDirectionArrow(_OriginDirDisplayB[i], _zDirDisplayB[i], Color.Blue);
            args.Display.DrawDirectionArrow(_OriginDirDisplayB[i], _xDirDisplayB[i], Color.Red);
            args.Display.DrawDirectionArrow(_OriginDirDisplayB[i], _yDirDisplayB[i], Color.Green);

        }
       
    }
1 Like

Thank you Keyu!

Now all works !

also found an example of base.DrawViewportMeshes(args) in this old post:

Ones again Thanks!

Keyu I see you are base in Hangzhou, I am based in HK.

Just added you to Linkdin in case in the future there might business opportunities specially with talented people like you.

best

Iker