public void MyCommand() { if (!this.ShowDialog()) { return; } double num1 = 1.0; double num2 = 0.25; double num3 = this.m * (double)this.z; double da = (2.0 * num1 + (double)this.z) * this.m; double df = ((double)this.z - 2.0 * num1 - 2.0 * num2) * this.m; double db = num3 * Math.Cos(this.a * Math.PI / 180.0); Point3d point = this.GetPoint(); DateTime now1 = DateTime.Now; Circle circle1 = new Circle(point, Vector3d.get_ZAxis(), db / 2.0); Circle cir1 = new Circle(point, Vector3d.get_ZAxis(), da / 2.0); Circle circle2 = new Circle(point, Vector3d.get_ZAxis(), df / 2.0); Circle pitchCircle = new Circle(point, Vector3d.get_ZAxis(), num3 / 2.0); Point3dCollection point3dCollection = new Point3dCollection(); Polyline3d evolent1 = this.CreatEvolent(point, da, db, cir1); Polyline3d evolent2 = this.MirrorEvolent(evolent1, pitchCircle, point); Arc arc = this.CreatArc(point, evolent1, evolent2); Line line1 = new Line(point, ((Curve)evolent1).get_StartPoint()); Line line2 = new Line(point, ((Curve)evolent2).get_StartPoint()); DBObjectCollection objectCollection1 = new DBObjectCollection(); objectCollection1.Add((DBObject)evolent1); objectCollection1.Add((DBObject)evolent2); objectCollection1.Add((DBObject)line2); objectCollection1.Add((DBObject)line1); objectCollection1.Add((DBObject)arc); DBObjectCollection objectCollection2 = new DBObjectCollection(); Entity[] entityArray = this.ArrayPolar((Entity)(Region.CreateFromCurves(objectCollection1).get_Item(0) as Region), point, this.z, 2.0 * Math.PI); objectCollection1.Clear(); objectCollection1.Add((DBObject)circle2); Region region1 = Region.CreateFromCurves(objectCollection1).get_Item(0) as Region; foreach (Entity entity in entityArray) { Region region2 = entity as Region; if (DisposableWrapper.op_Inequality((DisposableWrapper)region2, (DisposableWrapper)null)) { region1.BooleanOperation((BooleanOperationType)0, region2); } } objectCollection1.Clear(); Circle circle3 = new Circle(point, Vector3d.get_ZAxis(), 0.15 * (df - 10.0)); objectCollection1.Add((DBObject)circle3); DBObjectCollection fromCurves = Region.CreateFromCurves(objectCollection1); region1.BooleanOperation((BooleanOperationType)2, fromCurves.get_Item(0) as Region); Solid3d solid3d = new Solid3d(); solid3d.Extrude(region1, this.h, 0.0); solid3d.BooleanOperation((BooleanOperationType)2, this.NewBox(point, this.h, df)); if (this.doDemo == "Y") { this.AddEntityToModelSpace((Entity)evolent1); this.AddEntityToModelSpace((Entity)evolent2); this.AddEntityToModelSpace((Entity)arc); this.AddEntityToModelSpace((Entity)line1); this.AddEntityToModelSpace((Entity)line2); this.AddEntityToModelSpace((Entity)(((RXObject)region1).Clone() as Region)); Thread.Sleep(this.delay * 5); } this.ZoomToEntity((Entity)solid3d); this.AddEntityToModelSpace((Entity)solid3d); DateTime now2 = DateTime.Now; this.ed.WriteMessage("\n耗时{0}。", new object[1] { (object)this.Elapsed(now1, now2) }); }