Fix units to mm
This commit is contained in:
parent
c0a9d42abd
commit
0b963f30a1
|
@ -322,7 +322,7 @@ class Gears():
|
||||||
|
|
||||||
self.OptionParser.add_option("-s", "--system",
|
self.OptionParser.add_option("-s", "--system",
|
||||||
action="store", type="string",
|
action="store", type="string",
|
||||||
dest="system", default='CP',
|
dest="system", default='MM',
|
||||||
help="Select system: 'CP' (Cyclic Pitch (default)), 'DP' (Diametral Pitch), 'MM' (Metric Module)")
|
help="Select system: 'CP' (Cyclic Pitch (default)), 'DP' (Diametral Pitch), 'MM' (Metric Module)")
|
||||||
|
|
||||||
self.OptionParser.add_option("-d", "--dimension",
|
self.OptionParser.add_option("-d", "--dimension",
|
||||||
|
@ -457,38 +457,20 @@ class Gears():
|
||||||
line = inkex.etree.SubElement(node, inkex.addNS('text','svg'), line_attribs)
|
line = inkex.etree.SubElement(node, inkex.addNS('text','svg'), line_attribs)
|
||||||
line.text = text
|
line.text = text
|
||||||
|
|
||||||
|
|
||||||
def calc_unit_factor(self):
|
|
||||||
""" return the scale factor for all dimension conversions.
|
|
||||||
- The document units are always irrelevant as
|
|
||||||
everything in inkscape is expected to be in 90dpi pixel units
|
|
||||||
"""
|
|
||||||
# namedView = self.document.getroot().find(inkex.addNS('namedview', 'sodipodi'))
|
|
||||||
# doc_units = uutounit(self, 1.0, namedView.get(inkex.addNS('document-units', 'inkscape')))
|
|
||||||
dialog_units = uutounit(self, 1.0, self.options.units)
|
|
||||||
unit_factor = 1.0 / dialog_units
|
|
||||||
return unit_factor
|
|
||||||
|
|
||||||
def calc_circular_pitch(self):
|
def calc_circular_pitch(self):
|
||||||
""" We use math based on circular pitch.
|
""" We use math based on circular pitch.
|
||||||
Expressed in inkscape units which is 90dpi 'pixel' units.
|
|
||||||
"""
|
"""
|
||||||
dimension = self.options.dimension
|
dimension = self.options.dimension
|
||||||
# print >> self.tty, "unit_factor=%s, doc_units=%s, dialog_units=%s (%s), system=%s" % (unit_factor, doc_units, dialog_units, self.options.units, self.options.system)
|
|
||||||
if self.options.system == 'CP': # circular pitch
|
if self.options.system == 'CP': # circular pitch
|
||||||
circular_pitch = dimension
|
circular_pitch = dimension * 25.4
|
||||||
elif self.options.system == 'DP': # diametral pitch
|
elif self.options.system == 'DP': # diametral pitch
|
||||||
circular_pitch = pi / dimension
|
circular_pitch = pi * 25.4 / dimension
|
||||||
elif self.options.system == 'MM': # module (metric)
|
elif self.options.system == 'MM': # module (metric)
|
||||||
circular_pitch = dimension * pi / 25.4
|
circular_pitch = dimension
|
||||||
else:
|
else:
|
||||||
inkex.debug("unknown system '%s', try CP, DP, MM" % self.options.system)
|
raise ValueError("unknown system '%s', try CP, DP, MM" % self.options.system)
|
||||||
# circular_pitch defines the size in inches.
|
# circular_pitch defines the size in mm
|
||||||
# We divide the internal inch factor (px = 90dpi), to remove the inch
|
return circular_pitch
|
||||||
# unit.
|
|
||||||
# The internal inkscape unit is always px,
|
|
||||||
# it is independent of the doc_units!
|
|
||||||
return circular_pitch # XXX / uutounit(self, 1.0, 'in')
|
|
||||||
|
|
||||||
def generate_spokes(self, root_radius, spoke_width, spoke_count, mount_radius, mount_hole,
|
def generate_spokes(self, root_radius, spoke_width, spoke_count, mount_radius, mount_hole,
|
||||||
unit_factor, unit_label):
|
unit_factor, unit_label):
|
||||||
|
@ -573,7 +555,7 @@ class Gears():
|
||||||
#
|
#
|
||||||
warnings = [] # list of extra messages to be shown in annotations
|
warnings = [] # list of extra messages to be shown in annotations
|
||||||
# calculate unit factor for units defined in dialog.
|
# calculate unit factor for units defined in dialog.
|
||||||
unit_factor = 1 # XXX self.calc_unit_factor()
|
unit_factor = 1
|
||||||
# User defined options
|
# User defined options
|
||||||
teeth = self.options.teeth
|
teeth = self.options.teeth
|
||||||
# Angle of tangent to tooth at circular pitch wrt radial line.
|
# Angle of tangent to tooth at circular pitch wrt radial line.
|
||||||
|
@ -740,7 +722,7 @@ class Gears():
|
||||||
notes.extend(warnings)
|
notes.extend(warnings)
|
||||||
#notes.append('Document (%s) scale conversion = %2.4f' % (self.document.getroot().find(inkex.addNS('namedview', 'sodipodi')).get(inkex.addNS('document-units', 'inkscape')), unit_factor))
|
#notes.append('Document (%s) scale conversion = %2.4f' % (self.document.getroot().find(inkex.addNS('namedview', 'sodipodi')).get(inkex.addNS('document-units', 'inkscape')), unit_factor))
|
||||||
notes.extend(['Teeth: %d CP: %2.4f(%s) ' % (teeth, pitch / unit_factor, self.options.units),
|
notes.extend(['Teeth: %d CP: %2.4f(%s) ' % (teeth, pitch / unit_factor, self.options.units),
|
||||||
'DP: %2.3f Module: %2.4f' % (pi / pitch * unit_factor, pitch / pi * 25.4),
|
'DP: %2.3f Module: %2.4f(mm)' % (25.4 * pi / pitch, pitch),
|
||||||
'Pressure Angle: %2.2f degrees' % (angle),
|
'Pressure Angle: %2.2f degrees' % (angle),
|
||||||
'Pitch diameter: %2.3f %s' % (pitch_radius * 2 / unit_factor, self.options.units),
|
'Pitch diameter: %2.3f %s' % (pitch_radius * 2 / unit_factor, self.options.units),
|
||||||
'Outer diameter: %2.3f %s' % (outer_dia / unit_factor, self.options.units),
|
'Outer diameter: %2.3f %s' % (outer_dia / unit_factor, self.options.units),
|
||||||
|
@ -754,7 +736,8 @@ class Gears():
|
||||||
# position above
|
# position above
|
||||||
y = - outer_radius - (len(notes)+1) * text_height * 1.2
|
y = - outer_radius - (len(notes)+1) * text_height * 1.2
|
||||||
for note in notes:
|
for note in notes:
|
||||||
self.add_text(g, note, [0,y], text_height)
|
#self.add_text(g, note, [0,y], text_height)
|
||||||
|
self.boxes.text(note, -outer_radius, y)
|
||||||
y += text_height * 1.2
|
y += text_height * 1.2
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Reference in New Issue