/// <summary> /// 将给定的Cld_Signal和当前的sheet关联起来 /// </summary> /// <param name="to_add"></param> public virtual void Add(Cld_Signal to_add) { this.Cld_Constant_List.Add(to_add); to_add.Prj_Sheet_ID = this.ID; to_add.Prj_Document_ID = this.Prj_Document_ID; to_add.Prj_Controller_ID = this.Prj_Controller_ID; }
/// <summary> /// 返回 此Sheet下面的一个新的Cld_Signal对象 /// </summary> /// <returns></returns> public virtual Cld_Signal New_Cld_Signal() { Cld_Signal result = new Cld_Signal(); result.Prj_Controller_ID = this.Prj_Controller_ID; result.Prj_Document_ID = this.Prj_Document_ID; result.Prj_Sheet_ID = this.ID; return result; }
/// <summary> /// 返回 此Sheet下面的一个新的Cld_Signal对象 /// </summary> /// <returns></returns> public virtual Cld_Signal New_Cld_Signal() { Cld_Signal result = new Cld_Signal(); result.Prj_Controller_ID = this.Prj_Controller_ID; result.Prj_Document_ID = this.Prj_Document_ID; result.Prj_Sheet_ID = this.ID; return(result); }
/// <summary> /// 将给定的Cld_Signal和当前的sheet关联起来 /// </summary> /// <param name="to_add"></param> public virtual void Add(Cld_Signal to_add) { this.Cld_Signal_List.Add(to_add); to_add.Prj_Sheet_ID = this.ID; //to_add.Prj_Sheet = this; to_add.Prj_Document_ID = this.Prj_Document_ID; //to_add.Prj_Document = this.Prj_Document; to_add.Prj_Controller_ID = this.Prj_Controller_ID; //to_add.Prj_Controller = this.Prj_Controller; }
/// <summary> /// 返回 此Sheet下面的一个新的Cld_Signal对象 /// </summary> /// <returns></returns> public virtual Cld_Signal New_Cld_Signal() { Cld_Signal result = new Cld_Signal(); result.Prj_Controller_ID = this.Prj_Controller_ID; result.Prj_Controller = this.Prj_Controller; result.Prj_Document_ID = this.Prj_Document_ID; result.Prj_Document = this.Prj_Document; result.Prj_Sheet_ID = this.ID; result.Prj_Sheet = this; this.Cld_Signal_List.Add(result); return result; }
/// <summary> /// 根据ID获得Cld_FCBlock /// </summary> /// <param name="condition">ID type:int</param> /// <returns></returns> public Cld_Signal GetCld_Signal_By_ID(int condition) { using (ITransaction transaction = session.BeginTransaction()){ try{ Cld_Signal result = this.session.Get <Cld_Signal>(condition); transaction.Commit(); return(result); }catch (Exception e) { transaction.Rollback(); throw e; } } }
public virtual bool Compare(Cld_Signal s) { if (this.ID != s.ID) { throw new Exception("id should be equal"); } if (this.Name != s.Name || this.SignalType != s.SignalType || this.EntityBelongTo != s.EntityBelongTo || this.Data != s.Data || this.Prj_Controller_ID != s.Prj_Controller_ID || this.Prj_Document_ID != s.Prj_Document_ID || this.Prj_Sheet_ID != s.Prj_Sheet_ID) { return false; } else { return true; } }
public virtual bool Compare(Cld_Signal s) { if (this.ID != s.ID) { throw new Exception("id should be equal"); } if (this.Name != s.Name || this.SignalType != s.SignalType || this.EntityBelongTo != s.EntityBelongTo || this.Data != s.Data || this.Prj_Controller_ID != s.Prj_Controller_ID || this.Prj_Document_ID != s.Prj_Document_ID || this.Prj_Sheet_ID != s.Prj_Sheet_ID) { return(false); } else { return(true); } }
/// <summary> /// 生成Block之间的连线关系,Signal的集合,并存储数据 /// </summary> /// <param name="sheet"></param> /// <returns></returns> public IDictionary<string, Cld_Signal> GenerateSignalLines(Prj_Sheet sheet) { // 测点名与起始引脚的对应关系 IDictionary<string, Cld_FCOutput> pointNameToStartPin = new Dictionary<string, Cld_FCOutput>(); // IDictionary<string, Cld_Signal> pointNameToSignal = new Dictionary<string, Cld_Signal>(); // 匹配PointName格式为"%-%-%-%"的项 Regex regPointName = new Regex(@"^(\d+)((-(\d+)){3})$"); foreach (Cld_FCBlock block in sheet.Cld_FCBlock_List) { foreach (Cld_FCOutput output in sheet.Cld_FCOutput_List) { // 将当前页面所有 Output 与点名的对应关系存储在 pointNameToStartPin 字典中 // 在该字典中,通过 PointName 就可以找到对应的 Output if (!pointNameToStartPin.ContainsKey(output.PointName)) { pointNameToStartPin.Add(output.PointName, output); } } } foreach (Cld_FCBlock block in sheet.Cld_FCBlock_List) { foreach (Cld_FCInput input in block.Cld_FCInput_List) { if (input.PointName == null || !regPointName.IsMatch(input.PointName) || !input.Visible || !pointNameToStartPin.ContainsKey(input.PointName)) { // 该管脚未连接,或不显示信号线,或连接的Pin不在当前Sheet中,继续扫描下一个 Input。 continue; } Cld_FCOutput startPin = pointNameToStartPin[input.PointName] as Cld_FCOutput; string signalData; if (startPin.Point != null || input.Point != null) { signalData = GenerateSignalData(startPin, input); } else { throw new Exception("管脚坐标未计算!"); } Cld_Signal signalTemp; if (pointNameToSignal.ContainsKey(input.PointName)) { signalTemp = pointNameToSignal[input.PointName]; signalTemp.Data += signalData; pointNameToSignal[input.PointName] = signalTemp; //manager.Update(signal_temp); } else { signalTemp = new Cld_Signal(); signalTemp.Prj_Controller = sheet.Prj_Controller; signalTemp.Prj_Document = sheet.Prj_Document; signalTemp.Prj_Sheet = sheet; signalTemp.Name = startPin.PointName; signalTemp.Data = signalData; signalTemp.SignalType = get_pin_dataType(startPin.Cld_FCBlock.FunctionName, startPin.PinName); pointNameToSignal.Add(input.PointName, signalTemp); //this.manager.Save(signal_temp); } } } //this.manager.Flush(); return pointNameToSignal; }