예제 #1
0
 /// <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;
 }
예제 #2
0
 /// <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;
 }
예제 #3
0
 /// <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;
 }
예제 #4
0
        /// <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);
        }
예제 #5
0
 /// <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;
 }
예제 #6
0
 /// <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;
 }
예제 #7
0
 /// <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;
 }
예제 #8
0
 /// <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;
         }
     }
 }
예제 #9
0
 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;
     }
 }
예제 #10
0
 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);
     }
 }
예제 #11
0
        /// <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;
        }