예제 #1
0
    private void OnPartClick(MachinePart part)
    {
        if (modelInstance != null)
        {
            Destroy(modelInstance);
        }

        string modelUrl = part.ModelUrls[CurrentType];

        modelInstance = Instantiate(Resources.Load <GameObject>(modelUrl));
        modelInstance.transform.SetParent(modelContainer);
        modelInstance.transform.localPosition = Vector3.zero;
        modelInstance.transform.localScale    = Vector3.one;

        UpdateReplaceContent(part);

        foreach (var p in partButtons)
        {
            if (p.ThePart != part)
            {
                p.IsSelected = false;
            }
            else
            {
                p.IsSelected = true;
            }
        }
    }
        public bool DeleteMachinePart(int machinePartId)
        {
            MachinePart machinePart = GetMachinePart(machinePartId);

            dataContext.MachineParts.DeleteOnSubmit(machinePart);
            dataContext.SubmitChanges();
            return(dataContext.ChangeConflicts != null && dataContext.ChangeConflicts.Count == 0);
        }
        public async Task <MachinePart> UpdateMachinePartAsync(MachinePart machinePart)
        {
            var machinePartEntity = Mapper.Map <MachinePartEntity>(machinePart);

            machinePartEntity = await _machinePartRepository.UpdateAsync(machinePartEntity);

            machinePart = Mapper.Map <MachinePart>(machinePartEntity);

            return(machinePart);
        }
        public bool AddNewMachinePart(int machineId, string partSku)
        {
            Part    part        = GetPart(partSku);
            Machine machine     = GetMachine(machineId);
            var     machinePart = new MachinePart
            {
                Machine = machine,
                Part    = part
            };

            dataContext.MachineParts.InsertOnSubmit(machinePart);
            dataContext.SubmitChanges();
            return(dataContext.ChangeConflicts != null && dataContext.ChangeConflicts.Count == 0);
        }
예제 #5
0
    private void UpdateLublicateContent(MachinePart part)
    {
        List <SubPart> lublicatePart = part.SubParts.Where((p) => { return(p.CycleType == CycleType.Luburicate); }).ToList();

        for (int i = 0; i < lublicatePartView.Count; i++)
        {
            SubPartViewControl ctrl = lublicatePartView[i];

            if (i < lublicatePart.Count)
            {
                ctrl.ThePart = lublicatePart[i];
                ctrl.gameObject.SetActive(true);
            }
        }

        for (int i = lublicatePart.Count; i < lublicatePartView.Count; i++)
        {
            SubPartViewControl ctrl = lublicatePartView[i];
            ctrl.gameObject.SetActive(false);
        }
    }
예제 #6
0
    private void UpdateReplaceContent(MachinePart part)
    {
        List <SubPart> replacePart = part.SubParts.Where((p) => {
            return(p.CycleType == CycleType.Replace &&
                   p.PartType == CurrentType);
        }).ToList();

        Dictionary <string, int> unique = new Dictionary <string, int>();

        foreach (var p in replacePart)
        {
            if (!unique.Keys.Contains(p.SubPartName))
            {
                unique.Add(p.SubPartName, 1);
            }
            else
            {
                unique[p.SubPartName] += 1;
            }
        }

        for (int i = 0; i < replacePartView.Count; i++)
        {
            SubPartViewControl ctrl = replacePartView[i];

            if (i < unique.Count)
            {
                string subpartname = unique.Keys.ToList()[i];
                ctrl.ThePart     = replacePart.Find((p) => { return(p.SubPartName == subpartname); });
                ctrl.CountOfPart = unique[subpartname];
                ctrl.gameObject.SetActive(true);
            }
        }

        for (int i = unique.Keys.Count; i < replacePartView.Count; i++)
        {
            SubPartViewControl ctrl = replacePartView[i];
            ctrl.gameObject.SetActive(false);
        }
    }
예제 #7
0
 private void OnPartClick(MachinePart part)
 {
     UpdateLublicateContent(part);
 }
예제 #8
0
 public abstract void Remove(MachinePart c);
예제 #9
0
 public abstract void Add(MachinePart c);
예제 #10
0
    public void LoadAssembles()
    {
        //load part type

        //ugly implementaion
        MachineAssembly a2 = new MachineAssembly("棉芯输送机");

        a2.AssemblyModelUrl   = "Press_module/Models/press_convery_normal";
        a2.AssemblyHilightUrl = "Press_module/Models/press_convery_highlight";
        //load parts

        MachinePart p;
        SubPart     s;

        p = new MachinePart("上部传送模块");
        //p.ModelUrls.Add(PartTypeEnum.None, "Press_module/Models/upper_convery");
        p.ModelUrls.Add(PartTypeEnum.Bearing, "Press_module/Models/upper_convery_bearing");
        p.ModelUrls.Add(PartTypeEnum.Belt, "Press_module/Models/upper_convery_belt");
        //p.ModelUrl = "Press_module/Models/upper_convery";

        for (int i = 0; i < 8; i++)
        {
            s          = new SubPart("SKF轴承 6204-2Z/C3/2RSH", i, PartTypeEnum.Bearing, CycleType.Replace, 12);
            s.VideoUrl = "Videos/ReplaceBearing";
            p.SubParts.Add(s);
        }

        s          = new SubPart("SKF LGLT2/1润滑油", 0, PartTypeEnum.Bearing, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateBearing";
        p.SubParts.Add(s);

        s          = new SubPart("GATES POWERGRIP 2GT226", 0, PartTypeEnum.Belt, CycleType.Replace, 12);
        s.VideoUrl = "Videos/ReplaceBelt";
        p.SubParts.Add(s);

        a2.PartList.Add(p);

        p = new MachinePart("下部传送模块");
        //p.ModelUrl = "Press_module/Models/lower_convery";
        p.ModelUrls.Add(PartTypeEnum.Bearing, "Press_module/Models/lower_convery_bearing");
        p.ModelUrls.Add(PartTypeEnum.Belt, "Press_module/Models/lower_convery_belt");

        for (int i = 0; i < 8; i++)
        {
            s          = new SubPart("SKF轴承 6204-2Z/C3/2RSH", i, PartTypeEnum.Bearing, CycleType.Replace, 12);
            s.VideoUrl = "Videos/ReplaceBearing";
            p.SubParts.Add(s);
        }

        s          = new SubPart("SKF LGLT2/1润滑油", 0, PartTypeEnum.Bearing, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateBearing";
        p.SubParts.Add(s);

        s          = new SubPart("GATES POWERGRIP 2GT226", 0, PartTypeEnum.Belt, CycleType.Replace, 12);
        s.VideoUrl = "Videos/ReplaceBelt";
        p.SubParts.Add(s);

        a2.PartList.Add(p);

        p = new MachinePart("传送模块底座");
        p.ModelUrls.Add(PartTypeEnum.LinearGuide, "Press_module/Models/base_highlight");


        for (int i = 0; i < 4; i++)
        {
            s          = new SubPart("HIWIN HGH15CA", i, PartTypeEnum.LinearGuide, CycleType.Replace, 24);
            s.VideoUrl = "Videos/ReplaceLinearGuide";
            p.SubParts.Add(s);
        }

        s          = new SubPart("NSK AS2 GREASE", 0, PartTypeEnum.LinearGuide, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateLinearGuide";
        p.SubParts.Add(s);

        a2.PartList.Add(p);

        assemblies.Add(a2);



        MachineAssembly a1 = new MachineAssembly("热压模块");

        a1.AssemblyModelUrl   = "Press_module/Models/thermal_press_module_normal";
        a1.AssemblyHilightUrl = "Press_module/Models/thermal_press_module_hightlight";

        //load parts
        p = new MachinePart("上压辊");
        p.ModelUrls.Add(PartTypeEnum.Bearing, "Press_module/Models/upper_roller");

        for (int i = 0; i < 2; i++)
        {
            s          = new SubPart("SKF轴承 206EC", i, PartTypeEnum.Bearing, CycleType.Replace, 12);
            s.VideoUrl = "Videos/ReplaceBearing";
            p.SubParts.Add(s);
        }

        s          = new SubPart("SKF重载润滑脂LGWA2/1", 0, PartTypeEnum.Bearing, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateBearing";
        p.SubParts.Add(s);
        a1.PartList.Add(p);


        p = new MachinePart("下压辊");
        p.ModelUrls.Add(PartTypeEnum.Bearing, "Press_module/Models/lower_roller");

        for (int i = 0; i < 2; i++)
        {
            s          = new SubPart("SKF轴承 206EC", i, PartTypeEnum.Bearing, CycleType.Replace, 12);
            s.VideoUrl = "Videos/ReplaceBearing";
            p.SubParts.Add(s);
        }

        s          = new SubPart("SKF重载润滑脂LGWA2/1", 0, PartTypeEnum.Bearing, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateBearing";
        p.SubParts.Add(s);
        a1.PartList.Add(p);

        assemblies.Add(a1);


        MachineAssembly a3 = new MachineAssembly("热压模块底座");

        a3.AssemblyModelUrl   = "Press_module/Models/base_normal";
        a3.AssemblyHilightUrl = "Press_module/Models/base_highlight";

        p = new MachinePart("线性导轨组件");
        //p.ModelUrl = "Press_module/Models/base_highlight";
        p.ModelUrls.Add(PartTypeEnum.LinearGuide, "Press_module/Models/base_highlight");

        for (int i = 0; i < 4; i++)
        {
            s          = new SubPart("HIWIN HGH35CA", i, PartTypeEnum.LinearGuide, CycleType.Replace, 24);
            s.VideoUrl = "Videos/ReplaceLinearGuide";
            p.SubParts.Add(s);
        }

        s          = new SubPart("NSK AS2 GREASE", 0, PartTypeEnum.LinearGuide, CycleType.Luburicate, 6);
        s.VideoUrl = "Videos/LiburateLinearGuide";
        p.SubParts.Add(s);

        a3.PartList.Add(p);

        assemblies.Add(a3);

        SetAssemblyControl();
    }
예제 #11
0
    public void GeneratePartLayout()
    {
        //Part layout
        int size = RandomEx.RandomIndexWeighted(sizeWeights) + 1;
        List<Vector2i> openLocations = new List<Vector2i>();
        openLocations.Add(new Vector2i(){x = 0, y = 0});
        int xMin = 0, xMax = 0, yMin = 0, yMax = 0;
        const int maxGridDimension = 5;
        for(int i = 0; i < size; i++)
        {
            if(openLocations.Count == 0)
            {
                Debug.LogError ("Machine tried to spawn too large!");
                break;
            }
            int locIndex = Random.Range (0, openLocations.Count);
            Vector2i loc = openLocations[locIndex];
            openLocations.RemoveAt(locIndex);
            int machWidth = xMax - xMin + 1;
            int machHeight = yMax - yMin + 1;
            if(HasPartAt(loc)
               || (machWidth >= maxGridDimension && (loc.x < xMin || loc.x > xMax))
               || (machHeight >= maxGridDimension && (loc.y < yMin || loc.y > yMax))
               )
            {
                i--; //retry
            }
            else{
                MachinePart part = new MachinePart();
                part.Offset = loc;
                AddPart(part);

                xMin = Mathf.Min(loc.x, xMin);
                xMax = Mathf.Max (loc.x, xMax);
                yMin = Mathf.Min (loc.y, yMin);
                yMax = Mathf.Max (loc.y, yMax);

                var dirs = new Vector2i[]{Vector2i.Up, Vector2i.Down, Vector2i.Left, Vector2i.Right};
                for(int j = 0; j < dirs.Length; j++){
                    Vector2i newOpenLoc = loc + dirs[j];
                    if(!HasPartAt(newOpenLoc))
                    {
                        openLocations.Add (newOpenLoc);
                    }
                }
            }
        }
        //Recenter parts
        Vector2i partCenterOffset = new Vector2i(xMin+(xMax-xMin) / 2, yMin+(yMax-yMin)/2);
        for(int i = 0; i < Parts.Count; i++)
        {
            Parts[i].Offset -= partCenterOffset;
        }
        //TODO: Will break if >4xMachineSize ports?
        for(int i = 0; i < Rule.NumInPorts; i++)
        {
            AddInPort();
        }
        for(int i = 0; i < Rule.NumOutPorts; i++)
        {
            AddOutPort();
        }
        LayoutPorts();
    }
예제 #12
0
 private void AddPart(MachinePart part)
 {
     Parts.Add(part);
     part.Machine = this;
 }
 public JsonResult Update(MachinePart machinePart)
 {
     return(Json(machinePartDB.Insert(machinePart), JsonRequestBehavior.AllowGet));
 }