• This forum is the machine-generated translation of www.cad3d.it/forum1 - the Italian design community. Several terms are not translated correctly.

circular series that pays the eye

  • Thread starter Thread starter Davimont
  • Start date Start date

Davimont

Guest
Every now and then I have to make perforated circular platelets and I never know how to create a more or less parametric series and that it is pleasant to the view.

I leave a square to have the material in the corner to make the first hole.

then I make a rectangular series using a smaller circular sketch than the diameter of the plate to limit the series only inside the circle. I care about the distance from the edge to not have holes that drain from the diameter.

If I use a circular series like the external one that you see in the image, then I don't know how to move inside because the number of repetitions should decrease by hand.

do you have any particular techniques?
1713196413255.webp
 
I would look for a generator of equispaced points; For example This is in python but I think it is a topic for which there are several sources. the result to put in an excel sheet and used as input for a pattern.

if there is interest you could write a small program
 
Last edited:
I tell you mine:
- I would take a ratio between hole diameter and circular arc separating two consecutive holes (arch=hole, arc=1.5 hole, arc=2 holes)
- for the outer circular crown I would assume a circumference that is multiple hole + circular arc
- for the diameter of the internal circumferences I would evaluate how many (hole + arc) to remove, so that the step remains equal
- so on until the inner circumference
 
I would look for a generator of equispaced points; For example This is in python but I think it is a topic for which there are several sources. the result to put in an excel sheet and used as input for a pattern.

if there is interest you could write a small program
would be interesting a little program ,, I still try to figure out how the link you recommended works.
I tell you mine:
- I would take a ratio between hole diameter and circular arc separating two consecutive holes (arch=hole, arc=1.5 hole, arc=2 holes)
- for the outer circular crown I would assume a circumference that is multiple hole + circular arc
- for the diameter of the internal circumferences I would evaluate how many (hole + arc) to remove, so that the step remains equal
- so on until the inner circumference
I have not understood much reasoning ,, have you already used this technique on some of your work and have an example to show?
 
I did some tests in python (which I know equal to zero) and the results are very interesting.
"low" pull out the coordinates of the centers and put them in a excel :d
1713250132500.webp
 
with this line you pull out the list of points; for sporadic use you can copy paste into a text file and import it as csv in excel

to multiply according to the size of the object
1713252193467.webp
 
I bring here the program in python with also a small function to print the coordinates of the points multiplied by 100 and rounded to the single decimal. the points list can be imported into an excel sheet to be then used in the table sample.
Code:
from math import sqrt, sin, cos, pi
phi = (1 + sqrt(5)) / 2  # golden ratio

def sunflower(n, alpha=0, geodesic=false):
    points = []
    angle_stride = 360 * phi if geodesic else 2 * pi / phi ** 2
    b = round(alpha * sqrt(n))  # number of boundary points
    for k in range(1, n + 1):
        r = radius(k, n, b)
        theta = k * angle_stride
        points.append((r * cos(theta), r * sin(theta)))
    return points

def radius(k, n, b):
    if k > n - b:
        return 1.0
    else:
        return sqrt(k - 0.5) / sqrt(n - (b + 1) / 2)


# example
if __name__ == '__main__':
    import matplotlib.pyplot as plt
    fig, ax = plt.subplots()
    points = sunflower(150, alpha=0, geodesic=false)
    xs = [point[0] for point in points]
    ys = [point[1] for point in points]
    ax.scatter(xs, ys)
    ax.set_aspect('equal') # display as square plot with equal axes
    plt.show()
    for point in points:
        #print (point)
        #print (str(point[0]* 100) + ',' + str (point[1]*100))
        print (str(round(point[0]*100,1)) + ',' + str(round(point[1]*100,1)))
the code can be used directly on this page:circled uniform distributed points
1713265143122.png
 
@be_on_edge really very interesting discussion for my purposes.
use inventor but the speech of having a list points to import in a excel sheet could be very useful. Unfortunately it is very complicated for me to understand the various procedures you use for the above mentioned procedure so I ask you, your time allowing, to be able to publish a small guide on how to do.
Thank you.
 
@be_on_edge but within a few hours did you bring out a working program??? :roflmao:
you did not know pyton:p

ps. the link at the moment does not work but I am doing tests with another online compiler

I understood how to increase the number of points but not how to impose a limit circumference.
is it possible with the current code?

Meanwhile thank you for your interest!
 
@be_on_edge but within a few hours did you bring out a working program??? :roflmao:
you did not know pyton:p

ps. the link at the moment does not work but I am doing tests with another online compiler

I understood how to increase the number of points but not how to impose a limit circumference.
is it possible with the current code?

Meanwhile thank you for your interest!
the program is a paste copy I did not do it '
the points are generated in the range from -1 to +1 both for x and for y; I have done nothing but multiply this value according to the size I want to get.

in this multiply code for 100, but you can replace 100 with the circle radius to fill
Code:
for point in points:
        print (str(round(point[0]*100,1)) + ',' + str(round(point[1]*100,1)))
p.s.: I'm using thonny and it seems pretty easy to use
 
I took the monkey after seeing what you could do with the code posted by be_on_edge and I started playing with chatgpt.

I pulled out a python code asking for the diameter of the outer circumference where lies the first set of holes, the number of holes on the first series and the number of concentric circles total.

I installed the python environment on my win11 from the store and installed two python command window libraries with the commands "pip install matplotlib" and "pip install openpyxl"


I also created a .bat file that launches the .py file so as not to pass every time from its ide.

the result is a formatted and working xlsx file in itself.

the code is not optimized at all but works :d

Once the requested data is entered, the set of holes is graphically displayed.
to have the saved xlsx file you must first close the preview just mentioned.

on the piattello in if you create the first hole in the center and from it you start the series.

Let me know if it works for you.
 

Attachments

It works!

good work % 1 ; if I can give you a note, I do not like that the first hole of each hole is aligned; I guess that's the result of your preferences.
 
I didn't like it either and I was working on it.
inserted possibility of translating n degrees the start of the series on each circinference.
inserted the possibility to exclude a circumference from the calculation.
other small corrections.
I would like to make sure that I exclude more circumferences but for now I stop here.
 

Attachments

Forum statistics

Threads
44,997
Messages
339,767
Members
4
Latest member
ibt

Members online

No members online now.
Back
Top