Пример #1
0
        private static void load_commit_test(PrjManager manager)
        {
            Prj_Sheet sheet  = manager.SheetCRUD.Load_Sheet(2316);
            Prj_Sheet backup = ObjectCopier.Clone(sheet);


            Cld_FCBlock block = sheet.New_Cld_FCBlock();

            block.AlgName  = "added";
            block.Sequence = 12;

            Cld_FCInput inpt = block.New_FCInput();

            inpt.Description = "added desc";
            inpt.PinName     = "for test";

            Cld_FCOutput output = block.New_FCOutput();

            output.PinName = "for test output";


            SheetDiffer diff = manager.SheetCRUD.CompareSheet(backup, sheet);

            manager.SheetCRUD.Commit_Sheet(diff);
        }
Пример #2
0
        public LogicPin(Cld_FCInput pin, LogicSymbol symbol)
        {
            this.Type = LogicObjectType.Pin;

            this.pinType  = LogicPinType.Input;
            this.pinName  = pin.PinName;
            this.pinValue = pin.InitialValue;
            // 必须先给pinValue赋值

            this.PointName = pin.PointName;
            this.Visible   = pin.Visible;
            this.point1    = this.point2 = new PointF(pin.Cld_FCBlock.X + pin.X, pin.Cld_FCBlock.Y + pin.Y);
            this.GenerateSubmitGraphicsByPin(symbol);
        }
Пример #3
0
        /// <summary>
        /// 生成一条连接两个Pin的线
        /// </summary>
        /// <param name="startPin">起始Pin</param>
        /// <param name="endPin">结束Pin</param>
        /// <returns>表示一条线的字符串</returns>
        public string GenerateSignalData(Cld_FCOutput startPin, Cld_FCInput endPin)
        {
            Cld_FCBlock startBlock      = startPin.Cld_FCBlock;
            Cld_FCBlock endBlock        = endPin.Cld_FCBlock;
            IList       startInputList  = startBlock.Cld_FCInput_List;
            IList       startOutputList = startBlock.Cld_FCOutput_List;
            IList       endInputList    = endBlock.Cld_FCInput_List;
            IList       endOutputList   = endBlock.Cld_FCOutput_List;
            PointF      startPoint      = new PointF(startBlock.X + startPin.X, startBlock.Y + startPin.Y);
            PointF      endPoint        = new PointF(endBlock.X + endPin.X, endBlock.Y + endPin.Y);

            StringBuilder signalDatails = new StringBuilder();

            const float spacing   = 8f;     // 相邻两个输入引脚的延伸长度差值
            const float pinLength = 16f;    // 引脚的最小延伸长度


            int startPinIndex;
            int endPinIndex;

            // 添加开始点
            signalDatails.Append(startPoint.X + "_" + startPoint.Y + "{"
                                 + startBlock.AlgName + "." + startPin.PinName + "},");

            if (startPoint.Y != endPoint.Y)
            {
                // 起止点的垂直坐标不在同一直线上,需要增加折点

                if (startPoint.Y < endPoint.Y)
                {
                    startPinIndex = startPin.PinIndex;
                    endPinIndex   = endPin.PinIndex;
                }
                else
                {
                    startPinIndex = startOutputList.Count - startPin.PinIndex - 1;
                    endPinIndex   = endInputList.Count - endPin.PinIndex - 1;
                }

                PointF point = new PointF();
                point.Y = startPoint.Y;
                float firstX = startPoint.X + pinLength + spacing * startPinIndex;  // 第一个折点的 X 坐标
                float lastX  = endPoint.X - pinLength - spacing * endPinIndex;      // 最后一个折点的 X 坐标

                if (firstX < lastX)
                {
                    point.X = lastX;
                }
                else
                {
                    if (startPoint.X < endPoint.X)
                    {
                        point.X = (endPoint.X + startPoint.X) / 2;
                    }
                    else
                    {
                        point.X = firstX;
                        signalDatails.Append(point.X + "_" + point.Y + ",");

                        point.Y = Math.Abs(endPoint.Y + startPoint.Y) / 2;
                        signalDatails.Append(point.X + "_" + point.Y + ",");

                        point.X = lastX;
                    }
                }

                signalDatails.Append(point.X + "_" + point.Y + "," + point.X + "_" + endPoint.Y + ",");
            }
            else if (startPoint.X > endPoint.X)
            {
                // 起止点垂直坐标相同,但起点比终点水平坐标值大

                float upHeight   = (float)(endPoint.Y - endBlock.Y);
                float downHeight = (float)(endBlock.Y + endBlock.Symbol.height - endPoint.Y);

                float FirstX;
                float lastX;
                float signalY;

                if (upHeight < downHeight)
                {
                    // 从Block上面折回
                    FirstX  = startPoint.X + pinLength + spacing * startPin.PinIndex;
                    signalY = (float)(endBlock.Y - pinLength - spacing * endPin.PinIndex);
                    lastX   = endPoint.X - pinLength - spacing * endPin.PinIndex;
                }
                else
                {
                    FirstX = startPoint.X + pinLength + spacing
                             * (startOutputList.Count - startPin.PinIndex - 1);
                    signalY = (float)(endBlock.Y + endBlock.Symbol.height + pinLength + spacing
                                      * (endInputList.Count - endPin.PinIndex - 1));
                    lastX = endPoint.X - pinLength - spacing
                            * (endInputList.Count - endPin.PinIndex - 1);
                }

                signalDatails.Append(FirstX + "_" + startPoint.Y + "," + FirstX + "_" + signalY + ","
                                     + lastX + "_" + signalY + "," + lastX + "_" + endPoint.Y + ",");
            }

            // 添加结束点
            signalDatails.Append(endPoint.X + "_" + endPoint.Y + "{"
                                 + endBlock.AlgName + "." + endPin.PinName + "};");

            return(signalDatails.ToString());
        }
Пример #4
0
        static void Main()
        {
            SessionManager sessionmanager = new SessionManager("hibernate_config.xml");
            ISession       session        = sessionmanager.GetSession();
            // 相关操作的接口
            PrjManager manager = new PrjManager(session);

            //add your code bellow

            TDK.Core.Logic.URdoLib.URdoManager man = new TDK.Core.Logic.URdoLib.URdoManager();
            StateManager sm = new StateManager();

            for (int i = 169; i <= 179; i++)
            {
                Prj_Sheet sheet = manager.SheetCRUD.Load_Sheet(i, sm);

                Cld_FCBlock weiyuanke = sheet.New_Cld_FCBlock();
                weiyuanke.FunctionName = "fortest";


                manager.Save(weiyuanke);
                Cld_FCInput input = weiyuanke.New_FCInput();



                Console.WriteLine(sheet.State);
                sheet.SheetName = "weiyuantafkjaljfl";
                Console.WriteLine(sheet.State);

                Cld_FCBlock b = sheet.Cld_FCBlock_List[0] as Cld_FCBlock;
                Console.WriteLine(b.State);


                sheet.Cld_FCBlock_List.RemoveAt(0);
                Console.WriteLine(b.State);
                sheet.Cld_FCBlock_List.Add(b);
                Console.WriteLine(b.State);

                Cld_FCBlock temp = sheet.New_Cld_FCBlock();
                Console.WriteLine(temp.State);
                sheet.Cld_FCBlock_List.Add(temp);
                Console.WriteLine(temp.State);
            }

            //GraphicsDocument.GenerateProjects(bll);


            // 产生xml文件的代码
            //Prj_Sheet sheet = bll.manager.SheetCRUD.Load_Sheet(170);
            //Generate_Sheet_Xml(sheet, bll);

            //释放相关资源
            //bll.Close();
            Console.WriteLine("\nPress Enter to Exit !");
            Console.ReadKey();


            //以下为GUI运行
            //Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);

            //Application.Run(new Form1());
        }