Buongiorno,
sono ad un primo tentativo nello scrivere uno script in python e ho trovato una difficoltà.
Ho una serie di piastre a larghezza variabile, da forare lungo la direzione y ad interasse costante di circa 400 mm che può variare, a seconda della larghezza della piastra, tra 350 e 500 mm.
Ho posizionato con le stringhe seguenti i due cerchi che mi indicano la partenza (fissa) dei due fori
c’è un modo per creare una regola che mi suddivida in spazi uguali (tra 350 e 500 mm) la distanza tra f1 ed f2 e mi posizioni in tali punti dei cerchi a raggio 5 mm?
Grazie mille!
L’ho riadattato un attimo ed era proprio quello che mi serviva.
Se posso chiedere un altro parere sto avendo difficoltà nel far andare automaticamente un linear array (comando rhino).
Da una verifica mi risulta che il problema sta nell’inserimento delle coordinate di punto base e punto di riferimento distanza che restano racchiuse tra parentesi, di conseguenza Rhino non riesce a leggerle.
Qualche suggerimento in merito?
Allego parte di script incriminata.
dy =lar-200-200 #distanza tra i primi due occhielli escluse partenze
nmin = math.ceil(dy/500) #numero minimo occhielli usando larghezza max passo
nmax = math.floor(dy/350) #numero massimo occhielli usando larghezza min passo
if nmin>nmax:
print( ‘Impossibile trovare un passo con larghezza %g’ % lar ) #se nmin maggiore di nmax compare avviso
if nmin==nmax: #se num min = num max
np=nmin #num passi tra occhielli = num min occhielli
else:
n400=round(dy/400) #calcolo arrotondato di dy / passo richiesto = num passo di calcolo
if(n400>=nmin)and(n400<=nmax): #se num passo di calcolo >= num min o <= num max
np=n400 #allora num passi = passo di calcolo
else:
dmin=abs(n400-nmin)
dmax=abs(n400-nmax)
if dmin<dmax:
np=nmin
else:
np=nmax
# casistica necessaria al calcolo del numero di passi tra i fori
pa=dy/np #calcolo del passo dei fori
nf=np+1 #numero fori = numero passi + 1
c1=[pie+20,200+sald,0]
c2=[pie+alt+lun+alt-20,200+sald,0]
r=6 #raggio cerchio
#partenze occhielli
foro1=rs.AddCircle(c1, r)
foro2=rs.AddCircle(c2, r)
rs.ObjectLayer([occhiello1,occhiello2], layer="4")
#disegna foro partenza
c3=[pie+20,200+sald+pa,0] #secondo punto riferimento per array linear
rs.SelectObject(foro1)
rs.SelectObject(foro2)
rs.Command("_ArrayLinear "+str(nf)+" " +str(c1)+" " +str(c3))
Dovrebbe scrivere le coordinate del punto in formato comandi-Rhino.
Provo ad abbozzare una spiegazione di cosa succede (per quanto ne so … ) :
rhinoscriptsyntax e’ un modulo Python che usufruisce a sua volta di RhinoCommon : https://developer.rhino3d.com/api/RhinoCommon/html/N_Rhino.htm
… Che e’ la libreria di classi che permette la comunicazione con Rhino, e contiene anche tutte le classi che definiscono gli oggetti geometrici.
Tra queste c’e’ Rhino.Geometry.Point3d , che rappresenta i normali punti dello spazio 3D.
rs.coerce3dpoint() serve appunto ad ottenere un Point3d da altre rappresentazioni, ad esempio la lista con 3 numeri.
La conversione in stringa di un oggetto Point3d fornisce proprio il formato richiesto dai comandi Rhino.