Apartment SetBack(Apartment apt) { bool canSetBack = apt.Household.Count < TuringAndCorbusierPlugIn.InstanceClass.page1Settings.MaxFloors - 1; if (!canSetBack) { return(apt); } if (apt.Core.Count == 0 || apt.Core[0].Count == 0) { return(apt); } ParameterSet temp = apt.ParameterSet; temp.setback = true; temp.fixedCoreType = apt.Core[0][0].CoreType; temp.Parameters[0]++; temp.Parameters[1]++; //가능하면 agtype enum으로 만들면 .. switch (apt.AGtype) { case "PT-1": AG1 ag1 = new AG1(); Apartment a1 = ag1.generator(apt.Plot, temp, apt.Target); return(a1 == null ? apt : a1); case "PT-3": AG3 ag3 = new AG3(); Apartment a3 = ag3.generator(apt.Plot, temp, apt.Target); return(a3 == null ? apt : a3); //case "PT-4"://미구현 // AG1 ag4 = new AG1(); // Apartment a4 = ag4.generator(apt.Plot, temp, apt.Target); // return a4 == null ? apt : a4; default: return(apt); } }
public void CreateActivities() { // We put all template optimized activity in Activities Group ActivitiesGroup AG = (ActivitiesGroup)(from x in mBizFlow.ActivitiesGroups where x.Name == "Optimized Activities" select x).FirstOrDefault(); if (AG == null) { AG = new ActivitiesGroup(); AG.Name = "Optimized Activities"; mBizFlow.ActivitiesGroups.Add(AG); } ActivitiesGroup AG1 = (ActivitiesGroup)(from x in mBizFlow.ActivitiesGroups where x.Name == "Optimized Activities - Not in Use" select x).FirstOrDefault(); if (AG1 == null) { AG1 = new ActivitiesGroup(); AG1.Name = "Optimized Activities - Not in Use"; mBizFlow.ActivitiesGroups.Add(AG1); } foreach (ActivityIdentifiers ia in AG.ActivitiesIdentifiers) { Activity a1 = (Activity)(from x in mBizFlow.Activities where x.Guid == ia.ActivityGuid select x).FirstOrDefault(); if (!AG1.CheckActivityInGroup(a1)) { AG1.AddActivityToGroup(a1); } } // Search each activity if not found create new foreach (GherkinStep GH in mOptimizedSteps) { Activity a1 = (Activity)(from x in mBizFlow.Activities where x.ActivityName == GH.Text select x).FirstOrDefault(); if (a1 == null) { if (GH.AutomationStatus == "Automated in Shared Repo - ") { ObservableList <Activity> activities = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems <Activity>(); Activity a2 = (Activity) (from x in activities where x.ActivityName == GH.Text select x).FirstOrDefault(); //FIXME if (a2 != null) { mBizFlow.AddActivity(a2); a2.Active = false; AG.AddActivityToGroup(a2); } } else { Activity a = new Activity(); a.ActivityName = GH.Text; a.Active = false; a.TargetApplication = WorkSpace.UserProfile.Solution.MainApplication; a.ActionRunOption = eActionRunOption.ContinueActionsRunOnFailure; CreateActivityVariables(a); CreateActivitySelectionVariables(a); mBizFlow.AddActivity(a); AG.AddActivityToGroup(a); } } //TODO: handle if exist we need to update !? else { AG1.RemoveActivityFromGroup(a1); } } foreach (ActivityIdentifiers ia in AG1.ActivitiesIdentifiers) { Activity a1 = (Activity) (from x in mBizFlow.Activities where x.Guid == ia.ActivityGuid select x).FirstOrDefault(); if (AG.CheckActivityInGroup(a1)) { AG.RemoveActivityFromGroup(a1); } } WorkSpace.Instance.SolutionRepository.SaveRepositoryItem(mBizFlow); }
private void Btn_Calculate_Click(object sender, RoutedEventArgs e) { currentProgressFactor = 0; //building3DPreview.BrepToDisplay = new List<Brep>(); Rhino.RhinoDoc.ActiveDoc.Views.Redraw(); RhinoApp.Wait(); GC.Collect(); List <ApartmentGeneratorBase> agSet = new List <ApartmentGeneratorBase>(); agSet.Add(new AG1()); agSet.Add(new AG3()); agSet.Add(new AG4()); if (TuringAndCorbusierPlugIn.InstanceClass.plot == null) { return; } Plot tempPlot = TuringAndCorbusierPlugIn.InstanceClass.plot; Target tempTarget = TuringAndCorbusierPlugIn.InstanceClass.page2Settings.Target; List <ApartmentGeneratorBase> usingAGSet = new List <ApartmentGeneratorBase>(); for (int i = 0; i < agSet.Count(); i++) { if (TuringAndCorbusierPlugIn.InstanceClass.page2Settings.WhichAGToUse[i]) { if (i > 0 && !TuringAndCorbusierPlugIn.InstanceClass.page2.isAG34Valid) { return; } usingAGSet.Add(agSet[i]); } } if (usingAGSet.Count() == 0) { usingAGSet.Add(new AG1()); } this.calcWorkQuantity(usingAGSet); if (TuringAndCorbusierPlugIn.InstanceClass.page2Settings.WhichAGToUse.IndexOf(true) == -1) { try { AG1 tempAG = new AG1(); List <Apartment> tempTempOutputs = GiantAnteater.giantAnteater(tempPlot, tempAG, tempTarget, !this.Preview_Toggle.IsChecked.Value); string tempAGname = GetConvertedAGName(tempAG); for (int i = 0; i < tempTempOutputs.Count; i++) { bool addResult = this.AddButtonToStackPanel(tempTempOutputs[i]); if (addResult) { this.tempOutput.Add(tempTempOutputs[i]); this.tempAGName.Add(tempAGname); } } } catch (Exception ex) { RhinoApp.WriteLine(ex.Message); } } for (int i = 0; i < agSet.Count(); i++) { if (TuringAndCorbusierPlugIn.InstanceClass.page2Settings.WhichAGToUse[i]) { //try //{ List <Apartment> tempTempOutputs = GiantAnteater.giantAnteater(tempPlot, agSet[i], tempTarget, !this.Preview_Toggle.IsChecked.Value); string tempAGname = GetConvertedAGName(agSet[i]); if (tempTempOutputs == null) { continue; } for (int k = 0; k < tempTempOutputs.Count; k++) { bool addResult = this.AddButtonToStackPanel(tempTempOutputs[k]); if (addResult) { this.tempOutput.Add(tempTempOutputs[k]); this.tempAGName.Add(tempAGname); } } Rhino.RhinoApp.Wait(); GC.Collect(); //} //catch (Exception ex) //{ // RhinoApp.WriteLine(ex.Message); //} } } }