forked from iesmatauw/StackBuilder
/
CaseOfBoxesProperties.cs
86 lines (79 loc) · 2.9 KB
/
CaseOfBoxesProperties.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
using Sharp3D.Math.Core;
#endregion
namespace TreeDim.StackBuilder.Basics
{
public class CaseOfBoxesProperties : BoxProperties
{
#region Data members
private BoxProperties _boxProperties;
private CaseDefinition _caseDefinition;
private CaseOptimConstraintSet _constraintSet;
#endregion
#region Constructor
/// <summary>
/// Instantiate a new case from a box, a case definition and a case optimization constraintset
/// </summary>
/// <param name="document">Parent document</param>
/// <param name="bProperties">Box properties</param>
/// <param name="constraintSet">Case optimization constraint set</param>
public CaseOfBoxesProperties(Document document
, BoxProperties boxProperties
, CaseDefinition caseDefinition
, CaseOptimConstraintSet constraintSet)
: base(document)
{
_boxProperties = boxProperties;
_boxProperties.AddDependancie(this);
_caseDefinition = caseDefinition;
_constraintSet = constraintSet;
OnAttributeModified(boxProperties);
}
#endregion
#region Public properties
public BoxProperties InsideBoxProperties
{ get { return _boxProperties; } }
public CaseDefinition CaseDefinition
{ get { return _caseDefinition; } }
public CaseOptimConstraintSet CaseOptimConstraintSet
{ get { return _constraintSet; } }
/// <summary>
/// override weight method
/// </summary>
public override double Weight
{
get { return base.Weight + _caseDefinition.Arrangement.Number * _boxProperties.Weight; }
}
public int NumberOfBoxes
{
get { return _caseDefinition.Arrangement.Number; }
}
#endregion
#region Dependancies
public override void OnAttributeModified(ItemBase modifiedAttribute)
{
Vector3D outerDim = _caseDefinition.OuterDimensions(_boxProperties, _constraintSet);
Length = outerDim.X;
Width = outerDim.Y;
Height = outerDim.Z;
Vector3D innerDim = _caseDefinition.InnerDimensions(_boxProperties);
InsideLength = innerDim.X;
InsideWidth = innerDim.Y;
InsideHeight = innerDim.Z;
}
protected override void RemoveItselfFromDependancies()
{
_boxProperties.RemoveDependancie(this);
base.RemoveItselfFromDependancies();
}
public override void OnEndUpdate(ItemBase updatedAttribute)
{
Modify();
base.OnEndUpdate(updatedAttribute);
}
#endregion
}
}