예제 #1
0
        public void DrawSingelPart()
        {
            Inventor._Document Document;
            if (mInvApplication.Documents.Count > 0)
            {
                if (mInvApplication.ActiveDocumentType == Inventor.DocumentTypeEnum.kPartDocumentObject)
                {
                    Inventor.PartDocument PartDocument = (Inventor._PartDocument)mInvApplication.ActiveDocument;

                    string TypeOfPart = "";
                    Document = (Inventor._Document)PartDocument;

                    // normal part
                    if (PartDocument.SubType != "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}")
                    {
                        TypeOfPart = "Plate";
                        DrawDocument(Document, TypeOfPart);
                    }
                    else // if sheet metal
                    {
                        TypeOfPart = "SheetMetal";
                        DrawDocument(Document, TypeOfPart);
                    }
                }
                else
                {
                    return;
                }
            }
        }
예제 #2
0
        public Inventor.Camera GetDocument(ref Inventor._Document Document, ref Inventor.Application invApplication)
        {
            Inventor.PartDocument PartDocument = null;
            Inventor.Camera       Camera       = null;
            mInvApplication = invApplication;
            if (Document.DocumentType == Inventor.DocumentTypeEnum.kPartDocumentObject)
            {
                PartDocument = (Inventor.PartDocument)Document;

                if (PartDocument != null)
                {
                    if (PartDocument.ComponentDefinitions.Count > 0)
                    {
                        Camera = mInvApplication.ActiveView.Camera;
                        Inventor.PartComponentDefinition PartComponentDefinition = PartDocument.ComponentDefinitions[1];

                        foreach (Inventor.SurfaceBody SurfaceBody in PartComponentDefinition.SurfaceBodies)
                        {
                            GetFaceToView(SurfaceBody, ref PartDocument, ref Camera);
                        }
                        return(Camera);
                    }
                }
            }
            return(Camera);
        }
예제 #3
0
 /// <summary>
 /// Suits Pipe  Converts Expression (e.g 21 mm, 21 )To Model World Units As Set By user,
 /// </summary>
 /// <param name="PartDocument">Inventor Part/Assembly Document Object As Referance</param>
 /// <param name="UnitsType">As Inventor UnitsTypeEnum</param>
 /// <param name="szDiaOD">Outside Diameter, Expression As String</param>
 /// <param name="szLength">The Inside Diameter, Expression As String</param>
 /// <param name="szThickness">Thickness Of The Object, Expression As String</param>
 /// <param name="DiaOD">Outside Diameter, Model World Value Out As double</param>
 /// <param name="Length">The Inside Diameter, Model World Value Out As double</param>
 /// <param name="Thickness">Thickness Of The Object, Model World Value Out As double</param>
 /// <returns>returns true if input validated, returns false if one Expression Fails Sets all out Vals to 0.</returns>
 public static bool ConvertPipeDiamensionsToModelWorldUnits(
     ref Inventor.PartDocument PartDocument,
     Inventor.UnitsTypeEnum UnitsType,
     string szDiaOD,
     string szThickness,
     string szLength,
     out double DiaOD,
     out double Thickness,
     out double Length)
 {
     DiaOD = 0; Length = 0; Thickness = 0;
     Inventor.UnitsOfMeasure UnitsOfMeasure = PartDocument.UnitsOfMeasure;
     UnitsOfMeasure.LengthUnits = UnitsType;
     if (UnitsOfMeasure.IsExpressionValid(szDiaOD, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits) &&
         UnitsOfMeasure.IsExpressionValid(szLength, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits) &&
         UnitsOfMeasure.IsExpressionValid(szThickness, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits))
     {
         DiaOD     = UnitsOfMeasure.GetValueFromExpression(szDiaOD, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits);
         Length    = UnitsOfMeasure.GetValueFromExpression(szLength, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits);
         Thickness = UnitsOfMeasure.GetValueFromExpression(szThickness, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits);
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #4
0
        // /////////////////////////////////////////////////////////////////////////////////////////////////////
        // Developing
        private void SetDocumentWorkPlanes(ref Inventor.ComponentOccurrence Occurrence, bool VisableState)
        {
            Inventor.Document Document = Occurrence.Definition.Document;

            if (Occurrence.DefinitionDocumentType == Inventor.DocumentTypeEnum.kPartDocumentObject)
            {
                Inventor.PartDocument PartDocument = (Inventor.PartDocument)Document;
                foreach (Inventor.WorkPlane WP in PartDocument.ComponentDefinition.WorkPlanes)
                {
                    if (WP.Visible != VisableState)
                    {
                        WP.Visible = VisableState;
                    }
                }
            }
            else if (Occurrence.DefinitionDocumentType == Inventor.DocumentTypeEnum.kAssemblyDocumentObject)
            {
                Inventor.AssemblyDocument AssemblyDocument = (Inventor.AssemblyDocument)Document;
                foreach (Inventor.WorkPlane WP in AssemblyDocument.ComponentDefinition.WorkPlanes)
                {
                    if (WP.Visible != VisableState)
                    {
                        WP.Visible = VisableState;
                    }
                }
            }
        }
예제 #5
0
 /// <summary>
 /// Suits Flat Faced Flanges String Expression (e.g 21 mm, 21 ) To Model World Units As Document Default Units 14 Params,
 /// </summary>
 /// <param name="PartDocument">Inventor Part/Assembly Document Object As Referance</param>
 /// <param name="szDiaOD">Outside Diameter, Expression As String</param>
 /// <param name="szDiaID">Inside Diameter, Expression As String</param>
 /// <param name="szThickness">Thickness Of The Object, Expression As String</param>
 /// <param name="szPCD">Placed Center Diameter, Expression As String</param>
 /// <param name="szBoltHoleDia">Bolt Hole Diameter,  Expression As String</param>
 /// <param name="szDia">Bolt Hole Diameter, Expression As String</param>
 /// <param name="szNumber">Number Of Bolt Holes In PCD, Expression As String</param>
 /// <param name="DiaOD">Outside Diameter, Model World Value, Out As double</param>
 /// <param name="DiaID">The Inside Diameter, Model World Value, Out As double</param>
 /// <param name="Thickness">Thickness Of The Object, Model World Value, Out As double</param>
 /// <param name="PCD">Placed Center Diameter, Model World Value, Out As double</param>
 /// <param name="Dia">Bolt Hole Diameter, Model World Value, Out As double</param>
 /// <param name="Number">Number Of Bolt Holes In PCD, Model World Value, Out As double</param>
 /// <returns>returns true if input validated, returns false if one Expression Fails Sets all out Vals to 0.</returns>
 public static bool ConvertFlatFacedFlangeDimsToModelWorldUnits(
     ref Inventor.PartDocument PartDocument,
     string szDiaOD,
     string szDiaID,
     string szThickness,
     string szPCD,
     string szBoltHoleDia,
     string szNumber,
     out double DiaOD,
     out double DiaID,
     out double Thickness,
     out double PCD,
     out double Dia,
     out double Number)
 {
     DiaOD = 0; DiaID = 0; Thickness = 0; PCD = 0; Dia = 0; Number = 0;
     Inventor.UnitsOfMeasure UnitsOfMeasure = PartDocument.UnitsOfMeasure;
     if (UnitsOfMeasure.IsExpressionValid(szDiaOD, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits) &&
         UnitsOfMeasure.IsExpressionValid(szDiaID, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits) &&
         UnitsOfMeasure.IsExpressionValid(szThickness, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits) &&
         UnitsOfMeasure.IsExpressionValid(szPCD, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits) &&
         UnitsOfMeasure.IsExpressionValid(szBoltHoleDia, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits) &&
         UnitsOfMeasure.IsExpressionValid(szNumber, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits))
     {
         ConvertBaseObjectDims(ref PartDocument, szDiaOD, szDiaID, szPCD, szThickness, szNumber,
                               out DiaOD, out DiaID, out PCD, out Thickness, out Number);
         Dia    = UnitsOfMeasure.GetValueFromExpression(szBoltHoleDia, Inventor.UnitsTypeEnum.kMillimeterLengthUnits);
         Number = UnitsOfMeasure.GetValueFromExpression(szNumber, Inventor.UnitsTypeEnum.kUnitlessUnits);
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #6
0
 public CFlange(ref Inventor.Application InvApplication, ref Inventor.PartDocument invPartDocument, ref Inventor.UnitsTypeEnum UnitsType, string szworkplanename, string szDiaOD, string szDiaID, string szThickness, string szPCD, string szBoltHoleDia, string szNumberBoltHoles)
 {
     szWorkPlaneName = szworkplanename;
     InvApp          = InvApplication;
     PartDocument    = invPartDocument;
     CToModelValue.ConvertFlatFacedFlangeDimsToModelWorldUnits(ref PartDocument, ref UnitsType, szDiaOD, szDiaID, szThickness, szPCD, szBoltHoleDia, szNumberBoltHoles, out FlangeDiaOD, out FlangeDiaID, out FlangeThickness, out FlangePlacedCenterDiameter, out FlangeBoltHoleDia, out FlangeNumberBoltHoles);
 }
예제 #7
0
        private void SetCustomPropertys(ref Inventor.PartDocument PartDocument, string PropertyName, string PropertySetName)
        {
            Inventor.PropertySet m_Propertyset = PartDocument.PropertySets["{32853F0F-3444-11D1-9E93-0060B03C1CA6}"];
            Inventor.Property    m_Property    = m_Propertyset[Inventor.PropertiesForDesignTrackingPropertiesEnum.kDescriptionDesignTrackingProperties];
            m_Property.Expression = "=<Length>";
            //Inventor.PropertiesForDesignTrackingPropertiesEnum.kDescriptionDesignTrackingProperties



            foreach (Inventor.PropertySet Propertyset in PartDocument.PropertySets)
            {
                if (Propertyset.Name == PropertySetName) //"Inventor User Defined Properties"
                {
                    if (Propertyset.Count != 0)
                    {
                        foreach (Inventor.Property mProperty in Propertyset)
                        {
                            if (mProperty.Name == PropertyName)
                            {
                                //MessageBox.Show("");
                            }
                            else
                            {
                                //ADD
                            }
                        }
                    }
                }
            }
        } //Single Call
예제 #8
0
        private void btnTest_Click(object sender, EventArgs e)
        {
            Inventor.PartDocument  PDoc  = (Inventor.PartDocument)InvApp.ActiveDocument;
            Inventor.UnitsTypeEnum units = Inventor.UnitsTypeEnum.kMillimeterLengthUnits;
            CFlange flange = new CFlange(ref InvApp, ref PDoc, ref units, "XY", "300", "150", "30", "200", "18", "8");

            flange.Extrude_FlangeBody();
        }
예제 #9
0
        private void GetFaceToSetView(Inventor.SurfaceBody mSurfaceBody, Inventor.PartDocument PartDocument)
        {
            Inventor.Face WorkFace = null;

            System.Collections.ArrayList Areas     = new ArrayList();
            Dictionary <double, object>  AreaValue = new Dictionary <double, object>();
            double Max          = mSurfaceBody.Faces[1].Evaluator.Area * 100;
            double currentValue = 0;

            WorkFace = mSurfaceBody.Faces[1];

            Inventor.UnitVector zVector    = mInvApplication.TransientGeometry.CreateUnitVector(0, 0, 1);
            ArrayList           SortArray  = new ArrayList();
            ArrayList           SortArray2 = new ArrayList();

            Inventor.Plane Plane;

            for (int i = 1; i < mSurfaceBody.Faces.Count + 1; i++)
            {
                currentValue = mSurfaceBody.Faces[i].Evaluator.Area * 100;

                //SortArray.Add(currentValue);
                if (!mSurfaceBody.Faces[i].IsParamReversed)
                {
                    if (currentValue >= Max)
                    {
                        Inventor.Face       fc   = mSurfaceBody.Faces[i];
                        Inventor.UnitVector vect = PartDocument.ComponentDefinition.WorkPlanes["XY Plane"].Plane.Normal;
                        if (fc.Geometry is Inventor.Plane)
                        {
                            Plane = fc.Geometry;
                            Inventor.UnitVector pVect = GetMidPointAtFaceNormal(ref fc);
                            Max = mSurfaceBody.Faces[i].Evaluator.Area * 100;

                            if (pVect.IsParallelTo(vect, 0.00001))
                            {
                                if (Plane.Normal.DotProduct(vect) > 0)
                                {
                                    SortArray2.Add(currentValue);
                                    WorkFace = mSurfaceBody.Faces[i];
                                }
                            }
                        }
                    }
                }
            }

            if (WorkFace != null)
            {
                SetViewDirection(WorkFace);
            }
            else
            {
                return;
            }
        }
예제 #10
0
        private void GetBodyExtents(ref Inventor.PartDocument PartDocument)
        {
            Inventor.ComponentDefinition mComponentDefinition;
            Inventor.Box mRangeBox;
            double       Length;
            double       Width;
            double       Thickness;

            double[] SortArray = new double[3];

            mComponentDefinition = (Inventor.ComponentDefinition)PartDocument.ComponentDefinition;

            foreach (Inventor.SurfaceBody mSurfaceBody in mComponentDefinition.SurfaceBodies)
            {
                mRangeBox = mSurfaceBody.RangeBox;
                mRangeBox.Extend(mSurfaceBody.RangeBox.MinPoint);
                mRangeBox.Extend(mSurfaceBody.RangeBox.MaxPoint);
                GetFaceSize(mSurfaceBody);
                //works only if alained to ucs
                if (mRangeBox != null)
                {
                    Length       = mRangeBox.MaxPoint.X - mRangeBox.MinPoint.X;
                    SortArray[0] = Length;
                    Width        = mRangeBox.MaxPoint.Y - mRangeBox.MinPoint.Y;
                    SortArray[1] = Width;
                    Thickness    = mRangeBox.MaxPoint.Z - mRangeBox.MinPoint.Z;
                    SortArray[2] = Thickness;
                }
            }

            //            Sub GetExtents()
            //    Dim doc As Document
            //    Set doc = ThisApplication.ActiveDocument

            //    Dim cd As ComponentDefinition
            //    Set cd = doc.ComponentDefinition

            //    Dim ext As Box

            //    Dim sb As SurfaceBody
            //    For Each sb In cd.SurfaceBodies
            //        If ext Is Nothing Then
            //            Set ext = sb.RangeBox.Copy
            //        Else
            //            ext.Extend sb.RangeBox.MinPoint
            //            ext.Extend sb.RangeBox.MaxPoint
            //        End If
            //    Next

            //    MsgBox "Extensions are: " + vbCr + _
            //        "X " + CStr(ext.MaxPoint.x - ext.MinPoint.x) + vbCr + _
            //        "Y " + CStr(ext.MaxPoint.y - ext.MinPoint.y) + vbCr + _
            //        "Z " + CStr(ext.MaxPoint.Z - ext.MinPoint.Z)
            //End Sub
        }
예제 #11
0
 private void SavePartFile(ref Inventor.PartDocument PartDocument)
 {
     InvApp.SilentOperation = true;
     if (System.IO.File.Exists(szPartFileNameSavePath))
     {
         System.IO.File.Delete(szPartFileNameSavePath);
     }
     PartDocument.SaveAs(szPartFileNameSavePath, false);
     PartDocument.Close(true);
     InvApp.SilentOperation = false;
 }
예제 #12
0
        public void ModelMake(ref Inventor.Application InvInterface)
        {
            InvApp = InvInterface;
            Inventor.PartDocument PipeModelPartDocument = null;
            PipeModelPartDocument = (Inventor.PartDocument)InvApp.ActiveDocument;

            PipeModelPartDocument = CreatePipeExtrustion(szDiaOD, szWallThickness);
            Changeview();
            AddiMateDefinitionsToPipe(ref PipeModelPartDocument, szDiaOD, "E", "0");
            SavePartFile(ref PipeModelPartDocument);
        }
예제 #13
0
        private void Bolt_HolePatternFeature(ref Inventor.PartDocument PartDocument, ref Inventor.ExtrudeFeature ExtrudeFeature, Inventor.ObjectCollection ObjectCollection, string HoleDia, string HoleNumber)
        {
            Inventor.ObjectCollection HoleObjectCollection = null;
            Inventor.HoleFeature      HoleFeature;
            Inventor.SketchHolePlacementDefinition SketchHolePlacementDefinition;

            HoleObjectCollection          = InvApp.TransientObjects.CreateObjectCollection();
            SketchHolePlacementDefinition = PartDocument.ComponentDefinition.Features.HoleFeatures.CreateSketchPlacementDefinition(ObjectCollection);
            HoleFeature = PartDocument.ComponentDefinition.Features.HoleFeatures.AddDrilledByThroughAllExtent(SketchHolePlacementDefinition, FlangeBoltHoleDia, Inventor.PartFeatureExtentDirectionEnum.kPositiveExtentDirection);
            HoleObjectCollection.Add(HoleFeature);
            PartDocument.ComponentDefinition.Features.CircularPatternFeatures.Add(HoleObjectCollection, GetWorkAxis(ref PartDocument, "Z"), false, FlangeNumberBoltHoles, "360", true, Inventor.PatternComputeTypeEnum.kOptimizedCompute);
        }
예제 #14
0
        private Inventor.PartDocument AddSketchProjectCenterPoint(Inventor.PartDocument PartDocument, out Inventor.PlanarSketch Sketch, out Inventor.SketchEntity SketchEntity)
        {
            Inventor.WorkPlane BaseWorkPlane;
            Inventor.WorkPoint WorkPoint;

            WorkPoint     = PartDocument.ComponentDefinition.WorkPoints[1];
            BaseWorkPlane = GetWorkPlane(ref PartDocument);

            Sketch       = PartDocument.ComponentDefinition.Sketches.Add(BaseWorkPlane, false);
            SketchEntity = Sketch.AddByProjectingEntity(WorkPoint);
            return(PartDocument);
        }
예제 #15
0
        private Inventor.WorkPlane GetPartDocumentWorkPlane(ref Inventor.PartDocument PartDocument, string WorkPlaneAffix)
        {
            Inventor.WorkPlane DefaultWorkPlane = PartDocument.ComponentDefinition.WorkPlanes[3];

            foreach (Inventor.WorkPlane WorkPlane in PartDocument.ComponentDefinition.WorkPlanes)
            {
                if (WorkPlane.Name == WorkPlaneAffix + " Plane")
                {
                    return(WorkPlane);
                }
            }
            return(DefaultWorkPlane);
        }
예제 #16
0
        private Inventor.WorkAxis GetPartDocumentAxis(ref Inventor.PartDocument PartDocument, string WorkAxisAffix)
        {
            Inventor.WorkAxis DefaultWorkAxis = PartDocument.ComponentDefinition.WorkAxes[3];

            foreach (Inventor.WorkAxis WorkAxis in PartDocument.ComponentDefinition.WorkAxes)
            {
                if (WorkAxis.Name == WorkAxisAffix + " Axis")
                {
                    return(WorkAxis);
                }
            }
            return(DefaultWorkAxis);
        }
예제 #17
0
        private Inventor.ExtrudeFeature CreateFlangeExtrustion(ref Inventor.PartDocument PartDocument, string FlangeDiaOD, string FlangeDiaID, string FlangeThickness)
        {
            Inventor.UnitsOfMeasure      UnitsOfMeasure;
            Inventor.PlanarSketch        Sketch;
            Inventor.TransientGeometry   TransientGeometry;
            Inventor.SketchCircle        SketchCircle;
            Inventor.WorkPoint           WorkPoint;
            Inventor.WorkPlane           BaseWorkPlane;
            Inventor.RadiusDimConstraint RadiusDimConstraint = null;
            Inventor.SketchEntity        SketchEntity;
            Inventor.ObjectCollection    SketchObjectCollection;
            Inventor.Profile             Profile;
            Inventor.ExtrudeDefinition   ExtrudeDefinition;
            Inventor.ExtrudeFeature      ExtrudeFeature = null;

            SketchObjectCollection = InvApp.TransientObjects.CreateObjectCollection();

            UnitsOfMeasure = PartDocument.UnitsOfMeasure;
            double DiaOD = 0, DiaID = 0, Thickness = 0;

            DiaOD     = UnitsOfMeasure.GetValueFromExpression(FlangeDiaOD, Inventor.UnitsTypeEnum.kMillimeterLengthUnits);
            DiaID     = UnitsOfMeasure.GetValueFromExpression(FlangeDiaID, Inventor.UnitsTypeEnum.kMillimeterLengthUnits);
            Thickness = UnitsOfMeasure.GetValueFromExpression(FlangeThickness, Inventor.UnitsTypeEnum.kMillimeterLengthUnits);

            TransientGeometry = InvApp.TransientGeometry;
            WorkPoint         = PartDocument.ComponentDefinition.WorkPoints[1];
            BaseWorkPlane     = GetPartDocumentWorkPlane(ref PartDocument, "XY");

            Sketch              = PartDocument.ComponentDefinition.Sketches.Add(BaseWorkPlane, false);
            SketchEntity        = Sketch.AddByProjectingEntity(WorkPoint);
            SketchCircle        = Sketch.SketchCircles.AddByCenterRadius(TransientGeometry.CreatePoint2d(0, 0), DiaOD / 2);
            RadiusDimConstraint = Sketch.DimensionConstraints.AddRadius((Inventor.SketchEntity)SketchCircle, TransientGeometry.CreatePoint2d(0, 0), false);
            Sketch.GeometricConstraints.AddCoincident(SketchEntity, (Inventor.SketchEntity)SketchCircle.CenterSketchPoint);

            RadiusDimConstraint = null;
            SketchCircle        = null;
            SketchCircle        = Sketch.SketchCircles.AddByCenterRadius(TransientGeometry.CreatePoint2d(0, 0), DiaID / 2);
            RadiusDimConstraint = Sketch.DimensionConstraints.AddRadius((Inventor.SketchEntity)SketchCircle, TransientGeometry.CreatePoint2d(0, 0), false);
            Sketch.GeometricConstraints.AddCoincident(SketchEntity, (Inventor.SketchEntity)SketchCircle.CenterSketchPoint);
            SketchObjectCollection.Add(SketchCircle);

            Profile           = Sketch.Profiles.AddForSolid(true, SketchObjectCollection);
            ExtrudeDefinition = PartDocument.ComponentDefinition.Features.ExtrudeFeatures.CreateExtrudeDefinition(Profile, Inventor.PartFeatureOperationEnum.kNewBodyOperation);
            ExtrudeDefinition.SetDistanceExtent(Thickness, Inventor.PartFeatureExtentDirectionEnum.kPositiveExtentDirection);

            ExtrudeFeature      = PartDocument.ComponentDefinition.Features.ExtrudeFeatures.Add(ExtrudeDefinition);
            ExtrudeFeature.Name = "FlangeBase";

            return(ExtrudeFeature);
        }
예제 #18
0
 public void ModelMake(ref Inventor.Application InvInterface)
 {
     InvApp = InvInterface;
     Inventor.PartDocument     FlangePartDocument = null;
     Inventor.ExtrudeFeature   ExtrudeFeature     = null;
     Inventor.ObjectCollection ObjectCollection   = null;
     FlangePartDocument = (Inventor.PartDocument)InvApp.ActiveDocument;
     FlangePartDocument = CreateNewPartDocument();
     ExtrudeFeature     = CreateFlangeExtrustion(ref FlangePartDocument, szFlangeDiaOD, szFlangeDiaID, szThickness);
     Changeview();
     ObjectCollection = CreateHoleSketch(ref FlangePartDocument, ref ExtrudeFeature, "160", "30");
     CreateHoleFeatureFromSketch(ref FlangePartDocument, ref ExtrudeFeature, ObjectCollection, "18", "8");
     AddFlangeiMateDefinitions(ref FlangePartDocument, szFlangeDiaID, "E", "0");
     SavePartFile(ref FlangePartDocument);
 }
예제 #19
0
파일: SetReps.cs 프로젝트: waztdotnet/Api2
        private static void UnlockViews(Inventor.PartDocument partDocument)
        {
            Inventor.PartComponentDefinition partComponentDefinition = partDocument.ComponentDefinition;

            if (partComponentDefinition.RepresentationsManager.DesignViewRepresentations.Count >= 1)
            {
                foreach (Inventor.DesignViewRepresentation designViewRepresentation in partComponentDefinition.RepresentationsManager.DesignViewRepresentations)
                {
                    try
                    {
                        designViewRepresentation.Locked = false;
                    }
                    catch (Exception)
                    { }
                }
            }
        }
예제 #20
0
        //Single Call multi add
        private void SetUserParameters(ref Inventor.PartDocument PartDocument, NameValueCollection ParameterNameValues, Inventor.UnitsTypeEnum units)
        {
            Inventor.UserParameter m_UserParameter;

            Collection <string> ParameterNameCach = new Collection <string>();

            if (PartDocument.ComponentDefinition.Parameters.UserParameters.Count == 0)  //Add from Scratch userPars
            {
                foreach (string namedParameter in ParameterNameValues.Keys)
                {
                    m_UserParameter = PartDocument.ComponentDefinition.Parameters.UserParameters.AddByExpression(namedParameter, ParameterNameValues[namedParameter], units);
                    m_UserParameter.ExposedAsProperty = true;
                }
            }
            else
            {
                foreach (Inventor.UserParameter up in PartDocument.ComponentDefinition.Parameters.UserParameters)
                {
                    ParameterNameCach.Add(up.Name);
                }

                foreach (string namedParameter in ParameterNameValues.Keys)
                {
                    if (!ParameterNameCach.Contains(namedParameter))
                    {
                        m_UserParameter = PartDocument.ComponentDefinition.Parameters.UserParameters.AddByExpression(namedParameter, ParameterNameValues[namedParameter], units);
                        m_UserParameter.ExposedAsProperty = true;
                    }
                    else
                    {
                        Inventor.UserParameter _UserParameter;
                        _UserParameter            = PartDocument.ComponentDefinition.Parameters.UserParameters[namedParameter];
                        _UserParameter.Expression = ParameterNameValues.Get(namedParameter) + "mm";
                        _UserParameter.CustomPropertyFormat.ShowTrailingZeros = false;
                        _UserParameter.CustomPropertyFormat.ShowUnitsString   = false;
                        _UserParameter.CustomPropertyFormat.Precision         = Inventor.CustomPropertyPrecisionEnum.kOneDecimalPlacePrecision;
                        _UserParameter.ExposedAsProperty = true;
                    }
                }
            }
            Inventor.PropertySet m_Propertyset = PartDocument.PropertySets["{32853F0F-3444-11D1-9E93-0060B03C1CA6}"];
            Inventor.Property    m_Property    = m_Propertyset["Description"];
            m_Property.Expression = "=<Material> <Length>X<Width>X<Thickness>";
        }
예제 #21
0
        private void GetExtents(ref Inventor.PartDocument PartDocument)
        {
            Inventor.ComponentDefinition mComponentDefinition;
            Inventor.Box mBox;
            double       Length;
            double       Width;
            double       Thickness;

            double[] SortArray = new double[3];

            mComponentDefinition = (Inventor.ComponentDefinition)PartDocument.ComponentDefinition;

            foreach (Inventor.SurfaceBody mSurfaceBody in mComponentDefinition.SurfaceBodies)
            {
                mBox = mSurfaceBody.RangeBox;
                mBox.Extend(mSurfaceBody.RangeBox.MinPoint);
                mBox.Extend(mSurfaceBody.RangeBox.MaxPoint);

                if (mBox != null)
                {
                    Length       = mBox.MaxPoint.X - mBox.MinPoint.X;
                    SortArray[0] = Length;
                    Width        = mBox.MaxPoint.Y - mBox.MinPoint.Y;
                    SortArray[1] = Width;
                    Thickness    = mBox.MaxPoint.Z - mBox.MinPoint.Z;
                    SortArray[2] = Thickness;
                }

                Array.Sort(SortArray);
                Length    = SortArray[2];
                Width     = SortArray[1];
                Thickness = SortArray[0];
                Length    = Length * 10;
                Width     = Width * 10;
                Thickness = Thickness * 10;

                NameValueCollection ParameterNameValues = new NameValueCollection();
                ParameterNameValues.Add("Length", Length.ToString());
                ParameterNameValues.Add("Width", Width.ToString());
                ParameterNameValues.Add("Thickness", Thickness.ToString());
                SetUserParameters(ref PartDocument, ParameterNameValues, Inventor.UnitsTypeEnum.kMillimeterLengthUnits);
            }
        }
예제 #22
0
        private void GetFaceToView(Inventor.SurfaceBody mSurfaceBody, ref Inventor.PartDocument PartDocument, ref Inventor.Camera Camera)
        {
            double Max          = mSurfaceBody.Faces[1].Evaluator.Area * 100;
            double currentValue = 0;

            GetExtents(mSurfaceBody);

            Inventor.Face TargetFace = null;
            foreach (Inventor.Face Face in mSurfaceBody.Faces)
            {
                currentValue = Face.Evaluator.Area * 100;

                if (currentValue >= Max)
                {
                    Max        = Face.Evaluator.Area * 100;
                    TargetFace = Face;
                }
            }
            SetDrawingView(mSurfaceBody, ref Camera, TargetFace);
        }
예제 #23
0
        private void AddFlangeiMateDefinitions(ref Inventor.PartDocument PartDocument, string Dia, string MateNamePrefix, string Offset)
        {
            Inventor.ExtrudeFeature ExtrudeFeature;
            Inventor.UnitsOfMeasure UnitsOfMeasure;
            Inventor.Edge           Edge = null;
            Inventor.EdgeLoops      EdgeLoops;
            double FlangeHoleDiaOD = 0;
            int    Counter         = 0;

            ExtrudeFeature  = PartDocument.ComponentDefinition.Features.ExtrudeFeatures[1];
            UnitsOfMeasure  = PartDocument.UnitsOfMeasure;
            FlangeHoleDiaOD = UnitsOfMeasure.GetValueFromExpression(Dia, Inventor.UnitsTypeEnum.kMillimeterLengthUnits);

            foreach (Inventor.Face Face in ExtrudeFeature.Faces)
            {
                if (Face.SurfaceType == Inventor.SurfaceTypeEnum.kCylinderSurface)
                {
                    Inventor.Cylinder Cylinder;
                    Cylinder = Face.Geometry;
                    if (Cylinder.Radius == FlangeHoleDiaOD / 2)
                    {
                        EdgeLoops = Face.EdgeLoops;
                        foreach (Inventor.EdgeLoop EdgeLoop in EdgeLoops)
                        {
                            if (EdgeLoop.IsOuterEdgeLoop)
                            {
                                foreach (Inventor.Edge mEdge in EdgeLoop.Edges)
                                {
                                    if (mEdge.CurveType == Inventor.CurveTypeEnum.kCircleCurve)
                                    {
                                        Edge = mEdge;
                                        PartDocument.ComponentDefinition.iMateDefinitions.AddInsertiMateDefinition(Edge, false, Offset, null, MateNamePrefix + ":" + Counter.ToString());
                                        Counter++;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
예제 #24
0
        private void DoCommandExportDXF(Inventor.PartDocument mPartDocument)
        {
            Inventor.Face Face = null;

            Face = FaceViews.GetBiggestFace(mPartDocument.ComponentDefinition.SurfaceBodies[1]);

            if (Face != null)
            {
                Inventor.ControlDefinition Definition;
                Inventor.CommandManager    CmdManager = mInvApplication.CommandManager;
                CmdManager.PostPrivateEvent(Inventor.PrivateEventTypeEnum.kFileNameEvent, FileSaveUrl + ".dxf");
                mPartDocument.SelectSet.Clear();
                mPartDocument.SelectSet.Select(Face);

                Definition = CmdManager.ControlDefinitions["GeomToDXFCommand"];
                Definition.Execute2(true);

                CmdManager.ClearPrivateEvents();
                mPartDocument.SelectSet.Clear();
            }
        }
예제 #25
0
 /// <summary>
 /// Helper Convert Basic Dims Width, Height, Length, Thickness, Number
 /// </summary>
 /// <param name="PartDocument">Inventor Part/Assembly Document Object As Referance</param>
 /// <param name="szWidth">Width Diamension, Expression As String</param>
 /// <param name="szHeight">Height Diamension, Expression As String</param>
 /// <param name="szLength">Length Diamension, Expression As String</param>
 /// <param name="szThickness">Thickness Diamension, Expression As String</param>
 /// <param name="szQty">Number Of Diamension, Expression As String</param>
 /// <param name="Width">Width, Model World Value, Out As double</param>
 /// <param name="Height">Height Diamension, Model World Value, Out As double</param>
 /// <param name="Length">Length Diamension, Model World Value, Out As double</param>
 /// <param name="Thickness">Thickness Diamension, Model World Value, Out As double</param>
 /// <param name="Qty">Number Or Qty Of Diamension, Model World Value, Out As double</param>
 private static void ConvertBaseObjectDims(
     ref Inventor.PartDocument PartDocument,
     string szWidth,
     string szHeight,
     string szLength,
     string szThickness,
     string szQty,
     out double Width,
     out double Height,
     out double Length,
     out double Thickness,
     out double Qty)
 {
     Width = 0; Height = 0; Length = 0; Thickness = 0; Qty = 0;
     Inventor.UnitsOfMeasure UnitsOfMeasure = PartDocument.UnitsOfMeasure;
     Width     = UnitsOfMeasure.GetValueFromExpression(szWidth, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits);
     Height    = UnitsOfMeasure.GetValueFromExpression(szHeight, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits);
     Length    = UnitsOfMeasure.GetValueFromExpression(szLength, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits);
     Thickness = UnitsOfMeasure.GetValueFromExpression(szThickness, Inventor.UnitsTypeEnum.kDefaultDisplayLengthUnits);
     Qty       = UnitsOfMeasure.GetValueFromExpression(szQty, Inventor.UnitsTypeEnum.kUnitlessUnits);
 }
예제 #26
0
파일: CFlange.cs 프로젝트: waztdotnet/Api2
        private Inventor.ExtrudeFeature Extrude_FlangeBody(ref Inventor.PartDocument PartDocument)
        {
            Inventor.TransientGeometry   TransientGeometry;
            Inventor.SketchCircle        SketchCircle;
            Inventor.RadiusDimConstraint RadiusDimConstraint = null;
            Inventor.Profile             SketchProfile;
            Inventor.ExtrudeDefinition   ExtrudeDefinition;
            Inventor.ExtrudeFeature      ExtrudeFeature = null;

            Inventor.PlanarSketch Sketch;
            Inventor.SketchEntity SketchEntity;
            PartDocument = AddSketchProjectCenterPoint(PartDocument, out Sketch, out SketchEntity);

            TransientGeometry   = InvApp.TransientGeometry;
            SketchCircle        = Sketch.SketchCircles.AddByCenterRadius(TransientGeometry.CreatePoint2d(0, 0), FlangeDiaOD / 2);
            RadiusDimConstraint = Sketch.DimensionConstraints.AddRadius((Inventor.SketchEntity)SketchCircle, TransientGeometry.CreatePoint2d(0, 0), false);
            Sketch.GeometricConstraints.AddCoincident(SketchEntity, (Inventor.SketchEntity)SketchCircle.CenterSketchPoint);

            RadiusDimConstraint = null;
            SketchCircle        = null;
            Inventor.ObjectCollection SketchObjectCollection;
            SketchObjectCollection = InvApp.TransientObjects.CreateObjectCollection();

            SketchCircle = Sketch.SketchCircles.AddByCenterRadius(TransientGeometry.CreatePoint2d(0, 0), FlangeDiaID / 2);

            RadiusDimConstraint = Sketch.DimensionConstraints.AddRadius((Inventor.SketchEntity)SketchCircle, TransientGeometry.CreatePoint2d(0, 0), false);
            Sketch.GeometricConstraints.AddCoincident(SketchEntity, (Inventor.SketchEntity)SketchCircle.CenterSketchPoint);
            SketchObjectCollection.Add(SketchCircle);

            SketchProfile     = Sketch.Profiles.AddForSolid(true, SketchObjectCollection);
            ExtrudeDefinition = PartDocument.ComponentDefinition.Features.ExtrudeFeatures.CreateExtrudeDefinition(SketchProfile, Inventor.PartFeatureOperationEnum.kNewBodyOperation);
            ExtrudeDefinition.SetDistanceExtent(FlangeThickness, Inventor.PartFeatureExtentDirectionEnum.kPositiveExtentDirection);

            //Extrude The Sketch Profile
            ExtrudeFeature      = PartDocument.ComponentDefinition.Features.ExtrudeFeatures.Add(ExtrudeDefinition);
            ExtrudeFeature.Name = "FlangeBody";

            return(ExtrudeFeature);
        }
예제 #27
0
        //Single Call and add
        private void SetUserParameters(ref Inventor.PartDocument PartDocument, string UserParameterName, string ParameterValue, Inventor.UnitsTypeEnum units)
        {
            bool found = false;

            Inventor.UserParameter m_UserParameter;
            foreach (Inventor.UserParameter UserParameter in PartDocument.ComponentDefinition.Parameters.UserParameters)
            {
                if (UserParameter.Name == UserParameterName)
                {
                    found = true;
                    UserParameter.Expression        = ParameterValue + "mm";
                    UserParameter.ExposedAsProperty = true;
                    break;
                }
            }

            if (!found)
            {
                m_UserParameter = PartDocument.ComponentDefinition.Parameters.UserParameters.AddByExpression(UserParameterName, ParameterValue, units);
                m_UserParameter.ExposedAsProperty = true;
            }
        }
예제 #28
0
        private void ProcessFileRefs(Inventor.File File)
        {
            foreach (Inventor.FileDescriptor DescriptedFile in File.ReferencedFileDescriptors)
            {
                if (!DescriptedFile.ReferenceMissing)
                {
                    if (DescriptedFile.ReferencedFileType != Inventor.FileTypeEnum.kForeignFileType)
                    {
                        if (DescriptedFile.ReferencedFileType == Inventor.FileTypeEnum.kPartFileType) //part or sub;
                        {
                            string TartgetPartNumber           = "";
                            Inventor.PartDocument PartDocument = (Inventor.PartDocument)mInvApplication.Documents.Open(DescriptedFile.FullFileName, false);
                            TartgetPartNumber = PartDocument.PropertySets["{32853F0F-3444-11d1-9E93-0060B03C1CA6}"].get_ItemByPropId((int)Inventor.PropertiesForDesignTrackingPropertiesEnum.kPartNumberDesignTrackingProperties).Value;

                            if (TartgetPartNumber.StartsWith(txtPartID))
                            {
                                string             TypeOfPart = "";
                                Inventor._Document Document   = (Inventor._Document)PartDocument;

                                // normal part
                                if (PartDocument.SubType != "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}")
                                {
                                    TypeOfPart = "Plate";
                                    DrawDocument(Document, TypeOfPart);
                                }
                                else // if sheet metal
                                {
                                    TypeOfPart = "SheetMetal";
                                    DrawDocument(Document, TypeOfPart);
                                }

                                // Document.Close(false);
                            }
                            PartDocument.Close(false);
                        }
                    }
                }
            }
        }
예제 #29
0
        public Inventor.ExtrudeFeature Extrude_FlangeBody()
        {
            Inventor.TransientGeometry   TransientGeometry;
            Inventor.SketchCircle        SketchCircle;
            Inventor.RadiusDimConstraint RadiusDiamension = null;
            Inventor.Profile             SketchProfile;
            Inventor.ExtrudeDefinition   ExtrudeDefinition;
            Inventor.ExtrudeFeature      ExtrudeFeature = null;
            Inventor.PlanarSketch        Sketch;
            Inventor.SketchEntity        SketchEntity;
            //Create Sketch on wp project 0,0,0 work point Geometry
            PartDocument = AddSketchProjectCenterPoint(PartDocument, out Sketch, out SketchEntity);
            //Get the Transient Geometry Object from Inventor
            TransientGeometry = InvApp.TransientGeometry;
            //Draw Outside Hole
            DrawCircle_Constrain_Diamension(TransientGeometry.CreatePoint2d(0, 0), out SketchCircle, out RadiusDiamension, Sketch, SketchEntity, FlangeDiaOD / 2);

            RadiusDiamension = null;           // reset for next use
            SketchCircle     = null;
            Inventor.ObjectCollection SketchObjectCollection;
            SketchObjectCollection = InvApp.TransientObjects.CreateObjectCollection();
            //Draw Inside Hole Add to sketch objects
            DrawCircle_Constrain_Diamension(TransientGeometry.CreatePoint2d(0, 0), out SketchCircle, out RadiusDiamension, Sketch, SketchEntity, FlangeDiaID / 2);
            //Add to sketch Collection ready for Extrude
            SketchObjectCollection.Add(SketchCircle);
            //Convert to profileing
            SketchProfile     = Sketch.Profiles.AddForSolid(true, SketchObjectCollection);
            ExtrudeDefinition = PartDocument.ComponentDefinition.Features.ExtrudeFeatures.CreateExtrudeDefinition(SketchProfile, Inventor.PartFeatureOperationEnum.kNewBodyOperation);
            ExtrudeDefinition.SetDistanceExtent(FlangeThickness, Inventor.PartFeatureExtentDirectionEnum.kPositiveExtentDirection);

            //Extrude The Sketch Profile
            ExtrudeFeature      = PartDocument.ComponentDefinition.Features.ExtrudeFeatures.Add(ExtrudeDefinition);
            ExtrudeFeature.Name = "FlangeBody";

            return(ExtrudeFeature);
        }
예제 #30
0
 private void SetModelView(Inventor.Document mDocument)
 {
     Inventor.SurfaceBody mSurfaceBody;
     if (mDocument.DocumentType == Inventor.DocumentTypeEnum.kPartDocumentObject)
     {
         Inventor.PartDocument mPartDocument = (Inventor.PartDocument)mDocument;
         if (mPartDocument.DocumentSubType.DocumentSubTypeID != "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}")
         {
             Inventor.ComponentDefinition mComponentDefinition;
             mComponentDefinition = (Inventor.ComponentDefinition)mPartDocument.ComponentDefinition;
             mSurfaceBody         = mComponentDefinition.SurfaceBodies[1];
             GetFaceToSetView(mSurfaceBody, mPartDocument);
             mPartDocument.Save2(false);
         }
         else
         {
             return;
         }
     }
     else
     {
         return;
     }
 }