Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/17/16 18:21:19 (9 years ago)
Author:
gkronber
Message:

#1966 work in progress WPF control to visualize packings

Location:
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/PackingPlans
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/PackingPlans/PackingPlan3DView.Designer.cs

    r13468 r13532  
    4545    /// </summary>
    4646    private void InitializeComponent() {
    47       this.packingPlan3D = new PackingPlanVisualizations.PackingPlan3D();
    4847      this.binSelection = new System.Windows.Forms.ListBox();
    4948      this.itemSelection = new System.Windows.Forms.ListBox();
     49      this.elementHost = new System.Windows.Forms.Integration.ElementHost();
     50      this.packingPlan3D = new HeuristicLab.Problems.BinPacking.Views.Shapes.Container3DView();
    5051      this.SuspendLayout();
    51       //
    52       // packingPlan3D
    53       //
    54       this.packingPlan3D.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    55             | System.Windows.Forms.AnchorStyles.Left)
    56             | System.Windows.Forms.AnchorStyles.Right)));
    57       this.packingPlan3D.Location = new System.Drawing.Point(119, 3);
    58       this.packingPlan3D.Name = "packingPlan3D";
    59       this.packingPlan3D.Size = new System.Drawing.Size(229, 293);
    60       this.packingPlan3D.TabIndex = 3;
    6152      //
    6253      // binSelection
     
    8273      this.itemSelection.SelectedIndexChanged += new System.EventHandler(this.itemSelection_SelectedIndexChanged);
    8374      //
     75      // elementHost
     76      //
     77      this.elementHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
     78            | System.Windows.Forms.AnchorStyles.Left)
     79            | System.Windows.Forms.AnchorStyles.Right)));
     80      this.elementHost.Location = new System.Drawing.Point(119, 3);
     81      this.elementHost.Name = "elementHost";
     82      this.elementHost.Size = new System.Drawing.Size(229, 290);
     83      this.elementHost.TabIndex = 6;
     84      this.elementHost.Text = "elementHost1";
     85      this.elementHost.Child = this.packingPlan3D;
     86      //
    8487      // PackingPlan3DView
    8588      //
    8689      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    8790      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
     91      this.Controls.Add(this.elementHost);
    8892      this.Controls.Add(this.itemSelection);
    8993      this.Controls.Add(this.binSelection);
    90       this.Controls.Add(this.packingPlan3D);
    9194      this.Name = "PackingPlan3DView";
    9295      this.Size = new System.Drawing.Size(351, 299);
     
    97100    #endregion
    98101
    99     private PackingPlanVisualizations.PackingPlan3D packingPlan3D;
    100102    private System.Windows.Forms.ListBox binSelection;
    101103    private System.Windows.Forms.ListBox itemSelection;
     104    private System.Windows.Forms.Integration.ElementHost elementHost;
     105    private Shapes.Container3DView packingPlan3D;
    102106  }
    103107}
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/PackingPlans/PackingPlan3DView.cs

    r13465 r13532  
    3939
    4040    protected override void DeregisterContentEvents() {
    41       Content.QualityChanged -= new EventHandler(Content_QualityChanged);
    4241      base.DeregisterContentEvents();
    4342    }
    4443    protected override void RegisterContentEvents() {
    4544      base.RegisterContentEvents();
    46       Content.QualityChanged += new EventHandler(Content_QualityChanged);
    4745    }
    4846
     
    5654      base.OnContentChanged();
    5755      binSelection.Items.Clear();
    58       if (Content == null) { 
    59         packingPlan3D.InitializeContainer(0, 0, 0);
     56      if (Content == null) {
     57         packingPlan3D.Clear();
    6058      } else {
    6159        int i = 0;
     
    6563        binSelection.SelectedIndex = 0;
    6664        UpdateModel();
    67         packingPlan3D.StartRendering();
     65        packingPlan3D.Focus(); // for mouse wheel?
     66        // packingPlan3D.StartRendering();
    6867      }
    6968    }
     
    7170    private void UpdateModel() {
    7271      int currentBin = (binSelection != null) ? (int)(binSelection.SelectedIndex) : 0;
    73       var bin = Content.BinPackings[currentBin].BinMeasures;
    74       packingPlan3D.InitializeContainer(bin.Width, bin.Height, bin.Depth);
    75       foreach (var entry in Content.BinPackings[currentBin].ItemMeasures) {
    76         var position = Content.BinPackings[currentBin].ItemPositions[entry.Key];
    77         packingPlan3D.AddItemToContainer(
    78         position.Rotated ? entry.Value.Depth : entry.Value.Width,
    79         entry.Value.Height,
    80         position.Rotated ? entry.Value.Width : entry.Value.Depth,
    81         position.X, position.Y, position.Z, entry.Key, entry.Value.Material);
    82       }
     72      packingPlan3D.ShowContainer(Content.BinPackings[currentBin]);
     73      // var bin = Content.BinPackings[currentBin].BinMeasures;
     74      // // packingPlan3D.InitializeContainer(bin.Width, bin.Height, bin.Depth);
     75      // foreach (var entry in Content.BinPackings[currentBin].ItemMeasures) {
     76      //   var position = Content.BinPackings[currentBin].ItemPositions[entry.Key];
     77      //    packingPlan3D.AddItemToContainer(
     78      //    position.Rotated ? entry.Value.Depth : entry.Value.Width,
     79      //    entry.Value.Height,
     80      //    position.Rotated ? entry.Value.Width : entry.Value.Depth,
     81      //    position.X, position.Y, position.Z, entry.Key, entry.Value.Material);
     82      // }
    8383    }
    8484
     
    8989      itemSelection.Items.Clear();
    9090      int currentBin = (binSelection != null) ? (int)(binSelection.SelectedIndex) : 0;
    91       foreach (var entry in Content.BinPackings[currentBin].ItemMeasures) {
    92         itemSelection.Items.Add(entry.Key);
    93       }
     91      packingPlan3D.ShowContainer(Content.BinPackings[currentBin]);
    9492
    95       packingPlan3D.Invalidate();
    96       packingPlan3D.Update();
    9793    }
    9894
     
    10399      if ((itemSelection != null && itemSelection.SelectedItem != null) && Int32.TryParse(itemSelection.SelectedItem.ToString(), out selectedItem)) {
    104100        packingPlan3D.SelectItem(selectedItem);
    105       } else     
    106         packingPlan3D.UnselectItem();
    107 
    108       packingPlan3D.Invalidate();
    109       packingPlan3D.Update();
     101      } else
     102        packingPlan3D.ClearSelection();
    110103    }
    111104
    112     private void Content_QualityChanged(object sender, EventArgs e) {
    113       if (InvokeRequired)
    114         Invoke(new EventHandler(Content_QualityChanged), sender, e);
    115       else {
    116         binSelection.Items.Clear();
    117         if (Content == null) {
    118           packingPlan3D.InitializeContainer(0, 0, 0);
    119         } else {
    120           int i = 0;
    121           foreach (var bp in Content.BinPackings)
    122             binSelection.Items.Add(i++ + " (" + Math.Round(bp.PackingDensity * 100, 2) + "%)");
    123           binSelection.SelectedIndex = 0;
    124           UpdateModel();
    125           packingPlan3D.StartRendering();
    126         }
    127       }
    128    
     105    // private void Content_QualityChanged(object sender, EventArgs e) {
     106    //   if (InvokeRequired)
     107    //     Invoke(new EventHandler(Content_QualityChanged), sender, e);
     108    //   else {
     109    //     binSelection.Items.Clear();
     110    //     if (Content == null) {
     111    //       packingPlan3D.InitializeContainer(0, 0, 0);
     112    //     } else {
     113    //       int i = 0;
     114    //       foreach (var bp in Content.BinPackings)
     115    //         binSelection.Items.Add(i++ + " (" + Math.Round(bp.PackingDensity * 100, 2) + "%)");
     116    //       binSelection.SelectedIndex = 0;
     117    //       UpdateModel();
     118    //       // packingPlan3D.StartRendering();
     119    //     }
     120    //   }
     121    // }
    129122  }
    130123}
Note: See TracChangeset for help on using the changeset viewer.