st work on lists? There may be a good reason for this, I just cuoldn't work it out while skimming the code.
2) I'd recommend declaring variables at the last possible moment, not all at the top of the file. It makes it very difficult to see what variable is used where that way. Also, if you change code, it's a lot of work figuring out what variables just became obsolete.
3) In VB.NET you can declare for loop iteration variables inside the loop, cleaning up the code: For t As Integer = 0 To X
4) If statements with conditionals should not be written like this: If (value = False) Then. There's nothing technically wrong with it, but the general rule is to write If (Not value) Then or If (value) Then.
5. Things like k = k+1 can be written shorter in VB.NET, namely k += 1. I just think that looks cooler :)
6. In VB.NET, Exit Sub is still legal (for legacy purposes) but the Return keyword is to be preferred.
7. I'm happy to see you're using sensible variable names and casing.
8. For a program like Grasshopper, one would expect to get the same results when the same setup is run at a later time. That means creating Random instances with a fixed seed value, not DateTime.Now.Millisecond. If your result depends in any way on the seed value, it should be kept constant.
On the whole pretty good work, code is quite self-documenting, properly commented and fast. Hats off.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
2. See this? It's a abstract (for the moment) layout of some WIP thing: Imagine a region where "evenly" random points are placed (and then a random zNoise is added) - then a ball-pivot/delauney triangulation is applied ... then ... :
2. I use my method to create "even" points (I suspect that David's is way better/faster/cooler ... but anyway): after a random point is found (inside the region) an additional check is performed: think of the point as a "candidate" that must "pass" a 2nd constrain: if the min distance from all the already found (random) points is smaller than a user defined one > reject and try again (the "try-again" thing [call it: min distance "loops"] is also user controllable). Thus that C# captured attempts to place 122 points but due to (a) the min distance constrain AND (b) the low (about 8 in this case) amount of "try-again" loops it finishes with "only" 59 (not a big deal for this case). The interesting part is that the attempts required are 1573 (~30 times the random points returned). Of course there's a lot of factors affecting this 1573 (variable) thing ... but don't stick to that.
3. So if David uses a "similar" culling method (add some " " more, he he) ... for 80K points ... well we are talking about a BIG number of attempts.
I can provide you with a "no-even" random points C# that (I assume/guess/hope) can speed things a bit (after all: who's gonna notice an "even" random distribution of 80K points within a micro cube?).
best, Peter
…
Component its manage a CSV like a Database, i found that the csv native Python module doesn't work in IronPython cuz its compiled in PythonC (or something like this), so i found a .Net module that can be imported to IronPython to work with CSV file
So Here a
Pseudo Code of my Toughs
1 - Import .net Module.
2 - Read Csv File. by a Path Assigned by interactive Imput.
3 - Identify the Header of The Csv File.
4 - Create a List of the Fields found in the Csv Header for Further (Sorting, Retrieve specific, create relations with others files by fields in commons, etc. etc. (whatever can imagine))
5 - Read the Data of the Csv File
6 - Out put the Attributes of the Header. (simple list of the fields to identify with what we deal for )
7 - Out Put a list of all the Attributes of the Header ( Complete List of the Fields by Rows Found in the Csv File.
8 - Out Put a list of all the Data inside the Csv File in relation with the Point 7.
over here's my thoughts Any Comment or Suggetions for the Component ?
i will be posting a Github for this, to all who want to collaborate with this.
i'm doing this cuz i'm dealing with a lot of amount of data in my Thesis Project, wich its focus on managing Shapes files, and Csv Files of Data that are not in the same dataset, so i need to relationate a lot of things just to develop my examinations techniques about the city.
…
nded from the centerline at a specified thickness, which may vary along the stent.Two parameters, tmid and tend, control thickness variation
along the segment’s longitudinal direction according to the kinematically admissible Hermitian
curve:
t (d) = tend + t(3d2 − 2d3) 0 ≤ d ≤ 1
t = tmid − tend
where d is the normalized distance along the segment’s
NURBS curve between its endpoint and midpoint. This
form ensures there are no discontinuities in thickness at
the segment midpoint or at the interface of segments in the
overall stent.
2)These normals are then checked and subject to a filleting
procedure to remove re-entrant corners, resulting in
two external sets of boundary coordinates defining the
external edges of the segment’s mid-plane.
3) This plane of nodes is then extruded at a specified angle
(see Section 2.3) to generate a 3-D set of nodes defining
the finite element mesh.
4) These nodes are then mapped to cylindrical coordinates.
5) Finally, 20-node brick elements are generated for finite
element analysis.
I have generated the centerline using 8 control points with degree 7 .
Would be great if anyone can help me with the drawing the normals from the centerline of specified length governed by Hermitian equation,so as to generate the 2D model of a stent (Please refer to the attached figure of a 2D stent and extruded figure) ,using Grasshopper.
The centerline of a single stent segment is representedas a NURBS curve.…
o it would cause troubles with unfolding and fabricating... that's why I used Extrude point component- it will give you similar result, but all surfaces are planar.. you can control extrusion direction with a tip point in rhino...
2)I changed tagging so every tube has 8 points form list A and 8 points from list B... first number of tag is a number of point within one tube... last number of the tag is order of tubes (I draw a little picture in GH, hope you'll understand)...I think original way of tagging wasn't really usefull.. but you can change tagging by yourself...
3) the definition is really messy, sorry about that, but it's just quite complicated task...
4)if you find some incorrect order of tagging, use the slider that controls Shift List component ... it will shift tagging..
5) if you won't be using this definition or find some better way, pleeeease don't tell me - I'll jump out the window :D ... it took me whole day to make it work :D
6)I can't guarantee you anything- I hope it works, but if not - at least I tried... so check everything (especially order of tags and points) twice before you fabricate it.. or print few tubes and make them paper first..
7)there is a part of original definition, that is not useful anymore.. I left it there, but you can delete it (I called it "UNUSED PARTS OF ORIGINAL FILE")
..good luck
Dimitri…
ow the steps of the successful run when step 1.2 is bypassed (note that the and OpenFOAM session is open in the background while running the Butterfly demo file):
1. create wind tunnel, and use different parameters of (4,4) for _globalRefLevel_ as suggested by Theodoro in this post
2. run blockMesh:
3. run snappyHexMesh:
4. run checkMesh:
5. connect the case from checkMesh to simpleFOAM and run the simulation:
6. the simulation converged at 1865 iteration, but the results visualization part has some problem:
7. so I revised this part according to suggestions from Hagit:
8. and the results can be visualized for P and U values:
The GH file used for the successful run shown above is attached here.
Now, the following is the error I got when the case from the update fvScheme component is used for simpleFOAM simulation:
the warning message on the simpleFOAM component is:
1. Solution exception: --> OpenFOAM command Failed!#0 Foam::error::printStack(Foam::Ostream&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #1 Foam::sigFpe::sigHandler(int) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #2 ? in "/lib64/libc.so.6" #3 double Foam::sumProd<double>(Foam::UList<double> const&, Foam::UList<double> const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #4 Foam::PCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #5 Foam::GAMGSolver::solveCoarsestLevel(Foam::Field<double>&, Foam::Field<double> const&) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #6 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #7 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #8 Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libfiniteVolume.so" #9 Foam::fvMatrix<double>::solve(Foam::dictionary const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #10 Foam::fvMatrix<double>::solve() in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #11 ? in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #12 __libc_start_main in "/lib64/libc.so.6" #13 ? in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam"
The error message from the readMe! output node is attached below as a text file.
Hope you can kindly advise what the important steps or parameters I might have missed here. I assume it might be related to OpenFOAM rather than with the Butterfly workflow...
Thank you very much!
- Ji
…
lName, signalValue, operationMode):
sigV=signalValue
if sys.version_info[0] == 3:
if type(signalName) is str:
signalName=signalName.encode('utf-8')
if type(signalValue) is bytearray:
sigV = (ct.c_ubyte*len(signalValue))(*signalValue)
if type(signalValue) is str:
signalValue=signalValue.encode('utf-8')
sigV = (ct.c_ubyte*len(signalValue))(*signalValue)
else:
if type(signalValue) is bytearray:
sigV = (ct.c_ubyte*len(signalValue))(*signalValue)
if type(signalValue) is str:
signalValue=bytearray(signalValue)#<========This is line 1052
sigV = (ct.c_ubyte*len(signalValue))(*signalValue)
sigV=ct.cast(sigV,ct.POINTER(ct.c_ubyte)) # IronPython needs this
return c_WriteStringStream(clientID, signalName, sigV, len(signalValue), operationMode)
It displays the following error:
Program started
Connected to remote API server
Runtime error (TypeErrorException): unicode argument without an encoding
Traceback:
line 1052, in simxWriteStringStream, "C:\Program Files (x86)\V-REP3\V-REP_PRO_EDU\programming\remoteApiBindings\python\python\vrep.py"
line 70, in script
Any hint?…
na cubierta o una estructura sigue en pie; presentar el router cnc en el evento depende del ejercicio práctico, para mayores informes no duden en escribir a luzyextura@gmail.com o a las oficinas de Bishon en Querétaro
_______________________________________________________
Workshop de arquitectura paramétrica mediante procesos digitales.
El temario incluye aspectos básicos y medios del modelado en Rhino, tanto de dibujo como de objetos en 3D, y las funciones de Grasshopper como una herramienta para el diseño paramétrico.
Al finalizar el curso, los asistentes serán capaces de manejar Rhinoceros y Grasshopper en un nivel medio, también comprenderán todas las herramientas básicas y el estilo de trabajo.
Además del contenido teórico se incluye un ejercicio práctico, que consiste en la producción de un modelo 3D, abarcando desde las ideas generadoras, el diseño, dibujo de piezas para su fabricación y construcción final.
El workshop tiene dos semanas de duración, con un horario de 8 am a 3 pm, el costo para estudiantes es de $4590, para la comunidad en general $4900. 35% descuento antes del 22 de julio
Informes bishion@mail.com, luzytextura@gmail.com.
Teléfono en Querétaro 4422 75 2863
Teléfono en la Ciudad de México 04455 4381 3302…