/// <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); }
/// <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); }
/// <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); }