public ColorRange1D ComputeColorRange(EngineController engine) { List <Color> colors; List <double> parameters; // If there are colors supplied if (InPorts[0].Connectors.Any()) { var colorsNode = InPorts[0].Connectors[0].Start.Owner; var colorsIndex = InPorts[0].Connectors[0].Start.Index; var startId = colorsNode.GetAstIdentifierForOutputIndex(colorsIndex).Name; var colorsMirror = engine.GetMirror(startId); colors = GetColorsFromMirrorData(colorsMirror); } else { colors = DefaultColorRanges.Analysis; } // If there are indices supplied if (InPorts[1].Connectors.Any()) { var valuesNode = InPorts[1].Connectors[0].Start.Owner; var valuesIndex = InPorts[1].Connectors[0].Start.Index; var endId = valuesNode.GetAstIdentifierForOutputIndex(valuesIndex).Name; var valuesMirror = engine.GetMirror(endId); parameters = GetValuesFromMirrorData(valuesMirror); } else { parameters = CreateParametersForColors(colors); } return(ColorRange1D.ByColorsAndParameters(colors, parameters)); }
/// <summary> /// Gets the provided scene contexts from input node(s). /// </summary> /// <param name="engineController">Dynamo engine controller</param> /// <param name="inPortNo">InPort number</param> /// <returns>An array of inputs with their AST identifier</returns> public AstValue <T>[] GetCachedAstInput <T>(int inPortNo, EngineController engineController) { var nodes = InPorts[inPortNo].Connectors.Select(c => (c.Start.Index, c.Start.Owner)); var idNodes = nodes.Select(n => n.Owner.GetAstIdentifierForOutputIndex(n.Index)); return(idNodes.SelectMany(idn => UnwrapAstValue <T>(engineController.GetMirror(idn.Name)?.GetData(), idn)).ToArray()); }
internal static List <IGraphicItem> GeneratedGraphicItems(this NodeModel node, EngineController engineController) { var ids = node.GetAllOutportAstIdentifiers(); var results = new List <IGraphicItem>(); foreach (var id in ids) { var mirror = engineController.GetMirror(id); if (mirror == null) { continue; } var mirrorData = mirror.GetData(); if (mirrorData == null) { continue; } GetGraphicItemsFromMirrorData(mirrorData, results); } return(results); }
protected override void HandleTaskExecutionCore() { if (nodeGuid == Guid.Empty) { throw new InvalidOperationException( "UpdateRenderPackageAsyncTask.Initialize not called"); } var idEnum = drawableIdMap.GetEnumerator(); while (idEnum.MoveNext()) { var mirrorData = engineController.GetMirror(idEnum.Current.Value); if (mirrorData == null) { continue; } GetRenderPackagesFromMirrorData( idEnum.Current.Key, mirrorData.GetData(), previewIdentifierName, displayLabels); } }
/// <summary> /// Gets the provided scene contexts from input node(s). /// </summary> /// <param name="engineController">Dynamo engine controller</param> /// <param name="inPortNo">InPort number</param> /// <returns>An array of inputs</returns> public T[] GetCachedInput <T>(int inPortNo, EngineController engineController) { var nodes = InPorts[inPortNo].Connectors.Select(c => (c.Start.Index, c.Start.Owner)); var ids = nodes.Select(n => n.Owner.GetAstIdentifierForOutputIndex(n.Index).Name); var data = ids.Select(id => engineController.GetMirror(id)?.GetData()); return(data.SelectMany(Unwrap <T>).Distinct().ToArray()); }
protected override void HandleTaskExecutionCore() { var runtimeMirror = engineController.GetMirror(variableName); if (runtimeMirror != null) { cachedMirrorData = runtimeMirror.GetData(); } }
protected override void HandleTaskExecutionCore() { if (nodeGuid == Guid.Empty) { throw new InvalidOperationException( "UpdateRenderPackageAsyncTask.Initialize not called"); } var data = from varName in drawableIds select engineController.GetMirror(varName) into mirror where mirror != null select mirror.GetData(); var labelMap = new List <string>(); foreach (var mirrorData in data) { AddToLabelMap(mirrorData, labelMap, previewIdentifierName); } int count = 0; foreach (var drawableId in drawableIds) { var graphItems = engineController.GetGraphicItems(drawableId); if (graphItems == null) { continue; } foreach (var graphicItem in graphItems) { var package = new RenderPackage(isNodeSelected, displayLabels) { Tag = labelMap.Count > count ? labelMap[count] : "?", }; try { graphicItem.Tessellate(package, tol: -1.0, maxGridLines: maxTesselationDivisions); } catch (Exception e) { System.Diagnostics.Debug.WriteLine( "PushGraphicItemIntoPackage: " + e); } package.ItemsCount++; renderPackages.Add(package); count++; } } }
/// <summary> /// Gets the provided scene contexts from output node(s). /// </summary> /// <param name="engineController">Dynamo engine controller</param> /// <param name="outPortNo">OutPort number</param> /// <returns></returns> public T[] GetCachedOutput <T>(int outPortNo, EngineController engineController) { var data = engineController.GetMirror(GetAstIdentifierForOutputIndex(outPortNo).Name)?.GetData(); if (null == data) { return new T[] { } } ; else { return(Unwrap <T>(data).Distinct().ToArray()); } }
/// <summary> /// /// </summary> /// <param name="selectedItems"></param> public void PopulateItems(IList selectedItems) { if (!InPorts.Any() || !InPorts[0].Connectors.Any()) { return; } var owner = InPorts[0].Connectors[0].Start.Owner; var index = InPorts[0].Connectors[0].Start.Index; var mirrorName = owner.GetAstIdentifierForOutputIndex(index).Name; var mirror = EngineController.GetMirror(mirrorName); var data = mirror?.GetData(); if (data == null) { return; } if (data.IsCollection) { var counter = 0; foreach (var item in data.GetElements()) { var i = item.Data; var wrapper = new ListItemWrapper { Name = i.ToString(), Index = counter }; var existing = ItemsCollection.IndexOf(wrapper); if (existing != -1) { ItemsCollection[existing].IsSelected = selectedItems.Contains(wrapper); } else { ItemsCollection.Add(wrapper); } counter++; } } }
protected override void HandleTaskExecutionCore() { if (nodeGuid == Guid.Empty) { throw new InvalidOperationException( "UpdateRenderPackageAsyncTask.Initialize not called"); } var data = from varName in drawableIds select engineController.GetMirror(varName) into mirror where mirror != null select mirror.GetData(); foreach (var mirrorData in data) { GetRenderPackagesFromMirrorData(mirrorData, previewIdentifierName, displayLabels, isNodeSelected); } }
private Element GetInputElement() { Element e = null; var owner = InPorts[0].Connectors[0].Start.Owner; var index = InPorts[0].Connectors[0].Start.Index; var name = owner.GetAstIdentifierForOutputIndex(index).Name; var mirror = EngineController.GetMirror(name); if (!mirror.GetData().IsCollection) { var element = (Revit.Elements.Element)mirror.GetData().Data; if (element != null) { e = element.InternalElement; } } return(e); }
public override bool RequestVisualUpdateAsync(IScheduler scheduler, EngineController engine, IRenderPackageFactory factory, bool forceUpdate = true) { try { int index = OutPorts[0].Index; string name = GetAstIdentifierForOutputIndex(index).Name; RuntimeMirror mirror = engine.GetMirror(name); MirrorData data = mirror.GetData(); List <Autodesk.DesignScript.Geometry.Mesh> meshes = GetMeshes(data); _meshes = meshes; IRenderPackage render = factory.CreateRenderPackage(); foreach (Autodesk.DesignScript.Geometry.Mesh m in meshes) { if (m != null) { m.Tessellate(render, factory.TessellationParameters); //var method = render.GetType().GetMethod("SetTransform", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance, null, new[] { typeof(double[]) }, null); //if (method != null) //{ // method.Invoke(render, new object[] { new double[] // { // transform.XAxis.X, transform.XAxis.Y, transform.XAxis.Z, 0, // transform.YAxis.X, transform.YAxis.Y, transform.YAxis.Z, 0, // transform.ZAxis.X, transform.ZAxis.Y, transform.ZAxis.Z, 0, // transform.Origin.X, transform.Origin.Y, transform.Origin.Z, 1 // } // }); //} } } // NOTE: I'm not sure calling the Tessellate method from IGraphicItem is necessary here // but I've tried calling and am leaving it in here just in case I do wind up needing it. //Tessellate(render, factory.TessellationParameters); return(true); } catch { } return(false); }
/// <summary> /// Retrieves input string from connected input node. /// </summary> /// <param name="engine"></param> /// <returns></returns> public string GetInputString(EngineController engine) { string htmlString; // If there is an input supplied if (HasConnectedInput(0)) { // retrieve input string from input var node = InPorts[0].Connectors[0].Start.Owner; var nodeIndex = InPorts[0].Connectors[0].Start.Index; var nodeName = node.GetAstIdentifierForOutputIndex(nodeIndex).Name; var mirrorData = engine.GetMirror(nodeName); D3jsLib.Report report = mirrorData.GetData().Data as D3jsLib.Report; htmlString = report.HtmlString; } else { htmlString = string.Empty; } return(htmlString); }
protected override void HandleTaskExecutionCore() { if (nodeGuid == Guid.Empty) { throw new InvalidOperationException( "UpdateRenderPackageAsyncTask.Initialize not called"); } var data = from varName in drawableIds select engineController.GetMirror(varName) into mirror where mirror != null select mirror.GetData(); var labelMap = new List <string>(); var count = 0; foreach (var mirrorData in data) { AddToLabelMap(mirrorData, labelMap, previewIdentifierName); GetRenderPackagesFromMirrorData(mirrorData, ref labelMap, ref count); } }