Пример #1
0
        /// <summary>
        /// 加载点线面设备
        /// </summary>
        /// <param name="symbol"></param>
        /// <param name="xmlDBManager"> </param>
        private void LoadIncrementSymbol(DBSymbolEntry symbol, XmlDBManager xmlDBManager)
        {
            try
            {
                if (!string.IsNullOrEmpty(symbol.SymbolPtTable))
                {
                    var type = TypeCache.Instance.GetTypeFromCache(typeof(DBEntity), symbol.SymbolPtTable.Trim());
                    if (xmlDBManager.Has(type))
                    {
                        //获取坐标数据
                        var pts = xmlDBManager.GetEntities(type).Cast <ElectronSymbol>();
                        //颜色转换
                        var color = CADColor.FromColor(Color.FromArgb(int.Parse(symbol.OtherProperty.SymbolColor)));

                        //加载图形
                        AddElectronSymbol(symbol.OtherProperty.LayerName.Trim(), pts, color, symbol.OtherProperty.LineType, symbol.OtherProperty.LineWidth);
                    }
                }
            }
            catch (Exception ex)
            {
                if (!ex.Message.Contains("给定关键字不在字典中"))
                {
                    LogManager.Instance.Error("加载设备错误!" + ex);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 获取标注样式
        /// </summary>
        /// <param name="g3e_UserName"></param>
        /// <param name="e"></param>
        private static void GetG3e_textstyle(string g3e_UserName, LabelEventArgs e)
        {
            const double increment = 0.05;

            try
            {
                var textstyle = CDDBManager.Instance.GetEntity <G3e_textstyle>(o => o.G3E_USERNAME.ToUpper() == g3e_UserName.ToUpper());
                if (textstyle != null)
                {
                    if (textstyle.G3E_COLOR != null)
                    {
                        e.color = CADColor.FromColor(Color.FromArgb((int)textstyle.G3E_COLOR));
                    }
                    if (textstyle.G3E_SIZE != null)
                    {
                        e.lbHeight = (double)textstyle.G3E_SIZE + increment;
                    }
                }
                else
                {
                    e.lbHeight = 0.2 + increment;
                    e.color    = CADColor.FromRgb(0, 0, 0);
                    LogManager.Instance.Error(string.Format("获取样式失败!{0}", g3e_UserName));
                }
            }
            catch
            {
                e.lbHeight = 0.2 + increment;
                e.color    = CADColor.FromRgb(0, 0, 0);
                LogManager.Instance.Error(string.Format("获取样式失败!{0}", g3e_UserName));
            }
        }
Пример #3
0
        public void DrawPolylines(List <Point3D> Objects, bool ShouldFlush, Color color)
        {
            if (SyncControl.InvokeRequired)
            {
                SyncControl.Invoke(new DrawPolylinesDelegate(DrawPolylines), new object[] { Objects, ShouldFlush, color });
            }
            else
            {
                Document doc = AcadApp.DocumentManager.MdiActiveDocument;
                using (DocumentLock docLock = doc.LockDocument())
                {
                    Database currentDb = doc.Database;
                    using (Transaction trans = currentDb.TransactionManager.StartTransaction())
                    {
                        // Deleting the previous drawn objects
                        if (ShouldFlush)
                        {
                            FlushPolylinesQueue();
                        }

                        // Open the Block table for read
                        BlockTable blockTable;
                        blockTable = trans.GetObject(currentDb.BlockTableId, OpenMode.ForRead) as BlockTable;
                        // Open the Block table record Model space for write
                        BlockTableRecord blockTblRec =
                            trans.GetObject(blockTable[BlockTableRecord.ModelSpace],
                                            OpenMode.ForWrite) as BlockTableRecord;

                        Point3dCollection plCollection = new Point3dCollection();
                        foreach (Point3D p in Objects)
                        {
                            plCollection.Add(new Point3d(p.X, p.Y, p.Z));
                        }
                        Polyline3d pl = new Polyline3d(Poly3dType.SimplePoly, plCollection, false);
                        pl.Color = AcadColor.FromColor(color);

                        blockTblRec.AppendEntity(pl);
                        trans.AddNewlyCreatedDBObject(pl, true);
                        trans.Commit();

                        // Updates the screen without flickering of view
                        AcadApp.UpdateScreen(); // or doc.Editor.Regen();
                    }
                }
            }
        }
Пример #4
0
        /// <summary>
        /// Получить стиль элемента обработки для действия
        /// </summary>
        /// <param name="trans"></param>
        /// <param name="processAction">Действие</param>
        /// <returns></returns>
        private static ObjectId GetProcessLayer(Transaction trans, ActionType processAction)
        {
            ObjectId   layerId;
            string     layerName = processAction.ToString();
            LayerTable layerTbl  = trans.GetObject(Database.LayerTableId, OpenMode.ForRead) as LayerTable;

            if (layerTbl.Has(layerName)) // Проверяем нет ли еще слоя с таким именем в чертеже
            {
                layerId = layerTbl[layerName];
            }
            else // создание нового слоя
            {
                layerTbl.UpgradeOpen();
                LayerTableRecord layer = new LayerTableRecord();
                layer.Name = layerName;
                switch (processAction)
                {
                case ActionType.Move:
                case ActionType.InitialMove:
                    layer.Color = Color.FromColor(System.Drawing.Color.Crimson);
                    break;

                case ActionType.Cutting:
                case ActionType.Penetration:
                    layer.Color = Color.FromColor(System.Drawing.Color.Green);
                    break;

                case ActionType.Direction:
                    layer.Color = Color.FromColor(System.Drawing.Color.SpringGreen);
                    break;

                case ActionType.EngageMove:
                case ActionType.AapproachMove:
                    layer.Color = Color.FromColor(System.Drawing.Color.Blue);
                    break;

                case ActionType.RetractMove:
                case ActionType.DepartureMove:
                    layer.Color = Color.FromColor(System.Drawing.Color.White);
                    break;
                }

                LinetypeTable lineTypeTbl = ((LinetypeTable)(trans.GetObject(Database.LinetypeTableId, OpenMode.ForWrite)));
                ObjectId      lineTypeID;
                string        ltypeName = "Continuous";
                if (lineTypeTbl.Has(ltypeName))
                {
                    lineTypeID = lineTypeTbl[ltypeName];
                }
                else // создания стиля линий
                {
                    LinetypeTableRecord lineType = new LinetypeTableRecord();
                    lineType.Name = ltypeName;
                    lineTypeTbl.Add(lineType);
                    trans.AddNewlyCreatedDBObject(lineType, true);
                    lineTypeID = lineType.ObjectId;
                }
                layer.LinetypeObjectId = lineTypeID;
                layer.IsPlottable      = true;
                layerId = layerTbl.Add(layer);
                trans.AddNewlyCreatedDBObject(layer, true);
            }
            return(layerId);
        }