Exemplo n.º 1
0
        void AddSelectedObject(ProcessOptions processOptions)
        {
            List <ProcessObject> addList = new List <ProcessObject>();

            using (Transaction acTrans = TransactionManager.StartTransaction())
            {
                PromptSelectionResult sel = Editor.SelectPrevious(); //SelectImplied(); //
                if (sel.Status == PromptStatus.OK)
                {
                    foreach (ObjectId objId in sel.Value.GetObjectIds())
                    {
                        if (!ObjectList.Exists(p => p.ProcessCurve.ObjectId == objId))
                        {
                            DBObject obj = acTrans.GetObject(objId, OpenMode.ForRead);
                            if ((((Entity)obj).Layer != "Обработка") && (((obj is Line) || (obj is Arc) || (obj is Polyline))))
                            {
                                obj.Modified += new EventHandler(ProcessCurveModifiedEventHandler);
                                obj.Erased   += new ObjectErasedEventHandler(ProcessCurveErasedEventHandler);
                                ProcessObject processObject = null;
                                if (obj is Line)
                                {
                                    processObject = new ProcessObjectLine(obj as Curve, processOptions);
                                }
                                if (obj is Arc)
                                {
                                    processObject = new ProcessObjectArc(obj as Curve, processOptions);
                                }
                                if (obj is Polyline)
                                {
                                    processObject = new ProcessObjectPolyline(obj as Curve, processOptions);
                                }
                                ObjectList.Add(processObject);
                                addList.Add(processObject);
                                if (processObject.ConnectObject[VertexType.Start.Index()] == null)
                                {
                                    SetConnect(processObject, VertexType.Start);
                                }
                                if (processObject.ConnectObject[VertexType.End.Index()] == null)
                                {
                                    SetConnect(processObject, VertexType.End);
                                }
                            }
                        }
                    }
                }
                else
                {
                    Editor.WriteMessage("Объекты для добавления не найдены");
                }
            }
            if (addList.Count > 0)
            {
                do
                {
                    var findObj = addList.Find(p => p.Side != SideType.None);
                    if (findObj != null)
                    {
                        StartCalcToolpath(findObj);
                    }
                    else
                    {
                        SetProcessSide(addList[0]);
                    }
                }while (addList.RemoveAll(p => p.ToolpathCurve != null || p.ProcessActions != null) > 0 && addList.Count > 0);
            }
        }