Exemplo n.º 1
0
 //创建货物停放平台
 #region Create_PlatForm
 public static void Create_PlatForm(RollerConveyor_Parameter RCP, Vector3 CargoSize, GameObject PlatForm)
 {
     float PlatFormHigh    = RCP.RCHigh - RCP.RollerRadius / 8; //平台的高度
     float PlatFormWidth_X = RCP.RCWidth;                       //X向宽度
     float PlatFormWidth_Z = CargoSize.z + CargoSize.z / 10;
     //GameObject obj1 = Resources.Load("Scene/RollerConveyor/Belt") as GameObject;
 }
Exemplo n.º 2
0
    //创建滚筒输送机边板部分
    #region Create_SideBoard
    public static void Create_SideBoard(RollerConveyor_Parameter RCP, GameObject SideBoard)
    {
        //创建滚筒输送机边板部分
        float      RCLength        = RCP.RCLength;                                                    //滚筒输送机长度
        float      RollerR         = RCP.RollerRadius;                                                //滚筒输送机半径
        float      RCWidth         = RCP.RCWidth;                                                     //滚筒输送机宽度
        float      BoardHigh       = 2.25f * RCP.RollerRadius;                                        //边板部分的高度为滚筒半径的2.25倍
        float      BoardWidth      = RCP.RollerRadius;                                                //单边板的宽度设为滚筒半径
        Vector3    SideBoard1_size = new Vector3(BoardWidth, BoardHigh, RCLength);                    //边板1的尺寸
        GameObject SB1             = Resources.Load("Scene/RollerConveyor/Sideboard1") as GameObject; //加载边板1的组件
        GameObject SideBoard1      = Instantiate(SB1); SideBoard1.transform.localScale = SideBoard1_size;

        Vector3    SideBoard2_size1 = new Vector3(BoardWidth, BoardWidth / 10, RCLength); //边板2组件1的尺寸
        Vector3    SideBoard2_size2 = new Vector3(BoardWidth / 10, BoardHigh, RCLength);  //边板2组件1的尺寸
        Vector3    SideBoard2_size3 = new Vector3(BoardWidth, BoardWidth / 10, RCLength); //边板3组件1的尺寸
        GameObject SideBoard2       = new GameObject();
        GameObject SideBoard2_1     = Instantiate(SB1); SideBoard2_1.transform.localScale = SideBoard2_size1;
        GameObject SideBoard2_2     = Instantiate(SB1); SideBoard2_2.transform.localScale = SideBoard2_size2;
        GameObject SideBoard2_3     = Instantiate(SB1); SideBoard2_3.transform.localScale = SideBoard2_size3;

        SideBoard2_1.transform.parent        = SideBoard2.transform;
        SideBoard2_1.transform.localPosition = new Vector3(-SideBoard2_size1.x / 2, -SideBoard2_size1.y / 2, SideBoard2_size1.z / 2);
        SideBoard2_2.transform.parent        = SideBoard2.transform;
        SideBoard2_2.transform.localPosition = new Vector3(-SideBoard2_size2.x / 2, -SideBoard2_size2.y / 2, SideBoard2_size2.z / 2);
        SideBoard2_3.transform.parent        = SideBoard2.transform;
        SideBoard2_3.transform.localPosition = new Vector3(-SideBoard2_size3.x / 2, -SideBoard2_size2.y + SideBoard2_size3.y / 2, SideBoard2_size3.z / 2);

        SideBoard1.transform.parent        = SideBoard.transform; SideBoard2.transform.parent = SideBoard.transform;
        SideBoard1.transform.localPosition = new Vector3(-RCWidth / 2 + SideBoard1_size.x / 2, -SideBoard1_size.y / 2, SideBoard1_size.z / 2);
        SideBoard2.transform.localPosition = new Vector3(RCWidth / 2, 0, 0);
        //GameObject.Find("ScriptsContainer").GetComponent<MyClass>().Create2(SideBoard);
    }
Exemplo n.º 3
0
    //创建皮带式输送机的皮带部分
    #region Create_BeltPart
    public static void Create_BeltPart(RollerConveyor_Parameter RCP, GameObject BeltPart)
    {
        //创建滚筒输送部分
        float RCLength     = RCP.RCLength;                        //滚筒输送机长度
        float RCWidth      = RCP.RCWidth;                         //滚筒输送机宽度
        float RollerR      = RCP.RollerRadius;                    //滚筒输送机半径
        float RollerLength = RCWidth - 0.002f;
        float BoardHigh    = 2 * RCP.RollerRadius;                //边板的高度设为滚筒输送机半径的2.25倍
        float interval     = 4 * RollerR / 3;                     //初始化滚筒间距离
        float rn           = RCLength / (2 * RollerR + interval); //浮点数不能做求余运算
        int   RollerNum    = (int)Math.Ceiling(rn);
        float thickness    = RollerR / 10;                        //皮带厚度

        interval = RCLength / RollerNum - 2 * RollerR;            //根据滚筒输送机长度调整后的滚筒间距

        GameObject Roller = Resources.Load("Scene/RollerConveyor/RollerX") as GameObject;

        for (int i = 0; i < RollerNum; i++)
        {
            GameObject clone = Instantiate(Roller); clone.name = "Roller" + (i + 1).ToString();
            clone.transform.localScale    = new Vector3(RollerLength, 2 * RollerR, 2 * RollerR);
            clone.transform.parent        = BeltPart.transform;
            clone.transform.localPosition = new Vector3(0, -BoardHigh / 2, interval / 2 + RollerR + i * (2 * RollerR + interval));
        }
        //增加皮带部分
        GameObject Belt = Resources.Load("Scene/RollerConveyor/Belt") as GameObject;
        GameObject Belt1 = Instantiate(Belt); float BeltLength = RCLength - interval - RollerR * 2;

        Belt1.transform.localScale = new Vector3(RollerLength - 2 * RollerR, thickness, BeltLength);
        GameObject Belt2 = Instantiate(Belt1);

        Belt1.transform.parent        = BeltPart.transform; Belt2.transform.parent = BeltPart.transform;
        Belt1.transform.localPosition = new Vector3(0, -BoardHigh / 2 + RollerR - thickness / 2, interval / 2 + RollerR + BeltLength / 2);
        Belt2.transform.localPosition = new Vector3(0, -BoardHigh / 2 - RollerR + thickness / 2, RCLength / 2);
    }
Exemplo n.º 4
0
    //创建滚筒输送机支撑部分
    #region Create_SupportFoot
    public static void Create_SupportFoot(RollerConveyor_Parameter RCP, GameObject SupportFoot)
    {
        //创建滚筒输送机的支撑架
        float   RCWith                 = RCP.RCWidth;                                              //输送机的宽度
        float   SupportHigh            = RCP.RCHigh - 2.25f * RCP.RollerRadius;                    //支撑架的高度=输送机高度-边板高度
        float   SupportWidth           = RCP.RollerRadius;                                         //支撑架的宽度=边板宽度
        Vector3 UprightSupport_size    = new Vector3(SupportWidth, SupportHigh, 2 * SupportWidth); //支撑架立柱的尺寸
        Vector3 HorizontalSupport_size = new Vector3(RCWith, SupportWidth, 2 * SupportWidth);      //支撑架水平支柱尺寸

        GameObject SF   = Resources.Load("Scene/RollerConveyor/SupportFoot") as GameObject;        //加载构件
        GameObject obj1 = Instantiate(SF); obj1.transform.localScale = UprightSupport_size;        //创建立柱
        GameObject obj2 = Instantiate(obj1);
        GameObject obj3 = Instantiate(SF); obj3.transform.localScale = HorizontalSupport_size;     //创建水平支柱
        GameObject obj4 = Instantiate(obj3);

        obj1.transform.parent        = SupportFoot.transform;
        obj1.transform.localPosition = new Vector3(RCWith / 2 - SupportWidth / 2, SupportHigh / 2, SupportWidth);
        obj2.transform.parent        = SupportFoot.transform;
        obj2.transform.localPosition = new Vector3(-RCWith / 2 + SupportWidth / 2, SupportHigh / 2, SupportWidth);
        obj3.transform.parent        = SupportFoot.transform;
        obj3.transform.localPosition = new Vector3(0, SupportHigh / 5 + SupportWidth / 2, SupportWidth);
        obj4.transform.parent        = SupportFoot.transform;
        obj4.transform.localPosition = new Vector3(0, 4 * SupportHigh / 5 - SupportWidth / 2, SupportWidth);
        //GameObject.Find("ScriptsContainer").GetComponent<MyClass>().Create2(SupportFoot);
    }
Exemplo n.º 5
0
    //场景关键点信息
    #region Create_SceneInfo
    public void Create_SceneInfo(ref ParametersList1 PL, out KeyPositionsData KPD)
    {
        RollerConveyor_Parameter RCP = PL.RCP;
        HighStoreShelf_Parameter HP  = PL.HP;
        MultiHighBay_Parameter   MHP = PL.MHP;
        KeyPositionsData         KP  = new KeyPositionsData();

        KP.HighBaysNum = MHP.Num;//高架库数目

        //Vector3[] LiftTransferPositions = new Vector3[]
        KP.HighValues      = new float[] { RCP.RCHigh, RCP.RCHigh - 0.1f };//两种输送线高度
        KP.ConveyorLengths = new float[2] {
            RCP.RCLength, HP.Size.x * 2 + MHP.HookupDistance + MHP.TunnelWidth - RCP.RCWidth
        };
        KP.EnterPosition = new Vector3((KP.ConveyorLengths[1] + RCP.RCWidth - HP.Size.x), RCP.RCHigh - 0.1f, -RCP.RCWidth / 2);//入口处坐标
        float[] ConveyorLinesValues = new float[(MHP.Num + 1) / 2];
        float[] PilerLinesValues    = new float[(MHP.Num + 1) / 2];

        for (int i = 0; i < (MHP.Num + 1) / 2; i++)
        {
            ConveyorLinesValues[i] = -(-RCP.RCWidth / 2 + (2 * i + 1) * HP.Size.x + i * MHP.TunnelWidth + i * MHP.HookupDistance);
            PilerLinesValues[i]    = -(MHP.TunnelWidth / 2 + i * (MHP.TunnelWidth + MHP.HookupDistance) + (2 * i + 1) * HP.Size.x);
        }
        KP.ConveyorLinesValues = ConveyorLinesValues; //每条入库输送线的X值
        //KP.ConveyorLinesLength = 3 * RCP.RCLength;//入库输送线的长度
        KP.ConveyorWidth    = RCP.RCWidth;            //输送线宽度
        KP.PilerLinesValues = PilerLinesValues;       //每条堆垛机线路的X值
        Vector3[] HighBaysPositions = new Vector3[MHP.Num];
        for (int i = 0; i < MHP.Num; i++)
        {
            float TempValue = HP.Size.x / 2 + i * HP.Size.x + ((i + 1) / 2) * MHP.TunnelWidth + (i / 2) * MHP.HookupDistance;
            HighBaysPositions[i] = new Vector3(-TempValue, 0, -(RCP.RCWidth + 2 * RCP.RCLength));
        }
        KP.HighBaysPositions = HighBaysPositions; //高架库的坐标
        KP.CargoSize         = PL.CargoSize;      //货物尺寸

        StorePositions StorePositions = new StorePositions();

        float[] StoreFloorPositions  = new float[HP.FloorsNum];
        float[] StoreColumnPositions = new float[HP.ColumnsNum];
        float   TempValue1           = 0;

        for (int i = 0; i < HP.FloorsNum; i++)
        {
            TempValue1            += HP.FloorsHigh[i];
            StoreFloorPositions[i] = TempValue1;
        }
        for (int j = 0; j < HP.ColumnsNum; j++)
        {
            StoreColumnPositions[j] = -(HP.ColumnWidth / 2 + (j + 1) * HP.ColumnWidth);
        }
        float[] StorePlacePosition = { HP.ColumnWidth / 4, -HP.ColumnWidth / 4 };
        StorePositions.StoreFloorPositions  = StoreFloorPositions;
        StorePositions.StoreColumnPositions = StoreColumnPositions;
        StorePositions.StorePlacePosition   = StorePlacePosition;
        KP.StorePositions = StorePositions;//高架库仓位坐标信息
        //货物入口坐标(相对于设备)
        KP.CargoEnterPosition = new Vector3(0, KP.HighValues[0], KP.ConveyorLengths[0]);
        KPD = KP;
    }
Exemplo n.º 6
0
    //创建滚筒输送机
    #region Create_RollerConveyor
    public static void Create_RollerConveyor(RollerConveyor_Parameter RCP, GameObject OBJ, RollerConveyorType type)
    {
        //type指的是滚筒输送机的类型
        //"Intact"完整型;"Origion"起点型;"Terminus"终点型;"Transition"过渡型
        float      BoardWidth = RCP.RollerRadius;
        GameObject RollerPart = new GameObject(); RollerPart.name = "RollerPart";//滚筒部分

        Create_RollerPart(RCP, RollerPart);
        GameObject SideBoard = new GameObject(); SideBoard.name = "SideBoard";//边板部分

        Create_SideBoard(RCP, SideBoard);
        GameObject SupportFoot = new GameObject(); SupportFoot.name = "SupportFoot";//支撑架

        Create_SupportFoot(RCP, SupportFoot);
        GameObject SupportFoot2 = Instantiate(SupportFoot); SupportFoot2.name = SupportFoot.name + 2.ToString();

        //创建不同类型的滚筒输送机
        switch (type)
        {
        case RollerConveyorType.Intact:
            RollerPart.transform.parent   = OBJ.transform; RollerPart.transform.localPosition = new Vector3(0, RCP.RCHigh, 0);
            SideBoard.transform.parent    = OBJ.transform; SideBoard.transform.localPosition = new Vector3(0, RCP.RCHigh, 0);
            SupportFoot.transform.parent  = OBJ.transform; SupportFoot.transform.localPosition = new Vector3(0, 0, 0);
            SupportFoot2.transform.parent = OBJ.transform; SupportFoot2.transform.localPosition = new Vector3(0, 0, RCP.RCLength - 2 * BoardWidth);
            OBJ.name = "IntactRollerConveyor";
            break;

        case RollerConveyorType.Origion:
            RollerPart.transform.parent  = OBJ.transform; RollerPart.transform.localPosition = new Vector3(0, RCP.RCHigh, 0);
            SideBoard.transform.parent   = OBJ.transform; SideBoard.transform.localPosition = new Vector3(0, RCP.RCHigh, 0);
            SupportFoot.transform.parent = OBJ.transform; SupportFoot.transform.localPosition = new Vector3(0, 0, 0);
            //SupportFoot2.transform.parent = OBJ.transform; SupportFoot2.transform.localPosition = new Vector3(0, 0, RCP.RCLength - BoardWidth);
            DestroyImmediate(SupportFoot2);
            OBJ.name = "OrigionRollerConveyor";
            break;

        case RollerConveyorType.Terminus:
            RollerPart.transform.parent  = OBJ.transform; RollerPart.transform.localPosition = new Vector3(0, RCP.RCHigh, 0);
            SideBoard.transform.parent   = OBJ.transform; SideBoard.transform.localPosition = new Vector3(0, RCP.RCHigh, 0);
            SupportFoot.transform.parent = OBJ.transform; SupportFoot.transform.localPosition = new Vector3(0, 0, -BoardWidth);
            //SupportFoot2.transform.parent = OBJ.transform; SupportFoot2.transform.localPosition = new Vector3(0, 0, RCP.RCLength - BoardWidth);
            DestroyImmediate(SupportFoot2);
            OBJ.name = "TerminusRollerConveyor";
            break;

        case RollerConveyorType.Transition:
            RollerPart.transform.parent   = OBJ.transform; RollerPart.transform.localPosition = new Vector3(0, RCP.RCHigh, 0);
            SideBoard.transform.parent    = OBJ.transform; SideBoard.transform.localPosition = new Vector3(0, RCP.RCHigh, 0);
            SupportFoot.transform.parent  = OBJ.transform; SupportFoot.transform.localPosition = new Vector3(0, 0, -BoardWidth);
            SupportFoot2.transform.parent = OBJ.transform; SupportFoot2.transform.localPosition = new Vector3(0, 0, RCP.RCLength - 2 * BoardWidth);
            OBJ.name = "TransitionRollerConveyor";
            break;
        }
        //GameObject.Find("ScriptsContainer").GetComponent<MyClass>().Create2(OBJ);
    }
Exemplo n.º 7
0
    //创建输送线
    #region Create_Conveyors
    public static void Create_Conveyors(Conveyor_Parameter CP, GameObject Conveyors)
    {
        RollerConveyor_Parameter RCP = CP.RCP; RCP.RCLength = CP.Length / CP.Num;

        switch (CP.Type)
        {
        case ConveyorType.RollerConveyor:
            if (CP.Num == 1)
            {
                GameObject OBJ1 = new GameObject(); Create_RollerConveyor(RCP, OBJ1, RollerConveyorType.Intact);    //完整型
                OBJ1.transform.parent = Conveyors.transform; OBJ1.transform.localPosition = new Vector3(0, 0, 0);
            }
            if (CP.Num == 2)
            {
                GameObject OBJ1 = new GameObject(); Create_RollerConveyor(RCP, OBJ1, RollerConveyorType.Origion);    //起点型
                OBJ1.transform.parent = Conveyors.transform; OBJ1.transform.localPosition = new Vector3(0, 0, 0);
                GameObject OBJ2 = new GameObject(); Create_RollerConveyor(RCP, OBJ2, RollerConveyorType.Transition); //终点型
                OBJ2.transform.parent = Conveyors.transform; OBJ2.transform.localPosition = new Vector3(0, 0, CP.Length / CP.Num);
            }
            if (CP.Num > 2)
            {
                GameObject OBJ1 = new GameObject(); Create_RollerConveyor(RCP, OBJ1, RollerConveyorType.Origion);    //起点型
                OBJ1.transform.parent = Conveyors.transform; OBJ1.transform.localPosition = new Vector3(0, 0, 0);
                GameObject OBJ2 = new GameObject(); Create_RollerConveyor(RCP, OBJ2, RollerConveyorType.Transition); //终点型
                OBJ2.transform.parent = Conveyors.transform; OBJ2.transform.localPosition = new Vector3(0, 0, CP.Length - RCP.RCLength);
                GameObject OBJ3 = new GameObject(); Create_RollerConveyor(RCP, OBJ3, RollerConveyorType.Terminus);
                for (int i = 0; i < CP.Num - 2; i++)
                {
                    GameObject clone = Instantiate(OBJ3); clone.name = OBJ3.name + (i + 1).ToString();
                    clone.transform.parent = Conveyors.transform; clone.transform.localPosition = new Vector3(0, 0, (i + 1) * RCP.RCLength);
                }
                DestroyImmediate(OBJ3);
            }
            else
            {
                Debug.Log("The Number of Conveyors is invalid!");
            }
            break;

        case ConveyorType.BeltConveyor:
            GameObject obj1 = new GameObject(); Create_BeltConveyor(RCP, obj1);
            for (int i = 0; i < CP.Num; i++)
            {
                GameObject clone = Instantiate(obj1); clone.name = obj1.name + (i + 1).ToString();
                clone.transform.parent        = Conveyors.transform.parent;
                clone.transform.localPosition = new Vector3(0, 0, i * RCP.RCLength);
            }
            break;
        }
    }
Exemplo n.º 8
0
    //创建皮带式输送机
    #region Create_BeltConveyor
    public static void Create_BeltConveyor(RollerConveyor_Parameter RCP, GameObject OBJ)
    {
        float      BoardWidth = RCP.RollerRadius;
        GameObject BeltPart   = new GameObject(); BeltPart.name = "BeltPart";//滚筒部分

        Create_BeltPart(RCP, BeltPart);
        GameObject SideBoard = new GameObject(); SideBoard.name = "SideBoard";//边板部分

        Create_SideBoard(RCP, SideBoard);
        GameObject SupportFoot = new GameObject(); SupportFoot.name = "SupportFoot";//支撑架

        Create_SupportFoot(RCP, SupportFoot);
        GameObject SupportFoot2 = Instantiate(SupportFoot); SupportFoot2.name = SupportFoot.name + 2.ToString();

        //构造皮带式输送机
        BeltPart.transform.parent     = OBJ.transform; BeltPart.transform.localPosition = new Vector3(0, RCP.RCHigh, 0);
        SideBoard.transform.parent    = OBJ.transform; SideBoard.transform.localPosition = new Vector3(0, RCP.RCHigh, 0);
        SupportFoot.transform.parent  = OBJ.transform; SupportFoot.transform.localPosition = new Vector3(0, 0, 0);
        SupportFoot2.transform.parent = OBJ.transform; SupportFoot2.transform.localPosition = new Vector3(0, 0, RCP.RCLength - 2 * BoardWidth);
    }
Exemplo n.º 9
0
    //单向输送机(垂直于高架库方向)
    #region Create_RollerConveyorGroup
    public void Create_RollerConveyorGroup(ParametersList1 PL, GameObject ConveyorGroup)
    {
        RollerConveyor_Parameter RCP = new RollerConveyor_Parameter();

        RCP.RCHigh       = PL.RCP.RCHigh - 0.1f;
        RCP.RCWidth      = PL.RCP.RCWidth;
        RCP.RCLength     = PL.MHP.HookupDistance + PL.MHP.TunnelWidth + 2 * PL.HP.Size.x - RCP.RCWidth;
        RCP.RollerRadius = PL.RCP.RollerRadius;

        GameObject         Conveyor = new GameObject();
        RollerConveyorType type     = RollerConveyorType.Intact;

        RollerConveyor.Create_RollerConveyor(RCP, Conveyor, type);
        Conveyor.name = "RollerConveyor";
        for (int i = 0; i < (PL.MHP.Num + 1) / 2 - 1; i++)
        {
            GameObject clone = Instantiate(Conveyor); clone.name = Conveyor.name + (i + 1).ToString();
            clone.transform.parent = ConveyorGroup.transform;
            float TempValue = -PL.HP.Size.x - i * (PL.HP.Size.x * 2 + PL.MHP.HookupDistance + PL.MHP.TunnelWidth);
            clone.transform.localPosition = new Vector3(TempValue, 0, 0);
            clone.transform.Rotate(0, -90, 0);
        }
        DestroyImmediate(Conveyor);
    }
Exemplo n.º 10
0
    //创建仓库场景
    #region Create_Scene
    public void Create_Scene(ParametersList1 PL, PositionsList POL, string Path)
    {
        HighStoreShelf_Parameter HP  = PL.HP;
        MultiHighBay_Parameter   MHP = PL.MHP;
        RollerConveyor_Parameter RCP = PL.RCP;
        float      TempValue1        = RCP.RCLength;
        float      TempValue2        = RCP.RCWidth;
        float      TempValue3        = TempValue2 - HP.Size.x;
        GameObject WarehouseScene    = new GameObject(); WarehouseScene.name = Name;//创建场景
        //存放货物
        GameObject Cargos = new GameObject();

        Cargos.name = "Cargos"; Cargos.transform.parent = WarehouseScene.transform;
        Cargos.transform.localPosition = new Vector3(0, 0, 0);
        //添加地面
        GameObject obj    = (GameObject)Resources.Load("Scene/Dimian");
        GameObject dimian = Instantiate(obj);
        float      Width  = HP.Size.z + 8 * RCP.RCLength;

        dimian.transform.localScale    = new Vector3(Width, 0.1f, Width);
        dimian.transform.parent        = WarehouseScene.transform;
        dimian.transform.localPosition = new Vector3(-(Width / 2 - RCP.RCLength * 4), -0.05f, -(Width / 2 - 2 * RCP.RCLength));
        //添加入口滚筒输送机
        GameObject               EnterRollerConveyor = new GameObject();
        RollerConveyorType       type = RollerConveyorType.Intact;
        RollerConveyor_Parameter RCP2 = new RollerConveyor_Parameter();

        RCP2          = PL.RCP; RCP2.RCHigh = RCP2.RCHigh - 0.1f;
        RCP2.RCLength = enterRollerLength;//长度自定义
        //RCP2.RCLength = PL.HP.Size.x * 2 + PL.MHP.HookupDistance + PL.MHP.TunnelWidth - RCP2.RCWidth;
        RollerConveyor.Create_RollerConveyor(RCP2, EnterRollerConveyor, type);
        EnterRollerConveyor.name             = "EnterRollerConveyor";
        EnterRollerConveyor.transform.parent = WarehouseScene.transform;
        EnterRollerConveyor.transform.Rotate(0, -90, 0);
        EnterRollerConveyor.transform.localPosition = new Vector3((RCP2.RCLength + TempValue3), 0, -TempValue2 / 2);
        //添加入口顶升移栽机
        LiftTransferParameter LTP = new LiftTransferParameter();

        LTP.High         = PL.RCP.RCHigh - 0.1f;
        LTP.Width        = PL.RCP.RCWidth;
        LTP.RollerRadius = PL.RCP.RollerRadius;
        LTP.GearDiameter = PL.RCP.RollerRadius * 2;
        GameObject enterLiftTransfer = new GameObject();

        LiftTransfer1.CreateLiftTransfer(enterLiftTransfer, ref LTP);
        enterLiftTransfer.name             = "EnterLiftTransfer";
        enterLiftTransfer.transform.parent = WarehouseScene.transform;
        float tempEnterX = RCP2.RCLength - (PL.HP.Size.x - LTP.Width) + LTP.Width / 2;//入口顶升的X坐标

        enterLiftTransfer.transform.localPosition = new Vector3(tempEnterX, 0, -TempValue2 / 2);
        //添加入口皮带输送机
        GameObject EnterBeltConveyors = new GameObject(); EnterBeltConveyors.name = "EnterBeltConveyors";

        Create_EnterBeltConveyors(PL, EnterBeltConveyors);
        EnterBeltConveyors.transform.parent        = WarehouseScene.transform;
        EnterBeltConveyors.transform.localPosition = new Vector3(tempEnterX, 0, 0);
        //添加顶升移载机设备
        GameObject LiftTransferGroup = new GameObject(); LiftTransferGroup.name = "LiftTransferGroup";

        Create_LiftTransferGroup(PL, LiftTransferGroup);
        LiftTransferGroup.transform.parent        = WarehouseScene.transform;
        LiftTransferGroup.transform.localPosition = new Vector3(0, 0, -TempValue2 / 2);
        //添加滚筒输送机(垂直于高架库方向)
        GameObject RollerConveyorGroup = new GameObject(); RollerConveyorGroup.name = "RollerConveyorGroup";

        Create_RollerConveyorGroup(PL, RollerConveyorGroup);
        RollerConveyorGroup.transform.parent        = WarehouseScene.transform;
        RollerConveyorGroup.transform.localPosition = new Vector3(0, 0, -TempValue2 / 2);
        //添加皮带输送机(平行于高架库方向)
        GameObject BeltConveyorGroup = new GameObject(); BeltConveyorGroup.name = "BeltConveyorGroup";

        Create_BeltConveyorGroup(PL, BeltConveyorGroup);
        BeltConveyorGroup.transform.parent        = WarehouseScene.transform;
        BeltConveyorGroup.transform.localPosition = new Vector3(0, 0, -TempValue2);
        //为场景添加高架库设备
        GameObject HighBays1 = new GameObject(); HighBays1.name = "HighBayGroup";

        HighBay2.Create_HighBays(HP, MHP, HighBays1);
        HighBays1.transform.parent        = WarehouseScene.transform;
        HighBays1.transform.localPosition = new Vector3(0, 0, -(3 * TempValue1 + TempValue2));
        //为场景添加堆垛机设备
        GameObject PilerGroup = new GameObject(); PilerGroup.name = "PilerGroup";

        Create_Pilers(PL, PilerGroup);
        PilerGroup.transform.parent        = WarehouseScene.transform;
        PilerGroup.transform.localPosition = new Vector3(0, 0, -(TempValue1 + TempValue2));
        //添加出口滚筒输送机
        GameObject ExitRollerConveyor    = new GameObject();
        RollerConveyor_Parameter exitRCP = PL.RCP;

        exitRCP.RCLength = exitRollerLength; exitRCP.RCHigh = PL.RCP.RCHigh - 0.1f;
        RollerConveyor.Create_RollerConveyor(exitRCP, ExitRollerConveyor, RollerConveyorType.Intact);
        ExitRollerConveyor.name             = "ExitRollerConveyor";
        ExitRollerConveyor.transform.parent = WarehouseScene.transform;
        int   j         = (PL.MHP.Num + 1) / 2 - 1;
        float tempExitX = -PL.HP.Size.x - j * (PL.HP.Size.x * 2 + PL.MHP.HookupDistance + PL.MHP.TunnelWidth);

        ExitRollerConveyor.transform.Rotate(0, -90, 0);
        ExitRollerConveyor.transform.localPosition = new Vector3(tempExitX, 0, -TempValue2 / 2);
        //添加出口顶升移栽机
        GameObject ExitLiftTransfer = new GameObject();

        ExitLiftTransfer.name = "ExitLiftTransfer";
        LiftTransfer1.CreateLiftTransfer(ExitLiftTransfer, ref LTP);
        ExitLiftTransfer.transform.parent = WarehouseScene.transform;
        tempExitX = tempExitX - exitRollerLength - LTP.Width / 2;
        ExitLiftTransfer.transform.localPosition = new Vector3(tempExitX, 0, -TempValue2 / 2);
        //添加出口皮带输送线
        GameObject ExitBeltConveyors = new GameObject();

        ExitBeltConveyors.name = "ExitBeltConveyors";
        Create_ExitBeltConveyors(PL, ExitBeltConveyors);
        ExitBeltConveyors.transform.parent        = WarehouseScene.transform;
        ExitBeltConveyors.transform.localPosition = new Vector3(tempExitX, 0, 0);
        //给场景添加Message
        WarehouseScene.AddComponent <ShowKeyPositionData>();
        ShowKeyPositionData ShowKeyData = WarehouseScene.GetComponent <ShowKeyPositionData>();
        KeyPositionsData    KPD         = new KeyPositionsData();

        //float[] HighValues = { 1.2f, 1.1f };
        //SI.HighValues = HighValues;
        Create_SceneInfo(ref PL, out KPD);
        ShowKeyData.KeyPositionsData = KPD;
        //Debug.Log(KPD.ConveyorLengths);
        //WarehouseScene.AddComponent<SceneData>();
        //SceneData SD = WarehouseScene.GetComponent<SceneData>();
        //Information sd = new Information(); sd.Name = "Name"; sd.Num = 2;
        ////WarehouseScene.GetComponent<SceneData>().
        //SD.IN = sd;
        GameObject Cargo = new GameObject(); Cargo.name = "Cargo";

        Cargo1.Create_Cargo(KPD.CargoSize, Cargo);
        //SD.IN.Num = 2; SD.IN.Name = "A";
        //输出场景
        MyClass.CreatePrefab(WarehouseScene, Path);
        MyClass.CreatePrefab(Cargo, path2 + Cargo.name);

        //根据参数预创建一个存储状态面板
        //GameObject StorageStateInterface = new GameObject();
        //StorageStateInterface.name = "StorageStateInterface";
        BinsPanel.Ajustment(MHP.Num, HP.FloorsNum, HP.ColumnsNum);
        BinsPanel.Ajustment2(MHP.Num, HP.FloorsNum, HP.ColumnsNum);
        //GameObject.Find("ScriptsContainer").GetComponent<MyClass>().CreatePrefab(StorageStateInterface, path2 +"Simulation/" +StorageStateInterface.name);
    }
Exemplo n.º 11
0
    //输出多线路运动数据
    #region Create_PositionsList
    public void Create_PositionsList(ref ParametersList1 PL, out PositionsList PositonsList)
    {
        HighStoreShelf_Parameter HP  = PL.HP;
        MultiHighBay_Parameter   MHP = PL.MHP;
        RollerConveyor_Parameter RCP = PL.RCP;
        float ConveryorsLength       = 2 * HP.ColumnWidth;

        //高架库位置信息
        //HighBayPositions[i,0]记录第i个高架库坐标的X值,[i,1]记录第i个高架库坐标的Y值,[i,2]记录第i个高架库坐标的Z值;
        float[,] HighBayPositions = new float[MHP.Num, 3];
        for (int i = 0; i < MHP.Num; i++)
        {
            HighBayPositions[i, 0] = -(HP.Size.x / 2 + i * HP.Size.x + ((i + 1) / 2) * MHP.TunnelWidth + (i / 2) * MHP.HookupDistance);
            HighBayPositions[i, 1] = 0; HighBayPositions[i, 2] = -PL.Distance - ConveryorsLength + HP.ColumnWidth;
        }
        //输送线的数据
        //ConveyorPositions[i,0]记录第i个高架库坐标的X值,[i,1]记录第i个高架库坐标的Y值,[i,2]记录第i个高架库坐标的Z值;
        //[i,4]记录输送线的长度,
        float[,] ConveyorPositions = new float[MHP.Num, 4];
        for (int i = 0; i < MHP.Num; i++)
        {
            ConveyorPositions[i, 1] = 0; ConveyorPositions[i, 2] = -PL.Distance;
            ConveyorPositions[i, 3] = 2 * HP.ColumnWidth;
            switch (i % 2)
            {
            case 0:
                ConveyorPositions[i, 0] = -((i + 1) * HP.Size.x + (i / 2) * MHP.TunnelWidth + (i / 2) * MHP.HookupDistance);
                ConveyorPositions[i, 0] = ConveyorPositions[i, 0] + RCP.RCWidth / 2;
                break;

            case 1:
                ConveyorPositions[i, 0] = -(i * HP.Size.x + ((i + 1) / 2) * MHP.TunnelWidth + (i / 2) * MHP.HookupDistance);
                ConveyorPositions[i, 0] = ConveyorPositions[i, 0] - RCP.RCWidth / 2;
                break;
            }
        }
        //堆垛机的坐标数据
        //PilerPositions[i,0]记录第i个高架库坐标的X值,[i,1]记录第i个高架库坐标的Y值,[i,2]记录第i个高架库坐标的Z值;
        float[,] PilerPositions = new float[(MHP.Num + 1) / 2, 3];
        for (int i = 0; i < (MHP.Num + 1) / 2; i++)
        {
            PilerPositions[i, 0] = -(MHP.TunnelWidth / 2 + i * (MHP.TunnelWidth + MHP.HookupDistance) + (2 * i + 1) * HP.Size.x);
            PilerPositions[i, 1] = 0; PilerPositions[i, 2] = -PL.Distance - ConveryorsLength + 2 * HP.ColumnWidth;
        }
        //高架库仓位数据
        float[,,,] StorageBinPositions = new float[HP.FloorsNum, HP.ColumnsNum, 2, 3];
        float temphigh = HP.FloorsHigh[0];

        for (int i = 0; i < HP.FloorsNum; i++)
        {
            for (int j = 0; j < HP.ColumnsNum; j++)
            {
                StorageBinPositions[i, j, 0, 0] = 0; StorageBinPositions[i, j, 0, 1] = temphigh;
                StorageBinPositions[i, j, 0, 2] = -(HP.ColumnWidth * (j + 1) + HP.ColumnWidth / 4);
                StorageBinPositions[i, j, 1, 0] = 0; StorageBinPositions[i, j, 1, 1] = temphigh;
                StorageBinPositions[i, j, 1, 2] = -(HP.ColumnWidth * (j + 1) + 3 * HP.ColumnWidth / 4);
            }
            temphigh = temphigh + HP.FloorsHigh[i + 1];
        }
        //
        PositionsList POL;

        POL.HighBayPositions    = HighBayPositions; POL.PilerPositons = PilerPositions; POL.ConveyorPositons = ConveyorPositions;
        POL.StorageBinPositions = StorageBinPositions;
        PositonsList            = POL;
    }