firefly, it inspired us to take it one step further and build a custom UI to control Rhino and replace the OSC app - since it was created originally for DJ's. We're not ready for a public release yet, but since this is the forum where the idea was inspired, I wanted to open up a beta to a few of you guys to try it out and get some feedback on what it's like to control a 3D CAD program from a multi-touch screen. We probably only have room for 10 or 20 people right now, as we have a limit to the number we can add, but if you're interested in trying it out, shoot me a message!Or post here, and we'll figure something out!Oleg.…
hnical University of Denmark, Israel Institute of Technology and Aarhus School of Architecture, TopOpt for Grasshopper provides a number of optimization methodologies that extends currently available methods based on the 99-line MATLAB code for basic mechanical topology optimization provided by prof. Ole Sigmund of DTU.
The current alpha-release features 2d topology optimization based on the interactive optimization app developed for iOS and Android; topology optimization of continuum structures with tension and compression prioritization; and dual material topology optimization for optimization of composite structures with materials of varying properties.
Interactive visualization, 3d-optimization and further methodological extensions will be included in coming updates…
思った感じになりません。
balls の代わりにplanarカーブを直接入れてみましたがエラーが出ます。
ファンクションにしてみたところ、forループので作った数値が反映されていません。
ファンクションのインスタンス?を出力していないと思い上記のようにしましたがエラーが出てしまいます。
以上の事から自分の認識が正しいのかよくわからなくなりました・・・
python自体の深いところをわかっているわけではないので余計こんがらがりました。
そこで、for b in ballsはどのような条件または使い方であれば使えるのでしょうか?
そして、上記のように別のオブジェクトに対しての使い方はどのようにすればできるのでしょうか?
2:同じファンクション内のdist = rs.Distance(self.pos,b.pos)についてですが
この文章も for b in balls によってbはBallのインスタンスであると定義?されたためb.posがbの位置であると分かるのでしょうか?
pythonは定義しなくても動いてしまうのでどのような時に使えるのか文章見ただけではよくわかりません・・・
大変細かいことかもしれませんが、よりpythonをしっかりと理解するためにも、どなたかわかる方ご教授いただけると幸いです。…
-life fabrication issues ... then ... well ... that's the reason for the Skype.
2. In general I would say that exploiting parametric "arrangements" (in the broad sense) is less than 5% of the whole ... given the fact that in real-life there's a lot of other constrains. Again using Kim's IKEA note: for instance packaging (at least for the magnitude of IKEA's business) is rather more important than ANY smart of stupid design.
3. Reliable components VS Design/Manufacturing cost IS the ultimate "fitness" challenge: this involves bottom-top design disciplines (not doable with Rhino/GH by any means) and ... well... some top dog feature driven MCAD app. Most makers/designers use the cheapo alternatives (SolidWorks/Creo etc etc) and the results ... well .. you get what you've paid for, he he.
4. Why bottom-top may you ask? (and what means this anyway?) Well ... one "connecting node" that would been made 1Z times at the minimum cost possible is a 100 times more challenging task than designing a shelve system that uses that node. See for instance A LOT of IKEA solutions (i.e. the nuts and bolts of them) that are exceptionally flimsy, very badly designed and ... well ... suitable for 1 week's usage (but there's some others that are less faulty). On the other hand IKEA actually serves the ephemeral ... thus ... this MAY be intentional (recycle > buy > recycle > buy > ...).
I buy therefor I exist.
For instance a certain IKEA mold injected "multi join node" for a given series of shelves ... it would sustain less than 5 minutes "abuse" (in case that someone would attempt to "rearrange" things). Moral: reality and theory ARE not the same thing.
I could continue until the end of Time listing "aspects" of the whole puzzle related with production issues ... but for the moment I would conclude by the following:
GH is a good "general" purpose graphic editor and Rhino IS NOT a feature driven solid modelling app. If you combine these 2 ... you can easily outline what you can and what you can't (or shouldn't) do on that subject.…
ay to make some real-life proper nodes for that kind of T truss (we use machined balls solely for MERO KK type of normal trusses).
3. I'll post here soon a modular demo system suitable for this case (real-life for AEC purposes - NOT for decorative/artistic stuff, I don't care about that since I'm an engineer). This would include a policy for the X struts that require a variable linkage (the X angle). and in the same time a multi cable tensioner "bracket".
4. "Basic" coding next week for T trusses ? Er ... well ... are you kidding me right? I mean that ... hmm ...
5. C# things (about 2+K) around me are classified into 2 "groups": things that are weapons in the right hands and others that serve as demos/start points for mostly abstract cases. The former are internal the latter for public use. I'll remove some sensitive lines from a T truss C# maker and I'll post it here as a "guideline" ... for ...hmm... 4.
All in all:
Provided that you have system(s) on hand (see 3) that work 100% OK in an ideal world you'll need:
A. Something that does the general topology AND (especially) clash detection. Maybe Kangaroo as well as a "first pass" with regard rigidity of the structure in case that you don't adopt a classic T "configuration" (there are many > Google tensegrity).
B. Connectivity trees that relate nodes/edges and maybe faces (say for roofing panels/curtain walls etc etc). Without them is impossible to assemble the T thingy.
C: Something that places real-life "parts" as instance definitions and/or (optional) a "tracking variants history" ability.
D. A bullet proof way to EXPORT things (on an assembly/component schema, say: STEP214 - see C) into a proper BIM app (the likes of AECOSim/Revit) and/or into a MCAD app (the likes of CATIA/NX).
E. FEA/FIM in order to validate the structural ability of the components and the T truss itself.
F. Roofing/cladding/envelope components.
G. "Interactive" cost estimation(s) - T trusses are hideously expensive at least versus "classic" trusses (exactly like a planar glazing system that retails 3++ times more than a humble semi-structural one)…
lass BrepDeform Inherits GH_Component Public Reslist As New List(Of String) Public Sub New() MyBase.New("BrepDeform", "Deform", _ "移动物件的控制点" & vbCrLf & "(Move the control Point to change a object)", "SEG", "Modify")
End Sub Public Overrides ReadOnly Property ComponentGuid As System.Guid Get Return New Guid("8226e0ea-ed6b-47c2-8a24-244f044152d8") End Get End Property Protected Overrides ReadOnly Property Internal_Icon_24x24() As System.Drawing.Bitmap Get Return My.Resources.SEG_BrepDeform End Get End Property Protected Overrides Sub RegisterInputParams(ByVal pManager As GH_Component.GH_InputParamManager) ' pManager.AddTextParameter("Guid", "Id", "将要被替换的犀牛物件" & vbCrLf & "(RhinoObjects that will be replaced)", GH_ParamAccess.item) 'Dim guidParam As New Param_Guid pManager.AddParameter(New Param_Guid, "Guid", "Id", "将要被替换的犀牛物件" & vbCrLf & "(RhinoObjects that will be replaced)", GH_ParamAccess.item) pManager.AddPointParameter("ControlPoint3d", "C", "控制点的位置" & vbCrLf & "(Control Point's location)", GH_ParamAccess.item) pManager.AddPointParameter("NewPoint3d", "P", "新控制点的位置" & vbCrLf & "(New Control Point's location)", GH_ParamAccess.item) pManager.AddNumberParameter("Tolerace", "T", "输入点与物件实际控制点对比的精度" & vbCrLf & "(Tolerace for the Control Point match)", GH_ParamAccess.item, 0.1)
pManager.AddBooleanParameter("BlMove", "M", "如果是True则进行移动" & vbCrLf & "(If true Perform the Move)", GH_ParamAccess.item, False)
End Sub Protected Overrides Sub RegisterOutputParams(ByVal pManager As Kernel.GH_Component.GH_OutputParamManager) pManager.AddTextParameter("Result", "RG", "结果列表" & vbCrLf & "(Result)", GH_ParamAccess.list) End Sub Public Overrides ReadOnly Property Exposure As GH_Exposure Get Return GH_Exposure.primary End Get End Property
Protected Overrides Sub SolveInstance(ByVal DA As Kernel.IGH_DataAccess) If Banner.astrict.showmessage Then Return Dim Ids As Guid = Guid.Empty 'Dim Ids As String = String.Empty Dim tpt As Point3d = Point3d.Unset, opt As Point3d = Point3d.Unset Dim tolar As Double = 0.1 Dim blMove As Boolean = False If Not DA.GetData(0, Ids) Then Return If Not DA.GetData(1, opt) Then Return If Not DA.GetData(2, tpt) Then Return If Not DA.GetData(3, tolar) Then Return If Not DA.GetData(4, blMove) Then Return If Not blMove Then GoTo line1 Reslist.Add(Now & "_未替换!(Replace failed!)") Else Reslist.Clear() ' Grasshopper.Instances.ActiveCanvas.ModifiersEnabled = False End If
' rt.AddRange(docobjlist.Select(Function(geoobj As RhinoObject) GH_Convert.ObjRefToGeometry(New ObjRef(geoobj.Id)))) 'Private Checked(5) As Boolean, Namestr() As String = {"Point", "Curve", "Brep", "Mesh", "TextDot", "TextEntity"}
Try
Dim rh As RhinoDoc = Rhino.RhinoDoc.ActiveDoc Dim rhobj As RhinoObject = rh.Objects.Find(Ids) ' Dim rhobj As RhinoObject = rh.Objects.Find(New Guid(Ids))
Dim bobj As BrepObject = CType(rhobj, BrepObject) RhinoApp.RunScript("Cancel", False) RhinoApp.RunScript("Cancel", False) bobj.Select(True)
RhinoApp.RunScript("_SolidPtOn", False) Dim gobjs As GripObject() = bobj.GetGrips ' rh.Views.RedrawEnabled = False For Each grpobj As GripObject In gobjs
If grpobj.CurrentLocation.DistanceTo(opt) < tolar Then grpobj.Select(True) Dim CurrentPln As Plane = RhinoDoc.ActiveDoc.Views.ActiveView.ActiveViewport.ConstructionPlane Dim tropt As New Point3d(opt), trtpt As New Point3d(tpt) tropt.Transform(Transform.PlaneToPlane(Plane.WorldXY, CurrentPln)) trtpt.Transform(Transform.PlaneToPlane(Plane.WorldXY, CurrentPln))
Dim movestr As String = "_move " + String.Format("{0},{1},{2} ", tropt.X, tropt.Y, tropt.Z) + String.Format("{0},{1},{2} _Cancel _Cancel", trtpt.X, trtpt.Y, trtpt.Z) RhinoApp.RunScript(movestr, True) grpobj.Select(False) End If
Next
'RhinoApp.RunScript("Cancel", False) 'RhinoApp.RunScript("Cancel", False) '' rh.Views.RedrawEnabled = True Reslist.Add(Now & "_替换成功!(Replace Success!)") Catch ex As Exception Reslist.Add(Now & "_替换失败!(Replace failed!)" & vbCrLf & ex.Message)
End Try ' Grasshopper.Instances.ActiveCanvas.ModifiersEnabled = True
line1: DA.SetDataList(0, Reslist) End Sub
'Private Sub Testt_PingDocument(sender As IGH_DocumentObject, e As GH_PingDocumentEventArgs) Handles Me.PingDocument ' Dim Mbool = Aggregate bcbool In Checked Into cb = Any(bcbool)
' If Not Mbool Then ' Checked(0) = True ' Message = Namestr(0) ' Order = 0 ' End If 'End Sub
End Class
The picture below shows the two question.
Question One I must use data dam, or the component can't batch deal the brep. I don't know why, I have You can give me a solution to make it working normal not using the data dam
Question Two I can not uset the Button component, If I use it, the gh canvas will die with some mouse event--. I have see this problem before in this forum,but there is no solution and explain. I want to know why and How to solve it.
I don't know if I have made my question clear,if not give a message. Thank you! Thank you all.
The gh test file and 3dm test file in the upload files.
…
n splitting curves and then join them to create the region; but I'am looking for a more straightforward solutions. 3- I know some plugins like clipper could do this, but I'm looking for more flexible solutions.
4- I tried Brep[] CreatePlanarBreps(IEnumerable<Curve>) in ghpython, but it doesn't work.
…
s app NOR Rhino is a BIM thingy) I've decided to switch direction entirely: forget "bending" and concentrate on ways to have "some direct" (add some "" more) clue about wind forces.
V1 is a bit "basic" (no suction, not to mention the MIA remap force vector values thingy) : V2 does a lot of things more (and the test case is far more ... er ... "challenging": a twisted ultra ugly tower, what else? he he).
BTW: other than LBS "bending" ( pro-stuff for proper FEA SA apps: forget it) the most interesting thing is the air infiltration and water penetration min/max "suggested by building codes" values (a bit "elastic" in several countries) that ... are easily blown away if ... wind blows, that is. As Kim said: don't invest on cheapo curtain walls.
more soon …