@maxz wrote:
I haven written a python script to create a testtrack purposed to test the cornering behaviour of a cad/cam machine. The script creates a polyline with incremental corner sharpness every time it has come full circle.
Every time the corner changes sharpness, it prints the new corner together with the distance travelled. As a backup, it creates or updates a text file with the same values.
The script works fine, the polyline and the printed values appear almost instantaneously in Rhino when the script is started. The problem is, it continues to do something for the next minute or so. It gets there in the end, but I am puzzled as to what causes the delay. I tried commenting out the lines related to the text file, but nothing changed.Can someone shed some light on this?
The script:
# Testtrack for CAM angle negotiation.
# by Max Zuijdendorp, April 2018# dit script creeert een polyline van een track met bochten (richtingsveranderingen) die in scherpte toenemen tot 180 graden, waarmee je het bochtgedrag van de freesmachine kunt testen. # de bocht wordt met dezelfde scherpte herhaald totdat een volledige cirkel is doorlopen. # in regels 19 t/m 22 worden de starthoek van de eerste bocht, de toename van de bochthoek na elke cirkel, de lengte van elk lijnstuk en de hoek van de laatste bocht die nog meegenomen wordt vastgelegd. # als je in regel 19 de waarde van een "verdachte" hoek invult, en in regel 20 de waarde 0 invult kun je een volledige cirkel met die hoek doorlopen om de machine te testen. import rhinoscriptsyntax as rs import math # Check of laag "Testtrack" bestaat, indien niet voeg deze laag dan toe if not rs.IsLayer("Testtrack"): rs.AddLayer("Testtrack") rs.CurrentLayer(layer="Testtrack") def DRAWTRACK(): corner =4 # hoek in graden van de eerste bocht (niet op 0 zetten) cornerincr = 0.5 # hoek in graden waarmee de bocht toeneemt bij elke nieuwe cirkel. Indien dit 0 is wordt maar 1 cirkel getekend sectionlen = 10 # lengte van de lijnstukken lastcorner = 180 # scherpste hoek die nog meegenomen wordt. angle = 0 repeat = 0 start = (0,0,0) run = True totallen = 0 Pointlist = [] Pointlist.append (start) diamax = sectionlen/math.sin(corner*math.pi/360) if (diamax > 500): # diameter van de eerste/grootste cirkel print"Maximum machinebereik overschreden" run = False if run: createtextfile = True # True maakt tekstbestand aan of ververst het, False niet. if createtextfile: f=open("//Users/maxzuijdendorp/Desktop/Hoeken.txt",'w') f.write("Eerste bochthoek: "+str(corner)+'\n') f.write("Laatste bochthoek: "+str(lastcorner)+'\n') f.write("Hoektoename: "+str(cornerincr)+'\n') f.write("Lengte lijnsegment: "+str(sectionlen)+'\n') f.write('\n') f.write("Snijlengte-Nieuwe Hoek\n") imax = 1 # als cornerincr 0 is wordt maar 1 keer een cirkel doorlopen, in alle andere gevallen wordt hieronder het aantal cirkels berekend. if (cornerincr <> 0): imax = int((lastcorner-corner)/cornerincr)+1 for i in range(0,imax,1): repeat = int(360/corner)+1 # de bocht wordt herhaald met dezelfde hoek totdat tenminste 360 graden doorlopen is for n in range(0,repeat,1): angle = angle + corner point = rs.Polar(start, angle, sectionlen, rs.WorldXYPlane() ) # WorldZXPlane WorldYZPlane end = point Pointlist.append (point) start = end corner = corner + cornerincr totallen = totallen+(n+1)*sectionlen print totallen, corner if createtextfile: f.write(str(totallen)+" "+str(corner)+'\n') rs.AddPolyline (Pointlist) if createtextfile: f.close() DRAWTRACK()
Posts: 1
Participants: 1