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); }
public Spline(SketchSegment segments) { seg = (SketchSpline)segments; ori = segments; sPoints = new List <int>(); len = 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; } } } }
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; }
public loopSeg(SketchSegment iniSeg) { seg = iniSeg; type = seg.GetType(); index = -1; start = -1; end = -1; }
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); }
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); }
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); }
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); }
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);//退出编辑草图模式 }
//-------------------------------------------------------------------------------------------------- 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); }
/// <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 ); }
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); }
//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); }
//-------------------------------------------------------------------------------------------------- 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); }
//-------------------------------------------------------------------------------------------------- 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."); }
//-------------------------------------------------------------------------------------------------- public SketchEditorSegmentElement(SketchEditorTool sketchEditorTool, int segmentIndex, SketchSegment segment, Trsf transform, Pln plane) : base(sketchEditorTool, transform, plane) { Segment = segment; SegmentIndex = segmentIndex; }
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; }
public Parabola(SketchSegment segments) { seg = (SketchParabola)segments; ori = segments; }
//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 }
public Line(PointD start, PointD end, SketchSegment sketch) : this(start, end) { this.sketch = sketch; }
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 }); } }
public static void Next(IEnumSketchSegmentsObject IEnumSketchSegmentsinstance, Int32 Celt, SketchSegment&Object Rgelt, Int32& PceltFetched)
// 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; }
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);//退出编辑草图模式 }
public Ellipse(SketchSegment segments) { seg = (SketchEllipse)segments; ori = segments; }
/// <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); }
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); } } } }
public Line(SketchSegment segments) { seg = (SketchLine)segments; ori = segments; }