コード例 #1
0
        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;
                }
            }
        }
コード例 #2
0
        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;
        }
コード例 #3
0
ファイル: DBRoadway.cs プロジェクト: presscad/DrawTunnel
        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,
            };
        }
コード例 #4
0
        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();
                }
            }
        }