Esempio n. 1
0
        private static void AddVertexToCurrentWipeout(ObjectId wipeoutId)
        {
            var doc  = Application.DocumentManager.MdiActiveDocument;
            var loop = true;

            while (loop)
            {
                using (doc.LockDocument())
                {
                    using (var tr = doc.TransactionManager.StartTransaction())
                    {
                        var wipeout = tr.GetObject(wipeoutId, OpenMode.ForWrite) as Wipeout;
                        if (wipeout != null)
                        {
                            var points3D = wipeout.GetVertices();

                            var polyline = new Polyline();
                            for (var i = 0; i < points3D.Count; i++)
                            {
                                polyline.AddVertexAt(i, new Point2d(points3D[i].X, points3D[i].Y), 0.0, 0.0, 0.0);
                            }

                            var jig    = new AddVertexJig();
                            var result = jig.StartJig(polyline);
                            if (result.Status != PromptStatus.OK)
                            {
                                loop = false;
                            }
                            else
                            {
                                polyline.AddVertexAt(jig.Vertex() + 1, jig.PickedPoint(), 0.0, 0.0, 0.0);
                                var new2DPoints = new Point2dCollection();
                                for (var i = 0; i < polyline.NumberOfVertices; i++)
                                {
                                    new2DPoints.Add(polyline.GetPoint2dAt(i));
                                }

                                wipeout.SetFrom(new2DPoints, polyline.Normal);
                            }
                        }

                        tr.Commit();
                    }
                }
            }
        }
Esempio n. 2
0
        public static void StartFunction()
        {
#if !DEBUG
            Statistic.SendCommandStarting(ModPlusConnector.Instance);
#endif
            try
            {
                var doc = Application.DocumentManager.MdiActiveDocument;
                var db  = doc.Database;
                var ed  = doc.Editor;

                var peo = new PromptEntityOptions($"\n{Language.GetItem(PlinesEditFunction.LangItem, "k13")}:")
                {
                    AllowNone = false,
                    AllowObjectOnLockedLayer = true
                };
                peo.SetRejectMessage($"\n{Language.GetItem(PlinesEditFunction.LangItem, "wrong")}");
                peo.AddAllowedClass(typeof(Polyline), true);

                var per = ed.GetEntity(peo);
                if (per.Status != PromptStatus.OK)
                {
                    return;
                }

                var polylineId = per.ObjectId;
                var loop       = true;

                using (doc.LockDocument())
                {
                    while (loop)
                    {
                        using (var tr = db.TransactionManager.StartTransaction())
                        {
                            var dbObj = tr.GetObject(polylineId, OpenMode.ForWrite);

                            if (dbObj is Polyline polyline)
                            {
                                var jig       = new AddVertexJig();
                                var jigResult = jig.StartJig(polyline);
                                if (jigResult.Status != PromptStatus.OK)
                                {
                                    loop = false;
                                }
                                else
                                {
                                    if (!polyline.IsWriteEnabled)
                                    {
                                        polyline.UpgradeOpen();
                                    }

                                    polyline.AddVertexAt(jig.Vertex() + 1, jig.PickedPoint(), 0.0, 0.0, 0.0);
                                }
                            }

                            tr.Commit();
                        }
                    }
                }
            }
            catch (System.Exception exception)
            {
                ExceptionBox.Show(exception);
            }
        }