Пример #1
0
        // /////////////////////////////////////////////////////////////////////////////////////////////////////
        // Developing `

        private Inventor.UnitVector GetFaceNormalAtPoint(ref Inventor.Face ViewFace, Inventor.Point point)
        {
            Inventor.TransientGeometry TransientGeometry = mInvApplication.TransientGeometry;
            double[] Pnt = new double[0];
            double[] n   = new double[3];
            Pnt[0] = point.X; Pnt[1] = point.X; Pnt[2] = point.X;
            ViewFace.Evaluator.GetNormalAtPoint(ref Pnt, ref n);
            return(TransientGeometry.CreateUnitVector(n[0], n[1], n[2]));
        }
Пример #2
0
        private static void Test(ref Inventor.Application _InvApplication, ref Inventor.AssemblyDocument assemblyDocument, string ClientGraphicsName)
        {
            Inventor.AssemblyComponentDefinition ComponentDefinition = assemblyDocument.ComponentDefinition;

            // add ClientGraphics
            Inventor.ClientGraphics ClientGraphics = null;

            ClientGraphics = DeleteNamedGraphics(ref assemblyDocument, ClientGraphicsName);

            ClientGraphics = ComponentDefinition.ClientGraphicsCollection.Add(ClientGraphicsName);

            //add GraphicsDataSets
            Inventor.GraphicsDataSets GraphDataSets;
            try
            {
                GraphDataSets = assemblyDocument.GraphicsDataSetsCollection[ClientGraphicsName];
                if (GraphDataSets != null)
                {
                    GraphDataSets.Delete();
                }
            }
            catch
            { }

            GraphDataSets = assemblyDocument.GraphicsDataSetsCollection.Add(ClientGraphicsName);
            Inventor.GraphicsCoordinateSet oCoordSet = GraphDataSets.CreateCoordinateSet(1);

            // add GraphicsNode
            Inventor.GraphicsNode LineNode = ClientGraphics.AddNode(1);
            // add LineGraphics
            Inventor.LineGraphics LineSet = LineNode.AddLineGraphics();
            LineSet.CoordinateSet = oCoordSet;

            Inventor.TransientGeometry oTG = _InvApplication.TransientGeometry;

            oCoordSet.Add(1, oTG.CreatePoint(0, 0, 0));
            oCoordSet.Add(2, oTG.CreatePoint(20, 30, 0));

            oCoordSet.Add(3, oTG.CreatePoint(40, 20, 0));
            oCoordSet.Add(4, oTG.CreatePoint(60, 30, 100));

            // set LineDefinitionSpace as screen space
            LineSet.LineDefinitionSpace = Inventor.LineDefinitionSpaceEnum.kScreenSpace;
            // set Colour
            Inventor.GraphicsColorSet graphicsColorSet = LineSet.ColorSet;
            graphicsColorSet = GraphDataSets.CreateColorSet(1);
            LineSet.ColorSet = graphicsColorSet;
            LineSet.ColorSet.Add(1, 255, 1, 0);
            // set lineweight
            LineSet.LineWeight = 2;
            // set LineType
            LineSet.LineType = Inventor.LineTypeEnum.kChainLineType;
            // set LineScale
            LineSet.LineScale = 2;

            _InvApplication.ActiveView.Update();
        }
Пример #3
0
        private Inventor.Point GetEdgePointAtParam(Inventor.EdgeUse EdgeUse, double Pt)
        {
            Inventor.TransientGeometry TransientGeometry = mInvApplication.TransientGeometry;
            Inventor.CurveEvaluator    CurveEvaluator;
            double[] Param = new double[0];
            double[] Pnt   = new double[3];
            Param[0]       = Pt;
            CurveEvaluator = EdgeUse.Edge.Evaluator;
            CurveEvaluator.GetPointAtParam(ref Param, ref Pnt);

            return(TransientGeometry.CreatePoint(Pnt[0], Pnt[1], Pnt[2]));
        }
Пример #4
0
 private Inventor.UnitVector GetTangentAtParam(Inventor.EdgeUse EdgeUse, double Pt)
 {
     Inventor.TransientGeometry TransientGeometry = mInvApplication.TransientGeometry;
     Inventor.CurveEvaluator    CurveEvaluator;
     double[] Param = new double[0];
     double[] v     = new double[3];
     Param[0]       = Pt;
     CurveEvaluator = EdgeUse.Edge.Evaluator;
     CurveEvaluator.GetPointAtParam(ref Param, ref v);
     if (EdgeUse.IsOpposedToEdge)
     {
         return(TransientGeometry.CreateUnitVector(-v[0], -v[1], -v[2]));
     }
     else
     {
         return(TransientGeometry.CreateUnitVector(v[0], v[1], v[2]));
     }
 }
Пример #5
0
        private static void DrawBox(ref Inventor.Application _InvApplication, ref Inventor.ClientGraphics ClientGraphics, ref Inventor.GraphicsCoordinateSet oCoordSet, ref Inventor.GraphicsDataSets GraphDataSets, ref Inventor.Box box)
        {
            Inventor.GraphicsNode LineNode = ClientGraphics.AddNode(1);
            // ClientGraphics.Selectable = Inventor.GraphicsSelectabilityEnum.kAllGraphicsSelectable;
            // add LineGraphics
            Inventor.LineGraphics LineSet = LineNode.AddLineGraphics();
            LineSet.CoordinateSet = oCoordSet;

            Inventor.TransientGeometry oTG = _InvApplication.TransientGeometry;
            //Line 1 Start Point End Point
            oCoordSet.Add(1, oTG.CreatePoint(box.MinPoint.X, box.MinPoint.Y, box.MinPoint.Z));
            oCoordSet.Add(2, oTG.CreatePoint(box.MaxPoint.X, box.MinPoint.Y, box.MinPoint.Z));
            //Line 2 Start Point End Point
            oCoordSet.Add(3, oTG.CreatePoint(box.MaxPoint.X, box.MinPoint.Y, box.MinPoint.Z));
            oCoordSet.Add(4, oTG.CreatePoint(box.MaxPoint.X, box.MaxPoint.Y, box.MinPoint.Z));
            //Line 3 Start Point End Point
            oCoordSet.Add(5, oTG.CreatePoint(box.MaxPoint.X, box.MaxPoint.Y, box.MinPoint.Z));
            oCoordSet.Add(6, oTG.CreatePoint(box.MinPoint.X, box.MaxPoint.Y, box.MinPoint.Z));
            //Line 4 Start Point End Point
            oCoordSet.Add(7, oTG.CreatePoint(box.MinPoint.X, box.MaxPoint.Y, box.MinPoint.Z));
            oCoordSet.Add(8, oTG.CreatePoint(box.MinPoint.X, box.MinPoint.Y, box.MinPoint.Z));
            //Upper Line 1 Start Point End Point
            oCoordSet.Add(9, oTG.CreatePoint(box.MinPoint.X, box.MinPoint.Y, box.MaxPoint.Z));
            oCoordSet.Add(10, oTG.CreatePoint(box.MaxPoint.X, box.MinPoint.Y, box.MaxPoint.Z));
            //Upper Line 2 Start Point End Point
            oCoordSet.Add(11, oTG.CreatePoint(box.MaxPoint.X, box.MinPoint.Y, box.MaxPoint.Z));
            oCoordSet.Add(12, oTG.CreatePoint(box.MaxPoint.X, box.MaxPoint.Y, box.MaxPoint.Z));
            //Upper Line 3 Start Point End Point
            oCoordSet.Add(13, oTG.CreatePoint(box.MaxPoint.X, box.MaxPoint.Y, box.MaxPoint.Z));
            oCoordSet.Add(14, oTG.CreatePoint(box.MinPoint.X, box.MaxPoint.Y, box.MaxPoint.Z));
            //Upper Line 4 Start Point End Point
            oCoordSet.Add(15, oTG.CreatePoint(box.MinPoint.X, box.MaxPoint.Y, box.MaxPoint.Z));
            oCoordSet.Add(16, oTG.CreatePoint(box.MinPoint.X, box.MinPoint.Y, box.MaxPoint.Z));
            //Line Vert 1 Start Point End Point
            oCoordSet.Add(17, oTG.CreatePoint(box.MinPoint.X, box.MinPoint.Y, box.MinPoint.Z));
            oCoordSet.Add(18, oTG.CreatePoint(box.MinPoint.X, box.MinPoint.Y, box.MaxPoint.Z));
            //Line Vert 2 Start Point End Point
            oCoordSet.Add(19, oTG.CreatePoint(box.MaxPoint.X, box.MinPoint.Y, box.MinPoint.Z));
            oCoordSet.Add(20, oTG.CreatePoint(box.MaxPoint.X, box.MinPoint.Y, box.MaxPoint.Z));
            //Line Vert 3 Start Point End Point
            oCoordSet.Add(21, oTG.CreatePoint(box.MaxPoint.X, box.MaxPoint.Y, box.MinPoint.Z));
            oCoordSet.Add(22, oTG.CreatePoint(box.MaxPoint.X, box.MaxPoint.Y, box.MaxPoint.Z));
            //Line Vert 4 Start Point End Point
            oCoordSet.Add(23, oTG.CreatePoint(box.MinPoint.X, box.MaxPoint.Y, box.MinPoint.Z));
            oCoordSet.Add(24, oTG.CreatePoint(box.MinPoint.X, box.MaxPoint.Y, box.MaxPoint.Z));
            // set LineDefinitionSpace as screen space
            LineSet.LineDefinitionSpace = Inventor.LineDefinitionSpaceEnum.kScreenSpace;
            // set Colour
            Inventor.GraphicsColorSet graphicsColorSet = LineSet.ColorSet;
            graphicsColorSet = GraphDataSets.CreateColorSet(1);
            LineSet.ColorSet = graphicsColorSet;
            LineSet.ColorSet.Add(1, 255, 1, 0);
            // set lineweight
            LineSet.LineWeight = 2;
            // set LineType
            LineSet.LineType = Inventor.LineTypeEnum.kChainLineType;
            // set LineScale
            LineSet.LineScale = 2;

            _InvApplication.ActiveView.Update();
        }
Пример #6
0
        private static Inventor.Point2d GetDrawingCenterPoint(Inventor.Sheet CurrentSheet, Inventor.TransientGeometry TransientGeometry)
        {
            Inventor.Point2d Point2d = null;
            double           DrawingTitelBlockHeight = 5;

            if (CurrentSheet.Size == Inventor.DrawingSheetSizeEnum.kA4DrawingSheetSize)
            {
                DrawingTitelBlockHeight = 5;
            }
            else if (CurrentSheet.Size == Inventor.DrawingSheetSizeEnum.kA3DrawingSheetSize)
            {
                DrawingTitelBlockHeight = 5;
            }
            double[] ViewCenter = new double[2];

            double SheetWidth  = CurrentSheet.Width;
            double SheetHeight = CurrentSheet.Height;

            ViewCenter[0] = SheetWidth / 2;
            ViewCenter[1] = (SheetHeight + DrawingTitelBlockHeight) / 2;

            Point2d = TransientGeometry.CreatePoint2d(ViewCenter[0], ViewCenter[1]);
            return(Point2d);
        }
Пример #7
0
        private void DrawDocument(Inventor._Document Document, string TypeOfPart)
        {
            Inventor.ViewOrientationTypeEnum Orientation = Inventor.ViewOrientationTypeEnum.kDefaultViewOrientation;
            Inventor.DrawingDocument         DrawingDocument;
            Inventor.Sheet Sheet;

            Inventor.DrawingView       DrawingView;
            Inventor.TransientGeometry oTG = mInvApplication.TransientGeometry;
            CreateDrawingDocument(out DrawingDocument, out Sheet);
            //Inventor.DrawingStandardStyle DrawingStandardStyle;
            //DrawingStandardStyle = DrawingDocument.StylesManager.ActiveStandardStyle;
            if (TypeOfPart == "SheetMetal")
            {
                Inventor.NameValueMap BaseViewOptions = (Inventor.NameValueMap)mInvApplication.TransientObjects.CreateNameValueMap();
                BaseViewOptions.Add("SheetMetalFoldedModel", false);
                DrawingView = AddDocumentBaseView(Document, Sheet, oTG, BaseViewOptions);
            }
            else if (TypeOfPart == "Plate")
            {
                CDrawingView    CView  = new CDrawingView();
                Inventor.Camera Camera = null;
                Camera      = CView.GetDocument(ref Document, ref mInvApplication);
                DrawingView = AddDocumentBaseView(Document, Sheet, oTG, Camera);
            }
            else
            {
                ViewOrientation(ref Orientation);
                DrawingView = AddDocumentBaseView(Document, Sheet, oTG, Orientation);
            }


            try
            {
                Inventor.DrawingCurve SelectedCurve = null;

                foreach (Inventor.DrawingCurve CurveLine in DrawingView.get_DrawingCurves(null))
                {
                    //Skip Circles
                    if (CurveLine.StartPoint != null && CurveLine.EndPoint != null)
                    {
                        if (WithinTol(CurveLine.StartPoint.Y, CurveLine.EndPoint.Y, 0.001))
                        {
                            if (SelectedCurve == null)
                            {
                                //This is the first horizontal curve found.
                                SelectedCurve = CurveLine;
                            }
                            else
                            {
                                //Check to see if this curve is higher (smaller x value) than the current selected
                                if (CurveLine.MidPoint.Y < SelectedCurve.MidPoint.X)
                                {
                                    SelectedCurve = CurveLine;
                                }
                            }
                        }
                    }
                }
                //Create geometry intents point for the curve.
                Inventor.GeometryIntent oGeomIntent1 = Sheet.CreateGeometryIntent(SelectedCurve, Inventor.PointIntentEnum.kStartPointIntent);
                Inventor.GeometryIntent oGeomIntent2 = Sheet.CreateGeometryIntent(SelectedCurve, Inventor.PointIntentEnum.kEndPointIntent);
                Inventor.Point2d        oDimPos      = oTG.CreatePoint2d(SelectedCurve.MidPoint.X - 2, SelectedCurve.MidPoint.Y);

                Inventor.GeneralDimensions      oGeneralDimensions = Sheet.DrawingDimensions.GeneralDimensions;
                Inventor.LinearGeneralDimension oLinearDim;
                oLinearDim = oGeneralDimensions.AddLinear(oDimPos, oGeomIntent1, oGeomIntent2, Inventor.DimensionTypeEnum.kAlignedDimensionType, true);
            }
            catch (Exception)
            {
            }
            mInvApplication.SilentOperation = true;
            string partURL       = Document.FullFileName;
            int    NameLength    = Document.FullFileName.Length;
            string partURLTrimed = partURL.Remove(NameLength - 4);

            //DrawingDocument.Save();
            DrawingDocument.SaveAs(partURLTrimed + ".idw", false);
            DrawingDocument.Close(true);
            Document.Close(false);
            mInvApplication.SilentOperation = false;


            //Sheet.RevisionTables.Add(oTG.CreatePoint2d(Sheet.Width, Sheet.Height));  //1mm div 10//1 row = 4
            //Inventor.DimensionStyle dimstyle = DrawingDocument.StylesManager.DimensionStyles[cmbDimStyles.Text];
            //Inventor.Layer layer = DrawingDocument.StylesManager.Layers[cmbLayers.Text];
        }
Пример #8
0
        private static Inventor.DrawingView AddDocumentBaseView(Inventor._Document Document, Inventor.Sheet Sheet, Inventor.TransientGeometry TransientGeometry, Inventor.NameValueMap BaseViewOptions)
        {
            double ViewWidth = 17;

            Inventor.DrawingView DrawingView = Sheet.DrawingViews.AddBaseView(Document as Inventor._Document, GetDrawingCenterPoint(Sheet, TransientGeometry), 0.2, Inventor.ViewOrientationTypeEnum.kDefaultViewOrientation, Inventor.DrawingViewStyleEnum.kHiddenLineRemovedDrawingViewStyle, "", null, BaseViewOptions);

            DrawingView.Scale = ViewWidth / DrawingView.Width * DrawingView.Scale;

            return(DrawingView);
        }
Пример #9
0
        private static Inventor.DrawingView AddDocumentBaseView(Inventor._Document Document, Inventor.Sheet Sheet, Inventor.TransientGeometry TransientGeometry, Inventor.Camera Camera)
        {
            double ViewWidth = 17;

            Inventor.DrawingView DrawingView = Sheet.DrawingViews.AddBaseView(Document as Inventor._Document, GetDrawingCenterPoint(Sheet, TransientGeometry), 0.2, Inventor.ViewOrientationTypeEnum.kArbitraryViewOrientation, Inventor.DrawingViewStyleEnum.kHiddenLineRemovedDrawingViewStyle, "", Camera, null);

            DrawingView.Scale = ViewWidth / DrawingView.Width * DrawingView.Scale;

            SetViewScale(Sheet, ref DrawingView);

            return(DrawingView);
        }