Пример #1
0
 public static void RoundCorner(this ModelDoc2 @this, double d, SketchSegment segment1, SketchSegment segment2)
 {
     @this.ClearSelection2(true);
     segment1.Select(true);
     segment2.Select(true);
     @this.SketchManager.CreateFillet(d, 1);
 }
Пример #2
0
 public Spline(SketchSegment segments)
 {
     seg     = (SketchSpline)segments;
     ori     = segments;
     sPoints = new List <int>();
     len     = 0;
 }
Пример #3
0
 public static void RoundCorner(this ModelDoc2 @this, double d, SketchSegment segment1, SketchSegment segment2)
 {
     @this.ClearSelection2(true);
     segment1.Select(true);
     segment2.Select(true);
     @this.SketchManager.CreateFillet(d, 1);
 }
Пример #4
0
        //                                                    Operations


        void Mirror(SketchSegment axis)
        {
            Sketch sketch = (Sketch)Model.GetActiveSketch2();

            for (int k = iSegments - 2; k >= 0; k--)
            {
                clear();
                Segments[k].SelectByMark(true, 1);
                axis.SelectByMark(true, 2);
                Model.SketchMirror();

                dynamic segments = sketch.GetSketchSegments();
                for (int i = 0; i < segments.Length; i++)
                {
                    bool          OK        = true;
                    SketchSegment pretender = segments[i];
                    for (int j = 0; j < iSegments; j++)
                    {
                        if (pretender.GetName() == Segments[j].GetName())
                        {
                            OK = false; break;
                        }
                    }
                    if (OK)
                    {
                        Segments[iSegments++] = pretender;
                    }
                }
            }
        }
Пример #5
0
        void Fillet(SketchSegment line1, SketchSegment line2, double radius)
        {
            clear(); line1.Select(true); line2.Select(true);
            SketchSegment last_seg = Segments[iSegments - 1];
            SketchSegment fillet   = Model.SketchManager.CreateFillet(radius * mm, 1);

            Segments[iSegments - 1] = fillet; Segments[iSegments++] = last_seg;
        }
Пример #6
0
 public loopSeg(SketchSegment iniSeg)
 {
     seg   = iniSeg;
     type  = seg.GetType();
     index = -1;
     start = -1;
     end   = -1;
 }
Пример #7
0
        SketchSegment Line(SketchPoint a, SketchPoint b)
        {
            clear();
            SketchSegment segment = Segments[iSegments++] = Model.SketchManager.CreateLine(a.X, a.Y, 0, b.X, b.Y, 0);

            clear(); a.Select(true); select(iSegments - 1, "a"); merge();
            clear(); b.Select(true); select(iSegments - 1, "b"); merge();
            return(segment);
        }
Пример #8
0
 public PointD draw(SketchManager sm)
 {
     sketch = sm.CreateLine(start.X, start.Y, start.Z, end.X, end.Y, end.Z);
     if (sketch != null)
     {
         sketch.Select(false);
     }
     return(end);
 }
Пример #9
0
        SketchSegment Line(SketchPoint p, double x, double y)
        {
            clear();
            Vector        b       = ~P(x, y);
            SketchSegment segment = Segments[iSegments++] = Model.SketchManager.CreateLine(p.X, p.Y, 0, b.x, b.y, 0);

            clear(); p.Select(true); select(iSegments - 1, "a"); merge();
            LastPoint = P(x, y);
            return(segment);
        }
Пример #10
0
        SketchSegment axis(double x, double y, double xx, double yy)
        {
            clear();
            Vector        a = ~P(x, y), b = ~P(xx, yy);
            SketchSegment segment = Segments[iSegments++] = Model.SketchManager.CreateCenterLine(a.x, a.y, 0, b.x, b.y, 0);

            if (P(x, y) == LastPoint)
            {
                clear(); select(iSegments - 2, "b"); select(iSegments - 1, "a"); merge();
            }
            LastPoint = P(xx, yy);
            return(segment);
        }
Пример #11
0
        public static void DrawSketch(ModelDoc2 SketchDoc)
        {
            SketchManager SwSketchMrg = SketchDoc.SketchManager;//获得SketchManager对象

            SketchDoc.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, false, 0, null, 0);
            SwSketchMrg.InsertSketch(true);//进入编辑草图模式
            object[]      ObjRectangle = SwSketchMrg.CreateCenterRectangle(0, 0, 0, 0.075, 0.04, 0);
            SketchSegment SktCircle1   = SwSketchMrg.CreateCircle(-0.0425, 0, 0, -0.03, 0, 0);
            SketchSegment SktCircle2   = SwSketchMrg.CreateCircle(0.0425, 0, 0, 0.03, 0, 0);
            SketchSegment SktCentLine  = SwSketchMrg.CreateCenterLine(0, 0.04, 0, 0, -0.04, 0);

            SwSketchMrg.InsertSketch(true);//退出编辑草图模式
        }
Пример #12
0
            //--------------------------------------------------------------------------------------------------

            public SegmentData(Sketch sketch, SketchSegment segment)
            {
                Sketch  = sketch;
                Segment = segment;
                Index   = Sketch.Segments.FirstOrDefault(kvp => kvp.Value == segment).Key;

                var points = Sketch.Points;

                if (segment is SketchSegmentCircle)
                {
                    Type = "Circle";
                    Info = "Radius: " + ((SketchSegmentCircle)segment).Radius(points).Round() + " mm";
                }
                else if (segment is SketchSegmentLine)
                {
                    Type = "Line";
                    Info = "Length: " + ((SketchSegmentLine)segment).Length(points).Round() + " mm";
                }
                else if (segment is SketchSegmentEllipse)
                {
                    Type = "Ellipse";
                    Info = "";
                }
                else if (segment is SketchSegmentArc)
                {
                    Type = "Circular Arc";
                    Info = "Radius: " + ((SketchSegmentArc)segment).Radius(points).Round() + " mm";
                }
                else if (segment is SketchSegmentEllipticalArc)
                {
                    Type = "Elliptical Arc";
                    Info = "";
                }
                else if (segment is SketchSegmentBezier)
                {
                    Type = "Bézier Curve";
                    var grade = ((SketchSegmentBezier)segment).Points.Length - 1;
                    switch (grade)
                    {
                    case 1: Info = "1st Grade"; break;

                    case 2: Info = "2nd Grade"; break;

                    case 3: Info = "3rd Grade"; break;

                    default: Info = grade + "th Grade"; break;
                    }
                }
            }
            protected override void Command()
            {
                String TypeSel = "";

                MdlBase.Extension.SelectByID2(Plan.GetNameForSelection(out TypeSel), TypeSel, 0, 0, 0, false, -1, null, 0);

                SketchManager Sk = MdlBase.SketchManager;

                Sk.InsertSketch(true);


                SketchSegment F = Sk.CreateLine(0, 0, 0, -0.064085, 0.171639, 0);

                Sk.InsertSketch(true);

                MdlBase.EditRebuild3();
            }
        public static void Bounding(IModelDoc2 model, double[] boxFeature)
        {
            SketchManager sketchManager = default(SketchManager);
            SketchPoint[] sketchPoint = new SketchPoint[9];
            SketchSegment[] sketchSegment = new SketchSegment[13];

            Debug.Print("  point1 = " + "(" + boxFeature[0] * 1000.0 + ", " + boxFeature[1] * 1000.0 + ", " + boxFeature[2] * 1000.0 + ") mm");
            Debug.Print("  point2 = " + "(" + boxFeature[3] * 1000.0 + ", " + boxFeature[4] * 1000.0 + ", " + boxFeature[5] * 1000.0 + ") mm");
            model.Insert3DSketch2(true);
            model.SetAddToDB(true);
            model.SetDisplayWhenAdded(false);

            sketchManager = (SketchManager)model.SketchManager;

            // draw points at each corner of bounding box
            sketchPoint[0] = (SketchPoint)sketchManager.CreatePoint(boxFeature[3], boxFeature[1], boxFeature[5]);
            sketchPoint[1] = (SketchPoint)sketchManager.CreatePoint(boxFeature[0], boxFeature[1], boxFeature[5]);
            sketchPoint[2] = (SketchPoint)sketchManager.CreatePoint(boxFeature[0], boxFeature[1], boxFeature[2]);
            sketchPoint[3] = (SketchPoint)sketchManager.CreatePoint(boxFeature[3], boxFeature[1], boxFeature[2]);
            sketchPoint[4] = (SketchPoint)sketchManager.CreatePoint(boxFeature[3], boxFeature[4], boxFeature[5]);
            sketchPoint[5] = (SketchPoint)sketchManager.CreatePoint(boxFeature[0], boxFeature[4], boxFeature[5]);
            sketchPoint[6] = (SketchPoint)sketchManager.CreatePoint(boxFeature[0], boxFeature[4], boxFeature[2]);
            sketchPoint[7] = (SketchPoint)sketchManager.CreatePoint(boxFeature[3], boxFeature[4], boxFeature[2]);

            // now draw bounding box
            sketchSegment[0] = (SketchSegment)sketchManager.CreateLine(sketchPoint[0].X, sketchPoint[0].Y, sketchPoint[0].Z, sketchPoint[1].X, sketchPoint[1].Y, sketchPoint[1].Z);
            sketchSegment[1] = (SketchSegment)sketchManager.CreateLine(sketchPoint[1].X, sketchPoint[1].Y, sketchPoint[1].Z, sketchPoint[2].X, sketchPoint[2].Y, sketchPoint[2].Z);
            sketchSegment[2] = (SketchSegment)sketchManager.CreateLine(sketchPoint[2].X, sketchPoint[2].Y, sketchPoint[2].Z, sketchPoint[3].X, sketchPoint[3].Y, sketchPoint[3].Z);
            sketchSegment[3] = (SketchSegment)sketchManager.CreateLine(sketchPoint[3].X, sketchPoint[3].Y, sketchPoint[3].Z, sketchPoint[0].X, sketchPoint[0].Y, sketchPoint[0].Z);
            sketchSegment[4] = (SketchSegment)sketchManager.CreateLine(sketchPoint[0].X, sketchPoint[0].Y, sketchPoint[0].Z, sketchPoint[4].X, sketchPoint[4].Y, sketchPoint[4].Z);
            sketchSegment[5] = (SketchSegment)sketchManager.CreateLine(sketchPoint[1].X, sketchPoint[1].Y, sketchPoint[1].Z, sketchPoint[5].X, sketchPoint[5].Y, sketchPoint[5].Z);
            sketchSegment[6] = (SketchSegment)sketchManager.CreateLine(sketchPoint[2].X, sketchPoint[2].Y, sketchPoint[2].Z, sketchPoint[6].X, sketchPoint[6].Y, sketchPoint[6].Z);
            sketchSegment[7] = (SketchSegment)sketchManager.CreateLine(sketchPoint[3].X, sketchPoint[3].Y, sketchPoint[3].Z, sketchPoint[7].X, sketchPoint[7].Y, sketchPoint[7].Z);
            sketchSegment[8] = (SketchSegment)sketchManager.CreateLine(sketchPoint[4].X, sketchPoint[4].Y, sketchPoint[4].Z, sketchPoint[5].X, sketchPoint[5].Y, sketchPoint[5].Z);
            sketchSegment[9] = (SketchSegment)sketchManager.CreateLine(sketchPoint[5].X, sketchPoint[5].Y, sketchPoint[5].Z, sketchPoint[6].X, sketchPoint[6].Y, sketchPoint[6].Z);
            sketchSegment[10] = (SketchSegment)sketchManager.CreateLine(sketchPoint[6].X, sketchPoint[6].Y, sketchPoint[6].Z, sketchPoint[7].X, sketchPoint[7].Y, sketchPoint[7].Z);
            sketchSegment[11] = (SketchSegment)sketchManager.CreateLine(sketchPoint[7].X, sketchPoint[7].Y, sketchPoint[7].Z, sketchPoint[4].X, sketchPoint[4].Y, sketchPoint[4].Z);

            model.SetDisplayWhenAdded(true);
            model.SetAddToDB(false);
            model.Insert3DSketch2(true);
        }
Пример #15
0
        /// <summary>
        /// 薄壁拉伸
        /// </summary>
        /// <param name="segment"></param>
        /// <param name="swApp"></param>
        public static void CreateCube(this SketchSegment segment, SldWorks swApp)
        {
            ModelDoc2 swDoc = (ModelDoc2)swApp.ActiveDoc;
            //bool boolstatus = false;
            Feature         myFeature = null;
            IFeatureManager featMan   = swDoc.FeatureManager;

            myFeature = featMan.FeatureExtrusionThin2(
                true,
                false,
                true,
                (int)swEndConditions_e.swEndCondMidPlane,
                (int)swEndConditions_e.swEndCondMidPlane,
                0.01,
                0.01,
                false,//拔模
                false,
                false,
                false,
                0,
                0,
                false,
                false,
                false,
                false,
                false,//merge
                0.022,
                0.022,
                0,
                2,
                0,
                false,
                0.005,
                false,
                true
                ,
                (int)swStartConditions_e.swStartSketchPlane,
                0.0,
                false
                );
        }
Пример #16
0
        public Line(SketchSegment segment)
        {
            if (segment.GetType() != (int)swSketchSegments_e.swSketchLINE)
            {
                return;
            }

            ICurve curve = segment.GetCurve();

            //In meters
            double[] value = curve.LineParams;

            start  = new Point(new double[] { value[0], value[1], value[2] });
            len    = segment.GetLength();
            dir    = new Vector(new double[] { value[3], value[4], value[5] });//可能是单位化的
            dir    = dir.unit;
            dir.X *= len;
            dir.Y *= len;
            dir.Z *= len;
            end    = new Point(start.X + dir.X, start.Y + dir.Y, start.Z + dir.Z);
        }
Пример #17
0
        //SketchPoint get_line(int index, string point)
        //{
        //    SketchLine element = (SketchLine)Segments[index];
        //    if (point == "a" || point == "A") return element.GetStartPoint2();
        //    if (point == "b" || point == "B") return element.GetEndPoint2();
        //    return null;
        //}
        //SketchPoint get_arc(int index, string point)
        //{
        //    SketchArc element = (SketchArc)Segments[index];
        //    if (point == "a" || point == "A") return element.GetStartPoint2();
        //    if (point == "b" || point == "B") return element.GetEndPoint2();
        //    if (point == "c" || point == "C") return element.GetCenterPoint2();
        //    return null;
        //}
        SketchPoint get(int index, string point)
        {
            if (index < 0)
            {
                index = (iSegments - 1) - abs(index);
            }

            SketchSegment segment = Segments[index];

            if (segment.GetType() == (int)swSketchSegments_e.swSketchARC)
            {
                SketchArc element = (SketchArc)segment;
                if (point == "a" || point == "A")
                {
                    return(element.GetStartPoint2());
                }
                if (point == "b" || point == "B")
                {
                    return(element.GetEndPoint2());
                }
                if (point == "c" || point == "C")
                {
                    return(element.GetCenterPoint2());
                }
            }
            if (segment.GetType() == (int)swSketchSegments_e.swSketchLINE)
            {
                SketchLine element = (SketchLine)segment;
                if (point == "a" || point == "A")
                {
                    return(element.GetStartPoint2());
                }
                if (point == "b" || point == "B")
                {
                    return(element.GetEndPoint2());
                }
            }
            return(null);
        }
Пример #18
0
        //--------------------------------------------------------------------------------------------------

        bool _AddPathSegment(SketchSegment sketchSegment)
        {
            // Get start and end point
            Pnt2d start, end;

            if (sketchSegment.EndPoint == _LastPathEndPoint)
            {
                start             = _Sketch.Points[sketchSegment.EndPoint];
                end               = _Sketch.Points[sketchSegment.StartPoint];
                _LastPathEndPoint = sketchSegment.StartPoint;
            }
            else
            {
                start             = _Sketch.Points[sketchSegment.StartPoint];
                end               = _Sketch.Points[sketchSegment.EndPoint];
                _LastPathEndPoint = sketchSegment.EndPoint;
            }

            // Create path segment
            switch (sketchSegment)
            {
            case SketchSegmentLine lineSegment:
                return(_AddLineSegment(lineSegment, start, end));

            case SketchSegmentBezier bezierSegment:
                return(_AddBezierSegment(bezierSegment, start, end));

            case SketchSegmentArc arcSegment:
                return(_AddArcSegment(arcSegment, start, end));

            case SketchSegmentEllipticalArc arcSegment:
                return(_AddEllipicalArcSegment(arcSegment, start, end));
            }

            Messages.Warning($"Connectable segment {_Sketch.Segments.FirstOrDefault(x => x.Value == sketchSegment).Key} of type {sketchSegment.GetType().Name} does not have a method to be exported to a SVG path.");
            return(true);
        }
Пример #19
0
        //--------------------------------------------------------------------------------------------------

        void _AddUnconnectableSegment(SketchSegment sketchSegment)
        {
            if (sketchSegment is SketchSegmentCircle)
            {
                var sketchCircle = (SketchSegmentCircle)sketchSegment;
                var radius       = sketchCircle.Radius(_Sketch.Points);
                if (radius > 0)
                {
                    var center = _Sketch.Points[sketchCircle.CenterPoint];
                    _DomGroup.Children.Add(new SvgDomCircle(center, radius));
                    return;
                }
            }
            else if (sketchSegment is SketchSegmentEllipse)
            {
                var sketchEllipse = (SketchSegmentEllipse)sketchSegment;
                var curve         = sketchEllipse.MakeCurve(_Sketch.Points) as Geom2d_Ellipse;
                if (curve != null)
                {
                    var    center         = _Sketch.Points[sketchEllipse.CenterPoint];
                    var    element        = new SvgDomEllipse(center, curve.MajorRadius(), curve.MinorRadius());
                    var    majorAxisPoint = _Sketch.Points[sketchEllipse.GetMajorAxisPoint(_Sketch.Points)];
                    double rotAngle       = new Ax2d(center, new Vec2d(center, majorAxisPoint).ToDir()).Angle(new Ax2d(center, Dir2d.DX));

                    element.Transforms.Add(new SvgRotateTransform(rotAngle.ToDeg(), element.Center));

                    _DomGroup.Children.Add(element);
                    return;
                }
            }
            else
            {
                Messages.Warning($"Unconnectable segment {_Sketch.Segments.FirstOrDefault(x => x.Value == sketchSegment).Key} of type {sketchSegment.GetType().Name} does not have a method to be exported to a SVG element.");
            }
            Messages.Warning($"Unconnectable segment {_Sketch.Segments.FirstOrDefault(x => x.Value == sketchSegment).Key} of type {sketchSegment.GetType().Name} could not be exported to SVG element.");
        }
Пример #20
0
        //--------------------------------------------------------------------------------------------------

        public SketchEditorSegmentElement(SketchEditorTool sketchEditorTool, int segmentIndex, SketchSegment segment, Trsf transform, Pln plane)
            : base(sketchEditorTool, transform, plane)
        {
            Segment      = segment;
            SegmentIndex = segmentIndex;
        }
Пример #21
0
 public Line(double x, double y, double z, double x1, double y1, double z1, SketchSegment sketch) : this(x, y, z, x1, y1, z1)
 {
     this.sketch = sketch;
 }
Пример #22
0
 public Parabola(SketchSegment segments)
 {
     seg = (SketchParabola)segments;
     ori = segments;
 }
Пример #23
0
        //Microsoft.Office.Interop.MSProject


        //string[] args
        static void CreateSketch()
        {
            SldWorks swApp = new SldWorks();
            //Feature myFeature;
            ModelDoc2 swModel = default(ModelDoc2);
            //RefPlane myRefPlane;
            SketchManager  swSkMgr = default(SketchManager);
            FeatureManager swFeMgr = default(FeatureManager);

            //Feature swFeat;
            //Sketch swSketch;
            int  longstatus = 0;
            bool boolstatus = false;

            swApp.ResetUntitledCount(0, 0, 0);

            swModel = (ModelDoc2)swApp.NewDocument("C:\\Users\\nemati\\Documents\\Visual Studio 2015\\Projects\\SWBlankApp\\SWBlankApp\\PartTemplate.SLDPRT", 0, 0, 0);
            swApp.ActivateDoc2("Part1", false, ref longstatus);
            swModel = (ModelDoc2)swApp.ActiveDoc;


            swSkMgr = swModel.SketchManager;
            swFeMgr = swModel.FeatureManager;
            swSkMgr.InsertSketch(true);
            //swFeMgr.FeatureExtruRefSurface()
            boolstatus = swModel.Extension.SelectByID2("Top Plane", "PLANE", -0.0553489443349025, 0.00330468607538553, 0.0269617286188933, false, 0, null, 0);
            swModel.ClearSelection2(true);


            if (swModel == null)
            {
                swApp.SendMsgToUser2("Ridi.", (int)swMessageBoxIcon_e.swMbWarning, (int)swMessageBoxBtn_e.swMbOk);
                return;
            }

            int modelType = 0;

            modelType = swModel.GetType();

            if (modelType != (int)swDocumentTypes_e.swDocPART)
            {
                swApp.SendMsgToUser2("A part document must be active.", (int)swMessageBoxIcon_e.swMbWarning, (int)swMessageBoxBtn_e.swMbOk);
                return;
            }

            // Creating sample point
            SketchPoint skPoint = default(SketchPoint);

            skPoint = swSkMgr.CreatePoint(-100, 100, 0);


            // Creating sample arc
            SketchSegment skArc = default(SketchSegment);

            skArc = swSkMgr.Create3PointArc(0, 0, 0, 10, 10, 0, -10, 10, 0);


            // Creating sample circle
            SketchSegment skCircle = default(SketchSegment);

            skCircle = swSkMgr.CreateCircleByRadius(-20, 20, 0, 7.5);


            swSkMgr.InsertSketch(true);



            //swModel.SketchCircle();

            Console.WriteLine(swApp.Visible.ToString());

            Console.WriteLine(swApp.FrameWidth.ToString());

            //swApp.CreateNewWindow();

            swModel.SaveAs("C:\\Users\\nemati\\Documents\\Visual Studio 2015\\Projects\\SWBlankApp\\SWBlankApp\\SketchArc.SLDPRT");


            //swApp.

            swApp.ExitApp();

            //swApp = null;

            //swApp
        }
Пример #24
0
 public Line(PointD start, PointD end, SketchSegment sketch) : this(start, end)
 {
     this.sketch = sketch;
 }
Пример #25
0
        protected override void Command()
        {
            try
            {
                Face2         face    = null;
                SketchSegment segment = null;

                if (MdlBase.eSelect_RecupererTypeObjet(1) == e_swSelectType.swSelFACES)
                {
                    face    = MdlBase.eSelect_RecupererObjet <Face2>(1);
                    segment = MdlBase.eSelect_RecupererObjet <SketchSegment>(2);
                }
                else
                {
                    face    = MdlBase.eSelect_RecupererObjet <Face2>(2);
                    segment = MdlBase.eSelect_RecupererObjet <SketchSegment>(1);
                }

                if (face == null || segment == null)
                {
                    return;
                }

                MdlBase.eEffacerSelection();

                Boolean r       = false;
                Boolean reverse = false;

                var sk    = segment.GetSketch();
                var xform = (MathTransform)sk.ModelToSketchTransform.Inverse();

                if (segment.GetType() != (int)swSketchSegments_e.swSketchLINE)
                {
                    return;
                }

                var sl = (SketchLine)segment;

                var start = new ePoint(sl.GetStartPoint2());
                var end   = new ePoint(sl.GetEndPoint2());

                start.ApplyMathTransform(xform);
                end.ApplyMathTransform(xform);

                WindowLog.Ecrire(start.IsRef() + " " + start.ToString());
                WindowLog.Ecrire(end.IsRef() + " " + end.ToString());

                var box = (Double[])face.GetBox();

                var pt = new ePoint((box[3] + box[0]) * 0.5, (box[4] + box[1]) * 0.5, (box[5] + box[2]) * 0.5);
                WindowLog.Ecrire(pt.IsRef() + " " + pt.ToString());

                if (start.Distance2(pt) > end.Distance2(pt))
                {
                    reverse = true;
                }

                r = face.eSelectEntite(MdlBase, 4, false);

                r = segment.eSelect(MdlBase, 1, true);

                var cp = (Body2)face.GetBody();
                r = cp.eSelect(MdlBase, 512, true);

                var fm           = MdlBase.FeatureManager;
                var featRepetDef = (CurveDrivenPatternFeatureData)fm.CreateDefinition((int)swFeatureNameID_e.swFmCurvePattern);

                featRepetDef.D1AlignmentMethod  = 0;
                featRepetDef.D1CurveMethod      = 0;
                featRepetDef.D1InstanceCount    = 3;
                featRepetDef.D1IsEqualSpaced    = true;
                featRepetDef.D1ReverseDirection = reverse;
                featRepetDef.D1Spacing          = 0.001;
                featRepetDef.D2InstanceCount    = 1;
                featRepetDef.D2IsEqualSpaced    = false;
                featRepetDef.D2PatternSeedOnly  = false;
                featRepetDef.D2ReverseDirection = false;
                featRepetDef.D2Spacing          = 0.001;
                featRepetDef.GeometryPattern    = true;

                var featRepet = fm.CreateFeature(featRepetDef);

                WindowLog.Ecrire(featRepet != null);
            }
            catch (Exception e)
            {
                this.LogMethode(new Object[] { e });
                WindowLog.Ecrire(new Object[] { e });
            }
        }
Пример #26
0
 public static void Next(IEnumSketchSegmentsObject IEnumSketchSegmentsinstance, Int32 Celt, SketchSegment&Object Rgelt, Int32& PceltFetched)
Пример #27
0
        // Funny method I created that inserts a RefAxis and then finds the reference to it.
        public Feature insertAxis(SketchSegment axis)
        {
            //First select the axis
            SelectData data = ActiveSWModel.SelectionManager.CreateSelectData();
            axis.Select4(false, data);

            //Get the features before the axis is created
            object[] featuresBefore, featuresAfter;
            featuresBefore = ActiveSWModel.FeatureManager.GetFeatures(true);
            int countBefore = ActiveSWModel.FeatureManager.GetFeatureCount(true);

            //Create the axis
            ActiveSWModel.InsertAxis2(true);

            //Get the features after the axis is created
            featuresAfter = ActiveSWModel.FeatureManager.GetFeatures(true);
            int countAfter = ActiveSWModel.FeatureManager.GetFeatureCount(true);

            // If it was created, try to find it
            if (featuresBefore.Length < featuresAfter.Length)
            {
                //It was probably added at the end (hence .Reverse())
                foreach (Feature feat in featuresAfter.Reverse())
                {
                    //If the feature in featuresAfter is not in features before, its gotta be the axis we inserted
                    if (!featuresBefore.Contains(feat))
                    {
                        return feat;
                    }
                }
            }
            return null;
        }
Пример #28
0
        public static void AddConstraintAndDim(ModelDoc2 SketchDoc)
        {
            SketchManager SwSketchMrg = SketchDoc.SketchManager;//获得SketchManager对象

            SketchDoc.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, false, 0, null, 0);
            SwSketchMrg.InsertSketch(true);//进入编辑草图模式
            object[]      ObjRectangle = SwSketchMrg.CreateCenterRectangle(0, 0, 0, 0.075, 0.04, 0);
            SketchSegment SktCircle1   = SwSketchMrg.CreateCircle(-0.0425, 0, 0, -0.03, 0, 0);
            SketchSegment SktCircle2   = SwSketchMrg.CreateCircle(0.0425, 0, 0, 0.03, 0, 0);
            SketchSegment SktCentLine  = SwSketchMrg.CreateCenterLine(0, 0.04, 0, 0, -0.04, 0);

            #region 两个圆心添加水平
            SketchDoc.ClearSelection2(true);
            SketchDoc.Extension.SelectByID2("", "SKETCHPOINT", -0.0425, 0, 0, true, 0, null, 0);
            SketchDoc.Extension.SelectByID2("", "SKETCHPOINT", 0.0425, 0, 0, true, 0, null, 0);
            SketchDoc.SketchAddConstraints("sgHORIZONTALPOINTS2D");
            #endregion

            #region 两个圆心添加对称
            SketchDoc.ClearSelection2(true);
            SketchDoc.Extension.SelectByID2("", "SKETCHPOINT", -0.0425, 0, 0, true, 0, null, 0);
            SketchDoc.Extension.SelectByID2("", "SKETCHPOINT", 0.0425, 0, 0, true, 0, null, 0);
            SktCentLine.Select(true);
            SketchDoc.SketchAddConstraints("sgSYMMETRIC");
            #endregion

            #region 圆心与坐标原点水平
            SketchDoc.ClearSelection2(true);
            SketchDoc.Extension.SelectByID2("", "SKETCHPOINT", -0.0425, 0, 0, true, 0, null, 0);
            SketchDoc.Extension.SelectByID2("", "SKETCHPOINT", 0, 0, 0, true, 0, null, 0);
            SketchDoc.SketchAddConstraints("sgHORIZONTALPOINTS2D");
            #endregion

            #region 添加孔间距尺寸
            SketchDoc.ClearSelection2(true);
            SketchDoc.Extension.SelectByID2("", "SKETCHPOINT", -0.0425, 0, 0, true, 0, null, 0);
            SketchDoc.Extension.SelectByID2("", "SKETCHPOINT", 0.0425, 0, 0, true, 0, null, 0);
            SketchDoc.AddDimension2(0, 0.05, 0);
            #endregion

            #region 两个圆添加相同大小
            SktCircle1.Select(false);
            SktCircle2.Select(true);
            SketchDoc.SketchAddConstraints("sgSAMELENGTH");
            #endregion

            #region 添加圆尺寸
            SktCircle1.Select(false);
            SketchDoc.AddDimension2(-0.02, 0.02, 0);
            #endregion

            #region 添加矩形长
            SketchDoc.Extension.SelectByID2("", "SKETCHSEGMENT", -0.02, 0.04, 0, false, 0, null, 0);
            SketchDoc.AddDimension2(0, 0.07, 0);
            #endregion

            #region 添加矩形高
            SketchDoc.Extension.SelectByID2("", "SKETCHSEGMENT", 0.075, 0, 0, false, 0, null, 0);
            SketchDoc.AddDimension2(0.09, 0, 0);
            #endregion

            SwSketchMrg.InsertSketch(true);//退出编辑草图模式
        }
Пример #29
0
 public Ellipse(SketchSegment segments)
 {
     seg = (SketchEllipse)segments;
     ori = segments;
 }
Пример #30
0
        /// <summary>
        /// 这里提供获取当前装配体的 bounding box
        /// </summary>
        /// <returns>返回 LxWxH</returns>
        private string GetActionAssemlbyBOX()
        {
            BoxSize newboxSize = new BoxSize();

            ModelDoc2 swModel = default(ModelDoc2);

            double L = 0;
            double W = 0;
            double H = 0;

            double[] BoxFeatureDblArray = new double[7];

            double[] BoxFaceDblArray = new double[7];

            SketchPoint[]   swSketchPt  = new SketchPoint[9];
            SketchSegment[] swSketchSeg = new SketchSegment[13];

            swModel = (ModelDoc2)iswApp.IActiveDoc2;

            AssemblyDoc assemblyDoc = (AssemblyDoc)swModel;

            BoxFeatureDblArray = (double[])assemblyDoc.GetBox((int)swBoundingBoxOptions_e.swBoundingBoxIncludeRefPlanes);

            L = (BoxFeatureDblArray[3] - BoxFeatureDblArray[0]) * 1000;
            W = (BoxFeatureDblArray[4] - BoxFeatureDblArray[1]) * 1000;
            H = (BoxFeatureDblArray[5] - BoxFeatureDblArray[2]) * 1000;

            List <double> myList = new List <double> {
                L, W, H
            };

            myList.Sort();

            newboxSize.Length = myList[2];
            newboxSize.Weigth = myList[1];
            newboxSize.Height = myList[0];

            bool b = swModel.Extension.SelectByID2("Size", "SKETCH", 0, 0, 0, false, 0, null, 0);

            if (b == false)
            {
                swModel.Insert3DSketch2(true);
                swModel.SetAddToDB(true);
                swModel.SetDisplayWhenAdded(false);

                SketchManager swSketchMgr = default(SketchManager);

                swSketchMgr = (SketchManager)swModel.SketchManager;
                // Draw points at each corner of bounding box
                swSketchPt[0] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[1], BoxFeatureDblArray[5]);
                swSketchPt[1] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[1], BoxFeatureDblArray[5]);
                swSketchPt[2] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[1], BoxFeatureDblArray[2]);
                swSketchPt[3] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[1], BoxFeatureDblArray[2]);
                swSketchPt[4] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[4], BoxFeatureDblArray[5]);
                swSketchPt[5] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[4], BoxFeatureDblArray[5]);
                swSketchPt[6] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[4], BoxFeatureDblArray[2]);
                swSketchPt[7] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[4], BoxFeatureDblArray[2]);
                // Now draw bounding box
                swSketchSeg[0]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z, swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z);
                swSketchSeg[1]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z, swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z);
                swSketchSeg[2]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z, swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z);
                swSketchSeg[3]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z, swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z);
                swSketchSeg[4]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z, swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z);
                swSketchSeg[5]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z, swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z);
                swSketchSeg[6]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z, swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z);
                swSketchSeg[7]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z, swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z);
                swSketchSeg[8]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z, swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z);
                swSketchSeg[9]  = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z, swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z);
                swSketchSeg[10] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z, swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z);
                swSketchSeg[11] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z, swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z);

                swModel.SetDisplayWhenAdded(true);
                swModel.SetAddToDB(false);

                //string actionSketchname = swModel.SketchManager.ActiveSketch.Name;

                swModel.Insert3DSketch2(true);

                swModel.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, true, false, "Size");
                swModel.ClearSelection2(true);

                swModel.Extension.SelectByID2("Size", "SKETCH", 0, 0, 0, false, 0, null, 0);

                swModel.BlankSketch();

                swModel.ClearSelection2(true);
            }

            BoxSize boxSize = new BoxSize();

            boxSize.Length = Math.Round(newboxSize.Length, 0);
            boxSize.Weigth = Math.Round(newboxSize.Weigth, 0);
            boxSize.Height = Math.Round(newboxSize.Height, 0);

            string proText = string.Join("x", boxSize.Length, boxSize.Weigth, boxSize.Height);

            return(proText);
        }
        public void Main()
        {
            //ADD THESE LINES OF CODE
            double holeRadius;
            double holeDepth;
            //Create an instance of the user form

            frmCutExtrude myForm = new frmCutExtrude();

            //Set the title for the form
            myForm.Text = "Size of Cut-Extrude in Millimeters";
            //Display the user form and retrieve radius and
            //depth values typed by the user; divide those values
            //by 1000 to change millimeters to meters
            myForm.ShowDialog();
            holeRadius = myForm.radius / 1000;
            holeDepth  = myForm.depth / 1000;
            //Dispose of the user form and remove it from
            //memory because it's no longer needed
            myForm.Dispose();


            ModelDoc2 swDoc = null;

            //bool boolstatus = false;
            //var COSMOSWORKSObj = null;
            swDoc = ((ModelDoc2)(swApp.ActiveDoc));
            //COSMOSWORKSObj COSMOSWORKSObj = null;
            //CWAddinCallBackObj CWAddinCallBackObj = null;
            //CWAddinCallBackObj = swApp.GetAddInObject("CosmosWorks.CosmosWorks");
            //COSMOSWORKSObj = CWAddinCallBackObj.COSMOSWORKS;
            ModelView myModelView = null;

            myModelView            = ((ModelView)(swDoc.ActiveView));
            myModelView.FrameState = ((int)(swWindowState_e.swWindowMaximized));
            //boolstatus = swDoc.Extension.SelectByRay(0.00053592862681739462, 0.2199999999999136, -0.0045118054006820785, -0.18724816575405859, -0.66456615869841951, -0.723387824845406, 0.0010862903128070283, 2, false, 0, 0);
            //ADD THESE LINES OF CODE
            //Get coordinates of selection point
            SelectionMgr swSelectionMgr = null;

            swSelectionMgr = (SelectionMgr)swDoc.SelectionManager;
            double[] SelectCoordinates;
            SelectCoordinates = (double[])swSelectionMgr.GetSelectionPoint2(1, -1);
            //If face is selected, then open a sketch;
            //otherwise, stop execution
            object SelectedObject = null;

            SelectedObject = (object)swSelectionMgr.GetSelectedObject6(1, 0);
            int objtype;

            objtype = (int)swSelectionMgr.GetSelectedObjectType3(1, -1);
            if (objtype == (int)swSelectType_e.swSelFACES)
            {
                swDoc.SketchManager.InsertSketch(true);
            }

            //swDoc.ClearSelection2(true);
            SketchSegment skSegment = null;

            skSegment = ((SketchSegment)(swDoc.SketchManager.CreateCircle(0, 0, 0, 0.010505, -0.007509, 0)));
            Feature myFeature = null;

            myFeature = ((Feature)(swDoc.FeatureManager.FeatureCut4(true, false, false, 0, 0, 0.02, 0.01, true, false, false, false, 0.26179938779914946, 0.017453292519943334, false, false, false, false, false, true, true, true, true, false, 0, 0, false, false)));
            swDoc.ISelectionManager.EnableContourSelection = false;
            //StudyManagerObj = null;
            //ActiveDocObj = null;
            //CWAddinCallBackObj = null;
            //COSMOSWORKSObj = null;


            //ADD THESE LINES OF CODE
            //Get IMathPoint to use when transforming
            //from model space to sketch space
            MathUtility swMathUtility = null;
            MathPoint   swMathPoint   = null;
            Sketch      swSketch      = null;
            double      dx;
            double      dy;
            double      dz;

            swMathUtility = (MathUtility)swApp.GetMathUtility();
            swMathPoint   = (MathPoint)swMathUtility.CreatePoint(SelectCoordinates);
            //Get reference to sketch
            swSketch = (Sketch)swDoc.SketchManager.ActiveSketch;
            //Translate sketch point into sketch space
            MathTransform swMathTransform = null;

            swMathTransform = (MathTransform)swSketch.ModelToSketchTransform;
            swMathPoint     = (MathPoint)swMathPoint.MultiplyTransform(swMathTransform);
            //Retrieve coordinates of the sketch point
            double[] darray;
            darray = (double[])swMathPoint.ArrayData;
            dx     = darray[0];
            dy     = darray[1];
            dz     = darray[2];
            //Use swDoc.SketchManager.CreateCircleByRadius instead of
            //swDoc.SketchManager.CreateCircle because
            //swDoc.SketchManager.CreateCircleByRadius sketches a
            //circle centered on a sketch point and lets you
            //specify a radius
            double        radius          = 0.015;
            SketchSegment swSketchSegment = null;

            swSketchSegment = (SketchSegment)swDoc.SketchManager.CreateCircleByRadius(dx, dy, dz, radius);
            //Create the cut extrude feature
            Feature swFeature = null;

            swFeature = (Feature)swDoc.FeatureManager.FeatureCut3(true, false, false, 0, 0, 0.025, 0.01, true, false, false, false, 0, 0, false, false, false, false, false, true, true, false, false, false, (int)swStartConditions_e.swStartSketchPlane, 0, false);
        }
Пример #32
0
        public RelationVO(SketchRelation swSkRel, String sketchName, ModelDoc2 swModel)
        {
            int           j;
            SketchPoint   swSkPt  = null;
            SketchSegment swSkSeg = null;

            typeName = Enum.GetName(typeof(swConstraintType_e), swSkRel.GetRelationType());

            type = swSkRel.GetRelationType();

            //Dimensions need to check if required
            DisplayDimension dispDim = (DisplayDimension)swSkRel.GetDisplayDimension();

            if (dispDim != null)
            {
                dimensionValue = dispDim.GetDimension().GetSystemValue2("");
            }

            int[]    vEntTypeArr = (int[])swSkRel.GetEntitiesType();
            object[] vEntArr     = (object[])swSkRel.GetEntities();

            object[] vDefEntArr = (object[])swSkRel.GetDefinitionEntities2();
            if ((vDefEntArr == null))
            {
            }

            if ((vEntTypeArr != null) & (vEntArr != null))
            {
                if (vEntTypeArr.GetUpperBound(0) == vEntArr.GetUpperBound(0))
                {
                    j = 0;

                    foreach (swSketchRelationEntityTypes_e vType in vEntTypeArr)
                    {
                        SketchRelationEntityVO entity = new SketchRelationEntityVO();
                        entity.typeName = "" + vType;

                        entity.type = (int)vType;

                        switch (vType)
                        {
                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Unknown:

                            break;

                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_SubSketch:

                            break;

                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Point:
                            swSkPt = (SketchPoint)vEntArr[j];

                            entity.name = swSkPt.X + "," + swSkPt.Y + "," + swSkPt.Z;

                            entity.sketchName = sketchName;

                            entity.id = swModel.Extension.GetPersistReference3(swSkPt);
                            //  bRet = swSkPt.Select4(false, swSelData);

                            break;

                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Line:
                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Arc:
                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Ellipse:
                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Parabola:
                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Spline:

                            swSkSeg = (SketchSegment)vEntArr[j];
                            Sketch sk = (Sketch)swSkSeg.GetSketch();
                            // sk.

                            entity.id         = swModel.Extension.GetPersistReference3(swSkSeg);
                            entity.name       = swSkSeg.GetName();
                            entity.sketchName = sketchName;

                            break;

                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Hatch:

                            break;

                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Text:

                            break;

                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Plane:

                            break;

                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Cylinder:

                            break;

                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Sphere:

                            break;

                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Surface:

                            break;

                        case swSketchRelationEntityTypes_e.swSketchRelationEntityType_Dimension:

                            break;

                        default:

                            break;
                        }

                        j = j + 1;

                        entities.Add(entity);
                    }
                }
            }
        }
Пример #33
0
 public Line(SketchSegment segments)
 {
     seg = (SketchLine)segments;
     ori = segments;
 }