public void modified(object sender, EventArgs e) { Extents3d extents3d = (Extents3d)_Entity.Bounds; Point3d newPosition = new Point3d( (extents3d.MaxPoint.X + extents3d.MinPoint.X) / 2, (extents3d.MaxPoint.Y + extents3d.MinPoint.Y) / 2, (extents3d.MaxPoint.Z + extents3d.MinPoint.Z) / 2); Database db = Application.DocumentManager.MdiActiveDocument.Database; Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = db.TransactionManager; if (tm.TopTransaction == null) { tm.StartTransaction(); } foreach (var v in _BindedRoadways) { RoadwayWrapper bdrw = (RoadwayWrapper)tm.GetObject(v.roadway.ObjectId, OpenMode.ForWrite, false); if (v.whichSide == -1) { bdrw.EndPoint = newPosition; } else if (v.whichSide == 1) { bdrw.StartPoint = newPosition; } } }
private void UpdataDimension() { RoadwayWrapper myRoadway = (RoadwayWrapper)Entity; AlignedDimension dim = (AlignedDimension)m_dims[0].Dimension; dim.XLine1Point = myRoadway.StartPoint; dim.XLine2Point = mEndPt; dim.DimLinePoint = myRoadway.StartPoint; }
public override void SetProperty(Entity ent) { this.SetBasicProperty(ent); RoadwayWrapper roadway = ent as RoadwayWrapper; this.Name = roadway.Name; StartPoint = new Position { X = roadway.StartPoint.X, Y = roadway.StartPoint.Y, Z = roadway.StartPoint.Z, }; EndPoint = new Position { X = roadway.EndPoint.X, Y = roadway.EndPoint.Y, Z = roadway.EndPoint.Z, }; }
static public void DoIt() { List <RoadwayWrapper> roadwayarray = new List <RoadwayWrapper>(); Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; //输入名字 string name = ""; PromptStringOptions opts2 = new PromptStringOptions("\nEnter Roadway name"); PromptResult res2 = ed.GetString(opts2); if (res2.Status == PromptStatus.Cancel) { return; } else { name = res2.StringResult; } //输入起点坐标 PromptPointOptions opts = new PromptPointOptions("\nEnter Roadway Start Point:"); PromptPointResult res = ed.GetPoint(opts); if (res.Status == PromptStatus.Cancel) { return; } Point3d tmpPoint = res.Value; while (true) { //create roadway RoadwayJig jig = new RoadwayJig(tmpPoint, tmpPoint); RoadwayWrapper CurrentRW = (RoadwayWrapper)jig.GetEntity(); jig.SetName(name); jig.setPromptCounter(0); PromptResult drag = ed.Drag(jig); if (drag.Status == PromptStatus.Cancel || drag.Status == PromptStatus.None) { return; } else if (drag.Status == PromptStatus.OK) { Database db = Application.DocumentManager.MdiActiveDocument.Database; Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = db.TransactionManager; PROJECT pro = new PROJECT(); using (Transaction myT = tm.StartTransaction()) { pro.AppendEntity(CurrentRW); RoadwayNodeWrapper sttNd; if (roadwayarray.Count > 0) { RoadwayWrapper PreviousRW = (RoadwayWrapper)myT.GetObject(roadwayarray[roadwayarray.Count - 1].ObjectId, OpenMode.ForRead, false); //Point3dCollection pc = new Point3dCollection(); // CurrentRW.IntersectWith(PreviousRW, Intersect.OnBothOperands, pc, IntPtr.Zero, IntPtr.Zero); // CurrentRW.StartNodeHandle = PreviousRW.EndNodeHandle; ObjectId tmpid = db.GetObjectId(false, PreviousRW.EndNodeHandle, 0); sttNd = (RoadwayNodeWrapper)myT.GetObject(tmpid, OpenMode.ForWrite, false); sttNd.appendRoadway(CurrentRW.Handle, 1); CurrentRW.StartNodeHandle = sttNd.Handle; } else { sttNd = new RoadwayNodeWrapper(); pro.AppendEntity(sttNd); sttNd.CreateSphere(15); sttNd.init(CurrentRW.Handle, 1); sttNd.Position = CurrentRW.StartPoint; CurrentRW.StartNodeHandle = sttNd.Handle; } RoadwayNodeWrapper endNd = new RoadwayNodeWrapper(); pro.AppendEntity(endNd); endNd.CreateSphere(15); endNd.init(CurrentRW.Handle, -1); endNd.Position = CurrentRW.EndPoint; CurrentRW.EndNodeHandle = endNd.Handle; roadwayarray.Add(CurrentRW); myT.Commit(); } tmpPoint = jig.GetEndPoint(); } } }