protected override void SolveInstance(IGH_DataAccess DA) { var tree = new GH_Structure <GH_Number>(); if (!DA.GetDataTree(0, out tree)) { return; } var X = new double[tree.Branches.Count][]; for (int d = 0; d < tree.Branches.Count; d++) { X[d] = new double[tree.Branches[d].Count]; for (int i = 0; i < tree.Branches[d].Count; i++) { X[d][i] = tree.Branches[d][i].Value; } } var labels = new List <string>(); if (!DA.GetDataList(1, labels)) { ghGrid = new GH_Grid(X); } else { ghGrid = new GH_Grid(X, labels); } DA.SetData(0, ghGrid.Value.Info()); DA.SetData(1, ghGrid); }
protected override void SolveInstance(IGH_DataAccess DA) { ghGrid = new GH_Grid(); if (!DA.GetData(0, ref ghGrid)) { return; } if (GridHasChanged()) { hasValidControls = false; point = new IvyCore.Parametric.Point(ghGrid.Value); // cache a DeepCopy ghGridCache = ghGrid.DeepCopy(); this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Grid Has Changed. Reset Controls via Menu."); this.Message = "Select Controls in Menu"; } // If controls are valid, then compute the point if (hasValidControls) { UpdatePoint(DA); DA.SetDataList(1, point.Coord); DA.SetData(2, point.CellIndex()); } else { this.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Grid Has Changed. Reset Controls via Menu."); this.Message = "Select Controls in Menu"; } DA.SetData(0, ghGrid.Value.Info()); }
protected override void SolveInstance(IGH_DataAccess DA) { if (!DA.GetData(0, ref ghGrid1)) { return; } ghGrid2 = new GH_Grid(ghGrid1.Value.Normalize()); DA.SetData(0, ghGrid2.Value.Info()); DA.SetData(1, ghGrid2); }
protected override void SolveInstance(IGH_DataAccess DA) { var ghGrid = new GH_Grid(); var address = new List <int>(); if (!DA.GetData(0, ref ghGrid)) { return; } if (!DA.GetDataList(1, address)) { return; } var index = ghGrid.Value.NodeIndex(address); DA.SetData(0, index); }
protected override void SolveInstance(IGH_DataAccess DA) { var ghGrid = new GH_Grid(); var list = new List <double>(); if (!DA.GetData(0, ref ghGrid)) { return; } if (!DA.GetDataList(1, list)) { return; } point = new IvyCore.Parametric.Point(ghGrid.Value, list.ToArray()); DA.SetDataList(0, point.Coord); DA.SetData(1, point.CellIndex()); }
protected override void SolveInstance(IGH_DataAccess DA) { var ghGrid = new GH_Grid(); var list = new List <double>(); if (!DA.GetData(0, ref ghGrid)) { return; } if (!DA.GetDataList(1, list)) { return; } point = new IvyCore.Parametric.Point(ghGrid.Value, list.ToArray()); var cellIndex = point.CellIndex(); var LERP = ghGrid.Value.Cells[cellIndex].GetInterpolant(point); DA.SetDataList(0, point.Coord); DA.SetDataList(1, point.Normalized()); DA.SetData(2, cellIndex); DA.SetData(3, new GH_Interpolant(LERP)); }
protected override void SolveInstance(IGH_DataAccess DA) { var ghGrid = new GH_Grid(); var index = -1; if (!DA.GetData(0, ref ghGrid)) { return; } var nodes = new List <GH_Node>(); if (!DA.GetData(1, ref index)) { for (int i = 0; i < ghGrid.Value.NodeCount; i++) { nodes.Add(new GH_Node(ghGrid.Value.Nodes[i])); } } else { if (index < 0 || index >= ghGrid.Value.NodeCount) { for (int i = 0; i < ghGrid.Value.NodeCount; i++) { nodes.Add(new GH_Node(ghGrid.Value.Nodes[i])); } } else { nodes.Add(new GH_Node(ghGrid.Value.Nodes[index])); } } DA.SetDataList(0, nodes); }
protected override void SolveInstance(IGH_DataAccess DA) { var launch = false; if (!DA.GetData(8, ref launch)) { return; } if (launch) { var path_wd = ""; var ghActuationGrid = new GH_Grid(); var ghShapeGrid = new GH_Grid(); var ghNode_list = new List <GH_Node>(); var mesh_list = new List <Mesh>(); var A1_tree = new GH_Structure <GH_Integer>(); var A2_tree = new GH_Structure <GH_Integer>(); var BC_tree = new GH_Structure <GH_Integer>(); if (!DA.GetData(0, ref path_wd)) { return; } if (!DA.GetData(1, ref ghShapeGrid)) { return; } if (!DA.GetData(2, ref ghActuationGrid)) { return; } if (!DA.GetDataList(3, ghNode_list)) { return; } if (!DA.GetDataList(4, mesh_list)) { return; } if (!DA.GetDataTree(5, out A1_tree)) { return; } if (!DA.GetDataTree(6, out A2_tree)) { return; } if (!DA.GetDataTree(7, out BC_tree)) { return; } string workingDir = Path.GetDirectoryName(path_wd.ToString()); string filename = Path.GetFileName(path_wd.ToString()); //CleanWorkingDir(workingDir); int n = ghNode_list.Count; var inp_tree = new DataTree <string>(); var grid_actu = ghActuationGrid.Value; var grid_shape = ghShapeGrid.Value; var grid_global = grid_actu * grid_shape; var culture = new CultureInfo("en-GB"); string filePath; for (int i = 0; i < n; i++) { var node = ghNode_list[i].Value; var mesh = mesh_list[i]; var A1 = A1_tree[i].ConvertAll <int>(ghInt => ghInt.Value); var A2 = A2_tree[i].ConvertAll <int>(ghInt => ghInt.Value); var BC = BC_tree[i].ConvertAll <int>(ghInt => ghInt.Value); // HEADER var localDate = DateTime.Now.ToString(culture); var header = new List <string>(); header.Add("Author : Lionel du Peloux"); header.Add("email : [email protected]"); header.Add("date : " + localDate); header.Add("node : " + node.Index.ToString("D2")); // CREATE INP BUILDER var vertexList = AbaqusProblemBuilder.MeshVerticesToArray(mesh); var faceList = AbaqusProblemBuilder.MeshFacesToArray(mesh); var builder = new AbaqusProblemBuilder(vertexList, faceList, A1, A2, BC); // CREATE INP CONTENT var inp_str = builder.GetInp(header); inp_tree.AddRange(inp_str, new GH_Path(i)); // CREATE SUBDIR FOR INP FILE var subDir = Path.Combine(workingDir, node.Index.ToString("D2")); Directory.CreateDirectory(subDir); // WRITE INP FILE filePath = subDir + "\\" + "model" + ".inp"; File.WriteAllLines(filePath, inp_str); File.Move(filePath, Path.ChangeExtension(filePath, ".inp")); } // CREATE PY CONTENT List <string> py_str; // WRITE PY FILE (MODEL_PRE) py_str = AbaqusProblemBuilder.GetPy_PRE(grid_actu); filePath = workingDir + "\\" + "model_pre.py"; File.WriteAllLines(filePath, py_str); File.Move(filePath, Path.ChangeExtension(filePath, ".py")); // WRITE PY FILE (MODEL_RUN) py_str = AbaqusProblemBuilder.GetPy_RUN(); filePath = workingDir + "\\" + "model_run.py"; File.WriteAllLines(filePath, py_str); File.Move(filePath, Path.ChangeExtension(filePath, ".py")); // WRITE PY FILE (MODEL_ODB) py_str = AbaqusProblemBuilder.GetPy_ODB(); filePath = workingDir + "\\" + "model_odb.py"; File.WriteAllLines(filePath, py_str); File.Move(filePath, Path.ChangeExtension(filePath, ".py")); // WRITE DB FILE var dbPath = workingDir + "\\" + "data.db"; try { SQLiteConnection.CreateFile(dbPath); } catch (Exception) { } using (var connection = new SQLiteConnection("Data Source = " + dbPath)) { connection.Open(); using (var cmd = new SQLiteCommand(connection)) { cmd.Transaction = connection.BeginTransaction(); // FIELD ACTU cmd.CommandText = "CREATE TABLE FIELD (ACT INT, SHP INT, NODE INT, X REAL, Y REAL, Z REAL, DX REAL, DY REAL, DZ REAL)"; cmd.ExecuteNonQuery(); // GRIDS SqlWriteGrid(grid_actu, "ACT", cmd); SqlWriteGrid(grid_shape, "SHP", cmd); SqlWriteGrid(grid_global, "GLB", cmd); // SHELL TOPO SqlWriteShellTopology(mesh_list[0], cmd); SqlWriteShapeField(grid_shape.Nodes, mesh_list, cmd); cmd.Transaction.Commit(); } connection.Close(); } DA.SetDataTree(0, inp_tree); } }