예제 #1
0
        /// <summary>
        /// 复制符号数据
        /// </summary>
        /// <param name="g3eObject">G3E系列ID</param>
        /// <param name="objectId">CAD实体对象ID</param>
        /// <param name="objectType">对象类型,true为设备,false为标注</param>
        /// <param name="isLabel">是否是标注,true为标注,反之</param>
        /// <returns></returns>
        private CopySymbolObject GetBrotherDBEntity(G3EObject g3eObject, ObjectId objectId, bool objectType, bool isLabel)
        {
            var cso          = new CopySymbolObject();
            var copyDBEntity = new HashSet <DBEntityObject>();

            try
            {
                var entry = SimpleDBSymbolsConfig.Instance.DBSymbol.SingleOrDefault(o => o.G3E_FNO == g3eObject.G3E_FNO);
                if (entry != null)
                {
                    if (!string.IsNullOrEmpty(entry.SymbolPtTable))
                    {
                        //坐标表数据
                        var ptSymbolValue = PublicMethod.Instance.GetDBSymbolFinder(objectId) as ElectronSymbol;
                        if (ptSymbolValue != null)
                        {
                            cso.pointDBEntity = ptSymbolValue;
                            //保存电杆数据
                            if (ptSymbolValue.G3E_FNO == 201)
                            {
                                if (!dgList.Contains(ptSymbolValue.G3E_FID))
                                {
                                    dgList.Add(ptSymbolValue.G3E_FID);
                                }
                            }
                            //标注的LB数据
                            if (isLabel)
                            {
                                copyDBEntity = GetLabelDBEntityObjects(ptSymbolValue.GetType().Name, g3eObject, copyDBEntity);
                            }

                            //杂项标注
                            if (g3eObject.G3E_FNO == 250)
                            {
                                copyDBEntity = GetZxbzDBEntity(g3eObject.G3E_FID, copyDBEntity);
                            }
                        }
                        //属性数据
                        if (objectType)
                        {
                            copyDBEntity = GetDBEntityObjects(g3eObject, entry, copyDBEntity);
                        }
                        cso.g3eObject  = g3eObject;
                        cso.objectID   = objectId;
                        cso.hsDBEntity = copyDBEntity;
                    }
                }
            }
            catch (NotExistException ex)
            {
                LogManager.Instance.Error(ex);
            }
            catch (Exception ex)
            {
                LogManager.Instance.Error(ex);
            }
            return(cso);
        }
예제 #2
0
        /// <summary>
        /// 添加坐标表数据
        /// </summary>
        /// <param name="newG3e_id"></param>
        /// <param name="newG3e_fid"></param>
        /// <param name="objectId"></param>
        /// <param name="cso"></param>
        /// <returns></returns>
        private ElectronSymbol InsertElectronSymbol(long newG3e_id, long newG3e_fid, ObjectId objectId,
                                                    CopySymbolObject cso)
        {
            ElectronSymbol newObject_pt = null;

            if (cso.pointDBEntity != null)
            {
                newObject_pt = cso.pointDBEntity.Clone() as ElectronSymbol;
                newObject_pt.ClearSiblings();
                newObject_pt.G3E_ID       = newG3e_id;
                newObject_pt.G3E_FID      = newG3e_fid;
                newObject_pt.EntityState  = EntityState.Insert;
                newObject_pt.EntityState2 = EntityState2.Copy;
                newObject_pt.SetValue("LTT_ID", (decimal)MapConfig.Instance.LTTID);
                newObject_pt = ConvertGeometry.Instance.UpdateG3E_GEOMETRY(newObject_pt, objectId);
            }
            return(newObject_pt);
        }
예제 #3
0
        /// <summary>
        /// 添加属性表数据
        /// </summary>
        /// <param name="cso"></param>
        /// <param name="es"></param>
        /// <returns></returns>
        private ElectronSymbol InsertElectronBase(CopySymbolObject cso, ElectronSymbol es)
        {
            var flag           = false;
            var otherIdMapping = new Dictionary <long, ExpandsData>();

            foreach (var dbEntity in cso.hsDBEntity)
            {
                var newObject = dbEntity.dbEntity as ElectronBase;
                if (dbEntity.className.Contains("Contain"))
                {
                    //如果电杆存在,则根据电杆的FID去导线的包含关系表去查询,
                    //根据导线的包含关系表中的G3E_OWNERFID是否等于电杆的FID,
                    //反之只有导线复制的话,则取导线的任意一条对应的包含关系清空G3E_OWNERFID值即可。
                    if (es.G3E_FNO != 141)
                    {
                        SetContainTable(newObject, es.G3E_FID, false);
                    }
                    else
                    {
                        var bl = HasDg(cso.hsDBEntity);
                        if (bl)
                        {
                            //判断当前数据是否有被电杆包含
                            if (HasDg(dbEntity.dbEntity))
                            {
                                SetContainTable(newObject, es.G3E_FID, false);
                            }
                        }
                        else
                        {
                            //导线有被电杆包含,但是当前没有拷贝电杆,所以只取其中任意一条包含数据,清空G3E_OWNERFID值即可。
                            if (!flag)
                            {
                                SetContainTable(newObject, es.G3E_FID, true);
                                flag = true;
                            }
                        }
                    }
                }
                else if (dbEntity.className.Equals("Gg_pd_sdkx_ac"))
                {
                    var g3d_id = CYZCommonFunc.getid();
                    var sdkxac = newObject as Gg_pd_sdkx_ac;
                    sdkxac.G3E_ID      = g3d_id;
                    sdkxac.G3E_FID     = es.G3E_FID;
                    sdkxac.EntityState = EntityState.Insert;
                    sdkxac.SetValue("LTT_ID", (decimal)MapConfig.Instance.LTTID);
                    DBManager.Instance.Insert(sdkxac);
                }
                else
                {
                    //台架和开关柜
                    if (newObject.G3E_FNO == 198 || newObject.G3E_FNO == 199)
                    {
                        otherIdMapping = CreateG3EFID(newObject.G3E_FID, es.G3E_ID, otherIdMapping);
                        AddKggDBEntity(es.G3E_FID, newObject, otherIdMapping);
                    }
                    else
                    {
                        InsertBrotherTable(dbEntity.className, newObject, es);
                    }
                }
            }
            return(es);
        }