This Postscript code will produce an encoder disk sutable for a rotational motion sensor when used with a photodetector.
Areas in the code can be changed to modify the characteristics of the disk that is generated. Look for the comments starting with "%".
Also:
%!PS-Adobe-2.0 %%Title: Encoder Disk %%Creator: (C) Ricardo Seixas - rseixas@pobox.com %%CreationDate: May 12 2000 %%EndComments % You can freely distribute and use this file as long as you maintain the original copyright % This file is provided as is and there's NO WARRANTY % Use it at your own risk /mm {2.8346 mul} def /pi 3.1415926536 def % % %Here you can change the encoder characteristics /slots 45 def /external_diameter 50 mm def /internal_diameter external_diameter 10 mm sub def %/internal_diameter 45 mm def /text ( Ricardo Seixas 2000 - rseixas@pobox.com - Encoder Disc ) def % don't remove the parentheses when you change text!!! /text_diameter internal_diameter 2 mm sub def %/text_diameter 43 mm def /font_size external_diameter 20 div def %/font_size 6 def /font_type (Courier) def %/internal_circle 38 mm def /internal_circle internal_diameter font_size mm sub def % % % %Look at the end of the file for positioning /angle {360 slots div} def /trace_width {internal_diameter pi mul slots div 2 div} def /center_hole { %Cross -11 mm 0 moveto 22 mm 0 rlineto 0.2 setlinewidth stroke 0 -11 mm moveto 0 22 mm rlineto 0.2 setlinewidth stroke %Bulls Eye 6 mm 0 0 6 mm 2 div 0 360 arc .2 setlinewidth stroke %Bulls Eye 8 mm 0 0 8 mm 2 div 0 360 arc .2 setlinewidth stroke %Bulls Eye 10 mm 0 0 10 mm 2 div 0 360 arc .2 setlinewidth stroke %Bulls Eye 20 mm 0 0 20 mm 2 div 0 360 arc .2 setlinewidth stroke %Draw internal circle %Comment the two lines below if you don't want internal circle before font 0 0 internal_circle 2 div 0 360 arc .05 setlinewidth stroke %Draw internal_diameter circle %Comment the two lines below if you don't want internal circle after font 0 0 internal_diameter 2 div 0 360 arc .05 setlinewidth stroke %Draw External Circle %Comment the two lines below if you don't want external line 0 0 external_diameter 2 div 0 360 arc .05 mm setlinewidth stroke } def %Don't mess around here unless you know what you're doing /Draw_Disc { 0 0 moveto gsave angle 2 div rotate 0 angle 360 { gsave rotate internal_diameter 2 div 0 rmoveto external_diameter internal_diameter sub 2 div 0 rlineto trace_width setlinewidth stroke grestore } for grestore center_hole } def % Text routine borrowed from Adobe Blue Book Program 10, on page 167 /insidecircletext { circtextdict begin /radius exch def /centerangle exch def /ptsize exch def /str exch def /xradius radius ptsize 3 div sub def gsave centerangle str findhalfangle sub rotate str { /charcode exch def ( ) dup 0 charcode put insideplacechar } forall grestore end } def /circtextdict 16 dict def circtextdict begin /findhalfangle { stringwidth pop 2 div 2 xradius mul pi mul div 360 mul } def /insideplacechar { /char exch def /halfangle char findhalfangle def gsave halfangle rotate radius 0 translate 90 rotate char stringwidth pop 2 div neg 0 moveto char show grestore halfangle 2 mul rotate } def end /font_type findfont font_size scalefont setfont /Encoder_Text { text 18 -90 text_diameter 2 div insidecircletext } def /Draw_Encoder { Draw_Disc %Comment next line to remove text Encoder_Text } def %Here you can change where you want to put the disk on the sheet %TODO automagicaly fill a A4 or A3 sheet %automatic placement external_diameter 2 div 15 mm add external_diameter 2 div 15 mm add translate Draw_Encoder %manual placement, you can put more than one encoder on the same sheet %30 mm 30 mm translate Draw_Encoder %52 mm 0 mm translate Draw_Encoder showpage
Interested:
Comments: