//////////////////////////////////////////////////////////////////////////////////////////////
        // Description: Displays a TextGraphics with different styles and properties.
        //
        //////////////////////////////////////////////////////////////////////////////////////////////
        static public void TextGraphicsDemo()
        {
            PartDocument doc =
                AdnInventorUtilities.InvApplication.ActiveDocument
                as PartDocument;

            string clientId = "{Add-in Guid}";

            ClientGraphics   graphics = null;
            GraphicsDataSets dataSets = null;

            try
            {
                graphics = doc.ComponentDefinition.ClientGraphicsCollection[clientId];
                dataSets = doc.GraphicsDataSetsCollection[clientId];
            }
            catch
            {
                graphics = doc.ComponentDefinition.ClientGraphicsCollection.Add(clientId);
                dataSets = doc.GraphicsDataSetsCollection.Add(clientId);
            }

            TransientGeometry Tg = AdnInventorUtilities.InvApplication.TransientGeometry;

            GraphicsNode node = graphics.AddNode(graphics.Count + 1);

            //Create scalable text graphics
            TextGraphics scalableTxt = node.AddScalableTextGraphics();

            //Set the properties of the text
            scalableTxt.Text                = "Scalable Text";
            scalableTxt.Anchor              = Tg.CreatePoint(0, 20, 0);
            scalableTxt.Bold                = true;
            scalableTxt.Font                = "Arial";
            scalableTxt.FontSize            = 10;
            scalableTxt.HorizontalAlignment = HorizontalTextAlignmentEnum.kAlignTextLeft;
            scalableTxt.Italic              = true;
            scalableTxt.PutTextColor(119, 187, 17);
            scalableTxt.VerticalAlignment = VerticalTextAlignmentEnum.kAlignTextMiddle;


            //Create anchored text graphics
            TextGraphics anchoredTxt = node.AddTextGraphics();

            //Set the properties of the text.
            anchoredTxt.Text     = "Anchored Text";
            anchoredTxt.Bold     = true;
            anchoredTxt.FontSize = 30;
            anchoredTxt.PutTextColor(255, 170, 0);

            Point anchorPoint = Tg.CreatePoint(1, 1, 1);

            //Set the text's anchor in model space.
            anchoredTxt.Anchor = anchorPoint;

            //Anchor the text graphics in the view.
            anchoredTxt.SetViewSpaceAnchor(
                anchorPoint,
                Tg.CreatePoint2d(30, 30),
                ViewLayoutEnum.kTopLeftViewCorner);


            TextGraphics symbolTxt1 = node.AddTextGraphics();

            symbolTxt1.Text = "n ";

            Point modelAnchorPoint = Tg.CreatePoint(50, 0, 0);

            //Because this text will have pixel scaling behavior these coordinates are in pixel space.
            symbolTxt1.Anchor              = Tg.CreatePoint(0, 0, 0);
            symbolTxt1.Font                = "AIGDT";
            symbolTxt1.FontSize            = 25;
            symbolTxt1.HorizontalAlignment = HorizontalTextAlignmentEnum.kAlignTextLeft;
            symbolTxt1.PutTextColor(221, 0, 0);
            symbolTxt1.VerticalAlignment = VerticalTextAlignmentEnum.kAlignTextMiddle;
            symbolTxt1.SetTransformBehavior(
                modelAnchorPoint,
                DisplayTransformBehaviorEnum.kFrontFacingAndPixelScaling,
                1);

            Box box = symbolTxt1.RangeBox;

            //Draw the next section of the string relative to the first section.
            TextGraphics symbolTxt2 = node.AddTextGraphics();

            symbolTxt2.Text = "9.4 - 9.8";

            //The range of the previous character is used to determine where to position
            //the next string. The range is returned in pixels.
            symbolTxt2.Anchor = Tg.CreatePoint(box.MaxPoint.X, 0, 0);

            symbolTxt2.Font                = "Arial";
            symbolTxt2.FontSize            = 25;
            symbolTxt2.HorizontalAlignment = HorizontalTextAlignmentEnum.kAlignTextLeft;
            symbolTxt2.PutTextColor(221, 0, 0);
            symbolTxt2.VerticalAlignment = VerticalTextAlignmentEnum.kAlignTextMiddle;
            symbolTxt2.SetTransformBehavior(
                modelAnchorPoint,
                DisplayTransformBehaviorEnum.kFrontFacingAndPixelScaling,
                1);

            doc.Views[1].Update();
        }
示例#2
0
        //////////////////////////////////////////////////////////////////////////////////////////////
        // Draws dimension graphics
        //
        //////////////////////////////////////////////////////////////////////////////////////////////
        DimData DrawDimension(Point point1, Point point2, Point dimText, Vector normal)
        {
            // Compute extension points
            Vector xAxis = point1.VectorTo(point2);

            Vector upVector = normal.CrossProduct(xAxis);

            upVector.Normalize();

            Plane plane = _Tg.CreatePlane(point1, normal);

            Point dimTextProj = AdnInventorUtilities.ProjectOnPlane(dimText, plane);

            double dotP1 = point1.VectorTo(dimTextProj).DotProduct(upVector);
            double dotP2 = point2.VectorTo(dimTextProj).DotProduct(upVector);

            Point extP1 = _Tg.CreatePoint(
                point1.X + upVector.X * dotP1,
                point1.Y + upVector.Y * dotP1,
                point1.Z + upVector.Z * dotP1);

            Point extP2 = _Tg.CreatePoint(
                point2.X + upVector.X * dotP2,
                point2.Y + upVector.Y * dotP2,
                point2.Z + upVector.Z * dotP2);

            double dimValue = extP1.DistanceTo(extP2);


            GraphicsNode node = _clientGraphicsMng.CreateNewGraphicsNode();

            LineGraphics extLine1 = _clientGraphicsMng.DrawLine(
                AdnInventorUtilities.ToArray(point1),
                AdnInventorUtilities.ToArray(extP1),
                node);

            LineGraphics extLine2 = _clientGraphicsMng.DrawLine(
                AdnInventorUtilities.ToArray(point2),
                AdnInventorUtilities.ToArray(extP2),
                node);

            LineGraphics dimLine = _clientGraphicsMng.DrawLine(
                AdnInventorUtilities.ToArray(extP1),
                AdnInventorUtilities.ToArray(extP2),
                node);

            extLine1.LineType = LineTypeEnum.kDashedLineType;
            extLine2.LineType = LineTypeEnum.kDashedLineType;

            UnitVector v = extP1.VectorTo(extP2).AsUnitVector();

            double length = 20.0;
            double radius = 7.0;

            Point bottom1 = _Tg.CreatePoint(
                extP1.X + length * v.X,
                extP1.Y + length * v.Y,
                extP1.Z + length * v.Z);

            Point bottom2 = _Tg.CreatePoint(
                extP2.X - length * v.X,
                extP2.Y - length * v.Y,
                extP2.Z - length * v.Z);

            SurfaceBody cone1 = _TBrep.CreateSolidCylinderCone(
                bottom1, extP1,
                radius, radius, 0.0, null);

            SurfaceBody cone2 = _TBrep.CreateSolidCylinderCone(
                bottom2, extP2,
                radius, radius, 0.0, null);

            GraphicsNode dimNode = _clientGraphicsMng.CreateNewGraphicsNode();

            SurfaceGraphics arrow1 = _clientGraphicsMng.DrawSurface(cone1, dimNode);
            SurfaceGraphics arrow2 = _clientGraphicsMng.DrawSurface(cone2, dimNode);

            arrow1.SetTransformBehavior(extP1,
                                        DisplayTransformBehaviorEnum.kPixelScaling,
                                        1.0);

            arrow2.SetTransformBehavior(extP2,
                                        DisplayTransformBehaviorEnum.kPixelScaling,
                                        1.0);


            TextGraphics text = _clientGraphicsMng.DrawText(
                AdnInventorUtilities.GetStringFromAPILength(dimValue),
                false,
                dimNode);

            text.Font     = "Arial";
            text.Bold     = false;
            text.Italic   = false;
            text.FontSize = 20;
            text.PutTextColor(221, 0, 0);
            text.VerticalAlignment   = VerticalTextAlignmentEnum.kAlignTextMiddle;
            text.HorizontalAlignment = HorizontalTextAlignmentEnum.kAlignTextLeft;

            Point txtPos = _Tg.CreatePoint(
                (extP1.X + extP2.X) * 0.5,
                (extP1.Y + extP2.Y) * 0.5,
                (extP1.Z + extP2.Z) * 0.5);

            text.Anchor = txtPos;

            text.SetTransformBehavior(txtPos,
                                      DisplayTransformBehaviorEnum.kFrontFacingAndPixelScaling,
                                      1.0);

            node.Selectable    = true;
            dimNode.Selectable = true;

            return(new DimData(point1, point2, extLine1, extLine2, dimLine, dimNode));
        }