Merge pull request #3 from linuxras/master

Updated airfoil listbox to have scrollbars and search filter and new Ruler generator
This commit is contained in:
Nicholas Humfrey 2018-10-15 09:49:35 +01:00 committed by GitHub
commit 978a191f0b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
34 changed files with 59812 additions and 30 deletions

4
.gitignore vendored
View file

@ -27,3 +27,7 @@ var/
# .eps files are generated by the airfoil-generator
airfoil/*.eps
# .swp vim cache files
ruler/*.swp
ruler/*.swo

View file

@ -22,6 +22,7 @@ The Scripts
* [Pocketing](pocket/) - Rectangular-Circular Pocketing Generator
* [Text Engraving](engrave/) - This software engraves a text string
* [Multi-line Text Engraving](engrave-lines/) - Engrave up to 10 lines of text
* [Ruler Engraving](ruler/) - Engrave generic ruler in metric or standard with text

View file

@ -41,7 +41,7 @@ def programm_schliesen():
root.destroy()
def file_save():
global g_code_code
file_save = tkFileDialog.asksaveasfilename(title="NC-g_code-DATEI", \
file_save = tkFileDialog.asksaveasfilename(title="NC-g_code-DATA", \
filetypes=[("LinuxCNC file",".ngc"),("NCFRS file",".nc"),("NC TAP",".tap"),\
("txt file",".txt"),("All files",".*")],initialfile="g_code",initialdir="/home/sammel/xyuv-foam/nc_files")
fobj = open(file_save, "w")
@ -58,7 +58,7 @@ def info():
info_label_text.config(text=' Just Hit the profile entry in the list ' )
info_label_text.update()
sleep(1)
info_label_text.config(text=' and SAVE via File Menue the G-code ' )
info_label_text.config(text=' and SAVE via File Menu the G-code ' )
info_label_text.update()
def get_profilenames():
@ -122,7 +122,7 @@ def draw_on_xy_canvas(data):
g_code.append("G17.1 G21 G54 G90 G40 G80 G64 P0.05 \n")
xy_profile_draw.delete(ALL)
xy_profile_draw.create_text((120,15), text="XY PROFIL %s "% xy_profil_name.get() ,font=('courier', 12, 'bold'))
xy_profile_draw.create_text((120,15), text="XY PROFILE %s "% xy_profil_name.get() ,font=('courier', 12, 'bold'))
calculation_canvas.delete("xy")
for line in data:
linesplit=line.split()
@ -134,7 +134,10 @@ def draw_on_xy_canvas(data):
y_coord =int(float(linesplit[1])*Factor)+y_zero
x_gcode =float(linesplit[0])*g_code_scale
y_gcode =float(linesplit[1])*g_code_scale
gcode_line= "G1 X%.3f Y%.3f \n"%(x_gcode,y_gcode)
if not first:
gcode_line= "G1 X%.3f Y%.3f \n"%(x_gcode,y_gcode)
else:
gcode_line= "G1 X%.3f Y%.3f F%.3d \n"%(x_gcode,y_gcode,feed.get())
g_code.append(gcode_line)
if not first:
xy_profile_draw.create_line(x_old_coord,y_old_coord,x_coord,y_coord,
@ -163,7 +166,7 @@ def draw_on_uv_canvas(data):
g_code_scale= xy_profile_width.get()
uv_profile_draw.delete(ALL)
calculation_canvas.delete("uv")
uv_profile_draw.create_text((120,15), text="UV PROFIL %s"% uv_profil_name.get() ,font=('courier', 12, 'bold'))
uv_profile_draw.create_text((120,15), text="UV PROFILE %s"% uv_profil_name.get() ,font=('courier', 12, 'bold'))
if uv_plane_activated:
for line in data:
linesplit=line.split()
@ -183,7 +186,7 @@ def draw_on_uv_canvas(data):
first=False
else:
uv_profile_draw.delete(ALL)
uv_profile_draw.create_text((250,100), text="UV PROFIL",font=('courier', 40, 'bold'))
uv_profile_draw.create_text((250,100), text="UV PROFILE",font=('courier', 40, 'bold'))
def xy_profil_listbox_action(event):
xy_index = xy_profil_listbox.curselection()
@ -228,20 +231,24 @@ def uv_profil_listbox_action(event):
def add_uv_plane():
global uv_plane_activated
if uv_plane_activated:
uv_plane_activated=False
uv_plane_activated = False
uv_profil_search.config(bg='black')
uv_profil_listbox.config(bg="black",selectbackground="black")
uv_profil_name_show_entry.config(disabledbackground="black")
uv_profile_width_entry.config(bg="black")
uv_profile_offset_x_entry.config(bg="black")
uv_profile_offset_y_entry.config(bg="black")
button_add_uv_plane.config(text='Add UV Plane')
else:
uv_plane_activated = True
uv_profil_search.config(bg='white')
uv_profil_listbox.config(bg="white",selectbackground="lightgray")
uv_profil_listbox.see(uv_index)
uv_profil_name_show_entry.config(disabledbackground="white")
uv_profile_width_entry.config(bg="white")
uv_profile_offset_x_entry.config(bg="white")
uv_profile_offset_y_entry.config(bg="white")
button_add_uv_plane.config(text='Remove UV Plane')
uv_profil_listbox.select_set(first=1166, last=None)
uv_profil_listbox_action(uv_index)
@ -317,9 +324,9 @@ def generate():
g_code.append("(profile XY %s profile UV %s )\n"
%(xy_profil_name.get(),uv_profil_name.get()))
g_code.append("(!!!! Pointdifferens !!!!)\n")
g_code.append("(PLEASE EDIT Point to Point Manuell )\n")
g_code.append("(PLEASE EDIT Point to Point Manually )\n")
g_code.append("( TO keep the profile SHAPE)\n")
g_code.append("(XY Points %d UV points %d ,Differnce %d )\n"
g_code.append("(XY Points %d UV points %d ,Difference %d )\n"
%(len(xy_point_data),len(uv_point_data),whats_the_different))
g_code.append("(test on xyuv FOAM or 9Axis Linuxcnc sim )\n")
g_code.append("(AXIS,XY_Z_POS,5)\n")
@ -334,6 +341,7 @@ def generate():
runto=len(uv_point_data)
max_run= len(xy_point_data)
larger_pointlist= "xy"
firstrun=True
for a in range(0,runto):
xy_linesplit = xy_point_data[a].split()
uv_linesplit = uv_point_data[a].split()
@ -341,8 +349,12 @@ def generate():
y_gcode =float(xy_linesplit[1])*xy_profile_width.get()
u_gcode =(float(uv_linesplit[0])*uv_profile_width.get())+uv_profile_offset_x.get()
v_gcode =(float(uv_linesplit[1])*uv_profile_width.get())+uv_profile_offset_y.get()
gcode_line= "G1 X%.3f Y%.3f U%.3f V%.3f \n"%(x_gcode,y_gcode,u_gcode,v_gcode)
if not firstrun:
gcode_line= "G1 X%.3f Y%.3f U%.3f V%.3f \n"%(x_gcode,y_gcode,u_gcode,v_gcode)
else:
gcode_line= "G1 X%.3f Y%.3f U%.3f V%.3f F%.3d \n"%(x_gcode,y_gcode,u_gcode,v_gcode,feed.get())
g_code.append(gcode_line)
firstrun=False
for a in range(runto,max_run):
if larger_pointlist == "xy":
linesplit = xy_point_data[a].split()
@ -368,6 +380,7 @@ def generate():
g_code.append("(AXIS,UV_Z_POS,30)\n")
g_code.append("(AXIS,GRID,5) \n")
g_code.append("G17 G21 G54 G90 G40 G80 G64 P0.05 \n")
firstrun=True
for a in range(0,len(xy_point_data)):
xy_linesplit = xy_point_data[a].split()
uv_linesplit = uv_point_data[a].split()
@ -375,7 +388,11 @@ def generate():
y_gcode =float(xy_linesplit[1])*xy_profile_width.get()
u_gcode =(float(uv_linesplit[0])*uv_profile_width.get())+uv_profile_offset_x.get()
v_gcode =(float(uv_linesplit[1])*uv_profile_width.get())+uv_profile_offset_y.get()
gcode_line= "G1 X%.3f Y%.3f U%.3f V%.3f \n"%(x_gcode,y_gcode,u_gcode,v_gcode)
if not firstrun:
gcode_line= "G1 X%.3f Y%.3f U%.3f V%.3f \n"%(x_gcode,y_gcode,u_gcode,v_gcode)
else:
gcode_line= "G1 X%.3f Y%.3f U%.3f V%.3f F%.3d \n"%(x_gcode,y_gcode,u_gcode,v_gcode,feed.get())
firstrun=False
g_code.append(gcode_line)
g_code.append("M30 \n")
gcode_show_text.config(state=NORMAL,font=('courier', 12, 'normal'))
@ -384,6 +401,26 @@ def generate():
gcode_show_text.insert(END,line)
gcode_show_text.config(state=DISABLED)
def update_xy_profile_list():
search = xy_profil_search.get()
airfoils = get_profilenames()
xy_profil_listbox.delete(0, END)
for item in airfoils:
p=item.split('.')
if search.lower() in item.lower():
xy_profil_listbox.insert(END, p[0])
def update_uv_profile_list():
search = uv_profil_search.get()
airfoils = get_profilenames()
uv_profil_listbox.delete(0, END)
for item in airfoils:
p=item.split('.')
if search.lower() in item.lower():
uv_profil_listbox.insert(END, p[0])
root = Tk()
root.geometry("1080x1000")
# create a menu
@ -424,8 +461,17 @@ xy_profil_name_show_entry = Entry(top_text,textvariable=xy_profil_name,
justify=CENTER,state=DISABLED,width=15)
xy_profil_name_show_entry.pack(side=LEFT,ipadx=3,ipady=5,padx=1,pady=10)
xy_profil_listbox = Listbox(top_text,selectmode=SINGLE,width=15,height=2)
xy_profil_listbox.pack(side=LEFT,ipadx=3,ipady=5,padx=1,pady=10)
xy_profil_frame = Frame(top_text)
xy_profil_frame.pack(side=LEFT,fill=Y)
xy_profil_search_var = StringVar()
xy_profil_search_var.trace("w", lambda name, index, mode: update_xy_profile_list())
xy_profil_search = Entry(xy_profil_frame, textvariable=xy_profil_search_var, width=15)
xy_profil_search.pack(side=TOP, fill=X)
xy_profil_scrollbar = Scrollbar(xy_profil_frame, orient=VERTICAL)
xy_profil_listbox = Listbox(xy_profil_frame, selectmode=SINGLE, yscrollcommand=xy_profil_scrollbar.set, width=15,height=2)
xy_profil_scrollbar.config(command=xy_profil_listbox.yview)
xy_profil_scrollbar.pack(side=RIGHT, fill=Y)
xy_profil_listbox.pack(side=LEFT, fill=BOTH, ipadx=3,ipady=5,padx=1,pady=10)
profilenames= get_profilenames()
xy_index,index = 0,0
for item in profilenames:
@ -438,7 +484,7 @@ xy_profil_listbox.see(xy_index)
xy_profil_listbox.select_set(first=1166, last=None)
xy_profil_listbox.bind("<Double-Button-1>", xy_profil_listbox_action)
text_xy_profile_width = Label(top_text,text='XY Profil-Breite',bg='red',fg='black')
text_xy_profile_width = Label(top_text,text='XY Profile Width',bg='red',fg='black')
text_xy_profile_width.pack(side=LEFT,ipadx=1,ipady=5,padx=1,pady=10)
xy_profile_width = IntVar()
@ -469,7 +515,16 @@ uv_profil_name_show_entry = Entry(uv_lable,textvariable=uv_profil_name,
justify=CENTER,state=DISABLED,width=15)
uv_profil_name_show_entry.pack(side=LEFT,ipadx=3,ipady=5,padx=1,pady=10)
uv_profil_listbox = Listbox(uv_lable,selectmode=SINGLE,bg="black",width=15,height=2)
uv_profil_frame = Frame(uv_lable)
uv_profil_frame.pack(side=LEFT,fill=Y)
uv_profil_search_var = StringVar()
uv_profil_search_var.trace("w", lambda name, index, mode: update_uv_profile_list())
uv_profil_search = Entry(uv_profil_frame, textvariable=uv_profil_search_var, bg='black', width=15)
uv_profil_search.pack(side=TOP, fill=X)
uv_profil_scrollbar = Scrollbar(uv_profil_frame, orient=VERTICAL)
uv_profil_listbox = Listbox(uv_profil_frame,selectmode=SINGLE,yscrollcommand=uv_profil_scrollbar.set,bg="black",width=15,height=2)
uv_profil_scrollbar.config(command=uv_profil_listbox.yview)
uv_profil_scrollbar.pack(side=RIGHT, fill=Y)
uv_profil_listbox.pack(side=LEFT,ipadx=3,ipady=5,padx=1,pady=10)
profilenames = get_profilenames()
uv_index,index = 0,0
@ -483,7 +538,7 @@ uv_profil_listbox.selection_set(uv_index)
uv_profil_listbox.see(uv_index+5)
uv_profil_listbox.bind("<Double-Button-1>", uv_profil_listbox_action)
text_uv_profile_width = Label(uv_lable,text='UV Profil-Breite',bg='red',fg='black')
text_uv_profile_width = Label(uv_lable,text='UV Profile Width',bg='red',fg='black')
text_uv_profile_width.pack(side=LEFT,ipadx=1,ipady=5,padx=1,pady=10)
uv_profile_width = IntVar()
@ -513,7 +568,7 @@ xy_profile_draw.pack(side=LEFT)
uv_profile_draw = Canvas(draw_lable, width=510, height=300)
uv_profile_draw.pack()
uv_profile_draw.create_text((250,100), text="UV PROFIL",font=('courier', 40, 'bold'))
uv_profile_draw.create_text((250,100), text="UV PROFILE",font=('courier', 40, 'bold'))
calculation_canvas = Canvas(calculation_lable, width=1000, height=400,state=NORMAL,bg="white")
calculation_canvas.pack()

66
pocket/pocket.py Normal file → Executable file
View file

@ -41,6 +41,8 @@ import tkMessageBox
IN_AXIS = os.environ.has_key("AXIS_PROGRESS_BAR")
toolChange = ''
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
@ -107,7 +109,7 @@ class Application(Frame):
self.st01 = Label(self.EntryFrame, text='Preamble')
self.st01.grid(row=self.rownumber, column=0)
self.PreambleVar = StringVar()
self.PreambleVar.set('G17 G21 G90 G64 P0.01 M3 S3000 M7')
self.PreambleVar.set('G17 G21 G90 G64 P0.01%s M3 S3000 M7' %(toolChange))
self.Preamble = Entry(self.EntryFrame, textvariable=self.PreambleVar ,width=35)
self.Preamble.grid(row=self.rownumber, column=1)
self.NormalColor = self.Preamble.cget('bg')
@ -125,8 +127,8 @@ class Application(Frame):
self.st10a = Label(self.EntryFrame, text='ToolNumber (T)')
self.st10a.grid(row=self.rownumber, column=0)
self.ToolNumberVar = IntVar()
self.ToolNumberVar.set('1')
self.ToolNumber = Entry(self.EntryFrame, textvariable=self.ToolNumberVar ,width=3)
self.ToolNumberVar.set('0')
self.ToolNumber = Spinbox(self.EntryFrame, textvariable=self.ToolNumberVar,from_=0,to=99 ,width=4, command=self.ChangeTool)
self.ToolNumber.grid(row=self.rownumber, column=1,sticky=W)
self.st10ab = Label(self.EntryFrame, text=' ToolOffsetNumber (D)')
@ -257,11 +259,20 @@ class Application(Frame):
def Change_Units(self):
if (self.UnitVar.get() == 0) :
#Inch
self.PreambleVar.set('G17 G20 G90 G64 P0.001 M3 S3000 M7')
self.PreambleVar.set('G17 G20 G90 G64 P0.001%s M3 S3000 M7' %(toolChange))
else :
#MM
self.PreambleVar.set('G17 G21 G90 G64 P0.01 M3 S3000 M7')
self.PreambleVar.set('G17 G21 G90 G64 P0.01%s M3 S3000 M7' %(toolChange))
def ChangeTool(self):
global toolChange
print 'Inside ChangeTool T:'+str(self.ToolNumberVar.get())
if (self.ToolNumberVar.get() > 0):
toolChange = (" M6 T%d" %(int(self.ToolNumberVar.get())))
else:
toolChange = ''
self.Change_Units()
def DoIt(self):
# if g41/42 enable tooloffsetnumber entry
if self.MovmentVar.get() == 0:
@ -334,6 +345,7 @@ class Application(Frame):
stepoverz=float(self.ZStepover.get())
if stepoverz > 0:
stepoverz = stepoverz * (-1)
firstRun = True
#----------------------
#circulare pocketing
#---------------------
@ -381,10 +393,14 @@ class Application(Frame):
centerx = float(self.XPocketCenter.get())
# keep here in while till final depth is reatched
while tempz < 0 :
gword = 91
if firstRun:
firstRun = False
gword = 90
if tempz < stepoverz:
self.gcode.append('G1 G91 Z%.3f F%.2f ' %(stepoverz,speedZ))
self.gcode.append('G1 G%d Z%.3f F%.2f ' %(gword,stepoverz,speedZ))
else:
self.gcode.append('G1 G91 Z%.3f F%.2f ' %(tempz,speedZ))
self.gcode.append('G1 G%d Z%.3f F%.2f ' %(gword,tempz,speedZ))
tempz=tempz-stepoverz
for cir in xrange(1,numberofcircels):
self.gcode.append('G1 G90 X%.3f F%.2f ' %((centerx+(cir*Spacing)),speedXY))
@ -404,6 +420,9 @@ class Application(Frame):
else:
self.gcode.append('G2 I-%.3f' %(PocketRadius-ToolDiameterRad))
#go to Zsafe before moving to center
if(tempz >= 0):
self.gcode.append( 'G0 Z%.4f ' %(float(self.SafeZVar.get()))) #G0 Zsafe
self.gcode.append( 'G1 X%.4f Y%.4f ' %(float(self.XPocketCenterVar.get()),float(self.YPocketCenterVar.get())))# Center
self.gcode.append( 'G0 Z%.4f ' %(float(self.SafeZVar.get()))) #G0 Zsafe
else:#cirel_spiral
@ -446,10 +465,14 @@ class Application(Frame):
self.gcode.append('( Spiral Zero Path )')
self.gcode.append('G1 Z0.00 F%.2f (Move to Z Zero for incremental Z pathes )' %speedZ)
while tempz < 0 :
gword = 91
if firstRun:
firstRun = False
gword = 90
if tempz < stepoverz:
self.gcode.append('G1 G91 Z%.3f F%.2f ' %(stepoverz,speedZ))
self.gcode.append('G1 G%d Z%.3f F%.2f ' %(gword,stepoverz,speedZ))
else:
self.gcode.append('G1 G91 Z%.3f F%.2f ' %(tempz,speedZ))
self.gcode.append('G1 G%d Z%.3f F%.2f ' %(gword,tempz,speedZ))
tempz=tempz-stepoverz
cycels=int((pocket_length_x-ToolDiameter)/Spacing/2.0)
tempr=Spacing
@ -466,6 +489,9 @@ class Application(Frame):
newI= ((centerx+(cycle*Spacing))-(centerx-PocketRadius+ToolDiameterRad))/2.0
self.gcode.append('G3 X%.3f Y%.3f I-%.3f ' %(centerx-PocketRadius+ToolDiameterRad,centery,newI))
self.gcode.append('G3 I%.3f ' %(PocketRadius-ToolDiameterRad))
#go to Zsafe before moving to center
if(tempz >= 0):
self.gcode.append( 'G0 Z%.4f ' %(float(self.SafeZVar.get()))) #G0 Zsafe
self.gcode.append( 'G1 X%.4f Y%.4f ' %(centerx,centery))# Center
self.gcode.append( 'G0 Z%.4f ' %(float(self.SafeZVar.get()))) #G0 Zsafe
#---------------
@ -506,10 +532,14 @@ class Application(Frame):
first_length_y=((pocket_length_y-ToolDiameter)/2.0)-(rec_cycels*Spacing)
self.gcode.append('G1 G90 Z0.00 F%.2f (Move to Z Zero for incremental Z pathes )' %speedZ)
while tempz < 0 :
gword = 91
if firstRun:
firstRun = False
gword = 90
if tempz < stepoverz:
self.gcode.append('G1 G91 Z%.3f F%.2f ' %(stepoverz,speedZ))
self.gcode.append('G1 G%d Z%.3f F%.2f ' %(gword,stepoverz,speedZ))
else:
self.gcode.append('G1 G91 Z%.3f F%.2f ' %(tempz,speedZ))
self.gcode.append('G1 G%d Z%.3f F%.2f ' %(gword,tempz,speedZ))
tempz=tempz-stepoverz
while_value=0
canvasoldX=150
@ -543,6 +573,9 @@ class Application(Frame):
150-((pocket_length_y-ToolDiameter)/2.0/Scale),
150+((pocket_length_x-ToolDiameter)/2.0/Scale),
150+((pocket_length_y-ToolDiameter)/2.0/Scale), outline='red'))
#go to Zsafe before moving to center
if(tempz >= 0):
self.gcode.append( 'G0 Z%.4f ' %(float(self.SafeZVar.get()))) #G0 Zsafe
self.gcode.append( 'G1 G90 X%.4f Y%.4f ' %(centerx,centery))# Center
self.gcode.append( 'G0 Z%.4f ' %(float(self.SafeZVar.get()))) #G0 Zsafe
@ -560,10 +593,14 @@ class Application(Frame):
new_x_stepover=(pocket_length_x-ToolDiameter)/(rec_cycels*2)
new_y_stepover=(pocket_length_y-ToolDiameter)/(rec_cycels*2)
while tempz < 0 :
gword = 91
if firstRun:
firstRun = False
gword = 90
if tempz < stepoverz:
self.gcode.append('G1 G91 Z%.3f F%.2f ' %(stepoverz,speedZ))
self.gcode.append('G1 G%d Z%.3f F%.2f ' %(gword,stepoverz,speedZ))
else:
self.gcode.append('G1 G91 Z%.3f F%.2f ' %(tempz,speedZ))
self.gcode.append('G1 G%d Z%.3f F%.2f ' %(gword,tempz,speedZ))
tempz=tempz-stepoverz
cycle=1
tempx=new_x_stepover
@ -611,6 +648,9 @@ class Application(Frame):
150+((pocket_length_x-ToolDiameter)/2.0/Scale),
150+((pocket_length_y-ToolDiameter)/2.0/Scale), outline='red'))
#go to Zsafe before moving to center
if(tempz >= 0):
self.gcode.append( 'G0 Z%.4f ' %(float(self.SafeZVar.get()))) #G0 Zsafe
self.gcode.append( 'G1 G90 X%.4f Y%.4f ' %(centerx,centery))
self.gcode.append( 'G0 Z%.4f ' %(float(self.SafeZVar.get()))) #G0 Zsafe

26
ruler/README.md Normal file
View file

@ -0,0 +1,26 @@
Ruler Engraving Software
========================
**Author:** Andrew Williams
**Download:**
* [ruler.py](https://github.com/linuxcnc/simple-gcode-generators/raw/master/ruler/ruler.py)
* [CXF fonts](cxf-fonts)
This software engraves a ruler of any length in metric or standard.
Features
--------
* Uses CXF format font files (nice stroked font definitions) for adding numbers to ruler
* You will need the .cxf font files from the link above (or use the ones from the QCAD v2 package)
* Adjustable number of minor and major ticks
* Adjustable start and stop positions
* Usable as an axis filter program (see below)
* G-Code can be copied to the clipboard for easy insertion into other gcode programs
* Use of variables for start point and Z values for easy code block reuse
Screenshot
-----------
![Screenshot of ruler.py](ruler-screenshot.png)

868
ruler/cxf-fonts/courier.cxf Normal file
View file

@ -0,0 +1,868 @@
# Format: QCad II Font
# Creator: QCad 1
# Version: 1
# Name: Courier
# LetterSpacing: 3.0
# WordSpacing: 6.75
# LineSpacingFactor: 1.0
# Author: Andrew Mustun <andrew@qcad.org>
[!] 2
L 0,9,0,2
L 0,1,0,0
["] 2
L 3,9,3,6
L 6,9,6,6
[#] 4
L 3.5,9,2.5,0
L 5.5,0,6.5,9
L 1.5,6,7.5,6
L 7.5,3,1.5,3
[$] 10
L 1,0,1,3
A 3.25,6.75,2.25,90,270
L 8,9,8,6
A 5.75,2.25,2.25,270,90
L 3.25,4.5,5.75,4.5
A 6,7,2,0,90
A 3,2,2,180,270
L 3,0,5.75,0
L 6,9,3.25,9
L 4.5,10,4.5,-1
[%] 5
A 3,7,2,0,180
A 3,7,2,180,0
A 6,2,2,0,180
A 6,2,2,180,0
L 1,2,8,7
[&] 6
L 6.5,0,7.5,0
L 7.5,3.214989,4.925964,0.597641
A 3.5,2,2,135.478088,315.478088
L 2.074036,3.402359,5.069458,6.448231
A 4,7.5,1.5,315.478271,209.372314
L 2.69281,6.764282,6.5,0
['] 1
L 1,9,0,7
[(] 1
A 11.5,4.5,8.514693,139.763641,220.236359
[)] 1
A -2.5,4.5,8.514693,319.763641,40.236359
[*] 5
L 4.5,9,4.5,7
L 2.5979,7.618034,4.5,7
L 3.324402,5.381966,4.5,7
L 5.675598,5.381966,4.5,7
L 6.4021,7.618034,4.5,7
[+] 4
L 1.5,4,7.5,4
L 4.5,7,4.5,1
L 1.5,0,7.5,0
L 4.5,3,4.5,-3
[,] 2
L 1,1,1,0
L 1,0,0,-2
[-] 1
L 1.5,4,7.5,4
[.] 1
L 0,1,0,0
[/] 1
L 7.5,10,1.5,-1
[0] 4
A 10.141174,4.5,8.156516,154.203629,205.796356
A -1.141174,4.5,8.156516,334.203644,25.796375
A 4.5,7,2,31.65184,148.348526
A 4.5,2,2,211.651459,328.348297
[1] 3
L 1.5,0,7.5,0
L 4.5,0,4.5,9
L 4.5,9,1.5,7
[2] 5
L 7.5,2,7.5,0
L 7.5,0,1.5,0
L 1.5,0,6.669739,4.639369
A 5,6.5,2.5,311.904999,126.869896
L 2.182617,7.511972,3.5,8.5
[3] 5
A 5.5,7,2,270,99.823212
A 5.696838,5.221589,3.783536,94.470367,144.984543
A 4.666687,2.833332,2.838246,220.236084,12.980455
A 5.5,3,2,13.76598,90
L 5.5,5,4.5,5
[4] 4
L 8,0,3,0
L 6,0,6,9
L 6,9,1,2
L 1,2,8,2
[5] 6
L 7.5,9,1.5,9
L 1.5,1,3.34613,0.23077
A 4.5,3,3,247.379745,0
A 4.975891,3,2.524109,0,90
A 4.975891,-1,6.524109,90,122.193237
L 1.5,9,1.5,4.521068
[6] 5
A 7.5,3,6,90,180
A 4.5,3,3,180,270
A 4.5,3,3,270,0
A 5.5,3,2,0,90
A 5.5,0,5,90,143.026321
[7] 3
L 1,7,1,9
L 1,9,8,9
L 8,9,3,0
[8] 4
A 4.5,7,2,90,270
A 4.5,7,2,270,90
A 4.5,2.5,2.5,90,270
A 4.5,2.5,2.5,270,90
[9] 5
A 4.5,6.5,2.5,90,270
A -3.729675,4.790111,10.894594,344.034576,10.344007
A 4.214355,2.763891,2.710038,229.544617,339.017487
A 4.5,6.5,2.5,359.019745,90
A 4.5,7,3,270,332.236603
[:] 2
L 4.5,1,4.5,0
L 4.5,4,4.5,5
[;] 3
L 5,1,5,0
L 5,0,4,-2
L 5,5,5,4
[<] 2
L 8,7,1,4
L 1,4,8,1
[=] 2
L 1.5,6,7.5,6
L 7.5,3,1.5,3
[>] 2
L 1,1,8,4
L 8,4,1,7
[?] 5
L 4.5,0,4.5,1
L 4.5,2,4.5,4
A 4.5,6.5,2.5,270,90
A 4.5,4,5,90,126.869896
L 1.5,7,1.5,8
[@] 11
L 8,1,6.067566,0.28186
A 4.5,4.5,4.5,333.472015,290.386322
A 7.412354,2.943008,1.2,168.690186,337.880432
A 4.439636,4,2,168.689804,270
A 5.170288,5.5,1.5,348.690002,90
A 5.049561,4.5,2.5,90,168.690094
L 2.478455,4.392246,2.598083,4.990294
A 4.360352,4,2,270,348.68985
L 4.360352,2,4.439636,2
L 6.321533,3.607756,7,7
L 5.049561,7,5.170288,7
[A] 6
L 0,0,3,0
L 4.5,9,1,0
L 4.5,9,2,9
L 6,0,9,0
L 4.5,9,8,0
L 2.555542,4,6.444458,4
[B] 6
L 2.5,9,2.5,0
L 2.5,5,6,5
A 6,2.5,2.5,270,90
L 0.5,9,5.5,9
A 5.5,7,2,270,90
L 0.5,0,6,0
[C] 5
L 8.200012,9,8.200012,6
L 8.5,2,6.900024,0.799999
L 0.5,5,0.5,4
A 4.5,4,4,180,306.870178
A 4.5,5,4,22.331678,180
[D] 6
L 2.5,0,2.5,9
A 4.436523,5,4,14.477451,90
L 0.5,9,4.436523,9
A 4.436462,4,4,270,345.52243
A 2.5,4.5,6,345.52243,14.47745
L 0.5,0,4.436462,0
[E] 7
L 2.5,0,2.5,9
L 0.5,9,8.5,9
L 0.5,0,8.5,0
L 8.5,0,8.5,2
L 8.5,9,8.5,7
L 5.5,6,5.5,3
L 2.5,4.5,5.5,4.5
[F] 6
L 2.5,0,2.5,9
L 0.5,0,4.5,0
L 0.5,9,8.5,9
L 8.5,9,8.5,7
L 5.5,6,5.5,3
L 2.5,4.5,5.5,4.5
[G] 7
L 0,5,0,4
L 7.700012,9,7.700012,6
A 4,5,4,22.331762,187.180756
L 9,4,5,4
L 7.700012,4,7.700012,1
L 7.700012,1,5.24115,0.197433
A 4,4,4,172.819244,288.076782
[H] 7
L 2,0,2,9
L 7,9,7,0
L 2,4,7,4
L 0.5,0,3.5,0
L 3.5,9,0.5,9
L 5.5,9,8.5,9
L 8.5,0,5.5,0
[I] 3
L 1,9,8,9
L 1,0,8,0
L 4.5,0,4.5,9
[J] 3
L 8.5,9,4.5,9
L 6.5,9,6.5,3
A 3.5,3,3,180,0
[K] 7
L 2,9,2,0
L 7,0,2,5
L 7,9,3,4
L 0.5,9,3.5,9
L 0.5,0,3.5,0
L 8.5,9,5.5,9
L 8.5,0,5.5,0
[L] 4
L 1,9,4,9
L 2,9,2,0
L 1,0,8,0
L 8,0,8,3
[M] 8
L 0,0,3,0
L 6,0,9,0
L 0,9,3,9
L 6,9,9,9
L 1,0,1,9
L 8,9,8,0
L 1,9,4.5,2.75
L 4.5,2.75,8,9
[N] 7
L 0,9,3,9
L 3,0,0,0
L 9,9,6,9
L 6,0,9,0
L 1,9,1,0
L 1,9,8,0
L 8,0,8,9
[O] 8
L 1,3,1,6
A 4,6,3,90,180
A 4,3,3,180,270
L 4,9,5,9
L 5,0,4,0
L 8,6,8,3
A 5,6,3,0,90
A 5,3,3,270,0
[P] 5
L 0.5,0,3.5,0
L 1.5,0,1.5,9
L 0.5,9,5.5,9
L 1.5,4,5.5,4
A 5.5,6.5,2.5,270,90
[Q] 9
L 1,3,1,6
A 4,6,3,90,180
A 4,3,3,180,270
L 4,9,5,9
L 5,0,4,0
L 8,6,8,3
A 5,6,3,0,90
A 5,3,3,270,0
L 8,0,5,3
[R] 7
L 0.5,0,3.5,0
L 1.5,0,1.5,9
L 0.5,9,5.5,9
L 1.5,4,5.5,4
A 5.5,6.5,2.5,270,90
L 8.5,0,5.5,0
L 7,0,5,4
[S] 9
L 1,0,1,3
A 3.25,6.75,2.25,90,270
L 8,9,8,6
A 5.75,2.25,2.25,270,90
L 3.25,4.5,5.75,4.5
A 6,7,2,0,90
A 3,2,2,180,270
L 3,0,5.75,0
L 6,9,3.25,9
[T] 5
L 1,7,1,9
L 8,9,8,7
L 1,9,8,9
L 3,0,6,0
L 4.5,9,4.5,0
[U] 6
L 0,9,3,9
L 9,9,6,9
L 1.5,9,1.5,3
A 4.5,3,3,180,270
L 7.5,9,7.5,3
A 4.5,3,3,270,0
[V] 4
L 0,9,3,9
L 9,9,6,9
L 4.5,0,1.5,9
L 7.5,9,4.5,0
[W] 6
L 0,9,3,9
L 6,9,9,9
L 3,0,4.5,6
L 4.5,6,6,0
L 1.5,9,3,0
L 6,0,7.5,9
[X] 6
L 0,9,3,9
L 6,9,9,9
L 0,0,3,0
L 6,0,9,0
L 1.5,9,7.5,0
L 1.5,0,7.5,9
[Y] 6
L 0,9,3,9
L 6,9,9,9
L 3,0,6,0
L 4.5,4,4.5,0
L 1.5,9,4.5,4
L 4.5,4,7.5,9
[Z] 5
L 1,7,1,9
L 1,9,8,9
L 8,2,8,0
L 8,0,1,0
L 1,0,8,9
[[] 3
L 4,-1,5,-1
L 5,10,4,10
L 4.5,10,4.5,-1
[\] 1
L 1.5,10,7.5,-1
[]] 3
L 4,10,5,10
L 5,10,5,-1
L 5,-1,4,-1
[^] 2
L 4.5,9,1.5,6
L 7.5,6,4.5,9
[_] 1
L 8,-1,1,-1
[`] 1
L 4,9,5,7
[a] 7
L 8.5,0,6.5,0
A 2.629639,1.996387,2,99.500282,263.421234
A 3.89502,-5.565486,9.666677,74.366646,99.500168
A 2.968506,4.935666,4.957857,263.421143,315.421631
A 4.5,4.588459,2,0,90
A 4.5,1.978687,4.609772,90,130.601288
L 6.5,4.588459,6.5,0
[b] 5
L 0.5,0,2.5,0
L 2.5,0,2.5,9
L 2.5,9,0.5,9
A 5.5,3,3,0,180
A 5.5,3,3,180,0
[c] 4
L 7.5,6,7.5,4
L 7.5,4,6.900024,4.800008
L 7.5,1,5.653809,0.23077
A 4.5,3,3,36.870007,292.619751
[d] 5
L 8.5,0,6.5,0
L 6.5,0,6.5,9
A 3.5,3,3,0,180
A 3.5,3,3,180,0
L 6.5,9,4.5,9
[e] 3
L 1.5,3,7.5,3
L 7.5,1,5.653809,0.23077
A 4.5,3,3,0,292.619751
[f] 5
L 0.5,0,4.5,0
L 2.5,0,2.5,7
L 0.5,6,5.5,6
L 7.5,8,5.210083,8.869694
A 4.5,7,2,69.203148,180
[g] 6
A 3.5,3,3,0,180
A 3.5,3,3,180,0
L 8.5,6,6.5,6
L 6.5,6,6.5,-1
A 4.5,-1,2,270,0
L 4.5,-3,1.5,-3
[h] 7
L 0.5,0,3.5,0
L 0.5,9,2.5,9
L 8.5,0,5.5,0
L 2,9,2,0
A 5,4,2,0,121.054588
L 7,4,7,0
L 2,4.528125,3.968262,5.713347
[i] 4
L 7.5,0,1.5,0
L 4.5,0,4.5,6
L 4.5,6,2.5,6
L 4.5,8,4.5,9
[j] 5
L 3,6,7,6
L 7,6,7,-1
L 7,8,7,9
L 2,-2,4.289917,-2.869694
A 5,-1,2,249.203156,0
[k] 7
L 0,0,2,0
L 2,0,2,9
L 2,9,0,9
L 8,6,5,6
L 6.5,6,2,2.696379
L 8.5,0,5.5,0
L 7,0,3.569214,3.848392
[l] 3
L 1.5,0,7.5,0
L 4.5,0,4.5,9
L 4.5,9,2.5,9
[m] 11
L 3,0,0,0
L 0,6,1.5,6
L 1.5,6,1.5,0
L 4.5,0,4.5,5
L 7.5,5,7.5,0
L 6,0,4.5,0
L 9,0,7.5,0
L 4.5,4.55805,5.834961,5.746819
L 1.5,4.55805,2.834961,5.746819
A 3.5,5,1,0,131.687103
A 6.5,5,1,0,131.687103
[n] 7
L 2,6,2,0
L 0.5,6,2,6
L 0.5,0,3.5,0
L 8.5,0,5.5,0
L 7,3.5,7,0
L 2,4.629692,2.8479,5.376266
A 4.5,3.5,2.5,0,131.365814
[o] 2
A 4.5,3,3,0,180
A 4.5,3,3,180,0
[p] 5
A 5.5,3,3,0,180
A 5.5,3,3,180,0
L 2.5,6,2.5,-3
L 2.5,6,0.5,6
L 0.5,-3,4.5,-3
[q] 5
A 3.5,3,3,0,180
A 3.5,3,3,180,0
L 6.5,6,6.5,-3
L 6.5,6,8.5,6
L 8.5,-3,4.5,-3
[r] 5
L 2.5,6,2.5,0
L 1,6,2.5,6
L 2.5,3.716239,4.329224,5.359669
A 6,3.5,2.5,42.123169,131.93782
L 1,0,6,0
[s] 7
L 7.5,6,7.5,4
A 4.128296,0.685942,5.475353,51.99017,107.455315
L 6,3,3,3
A 3,4.5,1.5,110.666405,270
A 4.871704,5.314055,5.475353,231.990173,287.455322
A 6,1.5,1.5,290.666412,90
L 1.5,0,1.5,2
[t] 4
L 1.5,6,6.5,6
L 2.5,8,2.5,2
A 4.5,2,2,180,290.796844
L 7.5,1,5.210083,0.130304
[u] 7
L 2,6,2,2
L 7,6,7,0
L 7,0,9,0
L 7,1,4.710083,0.130306
A 4,2,2,180,290.796844
L 0.5,6,2,6
L 5.5,6,7,6
[v] 4
L 0,6,3,6
L 6,6,9,6
L 4.5,0,1.5,6
L 4.5,0,7.5,6
[w] 6
L 0,6,3,6
L 6,6,9,6
L 1,6,3,0
L 4.5,5,3,0
L 4.5,5,6,0
L 6,0,8,6
[x] 6
L 0,6,3,6
L 6,6,9,6
L 0,0,3,0
L 6,0,9,0
L 1.5,6,7.5,0
L 1.5,0,7.5,6
[y] 5
L 0,6,3,6
L 6,6,9,6
L 0,-3,5,-3
L 3,-3,7.5,6
L 1.5,6,4.5,0
[z] 5
L 1,4,1,6
L 1,6,8,6
L 8,6,1,0
L 1,0,8,0
L 8,0,8,2
[{] 6
L 3,5,2.300049,4.5
L 2.300049,4.5,3,4
A 5,8,2,90,180
L 3,8,3,5
A 5,1,2,180,270
L 3,4,3,1
[|] 1
L 4.5,10,4.5,-1
[}] 6
L 6,5,6.699951,4.5
L 6.699951,4.5,6,4
A 4,8,2,0,90
L 6,8,6,5
A 4,1,2,270,0
L 6,4,6,1
[~] 3
L 5.333252,5.254646,3.666748,6.745354
A 3,6,1,48.188911,180
A 6,6,1,228.188904,0
[<5B>] 9
L 2,6,2,2
L 7,6,7,0
L 7,0,9,0
L 7,1,4.710083,0.130306
A 4,2,2,180,290.796844
L 0.5,6,2,6
L 5.5,6,7,6
L 3,8,3,9
L 6,9,6,8
[] 4
L 1.5,3,7.5,3
L 7.5,1,5.653809,0.23077
A 4.5,3,3,0,292.619751
L 3.5,7,6.5,9
[„] 9
L 9,0,7,0
A 3.129639,1.996387,2,99.500282,263.421234
A 4.39502,-5.565487,9.666677,74.366646,99.500168
A 3.468506,4.935665,4.957857,263.421143,315.421631
A 5,4.588459,2,0,90
A 5,1.978687,4.609772,90,130.601288
L 7,4.588459,7,0
L 3,8,3,9
L 6,9,6,8
[…] 8
L 9,0,7,0
A 3.129639,1.996387,2,99.500282,263.421234
A 4.39502,-5.565487,9.666677,74.366646,99.500168
A 3.468506,4.935665,4.957857,263.421143,315.421631
A 5,4.588459,2,0,90
A 5,1.978687,4.609772,90,130.601288
L 7,4.588459,7,0
L 6,7,3,9
[Š] 4
L 1.5,3,7.5,3
L 7.5,1,5.653809,0.23077
A 4.5,3,3,0,292.619751
L 6.5,7,3.5,9
[Ž] 8
L 0,0,3,0
L 4.5,9,1,0
L 4.5,9,2,9
L 6,0,9,0
L 4.5,9,8,0
L 2.555542,4,6.444458,4
L 3,10,3,11
L 6,10,6,11
[”] 4
A 4.5,3,3,0,180
A 4.5,3,3,180,0
L 3,8,3,9
L 6,9,6,8
[™] 10
L 1,3,1,6
A 4,6,3,90,180
A 4,3,3,180,270
L 4,9,5,9
L 5,0,4,0
L 8,6,8,3
A 5,6,3,0,90
A 5,3,3,270,0
L 3,10,3,11
L 6,10,6,11
[š] 8
L 0,9,3,9
L 9,9,6,9
L 1.5,9,1.5,3
A 4.5,3,3,180,270
L 7.5,9,7.5,3
A 4.5,3,3,270,0
L 3,10,3,11
L 6,10,6,11
[©] 4
A 4.5,4.5,4.5,0,180
A 4.5,4.5,4.5,180,0
A 4.5,4.5,2.915476,30.963757,329.036255
L 7,7,7,5
[®] 9
A 4.5,4.5,4.5,0,180
A 4.5,4.5,4.5,180,0
L 3,2,3,7
L 3,4,5,4
A 5,5.5,1.5,270,90
L 6,2,5,4
L 6,2,6.5,2
L 3.5,2,2.5,2
L 2.5,7,5,7
[°] 2
A 4.5,7,2,0,180
A 4.5,7,2,180,0
[±] 3
L 1.499878,6,7.499878,6
L 4.499878,9,4.499878,3
L 1.499878,2,7.499878,2
[Ä] 8
L 0,0,3,0
L 4.5,9,1,0
L 4.5,9,2,9
L 6,0,9,0
L 4.5,9,8,0
L 2.555664,4,6.444336,4
L 3,10,3,11
L 6,10,6,11
[Ö] 10
L 1,3,1,6
A 4,6,3,90,180
A 4,3,3,180,270
L 4,9,5,9
L 5,0,4,0
L 8,6,8,3
A 5,6,3,0,90
A 5,3,3,270,0
L 3,10,3,11
L 6,10,6,11
[×] 2
L 6.5,6,2.5,2
L 2.5,6,6.5,2
[Ø] 3
A 4.5,4,2,0,180
A 4.5,4,2,180,0
L 2.5,2,6.5,6
[Ü] 8
L 0,9,3,9
L 9,9,6,9
L 1.5,9,1.5,3
A 4.5,3,3,180,270
L 7.5,9,7.5,3
A 4.5,3,3,270,0
L 3,10,3,11
L 6,10,6,11
[à] 8
L 8.5,0,6.5,0
A 2.629639,1.996387,2,99.500282,263.421234
A 3.89502,-5.565486,9.666677,74.366646,99.500168
A 2.968506,4.935666,4.957857,263.421143,315.421631
A 4.5,4.588459,2,0,90
A 4.5,1.978687,4.609772,90,130.601288
L 6.5,4.588459,6.5,0
L 5.5,7,2.5,9
[ä] 9
L 8.5,0,6.5,0
A 2.629639,1.996387,2,99.500282,263.421234
A 3.89502,-5.565486,9.666677,74.366646,99.500168
A 2.968506,4.935666,4.957857,263.421143,315.421631
A 4.5,4.588459,2,0,90
A 4.5,1.978687,4.609772,90,130.601288
L 6.5,4.588459,6.5,0
L 2.5,8,2.5,9
L 5.5,9,5.5,8
[è] 4
L 1.5,3,7.5,3
L 7.5,1,5.653809,0.23077
A 4.5,3,3,0,292.619751
L 6.5,7,3.5,9
[é] 4
L 1.5,3,7.5,3
L 7.5,1,5.653809,0.23077
A 4.5,3,3,0,292.619751
L 3.5,7,6.5,9
[ö] 4
A 4.5,3,3,0,180
A 4.5,3,3,180,0
L 3,8,3,9
L 6,9,6,8
[÷] 3
L 2,4,7,4
L 4,6,5,6
L 4,2,5,2
[ø] 3
A 4.5,4,2,0,180
A 4.5,4,2,180,0
L 2.5,2,6.5,6
[ü] 9
L 2,6,2,2
L 7,6,7,0
L 7,0,9,0
L 7,1,4.709961,0.130306
A 4,2,2,180,290.796844
L 0.5,6,2,6
L 5.5,6,7,6
L 3,8,3,9
L 6,9,6,8
[Å] 7
L 0,0,3,0
L 4.5,9,1,0
L 4.5,9,2,9
L 6,0,9,0
L 4.5,9,8,0
L 2.555664,4,6.444336,4
A 4.5,10.5,0.75,0,360
[å] 8
L 8.5,0,6.5,0
A 2.629639,1.996387,2,99.500282,263.421234
A 3.89502,-5.565486,9.666677,74.366646,99.500168
A 2.968506,4.935666,4.957857,263.421143,315.421631
A 4.5,4.588459,2,0,90
A 4.5,1.978687,4.609772,90,130.601288
L 6.5,4.588459,6.5,0
A 4.5,8.5,0.75,0,360
#EOF

660
ruler/cxf-fonts/cursive.cxf Normal file
View file

@ -0,0 +1,660 @@
# Format: QCad II Font
# Creator: QCad
# Version: 1
# Name: Cursive
# LetterSpacing: 0.5
# WordSpacing: 6.75
# LineSpacingFactor: 1.0
# Author: Andrew Mustun <andrew@qcad.org>
[!] 2
L 2.329376,8.69334,0.776459,2.89777
L 0,0,0.129425,0.48296
["] 2
L 2.329376,8.69334,1.811737,6.76148
L 4.811707,6.76148,5.329346,8.69334
[#] 4
L 1.196136,0,3.607666,8.999999
L 4.196136,0,6.607666,8.999999
L -0.000031,3,6.999969,3
L 0.803833,6,7.803833,6
[&] 5
L 4.983215,0,2.996948,6.98907
AR 4.284363,7.35494,1.33839,195.86496,307.833008
L 5.105286,6.29789,1.259521,3.31126
A 2.394287,1.85007,1.85007,127.833,307.83313
L 3.529053,0.38888,6.759644,2.89778
['] 1
L 2.329376,8.69334,1.811737,6.76148
[(] 1
A 13.375824,0.6484,13.39153,143.076523,186.923752
[)] 1
A -10.964691,7.07902,13.39169,323.076965,6.92363
[*] 2
L 1.294067,4.82963,4.258789,0.96593
L 5.294067,4.82963,0.258789,0.96593
[+] 2
L 0.776489,2.89777,4.776489,2.89777
L 3.294128,4.82963,2.25885,0.96593
[,] 1
L 0,0,-0.517639,-1.93185
[-] 1
L 0.776428,2.89777,4.776428,2.89777
[.] 1
L 0,0,0.025879,0.0966
[/] 1
L 0.111755,-1.44889,7.47644,11.10815
[0] 18
A 4.487061,2.08942,3.65251,174.888962,206.092712
A 2.014893,0.91717,0.91742,208.248138,268.668121
A 1.842957,1.69956,1.70623,275.064636,314.517487
A -1.3797,5.13753,6.41813,313.512726,334.89856
L 4.432251,2.41482,4.765503,3.15704
L 4.765503,3.15704,4.996765,3.79548
L 4.996765,3.79548,5.200439,4.51321
L 5.200439,4.51321,5.39502,5.5411
L 5.39502,5.5411,5.467529,6.27852
A 1.829956,6.60405,3.65205,354.896393,26.093731
A 4.301636,7.77615,0.91744,28.249029,88.666687
A 4.473572,6.99381,1.70618,95.064087,134.518051
A 7.696289,3.55581,6.41813,133.512711,154.89856
L 1.884338,6.27852,1.551086,5.5363
L 1.551086,5.5363,1.319824,4.89786
L 1.319824,4.89786,1.11615,4.18013
L 1.11615,4.18013,0.92157,3.15225
L 0.92157,3.15225,0.84906,2.41482
[1] 2
L 1.811768,6.76148,4.329407,8.69334
L 4.329407,8.69334,2,0
[2] 5
L 4,0,0,0
L 0,0,5.332336,5.75381
A 4.048767,6.94333,1.75,317.177368,90
L 3.67218,8.69334,4.048767,8.69334
A 3.67218,6.94333,1.75,90,165
[3] 9
L 2.329407,8.69334,4.700378,8.69334
AR 4.700378,7.44335,1.24999,90,345
L 5.907715,7.11983,5.715759,6.40319
AR 3.6651,6.95263,2.123,345,270
L 3.6651,4.82963,2.294128,4.82963
AR 3.6651,3.57964,1.24999,90,345
L 4.872498,3.25611,4.421631,1.57356
AR 2.370972,2.12303,2.12303,345,270
L 2.370972,0,0,0
[4] 3
L 3.5,0,4.535278,3.8637
L 5.517639,1.93185,0.517639,1.93185
L 0.517639,1.93185,4.329407,8.69334
[5] 7
L 6.329407,8.69334,2.329407,8.69334
L 2.329407,8.69334,1.294128,4.82963
L 1.294128,4.82963,3.6651,4.82963
AR 3.6651,3.57963,1.25,90,345
L 4.872498,3.2561,4.421631,1.57353
AR 2.370972,2.12299,2.123,345,270
L 2.370972,0,0,0
[6] 8
A 8.234131,1.78898,7.4905,112.816887,165
L 0.99884,3.72765,0.421631,1.57353
A 1.629028,1.25001,1.25,165,270
L 1.629028,0.00001,2.370972,0.00001
A 2.370972,2.12302,2.12301,270,345
L 4.421631,1.57354,4.872437,3.25612
A 3.665039,3.57963,1.25,345,90
L 3.665039,4.82963,1.388489,4.82963
[7] 3
L 2.329407,8.69334,6.329407,8.69334
L 6.329407,8.69334,1.5,0
L 5.294128,4.82963,3.294128,4.82963
[8] 16
AR 4.402893,7.43737,1.25596,90,351.164215
L 5.643921,7.24445,5.394104,6.312
AR 3.446777,6.83379,2.01601,345,276.215851
L 3.6651,4.82963,2.828735,4.82963
A 2.828735,2.82963,2,90,165
L 0.896851,3.34725,0.421631,1.57352
A 1.629028,1.25001,1.25001,165,270
L 1.629028,0,2.465332,0
A 2.465332,2,2,270,345
L 4.397217,1.48238,4.872498,3.25611
A 3.665039,3.57962,1.25001,345,90
L 3.6651,4.82963,3.125916,4.82963
AR 3.125916,6.07962,1.24999,270,165
L 1.918518,6.40315,2.134644,7.21095
AR 4.065857,6.6942,1.99913,165,90
L 4.066528,8.69333,4.402893,8.69334
[9] 8
A -1.904785,6.90437,7.49051,292.816925,345
L 5.330505,4.96569,5.907715,7.1198
A 4.700317,7.44334,1.25,345,90
L 4.700317,8.69334,3.958374,8.69334
A 3.958374,6.57032,2.12301,90,165
L 1.907715,7.1198,1.456848,5.43722
A 2.664307,5.11371,1.25001,165,270
L 2.664246,3.8637,4.940796,3.8637
[:] 2
L 0,0,0.025879,0.0966
L 1.035278,3.8637,1.061157,3.9603
[;] 2
L 1.035278,3.8637,1.061157,3.9603
L 0,0,-0.517639,-1.93185
[<] 2
L 6.441101,7.24445,1.794067,4.82963
L 1.794067,4.82963,4.888184,1.44889
[=] 2
L 1.164673,4.34666,5.164673,4.34666
L 0.388245,1.44889,4.388245,1.44889
[>] 2
L 2.441101,7.24445,5.794067,4.82963
L 5.794067,4.82963,0.888184,1.44889
[?] 9
L 2,0,2.129395,0.48296
L 2.776428,2.89777,3.169373,4.36419
AR 4.328491,4.0536,1.2,165,121.243988
L 3.706055,5.07956,5.270386,6.02859
A 4.647949,7.05454,1.2,301.244141,345
L 5.807068,6.74395,5.907776,7.11983
A 4.700378,7.44333,1.25,345,90
L 4.700378,8.69334,3.958435,8.69334
A 3.958435,6.57033,2.123,90,165
[A] 3
L 0,0,5.329346,8.69334
L 5.329346,8.69334,6,0
L 5.813721,2.41482,1.480408,2.41482
[B] 10
L 2.329346,8.69334,0,0
L 0,0,3.465332,0
A 3.465332,2,2,270,345
L 5.397217,1.48236,5.619507,2.31199
A 3.687622,2.82963,2,345,90
L 1.294128,4.82963,4.643127,4.82963
A 4.643127,6.32963,1.5,270,345
L 6.09198,5.9414,6.323425,6.8051
A 4.874512,7.19333,1.5,345,90
L 2.329346,8.69334,4.874512,8.69334
[C] 5
L 6.329346,8.69334,3.864014,8.69334
A 3.864014,6.69333,2,90,165
L 1.93219,7.21097,0.674622,2.51764
A 2.606445,2,2,165,270
L 2.606445,0,4,0
[D] 6
L 2.329346,8.69334,0,0
L 0,0,3.081665,0
A 3.081665,2.5,2.5,270,345
L 5.496521,1.85295,6.654785,6.1757
A 4.7229,6.69333,2,345,90
L 4.7229,8.69334,2.329346,8.69334
[E] 4
L 6.329346,8.69334,2.329346,8.69334
L 2.329346,8.69334,0,0
L 0,0,4,0
L 1.294067,4.82963,4.294067,4.82963
[F] 3
L 6.329346,8.69334,2.329346,8.69334
L 2.329346,8.69334,0,0
L 1.294067,4.82963,5.294067,4.82963
[G] 7
L 7.329346,8.69334,3.864014,8.69334
A 3.864014,6.69333,2,90,165
L 1.93219,7.21097,0.674622,2.51764
A 2.606445,2,2,165,270
L 2.606445,0,5,0
L 5,0,6.294128,4.82963
L 6.294128,4.82963,4.294128,4.82963
[H] 3
L 2.329346,8.69334,0,0
L 5,0,7.329346,8.69334
L 1.294067,4.82963,6.294067,4.82963
[I] 1
L 2.329346,8.69334,0,0
[J] 3
L 0,0,1.465332,0
A 1.465332,2,2,270,345
L 5.329346,8.69334,3.397217,1.48236
[K] 3
L 2.329346,8.69334,0,0
L 7.329346,8.69334,1.035278,3.8637
L 2.797607,5.216,5,0
[L] 2
L 2.329346,8.69334,0,0
L 0,0,4,0
[M] 4
L 0,0,2.329346,8.69334
L 2.329346,8.69334,4.035278,3.8637
L 4.035278,3.8637,8.329346,8.69334
L 8.329346,8.69334,6,0
[N] 3
L 0,0,2.329346,8.69334
L 2.329346,8.69334,5,0
L 5,0,7.329346,8.69334
[O] 8
L 4.7229,8.69334,4.247681,8.69334
A 4.247681,6.19334,2.5,90,165
L 1.832886,6.84038,0.674622,2.51764
A 2.606445,2,2,165,270
L 2.606445,0,3.081665,0
A 3.081665,2.5,2.5,270,345
L 5.49646,1.85295,6.654785,6.1757
A 4.7229,6.69333,2,345,90
[P] 6
L 0,0,2.329346,8.69334
L 2.329346,8.69334,4.7229,8.69333
AR 4.7229,6.69332,2.00001,90,345
L 6.654785,6.1757,6.432495,5.34607
AR 4.50061,5.86371,2.00001,345,270
L 4.50061,3.8637,1.035278,3.8637
[Q] 9
L 4.7229,8.69334,4.247681,8.69334
A 4.247681,6.19334,2.5,90,165
L 1.832886,6.84038,0.674622,2.51764
A 2.606445,2,2,165,270
L 2.606445,0,3.081665,0
A 3.081665,2.5,2.5,270,345
L 5.49646,1.85295,6.654785,6.1757
A 4.7229,6.69333,2,345,90
L 6,0,3.517639,1.93185
[R] 7
L 0,0,2.329407,8.69334
L 2.329407,8.69334,4.7229,8.69333
AR 4.7229,6.69333,2.00001,90,345
L 6.654785,6.17569,6.432495,5.34606
AR 4.50061,5.86372,2.00002,345,270
L 4.50061,3.8637,1.035278,3.8637
L 4.035278,3.8637,5,0
[S] 5
A 4.77533,4.72088,4.02201,60.18087,119.451851
A 3.643188,6.72585,1.71947,119.451851,241.10733
L 2.812439,5.22041,4.454468,4.31424
AR 3.363098,2.33666,2.25873,61.107311,291.921448
AR 2.704773,3.97246,4.02201,291.921448,231.799301
[T] 2
L 2.329407,8.69334,7.329407,8.69334
L 4.829407,8.69334,2.5,0
[U] 4
L 2.337952,8.72546,0.683228,2.54976
A 2.615051,2.03212,2,165,270
A 3.020874,2.57947,2.57947,260.948517,344.383453
L 5.505127,1.88508,7.337952,8.72546
[V] 2
L 2.329407,8.69334,3,0
L 3,0,8.329407,8.69334
[W] 4
L 1.329407,8.69334,1,0
L 1,0,4.552917,5.79556
L 4.552917,5.79556,5,0
L 5,0,9.284376,8.69334
[X] 2
L 2.329407,8.69334,6,0
L 8.329407,8.69334,0,0
[Y] 3
L 2.329407,8.69334,4.035278,3.8637
L 4.035278,3.8637,8.329407,8.69334
L 4.035278,3.8637,3,0
[Z] 3
L 2.329407,8.69334,7.329407,8.69334
L 7.329407,8.69334,0,0
L 0,0,5,0
[[] 3
L 3.329346,8.69334,2.329346,8.69334
L 2.329346,8.69334,-0.25885,-0.96593
L -0.25885,-0.96593,0.74115,-0.96593
[\] 1
L 4.111755,-1.44889,3.47644,11.10815
[]] 3
L 2.329346,8.69334,3.329346,8.69334
L 3.329346,8.69334,0.741211,-0.96593
L 0.741211,-0.96593,-0.258789,-0.96593
[a] 8
L 2.052979,5.79556,4.249756,5.79556
AR 4.249756,4.79556,1,90,345
L 5.215698,4.53674,4,0
L 4,0,1.303223,0
AR 1.303223,1,1,270,165
L 0.33728,1.25883,0.577881,2.15659
AR 1.543823,1.89777,1,165,90
L 1.543823,2.89777,4.776489,2.89777
[b] 6
L 2.329346,8.69334,0,0
L 0,0,3.232666,0
A 3.232666,1,1,270,345
L 4.198608,0.74118,5.215576,4.53674
A 4.249634,4.79556,1,345,90
L 4.249634,5.79556,1.552979,5.79556
[c] 5
L 4.552979,5.79556,2.320312,5.79556
A 2.320312,4.79556,1,90,165
L 1.35437,5.05438,0.33728,1.25882
A 1.303223,1,1,165,270
L 1.303223,0,3,0
[d] 6
L 6.329346,8.69334,4,0
L 4,0,1.303223,0
AR 1.303223,1,1,270,165
L 0.33728,1.25882,1.35437,5.05438
AR 2.320312,4.79556,1,165,90
L 2.320312,5.79556,5.552979,5.79556
[e] 8
L 4,0,1.303223,0
AR 1.303223,1,1,270,165
L 0.33728,1.25882,1.35437,5.05438
AR 2.320312,4.79555,1,165,90
L 2.32019,5.79556,4.249756,5.79556
AR 4.249756,4.79555,1,90,345
L 5.215576,4.53674,4.776489,2.89777
L 4.776489,2.89777,0.776489,2.89777
[f] 4
L 5.329346,8.69334,4.09668,8.69334
A 4.09668,7.69334,1,90,165
L 3.130737,7.95216,1,0
L 1.552856,5.79556,4.552979,5.79556
[g] 8
L -0.776489,-2.89778,2.456177,-2.89778
A 2.456177,-1.89776,1.00002,270,345
L 3.422119,-2.15659,5.552856,5.79556
L 5.552856,5.79556,2.32019,5.79556
A 2.32019,4.79555,1,90,165
L 1.35437,5.05438,0.33728,1.25882
A 1.303223,1,1,165,270
L 1.303223,0,4,0
[h] 4
L 2.329346,8.69334,0,0
L 1.552979,5.79556,4.249634,5.79556
AR 4.249634,4.79556,1,90,345
L 5.215576,4.53674,4,0
[i] 2
L 0,0,1.552979,5.79556
L 2.329346,8.69334,2.199951,8.21037
[j] 4
L 0.456177,-2.89778,-0.776489,-2.89778
L 4.329346,8.69334,4.199951,8.21037
L 3.552856,5.79556,1.422119,-2.15659
AR 0.456177,-1.897775,1,345.000244,270
[k] 3
L 2.329346,8.69334,0,0
L 0.776489,2.89777,5.552979,5.79556
L 4,0,2.368652,3.8637
[l] 2
L 2.329346,8.69334,0.33728,1.25882
A 1.303223,1,1,165,270
[m] 5
L 0,0,1.552979,5.79556
L 1.552979,5.79556,6.249634,5.79556
AR 6.249634,4.79556,1,90,345
L 7.215576,4.53674,6,0
L 4.552979,5.79556,3,0
[n] 4
L 0,0,1.552979,5.79556
L 1.552979,5.79556,4.249634,5.79556
AR 4.249634,4.79556,1,90,345
L 5.215576,4.53674,4,0
[o] 8
L 3.598022,5.79556,2.703857,5.79556
A 2.703857,4.29556,1.5,90,165
L 1.255005,4.68378,0.505981,1.88823
A 1.954834,1.5,1.5,165,270
L 1.954834,0,2.848999,0
A 2.848999,1.5,1.5,270,345
L 4.297852,1.11177,5.046997,3.90733
A 3.598022,4.29556,1.5,345,90
[p] 6
L -0.776489,-2.89778,1.552979,5.79556
L 1.552979,5.79556,4.249634,5.79556
AR 4.249634,4.79557,0.99999,90,345
L 5.215576,4.53674,4.198608,0.74118
AR 3.232666,0.99999,0.99999,345,270
L 3.232666,0,0,0
[q] 6
L 4,0,1.303223,0
AR 1.303223,1,1,270,165
L 0.33728,1.25882,1.354248,5.05438
AR 2.32019,4.79556,1,165,90
L 2.32019,5.79556,5.552856,5.79556
L 5.552856,5.79556,3.223511,-2.89778
[r] 3
L 0,0,1.552979,5.79556
L 1.552979,5.79556,3.249756,5.79556
AR 3.249756,4.79556,1,90,345
[s] 6
L 5.438477,5.36859,4.961548,5.54681
A 2.730469,-1.57843,7.46638,72.613403,92.315514
A 2.497314,4.68381,1.2,93.275612,232.790436
L 1.771729,3.7281,3.811279,2.17945
AR 3.062622,1.21828,1.21828,52.087662,260.887573
AR 2.765015,6.82479,6.81022,270.881073,247.368668
[t] 2
L 3.329346,8.69334,1,0
L 1.552979,5.79556,4.552979,5.79556
[u] 4
L 1.552856,5.79556,0.33728,1.25882
A 1.303223,1,1,165,270
L 1.303223,0,4,0
L 4,0,5.552856,5.79556
[v] 2
L 1.552856,5.79556,2,0
L 2,0,5.552856,5.79556
[w] 4
L 1.552856,5.79556,1.5,0
L 1.5,0,4.035278,3.8637
L 4.035278,3.8637,4.5,0
L 4.5,0,7.552856,5.79556
[x] 2
L 1.552979,5.79556,4,0
L 5.552979,5.79556,0,0
[y] 4
L -0.776489,-2.89778,-0.336426,-2.89778
A -0.336426,-1.8978,0.99998,270,328.490936
L 0.516113,-2.42042,5.552979,5.79556
L 1.552856,5.79556,2,0
[z] 3
L 1.552979,5.79556,5.552979,5.79556
L 5.552979,5.79556,0,0
L 0,0,4,0
[{] 6
A 3.446777,8,1,90,165
L 2.480835,8.25882,1.677002,5.25882
AR 0.036499,5.698396,1.698396,345,270
AR 0.036499,3,1,90,345
L 1.002441,2.741181,0.33728,0.258819
A 1.303223,0,1,165,270
[}] 6
AR 2.143555,8,1,90,345
L 3.109497,7.74118,2.444336,5.25882
A 3.410278,5,1,165,270
A 3.410278,2.301604,1.698396,90,165
L 1.769775,2.741181,0.965942,-0.258819
AR 0,0,1,345,270
[¢] 3
L 1.98645,0.48296,6.342773,8.21037
A 4.164673,4.34666,2.89778,60.587872,240.58786
A 4.164673,4.34666,2.89778,240.58786,60.587872
[°] 2
A 3.480347,7.19334,1.5,76.951317,253.048615
A 3.480347,7.19334,1.5,253.048615,76.951317
[±] 3
L 0.776367,4.89777,4.776367,4.89777
L 3.294067,6.82963,2.258789,2.96593
L -0.000122,2,3.999878,2
[Ä] 5
L 0,0,5.329346,8.69334
L 5.329346,8.69334,6,0
L 5.813721,2.41482,1.480469,2.41482
L 3.652832,9.90073,3.782227,10.38371
L 7.652832,9.90073,7.782227,10.38371
[Ö] 10
L 4.247803,8.69334,4.7229,8.69334
L 6.654785,6.1757,5.496582,1.85295
L 3.081787,0,2.606445,0
L 0.674561,2.51764,1.832764,6.84038
A 2.606445,2,2,165,270
A 4.7229,6.69333,2,345,90
L 3.652832,9.90073,3.782227,10.38371
L 6.652832,9.90073,6.782227,10.38371
A 4.247803,6.19334,2.5,90,165
A 3.081787,2.5,2.5,270,345
[Ü] 7
L 7.329346,8.69334,5.496582,1.85296
L 3.081787,0,2.606445,0
L 0.674561,2.51764,2.329346,8.69334
A 2.606445,2,2,165,270
L 3.652832,9.90073,3.782227,10.38371
L 6.652832,9.90073,6.782227,10.38371
A 3.081787,2.5,2.5,270,345
[ä] 10
L 3.329346,8.69334,3.199951,8.21037
L 5.329346,8.69334,5.199951,8.21037
L 2.052979,5.79556,4.249756,5.79556
AR 4.249756,4.79556,1,90,345
L 5.215576,4.53674,4,0
L 4,0,1.303223,0
AR 1.303223,1,1,270,165
L 0.337402,1.25883,0.577881,2.15659
AR 1.543701,1.89777,1,165,90
L 1.543701,2.89777,4.776367,2.89777
[ö] 10
L 3.329346,8.69334,3.199951,8.21037
L 5.329346,8.69334,5.199951,8.21037
L 3.598145,5.79556,2.703857,5.79556
A 2.703857,4.29556,1.5,90,165
L 1.254883,4.68378,0.505859,1.88823
A 1.954834,1.5,1.5,165,270
L 1.954834,0,2.848877,0
A 2.848877,1.5,1.5,270,345
L 4.297852,1.11177,5.046875,3.90733
A 3.598145,4.29556,1.5,345,90
[ø] 3
L 1.986572,0.48296,6.342773,8.21037
A 4.164551,4.34666,2.89778,60.587872,240.58786
A 4.164551,4.34666,2.89778,240.58786,60.587872
[ú] 2
L 1.294189,4.82963,4.258789,0.96593
L 5.294189,4.82963,0.258789,0.96593
[ü] 6
L 3.329346,8.69334,3.199951,8.21037
L 5.329346,8.69334,5.199951,8.21037
L 1.552979,5.79556,0.337402,1.25882
L 1.303223,0,4,0
L 4,0,5.552979,5.79556
A 1.303223,1,1,165,270
[Å] 4
L 0,0,5.329346,8.69334
L 5.329346,8.69334,6,0
L 5.813721,2.41482,1.480469,2.41482
A 5.717530,10.14222,0.4,0,360
[å] 9
A 4.264649,8.45186,0.35,0,360
L 2.052979,5.79556,4.249756,5.79556
AR 4.249756,4.79556,1,90,345
L 5.215576,4.53674,4,0
L 4,0,1.303223,0
AR 1.303223,1,1,270,165
L 0.337402,1.25883,0.577881,2.15659
AR 1.543701,1.89777,1,165,90
L 1.543701,2.89777,4.776367,2.89777
[#2205] //diameter
L 1.986572,0.48296,6.342773,8.21037
A 4.164551,4.34666,2.89778,60.587872,240.58786
A 4.164551,4.34666,2.89778,240.58786,60.587872
#EOF

File diff suppressed because it is too large Load diff

3188
ruler/cxf-fonts/gothgbt.cxf Normal file

File diff suppressed because it is too large Load diff

3465
ruler/cxf-fonts/gothgrt.cxf Normal file

File diff suppressed because it is too large Load diff

2727
ruler/cxf-fonts/gothitt.cxf Normal file

File diff suppressed because it is too large Load diff

1833
ruler/cxf-fonts/greekc.cxf Normal file

File diff suppressed because it is too large Load diff

1480
ruler/cxf-fonts/greekcs.cxf Normal file

File diff suppressed because it is too large Load diff

760
ruler/cxf-fonts/greekp.cxf Normal file
View file

@ -0,0 +1,760 @@
# Format: QCad II Font
# Creator: Adam Radlowski's "dodajf" program - GRASS font translator
# Version: 1.0.0
# Name: Greek Plain
# LetterSpacing: 3.0
# WordSpacing: 6.75
# LineSpacingFactor: 1.0
# Author: Hershey fonts
[!] 6
L 0,5.538462,0,2.461538
L 0.615385,5.538462,0.615385,2.461538
L 0,0.615385,0,0
L 0,0,0.615385,0
L 0.615385,0,0.615385,0.615385
L 0.615385,0.615385,0,0.615385
["] 2
L 0,5.538462,0,3.076923
L 2.461538,5.538462,2.461538,3.076923
[#] 4
L 1.846154,6.153846,0.615385,-0.615385
L 3.692308,6.153846,2.461538,-0.615385
L 0,3.692308,4.307692,3.692308
L 0,1.846154,4.307692,1.846154
[$] 12
L 3.692308,4.923077,2.461538,5.538462
L 2.461538,5.538462,1.230769,5.538462
L 1.230769,5.538462,0,4.923077
L 0,4.923077,0,3.692308
L 0,3.692308,1.230769,3.076923
L 1.230769,3.076923,3.076923,2.461538
L 3.076923,2.461538,3.692308,1.846154
L 3.692308,1.846154,3.692308,0.615385
L 3.692308,0.615385,2.461538,0
L 2.461538,0,1.230769,0
L 1.230769,0,0,0.615385
L 1.846154,6.153846,1.846154,-0.615385
[%] 20
L 7.384615,6.769231,0,-1.230769
L 1.846154,6.769231,2.461538,6.153846
L 2.461538,6.153846,2.461538,4.923077
L 2.461538,4.923077,1.846154,4.307692
L 1.846154,4.307692,0.615385,4.307692
L 0.615385,4.307692,0,4.923077
L 0,4.923077,0,6.153846
L 0,6.153846,0.615385,6.769231
L 0.615385,6.769231,1.846154,6.769231
L 1.846154,6.769231,4.307692,6.153846
L 4.307692,6.153846,6.153846,6.153846
L 6.153846,6.153846,7.384615,6.769231
L 5.538462,1.230769,4.923077,0.615385
L 4.923077,0.615385,4.923077,-0.615385
L 4.923077,-0.615385,5.538462,-1.230769
L 5.538462,-1.230769,6.769231,-1.230769
L 6.769231,-1.230769,7.384615,-0.615385
L 7.384615,-0.615385,7.384615,0.615385
L 7.384615,0.615385,6.769231,1.230769
L 6.769231,1.230769,5.538462,1.230769
[&] 19
L 4.923077,2.461538,4.307692,2.461538
L 4.307692,2.461538,3.692308,1.846154
L 3.692308,1.846154,3.076923,0.615385
L 3.076923,0.615385,2.461538,0
L 2.461538,0,0.615385,0
L 0.615385,0,0,0.615385
L 0,0.615385,0,1.846154
L 0,1.846154,0.615385,2.461538
L 0.615385,2.461538,2.461538,3.076923
L 2.461538,3.076923,3.076923,3.692308
L 3.076923,3.692308,3.076923,4.923077
L 3.076923,4.923077,2.461538,5.538462
L 2.461538,5.538462,1.230769,5.538462
L 1.230769,5.538462,0.615385,4.923077
L 0.615385,4.923077,0.615385,3.692308
L 0.615385,3.692308,1.846154,1.846154
L 1.846154,1.846154,3.076923,0.615385
L 3.076923,0.615385,4.307692,0
L 4.307692,0,4.923077,0
['] 5
L 0.615385,4.923077,0,4.923077
L 0,4.923077,0,5.538462
L 0,5.538462,0.615385,5.538462
L 0.615385,5.538462,0.615385,4.307692
L 0.615385,4.307692,0,3.076923
[(] 5
L 1.846154,6.153846,0.615385,4.923077
L 0.615385,4.923077,0,3.692308
L 0,3.692308,0,1.846154
L 0,1.846154,0.615385,0.615385
L 0.615385,0.615385,1.846154,-0.615385
[)] 5
L 0,6.153846,1.230769,4.923077
L 1.230769,4.923077,1.846154,3.692308
L 1.846154,3.692308,1.846154,1.846154
L 1.846154,1.846154,1.230769,0.615385
L 1.230769,0.615385,0,-0.615385
[*] 3
L 1.846154,7.384615,1.846154,3.692308
L 0,6.769231,3.692308,4.307692
L 3.692308,6.769231,0,4.307692
[+] 2
L 2.461538,4.923077,2.461538,0
L 0,2.461538,4.923077,2.461538
[,] 5
L 0.615385,0,0,0
L 0,0,0,0.615385
L 0,0.615385,0.615385,0.615385
L 0.615385,0.615385,0.615385,-0.615385
L 0.615385,-0.615385,0,-1.846154
[-] 1
L 0,2.461538,4.923077,2.461538
[.] 4
L 0,0.615385,0,0
L 0,0,0.615385,0
L 0.615385,0,0.615385,0.615385
L 0.615385,0.615385,0,0.615385
[/] 1
L 4.923077,6.153846,0,-0.615385
[0] 10
L 1.846154,5.538462,0.615385,4.923077
L 0.615385,4.923077,0,3.692308
L 0,3.692308,0,1.846154
L 0,1.846154,0.615385,0.615385
L 0.615385,0.615385,1.846154,0
L 1.846154,0,3.076923,0.615385
L 3.076923,0.615385,3.692308,1.846154
L 3.692308,1.846154,3.692308,3.692308
L 3.692308,3.692308,3.076923,4.923077
L 3.076923,4.923077,1.846154,5.538462
[1] 2
L 0,4.307692,1.230769,5.538462
L 1.230769,5.538462,1.230769,0
[2] 7
L 0,4.923077,1.230769,5.538462
L 1.230769,5.538462,2.461538,5.538462
L 2.461538,5.538462,3.692308,4.923077
L 3.692308,4.923077,3.692308,3.692308
L 3.692308,3.692308,3.076923,2.461538
L 3.076923,2.461538,0,0
L 0,0,3.692308,0
[3] 11
L 0,4.923077,1.230769,5.538462
L 1.230769,5.538462,2.461538,5.538462
L 2.461538,5.538462,3.692308,4.923077
L 3.692308,4.923077,3.692308,3.692308
L 3.692308,3.692308,2.461538,3.076923
L 1.846154,3.076923,2.461538,3.076923
L 2.461538,3.076923,3.692308,2.461538
L 3.692308,2.461538,3.692308,0.615385
L 3.692308,0.615385,2.461538,0
L 2.461538,0,1.230769,0
L 1.230769,0,0,0.615385
[4] 3
L 3.076923,5.538462,3.076923,0
L 3.076923,5.538462,0,1.846154
L 0,1.846154,4.923077,1.846154
[5] 10
L 0.615385,5.538462,0,3.076923
L 0,3.076923,1.230769,3.692308
L 1.230769,3.692308,1.846154,3.692308
L 1.846154,3.692308,3.076923,3.076923
L 3.076923,3.076923,3.692308,1.846154
L 3.692308,1.846154,3.076923,0.615385
L 3.076923,0.615385,1.846154,0
L 1.846154,0,1.230769,0
L 1.230769,0,0,0.615385
L 0.615385,5.538462,3.076923,5.538462
[6] 12
L 3.076923,5.538462,1.846154,5.538462
L 1.846154,5.538462,0.615385,4.923077
L 0.615385,4.923077,0,3.692308
L 0,3.692308,0,1.846154
L 0,1.846154,0.615385,0.615385
L 0.615385,0.615385,1.846154,0
L 1.846154,0,3.076923,0.615385
L 3.076923,0.615385,3.692308,1.846154
L 3.692308,1.846154,3.076923,3.076923
L 3.076923,3.076923,1.846154,3.692308
L 1.846154,3.692308,0.615385,3.076923
L 0.615385,3.076923,0,1.846154
[7] 2
L 3.692308,5.538462,1.230769,0
L 0,5.538462,3.692308,5.538462
[8] 15
L 1.230769,5.538462,0,4.923077
L 0,4.923077,0,3.692308
L 0,3.692308,1.230769,3.076923
L 1.230769,3.076923,2.461538,3.076923
L 2.461538,3.076923,3.692308,3.692308
L 3.692308,3.692308,3.692308,4.923077
L 3.692308,4.923077,2.461538,5.538462
L 2.461538,5.538462,1.230769,5.538462
L 1.230769,3.076923,0,2.461538
L 0,2.461538,0,0.615385
L 0,0.615385,1.230769,0
L 1.230769,0,2.461538,0
L 2.461538,0,3.692308,0.615385
L 3.692308,0.615385,3.692308,2.461538
L 3.692308,2.461538,2.461538,3.076923
[9] 12
L 3.692308,3.692308,3.076923,2.461538
L 3.076923,2.461538,1.846154,1.846154
L 1.846154,1.846154,0.615385,2.461538
L 0.615385,2.461538,0,3.692308
L 0,3.692308,0.615385,4.923077
L 0.615385,4.923077,1.846154,5.538462
L 1.846154,5.538462,3.076923,4.923077
L 3.076923,4.923077,3.692308,3.692308
L 3.692308,3.692308,3.692308,1.846154
L 3.692308,1.846154,3.076923,0.615385
L 3.076923,0.615385,1.846154,0
L 1.846154,0,0.615385,0
[:] 8
L 0,3.692308,0,3.076923
L 0,3.076923,0.615385,3.076923
L 0.615385,3.076923,0.615385,3.692308
L 0.615385,3.692308,0,3.692308
L 0,0.615385,0,0
L 0,0,0.615385,0
L 0.615385,0,0.615385,0.615385
L 0.615385,0.615385,0,0.615385
[;] 9
L 0,3.692308,0,3.076923
L 0,3.076923,0.615385,3.076923
L 0.615385,3.076923,0.615385,3.692308
L 0.615385,3.692308,0,3.692308
L 0.615385,0,0,0
L 0,0,0,0.615385
L 0,0.615385,0.615385,0.615385
L 0.615385,0.615385,0.615385,-0.615385
L 0.615385,-0.615385,0,-1.846154
[<] 2
L 6.153846,6.153846,0,2.461538
L 0,2.461538,6.153846,-1.230769
[=] 2
L 0,3.692308,4.923077,3.692308
L 0,1.230769,4.923077,1.230769
[>] 2
L 0,6.153846,6.153846,2.461538
L 6.153846,2.461538,0,-1.230769
[?] 13
L 0,4.923077,1.230769,5.538462
L 1.230769,5.538462,1.846154,5.538462
L 1.846154,5.538462,3.076923,4.923077
L 3.076923,4.923077,3.076923,3.692308
L 3.076923,3.692308,1.230769,3.076923
L 1.230769,3.076923,1.230769,2.461538
L 1.230769,2.461538,1.846154,2.461538
L 1.846154,2.461538,1.846154,3.076923
L 1.846154,3.076923,3.076923,3.692308
L 1.230769,0.615385,1.230769,0
L 1.230769,0,1.846154,0
L 1.846154,0,1.846154,0.615385
L 1.846154,0.615385,1.230769,0.615385
[@] 25
L 5.538462,3.692308,4.307692,4.307692
L 4.307692,4.307692,3.076923,4.307692
L 3.076923,4.307692,2.461538,3.076923
L 2.461538,3.076923,2.461538,2.461538
L 2.461538,2.461538,3.076923,1.230769
L 3.076923,1.230769,4.307692,1.230769
L 4.307692,1.230769,5.538462,1.846154
L 5.538462,4.307692,5.538462,1.846154
L 5.538462,1.846154,6.153846,1.230769
L 6.153846,1.230769,7.384615,1.230769
L 7.384615,1.230769,8,2.461538
L 8,2.461538,8,3.076923
L 8,3.076923,7.384615,4.923077
L 7.384615,4.923077,6.153846,6.153846
L 6.153846,6.153846,4.307692,6.769231
L 4.307692,6.769231,3.692308,6.769231
L 3.692308,6.769231,1.846154,6.153846
L 1.846154,6.153846,0.615385,4.923077
L 0.615385,4.923077,0,3.076923
L 0,3.076923,0,2.461538
L 0,2.461538,0.615385,0.615385
L 0.615385,0.615385,1.846154,-0.615385
L 1.846154,-0.615385,3.692308,-1.230769
L 3.692308,-1.230769,4.307692,-1.230769
L 4.307692,-1.230769,6.153846,-0.615385
[A] 3
L 2.461538,5.538462,0,0
L 2.461538,5.538462,4.923077,0
L 1.230769,1.846154,3.692308,1.846154
[B] 10
L 0,5.538462,0,0
L 0,5.538462,2.461538,5.538462
L 2.461538,5.538462,3.692308,4.923077
L 3.692308,4.923077,3.692308,3.692308
L 3.692308,3.692308,2.461538,3.076923
L 0,3.076923,2.461538,3.076923
L 2.461538,3.076923,3.692308,2.461538
L 3.692308,2.461538,3.692308,0.615385
L 3.692308,0.615385,2.461538,0
L 2.461538,0,0,0
[C] 2
L 0,5.538462,0,0
L 0,5.538462,3.692308,5.538462
[D] 3
L 2.461538,5.538462,0,0
L 2.461538,5.538462,4.923077,0
L 0,0,4.923077,0
[E] 4
L 0,5.538462,0,0
L 0,5.538462,3.692308,5.538462
L 0,3.076923,2.461538,3.076923
L 0,0,3.692308,0
[F] 3
L 3.692308,5.538462,0,0
L 0,5.538462,3.692308,5.538462
L 0,0,3.692308,0
[G] 3
L 0,5.538462,0,0
L 3.692308,5.538462,3.692308,0
L 0,3.076923,3.692308,3.076923
[H] 14
L 1.846154,5.538462,0.615385,4.923077
L 0.615385,4.923077,0,3.692308
L 0,3.692308,0,1.846154
L 0,1.846154,0.615385,0.615385
L 0.615385,0.615385,1.846154,0
L 1.846154,0,2.461538,0
L 2.461538,0,3.692308,0.615385
L 3.692308,0.615385,4.307692,1.846154
L 4.307692,1.846154,4.307692,3.692308
L 4.307692,3.692308,3.692308,4.923077
L 3.692308,4.923077,2.461538,5.538462
L 2.461538,5.538462,1.846154,5.538462
L 1.230769,3.076923,3.076923,2.461538
L 3.076923,3.076923,1.230769,2.461538
[I] 1
L 0,5.538462,0,0
[J] 3
L 0,5.538462,0,0
L 3.692308,5.538462,0,1.846154
L 1.230769,3.076923,3.692308,0
[K] 2
L 2.461538,5.538462,0,0
L 2.461538,5.538462,4.923077,0
[L] 4
L 0,5.538462,0,0
L 0,5.538462,2.461538,0
L 4.923077,5.538462,2.461538,0
L 4.923077,5.538462,4.923077,0
[M] 3
L 0,5.538462,0,0
L 0,5.538462,3.692308,0
L 3.692308,5.538462,3.692308,0
[N] 4
L 0,5.538462,3.692308,5.538462
L 0.615385,3.076923,3.076923,2.461538
L 3.076923,3.076923,0.615385,2.461538
L 0,0,3.692308,0
[O] 12
L 1.846154,5.538462,0.615385,4.923077
L 0.615385,4.923077,0,3.692308
L 0,3.692308,0,1.846154
L 0,1.846154,0.615385,0.615385
L 0.615385,0.615385,1.846154,0
L 1.846154,0,2.461538,0
L 2.461538,0,3.692308,0.615385
L 3.692308,0.615385,4.307692,1.846154
L 4.307692,1.846154,4.307692,3.692308
L 4.307692,3.692308,3.692308,4.923077
L 3.692308,4.923077,2.461538,5.538462
L 2.461538,5.538462,1.846154,5.538462
[P] 3
L 0,5.538462,0,0
L 3.692308,5.538462,3.692308,0
L 0,5.538462,3.692308,5.538462
[Q] 6
L 0,5.538462,0,0
L 0,5.538462,2.461538,5.538462
L 2.461538,5.538462,3.692308,4.923077
L 3.692308,4.923077,3.692308,3.076923
L 3.692308,3.076923,2.461538,2.461538
L 2.461538,2.461538,0,2.461538
[R] 4
L 0,5.538462,1.846154,3.076923
L 1.846154,3.076923,0,0
L 0,5.538462,3.692308,5.538462
L 0,0,3.692308,0
[S] 2
L 2.461538,5.538462,2.461538,0
L 0,5.538462,4.923077,5.538462
[T] 11
L 0,4.307692,0,4.923077
L 0,4.923077,0.615385,5.538462
L 0.615385,5.538462,1.230769,5.538462
L 1.230769,5.538462,1.846154,4.923077
L 1.846154,4.923077,2.461538,3.692308
L 2.461538,3.692308,2.461538,0
L 4.923077,4.307692,4.923077,4.923077
L 4.923077,4.923077,4.307692,5.538462
L 4.307692,5.538462,3.692308,5.538462
L 3.692308,5.538462,3.076923,4.923077
L 3.076923,4.923077,2.461538,3.692308
[U] 9
L 2.461538,5.538462,2.461538,0
L 1.230769,4.307692,0,3.692308
L 0,3.692308,0,1.846154
L 0,1.846154,1.230769,1.230769
L 1.230769,1.230769,3.692308,1.230769
L 3.692308,1.230769,4.923077,1.846154
L 4.923077,1.846154,4.923077,3.692308
L 4.923077,3.692308,3.692308,4.307692
L 3.692308,4.307692,1.230769,4.307692
[V] 2
L 0,5.538462,3.692308,0
L 3.692308,5.538462,0,0
[W] 8
L 2.461538,5.538462,2.461538,0
L 0,4.307692,0.615385,3.692308
L 0.615385,3.692308,0.615385,1.846154
L 0.615385,1.846154,1.846154,1.230769
L 1.846154,1.230769,3.076923,1.230769
L 3.076923,1.230769,4.307692,1.846154
L 4.307692,1.846154,4.307692,3.692308
L 4.307692,3.692308,4.923077,4.307692
[X] 11
L 0,0,1.230769,0
L 1.230769,0,0,2.461538
L 0,2.461538,0,3.692308
L 0,3.692308,0.615385,4.923077
L 0.615385,4.923077,1.846154,5.538462
L 1.846154,5.538462,2.461538,5.538462
L 2.461538,5.538462,3.692308,4.923077
L 3.692308,4.923077,4.307692,3.692308
L 4.307692,3.692308,4.307692,2.461538
L 4.307692,2.461538,3.076923,0
L 3.076923,0,4.307692,0
[Y] 0
[Z] 0
[[] 4
L 0,8.615385,0,-3.692308
L 0.615385,8.615385,0.615385,-3.692308
L 0,8.615385,3.076923,8.615385
L 0,-3.692308,3.076923,-3.692308
[\] 1
L 0,5.538462,6.153846,-0.615385
[]] 4
L 2.461538,8.615385,2.461538,-3.692308
L 3.076923,8.615385,3.076923,-3.692308
L 0,8.615385,3.076923,8.615385
L 0,-3.692308,3.076923,-3.692308
[^] 7
L 1.846154,5.538462,1.846154,-1.230769
L 0,3.692308,0.615385,4.307692
L 0.615385,4.307692,1.846154,6.153846
L 1.846154,6.153846,3.076923,4.307692
L 3.076923,4.307692,3.692308,3.692308
L 0.615385,4.307692,1.846154,5.538462
L 1.846154,5.538462,3.076923,4.307692
[_] 1
L 0,-1.230769,6.153846,-1.230769
[`] 5
L 0.615385,5.538462,0,4.307692
L 0,4.307692,0,3.076923
L 0,3.076923,0.615385,3.076923
L 0.615385,3.076923,0.615385,3.692308
L 0.615385,3.692308,0,3.692308
[a] 3
L 2.461538,5.538462,0,0
L 2.461538,5.538462,4.923077,0
L 1.230769,1.846154,3.692308,1.846154
[b] 10
L 0,5.538462,0,0
L 0,5.538462,2.461538,5.538462
L 2.461538,5.538462,3.692308,4.923077
L 3.692308,4.923077,3.692308,3.692308
L 3.692308,3.692308,2.461538,3.076923
L 0,3.076923,2.461538,3.076923
L 2.461538,3.076923,3.692308,2.461538
L 3.692308,2.461538,3.692308,0.615385
L 3.692308,0.615385,2.461538,0
L 2.461538,0,0,0
[c] 2
L 0,5.538462,0,0
L 0,5.538462,3.692308,5.538462
[d] 3
L 2.461538,5.538462,0,0
L 2.461538,5.538462,4.923077,0
L 0,0,4.923077,0
[e] 4
L 0,5.538462,0,0
L 0,5.538462,3.692308,5.538462
L 0,3.076923,2.461538,3.076923
L 0,0,3.692308,0
[f] 3
L 3.692308,5.538462,0,0
L 0,5.538462,3.692308,5.538462
L 0,0,3.692308,0
[g] 3
L 0,5.538462,0,0
L 3.692308,5.538462,3.692308,0
L 0,3.076923,3.692308,3.076923
[h] 14
L 1.846154,5.538462,0.615385,4.923077
L 0.615385,4.923077,0,3.692308
L 0,3.692308,0,1.846154
L 0,1.846154,0.615385,0.615385
L 0.615385,0.615385,1.846154,0
L 1.846154,0,2.461538,0
L 2.461538,0,3.692308,0.615385
L 3.692308,0.615385,4.307692,1.846154
L 4.307692,1.846154,4.307692,3.692308
L 4.307692,3.692308,3.692308,4.923077
L 3.692308,4.923077,2.461538,5.538462
L 2.461538,5.538462,1.846154,5.538462
L 1.230769,3.076923,3.076923,2.461538
L 3.076923,3.076923,1.230769,2.461538
[i] 1
L 0,5.538462,0,0
[j] 3
L 0,5.538462,0,0
L 3.692308,5.538462,0,1.846154
L 1.230769,3.076923,3.692308,0
[k] 2
L 2.461538,5.538462,0,0
L 2.461538,5.538462,4.923077,0
[l] 4
L 0,5.538462,0,0
L 0,5.538462,2.461538,0
L 4.923077,5.538462,2.461538,0
L 4.923077,5.538462,4.923077,0
[m] 3
L 0,5.538462,0,0
L 0,5.538462,3.692308,0
L 3.692308,5.538462,3.692308,0
[n] 4
L 0,5.538462,3.692308,5.538462
L 0.615385,3.076923,3.076923,2.461538
L 3.076923,3.076923,0.615385,2.461538
L 0,0,3.692308,0
[o] 12
L 1.846154,5.538462,0.615385,4.923077
L 0.615385,4.923077,0,3.692308
L 0,3.692308,0,1.846154
L 0,1.846154,0.615385,0.615385
L 0.615385,0.615385,1.846154,0
L 1.846154,0,2.461538,0
L 2.461538,0,3.692308,0.615385
L 3.692308,0.615385,4.307692,1.846154
L 4.307692,1.846154,4.307692,3.692308
L 4.307692,3.692308,3.692308,4.923077
L 3.692308,4.923077,2.461538,5.538462
L 2.461538,5.538462,1.846154,5.538462
[p] 3
L 0,5.538462,0,0
L 3.692308,5.538462,3.692308,0
L 0,5.538462,3.692308,5.538462
[q] 6
L 0,5.538462,0,0
L 0,5.538462,2.461538,5.538462
L 2.461538,5.538462,3.692308,4.923077
L 3.692308,4.923077,3.692308,3.076923
L 3.692308,3.076923,2.461538,2.461538
L 2.461538,2.461538,0,2.461538
[r] 4
L 0,5.538462,1.846154,3.076923
L 1.846154,3.076923,0,0
L 0,5.538462,3.692308,5.538462
L 0,0,3.692308,0
[s] 2
L 2.461538,5.538462,2.461538,0
L 0,5.538462,4.923077,5.538462
[t] 11
L 0,4.307692,0,4.923077
L 0,4.923077,0.615385,5.538462
L 0.615385,5.538462,1.230769,5.538462
L 1.230769,5.538462,1.846154,4.923077
L 1.846154,4.923077,2.461538,3.692308
L 2.461538,3.692308,2.461538,0
L 4.923077,4.307692,4.923077,4.923077
L 4.923077,4.923077,4.307692,5.538462
L 4.307692,5.538462,3.692308,5.538462
L 3.692308,5.538462,3.076923,4.923077
L 3.076923,4.923077,2.461538,3.692308
[u] 9
L 2.461538,5.538462,2.461538,0
L 1.230769,4.307692,0,3.692308
L 0,3.692308,0,1.846154
L 0,1.846154,1.230769,1.230769
L 1.230769,1.230769,3.692308,1.230769
L 3.692308,1.230769,4.923077,1.846154
L 4.923077,1.846154,4.923077,3.692308
L 4.923077,3.692308,3.692308,4.307692
L 3.692308,4.307692,1.230769,4.307692
[v] 2
L 0,5.538462,3.692308,0
L 3.692308,5.538462,0,0
[w] 8
L 2.461538,5.538462,2.461538,0
L 0,4.307692,0.615385,3.692308
L 0.615385,3.692308,0.615385,1.846154
L 0.615385,1.846154,1.846154,1.230769
L 1.846154,1.230769,3.076923,1.230769
L 3.076923,1.230769,4.307692,1.846154
L 4.307692,1.846154,4.307692,3.692308
L 4.307692,3.692308,4.923077,4.307692
[x] 11
L 0,0,1.230769,0
L 1.230769,0,0,2.461538
L 0,2.461538,0,3.692308
L 0,3.692308,0.615385,4.923077
L 0.615385,4.923077,1.846154,5.538462
L 1.846154,5.538462,2.461538,5.538462
L 2.461538,5.538462,3.692308,4.923077
L 3.692308,4.923077,4.307692,3.692308
L 4.307692,3.692308,4.307692,2.461538
L 4.307692,2.461538,3.076923,0
L 3.076923,0,4.307692,0
[y] 0
[z] 0
[{] 24
L 1.846154,8.615385,0.615385,8
L 0.615385,8,0,7.384615
L 0,7.384615,0,6.153846
L 0,6.153846,1.230769,4.923077
L 1.230769,4.923077,1.846154,3.692308
L 0.615385,8,0,6.153846
L 1.846154,4.923077,1.230769,3.076923
L 0,7.384615,0.615385,6.153846
L 0.615385,6.153846,1.846154,4.923077
L 1.846154,4.923077,1.846154,3.692308
L 1.846154,3.692308,1.230769,3.076923
L 1.230769,3.076923,0,2.461538
L 0,2.461538,1.230769,1.846154
L 1.230769,1.846154,1.846154,1.230769
L 1.846154,1.230769,1.846154,0
L 1.846154,0,0.615385,-1.230769
L 0.615385,-1.230769,0,-2.461538
L 1.230769,1.846154,1.846154,0
L 0,-1.230769,0.615385,-3.076923
L 1.846154,1.230769,1.230769,0
L 1.230769,0,0,-1.230769
L 0,-1.230769,0,-2.461538
L 0,-2.461538,0.615385,-3.076923
L 0.615385,-3.076923,1.846154,-3.692308
[|] 1
L 0,6.153846,0,-0.615385
[}] 24
L 0,8.615385,1.230769,8
L 1.230769,8,1.846154,7.384615
L 1.846154,7.384615,1.846154,6.153846
L 1.846154,6.153846,0.615385,4.923077
L 0.615385,4.923077,0,3.692308
L 1.230769,8,1.846154,6.153846
L 0,4.923077,0.615385,3.076923
L 1.846154,7.384615,1.230769,6.153846
L 1.230769,6.153846,0,4.923077
L 0,4.923077,0,3.692308
L 0,3.692308,0.615385,3.076923
L 0.615385,3.076923,1.846154,2.461538
L 1.846154,2.461538,0.615385,1.846154
L 0.615385,1.846154,0,1.230769
L 0,1.230769,0,0
L 0,0,1.230769,-1.230769
L 1.230769,-1.230769,1.846154,-2.461538
L 0.615385,1.846154,0,0
L 1.846154,-1.230769,1.230769,-3.076923
L 0,1.230769,0.615385,0
L 0.615385,0,1.846154,-1.230769
L 1.846154,-1.230769,1.846154,-2.461538
L 1.846154,-2.461538,1.230769,-3.076923
L 1.230769,-3.076923,0,-3.692308
#EOF

1188
ruler/cxf-fonts/greeks.cxf Normal file

File diff suppressed because it is too large Load diff

3022
ruler/cxf-fonts/italicc.cxf Normal file

File diff suppressed because it is too large Load diff

2612
ruler/cxf-fonts/italiccs.cxf Normal file

File diff suppressed because it is too large Load diff

4820
ruler/cxf-fonts/italict.cxf Normal file

File diff suppressed because it is too large Load diff

642
ruler/cxf-fonts/normal.cxf Normal file
View file

@ -0,0 +1,642 @@
# Format: QCad II Font
# Creator: QCad
# Version: 1
# Name: Standard
# Name: Normal
# Encoding: ISO8859-1
# LetterSpacing: 3.0
# WordSpacing: 6.75
# LineSpacingFactor: 1.0
# Author: Andrew Mustun <andrew@qcad.org>
[!] 2
L 0,9,0,3
L 0,0,0,0.5
["] 2
L 0.5,7,1,9
L 3.5,7,4,9
[#] 4
L 1.999969,0,1.999969,8.999999
L 4.999969,8.999999,4.999969,0
L -0.000031,2.5,6.999969,2.5
L 6.999969,6.499999,-0.000031,6.499999
[&] 5
L 6,3.21499,3.425964,0.59764
A 2,2,2,135.478088,315.478088
L 0.574036,3.40236,3.569458,6.44823
A 2.5,7.5,1.5,315.478271,209.372314
L 1.19281,6.76428,5,0
['] 1
L 0.5,7,1,9
[(] 1
A 13,4,13,157.380142,202.619858
[)] 1
A -12,4,13,337.380127,22.61986
[*] 2
L 0,6,4,2
L 4,6,0,2
[+] 2
L 0,4,4,4
L 2,6,2,2
[,] 2
L 1,0,0,-3
L 1,0,1,0.5
[-] 1
L 0,4,4,4
[.] 1
L 0,0,0,0.5
[/] 1
L 4,9,0,0
[0] 10
A 2,7.91049,1.08951,32.75695,147.243042
A 4.93335,5.62352,4.80559,143.232468,169.491135
A 4.93335,3.37648,4.80559,190.508865,216.767532
A 2,1.08951,1.08951,212.756958,327.243042
A -0.93335,3.37648,4.80559,323.232452,349.491119
A -5.404663,4.46906,9.40473,347.913147,0.18851
A -5.404663,4.53094,9.40473,359.811493,12.08686
A -0.93335,5.62352,4.80559,10.50887,36.76754
A 9.404663,4.46906,9.40473,179.811493,192.086868
A 9.404663,4.53094,9.40473,167.913132,180.188507
[1] 2
L 0,7,2,9
L 2,9,2,0
[2] 4
L 4,0,0,0
L 0,0,3.864502,6.64668
A 3,7.14931,1,329.82547,20.52911
A 2,7,2,14.47751,165.522491
[3] 7
L 0,9,2,9
A 2,7,2,270,90
L 2,5,1,5
A 2,3,2,0,90
L 4,3,4,2
A 2,2,2,270,0
L 2,0,0,0
[4] 3
L 3.5,0,3.5,4
L 5,2,0,2
L 0,2,2,9
[5] 7
L 4,9,0,9
L 0,9,0,5
L 0,5,2,5
A 2,3,2,0,90
L 4,3,4,2
A 2,2,2,270,0
L 2,0,0,0
[6] 6
A 6,3.80385,6,120,180
L 0,3.80385,0,2
A 2,2,2,180,0
L 4,2,4,3
A 2,3,2,0,90
L 2,5,0.120422,5
[7] 3
L 0,9,4,9
L 4,9,1.5,0
L 2,5,4,5
[8] 8
L 0,3,0,2
A 2,2,2,180,0
L 4,2,4,3
A 2,3,2,0,180
L 0.25,7.25,0.25,6.75
A 2,6.75,1.75,180,0
L 3.75,6.75,3.75,7.25
A 2,7.25,1.75,0,180
[9] 6
A -2,5.19615,6,300,0
L 4,5.19615,4,7
A 2,7,2,0,180
L 0,7,0,6
A 2,6,2,180,270
L 2,4,3.879578,4
[:] 2
L 0,0,0,0.5
L 0,4,0,3.5
[;] 3
L 1,0,0,-3
L 1,0,1,0.5
L 1,4,1,3.5
[<] 2
L 4,7,0,3.5
L 0,3.5,4,0
[=] 2
L 0,5.5,4,5.5
L 0,2.5,4,2.5
[>] 2
L 0,7,4,3.5
L 4,3.5,0,0
[?] 9
L 2,0,2,0.5
L 2,3,2,3.39445
L 0,7,0,7.5
L 1.5,9,2.5,9
L 3.664062,6.49615,2.335938,4.50385
A 4,3.39445,2,146.309937,180
A 2,7.60555,2,326.309998,358.379272
A 1.5,7.5,1.5,90,180
A 2.5,7.5,1.5,1.87147,90
[@] 11
L 8,1,6.067566,0.28186
A 4.5,4.5,4.5,333.472015,290.386322
A 7.412354,2.943008,1.2,168.690186,337.880432
A 4.439636,4,2,168.689804,270
A 5.170288,5.5,1.5,348.690002,90
A 5.049561,4.5,2.5,90,168.690094
L 2.478455,4.392246,2.598083,4.990294
A 4.360352,4,2,270,348.68985
L 4.360352,2,4.439636,2
L 6.321533,3.607756,7,7
L 5.049561,7,5.170288,7
[A] 3
L 0,0,3,9
L 3,9,6,0
L 0.833313,2.5,5.166687,2.5
[B] 8
L 0,0,0,9
L 0,9,2.5,9
A 2.5,7,2,270,90
L 0,5,2.599976,5
A 2.599976,2.6,2.4,0,90
L 5,2.6,5,2.4
A 2.599976,2.4,2.4,270,0
L 2.599976,0,0,0
[C] 5
L 4,9,2,9
A 2,7,2,90,180
L 0,7,0,2
A 2,2,2,180,270
L 2,0,4,0
[D] 6
L 0,0,3,0
A 3,2,2,270,0
L 5,2,5,7
A 3,7,2,0,90
L 3,9,0,9
L 0,9,0,0
[E] 4
L 4,9,0,9
L 0,9,0,0
L 0,0,4,0
L 0,5,3,5
[F] 3
L 4,9,0,9
L 0,9,0,0
L 0,5,4,5
[G] 7
L 5,9,2,9
A 2,7,2,90,180
L 0,7,0,2
A 2,2,2,180,270
L 2,0,5,0
L 5,0,5,5
L 5,5,3.5,5
[H] 3
L 0,9,0,0
L 5,0,5,9
L 0,5,5,5
[I] 1
L 0,9,0,0
[J] 3
L 3,9,3,2
A 1,2,2,270,0
L 1,0,0,0
[K] 3
L 0,9,0,0
L 0,3.5,5,9
L 1.671326,5.33844,5,0
[L] 2
L 0,9,0,0
L 0,0,4,0
[M] 4
L 0,0,0,9
L 0,9,3,4
L 3,4,6,9
L 6,9,6,0
[N] 3
L 0,0,0,9
L 0,9,5,0
L 5,0,5,9
[O] 8
L 0,2,0,7
A 2,7,2,90,180
L 2,9,3,9
A 3,7,2,0,90
L 5,7,5,2
A 3,2,2,270,0
L 3,0,2,0
A 2,2,2,180,270
[P] 6
L 0,0,0,9
L 0,9,3,9
A 3,7,2,0,90
L 5,7,5,6
A 3,6,2,270,0
L 3,4,0,4
[Q] 9
L 0,2,0,7
A 2,7,2,90,180
L 2,9,3,9
A 3,7,2,0,90
L 5,7,5,2
A 3,2,2,270,0
L 3,0,2,0
A 2,2,2,180,270
L 6,0,3,2
[R] 7
L 0,0,0,9
L 0,9,3,9
A 3,7,2,0,90
L 5,7,5,6
A 3,6,2,270,0
L 3,4,0,4
L 3,4,5,0
[S] 5
A 2,2.375,6.625,63.074589,90
A 2,7,2,90,242.981201
L 1.091431,5.21829,3.908569,3.78171
A 3,2,2,270,62.98119
A 3,6.625,6.625,243.074585,270
[T] 2
L 0,9,6,9
L 3,9,3,0
[U] 3
L 0,9,0,2.5
A 2.5,2.5,2.5,180,0
L 5,2.5,5,9
[V] 2
L 0,9,3,0
L 3,0,6,9
[W] 4
L 0,9,2,0
L 2,0,4,6
L 4,6,6,0
L 6,0,8,9
[X] 2
L 0,9,6,0
L 0,0,6,9
[Y] 3
L 0,9,3,5
L 3,5,3,0
L 3,5,6,9
[Z] 3
L 0,9,5,9
L 5,9,0,0
L 0,0,5,0
[[] 3
L 1,-1,0,-1
L 0,-1,0,9
L 0,9,1,9
[\] 1
L 0,9,4,0
[]] 3
L 0,9,1,9
L 1,9,1,-1
L 1,-1,0,-1
[a] 6
L 0.5,6,2.5,6
A 2.5,4.5,1.5,0,90
L 4,4.5,4,0
L 4,0,1.5,0
A 1.5,1.5,1.5,90,270
L 1.5,3,4,3
[b] 6
L 0,9,0,0
L 0,0,2.5,0
A 2.5,1.5,1.5,270,0
L 4,1.5,4,4.5
A 2.5,4.5,1.5,0,90
L 2.5,6,0,6
[c] 5
L 3,6,1.5,6
A 1.5,4.5,1.5,90,180
L 0,4.5,0,1.5
A 1.5,1.5,1.5,180,270
L 1.5,0,3,0
[d] 6
L 4,9,4,0
L 4,0,1.5,0
A 1.5,1.5,1.5,180,270
L 0,1.5,0,4.5
A 1.5,4.5,1.5,90,180
L 1.5,6,4,6
[e] 6
L 0,3,4,3
L 4,3,4,4
A 2,4,2,0,180
L 0,4,0,1.5
A 1.5,1.5,1.5,180,270
L 1.5,0,4,0
[f] 4
L 1,0,1,7.5
A 2.5,7.5,1.5,90,180
L 2.5,9,3,9
L 0,6,3,6
[g] 8
L 0,-3,2.5,-3
A 2.5,-1.5,1.5,270,0
L 4,-1.5,4,6
L 4,6,1.5,6
A 1.5,4.5,1.5,90,180
L 0,4.5,0,1.5
A 1.5,1.5,1.5,180,270
L 1.5,0,4,0
[h] 4
L 0,9,0,0
L 0,6,2.5,6
A 2.5,4.5,1.5,0,90
L 4,4.5,4,0
[i] 2
L 0,0,0,6
L 0,8.5,0,9
[j] 4
L 0,-3,0.5,-3
A 0.5,-1.5,1.5,270,0
L 2,-1.5,2,6
L 2,8.5,2,9
[k] 3
L 0,9,0,0
L 0,3.5,4,6
L 1.320923,4.32555,4,0
[l] 2
L 0,9,0,1
A 1,1,1,180,270
[m] 5
L 0,0,0,6
L 0,6,4.5,6
A 4.5,4.5,1.5,0,90
L 6,4.5,6,0
L 3,6,3,0
[n] 4
L 0,0,0,6
L 0,6,2.5,6
A 2.5,4.5,1.5,0,90
L 4,4.5,4,0
[o] 4
L 0,4,0,2
A 2,2,2,180,0
L 4,2,4,4
A 2,4,2,0,180
[p] 6
L 0,0,2.5,0
A 2.5,1.5,1.5,270,0
L 4,1.5,4,4.5
A 2.5,4.5,1.5,0,90
L 2.5,6,0,6
L 0,6,0,-3
[q] 6
L 4,0,1.5,0
A 1.5,1.5,1.5,180,270
L 0,1.5,0,4.5
A 1.5,4.5,1.5,90,180
L 1.5,6,4,6
L 4,6,4,-3
[r] 3
L 0,0,0,6
L 0,6,2,6
A 2,5,1,0,90
[s] 5
A 2.164185,1.82088,4.0573,63.09737,108.27552
A 1.268188,4.53406,1.2,108.274567,247.790543
L 0.814575,3.42309,3.185425,2.45509
A 2.731812,1.34412,1.19999,288.274933,67.791191
A 1.835815,4.05732,4.05732,243.097656,288.275513
[t] 2
L 0,6,3,6
L 1,9,1,0
[u] 4
L 0,6,0,1.5
A 1.5,1.5,1.5,180,270
L 1.5,0,4,0
L 4,0,4,6
[v] 2
L 0,6,2,0
L 2,0,4,6
[w] 4
L 0,6,1.5,0
L 1.5,0,3,4
L 3,4,4.5,0
L 4.5,0,6,6
[x] 2
L 0,6,4,0
L 0,0,4,6
[y] 4
L 0,6,2,0
L 4,6,1.227905,-2.31623
A 0.279297,-2,1,270,341.565063
L 0.279297,-3,0,-3
[z] 3
L 0,6,4,6
L 4,6,0,0
L 0,0,4,0
[{] 6
A 2,8,1,90,180
L 1,8,1,5
A 0,5,1,270,0
A 0,3,1,0,90
L 1,3,1,0
A 2,0,1,180,270
[}] 6
A 0,8,1,0,90
L 1,8,1,5
A 2,5,1,180,270
A 2,3,1,90,180
L 1,3,1,0
A 0,0,1,270,0
[¢] 3
A 3,4.5,3,77.471191,257.471191
A 3,4.5,3,257.471191,77.471191
L 2,0,4,9
[°] 2
A 1.5,7.5,1.5,90,270
A 1.5,7.5,1.5,270,90
[±] 3
L -0.000122,5,3.999878,5
L 1.999878,7,1.999878,3
L -0.000122,1,3.999878,1
[Ä] 5
L 0,0,3,9
L 3,9,6,0
L 0.833252,2.5,5.166748,2.5
L 5,10.25,5,10.75
L 1,10.25,1,10.75
[Ö] 10
L 0,2,0,7
A 2,7,2,90,180
L 2,9,3,9
A 3,7,2,0,90
L 5,7,5,2
A 3,2,2,270,0
L 3,0,2,0
A 2,2,2,180,270
L 1,10.25,1,10.75
L 4,10.25,4,10.75
[Ü] 5
L 0,9,0,2.5
A 2.5,2.5,2.5,180,0
L 5,2.5,5,9
L 1,10.25,1,10.75
L 4,10.25,4,10.75
[ß] 9
A 2.5,7,2,270,90
A 2.599976,2.6,2.4,0,90
L 5,2.6,5,2.4
A 2.599976,2.4,2.4,270,0
L 1,5,2.599976,5
A 2,7,2,90,180
L 2,9,2.5,9
L 0,0,0,7
L 2.599976,0,1,0
[ä] 8
L 0.5,6,2.5,6
A 2.5,4.5,1.5,0,90
L 4,4.5,4,0
L 4,0,1.5,0
A 1.5,1.5,1.5,90,270
L 1.5,3,4,3
L 1,9,1,8.5
L 3,9,3,8.5
[ö] 6
L 0,4,0,2
A 2,2,2,180,0
L 4,2,4,4
A 2,4,2,0,180
L 1,9,1,8.5
L 3,9,3,8.5
[ø] 3
A 3,4.5,3,77.471191,257.471191
A 3,4.5,3,257.471191,77.471191
L 2,0,4,9
[ú] 2
L 0,6,4,2
L 4,6,0,2
[ü] 6
L 0,6,0,1.5
A 1.5,1.5,1.5,180,270
L 1.5,0,4,0
L 4,0,4,6
L 1,9,1,8.5
L 3,9,3,8.5
[Å] 4
L 0,0,3,9
L 3,9,6,0
L 0.833252,2.5,5.166748,2.5
A 3,10.5,0.35,0,360
[å] 7
L 0.5,6,2.5,6
A 2.5,4.5,1.5,0,90
L 4,4.5,4,0
L 4,0,1.5,0
A 1.5,1.5,1.5,90,270
L 1.5,3,4,3
A 2,8.75,0.35,0,360
[#2205] //diameter
A 3,4.5,3,77.471191,257.471191
A 3,4.5,3,257.471191,77.471191
L 2,0,4,9
#EOF

2778
ruler/cxf-fonts/romanc.cxf Normal file

File diff suppressed because it is too large Load diff

2425
ruler/cxf-fonts/romancs.cxf Normal file

File diff suppressed because it is too large Load diff

3971
ruler/cxf-fonts/romand.cxf Normal file

File diff suppressed because it is too large Load diff

2779
ruler/cxf-fonts/romanp.cxf Normal file

File diff suppressed because it is too large Load diff

1407
ruler/cxf-fonts/romans.cxf Normal file

File diff suppressed because it is too large Load diff

1958
ruler/cxf-fonts/romans2.cxf Normal file

File diff suppressed because it is too large Load diff

4651
ruler/cxf-fonts/romant.cxf Normal file

File diff suppressed because it is too large Load diff

3635
ruler/cxf-fonts/scriptc.cxf Normal file

File diff suppressed because it is too large Load diff

3207
ruler/cxf-fonts/scripts.cxf Normal file

File diff suppressed because it is too large Load diff

705
ruler/cxf-fonts/symbol.cxf Normal file
View file

@ -0,0 +1,705 @@
# Format: QCad II Font
# Creator: QCad
# Version: 1
# Name: Symbol
# LetterSpacing: 3.0
# WordSpacing: 6.75
# LineSpacingFactor: 1.0
# Author: ?
[!] 2
L -0.132743,9,-0.132743,3
L -0.132743,0,-0.132743,0.5
[#] 4
L 1.867226,0,1.867226,8.999999
L 4.867226,8.999999,4.867226,0
L -0.132774,2.5,6.867226,2.5
L 6.867226,6.499999,-0.132774,6.499999
[$] 5
L -0.144647,9.004032,4.857593,9.004032
L 4.857593,9.004032,4.857593,0
L 4.857593,0,-0.144647,0
L 4.857593,0,-0.144647,0
L 4.857593,4.502016,-0.144647,4.502016
[%] 5
L -0.131207,0,4.871033,9.004032
A 1.869689,7.003136,1.061135,0,180
A 1.869689,7.003136,1.061135,180,360
A 2.870137,2.000896,1.000448,0,180
A 2.870137,2.000896,1.000448,180,360
[&] 5
L 5.867257,3.21499,3.293221,0.59764
A 1.867257,2,2,135.478088,315.478088
L 0.441293,3.40236,3.436715,6.44823
A 2.367257,7.5,1.5,315.478271,209.372314
L 1.060067,6.76428,4.867257,0
[(] 1
A 12.867257,4,13,157.380142,202.619858
[)] 1
A -12.132743,4,13,337.380127,22.61986
[*] 2
L -0.132743,6,3.867257,2
L 3.867257,6,-0.132743,2
[+] 2
L -0.132743,4,3.867257,4
L 1.867257,6,1.867257,2
[,] 2
L 0.867257,0,-0.132743,-3
L 0.867257,0,0.867257,0.5
[-] 1
L -0.132743,4,3.867257,4
[.] 1
L -0.132743,0,-0.132743,0.5
[/] 1
L 3.867257,9,-0.132743,0
[0] 10
A 1.867257,7.91049,1.08951,32.75695,147.243042
A 4.800607,5.62352,4.80559,143.232468,169.491135
A 4.800607,3.37648,4.80559,190.508865,216.767532
A 1.867257,1.08951,1.08951,212.756958,327.243042
A -1.066093,3.37648,4.80559,323.232452,349.491119
A -5.537406,4.46906,9.40473,347.913147,0.18851
A -5.537406,4.53094,9.40473,359.811493,12.08686
A -1.066093,5.62352,4.80559,10.50887,36.76754
A 9.27192,4.46906,9.40473,179.811493,192.086868
A 9.27192,4.53094,9.40473,167.913132,180.188507
[1] 2
L -0.132743,7,1.867257,9
L 1.867257,9,1.867257,0
[2] 4
L 3.867257,0,-0.132743,0
L -0.132743,0,3.731759,6.64668
A 2.867257,7.14931,1,329.82547,20.52911
A 1.867257,7,2,14.47751,165.522491
[3] 7
L -0.132743,9,1.867257,9
A 1.867257,7,2,270,90
L 1.867257,5,0.867257,5
A 1.867257,3,2,0,90
L 3.867257,3,3.867257,2
A 1.867257,2,2,270,0
L 1.867257,0,-0.132743,0
[4] 3
L 3.367257,0,3.367257,4
L 4.867257,2,-0.132743,2
L -0.132743,2,1.867257,9
[5] 7
L 3.867257,9,-0.132743,9
L -0.132743,9,-0.132743,5
L -0.132743,5,1.867257,5
A 1.867257,3,2,0,90
L 3.867257,3,3.867257,2
A 1.867257,2,2,270,0
L 1.867257,0,-0.132743,0
[6] 6
A 5.867257,3.80385,6,120,180
L -0.132743,3.80385,-0.132743,2
A 1.867257,2,2,180,0
L 3.867257,2,3.867257,3
A 1.867257,3,2,0,90
L 1.867257,5,-0.012321,5
[7] 3
L -0.132743,9,3.867257,9
L 3.867257,9,1.367257,0
L 1.867257,5,3.867257,5
[8] 8
L -0.132743,3,-0.132743,2
A 1.867257,2,2,180,0
L 3.867257,2,3.867257,3
A 1.867257,3,2,0,180
L 0.117257,7.25,0.117257,6.75
A 1.867257,6.75,1.75,180,0
L 3.617257,6.75,3.617257,7.25
A 1.867257,7.25,1.75,0,180
[9] 6
A -2.132743,5.19615,6,300,0
L 3.867257,5.19615,3.867257,7
A 1.867257,7,2,0,180
L -0.132743,7,-0.132743,6
A 1.867257,6,2,180,270
L 1.867257,4,3.746835,4
[:] 2
L -0.132743,0,-0.132743,0.5
L -0.132743,4,-0.132743,3.5
[;] 3
L 0.867257,0,-0.132743,-3
L 0.867257,0,0.867257,0.5
L 0.867257,4,0.867257,3.5
[<] 2
L 3.867257,7,-0.132743,3.5
L -0.132743,3.5,3.867257,0
[=] 2
L -0.132743,5.5,3.867257,5.5
L -0.132743,2.5,3.867257,2.5
[>] 2
L -0.132743,7,3.867257,3.5
L 3.867257,3.5,-0.132743,0
[?] 9
L 1.867257,0,1.867257,0.5
L 1.867257,3,1.867257,3.39445
L -0.132743,7,-0.132743,7.5
L 1.367257,9,2.367257,9
L 3.531319,6.49615,2.203195,4.50385
A 3.867257,3.39445,2,146.309937,180
A 1.867257,7.60555,2,326.309998,358.379272
A 1.367257,7.5,1.5,90,180
A 2.367257,7.5,1.5,1.87147,90
[@] 5
A 2.232569,3.001344,1.500672,53.130102,180
A 5.233913,4.502016,1.500672,233.130102,340.528779
L 4.33351,3.301478,3.132972,4.201882
L 0.731897,2.50112,6.734585,2.50112
L 0.731897,1.500672,6.734585,1.500672
[A] 3
L -0.132743,0,2.867257,9
L 2.867257,9,5.867257,0
L 0.70057,2.5,5.033944,2.5
[B] 8
L -0.132743,0,-0.132743,9
L -0.132743,9,2.367257,9
A 2.367257,7,2,270,90
L -0.132743,5,2.467233,5
A 2.467233,2.6,2.4,0,90
L 4.867257,2.6,4.867257,2.4
A 2.467233,2.4,2.4,270,0
L 2.467233,0,-0.132743,0
[C] 2
L -0.109439,8.992982,5.890561,-0.007018
L -0.109439,-0.007018,5.890561,8.992982
[D] 3
L 0.035321,0,2.786553,9.004032
L 2.786553,9.004032,5.287673,0
L 0.035321,0,5.287673,0
[E] 4
L 3.867257,9,-0.132743,9
L -0.132743,9,-0.132743,0
L -0.132743,0,3.867257,0
L -0.132743,5,2.867257,5
[F] 5
L 2.313209,0,2.313209,9.004032
L 1.812985,9.004032,2.813433,9.004032
L 1.812985,0,2.813433,0
A 2.313209,4.502016,2.50112,0,180
A 2.313209,4.502016,2.50112,180,360
[G] 3
L 0.075641,0,0.075641,9.004032
L 0.075641,9.004032,5.077881,9.004032
L 5.077881,9.004032,5.077881,8.503808
[H] 3
L -0.132743,9,-0.132743,0
L 4.867257,0,4.867257,9
L -0.132743,5,4.867257,5
[I] 3
L 0.852857,9.004032,0.852857,0
L 0.352633,9.004032,1.353081,9.004032
L 0.352633,0,1.353081,0
[J] 8
L 4.868089,4.126848,2.402838,4.299139
A 2.617081,6.789942,2.5,198.419785,266.002232
A -1.884935,4.502016,6.794581,327.881984,30.004073
L 0.245164,6,0.199535,7.027055
A 2.199535,7.027055,2,25.870267,180
L 0.176188,2.000896,-0.134151,2.000896
A 2.175616,1.953058,2,178.629403,329.036708
L 4.868089,4.126848,5.398164,4.090173
[K] 3
L -0.132743,9,-0.132743,0
L -0.132743,3.5,4.867257,9
L 1.538583,5.33844,4.867257,0
[L] 4
L -0.107271,0,2.393849,9.004032
L 2.393849,9.004032,4.894969,0
L -0.107271,0,0.142841,0
L 4.644857,0,5.145081,0
[M] 4
L -0.132743,0,-0.132743,9
L -0.132743,9,2.867257,4
L 2.867257,4,5.867257,9
L 5.867257,9,5.867257,0
[N] 3
L -0.132743,0,-0.132743,9
L -0.132743,9,4.867257,0
L 4.867257,0,4.867257,9
[O] 8
L -0.132743,2,-0.132743,7
A 1.867257,7,2,90,180
L 1.867257,9,2.867257,9
A 2.867257,7,2,0,90
L 4.867257,7,4.867257,2
A 2.867257,2,2,270,0
L 2.867257,0,1.867257,0
A 1.867257,2,2,180,270
[P] 3
L -0.053511,9.004032,5.198841,9.004032
L 0.946937,9.004032,0.946937,0
L 3.948281,9.004032,3.948281,0
[Q] 7
A 2.461049,2.50112,2.5,180,0
L -0.038951,2.50112,-0.038951,6.502912
A 2.461049,6.502912,2.5,0,180
L 4.961049,2.50112,4.961049,6.502912
L 0.960377,4.502016,3.961721,4.502016
L 3.961721,4.752128,3.961721,4.251904
L 0.960377,4.752128,0.960377,4.251904
[R] 6
L -0.026631,9.004032,-0.026631,0
L 3.974601,6.2528,3.974601,7.753472
A 2.724601,7.753472,1.25,0,90
A 2.724601,6.2528,1.25,270,0
L -0.026631,9.004032,2.724601,9.003621
L -0.026631,5.00224,2.724601,5.00224
[S] 4
L -0.013191,9.004032,4.989049,9.004032
L -0.013191,9.004032,4.989049,5.00224
L 4.989049,5.00224,-0.013191,0
L -0.013191,0,4.989049,0
[T] 2
L -0.132743,9,5.867257,9
L 2.867257,9,2.867257,0
[U] 3
L 2.514809,0,2.514809,6.002688
L 2.514809,6.002688,5.015929,9.004032
L 2.514809,6.002688,0.013689,9.004032
[V] 9
A 4.279033,-0.750336,0.75,270,90
L 4.279033,-1.500672,3.778809,-1.500672
A 2.215609,6.502912,0.5,90,131.090134
L 2.215609,0,4.279033,0
A 4.028921,3.501568,4,122.37672,237.62328
A 2.215609,0.500224,0.5,228.909866,270
L 2.215609,7.003136,5.998313,7.003136
L 5.869617,6.679964,5.029369,7.003136
A 5.842233,6.87808,0.2,277.869722,38.702742
[W] 7
A 10.045049,5.00224,10,172.81354,209.775253
L 0.046846,0.036249,1.365249,0.036249
L 5.719025,0.036249,7.042885,0.036249
A -2.960775,5.00224,10,330.224747,7.186461
L 0.040569,0,0.040569,0.500224
L 7.043705,0,7.043705,0.500224
A 3.542137,5.502464,3.5,12.386427,167.613575
[X] 9
L 0.054009,8.75392,0.054009,9.004032
L 0.054009,9.004032,5.806585,9.004032
L 5.806585,9.004032,5.806585,8.75392
L 0.054009,0.250112,0.054009,0
L 0.054009,0,5.806585,0
L 5.806585,0,5.806585,0.250112
L 0.804345,4.251904,0.804345,3.75168
L 0.804345,4.001792,4.806137,4.001792
L 4.806137,4.251904,4.806137,3.75168
[Y] 8
L 2.867257,9,2.867257,0
L 5.321622,7.268519,5.318663,6.493368
L 0.318699,6.493368,0.31574,7.268519
A 2.818681,6.502912,2.5,180.218743,0.218743
A -3.684231,7.253248,4,0.218743,22.034697
A 9.321593,7.253248,4,157.965303,179.781257
L 2.318457,9.004032,3.318905,9.004032
L 2.318457,0,3.318905,0
[Z] 3
L -0.132743,9,4.867257,9
L 4.867257,9,-0.132743,0
L -0.132743,0,4.867257,0
[[] 3
L 0.867257,-1,-0.132743,-1
L -0.132743,-1,-0.132743,9
L -0.132743,9,0.867257,9
[\] 6
A 0.866598,0.030271,0.15,0,180
A 0.866598,0.030271,0.15,180,360
A 4.892674,-0.060542,0.15,0,180
A 4.892674,-0.060542,0.15,180,360
A 2.894772,3.995804,0.15,0,180
A 2.894772,3.995804,0.15,180,360
[]] 3
L -0.132743,9,0.867257,9
L 0.867257,9,0.867257,-1
L 0.867257,-1,-0.132743,-1
[^] 2
L -0.115463,0,4.886777,0
L 2.635769,0,2.635769,9.004032
[_] 1
L -0.102023,-1.25056,6.901113,-1.25056
[`] 1
L -0.088583,9.004032,6.914553,9.004032
[a] 12
L 0.489883,3.200717,0.316652,2.900493
L 0.489883,0.801075,0.316652,1.101299
A 1.875731,2.000896,1.8,150.014812,209.985188
A 1.875731,1.600717,1.6,209.985188,330.014812
A 1.875731,2.401075,1.6,29.985188,150.014812
L 4.103098,0.597973,3.617179,2.456263
L 3.434809,2.900493,3.261578,3.200717
A 4.877075,0.800358,0.8,194.654007,262.81601
L 4.112244,3.436028,3.352212,0.958151
A 4.877075,3.201434,0.8,90,162.947796
L 3.352212,0.958151,3.261578,0.801075
A 1.875731,2.000896,1.8,14.654007,29.985188
[b] 4
L 0.938745,4.001792,2.939641,4.001792
A 2.939641,5.752576,1.75,270,172.373561
L 0.269805,-1.000448,1.205121,5.984825
A 2.689529,2.000896,2,172.373561,90
[c] 5
L 3.258649,0.673356,1.647065,5.329332
L -0.048263,0,4.703865,6.002688
A 0.702073,5.00224,1,19.092382,146.596684
A 4.203641,1.000448,1,199.092382,270
A 4.203641,1.000448,1,199.092382,325.186678
[d] 7
L 4.026201,5.288864,2.177293,6.060942
L 3.101747,5.674903,2.145606,5.375846
A 2.966521,2.751232,2.75,107.368401,67.335266
L 2.466297,7.503136,3.976875,7.352756
L 3.931923,7.15959,3.572402,7.393022
A 2.466297,6.753024,0.75,78.71634,247.335266
A 3.966969,7.253248,0.1,249.484309,84.314868
[e] 11
A 1.979513,3.001344,3,63.898342,92.691728
A 1.729401,1.750784,1.75,180,316.414829
A 1.479289,1.750784,1.5,90,181.852161
L 1.479289,3.251456,2.557712,3.251456
A 3.730297,1.375616,0.1,0,180
A 3.730297,1.375616,0.1,180,360
A 1.729401,4.502016,1.5,85.824206,201.216677
A 1.604345,4.752128,1.5,211.913426,270
L 3.64937,1.434359,3.478712,1.090388
L 3.478712,1.090388,3.806759,1.311168
L 2.997014,0.544278,3.796446,1.450611
[f] 6
A 2.493177,3.001344,2.5,0,180
A 2.493177,3.001344,2.5,180,360
L 0.742393,-1.500672,4.321266,7.426256
L 0.742393,-1.500672,4.264692,7.556669
A 4.228448,7.463468,0.1,339.345211,159.345211
L 0.742393,-1.500672,4.134875,7.498742
[g] 3
A 0.755833,2.251008,2,40.125191,116.377794
A 27.017593,-5.00224,25,145.938006,170.658358
A -0.994951,1.25056,4,326.72256,34.913698
[h] 6
L 0.918078,5.723164,0.519161,0
A 0.519161,5.752576,0.4,356.012806,153.434949
A 2.520057,4.251904,1.75,356.012806,162.339415
L 4.068794,1.309322,4.089032,-1.015089
L 4.265419,4.130248,4.068794,1.309322
A 6.021625,-0.500224,2,194.91777,229.398705
[i] 5
A 1.032825,5.752576,0.2,355.831223,161.565051
L 1.232296,5.738037,0.833354,0.264651
A 1.032825,0.250112,0.2,175.831223,347.331775
A 1.380942,7.690927,0.1,0,180
A 1.380942,7.690927,0.1,180,360
[j] 7
A 2.296825,3.251456,2.4,164.300451,46.100208
A 3.233121,4.295061,1,52.91221,170.550567
L 2.24669,4.459238,1.198032,-1.232441
L 2.24669,4.459238,1.395289,-1.265271
L 0.634941,6.20835,-0.01364,3.900879
L 1.279959,-1.349203,2.24669,4.459238
A 1.296377,-1.25056,0.1,171.540465,351.540465
[k] 7
L -0.132743,6.2528,-0.132743,0
L 3.008865,5.893833,3.766876,6.265879
A 6.061945,-1.500672,8,105.626144,140.744871
L 3.001512,5.890793,3.832966,6.078565
A 3.810937,6.176109,0.1,282.725988,116.142653
L -0.132743,3.561525,3.604966,0.031993
A 3.810937,0.250112,0.3,226.640841,270
[l] 4
A 0.322809,8.503808,0.4,22.3106,180
L 0.072697,0,2.364124,4.582854
L 4.150167,0.230324,0.692865,8.655659
A 4.520223,0.382175,0.4,202.3106,357.14239
[m] 3
L 0.087523,6,0.087523,-3
A 2.087033,2.000896,2,180,0
L 4.086999,6,4.086999,0
[n] 3
A -1.901319,5.752576,7,304.191942,2.025615
L 0.099577,6.002688,2.03245,-0.037541
L 0.099577,6.002688,-0.132743,6
[o] 2
A 2.364025,2.50112,2.5,0,180
A 2.364025,2.50112,2.5,180,360
[p] 6
L 4.878585,5.752576,0.39656,6.051909
L 0.961205,0.554318,1.387862,5.985705
A -7.126791,4.502016,9,329.985179,333.983299
L 3.818926,5.823346,3.959435,1.074222
A 12.882169,2.251008,9,187.513165,194.48414
A 0.376569,5.752576,0.3,86.179161,180
[q] 5
A 2.174989,5.666903,1.125,1.147633,132.730964
A -3.311461,4.327741,6.75,324.234706,11.638294
A 6.818075,2.451901,6.75,143.221623,194.78234
A 1.337411,1.14398,1.125,201.610225,317.40682
L 0.133556,3.389821,3.373059,3.389821
[r] 6
A 2.90998,2.944333,1.75,0,180
A 2.90998,2.944333,1.75,180,360
L 1.177415,3.190751,0.304718,-2.235128
L 0.389368,-2.350012,1.177415,3.190751
L 1.177415,3.190751,0.502692,-2.263285
A 0.403449,-2.251008,0.1,170.862811,352.947727
[s] 3
A 2.417785,2.50112,2.5,0,180
A 2.417785,2.50112,2.5,180,360
L 2.423747,5.001113,4.918905,5.00224
[t] 4
L 4.432121,5.752576,0.370298,5.988959
A 0.347059,5.589635,0.4,86.669348,181.086396
L 2.455457,5.867611,1.902993,0.411288
A 2.300958,0.370993,0.4,174.218384,278.953591
[u] 6
A -0.036593,5.56676,0.4,13.172363,103.908702
A -3.338091,8.458583,10,301.991379,329.778171
A -8.037304,0.216887,10,358.627168,32.963358
A 1.674403,5.108888,4,335.105477,341.075023
L 5.458179,3.811569,5.614051,4.525652
A 3.626384,4.74741,2,353.633994,38.777296
[v] 11
A -0.425604,1.36057,3.2,347.617753,12.369338
A 5.825834,1.36057,3.2,167.630662,192.308015
A 1.977393,2.226578,3.2,7.356556,41.586416
L 1.244498,0.292175,1.370593,0.183515
A 1.892827,0.789544,0.8,229.247485,355.212849
A 3.373997,2.405285,3,190.817168,224.778673
A 2.152273,2.550728,3,310.420977,1.634862
A 3.491662,0.789317,0.8,187.966948,319.223163
A 3.497756,2.743547,3.2,149.862024,196.358885
L 0.290964,4.350216,5.524728,4.350216
A 0.345619,3.953968,0.4,97.853313,174.440731
[w] 9
A -0.477443,1.369644,3.2,347.617753,12.369338
A 5.773995,1.369644,3.2,167.630662,192.308015
A 1.925554,2.235652,3.2,7.356556,41.586416
L 1.192659,0.301249,1.318754,0.192589
A 1.840988,0.798618,0.8,229.247485,355.212849
A 3.322158,2.414359,3,190.817168,224.778673
A 2.100434,2.559802,3,310.420977,1.634862
A 3.439823,0.798391,0.8,187.966948,319.223163
A 3.445917,2.752621,3.2,149.862024,196.358885
[x] 8
A 2.840059,8.134096,0.5,183.335063,248.207941
L 2.715276,5.451612,4.094907,5.645893
A 3.235321,2.751232,2.75,100.900697,297.878144
L 4.298758,-0.19779,4.754142,-0.068075
A 4.699352,0.124274,0.2,285.899387,24.882527
A 4.631567,0.041425,0.3,33.825812,111.58531
A 3.260362,6.576504,1.25,118.995305,244.146648
L 2.65444,7.669828,4.124718,8.066569
[y] 6
L 0.628611,2.733539,0.608059,3.796478
A -1.141614,3.762649,1.75,1.107638,45.0276
A 2.378284,2.767367,1.75,181.107638,1.107638
L 4.148523,3.772992,4.127941,2.732749
A 5.898181,3.738374,1.75,133.836526,178.866501
L 2.378284,5.000682,2.378284,-3
[z] 9
L 4.537596,0.009488,1.033551,-0.007416
L 3.103125,6.241724,4.141469,6.604519
L 0.708019,3.584129,0.064918,1.259168
A 1.028727,0.992572,1,164.53818,270.276396
A 4.563252,2.517744,4,111.409542,164.53818
A 3.312768,6.60969,0.6,72.125907,228.296377
L 3.781809,-0.969599,4.476289,-0.869214
A 4.234994,-0.323553,0.6,294.966656,14.087095
A 4.539043,-0.290509,0.3,22.126049,90.276396
[{] 6
A 1.867257,8,1,90,180
L 0.867257,8,0.867257,5
A -0.132743,5,1,270,0
A -0.132743,3,1,0,90
L 0.867257,3,0.867257,0
A 1.867257,0,1,180,270
[|] 3
L 3.236958,2.8014,2.590868,3.201288
A 1.538297,1.500672,2,58.245185,131.380508
A 4.289529,4.502016,2,238.245185,311.380508
[}] 6
A -0.132743,8,1,0,90
L 0.867257,8,0.867257,5
A 1.867257,5,1,180,270
A 1.867257,3,1,90,180
L 0.867257,3,0.867257,0
A -0.132743,0,1,270,0
[¢] 3
A 2.867257,4.5,3,77.471191,257.471191
A 2.867257,4.5,3,257.471191,77.471191
L 1.867257,0,3.867257,9
[°] 2
A 1.367257,7.5,1.5,90,270
A 1.367257,7.5,1.5,270,90
[±] 3
L -0.132865,5,3.867135,5
L 1.867135,7,1.867135,3
L -0.132865,1,3.867135,1
[Ä] 5
L -0.132743,0,2.867257,9
L 2.867257,9,5.867257,0
L 0.700509,2.5,5.034005,2.5
L 4.867257,10.25,4.867257,10.75
L 0.867257,10.25,0.867257,10.75
[Ö] 10
L -0.132743,2,-0.132743,7
A 1.867257,7,2,90,180
L 1.867257,9,2.867257,9
A 2.867257,7,2,0,90
L 4.867257,7,4.867257,2
A 2.867257,2,2,270,0
L 2.867257,0,1.867257,0
A 1.867257,2,2,180,270
L 0.867257,10.25,0.867257,10.75
L 3.867257,10.25,3.867257,10.75
[Ü] 5
L -0.132743,9,-0.132743,2.5
A 2.367257,2.5,2.5,180,0
L 4.867257,2.5,4.867257,9
L 0.867257,10.25,0.867257,10.75
L 3.867257,10.25,3.867257,10.75
[ß] 9
A 2.367257,7,2,270,90
A 2.467233,2.6,2.4,0,90
L 4.867257,2.6,4.867257,2.4
A 2.467233,2.4,2.4,270,0
L 0.867257,5,2.467233,5
A 1.867257,7,2,90,180
L 1.867257,9,2.367257,9
L -0.132743,0,-0.132743,7
L 2.467233,0,0.867257,0
[ä] 8
L 0.367257,6,2.367257,6
A 2.367257,4.5,1.5,0,90
L 3.867257,4.5,3.867257,0
L 3.867257,0,1.367257,0
A 1.367257,1.5,1.5,90,270
L 1.367257,3,3.867257,3
L 0.867257,9,0.867257,8.5
L 2.867257,9,2.867257,8.5
[ö] 6
L -0.132743,4,-0.132743,2
A 1.867257,2,2,180,0
L 3.867257,2,3.867257,4
A 1.867257,4,2,0,180
L 0.867257,9,0.867257,8.5
L 2.867257,9,2.867257,8.5
[ø] 3
A 2.867257,4.5,3,77.471191,257.471191
A 2.867257,4.5,3,257.471191,77.471191
L 1.867257,0,3.867257,9
[ú] 2
L -0.132743,6,3.867257,2
L 3.867257,6,-0.132743,2
[ü] 6
L -0.132743,6,-0.132743,1.5
A 1.367257,1.5,1.5,180,270
L 1.367257,0,3.867257,0
L 3.867257,0,3.867257,6
L 0.867257,9,0.867257,8.5
L 2.867257,9,2.867257,8.5
#EOF

View file

@ -0,0 +1,923 @@
# Format: QCad II Font
# Creator: QCad
# Version: 1
# Name: Symbol Astro
# LetterSpacing: 3.0
# WordSpacing: 6.75
# LineSpacingFactor: 1.0
# Author: Hershey fonts
[!] 20
L 2.181818,5.090909,1.090909,4.727273
L 1.090909,4.727273,0.363636,4
L 0.363636,4,0,2.909091
L 0,2.909091,0,2.181818
L 0,2.181818,0.363636,1.090909
L 0.363636,1.090909,1.090909,0.363636
L 1.090909,0.363636,2.181818,0
L 2.181818,0,2.909091,0
L 2.909091,0,4,0.363636
L 4,0.363636,4.727273,1.090909
L 4.727273,1.090909,5.090909,2.181818
L 5.090909,2.181818,5.090909,2.909091
L 5.090909,2.909091,4.727273,4
L 4.727273,4,4,4.727273
L 4,4.727273,2.909091,5.090909
L 2.909091,5.090909,2.181818,5.090909
L 2.545455,2.909091,2.181818,2.545455
L 2.181818,2.545455,2.545455,2.181818
L 2.545455,2.181818,2.909091,2.545455
L 2.909091,2.545455,2.545455,2.909091
["] 21
L 0.727273,5.090909,0.363636,4.727273
L 0.363636,4.727273,0.363636,4.363636
L 0.363636,4.363636,0.727273,4
L 1.818182,5.090909,2.181818,4.727273
L 2.181818,4.727273,2.181818,4.363636
L 2.181818,4.363636,1.818182,4
L 1.090909,4,0.363636,3.636364
L 0.363636,3.636364,0,2.909091
L 0,2.909091,0,2.545455
L 0,2.545455,0.363636,1.818182
L 0.363636,1.818182,1.090909,1.454545
L 1.090909,1.454545,1.454545,1.454545
L 1.454545,1.454545,2.181818,1.818182
L 2.181818,1.818182,2.545455,2.545455
L 2.545455,2.545455,2.545455,2.909091
L 2.545455,2.909091,2.181818,3.636364
L 2.181818,3.636364,1.454545,4
L 1.454545,4,1.090909,4
L 1.090909,1.454545,1.090909,0
L 1.454545,1.454545,1.454545,0
L 0,0.727273,2.545455,0.727273
[#] 15
L 1.090909,5.090909,0.363636,4.727273
L 0.363636,4.727273,0,4
L 0,4,0,3.636364
L 0,3.636364,0.363636,2.909091
L 0.363636,2.909091,1.090909,2.545455
L 1.090909,2.545455,1.454545,2.545455
L 1.454545,2.545455,2.181818,2.909091
L 2.181818,2.909091,2.545455,3.636364
L 2.545455,3.636364,2.545455,4
L 2.545455,4,2.181818,4.727273
L 2.181818,4.727273,1.454545,5.090909
L 1.454545,5.090909,1.090909,5.090909
L 1.090909,2.545455,1.090909,0.363636
L 1.454545,2.545455,1.454545,0.363636
L 0,1.454545,2.545455,1.454545
[$] 18
L 2.181818,5.090909,1.090909,4.727273
L 1.090909,4.727273,0.363636,4
L 0.363636,4,0,2.909091
L 0,2.909091,0,2.181818
L 0,2.181818,0.363636,1.090909
L 0.363636,1.090909,1.090909,0.363636
L 1.090909,0.363636,2.181818,0
L 2.181818,0,2.909091,0
L 2.909091,0,4,0.363636
L 4,0.363636,4.727273,1.090909
L 4.727273,1.090909,5.090909,2.181818
L 5.090909,2.181818,5.090909,2.909091
L 5.090909,2.909091,4.727273,4
L 4.727273,4,4,4.727273
L 4,4.727273,2.909091,5.090909
L 2.909091,5.090909,2.181818,5.090909
L 2.545455,5.090909,2.545455,0
L 0,2.545455,5.090909,2.545455
[%] 17
L 2.181818,2.545455,1.454545,2.909091
L 1.454545,2.909091,1.090909,2.909091
L 1.090909,2.909091,0.363636,2.545455
L 0.363636,2.545455,0,1.818182
L 0,1.818182,0,1.454545
L 0,1.454545,0.363636,0.727273
L 0.363636,0.727273,1.090909,0.363636
L 1.090909,0.363636,1.454545,0.363636
L 1.454545,0.363636,2.181818,0.727273
L 2.181818,0.727273,2.545455,1.454545
L 2.545455,1.454545,2.545455,1.818182
L 2.545455,1.818182,2.181818,2.545455
L 4,4.363636,2.181818,2.545455
L 2.181818,4.363636,4,4.363636
L 4,4.363636,4,2.545455
L 2.181818,4.363636,3.636364,4
L 3.636364,4,4,2.545455
[&] 15
L 0,4.727273,0.363636,5.090909
L 0.363636,5.090909,1.090909,5.090909
L 1.090909,5.090909,1.818182,4.727273
L 1.818182,4.727273,2.181818,4
L 2.181818,4,2.181818,3.272727
L 2.181818,3.272727,1.818182,2.545455
L 1.818182,2.545455,1.454545,2.181818
L 1.454545,2.181818,0.727273,1.818182
L 1.090909,5.090909,1.454545,4.727273
L 1.454545,4.727273,1.818182,4
L 1.818182,4,1.818182,2.909091
L 1.818182,2.909091,1.454545,2.181818
L 3.636364,5.090909,3.272727,0.363636
L 4,5.090909,2.909091,0.363636
L 0.727273,1.818182,4.363636,1.818182
['] 17
L 0.727273,5.090909,0.727273,1.454545
L 1.090909,5.090909,0.727273,2.545455
L 0.727273,2.545455,1.090909,3.272727
L 1.090909,3.272727,1.818182,3.636364
L 1.818182,3.636364,2.545455,3.636364
L 2.545455,3.636364,3.272727,3.272727
L 3.272727,3.272727,3.636364,2.909091
L 3.636364,2.909091,3.636364,1.818182
L 3.636364,1.818182,2.909091,1.090909
L 2.909091,1.090909,2.909091,0.363636
L 2.909091,0.363636,3.272727,0
L 3.272727,0,3.636364,0
L 3.636364,0,4,0.363636
L 2.545455,3.636364,3.272727,2.909091
L 3.272727,2.909091,3.272727,1.818182
L 3.272727,1.818182,2.909091,1.090909
L 0,5.090909,1.090909,5.090909
[(] 19
L 0,4,1.090909,5.090909
L 1.090909,5.090909,1.090909,2.909091
L 2.545455,4,1.454545,5.090909
L 1.454545,5.090909,1.454545,2.909091
L 1.090909,2.909091,0.363636,2.545455
L 0.363636,2.545455,0,1.818182
L 0,1.818182,0,1.454545
L 0,1.454545,0.363636,0.727273
L 0.363636,0.727273,1.090909,0.363636
L 1.090909,0.363636,1.454545,0.363636
L 1.454545,0.363636,2.181818,0.727273
L 2.181818,0.727273,2.545455,1.454545
L 2.545455,1.454545,2.545455,1.818182
L 2.545455,1.818182,2.181818,2.545455
L 2.181818,2.545455,1.454545,2.909091
L 1.090909,1.818182,1.090909,1.454545
L 1.090909,1.454545,1.454545,1.454545
L 1.454545,1.454545,1.454545,1.818182
L 1.454545,1.818182,1.090909,1.818182
[)] 15
L 2.181818,5.090909,2.181818,0
L 0.363636,5.090909,0.363636,3.272727
L 0.363636,3.272727,0.727273,2.545455
L 0.727273,2.545455,1.454545,2.181818
L 1.454545,2.181818,2.909091,2.181818
L 2.909091,2.181818,3.636364,2.545455
L 3.636364,2.545455,4,3.272727
L 4,3.272727,4,5.090909
L 0,4.363636,0.363636,5.090909
L 0.363636,5.090909,0.727273,4.363636
L 1.818182,4.363636,2.181818,5.090909
L 2.181818,5.090909,2.545455,4.363636
L 3.636364,4.363636,4,5.090909
L 4,5.090909,4.363636,4.363636
L 1.090909,1.090909,3.272727,1.090909
[*] 17
L 0.727273,5.090909,0.727273,0.363636
L 1.090909,5.090909,1.090909,0.363636
L 0,5.090909,2.545455,5.090909
L 2.545455,5.090909,3.636364,4.727273
L 3.636364,4.727273,4,4
L 4,4,4,3.636364
L 4,3.636364,3.636364,2.909091
L 3.636364,2.909091,2.545455,2.545455
L 2.545455,2.545455,1.090909,2.545455
L 2.545455,5.090909,3.272727,4.727273
L 3.272727,4.727273,3.636364,4
L 3.636364,4,3.636364,3.636364
L 3.636364,3.636364,3.272727,2.909091
L 3.272727,2.909091,2.545455,2.545455
L 0,0.363636,3.636364,0.363636
L 3.636364,0.363636,3.636364,1.454545
L 3.636364,1.454545,3.272727,0.363636
[+] 16
L 3.272727,5.090909,2.181818,5.090909
L 2.181818,5.090909,1.090909,4.727273
L 1.090909,4.727273,0.363636,4
L 0.363636,4,0,2.909091
L 0,2.909091,0,2.181818
L 0,2.181818,0.363636,1.090909
L 0.363636,1.090909,1.090909,0.363636
L 1.090909,0.363636,2.181818,0
L 2.181818,0,3.272727,0
L 3.272727,5.090909,2.181818,4.727273
L 2.181818,4.727273,1.454545,4
L 1.454545,4,1.090909,2.909091
L 1.090909,2.909091,1.090909,2.181818
L 1.090909,2.181818,1.454545,1.090909
L 1.454545,1.090909,2.181818,0.363636
L 2.181818,0.363636,3.272727,0
[,] 15
L 2.181818,2.545455,1.454545,2.909091
L 1.454545,2.909091,1.090909,2.909091
L 1.090909,2.909091,0.363636,2.545455
L 0.363636,2.545455,0,1.818182
L 0,1.818182,0,1.454545
L 0,1.454545,0.363636,0.727273
L 0.363636,0.727273,1.090909,0.363636
L 1.090909,0.363636,1.454545,0.363636
L 1.454545,0.363636,2.181818,0.727273
L 2.181818,0.727273,2.545455,1.454545
L 2.545455,1.454545,2.545455,1.818182
L 2.545455,1.818182,2.181818,2.545455
L 2.545455,4.727273,1.818182,2.909091
L 4,4.363636,2.181818,2.545455
L 4.363636,2.909091,2.545455,2.181818
[-] 4
L 1.090909,4.363636,2.545455,0.727273
L 2.545455,4.363636,1.090909,0.727273
L 0,3.272727,3.636364,1.818182
L 3.636364,3.272727,0,1.818182
[.] 32
L 3.272727,6.909091,2.181818,6.545455
L 2.181818,6.545455,1.090909,5.818182
L 1.090909,5.818182,0.363636,4.727273
L 0.363636,4.727273,0,3.636364
L 0,3.636364,0,2.545455
L 0,2.545455,0.363636,1.454545
L 0.363636,1.454545,1.090909,0.363636
L 1.090909,0.363636,2.181818,-0.363636
L 2.181818,-0.363636,3.272727,-0.727273
L 3.272727,-0.727273,4.363636,-0.727273
L 4.363636,-0.727273,5.454545,-0.363636
L 5.454545,-0.363636,6.545455,0.363636
L 6.545455,0.363636,7.272727,1.454545
L 7.272727,1.454545,7.636364,2.545455
L 7.636364,2.545455,7.636364,3.636364
L 7.636364,3.636364,7.272727,4.727273
L 7.272727,4.727273,6.545455,5.818182
L 6.545455,5.818182,5.454545,6.545455
L 5.454545,6.545455,4.363636,6.909091
L 4.363636,6.909091,3.272727,6.909091
L 3.636364,3.636364,3.272727,3.272727
L 3.272727,3.272727,3.272727,2.909091
L 3.272727,2.909091,3.636364,2.545455
L 3.636364,2.545455,4,2.545455
L 4,2.545455,4.363636,2.909091
L 4.363636,2.909091,4.363636,3.272727
L 4.363636,3.272727,4,3.636364
L 4,3.636364,3.636364,3.636364
L 3.636364,3.272727,3.636364,2.909091
L 3.636364,2.909091,4,2.909091
L 4,2.909091,4,3.272727
L 4,3.272727,3.636364,3.272727
[/] 29
L 1.090909,6.909091,0.363636,6.545455
L 0.363636,6.545455,0.727273,5.818182
L 0.727273,5.818182,1.454545,5.454545
L 1.090909,6.909091,0.727273,6.545455
L 0.727273,6.545455,0.727273,5.818182
L 2.909091,6.909091,3.636364,6.545455
L 3.636364,6.545455,3.272727,5.818182
L 3.272727,5.818182,2.545455,5.454545
L 2.909091,6.909091,3.272727,6.545455
L 3.272727,6.545455,3.272727,5.818182
L 1.454545,5.454545,0.727273,5.090909
L 0.727273,5.090909,0.363636,4.727273
L 0.363636,4.727273,0,4
L 0,4,0,2.909091
L 0,2.909091,0.363636,2.181818
L 0.363636,2.181818,0.727273,1.818182
L 0.727273,1.818182,1.454545,1.454545
L 1.454545,1.454545,2.545455,1.454545
L 2.545455,1.454545,3.272727,1.818182
L 3.272727,1.818182,3.636364,2.181818
L 3.636364,2.181818,4,2.909091
L 4,2.909091,4,4
L 4,4,3.636364,4.727273
L 3.636364,4.727273,3.272727,5.090909
L 3.272727,5.090909,2.545455,5.454545
L 2.545455,5.454545,1.454545,5.454545
L 1.818182,1.454545,1.818182,-0.727273
L 2.181818,1.454545,2.181818,-0.727273
L 0.363636,0.363636,3.636364,0.363636
[0] 19
L 2.181818,6.909091,1.090909,6.545455
L 1.090909,6.545455,0.363636,5.818182
L 0.363636,5.818182,0,4.727273
L 0,4.727273,0,4.363636
L 0,4.363636,0.363636,3.272727
L 0.363636,3.272727,1.090909,2.545455
L 1.090909,2.545455,2.181818,2.181818
L 2.181818,2.181818,2.545455,2.181818
L 2.545455,2.181818,3.636364,2.545455
L 3.636364,2.545455,4.363636,3.272727
L 4.363636,3.272727,4.727273,4.363636
L 4.727273,4.363636,4.727273,4.727273
L 4.727273,4.727273,4.363636,5.818182
L 4.363636,5.818182,3.636364,6.545455
L 3.636364,6.545455,2.545455,6.909091
L 2.545455,6.909091,2.181818,6.909091
L 2.181818,2.181818,2.181818,-0.727273
L 2.545455,2.181818,2.545455,-0.727273
L 0.727273,0.727273,4,0.727273
[1] 22
L 3.272727,6.909091,2.181818,6.545455
L 2.181818,6.545455,1.090909,5.818182
L 1.090909,5.818182,0.363636,4.727273
L 0.363636,4.727273,0,3.636364
L 0,3.636364,0,2.181818
L 0,2.181818,0.363636,1.090909
L 0.363636,1.090909,1.090909,0
L 1.090909,0,2.181818,-0.727273
L 2.181818,-0.727273,3.272727,-1.090909
L 3.272727,-1.090909,4.727273,-1.090909
L 4.727273,-1.090909,5.818182,-0.727273
L 5.818182,-0.727273,6.909091,0
L 6.909091,0,7.636364,1.090909
L 7.636364,1.090909,8,2.181818
L 8,2.181818,8,3.636364
L 8,3.636364,7.636364,4.727273
L 7.636364,4.727273,6.909091,5.818182
L 6.909091,5.818182,5.818182,6.545455
L 5.818182,6.545455,4.727273,6.909091
L 4.727273,6.909091,3.272727,6.909091
L 4,6.909091,4,-1.090909
L 0,2.909091,8,2.909091
[2] 23
L 2.181818,4.363636,1.090909,4
L 1.090909,4,0.363636,3.272727
L 0.363636,3.272727,0,2.181818
L 0,2.181818,0,1.818182
L 0,1.818182,0.363636,0.727273
L 0.363636,0.727273,1.090909,0
L 1.090909,0,2.181818,-0.363636
L 2.181818,-0.363636,2.545455,-0.363636
L 2.545455,-0.363636,3.636364,0
L 3.636364,0,4.363636,0.727273
L 4.363636,0.727273,4.727273,1.818182
L 4.727273,1.818182,4.727273,2.181818
L 4.727273,2.181818,4.363636,3.272727
L 4.363636,3.272727,3.636364,4
L 3.636364,4,2.545455,4.363636
L 2.545455,4.363636,2.181818,4.363636
L 6.909091,6.545455,4.727273,6.545455
L 4.727273,6.545455,6.181818,6.181818
L 6.181818,6.181818,4,4
L 6.909091,6.545455,6.909091,4.363636
L 6.909091,4.363636,6.545455,5.818182
L 6.545455,5.818182,4.363636,3.636364
L 6.545455,6.181818,4.363636,4
[3] 18
L 0,5.818182,0.363636,6.545455
L 0.363636,6.545455,1.090909,6.909091
L 1.090909,6.909091,2.181818,6.909091
L 2.181818,6.909091,2.909091,6.545455
L 2.909091,6.545455,3.272727,5.818182
L 3.272727,5.818182,3.272727,4.727273
L 3.272727,4.727273,2.909091,3.636364
L 2.909091,3.636364,2.545455,2.909091
L 2.545455,2.909091,1.818182,2.181818
L 1.818182,2.181818,0.727273,1.454545
L 2.181818,6.909091,2.545455,6.545455
L 2.545455,6.545455,2.909091,5.818182
L 2.909091,5.818182,2.909091,4.363636
L 2.909091,4.363636,2.545455,3.272727
L 2.545455,3.272727,1.818182,2.181818
L 4.727273,6.909091,4,-0.727273
L 5.090909,6.909091,3.636364,-0.727273
L 0.727273,1.454545,5.818182,1.454545
[4] 20
L 0.727273,6.909091,0.727273,1.454545
L 1.090909,6.909091,0.727273,2.909091
L 0.727273,2.909091,1.090909,3.636364
L 1.090909,3.636364,1.454545,4
L 1.454545,4,2.181818,4.363636
L 2.181818,4.363636,3.272727,4.363636
L 3.272727,4.363636,4.363636,4
L 4.363636,4,4.727273,3.272727
L 4.727273,3.272727,4.727273,2.545455
L 4.727273,2.545455,4.363636,1.818182
L 4.363636,1.818182,3.636364,1.090909
L 3.272727,4.363636,4,4
L 4,4,4.363636,3.272727
L 4.363636,3.272727,4.363636,2.545455
L 4.363636,2.545455,3.272727,0.363636
L 3.272727,0.363636,3.272727,-0.363636
L 3.272727,-0.363636,3.636364,-0.727273
L 3.636364,-0.727273,4.363636,-0.727273
L 4.363636,-0.727273,5.090909,0
L 0,6.909091,1.090909,6.909091
[5] 34
L 2.181818,4,1.090909,3.636364
L 1.090909,3.636364,0.363636,2.909091
L 0.363636,2.909091,0,1.818182
L 0,1.818182,0,1.454545
L 0,1.454545,0.363636,0.363636
L 0.363636,0.363636,1.090909,-0.363636
L 1.090909,-0.363636,2.181818,-0.727273
L 2.181818,-0.727273,2.545455,-0.727273
L 2.545455,-0.727273,3.636364,-0.363636
L 3.636364,-0.363636,4.363636,0.363636
L 4.363636,0.363636,4.727273,1.454545
L 4.727273,1.454545,4.727273,1.818182
L 4.727273,1.818182,4.363636,2.909091
L 4.363636,2.909091,3.636364,3.636364
L 3.636364,3.636364,2.545455,4
L 2.545455,4,2.181818,4
L 2.181818,6.181818,0.727273,5.454545
L 0.727273,5.454545,2.181818,6.909091
L 2.181818,6.909091,2.181818,4
L 2.545455,6.181818,4,5.454545
L 4,5.454545,2.545455,6.909091
L 2.545455,6.909091,2.545455,4
L 2.181818,2.181818,1.818182,1.818182
L 1.818182,1.818182,1.818182,1.454545
L 1.818182,1.454545,2.181818,1.090909
L 2.181818,1.090909,2.545455,1.090909
L 2.545455,1.090909,2.909091,1.454545
L 2.909091,1.454545,2.909091,1.818182
L 2.909091,1.818182,2.545455,2.181818
L 2.545455,2.181818,2.181818,2.181818
L 2.181818,1.818182,2.181818,1.454545
L 2.181818,1.454545,2.545455,1.454545
L 2.545455,1.454545,2.545455,1.818182
L 2.545455,1.818182,2.181818,1.818182
[6] 23
L 2.545455,6.181818,2.909091,6.909091
L 2.909091,6.909091,2.909091,-0.727273
L 3.636364,6.181818,3.272727,6.909091
L 3.272727,6.909091,3.272727,-0.727273
L 0,6.181818,0.363636,6.909091
L 0.363636,6.909091,0.363636,4.363636
L 0.363636,4.363636,0.727273,3.272727
L 0.727273,3.272727,1.454545,2.545455
L 1.454545,2.545455,2.545455,2.181818
L 2.545455,2.181818,2.909091,2.181818
L 1.090909,6.181818,0.727273,6.909091
L 0.727273,6.909091,0.727273,4
L 0.727273,4,1.090909,2.909091
L 6.181818,6.181818,5.818182,6.909091
L 5.818182,6.909091,5.818182,4.363636
L 5.818182,4.363636,5.454545,3.272727
L 5.454545,3.272727,4.727273,2.545455
L 4.727273,2.545455,3.636364,2.181818
L 3.636364,2.181818,3.272727,2.181818
L 5.090909,6.181818,5.454545,6.909091
L 5.454545,6.909091,5.454545,4
L 5.454545,4,5.090909,2.909091
L 1.454545,0.727273,4.727273,0.727273
[7] 21
L 1.090909,6.909091,1.090909,-0.727273
L 1.454545,6.909091,1.454545,-0.727273
L 0,6.909091,4.363636,6.909091
L 4.363636,6.909091,5.454545,6.545455
L 5.454545,6.545455,5.818182,6.181818
L 5.818182,6.181818,6.181818,5.454545
L 6.181818,5.454545,6.181818,4.363636
L 6.181818,4.363636,5.818182,3.636364
L 5.818182,3.636364,5.454545,3.272727
L 5.454545,3.272727,4.363636,2.909091
L 4.363636,2.909091,1.454545,2.909091
L 4.363636,6.909091,5.090909,6.545455
L 5.090909,6.545455,5.454545,6.181818
L 5.454545,6.181818,5.818182,5.454545
L 5.818182,5.454545,5.818182,4.363636
L 5.818182,4.363636,5.454545,3.636364
L 5.454545,3.636364,5.090909,3.272727
L 5.090909,3.272727,4.363636,2.909091
L 0,-0.727273,5.818182,-0.727273
L 5.818182,-0.727273,5.818182,1.090909
L 5.818182,1.090909,5.454545,-0.727273
[8] 20
L 5.090909,6.545455,3.636364,6.545455
L 3.636364,6.545455,2.181818,6.181818
L 2.181818,6.181818,1.090909,5.454545
L 1.090909,5.454545,0.363636,4.363636
L 0.363636,4.363636,0,3.272727
L 0,3.272727,0,2.181818
L 0,2.181818,0.363636,1.090909
L 0.363636,1.090909,1.090909,0
L 1.090909,0,2.181818,-0.727273
L 2.181818,-0.727273,3.636364,-1.090909
L 3.636364,-1.090909,5.090909,-1.090909
L 5.090909,6.545455,4,6.181818
L 4,6.181818,2.909091,5.454545
L 2.909091,5.454545,2.181818,4.363636
L 2.181818,4.363636,1.818182,3.272727
L 1.818182,3.272727,1.818182,2.181818
L 1.818182,2.181818,2.181818,1.090909
L 2.181818,1.090909,2.909091,0
L 2.909091,0,4,-0.727273
L 4,-0.727273,5.090909,-1.090909
[9] 19
L 2.181818,2.909091,1.454545,2.909091
L 1.454545,2.909091,0.727273,2.545455
L 0.727273,2.545455,0.363636,2.181818
L 0.363636,2.181818,0,1.454545
L 0,1.454545,0,0.727273
L 0,0.727273,0.363636,0
L 0.363636,0,0.727273,-0.363636
L 0.727273,-0.363636,1.454545,-0.727273
L 1.454545,-0.727273,2.181818,-0.727273
L 2.181818,-0.727273,2.909091,-0.363636
L 2.909091,-0.363636,3.272727,0
L 3.272727,0,3.636364,0.727273
L 3.636364,0.727273,3.636364,1.454545
L 3.636364,1.454545,3.272727,2.181818
L 3.272727,2.181818,2.909091,2.545455
L 2.909091,2.545455,2.181818,2.909091
L 3.636364,6.181818,2.545455,2.909091
L 6.181818,5.454545,3.272727,2.545455
L 6.909091,2.909091,3.636364,1.818182
[:] 4
L 1.454545,5.090909,3.636364,0
L 3.636364,5.090909,1.454545,0
L 0,3.636364,5.090909,1.454545
L 5.090909,3.636364,0,1.454545
[;] 32
L 0.363636,4.363636,0,4.727273
L 0,4.727273,0,5.454545
L 0,5.454545,0.363636,6.181818
L 0.363636,6.181818,1.090909,6.545455
L 1.090909,6.545455,1.818182,6.545455
L 1.818182,6.545455,2.545455,6.181818
L 2.545455,6.181818,2.909091,5.818182
L 2.909091,5.818182,3.272727,5.090909
L 3.272727,5.090909,3.636364,3.272727
L 0,5.454545,0.727273,6.181818
L 0.727273,6.181818,1.454545,6.181818
L 1.454545,6.181818,2.181818,5.818182
L 2.181818,5.818182,2.545455,5.454545
L 2.545455,5.454545,2.909091,4.727273
L 2.909091,4.727273,3.272727,3.272727
L 3.272727,3.272727,3.272727,-0.727273
L 6.545455,4.363636,6.909091,4.727273
L 6.909091,4.727273,6.909091,5.454545
L 6.909091,5.454545,6.545455,6.181818
L 6.545455,6.181818,5.818182,6.545455
L 5.818182,6.545455,5.090909,6.545455
L 5.090909,6.545455,4.363636,6.181818
L 4.363636,6.181818,4,5.818182
L 4,5.818182,3.636364,5.090909
L 3.636364,5.090909,3.272727,3.272727
L 6.909091,5.454545,6.181818,6.181818
L 6.181818,6.181818,5.454545,6.181818
L 5.454545,6.181818,4.727273,5.818182
L 4.727273,5.818182,4.363636,5.454545
L 4.363636,5.454545,4,4.727273
L 4,4.727273,3.636364,3.272727
L 3.636364,3.272727,3.636364,-0.727273
[<] 41
L 0,6.545455,0.363636,5.090909
L 0.363636,5.090909,0.727273,4.363636
L 0.727273,4.363636,1.454545,3.636364
L 1.454545,3.636364,2.545455,3.272727
L 2.545455,3.272727,4,3.272727
L 4,3.272727,5.090909,3.636364
L 5.090909,3.636364,5.818182,4.363636
L 5.818182,4.363636,6.181818,5.090909
L 6.181818,5.090909,6.545455,6.545455
L 0,6.545455,0.363636,5.454545
L 0.363636,5.454545,0.727273,4.727273
L 0.727273,4.727273,1.454545,4
L 1.454545,4,2.545455,3.636364
L 2.545455,3.636364,4,3.636364
L 4,3.636364,5.090909,4
L 5.090909,4,5.818182,4.727273
L 5.818182,4.727273,6.181818,5.454545
L 6.181818,5.454545,6.545455,6.545455
L 2.545455,3.636364,1.818182,3.272727
L 1.818182,3.272727,1.454545,2.909091
L 1.454545,2.909091,1.090909,2.181818
L 1.090909,2.181818,1.090909,1.090909
L 1.090909,1.090909,1.454545,0.363636
L 1.454545,0.363636,2.181818,-0.363636
L 2.181818,-0.363636,2.909091,-0.727273
L 2.909091,-0.727273,3.636364,-0.727273
L 3.636364,-0.727273,4.363636,-0.363636
L 4.363636,-0.363636,5.090909,0.363636
L 5.090909,0.363636,5.454545,1.090909
L 5.454545,1.090909,5.454545,2.181818
L 5.454545,2.181818,5.090909,2.909091
L 5.090909,2.909091,4.727273,3.272727
L 4.727273,3.272727,4,3.636364
L 2.545455,3.272727,1.818182,2.909091
L 1.818182,2.909091,1.454545,2.181818
L 1.454545,2.181818,1.454545,1.090909
L 1.454545,1.090909,1.818182,0
L 4.727273,0,5.090909,1.090909
L 5.090909,1.090909,5.090909,2.181818
L 5.090909,2.181818,4.727273,2.909091
L 4.727273,2.909091,4,3.272727
[=] 18
L 1.454545,5.454545,1.454545,1.090909
L 1.818182,5.090909,1.818182,1.454545
L 4.727273,5.090909,4.727273,1.454545
L 5.090909,5.454545,5.090909,1.090909
L 0,6.545455,0.727273,5.818182
L 0.727273,5.818182,1.454545,5.454545
L 1.454545,5.454545,2.545455,5.090909
L 2.545455,5.090909,4,5.090909
L 4,5.090909,5.090909,5.454545
L 5.090909,5.454545,5.818182,5.818182
L 5.818182,5.818182,6.545455,6.545455
L 0,0,0.727273,0.727273
L 0.727273,0.727273,1.454545,1.090909
L 1.454545,1.090909,2.545455,1.454545
L 2.545455,1.454545,4,1.454545
L 4,1.454545,5.090909,1.090909
L 5.090909,1.090909,5.818182,0.727273
L 5.818182,0.727273,6.545455,0
[>] 36
L 6.545455,5.818182,1.090909,5.818182
L 1.090909,5.818182,0.363636,5.454545
L 0.363636,5.454545,0,4.727273
L 0,4.727273,0,4
L 0,4,0.363636,3.272727
L 0.363636,3.272727,1.090909,2.909091
L 1.090909,2.909091,1.818182,2.909091
L 1.818182,2.909091,2.545455,3.272727
L 2.545455,3.272727,2.909091,4
L 2.909091,4,2.909091,4.727273
L 2.909091,4.727273,2.545455,5.454545
L 2.545455,5.454545,6.545455,5.454545
L 0,4.363636,0.363636,3.636364
L 0.363636,3.636364,0.727273,3.272727
L 0.727273,3.272727,1.454545,2.909091
L 2.909091,4.363636,2.545455,5.090909
L 2.545455,5.090909,2.181818,5.454545
L 2.181818,5.454545,1.454545,5.818182
L 0,0.363636,5.454545,0.363636
L 5.454545,0.363636,6.181818,0.727273
L 6.181818,0.727273,6.545455,1.454545
L 6.545455,1.454545,6.545455,2.181818
L 6.545455,2.181818,6.181818,2.909091
L 6.181818,2.909091,5.454545,3.272727
L 5.454545,3.272727,4.727273,3.272727
L 4.727273,3.272727,4,2.909091
L 4,2.909091,3.636364,2.181818
L 3.636364,2.181818,3.636364,1.454545
L 3.636364,1.454545,4,0.727273
L 4,0.727273,0,0.727273
L 6.545455,1.818182,6.181818,2.545455
L 6.181818,2.545455,5.818182,2.909091
L 5.818182,2.909091,5.090909,3.272727
L 3.636364,1.818182,4,1.090909
L 4,1.090909,4.363636,0.727273
L 4.363636,0.727273,5.090909,0.363636
[?] 42
L 2.181818,1.454545,1.454545,1.818182
L 1.454545,1.818182,1.090909,1.818182
L 1.090909,1.818182,0.363636,1.454545
L 0.363636,1.454545,0,0.727273
L 0,0.727273,0,0.363636
L 0,0.363636,0.363636,-0.363636
L 0.363636,-0.363636,1.090909,-0.727273
L 1.090909,-0.727273,1.454545,-0.727273
L 1.454545,-0.727273,2.181818,-0.363636
L 2.181818,-0.363636,2.545455,0.363636
L 2.545455,0.363636,2.545455,0.727273
L 2.545455,0.727273,2.181818,1.454545
L 2.181818,1.454545,0.363636,3.272727
L 0.363636,3.272727,0,4
L 0,4,0,5.090909
L 0,5.090909,0.363636,5.818182
L 0.363636,5.818182,1.090909,6.181818
L 1.090909,6.181818,2.181818,6.545455
L 2.181818,6.545455,3.636364,6.545455
L 3.636364,6.545455,5.090909,6.181818
L 5.090909,6.181818,5.818182,5.454545
L 5.818182,5.454545,6.181818,4.727273
L 6.181818,4.727273,6.181818,3.636364
L 6.181818,3.636364,5.818182,2.545455
L 5.818182,2.545455,4.727273,1.454545
L 4.727273,1.454545,4.363636,0.727273
L 4.363636,0.727273,4.363636,0
L 4.363636,0,4.727273,-0.727273
L 4.727273,-0.727273,5.454545,-0.727273
L 5.454545,-0.727273,5.818182,-0.363636
L 5.818182,-0.363636,6.181818,0.363636
L 1.454545,2.181818,0.727273,3.272727
L 0.727273,3.272727,0.363636,4
L 0.363636,4,0.363636,5.090909
L 0.363636,5.090909,0.727273,5.818182
L 0.727273,5.818182,1.090909,6.181818
L 3.636364,6.545455,4.727273,6.181818
L 4.727273,6.181818,5.454545,5.454545
L 5.454545,5.454545,5.818182,4.727273
L 5.818182,4.727273,5.818182,3.636364
L 5.818182,3.636364,5.454545,2.545455
L 5.454545,2.545455,4.727273,1.454545
[@] 32
L 0,5.090909,1.090909,6.181818
L 1.090909,6.181818,1.818182,5.090909
L 1.818182,5.090909,1.818182,1.090909
L 0.727273,5.818182,1.454545,4.727273
L 1.454545,4.727273,1.454545,1.090909
L 1.818182,5.090909,2.909091,6.181818
L 2.909091,6.181818,3.636364,5.090909
L 3.636364,5.090909,3.636364,1.454545
L 2.545455,5.818182,3.272727,4.727273
L 3.272727,4.727273,3.272727,1.454545
L 3.636364,5.090909,4.727273,6.181818
L 4.727273,6.181818,5.454545,5.090909
L 5.454545,5.090909,5.454545,-0.727273
L 4.363636,5.818182,5.090909,4.727273
L 5.090909,4.727273,5.090909,-0.727273
L 5.454545,5.090909,6.545455,6.181818
L 6.545455,6.181818,6.909091,5.454545
L 6.909091,5.454545,7.272727,4.363636
L 7.272727,4.363636,7.272727,3.272727
L 7.272727,3.272727,6.909091,2.181818
L 6.909091,2.181818,6.545455,1.454545
L 6.545455,1.454545,5.818182,0.727273
L 5.818182,0.727273,4.727273,0
L 4.727273,0,2.909091,-0.727273
L 6.181818,5.818182,6.545455,5.454545
L 6.545455,5.454545,6.909091,4.363636
L 6.909091,4.363636,6.909091,3.272727
L 6.909091,3.272727,6.545455,2.181818
L 6.545455,2.181818,6.181818,1.454545
L 6.181818,1.454545,5.454545,0.727273
L 5.454545,0.727273,4.363636,0
L 4.363636,0,2.909091,-0.727273
[A] 31
L 0,2.181818,1.454545,2.181818
L 1.454545,2.181818,1.090909,2.545455
L 1.090909,2.545455,0.727273,3.636364
L 0.727273,3.636364,0.727273,4.363636
L 0.727273,4.363636,1.090909,5.454545
L 1.090909,5.454545,1.818182,6.181818
L 1.818182,6.181818,2.909091,6.545455
L 2.909091,6.545455,3.636364,6.545455
L 3.636364,6.545455,4.727273,6.181818
L 4.727273,6.181818,5.454545,5.454545
L 5.454545,5.454545,5.818182,4.363636
L 5.818182,4.363636,5.818182,3.636364
L 5.818182,3.636364,5.454545,2.545455
L 5.454545,2.545455,5.090909,2.181818
L 5.090909,2.181818,6.545455,2.181818
L 0,1.818182,2.181818,1.818182
L 2.181818,1.818182,1.454545,2.545455
L 1.454545,2.545455,1.090909,3.636364
L 1.090909,3.636364,1.090909,4.363636
L 1.090909,4.363636,1.454545,5.454545
L 1.454545,5.454545,2.181818,6.181818
L 2.181818,6.181818,2.909091,6.545455
L 3.636364,6.545455,4.363636,6.181818
L 4.363636,6.181818,5.090909,5.454545
L 5.090909,5.454545,5.454545,4.363636
L 5.454545,4.363636,5.454545,3.636364
L 5.454545,3.636364,5.090909,2.545455
L 5.090909,2.545455,4.363636,1.818182
L 4.363636,1.818182,6.545455,1.818182
L 0.727273,0.363636,5.818182,0.363636
L 0.727273,0,5.818182,0
[B] 18
L 0,4.727273,1.090909,5.818182
L 1.090909,5.818182,2.181818,4.727273
L 2.181818,4.727273,2.181818,0.363636
L 0.727273,5.454545,1.818182,4.363636
L 1.818182,4.363636,1.818182,0.363636
L 2.181818,4.727273,3.272727,5.818182
L 3.272727,5.818182,4.363636,4.727273
L 4.363636,4.727273,4.363636,0.363636
L 2.909091,5.454545,4,4.363636
L 4,4.363636,4,0.363636
L 4.363636,4.727273,5.454545,5.818182
L 5.454545,5.818182,6.545455,4.727273
L 6.545455,4.727273,6.545455,0.727273
L 6.545455,0.727273,7.272727,0
L 5.090909,5.454545,6.181818,4.363636
L 6.181818,4.363636,6.181818,0.363636
L 6.181818,0.363636,6.909091,-0.363636
L 6.909091,-0.363636,8,0.727273
[C] 15
L 5.818182,5.818182,0,0
L 5.818182,5.818182,4.727273,5.454545
L 4.727273,5.454545,2.545455,5.454545
L 5.090909,5.090909,4,5.090909
L 4,5.090909,2.545455,5.454545
L 5.818182,5.818182,5.454545,4.727273
L 5.454545,4.727273,5.454545,2.545455
L 5.090909,5.090909,5.090909,4
L 5.090909,4,5.454545,2.545455
L 2.545455,2.545455,0,2.545455
L 2.181818,2.181818,1.090909,2.181818
L 1.090909,2.181818,0,2.545455
L 2.545455,2.545455,2.545455,0
L 2.181818,2.181818,2.181818,1.090909
L 2.181818,1.090909,2.545455,0
[D] 27
L 0,3.636364,0.727273,5.090909
L 0.727273,5.090909,2.545455,1.454545
L 0.727273,4.363636,2.545455,0.727273
L 2.545455,0.727273,3.636364,3.272727
L 3.636364,3.272727,5.454545,3.272727
L 5.454545,3.272727,6.545455,3.636364
L 6.545455,3.636364,6.909091,4.363636
L 6.909091,4.363636,6.909091,5.090909
L 6.909091,5.090909,6.545455,5.818182
L 6.545455,5.818182,5.818182,6.181818
L 5.818182,6.181818,5.454545,6.181818
L 5.454545,6.181818,4.727273,5.818182
L 4.727273,5.818182,4.363636,5.090909
L 4.363636,5.090909,4.363636,4.363636
L 4.363636,4.363636,4.727273,3.272727
L 4.727273,3.272727,5.090909,2.545455
L 5.090909,2.545455,5.454545,1.454545
L 5.454545,1.454545,5.454545,0.363636
L 5.454545,0.363636,4.727273,-0.363636
L 5.454545,6.181818,5.090909,5.818182
L 5.090909,5.818182,4.727273,5.090909
L 4.727273,5.090909,4.727273,4.363636
L 4.727273,4.363636,5.454545,2.909091
L 5.454545,2.909091,5.818182,1.818182
L 5.818182,1.818182,5.818182,0.727273
L 5.818182,0.727273,5.454545,0
L 5.454545,0,4.727273,-0.363636
[E] 20
L 0,3.636364,1.090909,4.727273
L 1.090909,4.727273,2.545455,4
L 0.727273,4.363636,2.181818,3.636364
L 2.181818,3.636364,3.272727,4.727273
L 3.272727,4.727273,4.363636,4
L 2.909091,4.363636,4,3.636364
L 4,3.636364,5.090909,4.727273
L 5.090909,4.727273,5.818182,4
L 4.727273,4.363636,5.454545,3.636364
L 5.454545,3.636364,6.545455,4.727273
L 0,1.454545,1.090909,2.545455
L 1.090909,2.545455,2.545455,1.818182
L 0.727273,2.181818,2.181818,1.454545
L 2.181818,1.454545,3.272727,2.545455
L 3.272727,2.545455,4.363636,1.818182
L 2.909091,2.181818,4,1.454545
L 4,1.454545,5.090909,2.545455
L 5.090909,2.545455,5.818182,1.818182
L 4.727273,2.181818,5.454545,1.454545
L 5.454545,1.454545,6.545455,2.545455
[F] 32
L 0.363636,6.181818,1.818182,5.454545
L 1.818182,5.454545,2.545455,4.727273
L 2.545455,4.727273,2.909091,3.636364
L 2.909091,3.636364,2.909091,2.545455
L 2.909091,2.545455,2.545455,1.454545
L 2.545455,1.454545,1.818182,0.727273
L 1.818182,0.727273,0.363636,0
L 0.363636,6.181818,1.454545,5.818182
L 1.454545,5.818182,2.181818,5.454545
L 2.181818,5.454545,2.909091,4.727273
L 2.909091,4.727273,3.272727,3.636364
L 3.272727,2.545455,2.909091,1.454545
L 2.909091,1.454545,2.181818,0.727273
L 2.181818,0.727273,1.454545,0.363636
L 1.454545,0.363636,0.363636,0
L 6.181818,6.181818,5.090909,5.818182
L 5.090909,5.818182,4.363636,5.454545
L 4.363636,5.454545,3.636364,4.727273
L 3.636364,4.727273,3.272727,3.636364
L 3.272727,2.545455,3.636364,1.454545
L 3.636364,1.454545,4.363636,0.727273
L 4.363636,0.727273,5.090909,0.363636
L 5.090909,0.363636,6.181818,0
L 6.181818,6.181818,4.727273,5.454545
L 4.727273,5.454545,4,4.727273
L 4,4.727273,3.636364,3.636364
L 3.636364,3.636364,3.636364,2.545455
L 3.636364,2.545455,4,1.454545
L 4,1.454545,4.727273,0.727273
L 4.727273,0.727273,6.181818,0
L 0,3.272727,6.545455,3.272727
L 0,2.909091,6.545455,2.909091
#EOF

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

BIN
ruler/ruler-screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

661
ruler/ruler.py Executable file
View file

@ -0,0 +1,661 @@
#!/usr/bin/python
"""
ruler-xx.py G-Code Generator
Copyright (C) <2018> <Andrew Williams> <linuxras at gmail dot com>
based on bazel-11.py and engrave.py -- Thanks for a great example Lawrence!
Copyright (C) <2008> <Lawrence Glaister> <ve7it at shaw dot ca>
based on work by <John Thornton> -- thanks John!
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
To make it a menu item in Ubuntu use the Alacarte Menu Editor and add
the command python YourPathToThisFile/ruler.py
make sure you have made the file executable by right
clicking and selecting properties then Permissions and Execute
To use with LinuxCNC see the instructions at:
https://github.com/linuxcnc/simple-gcode-generators
Version 1.0 intial port from bazel and engrave code
"""
from Tkinter import *
from math import *
import tkFileDialog
import os
import re
import glob
version = '1.0'
fontPath = os.path.dirname(os.path.realpath(__file__))+'/cxf-fonts/'
fontList = [os.path.basename(x) for x in glob.glob(fontPath + '*.cxf')]
fontList = sorted(fontList)
fontfile = ''
IN_AXIS = os.environ.has_key("AXIS_PROGRESS_BAR")
#=======================================================================
# parse function borrowed from engrave.py
# This routine parses the .cxf font file and builds a font dictionary of
# line segment strokes required to cut each character.
# Arcs (only used in some fonts) are converted to a number of line
# segemnts based on the angular length of the arc. Since the idea of
# this font description is to make it support independant x and y scaling,
# we can not use native arcs in the gcode.
#=======================================================================
def parse(file):
font = {}
key = None
num_cmds = 0
line_num = 0
for text in file:
#format for a typical letter (lowercase r):
##comment, with a blank line after it
#
#[r] 3
#L 0,0,0,6
#L 0,6,2,6
#A 2,5,1,0,90
#
line_num += 1
end_char = re.match('^$', text) #blank line
if end_char and key: #save the character to our dictionary
font[key] = Character(key)
font[key].stroke_list = stroke_list
font[key].xmax = xmax
if (num_cmds != cmds_read):
print "(warning: discrepancy in number of commands %s, line %s, %s != %s )" % (fontfile, line_num, num_cmds, cmds_read)
new_cmd = re.match('^\[(.*)\]\s(\d+)', text)
if new_cmd: #new character
key = new_cmd.group(1)
num_cmds = int(new_cmd.group(2)) #for debug
cmds_read = 0
stroke_list = []
xmax, ymax = 0, 0
line_cmd = re.match('^L (.*)', text)
if line_cmd:
cmds_read += 1
coords = line_cmd.group(1)
coords = [float(n) for n in coords.split(',')]
stroke_list += [Line(coords)]
xmax = max(xmax, coords[0], coords[2])
arc_cmd = re.match('^A (.*)', text)
if arc_cmd:
cmds_read += 1
coords = arc_cmd.group(1)
coords = [float(n) for n in coords.split(',')]
xcenter, ycenter, radius, start_angle, end_angle = coords
# since font defn has arcs as ccw, we need some font foo
if ( end_angle < start_angle ):
start_angle -= 360.0
# approximate arc with line seg every 20 degrees
segs = int((end_angle - start_angle) / 20) + 1
angleincr = (end_angle - start_angle)/segs
xstart = cos(start_angle * pi/180) * radius + xcenter
ystart = sin(start_angle * pi/180) * radius + ycenter
angle = start_angle
for i in range(segs):
angle += angleincr
xend = cos(angle * pi/180) * radius + xcenter
yend = sin(angle * pi/180) * radius + ycenter
coords = [xstart,ystart,xend,yend]
stroke_list += [Line(coords)]
xmax = max(xmax, coords[0], coords[2])
ymax = max(ymax, coords[1], coords[3])
xstart = xend
ystart = yend
return font
#=======================================================================
class Character:
def __init__(self, key):
self.key = key
self.stroke_list = []
def __repr__(self):
return "%s" % (self.stroke_list)
def get_xmax(self):
try: return max([s.xmax for s in self.stroke_list[:]])
except ValueError: return 0
def get_ymax(self):
try: return max([s.ymax for s in self.stroke_list[:]])
except ValueError: return 0
#=======================================================================
class Line:
def __init__(self, coords):
self.xstart, self.ystart, self.xend, self.yend = coords
self.xmax = max(self.xstart, self.xend)
self.ymax = max(self.ystart, self.yend)
def __repr__(self):
return "Line([%s, %s, %s, %s])" % (self.xstart, self.ystart, self.xend, self.yend)
#=======================================================================
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.grid()
self.createWidgets()
self.DoIt()
def createWidgets(self):
self.segID = []
self.gcode = []
self.PreviewFrame = Frame(self,bd=5)
self.PreviewFrame.grid(row=0, column=0)
self.PreviewCanvas = Canvas(self.PreviewFrame,width=500, height=300, bg='white', bd='3', relief = 'raised')
self.PreviewCanvas.grid(sticky=N+S+E+W)
self.PreviewCanvas.config(scrollregion=(0,0,10000, 300))
self.PreviewScroll = Scrollbar(self.PreviewFrame, command=self.PreviewCanvas.xview, orient=HORIZONTAL)
self.PreviewCanvas.config(xscrollcommand=self.PreviewScroll.set)
self.PreviewScroll.grid(row=1,column=0, sticky=E+W)
self.XLine = self.PreviewCanvas.create_line(15,150,65,150, fill = 'red')
self.YLine = self.PreviewCanvas.create_line(15,160,15,100, fill = 'green')
self.EntryFrame = Frame(self,bd=5)
self.EntryFrame.grid(row=0, column=1)
self.st00 = Label(self.EntryFrame, text='Engrave a Ruler\n')
self.st00.grid(row=0, column=0, columnspan=2)
self.st01 = Label(self.EntryFrame,text='Units')
self.st01.grid(row=1,column=0)
self.UnitVar = IntVar()
self.UnitVar.set(1)
self.UnitFrame = Frame(self.EntryFrame,bd=5)
self.UnitFrame.grid(row=1, column=1)
self.UnitIn = Radiobutton(self.UnitFrame, text='Inch',value=1,variable=self.UnitVar,indicatoron=0,width=6,command=self.UnitSelect)
self.UnitIn.grid(row=1, column=0)
self.UnitMM = Radiobutton(self.UnitFrame, text='MM',value=2,variable=self.UnitVar,indicatoron=0,width=6,command=self.UnitSelect)
self.UnitMM.grid(row=1, column=1)
self.st02 = Label(self.EntryFrame, text='Preamble')
self.st02.grid(row=2, column=0)
self.PreambleVar = StringVar()
self.PreambleVar.set('G17 G20 G90 G64 P0.003 M3 S3000 M7 F50')
self.Preamble = Entry(self.EntryFrame, textvariable=self.PreambleVar ,width=15)
self.Preamble.grid(row=2, column=1)
self.NormalColor = self.Preamble.cget('bg')
self.st03 = Label(self.EntryFrame, text='Length')
self.st03.grid(row=3, column=0)
self.RulerLengthVar = StringVar()
self.RulerLengthVar.set('15.0')
self.RulerLength = Entry(self.EntryFrame, textvariable=self.RulerLengthVar ,width=15)
self.RulerLength.grid(row=3, column=1)
self.st04 = Label(self.EntryFrame, text='Major Stripe Length')
self.st04.grid(row=4, column=0)
self.MajorStripeLengthVar = StringVar()
self.MajorStripeLengthVar.set('0.500')
self.MajorStripeLength = Entry(self.EntryFrame, textvariable=self.MajorStripeLengthVar ,width=15)
self.MajorStripeLength.grid(row=4, column=1)
self.st05 = Label(self.EntryFrame, text='Half Stripe Length')
self.st05.grid(row=5, column=0)
self.HalfStripeLengthVar = StringVar()
self.HalfStripeLengthVar.set('0.375')
self.HalfStripeLength = Entry(self.EntryFrame, textvariable=self.HalfStripeLengthVar ,width=15)
self.HalfStripeLength.grid(row=5, column=1)
self.st06 = Label(self.EntryFrame, text='Minor Stripe Length')
self.st06.grid(row=6, column=0)
self.MinorStripeLengthVar = StringVar()
self.MinorStripeLengthVar.set('0.125')
self.MinorStripeLength = Entry(self.EntryFrame, textvariable=self.MinorStripeLengthVar ,width=15)
self.MinorStripeLength.grid(row=6, column=1)
self.st07 = Label(self.EntryFrame, text='Start X')
self.st07.grid(row=7, column=0)
self.StartXVar = StringVar()
self.StartXVar.set('0')
self.StartX = Entry(self.EntryFrame, textvariable=self.StartXVar ,width=15)
self.StartX.grid(row=7, column=1)
self.st08 = Label(self.EntryFrame, text='Start Y')
self.st08.grid(row=8, column=0)
self.StartYVar = StringVar()
self.StartYVar.set('0')
self.StartY = Entry(self.EntryFrame, textvariable=self.StartYVar ,width=15)
self.StartY.grid(row=8, column=1)
self.st09 = Label(self.EntryFrame, text='Stripes Every')
self.st09.grid(row=9, column=0)
self.RulerStripesEveryVar = StringVar()
self.RulerStripesEveryVar.set('0.125')
self.RulerStripesEvery = Entry(self.EntryFrame, textvariable=self.RulerStripesEveryVar ,width=15)
self.RulerStripesEvery.grid(row=9, column=1)
self.st10 = Label(self.EntryFrame, text='Major Stripe Every')
self.st10.grid(row=10, column=0)
self.MajorStripeEveryVar = StringVar()
self.MajorStripeEveryVar.set('8')
self.MajorStripeEvery = Entry(self.EntryFrame, textvariable=self.MajorStripeEveryVar ,width=15)
self.MajorStripeEvery.grid(row=10, column=1)
self.st11 = Label(self.EntryFrame, text='Engraving Depth')
self.st11.grid(row=11, column=0)
self.DepthVar = StringVar()
self.DepthVar.set('-0.010')
self.Depth = Entry(self.EntryFrame, textvariable=self.DepthVar ,width=15)
self.Depth.grid(row=11, column=1)
self.st12 = Label(self.EntryFrame, text='Safe Z')
self.st12.grid(row=12, column=0)
self.SafeZVar = StringVar()
self.SafeZVar.set('+0.125')
self.SafeZ = Entry(self.EntryFrame, width=15, textvariable = self.SafeZVar)
self.SafeZ.grid(row=12, column=1)
self.st13 = Label(self.EntryFrame, text='Postamble')
self.st13.grid(row=13, column=0)
self.PostambleVar = StringVar()
self.PostambleVar.set('M5 M9 M2')
self.Postamble = Entry(self.EntryFrame, textvariable=self.PostambleVar ,width=15)
self.Postamble.grid(row=13, column=1)
self.st14 = Label(self.EntryFrame, text='Label Font')
self.st14.grid(row=14, column=0)
self.FontVar = StringVar()
self.FontVar.set(fontList[14])
fontfile = fontList[14]
self.Font = OptionMenu(self.EntryFrame, self.FontVar, *fontList ,command=self.ChooseFont)
self.Font.grid(row=14, column=1)
self.st15 = Label(self.EntryFrame, text='Label Offset')
self.st15.grid(row=15, column=0)
self.OffsetFrame = Frame(self.EntryFrame,bd=5)
self.OffsetFrame.grid(row=15, column=1)
self.st15_1 = Label(self.OffsetFrame, text='X')
self.st15_1.grid(row=0, column=0)
self.FontXOffsetVar = StringVar()
self.FontXOffsetVar.set('-0.125')
self.FontXOffset = Entry(self.OffsetFrame, textvariable=self.FontXOffsetVar ,width=5)
self.FontXOffset.grid(row=0, column=1)
self.st15_2 = Label(self.OffsetFrame, text='Y')
self.st15_2.grid(row=0, column=3)
self.FontYOffsetVar = StringVar()
self.FontYOffsetVar.set('+0.0625')
self.FontYOffset = Entry(self.OffsetFrame, textvariable=self.FontYOffsetVar ,width=5)
self.FontYOffset.grid(row=0, column=4)
self.st16 = Label(self.EntryFrame, text='Label Scale')
self.st16.grid(row=16, column=0)
self.ScaleFrame = Frame(self.EntryFrame,bd=5)
self.ScaleFrame.grid(row=16, column=1)
self.st16_1 = Label(self.ScaleFrame, text='X')
self.st16_1.grid(row=0, column=0)
self.XScaleVar = StringVar()
self.XScaleVar.set('0.04')
self.XScale = Entry(self.ScaleFrame, textvariable=self.XScaleVar ,width=5)
self.XScale.grid(row=0, column=1)
self.st16_2 = Label(self.ScaleFrame, text='Y')
self.st16_2.grid(row=0, column=3)
self.YScaleVar = StringVar()
self.YScaleVar.set('0.04')
self.YScale = Entry(self.ScaleFrame, textvariable=self.YScaleVar ,width=5)
self.YScale.grid(row=0, column=4)
self.st17 = Label(self.EntryFrame, text='Stripe Position')
self.st17.grid(row=17, column=0)
self.BaselineFrame = Frame(self.EntryFrame,bd=5)
self.BaselineFrame.grid(row=17, column=1)
BaselineOptions=[('Above',0),('Midway',1),('Below',2)]
self.BaselineVar = IntVar()
for text, value in BaselineOptions:
Radiobutton(self.BaselineFrame, text=text,value=value,
variable=self.BaselineVar,indicatoron=0,width=6,command=self.BaselineSelect)\
.grid(row=0, column=value)
self.BaselineVar.set(0)
self.DoItButton = Button(self.EntryFrame, text='Recalculate', command=self.DoIt)
self.DoItButton.grid(row=18, column=0)
self.ToClipboard = Button(self.EntryFrame, text='To Clipboard', command=self.CopyClipboard)
self.ToClipboard.grid(row=18, column=1)
if IN_AXIS:
self.quitButton = Button(self, text='Write to AXIS and Quit',command=self.WriteToAxis)
else:
self.quitButton = Button(self, text='Quit', command=self.quit)
self.quitButton.grid(row=13, column=0, sticky=S)
def DoIt(self):
# range check inputs for gross errors
try:
self.Font.configure( bg = self.NormalColor )
file = open(fontPath+self.FontVar.get())
except:
print self.FontVar.get()
self.Font.configure( bg = 'red' )
return
self.MajorStripeLength.configure( bg = self.NormalColor )
if float(self.MajorStripeLength.get()) <= 0.0:
self.MajorStripeLength.configure( bg = 'red' )
return
self.MinorStripeLength.configure( bg = self.NormalColor )
if float(self.MinorStripeLength.get()) <= 0.0:
self.MinorStripeLength.configure( bg = 'red' )
return
self.RulerStripesEvery.configure( bg = self.NormalColor )
if float(self.RulerStripesEvery.get()) <= 0.0:
self.RulerStripesEvery.configure( bg = 'red' )
return
self.SafeZ.configure( bg = self.NormalColor )
if float(self.SafeZ.get()) <= 0.0:
self.SafeZ.configure( bg = 'red' )
return
self.RulerLength.configure( bg = self.NormalColor )
if float(self.RulerLength.get()) <= 0.0 or float(self.RulerLength.get()) <= float(self.RulerStripesEvery.get()):
self.RulerLength.configure( bg = 'red' )
return
# erase old segs/display objects as needed
for seg in self.segID:
self.PreviewCanvas.delete(seg)
self.segID = []
# erase old gcode as needed
self.gcode = []
# temps used for ruler calcs
Unit = int(self.UnitVar.get())
SafeZ = float(self.SafeZVar.get())
StartX = float(self.StartXVar.get())
StartY = float(self.StartYVar.get())
Length = float(self.RulerLengthVar.get())
MajorSL = float(self.MajorStripeLengthVar.get())
HalfSL = float(self.HalfStripeLengthVar.get())
MinorSL = float(self.MinorStripeLengthVar.get())
Depth = float(self.DepthVar.get())
Every = float(self.RulerStripesEveryVar.get())
MEvery = float(self.MajorStripeEveryVar.get())
HEvery = float(MEvery / 2)
BaseL = int(self.BaselineVar.get())
FontX = float(self.FontXOffsetVar.get())
FontY = float(self.FontYOffsetVar.get())
NumTicks = int((Length / Every)+1)
Scale = MajorSL * 2.0 * 1.2 / 200.0 # nominal inches(mm) / pixel for plotting
Angle = 0.0
XScale = float(self.XScaleVar.get()) #0.04
YScale = float(self.YScaleVar.get()) #0.04
CSpaceP = 25.0
WSpaceP = 100.0
MajorCT = 0
if( Unit == 1 ):
UnitS = 'inches'
else:
UnitS = 'millimeters'
self.gcode.append('( Code generated by ruler-%s.py widget )' %(version))
self.gcode.append('( by Andrew Williams - 2018 )')
self.gcode.append('( Engraving a %d tick, %.3f %s long ruler )' %(NumTicks, Length, UnitS))
self.gcode.append('#1001 = %.4f ( Safe Z )' %(SafeZ))
self.gcode.append('#1002 = %.4f ( Engraving Depth Z )' %(Depth))
self.gcode.append('#1003 = %.4f ( Start X )' %(StartX))
self.gcode.append('#1004 = %.4f ( StartY )' %(StartY))
self.gcode.append('#1005 = %.4f ( X Scale )' %(XScale))
self.gcode.append('#1006 = %.4f ( Y Scale )' %(YScale))
self.gcode.append('#1007 = %.4f ( Angle )' %(Angle))
self.gcode.append("(===================================================================)")
self.gcode.append("(Subroutine to handle x,y rotation about 0,0)")
self.gcode.append("(input x,y get scaled, rotated then offset )")
self.gcode.append("( [#1 = 0 or 1 for a G0 or G1 type of move], [#2=x], [#3=y], [#4=realx], [#5=realy])")
self.gcode.append("o9000 sub")
self.gcode.append(" #28 = [#2 * #1005] ( scaled x )")
self.gcode.append(" #29 = [#3 * #1006] ( scaled y )")
self.gcode.append(" #30 = [SQRT[#28 * #28 + #29 * #29 ]] ( dist from 0 to x,y )")
self.gcode.append(" #31 = [ATAN[#29]/[#28]] ( direction to x,y )")
self.gcode.append(" #32 = [#30 * cos[#31 + #1007]] ( rotated x )")
self.gcode.append(" #33 = [#30 * sin[#31 + #1007]] ( rotated y )")
self.gcode.append(" #<realx> = #4")
self.gcode.append(" #<realy> = #5")
self.gcode.append(" o9010 if [#1 LT 0.5]" )
self.gcode.append(" G00 X[#32+#<realx>] Y[#33+#<realy>]")
self.gcode.append(" o9010 else")
self.gcode.append(" G01 X[#32+#<realx>] Y[#33+#<realy>]")
self.gcode.append(" o9010 endif")
self.gcode.append("o9000 endsub")
self.gcode.append("(===================================================================)")
self.gcode.append(self.PreambleVar.get())
self.gcode.append( 'G0 Z#1001')
font = parse(file) # build stroke lists from font file
file.close()
font_line_height = max(font[key].get_ymax() for key in font)
font_word_space = max(font[key].get_xmax() for key in font) * (WSpaceP/100.0)
font_char_space = font_word_space * (CSpaceP /100.0)
for tick in range(0,NumTicks):
# calculate co-ordinates of inner point on tick mark
x1 = StartX + (Every * tick)
y1 = StartY
if ( (tick % MEvery) == 0 ):
y2 = MajorSL
if ( tick != 0 ):
MajorCT += 1
elif ( (tick % HEvery) == 0 and HalfSL != 0 ):
y2 = HalfSL
else:
y2 = MinorSL
if (BaseL == 1):
y1 = (y1 - (y2/2))
y2 = (y2/2)
elif (BaseL == 2):
y2 = -y2
# move to inner radius of tick mark
self.gcode.append( 'G0 X[%.4f+#1003] Y[%.4f+#1004]' %(x1,y1))
#self.gcode.append( 'G0 X[%.4f+#1003] Y[#1004]' %(x1))
# set to cutting height
self.gcode.append( 'G1 Z#1002')
# cut to the length of tick mark
self.gcode.append( 'G1 Y[%.4f+#1004]' %(y2))
# raise engraver
self.gcode.append( 'G0 Z#1001')
self.segID.append( self.PreviewCanvas.create_line(
15+x1/Scale, 150-y1/Scale,15+x1/Scale, 150-(y2+StartY)/Scale, fill = 'black', width = 2))
xoffset = 0 # distance along raw string in font units
oldx = oldy = -99990.0 # last engraver position
if ((tick % MEvery) == 0 and tick != 0): #Write the number for this major line
String = str(MajorCT)
RealX = float((StartX + x1) + FontX)
RealY = float((StartY + y2) + FontY)
#if (MajorCT >= 10 and MajorCT < 100):
# RealX -= Every
#elif (MajorCT >= 100):
# RealX -= (Every * 2)
#if (BaseL == 2):
# RealY -= Every
#self.segID.append( self.PreviewCanvas.create_text(15+(x1-Every)/Scale, 150-(y2+StartY)/Scale, fill = 'black', width = 1, text = String))
for char in String:
if char == ' ':
xoffset += font_word_space
continue
try:
self.gcode.append("(character '%s')" % self.sanitize(char))
first_stroke = True
for stroke in font[char].stroke_list:
dx = oldx - stroke.xstart
dy = oldy - stroke.ystart
dist = sqrt(dx*dx + dy*dy)
x1 = stroke.xstart + xoffset
y1 = stroke.ystart
# check and see if we need to move to a new discontinuous start point
if (dist > 0.001) or first_stroke:
first_stroke = False
#lift engraver, rapid to start of stroke, drop tool
self.gcode.append("G0 Z#1001")
self.gcode.append('o9000 call [0] [%.4f] [%.4f] [%.4f] [%.4f]' %(x1,y1,RealX,RealY))
self.gcode.append("G1 Z#1002")
x2 = stroke.xend + xoffset
y2 = stroke.yend
self.gcode.append('o9000 call [1] [%.4f] [%.4f] [%.4f] [%.4f]' %(x2,y2,RealX,RealY))
oldx, oldy = stroke.xend, stroke.yend
# since rotation and scaling is done in gcode, we need equivalent for plotting
# note that plot shows true shape and orientation of chrs, but starting x,y
# is always at the center of the preview window (offsets not displayed)
x1,y1 = self.Rotn(x1,y1,XScale,YScale,Angle)
x2,y2 = self.Rotn(x2,y2,XScale,YScale,Angle)
self.segID.append( self.PreviewCanvas.create_line(
15+(x1+RealX)/Scale, 150-(y1+RealY)/Scale,15+(x2+RealX)/Scale, 150-(y2+RealY)/Scale,
fill = 'black', width = 1))
# move over for next character
char_width = font[char].get_xmax()
xoffset += font_char_space + char_width
except KeyError:
self.gcode.append("(warning: character '0x%02X' not found in font defn)" % ord(char))
# raise engraver
self.gcode.append( 'G0 Z#1001')
self.gcode.append("") # blank line after every char block
# spot drill the center point of the bezel
#self.gcode.append( 'G0 X#1003 Y#1004')
#self.gcode.append( 'G1 Z#1002 G4 P0.5')
self.gcode.append( 'G0 Z#1001')
# finish up with icing
self.gcode.append(self.PostambleVar.get())
def ChooseFont(self, value):
self.FontVar.set(value)
fontfile = value
self.DoIt()
def UnitSelect(self):
selection = int(self.UnitVar.get())
if( selection == 1): #Setup for default inches or do I convert current by 25.4
self.PreambleVar.set('G17 G20 G90 G64 P0.003 M3 S3000 M7 F50')
self.RulerLengthVar.set('15')
self.MajorStripeLengthVar.set('0.500')
self.HalfStripeLengthVar.set('0.375')
self.MinorStripeLengthVar.set('.125')
self.RulerStripesEveryVar.set('0.125')
self.MajorStripeEveryVar.set('8')
self.DepthVar.set('-0.010')
self.SafeZVar.set('+0.125')
self.FontXOffsetVar.set('-0.125')
self.FontYOffsetVar.set('+0.0625')
self.XScaleVar.set('0.04')
self.YScaleVar.set('0.04')
self.DoIt()
else: #Setup for MM ditto above
self.PreambleVar.set('G17 G21 G90 G64 P0.003 M3 S3000 M7 F150')
self.RulerLengthVar.set('400')
self.MajorStripeLengthVar.set('8.0')
self.HalfStripeLengthVar.set('5.0')
self.MinorStripeLengthVar.set('3.0')
self.RulerStripesEveryVar.set('1.0')
self.MajorStripeEveryVar.set('10')
self.DepthVar.set('-1.0')
self.SafeZVar.set('+3.0')
self.FontXOffsetVar.set('-1.7')
self.FontYOffsetVar.set('0.1')
self.XScaleVar.set('0.4')
self.YScaleVar.set('0.4')
self.DoIt()
def BaselineSelect(self):
selection = int(self.BaselineVar.get())
#Just call DoIt here to recalculate all
self.DoIt()
def CopyClipboard(self):
self.clipboard_clear()
for line in self.gcode:
self.clipboard_append(line+'\n')
def WriteToAxis(self):
for line in self.gcode:
sys.stdout.write(line+'\n')
self.quit()
#=======================================================================
# routine takes an x and a y in raw internal format
# x and y scales are applied and then x,y pt is rotated by angle
# Returns new x,y tuple
def Rotn(self,x,y,xscale,yscale,angle):
Deg2Rad = 2.0 * pi / 360.0
xx = x * xscale
yy = y * yscale
rad = sqrt(xx * xx + yy * yy)
theta = atan2(yy,xx)
newx=rad * cos(theta + angle*Deg2Rad)
newy=rad * sin(theta + angle*Deg2Rad)
return newx,newy
#=======================================================================
def sanitize(self,string):
retval = ''
good=' ~!@#$%^&*_+=-{}[]|\:;"<>,./?'
for char in string:
if char.isalnum() or good.find(char) != -1:
retval += char
else: retval += ( ' 0x%02X ' %ord(char))
return retval
app = Application()
app.master.title("Ruler Generator %s by Andrew Williams " %(version))
app.mainloop()