per components.
I have attached a 3dm file and a picture so you guys can see what I am talking about.
I have previously translated boxes into breps, which i did with this code:
Dim bbx As New box(pl, New interval(-.5, .5), New interval(-.5, .5), New interval(-.5, .5)) Dim ms As New Mesh() ms.Vertices.AddVertices(bbx.GetCorners) ms.Faces.AddFace(0, 1, 2, 3) ms.Faces.AddFace(0, 1, 5, 4) ms.Faces.AddFace(1, 2, 6, 5) ms.Faces.AddFace(2, 3, 7, 6) ms.Faces.AddFace(3, 0, 4, 7) ms.faces.addface(4, 5, 6, 7) ms.Normals.ComputeNormals()
ms.Compact()
I have tried to do something similar with this specific example, and I now that meshes only consist of quads or triangles, so i broke down the geometry into quads without any succes.
Looking foreward to any suggestions.
- Jens…
t, let's talk about randomness. Randomness is a problem in computing because digital computers are deterministic. If you give them the exact same instructions they always end up with the exact same result. It turns out to be mathematically impossible to generate true random numbers using a digital computer, but it is fairly easy to generate pseudo-random numbers. This is actually not bad news as pseudo-random numbers -unlike real random numbers- can be generated again and again and you'll end up with the same random numbers every time. Being able to get the same random numbers on demand increases the reliability of these number sequences which in turn makes them easier to use.
Pseudo-random numbers are numbers that have certain characteristics. Note that when we talk about random numbers we are really talking about numbers. Plural. It's easy to generate only a single one, as xkcd so eloquently put it:
So what are these characteristics that define pseudo-randomness? Without being actually correct, I can sum them up as follows:
The sequence of generated numbers should never repeat itself*
The numbers in the sequence ought to be spread evenly across the numeric domain**
There are a lot of different algorithms out there, some better than others, some faster than others, some solving very specific problems while others are more generic. The generator used in Grasshopper is the standard Microsoft .NET Random, based on Donald Knuth's subtractive algorithm.
So let's imagine we want random integers between 0 and 10. What would a bad random sequence look like?
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 (about as bad as it gets)
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 (not random at all)
1 3 2 5 3 9 1 2 4 2 5 1 1 2 8 1 5 2 3 4 (too many low numbers)
2 8 4 6 0 9 8 2 4 8 6 4 2 2 5 1 4 8 6 2 (too many even numbers)
So what about good sequences? Well, here's a few:
6 9 1 2 0 4 2 8 5 7 2 9 1 9 2 5 3 1 9 2 (sure, why not)
6 2 5 3 4 1 9 7 8 0 2 1 6 4 5 8 9 5 0 9 (looks about right)
1 8 5 2 3 4 5 7 9 5 2 1 0 2 1 0 9 7 6 4 (I suppose)
9 0 6 4 8 3 1 5 2 7 6 1 4 6 0 1 9 7 5 6 (whatever)
There are a lot of valid pseudo-random sequences. (Seriously, loads). So even if we have a good pseudo-random generator we may be given a random sequence that isn't entirely to our liking. The shorter the sequence we need, the more likely it is that statistical aberrations invalidate that particular sequence for us. What we need is some control over the generator so we don't just get a repeatable sequence, but a repeatable sequence we actually like.
Enter seed values. The random generator requires a seed value before it can generate a random sequence. These seed values are always integers, and they can be any valid 32-bit integer. Every unique seed value results in the same sequence. Every time.
Unfortunately there is no clear relationship between seeds and sequences. Changing the seed value from 5 to 6 will result in a completely difference random sequence, and two sequences that are very similar may well have to wildly different seeds. There is therefore no way to guess a good seed value, it is completely trial-and-error. Also because of this extremely discontinuous nature, you cannot use tools like Galapagos to optimize a seed value.
If you are looking for a pseudo-random sequence which has custom characteristics, you may well end up having to write your own generator algorithm. Ask questions about this on the Grasshopper main forum or the VB/C# forum.
Conclusion: Seed values are integers that define the exact sequence of pseudo-random numbers, but there's no way of knowing ahead of time what sequence it will be and there's no way of tweaking a sequence by slightly changing the seed. Even the tiniest change in seed value will result in a radically different random sequence.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
* This is not actually possible. A finite amount of numbers always repeats itself eventually.
** This should only be true for long enough sequences, short sequences are allowed to cluster their values somewhat.
Interesting links for further reading:
Coding Horror: Computers are Louse Random Number Generators
StackOverflow: When do random numbers start repeating?…
Added by David Rutten at 9:52am on October 20, 2012
掌握编程过程中遇到的思路方面和技术方面的问题. 内容包括以下几个方面:
反向逻辑思维能力的培养;
建立清晰的编程逻辑思维能力;
GH 的程序设计理念;
并行数据结构深入理解和控制.
Grasshopper course of McNeel Asia focus on the cultivation of students flexible use of programming techniques, the ability to solve practical problems. Our course deep into the whole process of programming, from programming thinking model, the components principle to usage details do detailed explanation, help students complete mastery programming encountered in the process of thinking and technical aspects, include the following content:
Ability of reverse logical thinking;
Establishment of clear programming logical thinking ability;
The program design concept of Grasshopper;
Understanding parallel data tree structure and how to control it.
更多详细内容... More details…
授课讲师 Instructor 课程由Grasshopper原厂McNeel公司在中国地区的两位 Rhino 原厂技术推广工程师 – Dixon、Jessesn联合授课。课程结束后对达到授课预定目标的学员颁发唯一由Grasshopper原厂认证的结业证书.
Dixon & Jessesn, McNeel Asia Support engineer, by the end of course student who achieve the intended target will get the authentication certificate from McNeel Asia.
课程报名 Register this course 课程即日开始报名, 开课一周前停止报名, 名额满提前报名结束. This course begin to sign up, stop sign up a week ago, with the quota ahead over.
在线报名参加课程...
Sign up to this course…
课程日期 Schedule 7/15-7/20 Beijing 北京 7/26-7/31 Shanghai 上海 7/07-7/12 Shenzhen 深圳
课程范例演示 Samples of Grasshopper course demo
Note: pls follow below comments by Jessesn to see the samples…
ult, my 3dm is very large.
Another problem, when the fonction is ok, the draw in grasshopper is ok, when i bake i have only a litte part of the opération.....
If you could help me, thank you
[Edit] Here the description in the null item :
{0;0}0. Brep: brep.m_T[43047] trim is not valid. trim.m_type = seam, the edge is manifold, but brep.m_L[trim.m_li=1114].m_type is not outer.brep.m_L[1114] loop is not valid. brep.m_T[loop.m_ti[21]=43047] is not valid.brep.m_F[0] face is not valid. brep.m_L[face.m_li[1114]=1114] is not valid.ON_Brep.m_F[0] is invalid.1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. …
} (N=11) {0;1} (N=11) {0;2}(N = 11) {0;3}(N = 11) {0;4}(N = 11)
2. I run the Points that are coming out from the Divide Curve Components through the Path Mapper components with this definition:
{A;B} (i) > {A} (i)
3. I run data coming out from Path Mapper component through:
a) Parameter Viewer component and the result is:
{0} N=11 (data with 1 branches)
b) Point > Panel and the result is:
collection of 11 point (N=11) which is the exactly the same as the collection of point belonging to {0;4} (N = 11).
So, here is the question:
why the collection of points coming out from the Path Mapper {A;B} (i) > {A} (i) component is the same as the collection of points belonging to the curve {0;4}(N = 11) ?
Anyway ... It 's the first time I ask a question here... so I would like to thank you for what you do with your work! Thank you! You are really great!…
bers of point) index
and I called the last point as indexMax
that what I wrote I am sure that I made some mistakes- so if one of you can help me I will be more then glad
If abc(sin(3 * pi() * ptList / ptLast)) < 0.5 Then harmony = 3 = z, 2 = x, 1 = y
A = 0
Else
A = 1
n = 0
For n < ptLast
If A(n) = A(n + 1) Then
Zf(n) = Z(n) + 12 * A(n)
n = n + 1
End If
(n + 4) < ptLast Then
Zf(n) = Z(n) + 12 * A(n)
Zf(n + 4) = Z(n + 4) + 12 * A(n + 4)
Zf(n + 2) = Z(n + 2) + 6
Zf(n + 1) = Z(n + 1) + 6 - 3 * (A(n + 4) - A(n))
Zf(n + 3) = Z(n + 1) + 6 + 3 * (A(n + 4) - A(n))
n = n + 5
End If
Else M = ptLast - n
For n<ptLast
Zf(n) = (ptLast - n) / M * 12 * A(ptLast - M) + Z(n)
n = n + 1
End
Zf(ptLast) = Z(ptLast)
…
this, you'll have no horizontal force at the roller, but you will have it at the pinned support. If you wouldn't, then the structure will be displaced.
Usually, in 2 dimensional structures, if you want to know if an articulated structure is isostatic (as opposed to hyperstatic, which is what you have right now) is to use the following formula:
b+c-2·n=0;
b being the number of bars, c the number of constraints you have and n the number of nodes. In your case: b=19, c=3 (displacements constrained in X, Z at your pinned support and only constrained in Z at your roller support) and n=11, so: 19+3-2·11=0.
I recommend you to download the app SW Truss, as it's very useful to check your results instantly.…