es which you can see below in my mesh repair report I ran on the mesh after baking it.
This is a bad mesh.
Here is what is wrong with this mesh: Mesh has 2 non manifold edges. <<------because of the duplicate face Mesh has 1 duplicate face. Skipping face direction check because of positive non manifold edge count.
General information about this mesh: Mesh does not have any degenerate faces. Mesh does not have any extremely short edges. Mesh does not have any naked edges. Mesh does not have any self intersecting faces. Mesh does not have any disjoint pieces. Mesh does not have any unused vertices.
Continuing the repair process does rid the duplicate face. I also realized that rhino 5 has the command called "ExtractDuplicateMeshFaces" which works quite nicely.
However, this "method" is not available in rhinocommon currently. So I just wonder who can I ask to add it? It seems it would make sense to be in rhinocommon considering we have methods available for each of the other tests run by mesh repair. The reason I am interested in this command is it seems to work very fast.
Thanks
…
Added by Michael Pryor at 12:53am on December 11, 2014
If you were not there, you can email me and have me give you a written desk crit.
-The assignment due this week will focus in on one of your ideas and dig in deeper. Please compose a 24"x24" pdf of one final project idea including some of the following:
Specific grasshopper examples
Sketches
Images
Text defining your design limitations, variables, the project at large, and parametric qualities
Please name this LastName_FirstName_FinalProject_PartB.pdf and complete by Monday at 7:00 PM.
-There will be a more complete sheet in the upcoming weeks describing the final project, but here is a sneak peek:
Project Brief: Up until now, you have been using grasshopper to develop, analyze, and fabricate architectural ideas in a very controlled format. The final project is a chance to combine this knowledge with your own design intent and aspirations. The project will use specific deliverables to spur growth, but also allow for you, the designer, to do what you please within the following boundaries.
Requirements:
# open project# must be a design project # story of what you are designing and why you are using grasshopper - specific design intent# must have physical scale model # must have 24” x 36” board - made in Adobe InDesign or Photoshop # grasshopper definition image # 1 artistic rendering - any format - with scale figures # 5 iterations of your project must be presented # 1 diagram to visually describe your project # text describing project # process drawings - photos/sketches/models/other iterations# this is the bare minimum - to have an excellent project, one must go above and beyond these requirements# talk to me if you have out of the box ideas of presenting/ teams / etc...
That is all, have a good week!…
try to get the output. In this case the output needs to be set before requesting for it. I am doing it with this call:
ret = gsaobj.Output_Init_Arr(1,"Global","A1",14003001,3)
In API help the call is documented like this:
short Output_Init_Arr (long iFlags, string sAxis, string sCase, enum ResHeader header, long num1dpos)
so this call has 5 arguments (long, string, string, long, long) (the enums are defined as longs)
This call works, because when I print the ret, i get 0 that is "succeded" so everything works so far.
Then I request the output with the following:
results = []
ret = gsaobj.Output_Extract_Arr(10,results,numcomponents)
In API help the call is documented like this:
short Output_Extract_Arr(long iRef, SAFEARRAY(struct GsaResults)*arrayResults, long* numComponents)
I am getting the error "
Runtime error (ArgumentException): Could not convert argument 1 for call to Output_Extract_Arr."
So it seems that is not accepting 10 as a long in the beginning (assuming that argument 1 is the first). I already tried passing a variable as long, using long(10) there, nothing works.
Furthermore I don't know if the other two variables are correct like that. I come from VBA where I need to declare everything but AFAIK python is more permissive in this sense. "results" should be a dynamic array of objects and "numcomponents" a long.
Any help would be appreciated!
Thanks! :)
…
y working on is a tensegrity structure that uses cables and a tensile fabric to apply traction. The basic cell of the structure is a sail with two parallel rods.
The easy one was the fabric anchored to the extremes of the rod. I got great results with the tensegrity model , very similar to physical models that I was working on.
But then I tried the same thing with the fabric anchored all along the rods, but it proved to be hard (read all the "rod discussion"). I tried the bending force, but was too unstable. The best model I got was by applying different stiffness to the mesh, specifically, to the lines that coincide with the anchors.
It's by no means the solution that I had in mind, but the next days I'll be testing it with the structure. I came across with the next thing to my ideal solution, Daniel's boat (https://vimeo.com/30128894), but I couldn't replicate it. Anyone has some idea of a different, more rigid solution? Even in K2, which I really don't understand yet, but any clue would be helpful.
Aside of that, I was also having trouble applying real values of stiffness. The third archive has the same definition that the first, but with real stiff values (the rods are wood, k=10^7 N/m, cables are nylon k=2x10^5 N/m). I adjusted the timestep and the subiterations, but it doesn't work as stable and smooth as the whatever-stiffness-sail. I don't know if isn't correctly calibrated, or my computer its too old (it pretty old and slow) or simply isn't a good definition.
If anyone has any idea it would be very much appreciated!
Antonio…
curve or locus] of a segment AB, in English. The set of all the points from which a segment, AB, is seen under a fixed given angle.
When you construct l'arc capable —by using compass— you obviously need to find the centre of this arc. This can be easily done in GH in many ways by using some trigonometry (e.g. see previous —great— solutions). Whole circles instead of arcs provide supplementary isoptics —β-isoptic and (180º-β)-isoptic—. Coherent normals let you work in any plane.
Or you could just construct β-isoptics of AB by using tangent at A (or B). I mean [Arc SED] component.
If you want the true β-isoptic —the set of all the points— you should use {+β, -β} degrees (2 sides; 2 solutions; 2 arcs), but slider in [-180, +180] degrees provides full range of signed solutions. Orthoptic is provided by ±90º. Notice that ±180º isoptic is just AB segment itself, and 0º isoptic should be the segment outside AB —(-∞, A] U [B, +∞)—. [Radians] component is avoidable.
More compact versions can be achieved by using [F3] component. You can choose among different expressions the one you like the most as long as performs counter clockwise rotation of vector AB, by 180-β degrees, around A; or equivalent. [Panel] is totally avoidable.
Solutions in XY plane —projection; z = 0—, no matter A or B, are easy too. Just be sure about the curve you want to find the intersection with —Curve; your wall— being contained in XY plane.
A few self-explanatory examples showing features.
1 & 5 1st ver. (Supplementary isoptics) (ArcCapableTrigNormals_def_Bel.png)
2 & 6 2nd ver. (SED) (ArcCapableSED_def_Bel.png)
3 & 7 3rd ver. (SED + F3) (ArcCapableSEDF3_def_Bel.png)
4 & 8 4th ver. (SED + F3, Projection) (ArcCapableSEDProjInt_def_Bel.png)
If you want to be compact, 7 could be your best choice. If you prefer orientation robustness, 5. Etcetera.
I hope these versions will help you to compact/visualize; let me know any feedback.
Calculate where 2 points [A & B] meet at a specific angle is just find the geometrical locus called arco capaz in Spanish, arc capable in French (l'isoptique d'un segment de droite) or isoptic [curve or locus]
of a segment AB, in English. The set of all the points from which a segment,
AB, is seen under a fixed given angle.…
I wanted to use it for a client, really I can't since they will freak out about a weird version of Rhino being needed.
http://discourse.mcneel.com/t/scripting-blendsrf/24635
http://mcneel.myjetbrains.com/youtrack/issue/RH-29978
What you call trivial is the core of your business, the core of your product, meaning Grasshopper user ability to access serious commands or not. This is, after all, one of the most important commands in the entire Rhino universe. Without it, I have to just completely abandon NURBS and edit meshes since I can't join surfaces smoothly so I have to stop using fragments at all and only meshes afford local detail well compared to single NURBS surfaces. Only polysurfaces can mix in little high UV count blends to deal with tight local detail.
I guess I'll switch to the WIP now. Test that, and just tell clients, hey, that's life. It's not exactly easy to find the WIP download, being a hidden "Serengeti" topic on the main Rhino forum, but I can offer the membership link.
http://discourse.mcneel.com/t/how-do-i-actually-download-serengeti/23846
http://www.rhino3d.com/download/rhino/wip
I had to manually install IronPython 2.7.5 too, to fix a broken Python system:
http://ironpython.codeplex.com/releases/view/169382
Now, where on Earth do I find the Rhinocommon manual for Rhino 6 WIP?
I guess it's within the main Rhino EditPythonScript editor, though that can't be searched like a normal manual:
CreateBlendSurface(face0: BrepFace, edge0: BrepEdge, domain0: Interval, rev0: bool, continuity0: BlendContinuity, face1: BrepFace, edge1: BrepEdge, domain1: Interval, rev1: bool, continuity1: BlendContinuity) -> Array[Brep]
Makes a surface blend between two surface edges.
face0: First face to blend from. edge0: First edge to blend from. domain0: The domain of edge0 to use. rev0: If false, edge0 will be used in its natural direction. If true, edge0 will be used in the reversed direction.
continuity0: Continuity for the blend at the start. face1: Second face to blend from. edge1: Second edge to blend from. domain1: The domain of edge1 to use. rev1: If false, edge1 will be used in its natural direction. If true, edge1 will be used in the reversed direction.
continuity1: Continuity for the blend at the start. Returns: Array of Breps if successful.
Now I have normal, productive homework, of figuring out how to specify edges from a Python script.
I'll just sell this extra special capability of Rhino 5 WIP from Grasshopper as a cutting edge advanced new feature other lowly consultants can't match, assuming I can get it to work first.
The initial strategy is to Grasshopper create discrete surfaces, blow holes in a parent surface, scale down and move the little surfaces away, and just blend everything together into a polysurface. Then a client won't freak out so badly when I show them how to use meshes instead, since at least there's an alternative straight from NURBS, that maybe isn't as creatively open ended, but will get them out of a bind if their own client freaks out about meshes converted to NURBS via ZBrush ZRemesher run through T-Splines to get a smooth NURBS polysurface surface that looks like odd patchwork.
Alas, the above Rhinocommon blurb is incomplete, lacking info about what values for continuity are defined as, such as position, tangency, or curvature. I guess I'll just use try numbers.
…