public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { var thunk = ((FScheme.Value.Function) args[0]).Item; var task = FScheme.MakeFuture(thunk); return FScheme.Value.NewContainer(task); }
public override Value Evaluate(FSharpList<Value> args) { string prefix = ""; int count = 0; DispatchOnUIThread( delegate { //unhook the binding OnRequestBindingUnhook(EventArgs.Empty); Root.Children.Clear(); foreach (Value e in args) { Root.Children.Add(Process(e, count.ToString(CultureInfo.InvariantCulture), Root.ShowRawData)); count++; } //rehook the binding OnRequestBindingRehook(EventArgs.Empty); } ); //return the content that has been gathered return args[0]; //watch should be a 'pass through' node }
public override Value Evaluate(FSharpList<Value> args) { CurveLoop firstLoop = (CurveLoop)((Value.Container)args[0]).Item; CurveLoop secondLoop = (CurveLoop)((Value.Container)args[1]).Item; List<VertexPair> vertPairs = null; if (dynRevitSettings.Revit.Application.VersionName.Contains("2013")) { vertPairs = new List<VertexPair>(); int i = 0; int nCurves1 = firstLoop.Count(); int nCurves2 = secondLoop.Count(); for (; i < nCurves1 && i < nCurves2; i++) { vertPairs.Add(new VertexPair(i, i)); } } var result = GeometryCreationUtilities.CreateBlendGeometry(firstLoop, secondLoop, vertPairs); solids.Add(result); return Value.NewContainer(result); }
public override Value Evaluate(FSharpList<Value> args) { var e = new Expression(Formula); var functionLookup = new Dictionary<string, Value>(); foreach (var arg in args.Select((arg, i) => new { Value = arg, Index = i })) { var parameter = InPortData[arg.Index].NickName; if (arg.Value.IsFunction) functionLookup[parameter] = arg.Value; else e.Parameters[parameter] = ((Value.Number)arg.Value).Item; } e.EvaluateFunction += delegate(string name, FunctionArgs fArgs) { if (functionLookup.ContainsKey(name)) { var func = ((Value.Function)functionLookup[name]).Item; fArgs.Result = ((Value.Number)func.Invoke( Utils.SequenceToFSharpList( fArgs.Parameters.Select<Expression, Value>( p => Value.NewNumber(Convert.ToDouble(p.Evaluate())))))).Item; } else { fArgs.HasResult = false; } }; return Value.NewNumber(Convert.ToDouble(e.Evaluate())); }
public override Value Evaluate(FSharpList<Value> args) { Curve thisCurve = (Curve)((Value.Container)args[0]).Item; if (thisCurve == null) { throw new Exception("Not enough reference points to make a curve."); } Type CurveType = typeof(Autodesk.Revit.DB.Curve); MethodInfo[] curveInstanceMethods = CurveType.GetMethods(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); System.String nameOfMethodApproximateByTangentArcs = "ApproximateByTangentArcs"; List<Curve> resultArcs = null; var result = FSharpList<Value>.Empty; foreach (MethodInfo m in curveInstanceMethods) { if (m.Name == nameOfMethodApproximateByTangentArcs) { object[] argsM = new object[0]; resultArcs = (List<Curve>)m.Invoke(thisCurve, argsM); break; } } for (int indexCurve = resultArcs.Count - 1; indexCurve > -1; indexCurve--) { result = FSharpList<Value>.Cons(Value.NewContainer(resultArcs[indexCurve]), result); } return Value.NewList(result); }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { if (SelectedIndex < 0) { throw new Exception("Please select a mesh node."); } var node_name = Items[SelectedIndex].Name; // if (InPorts[0].IsConnected) // { // // send the to the connected node // return FScheme.Value.NewString(node_name); // } var result = FSharpList<FScheme.Value>.Empty; if (OutPorts[0].IsConnected) { // get the data from the connected node DynamoMaya.Contract.IService s = MayaCommunication.openChannelToMaya(); Point3DCollection vertices = s.receiveVertexPositionsFromMaya(node_name); foreach (Point3D v in vertices) { XYZ pt = new XYZ(v.X, v.Y, v.Z); result = FSharpList<FScheme.Value>.Cons(FScheme.Value.NewContainer(pt), result); } MayaCommunication.closeChannelToMaya(s); } return FScheme.Value.NewList(ListModule.Reverse(result)); }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { var worksheet = (Microsoft.Office.Interop.Excel.Worksheet)((FScheme.Value.Container)args[0]).Item; Microsoft.Office.Interop.Excel.Range range = worksheet.UsedRange; int rows = range.Rows.Count; int cols = range.Columns.Count; var rowData = new List<FScheme.Value>(); for (int r = 1; r <= rows; r++) { var row = new List<FScheme.Value>(); for (int c = 1; c <= cols; c++) { row.Add(FScheme.Value.NewContainer(range.Cells[r, c].Value2)); } rowData.Add(FScheme.Value.NewList(Utils.SequenceToFSharpList(row))); } return FScheme.Value.NewList(Utils.SequenceToFSharpList(rowData)); }
//protected override void OnRunCancelled() //{ // if (delayThread != null && delayThread.IsAlive) // delayThread.Abort(); //} public override Expression Evaluate(FSharpList<Expression> args) { int delay = (int)((Expression.Number)args[0]).Item; if (delayThread == null || !delayThread.IsAlive) { delayThread = new Thread(new ThreadStart( delegate { Thread.Sleep(delay); if (this.Bench.RunCancelled) return; while (this.Bench.Running) { Thread.Sleep(1); if (this.Bench.RunCancelled) return; } this.IsDirty = true; } )); delayThread.Start(); } return Expression.NewNumber(1); }
public override void Evaluate(FSharpList<Value> args, Dictionary<PortData, Value> outPuts) { var crv1 = (Curve)((Value.Container)args[0]).Item; var crv2 = (Curve)((Value.Container)args[1]).Item; IntersectionResultArray xsects; SetComparisonResult result = crv1.Intersect(crv2, out xsects); var xyz = FSharpList<Value>.Empty; var u = FSharpList<Value>.Empty; var v = FSharpList<Value>.Empty; if (xsects != null) { foreach (IntersectionResult ir in xsects) { xyz = FSharpList<Value>.Cons(Value.NewContainer(ir.XYZPoint), xyz); u = FSharpList<Value>.Cons(Value.NewNumber(ir.UVPoint.U), u); v = FSharpList<Value>.Cons(Value.NewNumber(ir.UVPoint.V), v); } } outPuts[_vPort] = Value.NewList(v); outPuts[_uPort] = Value.NewList(u); outPuts[_xyzPort] = Value.NewList(xyz); outPuts[_resultPort] = Value.NewString(result.ToString()); }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { dynRevitSettings.ElementsContainers.Push(ElementsContainer); var result = base.Evaluate(args); dynRevitSettings.ElementsContainers.Pop(); return result; }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { var min = ((FScheme.Value.Number)args[0]).Item; var max = ((FScheme.Value.Number)args[1]).Item; return FScheme.Value.NewContainer(DSCoreNodes.Domain.ByMinimumAndMaximum(min, max)); }
public override Value Evaluate(FSharpList<Value> args) { Transform t = Transform.Identity; transforms.Add(t); return Value.NewContainer(t); }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { //Level elements take in one double for the z elevation (height)f var h = (double)((FScheme.Value.Number)args[0]).Item; var name = ((FScheme.Value.String)args[1]).Item; Autodesk.Revit.DB.Level lev; if (this.Elements.Any()) { if (dynUtils.TryGetElement(this.Elements[0], out lev)) { lev.Elevation = h; lev.Name = name; } else { lev = this.UIDocument.Document.IsFamilyDocument ? this.UIDocument.Document.FamilyCreate.NewLevel(h) : this.UIDocument.Document.Create.NewLevel(h); lev.Name = name; this.Elements[0] = lev.Id; } } else { lev = this.UIDocument.Document.IsFamilyDocument ? this.UIDocument.Document.FamilyCreate.NewLevel(h) : this.UIDocument.Document.Create.NewLevel(h); lev.Name = name; this.Elements.Add(lev.Id); } return FScheme.Value.NewContainer(lev); }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { var ptA = ((FScheme.Value.Container)args[0]).Item; var radX = (double)((FScheme.Value.Number)args[1]).Item; var radY = (double)((FScheme.Value.Number)args[2]).Item; Autodesk.Revit.DB.Ellipse ell = null; if (ptA is XYZ) { ell = dynRevitSettings.Doc.Application.Application.Create.NewEllipse( //ptA, radX, radY, XYZ.BasisX, XYZ.BasisY, 0, 2 * Math.PI (XYZ)ptA, radX, radY, XYZ.BasisX, XYZ.BasisY, 0, 2 * RevitPI ); } else if (ptA is ReferencePoint) { ell = dynRevitSettings.Doc.Application.Application.Create.NewEllipse( //ptA, radX, radY, XYZ.BasisX, XYZ.BasisY, 0, 2 * Math.PI (XYZ)((ReferencePoint)ptA).Position, radX, radY, XYZ.BasisX, XYZ.BasisY, 0, 2 * RevitPI ); } else if (ptA is Transform) { Transform trf = ptA as Transform; XYZ center = trf.Origin; ell = dynRevitSettings.Doc.Application.Application.Create.NewEllipse( //ptA, radX, radY, XYZ.BasisX, XYZ.BasisY, 0, 2 * Math.PI center, radX, radY, trf.BasisX, trf.BasisY, 0, 2 * RevitPI ); } return FScheme.Value.NewContainer(ell); }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { var input = args[0]; //If we are receiving a list, we must create levels for each double in the list. if (input.IsList) { throw new NotImplementedException(); } //If we're not receiving a list, we will just assume we received one double height. else { double x = ((FScheme.Value.Number) input).Item; int i0 = SimplexHelper.FastFloor(x); int i1 = i0 + 1; double x0 = x - i0; double x1 = x0 - 1.0f; double n0, n1; double t0 = 1.0f - x0 * x0; t0 *= t0; n0 = t0 * t0 * SimplexHelper.Grad(SimplexHelper.perm[i0 & 0xff], x0); double t1 = 1.0f - x1 * x1; t1 *= t1; n1 = t1 * t1 * SimplexHelper.Grad(SimplexHelper.perm[i1 & 0xff], x1); // The maximum value of this noise is 8*(3/4)^4 = 2.53125 // A factor of 0.395 scales to fit exactly within [-1,1] return FScheme.Value.NewNumber(0.395f*(n0 + n1)); } }
public override Value Evaluate(FSharpList<Value> args) { ParticleSystem particleSystem = (ParticleSystem)((Value.Container)args[0]).Item; var result = FSharpList<Value>.Empty; ParticleSpring s; Particle springEnd1; Particle springEnd2; XYZ springXYZ1; XYZ springXYZ2; Line springLine; //create a geometry curve from each spring for (int i = 0; i < particleSystem.numberOfSprings(); i++) { s = particleSystem.getSpring(i); springEnd1 = s.getOneEnd(); springEnd2 = s.getTheOtherEnd(); springXYZ1 = springEnd1.getPosition(); springXYZ2 = springEnd2.getPosition(); springLine = dynRevitSettings.Doc.Application.Application.Create.NewLineBound(springXYZ1, springXYZ2); result = FSharpList<Value>.Cons(Value.NewContainer(springLine), result); } return Value.NewList(result); }
//protected override void OnRunCancelled() //{ // if (delayThread != null && delayThread.IsAlive) // delayThread.Abort(); //} public override Value Evaluate(FSharpList<Value> args) { int delay = (int)((Value.Number)args[0]).Item; if (delayThread == null || !delayThread.IsAlive) { delayThread = new Thread(new ThreadStart( delegate { Thread.Sleep(delay); if (Controller.RunCancelled) return; while (Controller.Running) { Thread.Sleep(1); if (Controller.RunCancelled) return; } this.RequiresRecalc = true; } )); delayThread.Start(); } return Value.NewNumber(1); }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { var t = (Transform)((FScheme.Value.Container)args[0]).Item; double width = ((FScheme.Value.Number)args[1]).Item; double height = ((FScheme.Value.Number)args[2]).Item; //ccw from upper right var p0 = new XYZ(width / 2, height / 2, 0); var p3 = new XYZ(-width / 2, height / 2, 0); var p2 = new XYZ(-width / 2, -height / 2, 0); var p1 = new XYZ(width / 2, -height / 2, 0); p0 = t.OfPoint(p0); p1 = t.OfPoint(p1); p2 = t.OfPoint(p2); p3 = t.OfPoint(p3); var l1 = dynRevitSettings.Doc.Application.Application.Create.NewLineBound(p0, p1); var l2 = dynRevitSettings.Doc.Application.Application.Create.NewLineBound(p1, p2); var l3 = dynRevitSettings.Doc.Application.Application.Create.NewLineBound(p2, p3); var l4 = dynRevitSettings.Doc.Application.Application.Create.NewLineBound(p3, p0); var cl = new Autodesk.Revit.DB.CurveLoop(); cl.Append(l1); cl.Append(l2); cl.Append(l3); cl.Append(l4); return FScheme.Value.NewContainer(cl); }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { var f = ((FScheme.Value.Function)args[0]).Item; var x = ((FScheme.Value.Number)args[1]).Item; var max_its = (int) Math.Max(1, ((FScheme.Value.Number) args[2]).Item); var count = 0; var change = 1e10; var max_change = 1e-5; var h = 1e-5; // use newton's method while (count < max_its && change > max_change) { var fx = InvokeFunction(f, x); var fxh = InvokeFunction(f, x + h); var dfx = (fxh - fx)/h; var x1 = x - fx/dfx; change = x - x1; x = x1; count++; } return FScheme.Value.NewNumber(x); }
public override Value Evaluate(FSharpList<Value> args) { if (((Value.Number)args[0]).Item == 1) { if (port != null) { bool isOpen = true; if (isOpen == true) { if (!port.IsOpen) { port.Open(); } } else if (isOpen == false) { if (port.IsOpen) port.Close(); } } } return Value.NewContainer(port); // pass the port downstream }
public override Value Evaluate(FSharpList<Value> args) { var crv1 = (Curve)((Value.Container)args[0]).Item; var crv2 = (Curve)((Value.Container)args[1]).Item; IntersectionResultArray xsects = new IntersectionResultArray(); SetComparisonResult result = crv1.Intersect(crv2, out xsects); var results = FSharpList<Value>.Empty; var xsect_results = FSharpList<Value>.Empty; if (xsects != null) { foreach (IntersectionResult ir in xsects) { var xsect = FSharpList<Value>.Empty; xsect = FSharpList<Value>.Cons(Value.NewNumber(ir.UVPoint.U), xsect); xsect = FSharpList<Value>.Cons(Value.NewNumber(ir.UVPoint.V), xsect); xsect = FSharpList<Value>.Cons(Value.NewContainer(ir.XYZPoint), xsect); xsect_results = FSharpList<Value>.Cons(Value.NewList(xsect), xsect_results); pts.Add(ir.XYZPoint); } } results = FSharpList<Value>.Cons(Value.NewList(xsect_results), results); results = FSharpList<Value>.Cons(Value.NewString(result.ToString()), results); return Value.NewList(results); }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { var ptA = ((FScheme.Value.Container)args[0]).Item; var radius = (double)((FScheme.Value.Number)args[1]).Item; var start = (double)((FScheme.Value.Number)args[2]).Item; var end = (double)((FScheme.Value.Number)args[3]).Item; Arc a = null; if (ptA is XYZ) { a = dynRevitSettings.Doc.Application.Application.Create.NewArc( (XYZ)ptA, radius, start, end, XYZ.BasisX, XYZ.BasisY ); } else if (ptA is ReferencePoint) { a = dynRevitSettings.Doc.Application.Application.Create.NewArc( (XYZ)((ReferencePoint)ptA).Position, radius, start, end, XYZ.BasisX, XYZ.BasisY ); } else if (ptA is Transform) { Transform trf = ptA as Transform; XYZ center = trf.Origin; a = dynRevitSettings.Doc.Application.Application.Create.NewArc( center, radius, start, end, trf.BasisX, trf.BasisY ); } return FScheme.Value.NewContainer(a); }
public override Value Evaluate(FSharpList<Value> args) { Surface s = (Surface)((Value.Container)args[0]).Item; double a = s.area(); return Value.NewNumber(a); }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { double u, v; u = ((FScheme.Value.Number)args[0]).Item; v = ((FScheme.Value.Number)args[1]).Item; return FScheme.Value.NewContainer(new UV(u, v)); }
public override FScheme.Value Evaluate(FSharpList<FScheme.Value> args) { var param = args[1]; if (param.IsString) { var paramName = ((FScheme.Value.String)param).Item; var input = args[0]; if (input.IsList) { var fiList = (input as FScheme.Value.List).Item; return FScheme.Value.NewList( Utils.SequenceToFSharpList( fiList.Select( x => getParam( (FamilySymbol)((FScheme.Value.Container)x).Item, paramName ) ) ) ); } else { var fi = (FamilySymbol)((FScheme.Value.Container)input).Item; return getParam(fi, paramName); } } else { var paramDef = (Definition)((FScheme.Value.Container)param).Item; var input = args[0]; if (input.IsList) { var fiList = (input as FScheme.Value.List).Item; return FScheme.Value.NewList( Utils.SequenceToFSharpList( fiList.Select( x => getParam( (FamilySymbol)((FScheme.Value.Container)x).Item, paramDef ) ) ) ); } else { var fi = (FamilySymbol)((FScheme.Value.Container)input).Item; return getParam(fi, paramDef); } } }
public override Value Evaluate(FSharpList<Value> args) { var a = (int) Math.Round(((Value.Number) args[0]).Item); var r = (int) Math.Round(((Value.Number)args[1]).Item); var g = (int) Math.Round(((Value.Number)args[2]).Item); var b = (int) Math.Round(((Value.Number)args[3]).Item); return Value.NewContainer(System.Drawing.Color.FromArgb(a, r, g, b)); }
void IRunner.OnShrink ( FSharpList<object> args , FSharpFunc<FSharpList<object>, string> everyShrink ) { var msg = everyShrink.Invoke(args); if (!silent) { Console.Write(msg); } }
public override Value Evaluate(FSharpList<Value> args) { //Grab our inputs and turn them into XYZs. XYZ ptA = this.getXYZ(((Value.Container)args[0]).Item); XYZ ptB = this.getXYZ(((Value.Container)args[1]).Item); //Return the calculated distance. return Value.NewNumber(ptA.DistanceTo(ptB)); }
public override Value Evaluate(FSharpList<Value> args) { //Grab our inputs and turn them into XYZs. XYZ ptA = this.getXYZ(((Value.Container)args[0]).Item); XYZ ptB = this.getXYZ(((Value.Container)args[1]).Item); //Return the calculated distance. return Value.NewContainer(Units.Length.FromFeet(ptA.DistanceTo(ptB), dynSettings.Controller.UnitsManager)); }
///<summary> ///Auto-generated evaulate method for Dynamo node wrapping Autodesk.Revit.Creation.FamilyItemFactory.NewRadialDimension ///</summary> public override Value Evaluate(FSharpList<Value> args) { foreach (var e in this.Elements) { this.DeleteElement(e); } return dynRevitUtils.InvokeAPIMethod(this, args, base_type, pi, mi, return_type); }
public override Value Evaluate(FSharpList <Value> args) { SpatialFieldManager sfm; sfm = SpatialFieldManager.GetSpatialFieldManager(dynRevitSettings.Doc.ActiveView); if (sfm != null) { dynRevitSettings.SpatialFieldManagerUpdated = sfm; } else { sfm = SpatialFieldManager.CreateSpatialFieldManager(dynRevitSettings.Doc.ActiveView, (int)((Value.Number)args[0]).Item); } return(Value.NewContainer(sfm)); }
public static int main(string[] argv) { IDisposable disposable = default(IDisposable); using (Program.disposable()) { Console.WriteLine("Hello 1"); disposable = Program.disposable(); } using (disposable) { IEnumerable <int> seq = Program.getSeq(); using (IEnumerator <int> enumerator = seq.GetEnumerator()) { while (true) { if (!enumerator.MoveNext()) { break; } int k = enumerator.Current; Console.WriteLine(k); } } FSharpList <int> fSharpList = Program.getList(); FSharpList <int> tailOrNull = fSharpList.TailOrNull; while (true) { if (tailOrNull == null) { break; } int j = fSharpList.HeadOrDefault; Console.WriteLine(j); fSharpList = tailOrNull; tailOrNull = fSharpList.TailOrNull; } int[] array = Program.getArray(); for (int l = 0; l < array.Length; l++) { int i = array[l]; Console.WriteLine(i); } return(0); } }
static void Main(string[] args) { var numbers = FSharpList <int> .Cons( 1, FSharpList <int> .Cons(2, FSharpList <int> .Cons( 3, FSharpList <int> .Empty))); Console.WriteLine(string.Join(", ", numbers)); var fsharpPoint = new FSharpLibrary.Point(1, 2, 3); var csharpPoint = new CsharpPoint(1, 2, 3); FSharpLibrary.Shape shape = FSharpLibrary.Shape.NewCircle(1); Console.WriteLine($"Is this a rectangle: {shape.IsRectangle}"); }
public void One() { string man = "A1"; SortedSet <string> expected = new SortedSet <string> { "B1" }; List <Tuple <string, string> > CSarpPairs = new List <Tuple <string, string> > { new Tuple <string, string>("A1", "B1") }; FSharpList <Tuple <string, string> > FSarpPairs = ListModule.OfSeq(CSarpPairs); string result = printChildren(FSarpPairs, man, ""); SortedSet <string> resultCollection = Functions.ConvertToSet(result); CollectionAssert.AreEqual(expected, resultCollection); }
public override Value Evaluate(FSharpList <Value> args) { string path = ((Value.String)args[0]).Item; string text = ((Value.String)args[1]).Item; try { File.WriteAllText(path, text); } catch (Exception e) { DynamoLogger.Instance.Log(e); return(Value.NewNumber(0)); } return(Value.NewNumber(1)); }
public void WriteValue(IValueWriter valueWriter, FSharpList <T> value) { if (value is null) { valueWriter.DirectWrite(null); } else if (valueWriter is IValueWriter <FSharpList <T> > writer) { writer.WriteValue(value); } else { valueWriter.WriteArray(new FSharpListRW <T> { content = value }); } }
public override Value Evaluate(FSharpList <Value> args) { GeometryList geometry = new GeometryList(); System.String file_name = ((Value.String)args[0]).Item; var input = (args[1] as Value.List).Item; foreach (Value v in input) { Geometry g = ((Value.Container)v).Item as Geometry; geometry.Add(g); } ASMExporter.export_geometry(file_name, geometry); return(args[1]); }
public override Value Evaluate(FSharpList <Value> args) { var pts = ((Value.List)args[0]).Item.Select( x => ((XYZ)((Value.Container)x).Item)).ToList(); if (pts.Count <= 1) { throw new Exception("Not enough reference points to make a curve."); } var ns = dynRevitSettings.Revit.Application.Create.NewNurbSpline( pts, Enumerable.Repeat(1.0, pts.Count).ToList()); crvs.Add(ns); return(Value.NewContainer(ns)); }
public override Value Evaluate(FSharpList <Value> args) { Curve crv = (Curve)((Value.Container)args[0]).Item; double p = (double)((Value.Number)args[1]).Item; Transform t = Transform.Identity; if (crv != null) { t = crv.ComputeDerivatives(p, true); t.BasisX = t.BasisX.Normalize(); t.BasisZ = t.BasisZ.Normalize(); t.BasisY = t.BasisX.CrossProduct(t.BasisZ); } return(Value.NewContainer(t)); }
public override Value Evaluate(FSharpList <Value> args) { storedPath = ((Value.String)args[0]).Item; if (File.Exists(storedPath)) { string contents; contents = File.ReadAllText(storedPath); return(Value.NewString(contents)); } else { return(Value.NewString("")); } }
public FSharpList <T> ToFSharpList() { FSharpList <T> result = FSharpList <T> .Empty; result = CopyToList(result, chunk, chunkPos); while (!chunks.IsEmpty) { chunk = chunks.HeadOrDefault; chunks = chunks.TailOrNull; result = CopyToList(result, chunk, chunk.Length); } chunk = Array.Empty <T>(); return(result); }
public override Value Evaluate(FSharpList <Value> args) { var origin = (XYZ)((Value.Container)args[0]).Item; var up = (XYZ)((Value.Container)args[1]).Item; var forward = (XYZ)((Value.Container)args[2]).Item; Transform t = Transform.Identity; t.Origin = origin; t.BasisZ = up.Normalize(); t.BasisY = forward.Normalize(); t.BasisX = forward.CrossProduct(up).Normalize(); return(Value.NewContainer( t )); }
public override void Evaluate(FSharpList <FScheme.Value> args, Dictionary <PortData, FScheme.Value> outPuts) { if (OutPortData.Count > 1) { var query = (Evaluate(args) as FScheme.Value.List).Item.Zip( OutPortData, (value, data) => new { value, data }); foreach (var result in query) { outPuts[result.data] = result.value; } } else { base.Evaluate(args, outPuts); } }
public void Defect_MAGN_942_Equal() { DynamoModel model = Controller.DynamoModel; string openPath = Path.Combine(GetTestDirectory(), @"core\DynamoDefects\Defect_MAGN_942_Equal.dyn"); model.Open(openPath); dynSettings.Controller.RunExpression(null); var equal = model.CurrentWorkspace.NodeFromWorkspace <Map>("3806c656-56bd-4878-9082-b2d27644abd1"); FSharpList <FScheme.Value> actual = equal.GetValue(0).GetListFromFSchemeValue(); Assert.AreEqual(11, actual.Length); Assert.AreEqual(0, actual[0].GetDoubleFromFSchemeValue()); Assert.AreEqual(1, actual[5].GetDoubleFromFSchemeValue()); Assert.AreEqual(0, actual[10].GetDoubleFromFSchemeValue()); }
public override Value Evaluate(FSharpList <Value> args) { string path = ((Value.String)args[0]).Item; string text = ((Value.String)args[1]).Item; try { File.WriteAllText(path, text); } catch (Exception e) { dynSettings.Controller.DynamoViewModel.Log(e); return(Value.NewNumber(0)); } return(Value.NewNumber(1)); }
public void TestSplitStringNormalInput() { DynamoModel model = Controller.DynamoModel; string testFilePath = Path.Combine(localDynamoStringTestFloder, "TestSplitString_normal.dyn"); model.Open(testFilePath); dynSettings.Controller.RunExpression(null); var watch = model.CurrentWorkspace.NodeFromWorkspace <Watch>("f72f6210-b32f-4dc4-9b2a-61f0144a0109"); String expected1 = "today"; String expected2 = "yesterday"; FSharpList <FScheme.Value> splitedStrings = watch.GetValue(0).GetListFromFSchemeValue(); Assert.AreEqual(expected1, splitedStrings[0].GetStringFromFSchemeValue()); Assert.AreEqual(expected2, splitedStrings[1].GetStringFromFSchemeValue()); }
public void FSharpListTest_2_Success() { var collection = FSharpList <int> .Empty; collection = new FSharpList <int>(0, collection); collection = new FSharpList <int>(1, collection); var target = this.CreateTarget <FSharpList <int> >(); using (var buffer = new MemoryStream()) { target.Pack(buffer, collection); buffer.Position = 0; var unpacked = target.Unpack(buffer); buffer.Position = 0; Assert.That(unpacked.ToArray(), Is.EqualTo(collection.ToArray())); } }
public override Value Evaluate(FSharpList <Value> args) { Autodesk.Revit.DB.Analysis.SpatialFieldManager SpatialFieldManager; SpatialFieldManager = Autodesk.Revit.DB.Analysis.SpatialFieldManager.GetSpatialFieldManager(dynRevitSettings.Doc.ActiveView); if (SpatialFieldManager != null) { dynRevitSettings.SpatialFieldManagerUpdated = SpatialFieldManager; } else { SpatialFieldManager = Autodesk.Revit.DB.Analysis.SpatialFieldManager.CreateSpatialFieldManager(dynRevitSettings.Doc.ActiveView, (int)((Value.Number)args[0]).Item); } return(Value.NewContainer(SpatialFieldManager)); }
public override FScheme.Value Evaluate(FSharpList <FScheme.Value> args) { var pts = ((FScheme.Value.List)args[0]).Item.Select( x => ((ReferencePoint)((FScheme.Value.Container)x).Item).Position ).ToList(); if (pts.Count <= 1) { throw new Exception("Not enough reference points to make a curve."); } var ns = UIDocument.Application.Application.Create.NewNurbSpline( pts, Enumerable.Repeat(1.0, pts.Count).ToList()); ModelNurbSpline c; if (Elements.Any() && dynUtils.TryGetElement(Elements[0], out c)) { ModelCurve.setCurveMethod(c, ns); //c.GeometryCurve = ns; } else { Elements.Clear(); double rawParam = ns.ComputeRawParameter(.5); Transform t = ns.ComputeDerivatives(rawParam, false); XYZ norm = t.BasisZ; if (norm.GetLength() == 0) { norm = XYZ.BasisZ; } Autodesk.Revit.DB.Plane p = new Autodesk.Revit.DB.Plane(norm, t.Origin); Autodesk.Revit.DB.SketchPlane sp = this.UIDocument.Document.FamilyCreate.NewSketchPlane(p); //sps.Add(sp); c = UIDocument.Document.FamilyCreate.NewModelCurve(ns, sp) as ModelNurbSpline; Elements.Add(c.Id); } return(FScheme.Value.NewContainer(c)); }
public void SliceList() { dynSettings.Controller.DynamoModel.CreateNode(0, 0, "Partition List"); //Create a List //For a list of 0..20, this will have 21 elements //Slicing by 5 should return 6 lists, the last containing one element var list = Utils.SequenceToFSharpList(Enumerable.Range(0, 21).Select(x => FScheme.Value.NewNumber(x))); var sliceNode = (Slice)dynSettings.Controller.DynamoModel.Nodes.First(x => x is Slice); var args = FSharpList <FScheme.Value> .Empty; args = FSharpList <FScheme.Value> .Cons(FScheme.Value.NewNumber(5), args); args = FSharpList <FScheme.Value> .Cons(FScheme.Value.NewList(list), args); var res = sliceNode.Evaluate(args); //confirm we have a list Assert.IsTrue(res.IsList); //confirm the correct number of sublists Assert.AreEqual(5, ((FScheme.Value.List)res).Item.Count()); //test if you pass in an empty list //should return just one list - the original args = FSharpList <FScheme.Value> .Empty; args = FSharpList <FScheme.Value> .Cons(FScheme.Value.NewNumber(5), args); args = FSharpList <FScheme.Value> .Cons(FScheme.Value.NewList(FSharpList <FScheme.Value> .Empty), args); res = sliceNode.Evaluate(args); Assert.AreEqual(0, ((FScheme.Value.List)res).Item.Count()); //test if you pass in a list wwith less elements than the //slice, you should just get back the same list list = Utils.SequenceToFSharpList(Enumerable.Range(0, 1).Select(x => FScheme.Value.NewNumber(x))); args = FSharpList <FScheme.Value> .Empty; args = FSharpList <FScheme.Value> .Cons(FScheme.Value.NewNumber(5), args); args = FSharpList <FScheme.Value> .Cons(FScheme.Value.NewList(list), args); res = sliceNode.Evaluate(args); Assert.AreEqual(1, ((FScheme.Value.List)res).Item.Count()); }
public void ParticularScenario() { /// Here's what happened (unless I'm crazy): /// I was dealt 10, king /// dealer had 10, 3 /// I checked double down /// I must have hit (though should've stayed) because I got a 2 (bust) /// dealer was then dealt 5 (total 18) /// I showed winnings at 20 // player hand (bust) var tenOfClub = Blackjack.Card.NewValueCard(10, Blackjack.Suit.Club); var kingOfDiamond = Blackjack.Card.NewKing(Blackjack.Suit.Diamond); var twoOfDiamond = Blackjack.Card.NewValueCard(2, Blackjack.Suit.Diamond); var playerHand = FSharpList.Create(new Card[] { tenOfClub, kingOfDiamond, twoOfDiamond }); // dealer hand var tenOfHeart = Blackjack.Card.NewValueCard(10, Blackjack.Suit.Heart); var threeOfSpade = Blackjack.Card.NewValueCard(3, Blackjack.Suit.Spade); var dealerHand = FSharpList.Create(new Card[] { tenOfHeart, threeOfSpade }); // create the deck without dealt cards. var shuffledDeck = Blackjack.functions_and_stuff.Shuffle(); var listOfUsedCards = new List <Card> { tenOfClub, kingOfDiamond, twoOfDiamond, tenOfHeart, threeOfSpade /*, fiveOfSpade*/ }; foreach (var card in shuffledDeck) { if (!listOfUsedCards.Contains(card)) { listOfUsedCards.Add(card); } } var currentDeck = FSharpList.Create(listOfUsedCards.ToArray()); var hands = new Blackjack.Hands(dealerHand, playerHand, currentDeck); var game = new Blackjack.Game.NewGameState(currentDeck); var dealingToPlayerState = new Blackjack.Game.DealingAdditionalCardsToPlayerState(currentDeck, 10, hands, true); var transformAgain = Game.BlackJackGame.DealingAdditionalCardsToDealer.NewDealingAdditionalCardsToPlayer(dealingToPlayerState); // why is this necessary??? var newGame = Blackjack.Game.CheckForWinner(transformAgain); Assert.IsTrue(newGame.IsGameOver); Assert.AreEqual(-20, ((Blackjack.Game.BlackJackGame.GameOver)newGame).Item.Winnings); // ugly cast }
public override Value Evaluate(FSharpList <Value> args) { bool isRefCurve = Convert.ToBoolean(((Value.Number)args[1]).Item); //Build a sequence that unwraps the input list from it's Value form. IEnumerable <ReferencePoint> refPts = ((Value.List)args[0]).Item.Select( x => (ReferencePoint)((Value.Container)x).Item ); //Add all of the elements in the sequence to a ReferencePointArray. ReferencePointArray refPtArr = new ReferencePointArray(); foreach (var refPt in refPts) { refPtArr.Append(refPt); } //Standard logic for updating an old result, if it exists. if (this.Elements.Any()) { Element e; if (dynUtils.TryGetElement(this.Elements[0], typeof(CurveByPoints), out e)) { c = e as CurveByPoints; c.SetPoints(refPtArr); } else { //TODO: This method of handling bad elements may cause problems. Instead of overwriting // index in Elements, might be better to just add it the Elements and then do // this.DeleteElement(id, true) on the old index. c = this.UIDocument.Document.FamilyCreate.NewCurveByPoints(refPtArr); this.Elements[0] = c.Id; } } else { c = this.UIDocument.Document.FamilyCreate.NewCurveByPoints(refPtArr); this.Elements.Add(c.Id); } c.IsReferenceLine = isRefCurve; return(Value.NewContainer(c)); }
private void setBoxes(FSharpList <Tuple <int, bool> > list) { int index = 0; foreach (Rectangle p in ChexGrid.Children) { var tp = list[index++]; if (tp.Item2) { p.Fill = checkColor; } else { p.Fill = neighborColors[tp.Item1]; } p.Tag = tp; } }
public override Value Evaluate(FSharpList <Value> args) { var pts = (args[0] as Value.List).Item; var ptList = AsGenericList <XYZ>(pts); XYZ meanPt; List <XYZ> orderedEigenvectors; PrincipalComponentsAnalysis(ptList, out meanPt, out orderedEigenvectors); var results = FSharpList <Value> .Empty; results = FSharpList <Value> .Cons(Value.NewContainer(meanPt), results); results = FSharpList <Value> .Cons(Value.NewContainer(orderedEigenvectors[0]), results); return(Value.NewList(results)); }
public void ListGraph() { // 7 --> 6 --> 5 --> 4 --> 3 --> 2 --> 1 FSharpList <int> expected = ListModule.OfArray(new[] { 7, 6, 5, 4, 3, 2, 1 }); FSharpList <Tuple <int, int> > input = ListModule.OfArray(new[] { new Tuple <int, int>(2, 1), new Tuple <int, int>(3, 2), new Tuple <int, int>(4, 3), new Tuple <int, int>(5, 4), new Tuple <int, int>(6, 5), new Tuple <int, int>(7, 6) }); FSharpList <int> result = sortGraph <int>(input); Assert.AreEqual(expected, result); }
private Dictionary <string, HalLink> HeapTokenLinks(FSharpList <Tuple <string, FSharpList <String> > > heap, string contextKey, HttpRequest request) { // Request.Url.Scheme Dictionary <string, HalLink> links; if (heap.IsEmpty) { links = new Dictionary <string, HalLink>(); links.Add("eval", TokenLink("eval", contextKey, request)); } else { links = HeapTokenLinks(heap.Tail, contextKey, request); links.Add(heap.Head.Item1, TokenLink(heap.Head.Item1, contextKey, request)); } return(links); }
private static void VisitDeclarations(FSharpList <SynModuleDecl> decls) { foreach (SynModuleDecl declaration in decls) { if (declaration.IsLet) { foreach (var binding in ((SynModuleDecl.Let)declaration).bindings) { VisitPattern(binding.headPat); VisitExpression(binding.expr); } } else { Console.WriteLine(" - not supported declaration: " + declaration); } } }
public override FScheme.Value Evaluate(FSharpList <FScheme.Value> args) { if (PickedSunAndShadowSettings == null) { throw new Exception("The sun and shadow settings have not been selected. Click to pick the sun and shadow settings from the active view."); } if (PickedSunAndShadowSettings.Id.IntegerValue == sunAndShadowSettingsID.IntegerValue) // sanity check { XYZ sunVector = GetSunDirection(PickedSunAndShadowSettings); this.data = FScheme.Value.NewContainer(sunVector); return(data); } else { throw new Exception("SANITY CHECK FAILED"); } }
private static GeneticModels.SimulationResult WrapStateToResult(States.GameState state) { // Use dirty trick with wrapping state into simulation result to use it in view. var states = new FSharpList <States.GameState>( state, FSharpList <States.GameState> .Empty ); var indiviaualWorld = new GeneticModels.IndividualWorldResult(0.0, states); var results = new FSharpList <GeneticModels.IndividualWorldResult>( indiviaualWorld, FSharpList <GeneticModels.IndividualWorldResult> .Empty ); var brain = new GeneticModels.ActorChromosome(FSharpList <double> .Empty, 0); return(new GeneticModels.SimulationResult(0.0, results, brain)); }
public void Draw(FSharpMap <FieldCoords, FieldState> state, FSharpList <Tuple <FieldCoords, FSharpOption <FieldCoords>, FieldCoords> > validMoves) { State = state; _ValidMoves = validMoves; Bitmap bmp = new Bitmap(_CanvasSize, _CanvasSize); Graphics canvas = Graphics.FromImage(bmp); DrawGrid(canvas); DrawFields(canvas); //DrawPossibleMoves(canvas); //DrawCoords(canvas); canvas.Flush(); canvas.Dispose(); _MainPictureBox.Image = bmp; }