Show last Viewpoint in Autodesk Navisworks

2lenin-off
Enthusiast

Show last Viewpoint in Autodesk Navisworks

2lenin-off
Enthusiast
Enthusiast

Using this code snippet I create a viewpoint for the current view:

internal static Document doc = Autodesk.Navisworks.Api.Application.ActiveDocument;

        internal static void CreateViewpoint()
        {
            Viewpoint curentVievpoint = doc.CurrentViewpoint.Value;
            SavedViewpoint newViewpoint = new SavedViewpoint(curentVievpoint);
            newViewpoint.DisplayName = "_View";
            doc.SavedViewpoints.AddCopy(newViewpoint);
        }

Afterwards I change the viewpoint (adding redlineText):

        internal static void CreateTextComment()
        {
            var viewpoints = doc.SavedViewpoints;
            int newIndex = viewpoints.Value.Count - 1;
            var viewpointCopy = viewpoints.Value[newIndex].CreateCopy() as SavedViewpoint;

            var redlineText = new LcOpRedlineText(textComment, ScreenToCameraSpace(point2D));
            redlineText.SetLineThickness(5);
            redlineText.SetLineColor(Color.White);

            viewpointCopy.Redlines.Add(redlineText);
            viewpoints.ReplaceWithCopy(newIndex, viewpointCopy);
        }

        internal static Point2D ScreenToCameraSpace(Point2D pointScreenSpace)
        {
            LcOaViewer viewer = doc.ActiveView.Viewer;
            var pointWindowSpace = LcOpRedline.ScreenToWindowSpace(viewer, pointScreenSpace);
            var pointCameraSpace = LcOpRedline.WindowToCameraSpace(viewer, pointWindowSpace);
            return pointCameraSpace;
        }

How, after adding CreateTextComment(), can I immediately display the last created view with redlineText?

0 Likes
Reply
Accepted solutions (1)
456 Views
2 Replies
Replies (2)

naveen.kumar.t
Autodesk Support
Autodesk Support
Accepted solution

Hi @2lenin-off ,

 

Please try using the below code

 

Document doc = Autodesk.Navisworks.Api.Application.ActiveDocument;

            //Create Viewpoint
            Viewpoint curentVievpoint = doc.CurrentViewpoint.Value;
            SavedViewpoint newViewpoint = new SavedViewpoint(curentVievpoint);
            newViewpoint.DisplayName = "_View";
            doc.SavedViewpoints.AddCopy(newViewpoint);

            var viewpoints = doc.SavedViewpoints;
            int newIndex = viewpoints.Value.Count - 1;
            SavedViewpoint viewpointCopy = viewpoints.Value[newIndex].CreateCopy() as SavedViewpoint;

            Point2D point2D = new Point2D(10, 10);
            var redlineText = new LcOpRedlineText("Navisworks Sample Text", ScreenToCameraSpace(doc,point2D));
            redlineText.SetLineThickness(5);
            redlineText.SetLineColor(Color.White);

            viewpointCopy.Redlines.Add(redlineText);
            viewpoints.ReplaceWithCopy(newIndex, viewpointCopy);

            //Show Viewpoint
            SavedItem item = doc.SavedViewpoints.Value[newIndex];
            SavedViewpoint savedViewpoint = item as SavedViewpoint;
            Viewpoint vp = savedViewpoint.Viewpoint;
            doc.SavedViewpoints.CurrentSavedViewpoint =item;
           
            return 0;

Naveen Kumar T
Developer Technical Services
Autodesk Developer Network

2lenin-off
Enthusiast
Enthusiast
Thank you very much!
0 Likes