hi, I am trying to translate a certain code from vb to python .
More precisely it is a circle packing code which can be found her : https://tobias-schwinn.net/2010/03/08/a-spiral-approach-to-circle-packing/ .
Given that I am quite new to scripting language overall, I wonder whether there is any sort of guides or anything of a kind that would help me understand better the used syntaxes. I did search quite a bit, but the syntax use seem to be rather complex so I found myself not being able to know where to start with the conversion.
I did also try a few online vb script to python or even to C#(in case of the slight chance it would be a bit clearer for me) yet it mostly resulted in errors.
Therefore are there any pertinent guides or anything of a kind that would make my conversion easier or actually “do-able” ?
Thank you for any feedback, all the best
I am well aware that there may be a lot of mistake in the attempt to translate the script, but I am quite new to scripting yet I kind off need to flashforward learning python as it is required for a school project I am working on CirclePacking.gh (17.1 KB)
I did read the python primer. And I am still looking at it as well as the vb “guides” and examples. Yet I am still confused if referring to certain lines such as:
Dim intCurrCenter As Int32 = 0
Dim oCenterCircle As OnCircle = Circle_List.Item(intCurrCenter)
intCurrCenter is being declared as a variable of 32 bit integer type (Int32) and being set to 0.
I don’t know what the second one is (I’ve never programmed in VB, only vbscript), but it looks like a variable (oCentreCircle) of class OnCircle, whatever that is.
hm, weirdly don’t remember reading anything similar to the 32 bits integer set to a number ( If I am not wrong, this operation is to locate the item 0 from a list, more like the first point from the recovered items)
Whoa, looks like that definition dates back 8 years ago and uses a legacy version of the VB scripting component which directly references the C/C++ OpenNURBS library…
From what I understand, the classes OnCircle, On3dVector etc. would be the underlying lower-level constructs that are wrapped inside the easier-to-use RhinoCommon library for modern components. The latter is what GhPython uses when you import Rhino at the top of your script http://developer.rhino3d.com/api/RhinoCommon/html/N_Rhino.htm
You’d have to find the equivalent RhinoCommon classes and methods to implement the code logic, or even as the rhinoscriptsyntax wrappers to RhinoCommon for an even more beginner-friendly alternative: http://developer.rhino3d.com/api/RhinoScriptSyntax/
Is that enough to go on? I’m not very familiar with VB myself but could take a shot at it later - If it’s just general circle packing you’re trying to achieve, I think there are other more recent scripts and definitions on the forums you can search for.
Thank you for your answer !! damn, I didn’t even realise it was an oldversion of vb. now it makes sence why I couldn’t figure anything out .
Well, I guess I’ll just try to recreate the acode other ways.
I did look for scripts but this one is as close to what I need in terms of how it creates the circle packing. ( I did try a decent numbers of grasshopper definition including the use of kangaroo, but the end result wasn’t satisfying. Hence the reason I decided to try and script it in order to have more control over it) . But I didn’t really find any python script except a tutrial from http://designalyze.com/intro-scripting-python-rhino/intro-python-scripting-17-simple-growth-01 except that I need to create the circles or spheres using the math formula present in the vb instead of the way he uses which I am currently trying to do, hoping that I’ll able to achieve the desired result
The circle packing “tree” looked interesting so I had a go at mechanically translating the VB script logic to Python- the result is definitely not good Python style but it works. ( original code used a Goto statement! )
Kinda disappointed to find out the algorithm basically brute-forces the circle packing, and runs in quadratic time ( you really don’t want to use it on larger numbers of circles )
well it is a recursive code, only thing I’m going to try is create the packing is do a sort of generation of the circles instead of “rearranging” them. But I still want to use K. Steephenson’s equation since I need the circles to be “perfeclty” tangent. Thanks again! you’re the best !
I wonder whether it would be possible to limit the circle’s radius to 1 or 2 values. Otherwise having all circles with the same radius, or the radius being either 5 or 6 for example. I did try certain things withing grasshopper, but I didn’t succed for now.