What's new

Script for generating and saving Metric Washers

oldfox

Alibre Super User
This script will allow you to select a washer size in the Mxx Series, from M2 through M20. Instructions are in the
script. If you have any problems or questions, please ask me in this forum. Also coming soon will be a script
for Metric nuts and screws. Again, M2 through M20.

Dimensions are correct for a standard washer. However they are intended for "EYE CANDY" only.

Thanks go to Stefan, aka IDSLK for the script help he offered. Thanks Stefan.

Scripts for Hex Nuts and Screws to follow soon. :D

**************************************************************************************************************

Code:
# Author:  C. Line aka OLDFOX with much appreciated help and guidance from Stefan aka IDSLK (thanks Stefan)
# Version: 1.0
# Date:    23 May 2019

# This script will generate a metric flat washer in the range of M2 thru M20. No standards used. It's only eye candy.

#***************************************************************************************
#                                                                                      *
#                                   INSTRUCTIONS                                       *
#                                                                                      *
#  1. Change SAVE option by commenting or uncommenting lines 126, 127 and/or 128       *
#     126 will save to a "HARDWARE" subfolder of the main project folder               *
#     127 will save to a library subfolder on the desktop (use your own USERNAME       *
#     128 will allow you to BROWSE for a folder of your choice                         *
#  2. RUN this script. Right clicking on the script name will open a menu              *
#  3. Select washer size using the dropdown and then click APPLY and then click CLOSE  *
#  4. That's it. The washer is made and saved. For more nuts, just RUN script again    *
#                                                                                      *
#***************************************************************************************

#**********************************************************************************************************
def SaveLocation():
   Options = []
   Options.append(['Choose Folder', WindowsInputTypes.Folder, 'Folder Path here'])
   Values = Win.OptionsDialog('Save Location', Options)
   if Values == None:
      sys.exit('User cancelled')
   global OutputFolder
   OutputFolder = Values[0]

#**********************************************************************************************************
def FlatWasher():
   global Size
   global Washer
 
   Body = Washer.AddSketch("Body", Washer.YZPlane)
   Body.AddCircle(0.0, 0.0, InsideDiameter, False)
   Body.AddCircle(0.0, 0.0, OutsideDiameter, False)
   Washer.AddExtrudeBoss('Washer', Body, Thickness, False)
 
#****************************************************************************************
#*                                      Main                                            *
#****************************************************************************************

Units.Current = UnitTypes.Millimeters
DefaultSize = 'None'
Win = Windows()
global Size
global Washer

MetricSizes = ['None', 'M2', 'M2.5', 'M3', 'M3.5', 'M4', 'M5', 'M6', 'M8', 'M10', 'M12', 'M14', 'M16', 'M20']

def InputChanged(Index, Value):
   if Index == 0:
      Size = MetricSizes[Value]
#      print Size

def SelectionMade(Values):
   global Size
   Size = MetricSizes[Values[0]]
   try:
      # if a selection was made the Size will be valid
#      print Size
   except:
      # if 'close' is choosen and no selection was made, set the value of 'Size' to the Value of 'DefaultSize'
      Size = DefaultSize

   if Size == 'None':
      Choice = 0
      print 'your Choice was invalid...'
      return
   if Size == 'M2':
      Choice = 1
   elif Size == 'M2.5':
      Choice = 2
   elif Size == 'M3':
      Choice = 3
   elif Size == 'M3.5':
      Choice = 4
   elif Size == 'M4':
      Choice = 5
   elif Size == 'M5':
      Choice = 6
   elif Size == 'M6':
      Choice = 7
   elif Size == 'M8':
      Choice = 8
   elif Size == 'M10':
      Choice = 9
   elif Size == 'M12':
      Choice = 10
   elif Size == 'M14':
      Choice = 11
   elif Size == 'M16':
      Choice = 12
   elif Size == 'M20':
      Choice = 13

   MetricSizeData = []#      0      1      2     3
   MetricSizeData.append (['None',  0,    0.0, 0.00])
   MetricSizeData.append (['M2',   2.64,  6.0, 0.90])
   MetricSizeData.append (['M2.5', 3.14,  8.0, 0.90])
   MetricSizeData.append (['M3',   3.68, 10.0, 1.20])
   MetricSizeData.append (['M3.5', 4.18, 10.0, 1.40])
   MetricSizeData.append (['M4',   4.88, 12.0, 1.40])
   MetricSizeData.append (['M5',   5.78, 15.0, 1.75])
   MetricSizeData.append (['M6',   6.87, 18.8, 1.75])
   MetricSizeData.append (['M8',   9.12, 25.4, 2.30])
   MetricSizeData.append (['M10', 11.12, 28.0, 2.80])
   MetricSizeData.append (['M12', 13.57, 34.0, 3.50])
   MetricSizeData.append (['M14', 15.52, 39.0, 3.50])
   MetricSizeData.append (['M16', 17.52, 44.0, 4.00])
   MetricSizeData.append (['M20', 22.32, 50.0, 4.60])

   global Size
   global InsideDiameter
   global OutsideDiameter
   global Thickness

   Size = MetricSizeData[Choice][0]
   InsideDiameter = MetricSizeData[Choice][1]
   OutsideDiameter = MetricSizeData[Choice][2]
   Thickness = MetricSizeData[Choice][3]

#OutputFolder = 'D:/Alibre/Projects/Engines/<Engine Name>/Hardware'     #Use your own Engine Name
#OutputFolder = 'C:/Users/<UserName>/Desktop/Flat Washers'     #Use your own UserName
#SaveLocation()      # This option will allow SELECTING your own path

Options = []
Options.append(['Size', WindowsInputTypes.StringList, MetricSizes, DefaultSize])
DialogWidth = 200
Values = Win.UtilityDialog('Metric Washer Sizes', 'Apply', SelectionMade, InputChanged, Options, DialogWidth)

Washer = Part("%s Flat Washer" % Size)

FlatWasher()

Washer.Save(OutputFolder)
Washer.Close()
 

Attachments

  • Metric Series Washers V1.0 5-11-2019.py
    5.2 KB · Views: 9
Oldfox -- As somebody who has been ceating Part Libraries since the late 1970's I wonder why you do not merely apply Equation Editor Values to the Component Part Files you wish to create and then store them in a (if you will) Alibre Standard Parts directory. A simple spreadsheet index with Hyperlinkks to each particular Part file makes selection of said Part quick and simple. Are you washers in DIN, British Standard, Japanese, or American forms? {Irrational minds want to know.]
 

idslk

Alibre Super User
Hello Chris,

well done including language independence! and thank you for the flowers it was a pleasure for me.
One thing, i think you have "polished" the script befor you posted it...
If you you use try: you have to have anything to try inside...
There was a print command which is out commented.
If you do this, you can add a simple pass instead like:
Code:
   try:
      # if a selection was made the Size will be valid
      pass #      print Size
   except:

Keep on going for more useful scripts!:)

Regards and have a nice weekend
Stefan
 

oldfox

Alibre Super User
Hi Stefan,

Thanks. And I most certainly "polished" it before I posted it. Would you wear your best boots to a wedding without polishing them??? :D

There was a print command which is out commented.

That one messed me up for a little bit. I was getting an "expected indent" error until I got it figured out. When I got it right, the "try" just fell
through. I do however, like the "pass" command. And again you lead me one step further up the hill. Thanks.

The "Metric Nuts" script will be coming as soon as I can get another polishing rag. ;)

And then after that... The big ticket. Metric Screws. I think you will appreciate that one. :cool:

Oh, incidentally, I can "make" a washer and have it in my project folder in 10-12 seconds.
Not too shabby for just 6 clicks. Very quick and simple.
 
Check "Machinery's" for "Metric Washers"
Do you mean "Machiner's Handbook," "American Machinist;'s Handbook," or "Tje Standard Handbook of Machine Design?" Which Edition of which? Do you mean the 2002 ANSI specification set of the 2009 ASME specification set (and they are different -- as well as different from the French-ISO, DIN, British Standard, and Japanese Industrial Specification versions). I maintain Libraries for ASME (American), DIN, and JIS versions.

Now, as I have said elsewhere, maintain a "Hardware Directory" for each "Project" I am working on. I cannot tell you how this adds to "Project Management" control.
 
To wander into the weeds... In (as I recall) February of 1967 I was send down to "Everett Industrial Supply" to buy a copy of Machinery's Handbook" (not that I remember the Edition) and my choice was the "Journeyman's version" (at $9.95) or the "Apprentice's version" (at $3.50). So, of course, I bought an "Apprentice's version." By 1972 it had fallen apart to the point where is "lived" in a paper bag in my tool chest. Since then (1975 when I finally replaced my "paper bag copy," I have shelled out for four more.

Issac Asimov told a tale where one of the "hero's" leapt from a burning building with his "technical reference manual" while wearing only underpants -- though, he admitted, were he more pressed for time, he would have foregone the underpants. The real question in what's left of my mind is, :What books would you "forego underpants" to rescue from a burning building? {Irrational minds want to know...]
 
Top