本文整理汇总了C#中Canguro.GetSingle方法的典型用法代码示例。如果您正苦于以下问题:C# Canguro.GetSingle方法的具体用法?C# Canguro.GetSingle怎么用?C# Canguro.GetSingle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Canguro
的用法示例。
在下文中一共展示了Canguro.GetSingle方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Run
/// <summary>
/// Executes the command.
/// Moves the joint according to a given scale factor and pivot point.
/// </summary>
/// <param name="services">CommandServices object to interact with the system</param>
public override void Run(Canguro.Controller.CommandServices services)
{
List<Canguro.Model.Joint> selection = new List<Canguro.Model.Joint>();
List<Item> selectedItems = services.GetSelection();
if (selectedItems.Count == 0)
return;
foreach (Item item in selectedItems)
{
if (item is Joint)
selection.Add((Joint)item);
else if (item is LineElement)
{
LineElement l = (LineElement)item;
if (!selection.Contains(l.I))
selection.Add(l.I);
if (!selection.Contains(l.J))
selection.Add(l.J);
}
}
Microsoft.DirectX.Vector3 piv;
float scale = services.GetSingle(Culture.Get("getScale"));
Controller.Snap.Magnet m = services.GetPoint(Culture.Get("pivotScalePoint"));
if (m == null) return;
piv = m.SnapPosition;
foreach (Canguro.Model.Joint j in selection)
{
j.X = (j.X - piv.X) * scale + piv.X;
j.Y = (j.Y - piv.Y) * scale + piv.Y;
j.Z = (j.Z - piv.Z) * scale + piv.Z;
}
}
示例2: Run
public override void Run(Canguro.Controller.CommandServices services)
{
Canguro.Model.UnitSystem.UnitSystemsManager.Instance.Enabled = false;
try {
Microsoft.DirectX.Vector3[] pivots = new Microsoft.DirectX.Vector3[3];
// Get 3 Points
Joint j1 = services.GetJoint((IList<LineElement>)null);
services.TrackingService = Canguro.Controller.Tracking.LineTrackingService.Instance;
services.TrackingService.SetPoint(j1.Position);
services.Model.ChangeModel();
Joint j2 = services.GetJoint((IList<LineElement>)null);
services.TrackingService.SetPoint(j2.Position);
services.Model.ChangeModel();
Joint j3 = services.GetJoint((IList<LineElement>)null);
services.TrackingService = null;
services.Model.ChangeModel();
pivots[0] = j1.Position;
pivots[1] = j2.Position;
pivots[2] = j3.Position;
Vector3 v1 = pivots[0] - pivots[1];
Vector3 v2 = pivots[1] - pivots[2];
Vector3 N = Vector3.Cross(v1, v2);
if (N.LengthSq() < 0.0001) // If Colinear, take perpendicular to the active view.
System.Windows.Forms.MessageBox.Show(Culture.Get("ColinearPoints"), Culture.Get("error"), System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation);
else {
int segments = (int)services.GetSingle(Culture.Get("getSplitParts") + " [2-100]");
Vector3 C = calcCenter(pivots[0], pivots[1], pivots[2]);
MakeArc(services.Model, C, N, j1, j3, j2, segments);
}
} finally {
Canguro.Model.UnitSystem.UnitSystemsManager.Instance.Enabled = true;
}
}
示例3: Run
/// <summary>
/// Executes the command.
/// Gets a number of segments and divides all selected line elements in equal length segments.
/// </summary>
/// <param name="services">CommandServices object to interact with the system</param>
public override void Run(Canguro.Controller.CommandServices services)
{
List<Item> selection = services.GetSelection();
if (selection.Count == 0)
return;
List<LineElement> lineList = new List<LineElement>();
foreach (Item item in selection)
if (item != null && item is LineElement)
lineList.Add((LineElement)item);
if (lineList.Count == 0)
lineList.Add(services.GetLine());
int parts = (int)services.GetSingle(Culture.Get("getSplitParts") + " [2-100]");
parts = (parts < 2) ? 2 : (parts > 100) ? 100 : parts;
foreach (LineElement line in lineList)
{
Joint ji = line.I;
Joint jj = line.J;
Joint last = jj;
Microsoft.DirectX.Vector3 v = new Microsoft.DirectX.Vector3(jj.X - ji.X, jj.Y - ji.Y, jj.Z - ji.Z);
v.Multiply(1.0f / parts);
if (parts > 1 && v.LengthSq() > 0)
{
LineElement newLine = line;
for (int i = 0; i < parts - 1; i++)
{
jj = new Joint(ji.X + v.X, ji.Y + v.Y, ji.Z + v.Z);
services.Model.JointList.Add(jj);
newLine = Split(newLine, jj, services.Model);
services.Model.LineList.Add(newLine);
ji = jj;
}
}
}
}
示例4: Run
/// <summary>
/// Executes the command.
/// Copies the selected Items in a series around a given rotation axis.
/// </summary>
/// <param name="services">CommandServices object to interact with the system</param>
public override void Run(Canguro.Controller.CommandServices services)
{
Dictionary<Joint, Joint> joints = new Dictionary<Joint, Joint>();
Dictionary<Joint, Joint> jSelection = new Dictionary<Joint, Joint>();
List<LineElement> lines = new List<LineElement>();
List<LineElement> lSelection = new List<LineElement>();
List<AreaElement> areas = new List<AreaElement>();
List<AreaElement> aSelection = new List<AreaElement>();
ItemList<Joint> jList = services.Model.JointList;
ItemList<LineElement> lList = services.Model.LineList;
ItemList<AreaElement> aList = services.Model.AreaList;
Joint nJoint;
LineElement nLine;
AreaElement nArea;
List<Item> selection = services.GetSelection();
if (selection.Count == 0)
return;
foreach (Item item in selection)
{
if (item is Joint)
{
jSelection.Add((Joint)item, null);
joints.Add((Joint)item, null);
}
else if (item is LineElement)
{
LineElement l = (LineElement)item;
lSelection.Add(l);
lines.Add(l);
if (!jSelection.ContainsKey(l.I))
{
jSelection.Add(l.I, null);
joints.Add(l.I, null);
}
if (!jSelection.ContainsKey(l.J))
{
jSelection.Add(l.J, null);
joints.Add(l.J, null);
}
}
else if (item is AreaElement)
{
AreaElement a = (AreaElement)item;
aSelection.Add(a);
areas.Add(a);
if (!jSelection.ContainsKey(a.J1))
{
jSelection.Add(a.J1, null);
joints.Add(a.J1, null);
}
if (!jSelection.ContainsKey(a.J2))
{
jSelection.Add(a.J2, null);
joints.Add(a.J2, null);
}
if (!jSelection.ContainsKey(a.J3))
{
jSelection.Add(a.J3, null);
joints.Add(a.J3, null);
}
if (a.J4 != null && !jSelection.ContainsKey(a.J4))
{
jSelection.Add(a.J4, null);
joints.Add(a.J4, null);
}
}
}
Microsoft.DirectX.Vector3 v, v2;
uint n = (uint)services.GetSingle(Culture.Get("getArrayRepetition"));
float dAngle = float.Parse(services.GetString(Culture.Get("getPolarArrayAngle")));
dAngle *= (float)Math.PI / 180.0F;
float angle = 0.0F;
Controller.Snap.Magnet m = services.GetPoint(Culture.Get("getPolarRotationCenter"));
if (m == null) return;
v = m.SnapPosition;
services.TrackingService = LineTrackingService.Instance;
services.TrackingService.SetPoint(m.SnapPositionInt);
m = services.GetPoint(Culture.Get("getPolarRotationCenter"));
if (m == null) return;
v2 = m.SnapPosition;
if (v2.Equals(v))
{
Canguro.View.GraphicView view = Canguro.View.GraphicViewManager.Instance.ActiveView;
Vector3 v1Tmp = new Vector3(0, 0, 0);
Vector3 v2Tmp = new Vector3(0, 0, 1);
view.Unproject(ref v1Tmp);
view.Unproject(ref v2Tmp);
v2 = v2 + v1Tmp - v2Tmp;
//.........这里部分代码省略.........