diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..dc7a6a4 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,14 @@ +version: 2 +updates: + - package-ecosystem: bundler + directory: / + schedule: + interval: daily + allow: + - dependency-type: direct + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: daily + time: "10:00" + open-pull-requests-limit: 10 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..d018330 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,22 @@ +name: CI + +on: + push: + branches: ["main"] + pull_request: + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v5 + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' # Not needed with a .ruby-version file + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + cache-version: 0 # Increment this number if you need to re-download cached gems + - name: Build with Jekyll + run: bundle exec jekyll build diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..66a116a --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,62 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# Sample workflow for building and deploying a Jekyll site to GitHub Pages +name: Deploy Jekyll site to Pages + +on: + push: + branches: ["Github-Pages-Version"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v5 + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' # Not needed with a .ruby-version file + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + cache-version: 0 # Increment this number if you need to re-download cached gems + - name: Setup Pages + id: pages + uses: actions/configure-pages@v5 + - name: Build with Jekyll + # Outputs to the './_site' directory by default + run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" + env: + JEKYLL_ENV: production + - name: Upload artifact + # Automatically uploads an artifact from the './_site' directory by default + uses: actions/upload-pages-artifact@v4 + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f9f1d49 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# Not sure what a .gitignore is? +# See: https://git-scm.com/docs/gitignore + +# These are directly copied from Jekyll's first-party docs on `.gitignore` files: +# https://jekyllrb.com/tutorials/using-jekyll-with-bundler/#commit-to-source-control + +# Ignore the default location of the built site, and caches and metadata generated by Jekyll +_site/ +.sass-cache/ +.jekyll-cache/ +.jekyll-metadata + +# Ignore folders generated by Bundler +.bundle/ +vendor/ diff --git a/3D_Printing_Design_Tips/3D-Printing-Design-Tips.md b/3D_Printing_Design_Tips/3D-Printing-Design-Tips.md new file mode 100644 index 0000000..4d108b3 --- /dev/null +++ b/3D_Printing_Design_Tips/3D-Printing-Design-Tips.md @@ -0,0 +1,25 @@ +--- +title: 3D Printing Design Tips +layout: default +nav_order: 2 +parent: Home +--- + +In this section, we have compiled other existing design guides, and provided information on the printers used in determining the tolerances used in this guide, as well as looser tolerances that can be used on older printers. + +## Hydra Research Design Rules + +Hydra Research has compiled a list of general-purpose design rules for use while 3D printing. These rules are more general than the ones in the Design Elements section of this report, and covers topics such as wall thickness, bridging, overhangs, and filets. + +A section that is particularly worth reading is the section on unsupported holes, found [here](https://www.hydraresearch3d.com/design-rules#unsupported-holes). This section covers how to design a hole in an overhanging part. Adding an unsupported circular hole in an overhang typically leads to a poor-quality printed hole, but the design features in this section allow for the holes to be printed without supports and without a drop in print quality. +The full design rules can be found [here](https://www.hydraresearch3d.com/design-rules). + +## Rahix Design for 3D-Printing + +Rahix has put together a blog post going into detail about design rules for 3D printing. The post covers part orientation, infill and strength, optimizing for print time and material usage, and much more. +The full blog post can be found [here](https://blog.rahix.de/design-for-3d-printing/) + +## 3D Printers and Clearances + +The printers used in the design of the devices linked in this guide were the Bambu P1S and the Prusa MK4. At the time that this guide was written, these were some of the better 3D printers on the market, capable of repeatedly printing accurate parts. +The standard clearance between parts used in MMC devices is 0.1 mm. This clearance allows parts to fit together easily, without binding or being too loose. For some older printers however, this may be too tight of a fit to reliably assemble well. If that is the case, increasing the clearance between parts to 0.2 or even 0.3 mm may allow the parts to assemble easier. diff --git a/Commercial_Components/12-mm-Tactile-Switch.md b/Commercial_Components/12-mm-Tactile-Switch.md new file mode 100644 index 0000000..21c3c21 --- /dev/null +++ b/Commercial_Components/12-mm-Tactile-Switch.md @@ -0,0 +1,74 @@ +--- +title: 12 mm Tactile Switch +layout: default +nav_order: 3 +parent: Commercial Components +--- + +# 12 mm Tactile Switch + +This is the most common switch used at MMC and is found in most of our assistive switches, as well as several devices with integrated buttons. + +A photo of the 12mm tactile switch on a white background + +The tactile switch can be mounted in three different ways, the base mount, the panel mount, and the PCB mount. The PCB mount is done in the PCB design software, and is typically a standard footprint, and is beyond the scope of this report. The base mount is how it is mounted in the assistive switches, while the panel mount is how it was used in the Open Playback Recorder before it was redesigned to use a PCB. + +## Purchasing + + | **Tactile Switches can be found at these links:** | | +| :--------------------- | -----: | +| Digikey | [12 mm Tactile Switch DigiKey Link](https://www.digikey.ca/en/products/detail/omron-electronics-inc-emc-div/B3F-5050/368377)| +| Mouser | [12 mm Tactile Switch Mouser Link](https://www.mouser.ca/ProductDetail/Omron-Electronics/B3F-5050?qs=dOLq8QE0Pqqk%2FO9x2OpTQw%3D%3D) | + +## Base Mount + +The base mount switch is currently mounted with an extruded rim around the switch, and a dab of hot glue in the extrusion to hold the switch in place. A better way of mounting it is being searched for, and this section will be updated once it is found. For the switch to fit in this profile, two of the legs on one side, as well as the protrusions on the bottom must be trimmed off. Some devices, like the [Solderless Unibody Switch](https://github.com/makersmakingchange/Solderless-Unibody-Switch/tree/main), keep these second set of legs on and tuck them under a plastic ridge. + +A photo of a green 3D printed retaining slot for a switch with a dab of hot glue +A switch with one set of legs snipped off and a cable soldered to the other set of legs + +For this part, there are several primary dimensions. The primary dimensions are: + +- **Interior Width:** The width of the square that forms the majority of the rim. +- **Wall Thickness:** The thickness of the walls of the rim. +- **Bottom Opening Width:** The width of the opening on the rim for the switch leads and cable to pass through. +- **Maximum Height:** The maximum height that the rim can be extruded before it gets taller than the switch and interferes with the operation of the switch. +- **Interior Filet Radius:** The maximum radius that can be put on the interior of the square that holds the switch. The radius for the exterior is equal to the interior filet radius plus the wall thickness + +A sketch of the base mount measurements + +| Tactile Switch Base Mount Measurements | | +| :--------------------- | -----: | +| Interior Width | 13 mm | +| Wall Thickness | 1.6 mm | +| Bottom Opening Width | 8 mm | +| Maximum Height | 3.5 mm | +| Maximum Interior Filet Radius | 1.6 mm | + +### Panel Mount + +The panel mount method allows a device to mount a button on the device wall. The button typically has a topper of some sort glued onto it, as found on the [Raindrop Switch](https://github.com/makersmakingchange/Raindrop-Switch) or earlier versions of the [Open Playback Recorder](https://github.com/makersmakingchange/Open-Playback-Recorder). + +A CAD render of a switch in a panel mount, with the retaining plate in place +A switch panel mount with the switch removed +The front of a panel mounted switch + + +This mount consists of two separate parts, one far more complicated than the other. The first part is the actual wall of the enclosure with the slot for the button. The button is trimmed like it is in the base mount, with 2 legs and the bottom protrusions removed, then it is pressed into the slot in the wall, with the button itself passing through the hole in the wall. Once the button is in place, the retaining panel is slid into the slot behind it to keep it from coming out, and the pressure of the button holds the panel in place. + +The panel is a rectangle 19x15.8 mm in size, with an 8 mm diameter half circle cut out of the middle of the edge of one of the 19 mm sides, with the corners on the other side being rounded with a 4 mm filet. All other corners are rounded with a 1 mm fillet. The profile is extruded to 1.6 mm thickness, and a 0.4 mm chamfer is applied to the edges. + +The front of a panel mounted switch + +The panel mount section is made in several steps. Starting with the enclosure wall, create an 8 mm diameter hole, and apply a 1 mm radius filet to the outside to smooth the edges. On the inside surface of the wall, create a 12.6 mm square centered on the hole, with a 1.2 mm chamfer on the corners. Around this square, create a rectangle 22.6 mm wide, and 15.8 mm tall. The rectangle should be centered horizontally, and the top of the rectangle should be 7.9 mm from the center of the circle. It can optionally extend further down past the 15.8 mm mark, down to the bottom of the enclosure if desired, but 21 mm is the minimum to work with the panel created above. Finally, add another rectangle between the top of the center square and the outer rectangle, centered horizontally, and 8 mm wide. Extrude the selected sections 3.5 mm from the enclosure wall. + +The first CAD sketch used to create the button slot +An extrusion showing what parts of the previous sketch get extruded + +After extruding the base, create a sketch on the top face. This sketch will consist of four rectangles, with two on each side, mirrored across the center of the circle. For each side, one rectangle will start at the corner and go 1.6 mm towards the center, then 2.2 mm out away from the base. The second rectangle will start at the outer corner of the first rectangle, and extend 1.6 mm out, and 3.6 mm towards the center. Extrude these two sides down to the bottom of the base. + +A second CAD sketch showing what will become the panel rails. + +Finally, at the bottom of the base create a sketch that covers the entire rail and base area (22.6 mm x 7.3 mm) and extrude it down 1.6 mm to cap off the bottom of the rail section. From here, it can be extended to the bottom of the enclosure, or the bottom can be chamfered for printability as normal. + +An extrusion that caps the bottom of the rails diff --git a/Commercial_Components/3.5mm-Audio-Jack.md b/Commercial_Components/3.5mm-Audio-Jack.md new file mode 100644 index 0000000..cca04af --- /dev/null +++ b/Commercial_Components/3.5mm-Audio-Jack.md @@ -0,0 +1,41 @@ +--- +title: 3.5 mm Audio Jack +layout: default +nav_order: 3 +parent: Commercial Components +--- + +## 3.5 mm Audio Jack + +3.5 mm audio jacks are used to allow assistive switches to connect to a device and provide input. There are two different styles of jack commonly used in MMC projects, the PCB mount jack and the panel mount jack. Some projects alternatively use a low mount PCB jack, but the considerations would be the same as the regular PCB mount + +A photo of a panel mount 3.5mm jack +A photo of a panel mount 3.5mm jack + +For this part, there are several primary dimensions, as well as some design considerations. The primary dimensions are: + +- **Panel Mount Passthrough:** The diameter of the hole in the wall of the device to allow the panel mount jack to pass through to the outside of the device. This can also be done using a ¼ inch drill bit. +- **PCB Passthrough:** The diameter of the hole in the wall of the device to allow the PCB mount jack to pass through to the outside of the device. +- **Minimum Cable Spacing:** The diameter of a circle centered on the jack on the outside of the wall that should be kept clear of any other features, including other jacks. This allows enough spacing for any 3.5mm audio cables to plug into the jack without interfering with them. These circles should not overlap, meaning the minimum distance between any two jacks should be equal to this spacing. +- **Maximum Wall Thickness:** The maximum thickness of a wall for the panel mount jack. This is the thickest a wall can be and still allow enough of the threaded part of the jack to stick through for the nut to thread onto and secure the jack. + +| 3.5 mm Jack Measurements | | +| :--------------------- | -----: | +| Panel Mount Passthrough | 6 mm | +| PCB Passthrough | 7 mm | +| Minimum Cable Spacing | 12 mm | +| Maximum Wall Thickness | 2.4 mm | + +When designing parts that use this component, you need to keep in mind the following design considerations + +- **Horizontally printed holes:** Holes in the wall of a print can sag when printed, while this isn't an issue for the threaded part of the hole, this can cause the passthrough hole to not pass through wall. When designing a hole meant to print horizontally, use a circumscribed octagon instead to eliminate the steep overhangs at the top of the circle. + + +## Purchasing + + | **3.5 mm Audio Jacks can be found at these links:** | | +| :--------------------- | -----: | +| Panel Mount Digikey | [Panel Mount Jack DigiKey Link](https://www.digikey.ca/en/products/detail/switchcraft-inc/35RAPC2AV/772080)| +| Panel Mount Mouser | [Panel Mount Jack Mouser Link](https://www.mouser.ca/ProductDetail/Switchcraft/35RAPC2AV?qs=I3kMT7EEIOWP5G1fR6CxcA%3D%3D) | +| PCB Mount Digikey | [PCB Mount Jack DigiKey Link](https://www.digikey.ca/en/products/detail/same-sky-formerly-cui-devices/SJ1-3535NG/738699)| +| PCB Mount Mouser | [PCB Mount Jack Mouser Link](https://www.mouser.ca/ProductDetail/Same-Sky/SJ1-3535NG?qs=WyjlAZoYn50jUmKVsqeRJw%3D%3D)| \ No newline at end of file diff --git a/Commercial_Components/5mm-LED.md b/Commercial_Components/5mm-LED.md new file mode 100644 index 0000000..edfcfd8 --- /dev/null +++ b/Commercial_Components/5mm-LED.md @@ -0,0 +1,48 @@ +--- +title: 5 mm LED +layout: default +nav_order: 3 +parent: Commercial Components +--- + +## 5 mm LEDs + +5mm LEDs are the most common method of providing visual feedback in MMC devices. + +A picture of a red 5mm LED + +When adding LEDs to a design, the shape of the opening will change depending on if the LED comes out of a surface that is parallel to the print bed or perpendicular to it. If the surface is parallel to the bed, a circular hole can be used, but if the surface is perpendicular to the print bed, a circumscribed octagon should be used to prevent the top of the printed opening from sagging like a circle would. + +A render of the LipSync Hub with 3 LEDs visible +A render of the Open Playback Recorder with 3 LEDs visible + +Spacers have been used in projects such as the [Open Playback Recorder](https://github.com/makersmakingchange/Open-Playback-Recorder) and the [LipSync](https://github.com/makersmakingchange/LipSync) to both hold the LEDs in place while they are soldered and space the LEDs the correct distance from the PCB so that they are flush with the exterior of the device. The spacer in the LipSync has the LED pressed directly against the spacer, facing the same direction as the PCB, while the spacer in the [Open Playback Recorder](https://github.com/makersmakingchange/Open-Playback-Recorder) is a two-tiered, stepped design to allow it to be soldered in place at a certain spacing, then bent 90 degrees to face the side of the device. + +A view of the LipSync PCB with the 3 LEDs held in place with a spacer +A view of the Open Playback Recorder top PCB with the 3 LEDs held in place with a spacer and bent 90 degrees + +When designing a spacer, it is important to add a feature to indicate the orientation of the LED. This is normally done with a flat surface to match the flat surface on the cathode (negative) side of the LED. On some spacers, the LED is recessed with the flat on the spacer so that it can only fit in on the correct orientation. + +The following are the key dimensions to use when designing for a 5mm LED. + +- **Passthrough Diameter:** The diameter of the hole that the LED passes through. If the hole is in the top of the enclosure or prints parallel to the print bed, make this hole a circle. If the hole is in the side of the enclosure or prints perpendicular to the print bed, make the hole a circumscribed octagon. +- **Leg Diameter:** The diameter of the hole in the spacer for the LED legs to pass through. +- **Leg Spacing:** The leg spacing is the space between the centers of each leg of the LED. + +| LED Measurements | | +| :--------------------- | -----: | +| Passthrough Diameter | 5.4 mm | +| Leg Diameter | 2 mm | +| Leg Spacing | 2.54 mm (0.1in) | + +When designing parts that use this component, you need to keep in mind the following design considerations + +- **Overhanging holes**: holes in unsupported overhanging material can print poorly and lead to parts not fitting. Refer to the Hydra Research Design Rules [section on overhanging holes](https://www.hydraresearch3d.com/design-rules#unsupported-holes) for how to design an overhanging hole that can print without support +- **Horizontally printed holes:** Holes in the wall of a print can sag when printed, while this isn't an issue for the threaded part of the hole, this can cause the passthrough hole to not pass through wall. When designing a hole meant to print horizontally, use a circumscribed octagon instead to eliminate the steep overhangs at the top of the circle. + +## Purchasing + + | **5 mm LEDs can be found at these links:** | | +| :--------------------- | -----: | +| Digikey | Coming Soon| +| Mouser | Coming Soon| diff --git a/Commercial_Components/Battery-Contact-Plates.md b/Commercial_Components/Battery-Contact-Plates.md new file mode 100644 index 0000000..e9fe2cd --- /dev/null +++ b/Commercial_Components/Battery-Contact-Plates.md @@ -0,0 +1,148 @@ +--- +title: Battery Contact Plates +layout: default +nav_order: 3 +parent: Commercial Components +--- + +## Battery Contact Plates + +Battery contact plates are used in devices to eliminate the need for dedicated commercial battery enclosure components and instead integrate the battery enclosure into the device. To do this, three components are used, a contact spring plate, a solid contact place, and a contact bridge plate. + +A picture of the spring contact plate +A picture of the solid contact plate +a picture of the bridge contact plate + +Designed for use with AAA batteries, these plates allow batteries to be integrated into the body of the device like in a TV remote or similar device. So far, these have only been used in the [Musical Grasping Training Aid](https://github.com/makersmakingchange/Musical_Grasping_Training_Aid) in the MMC Library. + +A cross section of the musical grasping training aid with the batteries visible + +When designing with these, there are a number of considerations for how to mount them into a part, and a number of considerations on how to align and space them. This section will be split into four sections, one on how to mount each of the three contact plates and one on positioning them. + +### Contact Spring Plate + +The solid contact plate is the battery contact that contacts the negative terminal of the battery stack and is wired into the rest of the device. The plate is retained into the device by a press fit rail. + +A CAD render of the musical grasping training aid with the slots for two battery contact plates visible +A photo of the spring contact plate + +The following are the dimensions used to create the retaining slot for the Contact Bridge Plate. These dimensions are the same as the retaining slot for the Solid Contact Plate. + +- **Slot Width:** The width of the slot that the contact plate fits into. +- **Slot Length:** The length of the slot that the contact plate fits into. +- **Sloth Depth:** The distance between the surface of the slot and the retaining rails. +- **Slot Coverage:** The amount of the mounting plate covered by the retaining rails. + +A cross sectional sketch of the musical grasping training aid with the slot length and width labeled +A cross sectional sketch of the musical grasping training aid with the slot coverage labeled. + +| **Contact Spring Plate Design Dimensions** | | +| :--------------------- | -----: | +| **Slot Width** | 11.5 mm | +| **Slot Length** | 13.5 mm | +| **Slot Depth** | 0.75 mm | +| **Slot Coverage** | 0.75 mm | + +### Solid Contact Plate + +The solid contact plate is the battery contact that contacts the positive terminal of the battery stack and is wired into the rest of the device. The plate is retained into the device by a press fit rail. + +A CAD render of the musical grasping training aid with the slots for two battery contact plates visible. +A photo of the solid contact plate. + +The following are the dimensions used to create the retaining slot for the Solid Contact Plate. These dimensions are the same as the retaining slot for the Contact Spring Plate. + +- **Slot Width:** The width of the slot that the contact plate fits into. +- **Slot Length:** The length of the slot that the contact plate fits into. +- **Sloth Depth:** The distance between the surface of the slot and the retaining rails. +- **Slot Coverage:** The amount of the mounting plate covered by the retaining rails. + +A cross sectional sketch of the musical grasping training aid with the slot length and width labeled. +A cross sectional sketch of the musical grasping training aid with the slot coverage labeled. + +| **Solid Contact Plate Design Dimensions** | | +| :--------------------- | -----: | +| **Slot Width** | 11.5 mm | +| **Slot Length** | 13.5 mm | +| **Slot Depth** | 0.75 mm | +| **Slot Coverage** | 0.75 mm | + +### Contact Bridge Plate + +The Contact Bridge Plate is usually mounted on the section of the battery enclosure that is removable, as it is not wired into the device at all and is just used to bridge the contacts of two parallel batteries. It is press fit into a slot and held in place by the walls of the slot and a retaining bump and divots that fit the bumps on the bridge plate. + +A render of the battery cover of the musical grasping training aid +a photo of the bridge battery contact plate + +The following are the dimensions used to create the retaining slot for the Contact Bridge Plate. + +- **Slot Height:** The height of the main area of the slot. +- **Slot Width:** The width of the main area of the slot. +- **Slot Depth:** The distance between the surface of the retaining slot and the tabs holding the plate in place +- **Slot Wall Coverage:** The maximum amount of the bridge cover that the triangular tabs cover. +- **Retainer Width:** The width of the retaining bump that helps hold the plate in place. +- **Retainer Height:** The height of the retaining bump that helps hold the plate in place. +- **Post Width:** The width of the central post that fits in the slot of the bridge plate. +- **Post Height:** The height of the central post that fits in the slot of the bridge plate. +- **Base Width:** The width of the section at the bottom of the slot that fits between the tabs on the plate. +- **Base Height:** The width of the section at the bottom of the slot that fits between the tabs on the plate. +- **Divot Width:** The width of the divot on the retaining slot that fits the tabs on the plate. +- **Divot Height:** The height of the divot on the retaining slot that fits the tabs on the plate. +- **Divot Depth:** The depth of the divot on the retaining slot that fits the tabs on the plate. This is not on the drawing below, but instead is an extrusion into the sketch plane. +- **Divot Spacing:** The spacing between the inner edge of the retaining divot and the centerline of the retaining slot. +- **Divot Radius:** The radius of the filet on the leading edge of the retaining divot that helps the plate slot into place. + +A sketch of the battery cover with the key dimensions labeled +A cross section sketch of the battery cover with the key depths labeled. + +| Contact Bridge Plate Measurements | | +| :--------------------- | -----: | +| Slot Height | 14.15 mm | +| Slot Width | 21.3 mm | +| Slot Depth | 0.8 mm | +| Slot Wall Coverage | 1.65 mm | +| Retainer Width | 6 mm | +| Retainer Height | 2.2 mm | +| Post Width | 1.2 mm | +| Post Height | 6.48 mm | +| Base Width | 5.4 mm | +| Base Height | 1.1 mm | +| Divot Width | 3.2 mm | +| Divot Height | 1.7 mm | +| Divot Depth | 1 mm | +| Divot Spacing | 3.6 mm | +| Divot Radius | 0.5 mm | + +### Positioning the Contact Plates + +For the switch plates to work, they need to be positioned and spaced correctly. The following are a list of dimensions for the positioning and spacing of the contact plates. + +- **AAA Battery Tube Diameter:** The diameter of the tube in the device that AAA batteries are inserted in. +- **AAA Battery Length:** The length of a standard AAA battery +- **Plate Spacing:** The amount of space taken up by the contact plates when the device is fully assembled. +- **Battery Spacing:** The spacing between the print surfaces of the retaining slots of the contact bridge plate and the other two contact plates. Equal to the plate spacing plus the battery length for the number of batteries used. Since the batteries are stacked side by side, use the length of half the number of batteries. +- **Plate Height Spacing:** The distance between the center of the battery tube and the bottom of the plate retaining slot. +- **Plate Width Spacing:** The distance between the centers of the two battery tubes. + +A cross section of the Musical Grasping Training Aid with the plate width and the plate height labeled. + +| Contact Plate Positioning Measurements | | +| :--------------------- | -----: | +| AAA Battery Tube Diameter | 11.5 mm | +| AAA Battery Length | 44 mm | +| Plate Spacing | 7.4 mm | +| Battery Spacing (4 batteries) | 95.4 mm | +| Plate Height Spacing | 5.7 mm | +| Plate Width Spacing | 13.6 mm | + + +## Purchasing + + | **Battery Contact Plates can be found at these links:** | | +| :--------------------- | -----: | +| Spring Plate Digikey | [Spring Plate DigiKey Link](https://www.digikey.ca/en/products/detail/keystone-electronics/5201/316365)| +| Spring Plate Mouser | [Spring Plate Mouser Link](https://www.mouser.ca/ProductDetail/Keystone-Electronics/5201?qs=%252BS1bAMbChF%2FxN%2FaZxwnGRQ%3D%3D) | +| Solid Contact Plate Digikey | [Solid Contact Plate DigiKey Link](https://www.digikey.ca/en/products/detail/keystone-electronics/5223/316374)| +| Solid Contact Plate Mouser | [Solid Contact Plate Mouser Link](https://www.mouser.ca/ProductDetail/Keystone-Electronics/5223?qs=%252BS1bAMbChF%252B3alBpHEy8CA%3D%3D) | +| Contact Bridge Plate Digikey | [Contact Bridge Plate Digikey Link](https://www.digikey.ca/en/products/detail/keystone-electronics/5213/316372)| +| Contact Bridge Plate Mouser | [Contact Bridge Plate Mouser Link](https://www.mouser.ca/ProductDetail/Keystone-Electronics/5213?qs=U32tdPngY%2FwokHP6mbqrbQ%3D%3D) | \ No newline at end of file diff --git a/Commercial_Components/CAD_Files/T_Nut/T_Nut_Mounting_Positive.f3d b/Commercial_Components/CAD_Files/T_Nut/T_Nut_Mounting_Positive.f3d new file mode 100644 index 0000000..37029d5 Binary files /dev/null and b/Commercial_Components/CAD_Files/T_Nut/T_Nut_Mounting_Positive.f3d differ diff --git a/Commercial_Components/CAD_Files/T_Nut/T_Nut_Mounting_Positive.step b/Commercial_Components/CAD_Files/T_Nut/T_Nut_Mounting_Positive.step new file mode 100644 index 0000000..7326120 --- /dev/null +++ b/Commercial_Components/CAD_Files/T_Nut/T_Nut_Mounting_Positive.step @@ -0,0 +1,2137 @@ +ISO-10303-21; +HEADER; +/* Generated by software containing ST-Developer + * from STEP Tools, Inc. (www.steptools.com) + */ + +FILE_DESCRIPTION( +/* description */ (''), +/* implementation_level */ '2;1'); + +FILE_NAME( +/* name */ 'T-Nut Mounting Positive.step', +/* time_stamp */ '2025-09-10T16:27:43-07:00', +/* author */ (''), +/* organization */ (''), +/* preprocessor_version */ 'ST-DEVELOPER v20.1', +/* originating_system */ 'Autodesk Translation Framework v14.10.0.0', +/* authorisation */ ''); + +FILE_SCHEMA (('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }')); +ENDSEC; + +DATA; +#10=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#13),#2041); +#11=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#2048,#12); +#12=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#14),#2040); +#13=STYLED_ITEM('',(#2057),#14); +#14=MANIFOLD_SOLID_BREP('Body1',#1274); +#15=CONICAL_SURFACE('',#1364,4.5,0.785398163397448); +#16=CYLINDRICAL_SURFACE('',#1356,11.6); +#17=CYLINDRICAL_SURFACE('',#1360,10.); +#18=CYLINDRICAL_SURFACE('',#1366,4.); +#19=FACE_BOUND('',#179,.T.); +#20=FACE_BOUND('',#181,.T.); +#21=FACE_BOUND('',#184,.T.); +#22=FACE_BOUND('',#187,.T.); +#23=FACE_BOUND('',#188,.T.); +#24=FACE_BOUND('',#189,.T.); +#25=FACE_BOUND('',#190,.T.); +#26=FACE_BOUND('',#191,.T.); +#27=FACE_BOUND('',#192,.T.); +#28=FACE_BOUND('',#193,.T.); +#29=FACE_BOUND('',#194,.T.); +#30=FACE_BOUND('',#195,.T.); +#31=FACE_BOUND('',#196,.T.); +#32=FACE_BOUND('',#197,.T.); +#33=FACE_BOUND('',#198,.T.); +#34=FACE_BOUND('',#199,.T.); +#35=CIRCLE('',#1353,11.6); +#36=CIRCLE('',#1355,4.); +#37=CIRCLE('',#1357,11.6); +#38=CIRCLE('',#1359,10.); +#39=CIRCLE('',#1361,10.); +#40=CIRCLE('',#1363,5.); +#41=CIRCLE('',#1365,4.); +#42=FACE_OUTER_BOUND('',#114,.T.); +#43=FACE_OUTER_BOUND('',#115,.T.); +#44=FACE_OUTER_BOUND('',#116,.T.); +#45=FACE_OUTER_BOUND('',#117,.T.); +#46=FACE_OUTER_BOUND('',#118,.T.); +#47=FACE_OUTER_BOUND('',#119,.T.); +#48=FACE_OUTER_BOUND('',#120,.T.); +#49=FACE_OUTER_BOUND('',#121,.T.); +#50=FACE_OUTER_BOUND('',#122,.T.); +#51=FACE_OUTER_BOUND('',#123,.T.); +#52=FACE_OUTER_BOUND('',#124,.T.); +#53=FACE_OUTER_BOUND('',#125,.T.); +#54=FACE_OUTER_BOUND('',#126,.T.); +#55=FACE_OUTER_BOUND('',#127,.T.); +#56=FACE_OUTER_BOUND('',#128,.T.); +#57=FACE_OUTER_BOUND('',#129,.T.); +#58=FACE_OUTER_BOUND('',#130,.T.); +#59=FACE_OUTER_BOUND('',#131,.T.); +#60=FACE_OUTER_BOUND('',#132,.T.); +#61=FACE_OUTER_BOUND('',#133,.T.); +#62=FACE_OUTER_BOUND('',#134,.T.); +#63=FACE_OUTER_BOUND('',#135,.T.); +#64=FACE_OUTER_BOUND('',#136,.T.); +#65=FACE_OUTER_BOUND('',#137,.T.); +#66=FACE_OUTER_BOUND('',#138,.T.); +#67=FACE_OUTER_BOUND('',#139,.T.); +#68=FACE_OUTER_BOUND('',#140,.T.); +#69=FACE_OUTER_BOUND('',#141,.T.); +#70=FACE_OUTER_BOUND('',#142,.T.); +#71=FACE_OUTER_BOUND('',#143,.T.); +#72=FACE_OUTER_BOUND('',#144,.T.); +#73=FACE_OUTER_BOUND('',#145,.T.); +#74=FACE_OUTER_BOUND('',#146,.T.); +#75=FACE_OUTER_BOUND('',#147,.T.); +#76=FACE_OUTER_BOUND('',#148,.T.); +#77=FACE_OUTER_BOUND('',#149,.T.); +#78=FACE_OUTER_BOUND('',#150,.T.); +#79=FACE_OUTER_BOUND('',#151,.T.); +#80=FACE_OUTER_BOUND('',#152,.T.); +#81=FACE_OUTER_BOUND('',#153,.T.); +#82=FACE_OUTER_BOUND('',#154,.T.); +#83=FACE_OUTER_BOUND('',#155,.T.); +#84=FACE_OUTER_BOUND('',#156,.T.); +#85=FACE_OUTER_BOUND('',#157,.T.); +#86=FACE_OUTER_BOUND('',#158,.T.); +#87=FACE_OUTER_BOUND('',#159,.T.); +#88=FACE_OUTER_BOUND('',#160,.T.); +#89=FACE_OUTER_BOUND('',#161,.T.); +#90=FACE_OUTER_BOUND('',#162,.T.); +#91=FACE_OUTER_BOUND('',#163,.T.); +#92=FACE_OUTER_BOUND('',#164,.T.); +#93=FACE_OUTER_BOUND('',#165,.T.); +#94=FACE_OUTER_BOUND('',#166,.T.); +#95=FACE_OUTER_BOUND('',#167,.T.); +#96=FACE_OUTER_BOUND('',#168,.T.); +#97=FACE_OUTER_BOUND('',#169,.T.); +#98=FACE_OUTER_BOUND('',#170,.T.); +#99=FACE_OUTER_BOUND('',#171,.T.); +#100=FACE_OUTER_BOUND('',#172,.T.); +#101=FACE_OUTER_BOUND('',#173,.T.); +#102=FACE_OUTER_BOUND('',#174,.T.); +#103=FACE_OUTER_BOUND('',#175,.T.); +#104=FACE_OUTER_BOUND('',#176,.T.); +#105=FACE_OUTER_BOUND('',#177,.T.); +#106=FACE_OUTER_BOUND('',#178,.T.); +#107=FACE_OUTER_BOUND('',#180,.T.); +#108=FACE_OUTER_BOUND('',#182,.T.); +#109=FACE_OUTER_BOUND('',#183,.T.); +#110=FACE_OUTER_BOUND('',#185,.T.); +#111=FACE_OUTER_BOUND('',#186,.T.); +#112=FACE_OUTER_BOUND('',#200,.T.); +#113=FACE_OUTER_BOUND('',#201,.T.); +#114=EDGE_LOOP('',(#800,#801,#802,#803)); +#115=EDGE_LOOP('',(#804,#805,#806,#807)); +#116=EDGE_LOOP('',(#808,#809,#810,#811)); +#117=EDGE_LOOP('',(#812,#813,#814,#815)); +#118=EDGE_LOOP('',(#816,#817,#818,#819)); +#119=EDGE_LOOP('',(#820,#821,#822,#823)); +#120=EDGE_LOOP('',(#824,#825,#826,#827)); +#121=EDGE_LOOP('',(#828,#829,#830,#831)); +#122=EDGE_LOOP('',(#832,#833,#834,#835)); +#123=EDGE_LOOP('',(#836,#837,#838,#839)); +#124=EDGE_LOOP('',(#840,#841,#842,#843)); +#125=EDGE_LOOP('',(#844,#845,#846,#847)); +#126=EDGE_LOOP('',(#848,#849,#850,#851)); +#127=EDGE_LOOP('',(#852,#853,#854,#855)); +#128=EDGE_LOOP('',(#856,#857,#858,#859)); +#129=EDGE_LOOP('',(#860,#861,#862,#863)); +#130=EDGE_LOOP('',(#864,#865,#866,#867)); +#131=EDGE_LOOP('',(#868,#869,#870,#871)); +#132=EDGE_LOOP('',(#872,#873,#874,#875)); +#133=EDGE_LOOP('',(#876,#877,#878,#879)); +#134=EDGE_LOOP('',(#880,#881,#882,#883)); +#135=EDGE_LOOP('',(#884,#885,#886,#887)); +#136=EDGE_LOOP('',(#888,#889,#890,#891)); +#137=EDGE_LOOP('',(#892,#893,#894,#895)); +#138=EDGE_LOOP('',(#896,#897,#898,#899)); +#139=EDGE_LOOP('',(#900,#901,#902,#903)); +#140=EDGE_LOOP('',(#904,#905,#906,#907)); +#141=EDGE_LOOP('',(#908,#909,#910,#911)); +#142=EDGE_LOOP('',(#912,#913,#914,#915)); +#143=EDGE_LOOP('',(#916,#917,#918,#919)); +#144=EDGE_LOOP('',(#920,#921,#922,#923)); +#145=EDGE_LOOP('',(#924,#925,#926,#927)); +#146=EDGE_LOOP('',(#928,#929,#930,#931)); +#147=EDGE_LOOP('',(#932,#933,#934,#935)); +#148=EDGE_LOOP('',(#936,#937,#938,#939)); +#149=EDGE_LOOP('',(#940,#941,#942,#943)); +#150=EDGE_LOOP('',(#944,#945,#946,#947)); +#151=EDGE_LOOP('',(#948,#949,#950,#951)); +#152=EDGE_LOOP('',(#952,#953,#954,#955)); +#153=EDGE_LOOP('',(#956,#957,#958,#959)); +#154=EDGE_LOOP('',(#960,#961,#962,#963)); +#155=EDGE_LOOP('',(#964,#965,#966,#967)); +#156=EDGE_LOOP('',(#968,#969,#970,#971)); +#157=EDGE_LOOP('',(#972,#973,#974,#975)); +#158=EDGE_LOOP('',(#976,#977,#978,#979)); +#159=EDGE_LOOP('',(#980,#981,#982,#983)); +#160=EDGE_LOOP('',(#984,#985,#986,#987)); +#161=EDGE_LOOP('',(#988,#989,#990,#991)); +#162=EDGE_LOOP('',(#992,#993,#994,#995)); +#163=EDGE_LOOP('',(#996,#997,#998,#999)); +#164=EDGE_LOOP('',(#1000,#1001,#1002,#1003)); +#165=EDGE_LOOP('',(#1004,#1005,#1006,#1007)); +#166=EDGE_LOOP('',(#1008,#1009,#1010,#1011)); +#167=EDGE_LOOP('',(#1012,#1013,#1014,#1015)); +#168=EDGE_LOOP('',(#1016,#1017,#1018,#1019)); +#169=EDGE_LOOP('',(#1020,#1021,#1022,#1023)); +#170=EDGE_LOOP('',(#1024,#1025,#1026,#1027)); +#171=EDGE_LOOP('',(#1028,#1029,#1030,#1031)); +#172=EDGE_LOOP('',(#1032,#1033,#1034,#1035)); +#173=EDGE_LOOP('',(#1036,#1037,#1038,#1039)); +#174=EDGE_LOOP('',(#1040,#1041,#1042,#1043)); +#175=EDGE_LOOP('',(#1044,#1045,#1046,#1047)); +#176=EDGE_LOOP('',(#1048,#1049,#1050,#1051)); +#177=EDGE_LOOP('',(#1052,#1053,#1054,#1055)); +#178=EDGE_LOOP('',(#1056,#1057,#1058,#1059)); +#179=EDGE_LOOP('',(#1060)); +#180=EDGE_LOOP('',(#1061,#1062,#1063,#1064)); +#181=EDGE_LOOP('',(#1065)); +#182=EDGE_LOOP('',(#1066,#1067,#1068,#1069)); +#183=EDGE_LOOP('',(#1070)); +#184=EDGE_LOOP('',(#1071)); +#185=EDGE_LOOP('',(#1072,#1073,#1074,#1075)); +#186=EDGE_LOOP('',(#1076)); +#187=EDGE_LOOP('',(#1077,#1078,#1079,#1080)); +#188=EDGE_LOOP('',(#1081,#1082,#1083,#1084)); +#189=EDGE_LOOP('',(#1085,#1086,#1087,#1088)); +#190=EDGE_LOOP('',(#1089,#1090,#1091,#1092)); +#191=EDGE_LOOP('',(#1093,#1094,#1095,#1096)); +#192=EDGE_LOOP('',(#1097,#1098,#1099,#1100)); +#193=EDGE_LOOP('',(#1101,#1102,#1103,#1104)); +#194=EDGE_LOOP('',(#1105,#1106,#1107,#1108)); +#195=EDGE_LOOP('',(#1109,#1110,#1111,#1112)); +#196=EDGE_LOOP('',(#1113,#1114,#1115,#1116)); +#197=EDGE_LOOP('',(#1117,#1118,#1119,#1120)); +#198=EDGE_LOOP('',(#1121,#1122,#1123,#1124)); +#199=EDGE_LOOP('',(#1125)); +#200=EDGE_LOOP('',(#1126,#1127,#1128,#1129)); +#201=EDGE_LOOP('',(#1130,#1131,#1132,#1133)); +#202=LINE('',#1691,#362); +#203=LINE('',#1693,#363); +#204=LINE('',#1695,#364); +#205=LINE('',#1696,#365); +#206=LINE('',#1699,#366); +#207=LINE('',#1701,#367); +#208=LINE('',#1702,#368); +#209=LINE('',#1705,#369); +#210=LINE('',#1707,#370); +#211=LINE('',#1708,#371); +#212=LINE('',#1710,#372); +#213=LINE('',#1711,#373); +#214=LINE('',#1716,#374); +#215=LINE('',#1718,#375); +#216=LINE('',#1720,#376); +#217=LINE('',#1721,#377); +#218=LINE('',#1724,#378); +#219=LINE('',#1726,#379); +#220=LINE('',#1727,#380); +#221=LINE('',#1730,#381); +#222=LINE('',#1732,#382); +#223=LINE('',#1733,#383); +#224=LINE('',#1735,#384); +#225=LINE('',#1736,#385); +#226=LINE('',#1741,#386); +#227=LINE('',#1743,#387); +#228=LINE('',#1745,#388); +#229=LINE('',#1746,#389); +#230=LINE('',#1749,#390); +#231=LINE('',#1751,#391); +#232=LINE('',#1752,#392); +#233=LINE('',#1755,#393); +#234=LINE('',#1757,#394); +#235=LINE('',#1758,#395); +#236=LINE('',#1760,#396); +#237=LINE('',#1761,#397); +#238=LINE('',#1766,#398); +#239=LINE('',#1768,#399); +#240=LINE('',#1770,#400); +#241=LINE('',#1771,#401); +#242=LINE('',#1774,#402); +#243=LINE('',#1776,#403); +#244=LINE('',#1777,#404); +#245=LINE('',#1780,#405); +#246=LINE('',#1782,#406); +#247=LINE('',#1783,#407); +#248=LINE('',#1785,#408); +#249=LINE('',#1786,#409); +#250=LINE('',#1791,#410); +#251=LINE('',#1793,#411); +#252=LINE('',#1795,#412); +#253=LINE('',#1796,#413); +#254=LINE('',#1799,#414); +#255=LINE('',#1801,#415); +#256=LINE('',#1802,#416); +#257=LINE('',#1805,#417); +#258=LINE('',#1807,#418); +#259=LINE('',#1808,#419); +#260=LINE('',#1810,#420); +#261=LINE('',#1811,#421); +#262=LINE('',#1816,#422); +#263=LINE('',#1818,#423); +#264=LINE('',#1820,#424); +#265=LINE('',#1821,#425); +#266=LINE('',#1824,#426); +#267=LINE('',#1826,#427); +#268=LINE('',#1827,#428); +#269=LINE('',#1830,#429); +#270=LINE('',#1832,#430); +#271=LINE('',#1833,#431); +#272=LINE('',#1835,#432); +#273=LINE('',#1836,#433); +#274=LINE('',#1841,#434); +#275=LINE('',#1843,#435); +#276=LINE('',#1845,#436); +#277=LINE('',#1846,#437); +#278=LINE('',#1849,#438); +#279=LINE('',#1851,#439); +#280=LINE('',#1852,#440); +#281=LINE('',#1855,#441); +#282=LINE('',#1857,#442); +#283=LINE('',#1858,#443); +#284=LINE('',#1860,#444); +#285=LINE('',#1861,#445); +#286=LINE('',#1866,#446); +#287=LINE('',#1868,#447); +#288=LINE('',#1870,#448); +#289=LINE('',#1871,#449); +#290=LINE('',#1874,#450); +#291=LINE('',#1876,#451); +#292=LINE('',#1877,#452); +#293=LINE('',#1880,#453); +#294=LINE('',#1882,#454); +#295=LINE('',#1883,#455); +#296=LINE('',#1885,#456); +#297=LINE('',#1886,#457); +#298=LINE('',#1891,#458); +#299=LINE('',#1893,#459); +#300=LINE('',#1895,#460); +#301=LINE('',#1896,#461); +#302=LINE('',#1899,#462); +#303=LINE('',#1901,#463); +#304=LINE('',#1902,#464); +#305=LINE('',#1905,#465); +#306=LINE('',#1907,#466); +#307=LINE('',#1908,#467); +#308=LINE('',#1910,#468); +#309=LINE('',#1911,#469); +#310=LINE('',#1916,#470); +#311=LINE('',#1918,#471); +#312=LINE('',#1920,#472); +#313=LINE('',#1921,#473); +#314=LINE('',#1924,#474); +#315=LINE('',#1926,#475); +#316=LINE('',#1927,#476); +#317=LINE('',#1930,#477); +#318=LINE('',#1932,#478); +#319=LINE('',#1933,#479); +#320=LINE('',#1935,#480); +#321=LINE('',#1936,#481); +#322=LINE('',#1941,#482); +#323=LINE('',#1943,#483); +#324=LINE('',#1945,#484); +#325=LINE('',#1946,#485); +#326=LINE('',#1949,#486); +#327=LINE('',#1951,#487); +#328=LINE('',#1952,#488); +#329=LINE('',#1955,#489); +#330=LINE('',#1957,#490); +#331=LINE('',#1958,#491); +#332=LINE('',#1960,#492); +#333=LINE('',#1961,#493); +#334=LINE('',#1966,#494); +#335=LINE('',#1968,#495); +#336=LINE('',#1970,#496); +#337=LINE('',#1971,#497); +#338=LINE('',#1974,#498); +#339=LINE('',#1976,#499); +#340=LINE('',#1977,#500); +#341=LINE('',#1980,#501); +#342=LINE('',#1982,#502); +#343=LINE('',#1983,#503); +#344=LINE('',#1985,#504); +#345=LINE('',#1986,#505); +#346=LINE('',#1991,#506); +#347=LINE('',#1993,#507); +#348=LINE('',#1995,#508); +#349=LINE('',#1996,#509); +#350=LINE('',#1999,#510); +#351=LINE('',#2001,#511); +#352=LINE('',#2002,#512); +#353=LINE('',#2005,#513); +#354=LINE('',#2007,#514); +#355=LINE('',#2008,#515); +#356=LINE('',#2010,#516); +#357=LINE('',#2011,#517); +#358=LINE('',#2021,#518); +#359=LINE('',#2027,#519); +#360=LINE('',#2034,#520); +#361=LINE('',#2037,#521); +#362=VECTOR('',#1371,10.); +#363=VECTOR('',#1372,10.); +#364=VECTOR('',#1373,10.); +#365=VECTOR('',#1374,10.); +#366=VECTOR('',#1377,10.); +#367=VECTOR('',#1378,10.); +#368=VECTOR('',#1379,10.); +#369=VECTOR('',#1382,10.); +#370=VECTOR('',#1383,10.); +#371=VECTOR('',#1384,10.); +#372=VECTOR('',#1387,10.); +#373=VECTOR('',#1388,10.); +#374=VECTOR('',#1393,10.); +#375=VECTOR('',#1394,10.); +#376=VECTOR('',#1395,10.); +#377=VECTOR('',#1396,10.); +#378=VECTOR('',#1399,10.); +#379=VECTOR('',#1400,10.); +#380=VECTOR('',#1401,10.); +#381=VECTOR('',#1404,10.); +#382=VECTOR('',#1405,10.); +#383=VECTOR('',#1406,10.); +#384=VECTOR('',#1409,10.); +#385=VECTOR('',#1410,10.); +#386=VECTOR('',#1415,10.); +#387=VECTOR('',#1416,10.); +#388=VECTOR('',#1417,10.); +#389=VECTOR('',#1418,10.); +#390=VECTOR('',#1421,10.); +#391=VECTOR('',#1422,10.); +#392=VECTOR('',#1423,10.); +#393=VECTOR('',#1426,10.); +#394=VECTOR('',#1427,10.); +#395=VECTOR('',#1428,10.); +#396=VECTOR('',#1431,10.); +#397=VECTOR('',#1432,10.); +#398=VECTOR('',#1437,10.); +#399=VECTOR('',#1438,10.); +#400=VECTOR('',#1439,10.); +#401=VECTOR('',#1440,10.); +#402=VECTOR('',#1443,10.); +#403=VECTOR('',#1444,10.); +#404=VECTOR('',#1445,10.); +#405=VECTOR('',#1448,10.); +#406=VECTOR('',#1449,10.); +#407=VECTOR('',#1450,10.); +#408=VECTOR('',#1453,10.); +#409=VECTOR('',#1454,10.); +#410=VECTOR('',#1459,10.); +#411=VECTOR('',#1460,10.); +#412=VECTOR('',#1461,10.); +#413=VECTOR('',#1462,10.); +#414=VECTOR('',#1465,10.); +#415=VECTOR('',#1466,10.); +#416=VECTOR('',#1467,10.); +#417=VECTOR('',#1470,10.); +#418=VECTOR('',#1471,10.); +#419=VECTOR('',#1472,10.); +#420=VECTOR('',#1475,10.); +#421=VECTOR('',#1476,10.); +#422=VECTOR('',#1481,10.); +#423=VECTOR('',#1482,10.); +#424=VECTOR('',#1483,10.); +#425=VECTOR('',#1484,10.); +#426=VECTOR('',#1487,10.); +#427=VECTOR('',#1488,10.); +#428=VECTOR('',#1489,10.); +#429=VECTOR('',#1492,10.); +#430=VECTOR('',#1493,10.); +#431=VECTOR('',#1494,10.); +#432=VECTOR('',#1497,10.); +#433=VECTOR('',#1498,10.); +#434=VECTOR('',#1503,10.); +#435=VECTOR('',#1504,10.); +#436=VECTOR('',#1505,10.); +#437=VECTOR('',#1506,10.); +#438=VECTOR('',#1509,10.); +#439=VECTOR('',#1510,10.); +#440=VECTOR('',#1511,10.); +#441=VECTOR('',#1514,10.); +#442=VECTOR('',#1515,10.); +#443=VECTOR('',#1516,10.); +#444=VECTOR('',#1519,10.); +#445=VECTOR('',#1520,10.); +#446=VECTOR('',#1525,10.); +#447=VECTOR('',#1526,10.); +#448=VECTOR('',#1527,10.); +#449=VECTOR('',#1528,10.); +#450=VECTOR('',#1531,10.); +#451=VECTOR('',#1532,10.); +#452=VECTOR('',#1533,10.); +#453=VECTOR('',#1536,10.); +#454=VECTOR('',#1537,10.); +#455=VECTOR('',#1538,10.); +#456=VECTOR('',#1541,10.); +#457=VECTOR('',#1542,10.); +#458=VECTOR('',#1547,10.); +#459=VECTOR('',#1548,10.); +#460=VECTOR('',#1549,10.); +#461=VECTOR('',#1550,10.); +#462=VECTOR('',#1553,10.); +#463=VECTOR('',#1554,10.); +#464=VECTOR('',#1555,10.); +#465=VECTOR('',#1558,10.); +#466=VECTOR('',#1559,10.); +#467=VECTOR('',#1560,10.); +#468=VECTOR('',#1563,10.); +#469=VECTOR('',#1564,10.); +#470=VECTOR('',#1569,10.); +#471=VECTOR('',#1570,10.); +#472=VECTOR('',#1571,10.); +#473=VECTOR('',#1572,10.); +#474=VECTOR('',#1575,10.); +#475=VECTOR('',#1576,10.); +#476=VECTOR('',#1577,10.); +#477=VECTOR('',#1580,10.); +#478=VECTOR('',#1581,10.); +#479=VECTOR('',#1582,10.); +#480=VECTOR('',#1585,10.); +#481=VECTOR('',#1586,10.); +#482=VECTOR('',#1591,10.); +#483=VECTOR('',#1592,10.); +#484=VECTOR('',#1593,10.); +#485=VECTOR('',#1594,10.); +#486=VECTOR('',#1597,10.); +#487=VECTOR('',#1598,10.); +#488=VECTOR('',#1599,10.); +#489=VECTOR('',#1602,10.); +#490=VECTOR('',#1603,10.); +#491=VECTOR('',#1604,10.); +#492=VECTOR('',#1607,10.); +#493=VECTOR('',#1608,10.); +#494=VECTOR('',#1613,10.); +#495=VECTOR('',#1614,10.); +#496=VECTOR('',#1615,10.); +#497=VECTOR('',#1616,10.); +#498=VECTOR('',#1619,10.); +#499=VECTOR('',#1620,10.); +#500=VECTOR('',#1621,10.); +#501=VECTOR('',#1624,10.); +#502=VECTOR('',#1625,10.); +#503=VECTOR('',#1626,10.); +#504=VECTOR('',#1629,10.); +#505=VECTOR('',#1630,10.); +#506=VECTOR('',#1635,10.); +#507=VECTOR('',#1636,10.); +#508=VECTOR('',#1637,10.); +#509=VECTOR('',#1638,10.); +#510=VECTOR('',#1641,10.); +#511=VECTOR('',#1642,10.); +#512=VECTOR('',#1643,10.); +#513=VECTOR('',#1646,10.); +#514=VECTOR('',#1647,10.); +#515=VECTOR('',#1648,10.); +#516=VECTOR('',#1651,10.); +#517=VECTOR('',#1652,10.); +#518=VECTOR('',#1665,11.6); +#519=VECTOR('',#1672,10.); +#520=VECTOR('',#1681,4.5); +#521=VECTOR('',#1686,4.); +#522=VERTEX_POINT('',#1689); +#523=VERTEX_POINT('',#1690); +#524=VERTEX_POINT('',#1692); +#525=VERTEX_POINT('',#1694); +#526=VERTEX_POINT('',#1698); +#527=VERTEX_POINT('',#1700); +#528=VERTEX_POINT('',#1704); +#529=VERTEX_POINT('',#1706); +#530=VERTEX_POINT('',#1714); +#531=VERTEX_POINT('',#1715); +#532=VERTEX_POINT('',#1717); +#533=VERTEX_POINT('',#1719); +#534=VERTEX_POINT('',#1723); +#535=VERTEX_POINT('',#1725); +#536=VERTEX_POINT('',#1729); +#537=VERTEX_POINT('',#1731); +#538=VERTEX_POINT('',#1739); +#539=VERTEX_POINT('',#1740); +#540=VERTEX_POINT('',#1742); +#541=VERTEX_POINT('',#1744); +#542=VERTEX_POINT('',#1748); +#543=VERTEX_POINT('',#1750); +#544=VERTEX_POINT('',#1754); +#545=VERTEX_POINT('',#1756); +#546=VERTEX_POINT('',#1764); +#547=VERTEX_POINT('',#1765); +#548=VERTEX_POINT('',#1767); +#549=VERTEX_POINT('',#1769); +#550=VERTEX_POINT('',#1773); +#551=VERTEX_POINT('',#1775); +#552=VERTEX_POINT('',#1779); +#553=VERTEX_POINT('',#1781); +#554=VERTEX_POINT('',#1789); +#555=VERTEX_POINT('',#1790); +#556=VERTEX_POINT('',#1792); +#557=VERTEX_POINT('',#1794); +#558=VERTEX_POINT('',#1798); +#559=VERTEX_POINT('',#1800); +#560=VERTEX_POINT('',#1804); +#561=VERTEX_POINT('',#1806); +#562=VERTEX_POINT('',#1814); +#563=VERTEX_POINT('',#1815); +#564=VERTEX_POINT('',#1817); +#565=VERTEX_POINT('',#1819); +#566=VERTEX_POINT('',#1823); +#567=VERTEX_POINT('',#1825); +#568=VERTEX_POINT('',#1829); +#569=VERTEX_POINT('',#1831); +#570=VERTEX_POINT('',#1839); +#571=VERTEX_POINT('',#1840); +#572=VERTEX_POINT('',#1842); +#573=VERTEX_POINT('',#1844); +#574=VERTEX_POINT('',#1848); +#575=VERTEX_POINT('',#1850); +#576=VERTEX_POINT('',#1854); +#577=VERTEX_POINT('',#1856); +#578=VERTEX_POINT('',#1864); +#579=VERTEX_POINT('',#1865); +#580=VERTEX_POINT('',#1867); +#581=VERTEX_POINT('',#1869); +#582=VERTEX_POINT('',#1873); +#583=VERTEX_POINT('',#1875); +#584=VERTEX_POINT('',#1879); +#585=VERTEX_POINT('',#1881); +#586=VERTEX_POINT('',#1889); +#587=VERTEX_POINT('',#1890); +#588=VERTEX_POINT('',#1892); +#589=VERTEX_POINT('',#1894); +#590=VERTEX_POINT('',#1898); +#591=VERTEX_POINT('',#1900); +#592=VERTEX_POINT('',#1904); +#593=VERTEX_POINT('',#1906); +#594=VERTEX_POINT('',#1914); +#595=VERTEX_POINT('',#1915); +#596=VERTEX_POINT('',#1917); +#597=VERTEX_POINT('',#1919); +#598=VERTEX_POINT('',#1923); +#599=VERTEX_POINT('',#1925); +#600=VERTEX_POINT('',#1929); +#601=VERTEX_POINT('',#1931); +#602=VERTEX_POINT('',#1939); +#603=VERTEX_POINT('',#1940); +#604=VERTEX_POINT('',#1942); +#605=VERTEX_POINT('',#1944); +#606=VERTEX_POINT('',#1948); +#607=VERTEX_POINT('',#1950); +#608=VERTEX_POINT('',#1954); +#609=VERTEX_POINT('',#1956); +#610=VERTEX_POINT('',#1964); +#611=VERTEX_POINT('',#1965); +#612=VERTEX_POINT('',#1967); +#613=VERTEX_POINT('',#1969); +#614=VERTEX_POINT('',#1973); +#615=VERTEX_POINT('',#1975); +#616=VERTEX_POINT('',#1979); +#617=VERTEX_POINT('',#1981); +#618=VERTEX_POINT('',#1989); +#619=VERTEX_POINT('',#1990); +#620=VERTEX_POINT('',#1992); +#621=VERTEX_POINT('',#1994); +#622=VERTEX_POINT('',#1998); +#623=VERTEX_POINT('',#2000); +#624=VERTEX_POINT('',#2004); +#625=VERTEX_POINT('',#2006); +#626=VERTEX_POINT('',#2013); +#627=VERTEX_POINT('',#2016); +#628=VERTEX_POINT('',#2019); +#629=VERTEX_POINT('',#2023); +#630=VERTEX_POINT('',#2026); +#631=VERTEX_POINT('',#2030); +#632=VERTEX_POINT('',#2033); +#633=EDGE_CURVE('',#522,#523,#202,.T.); +#634=EDGE_CURVE('',#522,#524,#203,.T.); +#635=EDGE_CURVE('',#524,#525,#204,.T.); +#636=EDGE_CURVE('',#523,#525,#205,.T.); +#637=EDGE_CURVE('',#526,#522,#206,.T.); +#638=EDGE_CURVE('',#526,#527,#207,.T.); +#639=EDGE_CURVE('',#527,#524,#208,.T.); +#640=EDGE_CURVE('',#528,#526,#209,.T.); +#641=EDGE_CURVE('',#528,#529,#210,.T.); +#642=EDGE_CURVE('',#529,#527,#211,.T.); +#643=EDGE_CURVE('',#523,#528,#212,.T.); +#644=EDGE_CURVE('',#525,#529,#213,.T.); +#645=EDGE_CURVE('',#530,#531,#214,.T.); +#646=EDGE_CURVE('',#530,#532,#215,.T.); +#647=EDGE_CURVE('',#532,#533,#216,.T.); +#648=EDGE_CURVE('',#531,#533,#217,.T.); +#649=EDGE_CURVE('',#534,#530,#218,.T.); +#650=EDGE_CURVE('',#534,#535,#219,.T.); +#651=EDGE_CURVE('',#535,#532,#220,.T.); +#652=EDGE_CURVE('',#536,#534,#221,.T.); +#653=EDGE_CURVE('',#536,#537,#222,.T.); +#654=EDGE_CURVE('',#537,#535,#223,.T.); +#655=EDGE_CURVE('',#531,#536,#224,.T.); +#656=EDGE_CURVE('',#533,#537,#225,.T.); +#657=EDGE_CURVE('',#538,#539,#226,.T.); +#658=EDGE_CURVE('',#538,#540,#227,.T.); +#659=EDGE_CURVE('',#540,#541,#228,.T.); +#660=EDGE_CURVE('',#539,#541,#229,.T.); +#661=EDGE_CURVE('',#542,#538,#230,.T.); +#662=EDGE_CURVE('',#542,#543,#231,.T.); +#663=EDGE_CURVE('',#543,#540,#232,.T.); +#664=EDGE_CURVE('',#544,#542,#233,.T.); +#665=EDGE_CURVE('',#544,#545,#234,.T.); +#666=EDGE_CURVE('',#545,#543,#235,.T.); +#667=EDGE_CURVE('',#539,#544,#236,.T.); +#668=EDGE_CURVE('',#541,#545,#237,.T.); +#669=EDGE_CURVE('',#546,#547,#238,.T.); +#670=EDGE_CURVE('',#546,#548,#239,.T.); +#671=EDGE_CURVE('',#548,#549,#240,.T.); +#672=EDGE_CURVE('',#547,#549,#241,.T.); +#673=EDGE_CURVE('',#550,#546,#242,.T.); +#674=EDGE_CURVE('',#550,#551,#243,.T.); +#675=EDGE_CURVE('',#551,#548,#244,.T.); +#676=EDGE_CURVE('',#552,#550,#245,.T.); +#677=EDGE_CURVE('',#552,#553,#246,.T.); +#678=EDGE_CURVE('',#553,#551,#247,.T.); +#679=EDGE_CURVE('',#547,#552,#248,.T.); +#680=EDGE_CURVE('',#549,#553,#249,.T.); +#681=EDGE_CURVE('',#554,#555,#250,.T.); +#682=EDGE_CURVE('',#554,#556,#251,.T.); +#683=EDGE_CURVE('',#556,#557,#252,.T.); +#684=EDGE_CURVE('',#555,#557,#253,.T.); +#685=EDGE_CURVE('',#558,#554,#254,.T.); +#686=EDGE_CURVE('',#558,#559,#255,.T.); +#687=EDGE_CURVE('',#559,#556,#256,.T.); +#688=EDGE_CURVE('',#560,#558,#257,.T.); +#689=EDGE_CURVE('',#560,#561,#258,.T.); +#690=EDGE_CURVE('',#561,#559,#259,.T.); +#691=EDGE_CURVE('',#555,#560,#260,.T.); +#692=EDGE_CURVE('',#557,#561,#261,.T.); +#693=EDGE_CURVE('',#562,#563,#262,.T.); +#694=EDGE_CURVE('',#562,#564,#263,.T.); +#695=EDGE_CURVE('',#564,#565,#264,.T.); +#696=EDGE_CURVE('',#563,#565,#265,.T.); +#697=EDGE_CURVE('',#566,#562,#266,.T.); +#698=EDGE_CURVE('',#566,#567,#267,.T.); +#699=EDGE_CURVE('',#567,#564,#268,.T.); +#700=EDGE_CURVE('',#568,#566,#269,.T.); +#701=EDGE_CURVE('',#568,#569,#270,.T.); +#702=EDGE_CURVE('',#569,#567,#271,.T.); +#703=EDGE_CURVE('',#563,#568,#272,.T.); +#704=EDGE_CURVE('',#565,#569,#273,.T.); +#705=EDGE_CURVE('',#570,#571,#274,.T.); +#706=EDGE_CURVE('',#570,#572,#275,.T.); +#707=EDGE_CURVE('',#572,#573,#276,.T.); +#708=EDGE_CURVE('',#571,#573,#277,.T.); +#709=EDGE_CURVE('',#574,#570,#278,.T.); +#710=EDGE_CURVE('',#574,#575,#279,.T.); +#711=EDGE_CURVE('',#575,#572,#280,.T.); +#712=EDGE_CURVE('',#576,#574,#281,.T.); +#713=EDGE_CURVE('',#576,#577,#282,.T.); +#714=EDGE_CURVE('',#577,#575,#283,.T.); +#715=EDGE_CURVE('',#571,#576,#284,.T.); +#716=EDGE_CURVE('',#573,#577,#285,.T.); +#717=EDGE_CURVE('',#578,#579,#286,.T.); +#718=EDGE_CURVE('',#578,#580,#287,.T.); +#719=EDGE_CURVE('',#580,#581,#288,.T.); +#720=EDGE_CURVE('',#579,#581,#289,.T.); +#721=EDGE_CURVE('',#582,#578,#290,.T.); +#722=EDGE_CURVE('',#582,#583,#291,.T.); +#723=EDGE_CURVE('',#583,#580,#292,.T.); +#724=EDGE_CURVE('',#584,#582,#293,.T.); +#725=EDGE_CURVE('',#584,#585,#294,.T.); +#726=EDGE_CURVE('',#585,#583,#295,.T.); +#727=EDGE_CURVE('',#579,#584,#296,.T.); +#728=EDGE_CURVE('',#581,#585,#297,.T.); +#729=EDGE_CURVE('',#586,#587,#298,.T.); +#730=EDGE_CURVE('',#586,#588,#299,.T.); +#731=EDGE_CURVE('',#588,#589,#300,.T.); +#732=EDGE_CURVE('',#587,#589,#301,.T.); +#733=EDGE_CURVE('',#590,#586,#302,.T.); +#734=EDGE_CURVE('',#590,#591,#303,.T.); +#735=EDGE_CURVE('',#591,#588,#304,.T.); +#736=EDGE_CURVE('',#592,#590,#305,.T.); +#737=EDGE_CURVE('',#592,#593,#306,.T.); +#738=EDGE_CURVE('',#593,#591,#307,.T.); +#739=EDGE_CURVE('',#587,#592,#308,.T.); +#740=EDGE_CURVE('',#589,#593,#309,.T.); +#741=EDGE_CURVE('',#594,#595,#310,.T.); +#742=EDGE_CURVE('',#594,#596,#311,.T.); +#743=EDGE_CURVE('',#596,#597,#312,.T.); +#744=EDGE_CURVE('',#595,#597,#313,.T.); +#745=EDGE_CURVE('',#598,#594,#314,.T.); +#746=EDGE_CURVE('',#598,#599,#315,.T.); +#747=EDGE_CURVE('',#599,#596,#316,.T.); +#748=EDGE_CURVE('',#600,#598,#317,.T.); +#749=EDGE_CURVE('',#600,#601,#318,.T.); +#750=EDGE_CURVE('',#601,#599,#319,.T.); +#751=EDGE_CURVE('',#595,#600,#320,.T.); +#752=EDGE_CURVE('',#597,#601,#321,.T.); +#753=EDGE_CURVE('',#602,#603,#322,.T.); +#754=EDGE_CURVE('',#602,#604,#323,.T.); +#755=EDGE_CURVE('',#604,#605,#324,.T.); +#756=EDGE_CURVE('',#603,#605,#325,.T.); +#757=EDGE_CURVE('',#606,#602,#326,.T.); +#758=EDGE_CURVE('',#606,#607,#327,.T.); +#759=EDGE_CURVE('',#607,#604,#328,.T.); +#760=EDGE_CURVE('',#608,#606,#329,.T.); +#761=EDGE_CURVE('',#608,#609,#330,.T.); +#762=EDGE_CURVE('',#609,#607,#331,.T.); +#763=EDGE_CURVE('',#603,#608,#332,.T.); +#764=EDGE_CURVE('',#605,#609,#333,.T.); +#765=EDGE_CURVE('',#610,#611,#334,.T.); +#766=EDGE_CURVE('',#610,#612,#335,.T.); +#767=EDGE_CURVE('',#612,#613,#336,.T.); +#768=EDGE_CURVE('',#611,#613,#337,.T.); +#769=EDGE_CURVE('',#614,#610,#338,.T.); +#770=EDGE_CURVE('',#614,#615,#339,.T.); +#771=EDGE_CURVE('',#615,#612,#340,.T.); +#772=EDGE_CURVE('',#616,#614,#341,.T.); +#773=EDGE_CURVE('',#616,#617,#342,.T.); +#774=EDGE_CURVE('',#617,#615,#343,.T.); +#775=EDGE_CURVE('',#611,#616,#344,.T.); +#776=EDGE_CURVE('',#613,#617,#345,.T.); +#777=EDGE_CURVE('',#618,#619,#346,.T.); +#778=EDGE_CURVE('',#619,#620,#347,.T.); +#779=EDGE_CURVE('',#621,#620,#348,.T.); +#780=EDGE_CURVE('',#618,#621,#349,.T.); +#781=EDGE_CURVE('',#622,#618,#350,.T.); +#782=EDGE_CURVE('',#623,#621,#351,.T.); +#783=EDGE_CURVE('',#622,#623,#352,.T.); +#784=EDGE_CURVE('',#624,#622,#353,.T.); +#785=EDGE_CURVE('',#625,#623,#354,.T.); +#786=EDGE_CURVE('',#624,#625,#355,.T.); +#787=EDGE_CURVE('',#619,#624,#356,.T.); +#788=EDGE_CURVE('',#620,#625,#357,.T.); +#789=EDGE_CURVE('',#626,#626,#35,.T.); +#790=EDGE_CURVE('',#627,#627,#36,.T.); +#791=EDGE_CURVE('',#628,#628,#37,.T.); +#792=EDGE_CURVE('',#628,#626,#358,.T.); +#793=EDGE_CURVE('',#629,#629,#38,.T.); +#794=EDGE_CURVE('',#629,#630,#359,.T.); +#795=EDGE_CURVE('',#630,#630,#39,.T.); +#796=EDGE_CURVE('',#631,#631,#40,.T.); +#797=EDGE_CURVE('',#631,#632,#360,.T.); +#798=EDGE_CURVE('',#632,#632,#41,.T.); +#799=EDGE_CURVE('',#632,#627,#361,.T.); +#800=ORIENTED_EDGE('',*,*,#633,.F.); +#801=ORIENTED_EDGE('',*,*,#634,.T.); +#802=ORIENTED_EDGE('',*,*,#635,.T.); +#803=ORIENTED_EDGE('',*,*,#636,.F.); +#804=ORIENTED_EDGE('',*,*,#637,.F.); +#805=ORIENTED_EDGE('',*,*,#638,.T.); +#806=ORIENTED_EDGE('',*,*,#639,.T.); +#807=ORIENTED_EDGE('',*,*,#634,.F.); +#808=ORIENTED_EDGE('',*,*,#640,.F.); +#809=ORIENTED_EDGE('',*,*,#641,.T.); +#810=ORIENTED_EDGE('',*,*,#642,.T.); +#811=ORIENTED_EDGE('',*,*,#638,.F.); +#812=ORIENTED_EDGE('',*,*,#643,.F.); +#813=ORIENTED_EDGE('',*,*,#636,.T.); +#814=ORIENTED_EDGE('',*,*,#644,.T.); +#815=ORIENTED_EDGE('',*,*,#641,.F.); +#816=ORIENTED_EDGE('',*,*,#644,.F.); +#817=ORIENTED_EDGE('',*,*,#635,.F.); +#818=ORIENTED_EDGE('',*,*,#639,.F.); +#819=ORIENTED_EDGE('',*,*,#642,.F.); +#820=ORIENTED_EDGE('',*,*,#645,.F.); +#821=ORIENTED_EDGE('',*,*,#646,.T.); +#822=ORIENTED_EDGE('',*,*,#647,.T.); +#823=ORIENTED_EDGE('',*,*,#648,.F.); +#824=ORIENTED_EDGE('',*,*,#649,.F.); +#825=ORIENTED_EDGE('',*,*,#650,.T.); +#826=ORIENTED_EDGE('',*,*,#651,.T.); +#827=ORIENTED_EDGE('',*,*,#646,.F.); +#828=ORIENTED_EDGE('',*,*,#652,.F.); +#829=ORIENTED_EDGE('',*,*,#653,.T.); +#830=ORIENTED_EDGE('',*,*,#654,.T.); +#831=ORIENTED_EDGE('',*,*,#650,.F.); +#832=ORIENTED_EDGE('',*,*,#655,.F.); +#833=ORIENTED_EDGE('',*,*,#648,.T.); +#834=ORIENTED_EDGE('',*,*,#656,.T.); +#835=ORIENTED_EDGE('',*,*,#653,.F.); +#836=ORIENTED_EDGE('',*,*,#656,.F.); +#837=ORIENTED_EDGE('',*,*,#647,.F.); +#838=ORIENTED_EDGE('',*,*,#651,.F.); +#839=ORIENTED_EDGE('',*,*,#654,.F.); +#840=ORIENTED_EDGE('',*,*,#657,.F.); +#841=ORIENTED_EDGE('',*,*,#658,.T.); +#842=ORIENTED_EDGE('',*,*,#659,.T.); +#843=ORIENTED_EDGE('',*,*,#660,.F.); +#844=ORIENTED_EDGE('',*,*,#661,.F.); +#845=ORIENTED_EDGE('',*,*,#662,.T.); +#846=ORIENTED_EDGE('',*,*,#663,.T.); +#847=ORIENTED_EDGE('',*,*,#658,.F.); +#848=ORIENTED_EDGE('',*,*,#664,.F.); +#849=ORIENTED_EDGE('',*,*,#665,.T.); +#850=ORIENTED_EDGE('',*,*,#666,.T.); +#851=ORIENTED_EDGE('',*,*,#662,.F.); +#852=ORIENTED_EDGE('',*,*,#667,.F.); +#853=ORIENTED_EDGE('',*,*,#660,.T.); +#854=ORIENTED_EDGE('',*,*,#668,.T.); +#855=ORIENTED_EDGE('',*,*,#665,.F.); +#856=ORIENTED_EDGE('',*,*,#668,.F.); +#857=ORIENTED_EDGE('',*,*,#659,.F.); +#858=ORIENTED_EDGE('',*,*,#663,.F.); +#859=ORIENTED_EDGE('',*,*,#666,.F.); +#860=ORIENTED_EDGE('',*,*,#669,.F.); +#861=ORIENTED_EDGE('',*,*,#670,.T.); +#862=ORIENTED_EDGE('',*,*,#671,.T.); +#863=ORIENTED_EDGE('',*,*,#672,.F.); +#864=ORIENTED_EDGE('',*,*,#673,.F.); +#865=ORIENTED_EDGE('',*,*,#674,.T.); +#866=ORIENTED_EDGE('',*,*,#675,.T.); +#867=ORIENTED_EDGE('',*,*,#670,.F.); +#868=ORIENTED_EDGE('',*,*,#676,.F.); +#869=ORIENTED_EDGE('',*,*,#677,.T.); +#870=ORIENTED_EDGE('',*,*,#678,.T.); +#871=ORIENTED_EDGE('',*,*,#674,.F.); +#872=ORIENTED_EDGE('',*,*,#679,.F.); +#873=ORIENTED_EDGE('',*,*,#672,.T.); +#874=ORIENTED_EDGE('',*,*,#680,.T.); +#875=ORIENTED_EDGE('',*,*,#677,.F.); +#876=ORIENTED_EDGE('',*,*,#680,.F.); +#877=ORIENTED_EDGE('',*,*,#671,.F.); +#878=ORIENTED_EDGE('',*,*,#675,.F.); +#879=ORIENTED_EDGE('',*,*,#678,.F.); +#880=ORIENTED_EDGE('',*,*,#681,.F.); +#881=ORIENTED_EDGE('',*,*,#682,.T.); +#882=ORIENTED_EDGE('',*,*,#683,.T.); +#883=ORIENTED_EDGE('',*,*,#684,.F.); +#884=ORIENTED_EDGE('',*,*,#685,.F.); +#885=ORIENTED_EDGE('',*,*,#686,.T.); +#886=ORIENTED_EDGE('',*,*,#687,.T.); +#887=ORIENTED_EDGE('',*,*,#682,.F.); +#888=ORIENTED_EDGE('',*,*,#688,.F.); +#889=ORIENTED_EDGE('',*,*,#689,.T.); +#890=ORIENTED_EDGE('',*,*,#690,.T.); +#891=ORIENTED_EDGE('',*,*,#686,.F.); +#892=ORIENTED_EDGE('',*,*,#691,.F.); +#893=ORIENTED_EDGE('',*,*,#684,.T.); +#894=ORIENTED_EDGE('',*,*,#692,.T.); +#895=ORIENTED_EDGE('',*,*,#689,.F.); +#896=ORIENTED_EDGE('',*,*,#692,.F.); +#897=ORIENTED_EDGE('',*,*,#683,.F.); +#898=ORIENTED_EDGE('',*,*,#687,.F.); +#899=ORIENTED_EDGE('',*,*,#690,.F.); +#900=ORIENTED_EDGE('',*,*,#693,.F.); +#901=ORIENTED_EDGE('',*,*,#694,.T.); +#902=ORIENTED_EDGE('',*,*,#695,.T.); +#903=ORIENTED_EDGE('',*,*,#696,.F.); +#904=ORIENTED_EDGE('',*,*,#697,.F.); +#905=ORIENTED_EDGE('',*,*,#698,.T.); +#906=ORIENTED_EDGE('',*,*,#699,.T.); +#907=ORIENTED_EDGE('',*,*,#694,.F.); +#908=ORIENTED_EDGE('',*,*,#700,.F.); +#909=ORIENTED_EDGE('',*,*,#701,.T.); +#910=ORIENTED_EDGE('',*,*,#702,.T.); +#911=ORIENTED_EDGE('',*,*,#698,.F.); +#912=ORIENTED_EDGE('',*,*,#703,.F.); +#913=ORIENTED_EDGE('',*,*,#696,.T.); +#914=ORIENTED_EDGE('',*,*,#704,.T.); +#915=ORIENTED_EDGE('',*,*,#701,.F.); +#916=ORIENTED_EDGE('',*,*,#704,.F.); +#917=ORIENTED_EDGE('',*,*,#695,.F.); +#918=ORIENTED_EDGE('',*,*,#699,.F.); +#919=ORIENTED_EDGE('',*,*,#702,.F.); +#920=ORIENTED_EDGE('',*,*,#705,.F.); +#921=ORIENTED_EDGE('',*,*,#706,.T.); +#922=ORIENTED_EDGE('',*,*,#707,.T.); +#923=ORIENTED_EDGE('',*,*,#708,.F.); +#924=ORIENTED_EDGE('',*,*,#709,.F.); +#925=ORIENTED_EDGE('',*,*,#710,.T.); +#926=ORIENTED_EDGE('',*,*,#711,.T.); +#927=ORIENTED_EDGE('',*,*,#706,.F.); +#928=ORIENTED_EDGE('',*,*,#712,.F.); +#929=ORIENTED_EDGE('',*,*,#713,.T.); +#930=ORIENTED_EDGE('',*,*,#714,.T.); +#931=ORIENTED_EDGE('',*,*,#710,.F.); +#932=ORIENTED_EDGE('',*,*,#715,.F.); +#933=ORIENTED_EDGE('',*,*,#708,.T.); +#934=ORIENTED_EDGE('',*,*,#716,.T.); +#935=ORIENTED_EDGE('',*,*,#713,.F.); +#936=ORIENTED_EDGE('',*,*,#716,.F.); +#937=ORIENTED_EDGE('',*,*,#707,.F.); +#938=ORIENTED_EDGE('',*,*,#711,.F.); +#939=ORIENTED_EDGE('',*,*,#714,.F.); +#940=ORIENTED_EDGE('',*,*,#717,.F.); +#941=ORIENTED_EDGE('',*,*,#718,.T.); +#942=ORIENTED_EDGE('',*,*,#719,.T.); +#943=ORIENTED_EDGE('',*,*,#720,.F.); +#944=ORIENTED_EDGE('',*,*,#721,.F.); +#945=ORIENTED_EDGE('',*,*,#722,.T.); +#946=ORIENTED_EDGE('',*,*,#723,.T.); +#947=ORIENTED_EDGE('',*,*,#718,.F.); +#948=ORIENTED_EDGE('',*,*,#724,.F.); +#949=ORIENTED_EDGE('',*,*,#725,.T.); +#950=ORIENTED_EDGE('',*,*,#726,.T.); +#951=ORIENTED_EDGE('',*,*,#722,.F.); +#952=ORIENTED_EDGE('',*,*,#727,.F.); +#953=ORIENTED_EDGE('',*,*,#720,.T.); +#954=ORIENTED_EDGE('',*,*,#728,.T.); +#955=ORIENTED_EDGE('',*,*,#725,.F.); +#956=ORIENTED_EDGE('',*,*,#728,.F.); +#957=ORIENTED_EDGE('',*,*,#719,.F.); +#958=ORIENTED_EDGE('',*,*,#723,.F.); +#959=ORIENTED_EDGE('',*,*,#726,.F.); +#960=ORIENTED_EDGE('',*,*,#729,.F.); +#961=ORIENTED_EDGE('',*,*,#730,.T.); +#962=ORIENTED_EDGE('',*,*,#731,.T.); +#963=ORIENTED_EDGE('',*,*,#732,.F.); +#964=ORIENTED_EDGE('',*,*,#733,.F.); +#965=ORIENTED_EDGE('',*,*,#734,.T.); +#966=ORIENTED_EDGE('',*,*,#735,.T.); +#967=ORIENTED_EDGE('',*,*,#730,.F.); +#968=ORIENTED_EDGE('',*,*,#736,.F.); +#969=ORIENTED_EDGE('',*,*,#737,.T.); +#970=ORIENTED_EDGE('',*,*,#738,.T.); +#971=ORIENTED_EDGE('',*,*,#734,.F.); +#972=ORIENTED_EDGE('',*,*,#739,.F.); +#973=ORIENTED_EDGE('',*,*,#732,.T.); +#974=ORIENTED_EDGE('',*,*,#740,.T.); +#975=ORIENTED_EDGE('',*,*,#737,.F.); +#976=ORIENTED_EDGE('',*,*,#740,.F.); +#977=ORIENTED_EDGE('',*,*,#731,.F.); +#978=ORIENTED_EDGE('',*,*,#735,.F.); +#979=ORIENTED_EDGE('',*,*,#738,.F.); +#980=ORIENTED_EDGE('',*,*,#741,.F.); +#981=ORIENTED_EDGE('',*,*,#742,.T.); +#982=ORIENTED_EDGE('',*,*,#743,.T.); +#983=ORIENTED_EDGE('',*,*,#744,.F.); +#984=ORIENTED_EDGE('',*,*,#745,.F.); +#985=ORIENTED_EDGE('',*,*,#746,.T.); +#986=ORIENTED_EDGE('',*,*,#747,.T.); +#987=ORIENTED_EDGE('',*,*,#742,.F.); +#988=ORIENTED_EDGE('',*,*,#748,.F.); +#989=ORIENTED_EDGE('',*,*,#749,.T.); +#990=ORIENTED_EDGE('',*,*,#750,.T.); +#991=ORIENTED_EDGE('',*,*,#746,.F.); +#992=ORIENTED_EDGE('',*,*,#751,.F.); +#993=ORIENTED_EDGE('',*,*,#744,.T.); +#994=ORIENTED_EDGE('',*,*,#752,.T.); +#995=ORIENTED_EDGE('',*,*,#749,.F.); +#996=ORIENTED_EDGE('',*,*,#752,.F.); +#997=ORIENTED_EDGE('',*,*,#743,.F.); +#998=ORIENTED_EDGE('',*,*,#747,.F.); +#999=ORIENTED_EDGE('',*,*,#750,.F.); +#1000=ORIENTED_EDGE('',*,*,#753,.F.); +#1001=ORIENTED_EDGE('',*,*,#754,.T.); +#1002=ORIENTED_EDGE('',*,*,#755,.T.); +#1003=ORIENTED_EDGE('',*,*,#756,.F.); +#1004=ORIENTED_EDGE('',*,*,#757,.F.); +#1005=ORIENTED_EDGE('',*,*,#758,.T.); +#1006=ORIENTED_EDGE('',*,*,#759,.T.); +#1007=ORIENTED_EDGE('',*,*,#754,.F.); +#1008=ORIENTED_EDGE('',*,*,#760,.F.); +#1009=ORIENTED_EDGE('',*,*,#761,.T.); +#1010=ORIENTED_EDGE('',*,*,#762,.T.); +#1011=ORIENTED_EDGE('',*,*,#758,.F.); +#1012=ORIENTED_EDGE('',*,*,#763,.F.); +#1013=ORIENTED_EDGE('',*,*,#756,.T.); +#1014=ORIENTED_EDGE('',*,*,#764,.T.); +#1015=ORIENTED_EDGE('',*,*,#761,.F.); +#1016=ORIENTED_EDGE('',*,*,#764,.F.); +#1017=ORIENTED_EDGE('',*,*,#755,.F.); +#1018=ORIENTED_EDGE('',*,*,#759,.F.); +#1019=ORIENTED_EDGE('',*,*,#762,.F.); +#1020=ORIENTED_EDGE('',*,*,#765,.F.); +#1021=ORIENTED_EDGE('',*,*,#766,.T.); +#1022=ORIENTED_EDGE('',*,*,#767,.T.); +#1023=ORIENTED_EDGE('',*,*,#768,.F.); +#1024=ORIENTED_EDGE('',*,*,#769,.F.); +#1025=ORIENTED_EDGE('',*,*,#770,.T.); +#1026=ORIENTED_EDGE('',*,*,#771,.T.); +#1027=ORIENTED_EDGE('',*,*,#766,.F.); +#1028=ORIENTED_EDGE('',*,*,#772,.F.); +#1029=ORIENTED_EDGE('',*,*,#773,.T.); +#1030=ORIENTED_EDGE('',*,*,#774,.T.); +#1031=ORIENTED_EDGE('',*,*,#770,.F.); +#1032=ORIENTED_EDGE('',*,*,#775,.F.); +#1033=ORIENTED_EDGE('',*,*,#768,.T.); +#1034=ORIENTED_EDGE('',*,*,#776,.T.); +#1035=ORIENTED_EDGE('',*,*,#773,.F.); +#1036=ORIENTED_EDGE('',*,*,#776,.F.); +#1037=ORIENTED_EDGE('',*,*,#767,.F.); +#1038=ORIENTED_EDGE('',*,*,#771,.F.); +#1039=ORIENTED_EDGE('',*,*,#774,.F.); +#1040=ORIENTED_EDGE('',*,*,#777,.T.); +#1041=ORIENTED_EDGE('',*,*,#778,.T.); +#1042=ORIENTED_EDGE('',*,*,#779,.F.); +#1043=ORIENTED_EDGE('',*,*,#780,.F.); +#1044=ORIENTED_EDGE('',*,*,#781,.T.); +#1045=ORIENTED_EDGE('',*,*,#780,.T.); +#1046=ORIENTED_EDGE('',*,*,#782,.F.); +#1047=ORIENTED_EDGE('',*,*,#783,.F.); +#1048=ORIENTED_EDGE('',*,*,#784,.T.); +#1049=ORIENTED_EDGE('',*,*,#783,.T.); +#1050=ORIENTED_EDGE('',*,*,#785,.F.); +#1051=ORIENTED_EDGE('',*,*,#786,.F.); +#1052=ORIENTED_EDGE('',*,*,#787,.T.); +#1053=ORIENTED_EDGE('',*,*,#786,.T.); +#1054=ORIENTED_EDGE('',*,*,#788,.F.); +#1055=ORIENTED_EDGE('',*,*,#778,.F.); +#1056=ORIENTED_EDGE('',*,*,#788,.T.); +#1057=ORIENTED_EDGE('',*,*,#785,.T.); +#1058=ORIENTED_EDGE('',*,*,#782,.T.); +#1059=ORIENTED_EDGE('',*,*,#779,.T.); +#1060=ORIENTED_EDGE('',*,*,#789,.F.); +#1061=ORIENTED_EDGE('',*,*,#787,.F.); +#1062=ORIENTED_EDGE('',*,*,#777,.F.); +#1063=ORIENTED_EDGE('',*,*,#781,.F.); +#1064=ORIENTED_EDGE('',*,*,#784,.F.); +#1065=ORIENTED_EDGE('',*,*,#790,.T.); +#1066=ORIENTED_EDGE('',*,*,#791,.F.); +#1067=ORIENTED_EDGE('',*,*,#792,.T.); +#1068=ORIENTED_EDGE('',*,*,#789,.T.); +#1069=ORIENTED_EDGE('',*,*,#792,.F.); +#1070=ORIENTED_EDGE('',*,*,#791,.T.); +#1071=ORIENTED_EDGE('',*,*,#793,.F.); +#1072=ORIENTED_EDGE('',*,*,#793,.T.); +#1073=ORIENTED_EDGE('',*,*,#794,.T.); +#1074=ORIENTED_EDGE('',*,*,#795,.F.); +#1075=ORIENTED_EDGE('',*,*,#794,.F.); +#1076=ORIENTED_EDGE('',*,*,#795,.T.); +#1077=ORIENTED_EDGE('',*,*,#633,.T.); +#1078=ORIENTED_EDGE('',*,*,#643,.T.); +#1079=ORIENTED_EDGE('',*,*,#640,.T.); +#1080=ORIENTED_EDGE('',*,*,#637,.T.); +#1081=ORIENTED_EDGE('',*,*,#645,.T.); +#1082=ORIENTED_EDGE('',*,*,#655,.T.); +#1083=ORIENTED_EDGE('',*,*,#652,.T.); +#1084=ORIENTED_EDGE('',*,*,#649,.T.); +#1085=ORIENTED_EDGE('',*,*,#657,.T.); +#1086=ORIENTED_EDGE('',*,*,#667,.T.); +#1087=ORIENTED_EDGE('',*,*,#664,.T.); +#1088=ORIENTED_EDGE('',*,*,#661,.T.); +#1089=ORIENTED_EDGE('',*,*,#669,.T.); +#1090=ORIENTED_EDGE('',*,*,#679,.T.); +#1091=ORIENTED_EDGE('',*,*,#676,.T.); +#1092=ORIENTED_EDGE('',*,*,#673,.T.); +#1093=ORIENTED_EDGE('',*,*,#681,.T.); +#1094=ORIENTED_EDGE('',*,*,#691,.T.); +#1095=ORIENTED_EDGE('',*,*,#688,.T.); +#1096=ORIENTED_EDGE('',*,*,#685,.T.); +#1097=ORIENTED_EDGE('',*,*,#693,.T.); +#1098=ORIENTED_EDGE('',*,*,#703,.T.); +#1099=ORIENTED_EDGE('',*,*,#700,.T.); +#1100=ORIENTED_EDGE('',*,*,#697,.T.); +#1101=ORIENTED_EDGE('',*,*,#705,.T.); +#1102=ORIENTED_EDGE('',*,*,#715,.T.); +#1103=ORIENTED_EDGE('',*,*,#712,.T.); +#1104=ORIENTED_EDGE('',*,*,#709,.T.); +#1105=ORIENTED_EDGE('',*,*,#717,.T.); +#1106=ORIENTED_EDGE('',*,*,#727,.T.); +#1107=ORIENTED_EDGE('',*,*,#724,.T.); +#1108=ORIENTED_EDGE('',*,*,#721,.T.); +#1109=ORIENTED_EDGE('',*,*,#729,.T.); +#1110=ORIENTED_EDGE('',*,*,#739,.T.); +#1111=ORIENTED_EDGE('',*,*,#736,.T.); +#1112=ORIENTED_EDGE('',*,*,#733,.T.); +#1113=ORIENTED_EDGE('',*,*,#741,.T.); +#1114=ORIENTED_EDGE('',*,*,#751,.T.); +#1115=ORIENTED_EDGE('',*,*,#748,.T.); +#1116=ORIENTED_EDGE('',*,*,#745,.T.); +#1117=ORIENTED_EDGE('',*,*,#753,.T.); +#1118=ORIENTED_EDGE('',*,*,#763,.T.); +#1119=ORIENTED_EDGE('',*,*,#760,.T.); +#1120=ORIENTED_EDGE('',*,*,#757,.T.); +#1121=ORIENTED_EDGE('',*,*,#765,.T.); +#1122=ORIENTED_EDGE('',*,*,#775,.T.); +#1123=ORIENTED_EDGE('',*,*,#772,.T.); +#1124=ORIENTED_EDGE('',*,*,#769,.T.); +#1125=ORIENTED_EDGE('',*,*,#796,.F.); +#1126=ORIENTED_EDGE('',*,*,#796,.T.); +#1127=ORIENTED_EDGE('',*,*,#797,.T.); +#1128=ORIENTED_EDGE('',*,*,#798,.F.); +#1129=ORIENTED_EDGE('',*,*,#797,.F.); +#1130=ORIENTED_EDGE('',*,*,#798,.T.); +#1131=ORIENTED_EDGE('',*,*,#799,.T.); +#1132=ORIENTED_EDGE('',*,*,#790,.F.); +#1133=ORIENTED_EDGE('',*,*,#799,.F.); +#1134=PLANE('',#1288); +#1135=PLANE('',#1289); +#1136=PLANE('',#1290); +#1137=PLANE('',#1291); +#1138=PLANE('',#1292); +#1139=PLANE('',#1293); +#1140=PLANE('',#1294); +#1141=PLANE('',#1295); +#1142=PLANE('',#1296); +#1143=PLANE('',#1297); +#1144=PLANE('',#1298); +#1145=PLANE('',#1299); +#1146=PLANE('',#1300); +#1147=PLANE('',#1301); +#1148=PLANE('',#1302); +#1149=PLANE('',#1303); +#1150=PLANE('',#1304); +#1151=PLANE('',#1305); +#1152=PLANE('',#1306); +#1153=PLANE('',#1307); +#1154=PLANE('',#1308); +#1155=PLANE('',#1309); +#1156=PLANE('',#1310); +#1157=PLANE('',#1311); +#1158=PLANE('',#1312); +#1159=PLANE('',#1313); +#1160=PLANE('',#1314); +#1161=PLANE('',#1315); +#1162=PLANE('',#1316); +#1163=PLANE('',#1317); +#1164=PLANE('',#1318); +#1165=PLANE('',#1319); +#1166=PLANE('',#1320); +#1167=PLANE('',#1321); +#1168=PLANE('',#1322); +#1169=PLANE('',#1323); +#1170=PLANE('',#1324); +#1171=PLANE('',#1325); +#1172=PLANE('',#1326); +#1173=PLANE('',#1327); +#1174=PLANE('',#1328); +#1175=PLANE('',#1329); +#1176=PLANE('',#1330); +#1177=PLANE('',#1331); +#1178=PLANE('',#1332); +#1179=PLANE('',#1333); +#1180=PLANE('',#1334); +#1181=PLANE('',#1335); +#1182=PLANE('',#1336); +#1183=PLANE('',#1337); +#1184=PLANE('',#1338); +#1185=PLANE('',#1339); +#1186=PLANE('',#1340); +#1187=PLANE('',#1341); +#1188=PLANE('',#1342); +#1189=PLANE('',#1343); +#1190=PLANE('',#1344); +#1191=PLANE('',#1345); +#1192=PLANE('',#1346); +#1193=PLANE('',#1347); +#1194=PLANE('',#1348); +#1195=PLANE('',#1349); +#1196=PLANE('',#1350); +#1197=PLANE('',#1351); +#1198=PLANE('',#1352); +#1199=PLANE('',#1354); +#1200=PLANE('',#1358); +#1201=PLANE('',#1362); +#1202=ADVANCED_FACE('',(#42),#1134,.F.); +#1203=ADVANCED_FACE('',(#43),#1135,.F.); +#1204=ADVANCED_FACE('',(#44),#1136,.F.); +#1205=ADVANCED_FACE('',(#45),#1137,.F.); +#1206=ADVANCED_FACE('',(#46),#1138,.F.); +#1207=ADVANCED_FACE('',(#47),#1139,.F.); +#1208=ADVANCED_FACE('',(#48),#1140,.F.); +#1209=ADVANCED_FACE('',(#49),#1141,.F.); +#1210=ADVANCED_FACE('',(#50),#1142,.F.); +#1211=ADVANCED_FACE('',(#51),#1143,.F.); +#1212=ADVANCED_FACE('',(#52),#1144,.F.); +#1213=ADVANCED_FACE('',(#53),#1145,.F.); +#1214=ADVANCED_FACE('',(#54),#1146,.F.); +#1215=ADVANCED_FACE('',(#55),#1147,.F.); +#1216=ADVANCED_FACE('',(#56),#1148,.F.); +#1217=ADVANCED_FACE('',(#57),#1149,.F.); +#1218=ADVANCED_FACE('',(#58),#1150,.F.); +#1219=ADVANCED_FACE('',(#59),#1151,.F.); +#1220=ADVANCED_FACE('',(#60),#1152,.F.); +#1221=ADVANCED_FACE('',(#61),#1153,.F.); +#1222=ADVANCED_FACE('',(#62),#1154,.F.); +#1223=ADVANCED_FACE('',(#63),#1155,.F.); +#1224=ADVANCED_FACE('',(#64),#1156,.F.); +#1225=ADVANCED_FACE('',(#65),#1157,.F.); +#1226=ADVANCED_FACE('',(#66),#1158,.F.); +#1227=ADVANCED_FACE('',(#67),#1159,.F.); +#1228=ADVANCED_FACE('',(#68),#1160,.F.); +#1229=ADVANCED_FACE('',(#69),#1161,.F.); +#1230=ADVANCED_FACE('',(#70),#1162,.F.); +#1231=ADVANCED_FACE('',(#71),#1163,.F.); +#1232=ADVANCED_FACE('',(#72),#1164,.F.); +#1233=ADVANCED_FACE('',(#73),#1165,.F.); +#1234=ADVANCED_FACE('',(#74),#1166,.F.); +#1235=ADVANCED_FACE('',(#75),#1167,.F.); +#1236=ADVANCED_FACE('',(#76),#1168,.F.); +#1237=ADVANCED_FACE('',(#77),#1169,.F.); +#1238=ADVANCED_FACE('',(#78),#1170,.F.); +#1239=ADVANCED_FACE('',(#79),#1171,.F.); +#1240=ADVANCED_FACE('',(#80),#1172,.F.); +#1241=ADVANCED_FACE('',(#81),#1173,.F.); +#1242=ADVANCED_FACE('',(#82),#1174,.F.); +#1243=ADVANCED_FACE('',(#83),#1175,.F.); +#1244=ADVANCED_FACE('',(#84),#1176,.F.); +#1245=ADVANCED_FACE('',(#85),#1177,.F.); +#1246=ADVANCED_FACE('',(#86),#1178,.F.); +#1247=ADVANCED_FACE('',(#87),#1179,.F.); +#1248=ADVANCED_FACE('',(#88),#1180,.F.); +#1249=ADVANCED_FACE('',(#89),#1181,.F.); +#1250=ADVANCED_FACE('',(#90),#1182,.F.); +#1251=ADVANCED_FACE('',(#91),#1183,.F.); +#1252=ADVANCED_FACE('',(#92),#1184,.F.); +#1253=ADVANCED_FACE('',(#93),#1185,.F.); +#1254=ADVANCED_FACE('',(#94),#1186,.F.); +#1255=ADVANCED_FACE('',(#95),#1187,.F.); +#1256=ADVANCED_FACE('',(#96),#1188,.F.); +#1257=ADVANCED_FACE('',(#97),#1189,.F.); +#1258=ADVANCED_FACE('',(#98),#1190,.F.); +#1259=ADVANCED_FACE('',(#99),#1191,.F.); +#1260=ADVANCED_FACE('',(#100),#1192,.F.); +#1261=ADVANCED_FACE('',(#101),#1193,.F.); +#1262=ADVANCED_FACE('',(#102),#1194,.T.); +#1263=ADVANCED_FACE('',(#103),#1195,.T.); +#1264=ADVANCED_FACE('',(#104),#1196,.T.); +#1265=ADVANCED_FACE('',(#105),#1197,.T.); +#1266=ADVANCED_FACE('',(#106,#19),#1198,.F.); +#1267=ADVANCED_FACE('',(#107,#20),#1199,.T.); +#1268=ADVANCED_FACE('',(#108),#16,.T.); +#1269=ADVANCED_FACE('',(#109,#21),#1200,.T.); +#1270=ADVANCED_FACE('',(#110),#17,.F.); +#1271=ADVANCED_FACE('',(#111,#22,#23,#24,#25,#26,#27,#28,#29,#30,#31,#32, +#33,#34),#1201,.T.); +#1272=ADVANCED_FACE('',(#112),#15,.F.); +#1273=ADVANCED_FACE('',(#113),#18,.F.); +#1274=CLOSED_SHELL('',(#1202,#1203,#1204,#1205,#1206,#1207,#1208,#1209, +#1210,#1211,#1212,#1213,#1214,#1215,#1216,#1217,#1218,#1219,#1220,#1221, +#1222,#1223,#1224,#1225,#1226,#1227,#1228,#1229,#1230,#1231,#1232,#1233, +#1234,#1235,#1236,#1237,#1238,#1239,#1240,#1241,#1242,#1243,#1244,#1245, +#1246,#1247,#1248,#1249,#1250,#1251,#1252,#1253,#1254,#1255,#1256,#1257, +#1258,#1259,#1260,#1261,#1262,#1263,#1264,#1265,#1266,#1267,#1268,#1269, +#1270,#1271,#1272,#1273)); +#1275=DERIVED_UNIT_ELEMENT(#1277,1.); +#1276=DERIVED_UNIT_ELEMENT(#2043,-3.); +#1277=( +MASS_UNIT() +NAMED_UNIT(*) +SI_UNIT(.KILO.,.GRAM.) +); +#1278=DERIVED_UNIT((#1275,#1276)); +#1279=MEASURE_REPRESENTATION_ITEM('density measure', +POSITIVE_RATIO_MEASURE(7850.),#1278); +#1280=PROPERTY_DEFINITION_REPRESENTATION(#1285,#1282); +#1281=PROPERTY_DEFINITION_REPRESENTATION(#1286,#1283); +#1282=REPRESENTATION('material name',(#1284),#2040); +#1283=REPRESENTATION('density',(#1279),#2040); +#1284=DESCRIPTIVE_REPRESENTATION_ITEM('Steel','Steel'); +#1285=PROPERTY_DEFINITION('material property','material name',#2050); +#1286=PROPERTY_DEFINITION('material property','density of part',#2050); +#1287=AXIS2_PLACEMENT_3D('',#1687,#1367,#1368); +#1288=AXIS2_PLACEMENT_3D('',#1688,#1369,#1370); +#1289=AXIS2_PLACEMENT_3D('',#1697,#1375,#1376); +#1290=AXIS2_PLACEMENT_3D('',#1703,#1380,#1381); +#1291=AXIS2_PLACEMENT_3D('',#1709,#1385,#1386); +#1292=AXIS2_PLACEMENT_3D('',#1712,#1389,#1390); +#1293=AXIS2_PLACEMENT_3D('',#1713,#1391,#1392); +#1294=AXIS2_PLACEMENT_3D('',#1722,#1397,#1398); +#1295=AXIS2_PLACEMENT_3D('',#1728,#1402,#1403); +#1296=AXIS2_PLACEMENT_3D('',#1734,#1407,#1408); +#1297=AXIS2_PLACEMENT_3D('',#1737,#1411,#1412); +#1298=AXIS2_PLACEMENT_3D('',#1738,#1413,#1414); +#1299=AXIS2_PLACEMENT_3D('',#1747,#1419,#1420); +#1300=AXIS2_PLACEMENT_3D('',#1753,#1424,#1425); +#1301=AXIS2_PLACEMENT_3D('',#1759,#1429,#1430); +#1302=AXIS2_PLACEMENT_3D('',#1762,#1433,#1434); +#1303=AXIS2_PLACEMENT_3D('',#1763,#1435,#1436); +#1304=AXIS2_PLACEMENT_3D('',#1772,#1441,#1442); +#1305=AXIS2_PLACEMENT_3D('',#1778,#1446,#1447); +#1306=AXIS2_PLACEMENT_3D('',#1784,#1451,#1452); +#1307=AXIS2_PLACEMENT_3D('',#1787,#1455,#1456); +#1308=AXIS2_PLACEMENT_3D('',#1788,#1457,#1458); +#1309=AXIS2_PLACEMENT_3D('',#1797,#1463,#1464); +#1310=AXIS2_PLACEMENT_3D('',#1803,#1468,#1469); +#1311=AXIS2_PLACEMENT_3D('',#1809,#1473,#1474); +#1312=AXIS2_PLACEMENT_3D('',#1812,#1477,#1478); +#1313=AXIS2_PLACEMENT_3D('',#1813,#1479,#1480); +#1314=AXIS2_PLACEMENT_3D('',#1822,#1485,#1486); +#1315=AXIS2_PLACEMENT_3D('',#1828,#1490,#1491); +#1316=AXIS2_PLACEMENT_3D('',#1834,#1495,#1496); +#1317=AXIS2_PLACEMENT_3D('',#1837,#1499,#1500); +#1318=AXIS2_PLACEMENT_3D('',#1838,#1501,#1502); +#1319=AXIS2_PLACEMENT_3D('',#1847,#1507,#1508); +#1320=AXIS2_PLACEMENT_3D('',#1853,#1512,#1513); +#1321=AXIS2_PLACEMENT_3D('',#1859,#1517,#1518); +#1322=AXIS2_PLACEMENT_3D('',#1862,#1521,#1522); +#1323=AXIS2_PLACEMENT_3D('',#1863,#1523,#1524); +#1324=AXIS2_PLACEMENT_3D('',#1872,#1529,#1530); +#1325=AXIS2_PLACEMENT_3D('',#1878,#1534,#1535); +#1326=AXIS2_PLACEMENT_3D('',#1884,#1539,#1540); +#1327=AXIS2_PLACEMENT_3D('',#1887,#1543,#1544); +#1328=AXIS2_PLACEMENT_3D('',#1888,#1545,#1546); +#1329=AXIS2_PLACEMENT_3D('',#1897,#1551,#1552); +#1330=AXIS2_PLACEMENT_3D('',#1903,#1556,#1557); +#1331=AXIS2_PLACEMENT_3D('',#1909,#1561,#1562); +#1332=AXIS2_PLACEMENT_3D('',#1912,#1565,#1566); +#1333=AXIS2_PLACEMENT_3D('',#1913,#1567,#1568); +#1334=AXIS2_PLACEMENT_3D('',#1922,#1573,#1574); +#1335=AXIS2_PLACEMENT_3D('',#1928,#1578,#1579); +#1336=AXIS2_PLACEMENT_3D('',#1934,#1583,#1584); +#1337=AXIS2_PLACEMENT_3D('',#1937,#1587,#1588); +#1338=AXIS2_PLACEMENT_3D('',#1938,#1589,#1590); +#1339=AXIS2_PLACEMENT_3D('',#1947,#1595,#1596); +#1340=AXIS2_PLACEMENT_3D('',#1953,#1600,#1601); +#1341=AXIS2_PLACEMENT_3D('',#1959,#1605,#1606); +#1342=AXIS2_PLACEMENT_3D('',#1962,#1609,#1610); +#1343=AXIS2_PLACEMENT_3D('',#1963,#1611,#1612); +#1344=AXIS2_PLACEMENT_3D('',#1972,#1617,#1618); +#1345=AXIS2_PLACEMENT_3D('',#1978,#1622,#1623); +#1346=AXIS2_PLACEMENT_3D('',#1984,#1627,#1628); +#1347=AXIS2_PLACEMENT_3D('',#1987,#1631,#1632); +#1348=AXIS2_PLACEMENT_3D('',#1988,#1633,#1634); +#1349=AXIS2_PLACEMENT_3D('',#1997,#1639,#1640); +#1350=AXIS2_PLACEMENT_3D('',#2003,#1644,#1645); +#1351=AXIS2_PLACEMENT_3D('',#2009,#1649,#1650); +#1352=AXIS2_PLACEMENT_3D('',#2012,#1653,#1654); +#1353=AXIS2_PLACEMENT_3D('',#2014,#1655,#1656); +#1354=AXIS2_PLACEMENT_3D('',#2015,#1657,#1658); +#1355=AXIS2_PLACEMENT_3D('',#2017,#1659,#1660); +#1356=AXIS2_PLACEMENT_3D('',#2018,#1661,#1662); +#1357=AXIS2_PLACEMENT_3D('',#2020,#1663,#1664); +#1358=AXIS2_PLACEMENT_3D('',#2022,#1666,#1667); +#1359=AXIS2_PLACEMENT_3D('',#2024,#1668,#1669); +#1360=AXIS2_PLACEMENT_3D('',#2025,#1670,#1671); +#1361=AXIS2_PLACEMENT_3D('',#2028,#1673,#1674); +#1362=AXIS2_PLACEMENT_3D('',#2029,#1675,#1676); +#1363=AXIS2_PLACEMENT_3D('',#2031,#1677,#1678); +#1364=AXIS2_PLACEMENT_3D('',#2032,#1679,#1680); +#1365=AXIS2_PLACEMENT_3D('',#2035,#1682,#1683); +#1366=AXIS2_PLACEMENT_3D('',#2036,#1684,#1685); +#1367=DIRECTION('axis',(0.,0.,1.)); +#1368=DIRECTION('refdir',(1.,0.,0.)); +#1369=DIRECTION('center_axis',(0.866025403784438,-0.5,8.20357802112233E-18)); +#1370=DIRECTION('ref_axis',(-0.5,-0.866025403784438,3.06161699786838E-17)); +#1371=DIRECTION('',(-0.5,-0.866025403784438,3.06161699786839E-17)); +#1372=DIRECTION('',(-8.20357802112232E-18,-3.06161699786838E-17,-1.)); +#1373=DIRECTION('',(-0.5,-0.866025403784438,3.06161699786838E-17)); +#1374=DIRECTION('',(-8.20357802112232E-18,-3.06161699786838E-17,-1.)); +#1375=DIRECTION('center_axis',(0.5,0.866025403784438,-3.06161699786838E-17)); +#1376=DIRECTION('ref_axis',(0.866025403784438,-0.5,8.20357802112233E-18)); +#1377=DIRECTION('',(0.866025403784438,-0.5,-5.30287619362453E-17)); +#1378=DIRECTION('',(-8.20357802112232E-18,-3.06161699786838E-17,-1.)); +#1379=DIRECTION('',(0.866025403784438,-0.5,8.20357802112233E-18)); +#1380=DIRECTION('center_axis',(-0.866025403784438,0.5,-8.20357802112233E-18)); +#1381=DIRECTION('ref_axis',(0.5,0.866025403784438,-3.06161699786838E-17)); +#1382=DIRECTION('',(0.5,0.866025403784438,-3.06161699786839E-17)); +#1383=DIRECTION('',(-8.20357802112232E-18,-3.06161699786838E-17,-1.)); +#1384=DIRECTION('',(0.5,0.866025403784438,-3.06161699786838E-17)); +#1385=DIRECTION('center_axis',(-0.5,-0.866025403784438,3.06161699786838E-17)); +#1386=DIRECTION('ref_axis',(-0.866025403784438,0.5,-8.20357802112233E-18)); +#1387=DIRECTION('',(-0.866025403784438,0.5,5.30287619362453E-17)); +#1388=DIRECTION('',(-0.866025403784438,0.5,-8.20357802112233E-18)); +#1389=DIRECTION('center_axis',(-8.20357802112232E-18,-3.06161699786838E-17, +-1.)); +#1390=DIRECTION('ref_axis',(-0.866025403784438,0.5,-8.20357802112233E-18)); +#1391=DIRECTION('center_axis',(0.499999999999999,-0.866025403784439,3.06161699786839E-17)); +#1392=DIRECTION('ref_axis',(-0.866025403784439,-0.499999999999999,5.30287619362454E-17)); +#1393=DIRECTION('',(-0.866025403784439,-0.499999999999999,5.30287619362454E-17)); +#1394=DIRECTION('',(-3.06161699786839E-17,-5.30287619362454E-17,-1.)); +#1395=DIRECTION('',(-0.866025403784439,-0.499999999999999,5.30287619362454E-17)); +#1396=DIRECTION('',(-3.06161699786839E-17,-5.30287619362454E-17,-1.)); +#1397=DIRECTION('center_axis',(0.866025403784439,0.499999999999999,-5.30287619362454E-17)); +#1398=DIRECTION('ref_axis',(0.499999999999999,-0.866025403784439,3.06161699786839E-17)); +#1399=DIRECTION('',(0.499999999999999,-0.866025403784439,-3.06161699786838E-17)); +#1400=DIRECTION('',(-3.06161699786839E-17,-5.30287619362454E-17,-1.)); +#1401=DIRECTION('',(0.499999999999999,-0.866025403784439,3.06161699786839E-17)); +#1402=DIRECTION('center_axis',(-0.499999999999999,0.866025403784439,-3.06161699786839E-17)); +#1403=DIRECTION('ref_axis',(0.866025403784439,0.499999999999999,-5.30287619362454E-17)); +#1404=DIRECTION('',(0.866025403784439,0.499999999999999,-5.30287619362454E-17)); +#1405=DIRECTION('',(-3.06161699786839E-17,-5.30287619362454E-17,-1.)); +#1406=DIRECTION('',(0.866025403784439,0.499999999999999,-5.30287619362454E-17)); +#1407=DIRECTION('center_axis',(-0.866025403784439,-0.499999999999999,5.30287619362454E-17)); +#1408=DIRECTION('ref_axis',(-0.499999999999999,0.866025403784439,-3.06161699786839E-17)); +#1409=DIRECTION('',(-0.499999999999999,0.866025403784439,3.06161699786838E-17)); +#1410=DIRECTION('',(-0.499999999999999,0.866025403784439,-3.06161699786839E-17)); +#1411=DIRECTION('center_axis',(-3.06161699786839E-17,-5.30287619362454E-17, +-1.)); +#1412=DIRECTION('ref_axis',(-0.499999999999999,0.866025403784439,-3.06161699786839E-17)); +#1413=DIRECTION('center_axis',(-1.83697019872103E-16,-1.,6.12323399573677E-17)); +#1414=DIRECTION('ref_axis',(-1.,1.83697019872103E-16,6.12323399573676E-17)); +#1415=DIRECTION('',(-1.,1.83697019872103E-16,6.12323399573677E-17)); +#1416=DIRECTION('',(-6.12323399573677E-17,-6.12323399573676E-17,-1.)); +#1417=DIRECTION('',(-1.,1.83697019872103E-16,6.12323399573676E-17)); +#1418=DIRECTION('',(-6.12323399573677E-17,-6.12323399573676E-17,-1.)); +#1419=DIRECTION('center_axis',(1.,-1.83697019872103E-16,-6.12323399573676E-17)); +#1420=DIRECTION('ref_axis',(-1.83697019872103E-16,-1.,6.12323399573677E-17)); +#1421=DIRECTION('',(-1.83697019872103E-16,-1.,1.12481983699639E-32)); +#1422=DIRECTION('',(-6.12323399573677E-17,-6.12323399573676E-17,-1.)); +#1423=DIRECTION('',(-1.83697019872103E-16,-1.,6.12323399573677E-17)); +#1424=DIRECTION('center_axis',(1.83697019872103E-16,1.,-6.12323399573677E-17)); +#1425=DIRECTION('ref_axis',(1.,-1.83697019872103E-16,-6.12323399573676E-17)); +#1426=DIRECTION('',(1.,-1.83697019872103E-16,-6.12323399573677E-17)); +#1427=DIRECTION('',(-6.12323399573677E-17,-6.12323399573676E-17,-1.)); +#1428=DIRECTION('',(1.,-1.83697019872103E-16,-6.12323399573676E-17)); +#1429=DIRECTION('center_axis',(-1.,1.83697019872103E-16,6.12323399573676E-17)); +#1430=DIRECTION('ref_axis',(1.83697019872103E-16,1.,-6.12323399573677E-17)); +#1431=DIRECTION('',(1.83697019872103E-16,1.,-1.12481983699639E-32)); +#1432=DIRECTION('',(1.83697019872103E-16,1.,-6.12323399573677E-17)); +#1433=DIRECTION('center_axis',(-6.12323399573677E-17,-6.12323399573676E-17, +-1.)); +#1434=DIRECTION('ref_axis',(1.83697019872103E-16,1.,-6.12323399573677E-17)); +#1435=DIRECTION('center_axis',(-0.5,-0.866025403784438,9.18485099360515E-17)); +#1436=DIRECTION('ref_axis',(-0.866025403784438,0.5,5.30287619362453E-17)); +#1437=DIRECTION('',(-0.866025403784438,0.5,5.30287619362453E-17)); +#1438=DIRECTION('',(-9.18485099360515E-17,-5.30287619362453E-17,-1.)); +#1439=DIRECTION('',(-0.866025403784438,0.5,5.30287619362453E-17)); +#1440=DIRECTION('',(-9.18485099360515E-17,-5.30287619362453E-17,-1.)); +#1441=DIRECTION('center_axis',(0.866025403784438,-0.5,-5.30287619362453E-17)); +#1442=DIRECTION('ref_axis',(-0.5,-0.866025403784438,9.18485099360515E-17)); +#1443=DIRECTION('',(-0.5,-0.866025403784438,3.06161699786839E-17)); +#1444=DIRECTION('',(-9.18485099360515E-17,-5.30287619362453E-17,-1.)); +#1445=DIRECTION('',(-0.5,-0.866025403784438,9.18485099360515E-17)); +#1446=DIRECTION('center_axis',(0.5,0.866025403784438,-9.18485099360515E-17)); +#1447=DIRECTION('ref_axis',(0.866025403784438,-0.5,-5.30287619362453E-17)); +#1448=DIRECTION('',(0.866025403784438,-0.5,-5.30287619362453E-17)); +#1449=DIRECTION('',(-9.18485099360515E-17,-5.30287619362453E-17,-1.)); +#1450=DIRECTION('',(0.866025403784438,-0.5,-5.30287619362453E-17)); +#1451=DIRECTION('center_axis',(-0.866025403784438,0.5,5.30287619362453E-17)); +#1452=DIRECTION('ref_axis',(0.5,0.866025403784438,-9.18485099360515E-17)); +#1453=DIRECTION('',(0.5,0.866025403784438,-3.06161699786839E-17)); +#1454=DIRECTION('',(0.5,0.866025403784438,-9.18485099360515E-17)); +#1455=DIRECTION('center_axis',(-9.18485099360515E-17,-5.30287619362453E-17, +-1.)); +#1456=DIRECTION('ref_axis',(0.5,0.866025403784438,-9.18485099360515E-17)); +#1457=DIRECTION('center_axis',(-0.866025403784439,-0.5,1.14261101893613E-16)); +#1458=DIRECTION('ref_axis',(-0.5,0.866025403784439,3.06161699786838E-17)); +#1459=DIRECTION('',(-0.5,0.866025403784439,3.06161699786838E-17)); +#1460=DIRECTION('',(-1.14261101893613E-16,-3.06161699786838E-17,-1.)); +#1461=DIRECTION('',(-0.5,0.866025403784439,3.06161699786838E-17)); +#1462=DIRECTION('',(-1.14261101893613E-16,-3.06161699786838E-17,-1.)); +#1463=DIRECTION('center_axis',(0.5,-0.866025403784439,-3.06161699786838E-17)); +#1464=DIRECTION('ref_axis',(-0.866025403784439,-0.5,1.14261101893613E-16)); +#1465=DIRECTION('',(-0.866025403784439,-0.5,5.30287619362454E-17)); +#1466=DIRECTION('',(-1.14261101893613E-16,-3.06161699786838E-17,-1.)); +#1467=DIRECTION('',(-0.866025403784439,-0.5,1.14261101893613E-16)); +#1468=DIRECTION('center_axis',(0.866025403784439,0.5,-1.14261101893613E-16)); +#1469=DIRECTION('ref_axis',(0.5,-0.866025403784439,-3.06161699786838E-17)); +#1470=DIRECTION('',(0.5,-0.866025403784439,-3.06161699786838E-17)); +#1471=DIRECTION('',(-1.14261101893613E-16,-3.06161699786838E-17,-1.)); +#1472=DIRECTION('',(0.5,-0.866025403784439,-3.06161699786838E-17)); +#1473=DIRECTION('center_axis',(-0.5,0.866025403784439,3.06161699786838E-17)); +#1474=DIRECTION('ref_axis',(0.866025403784439,0.5,-1.14261101893613E-16)); +#1475=DIRECTION('',(0.866025403784439,0.5,-5.30287619362454E-17)); +#1476=DIRECTION('',(0.866025403784439,0.5,-1.14261101893613E-16)); +#1477=DIRECTION('center_axis',(-1.14261101893613E-16,-3.06161699786838E-17, +-1.)); +#1478=DIRECTION('ref_axis',(0.866025403784439,0.5,-1.14261101893613E-16)); +#1479=DIRECTION('center_axis',(-1.,1.22464679914735E-16,1.22464679914735E-16)); +#1480=DIRECTION('ref_axis',(1.22464679914735E-16,1.,-7.49879891330929E-33)); +#1481=DIRECTION('',(1.22464679914735E-16,1.,-7.49879891330929E-33)); +#1482=DIRECTION('',(-1.22464679914735E-16,7.49879891330929E-33,-1.)); +#1483=DIRECTION('',(1.22464679914735E-16,1.,-7.49879891330929E-33)); +#1484=DIRECTION('',(-1.22464679914735E-16,7.49879891330929E-33,-1.)); +#1485=DIRECTION('center_axis',(-1.22464679914735E-16,-1.,7.49879891330929E-33)); +#1486=DIRECTION('ref_axis',(-1.,1.22464679914735E-16,1.22464679914735E-16)); +#1487=DIRECTION('',(-1.,1.22464679914735E-16,6.12323399573677E-17)); +#1488=DIRECTION('',(-1.22464679914735E-16,7.49879891330929E-33,-1.)); +#1489=DIRECTION('',(-1.,1.22464679914735E-16,1.22464679914735E-16)); +#1490=DIRECTION('center_axis',(1.,-1.22464679914735E-16,-1.22464679914735E-16)); +#1491=DIRECTION('ref_axis',(-1.22464679914735E-16,-1.,7.49879891330929E-33)); +#1492=DIRECTION('',(-1.22464679914735E-16,-1.,7.49879891330929E-33)); +#1493=DIRECTION('',(-1.22464679914735E-16,7.49879891330929E-33,-1.)); +#1494=DIRECTION('',(-1.22464679914735E-16,-1.,7.49879891330929E-33)); +#1495=DIRECTION('center_axis',(1.22464679914735E-16,1.,-7.49879891330929E-33)); +#1496=DIRECTION('ref_axis',(1.,-1.22464679914735E-16,-1.22464679914735E-16)); +#1497=DIRECTION('',(1.,-1.22464679914735E-16,-6.12323399573677E-17)); +#1498=DIRECTION('',(1.,-1.22464679914735E-16,-1.22464679914735E-16)); +#1499=DIRECTION('center_axis',(-1.22464679914735E-16,7.49879891330929E-33, +-1.)); +#1500=DIRECTION('ref_axis',(1.,-1.22464679914735E-16,-1.22464679914735E-16)); +#1501=DIRECTION('center_axis',(-0.866025403784438,0.5,1.14261101893613E-16)); +#1502=DIRECTION('ref_axis',(0.5,0.866025403784438,-3.06161699786838E-17)); +#1503=DIRECTION('',(0.5,0.866025403784438,-3.06161699786838E-17)); +#1504=DIRECTION('',(-1.14261101893613E-16,3.06161699786838E-17,-1.)); +#1505=DIRECTION('',(0.5,0.866025403784438,-3.06161699786838E-17)); +#1506=DIRECTION('',(-1.14261101893613E-16,3.06161699786838E-17,-1.)); +#1507=DIRECTION('center_axis',(-0.5,-0.866025403784438,3.06161699786838E-17)); +#1508=DIRECTION('ref_axis',(-0.866025403784438,0.5,1.14261101893613E-16)); +#1509=DIRECTION('',(-0.866025403784438,0.5,5.30287619362453E-17)); +#1510=DIRECTION('',(-1.14261101893613E-16,3.06161699786838E-17,-1.)); +#1511=DIRECTION('',(-0.866025403784438,0.5,1.14261101893613E-16)); +#1512=DIRECTION('center_axis',(0.866025403784438,-0.5,-1.14261101893613E-16)); +#1513=DIRECTION('ref_axis',(-0.5,-0.866025403784438,3.06161699786838E-17)); +#1514=DIRECTION('',(-0.5,-0.866025403784438,3.06161699786838E-17)); +#1515=DIRECTION('',(-1.14261101893613E-16,3.06161699786838E-17,-1.)); +#1516=DIRECTION('',(-0.5,-0.866025403784438,3.06161699786838E-17)); +#1517=DIRECTION('center_axis',(0.5,0.866025403784438,-3.06161699786838E-17)); +#1518=DIRECTION('ref_axis',(0.866025403784438,-0.5,-1.14261101893613E-16)); +#1519=DIRECTION('',(0.866025403784438,-0.5,-5.30287619362453E-17)); +#1520=DIRECTION('',(0.866025403784438,-0.5,-1.14261101893613E-16)); +#1521=DIRECTION('center_axis',(-1.14261101893613E-16,3.06161699786838E-17, +-1.)); +#1522=DIRECTION('ref_axis',(0.866025403784438,-0.5,-1.14261101893613E-16)); +#1523=DIRECTION('center_axis',(-0.5,0.866025403784439,9.18485099360515E-17)); +#1524=DIRECTION('ref_axis',(0.866025403784439,0.5,-5.30287619362453E-17)); +#1525=DIRECTION('',(0.866025403784439,0.5,-5.30287619362453E-17)); +#1526=DIRECTION('',(-9.18485099360515E-17,5.30287619362453E-17,-1.)); +#1527=DIRECTION('',(0.866025403784439,0.5,-5.30287619362453E-17)); +#1528=DIRECTION('',(-9.18485099360515E-17,5.30287619362453E-17,-1.)); +#1529=DIRECTION('center_axis',(-0.866025403784439,-0.5,5.30287619362453E-17)); +#1530=DIRECTION('ref_axis',(-0.5,0.866025403784439,9.18485099360514E-17)); +#1531=DIRECTION('',(-0.5,0.866025403784439,3.06161699786838E-17)); +#1532=DIRECTION('',(-9.18485099360515E-17,5.30287619362453E-17,-1.)); +#1533=DIRECTION('',(-0.5,0.866025403784439,9.18485099360514E-17)); +#1534=DIRECTION('center_axis',(0.5,-0.866025403784439,-9.18485099360515E-17)); +#1535=DIRECTION('ref_axis',(-0.866025403784439,-0.5,5.30287619362453E-17)); +#1536=DIRECTION('',(-0.866025403784439,-0.5,5.30287619362453E-17)); +#1537=DIRECTION('',(-9.18485099360515E-17,5.30287619362453E-17,-1.)); +#1538=DIRECTION('',(-0.866025403784439,-0.5,5.30287619362453E-17)); +#1539=DIRECTION('center_axis',(0.866025403784439,0.5,-5.30287619362453E-17)); +#1540=DIRECTION('ref_axis',(0.5,-0.866025403784439,-9.18485099360514E-17)); +#1541=DIRECTION('',(0.5,-0.866025403784439,-3.06161699786838E-17)); +#1542=DIRECTION('',(0.5,-0.866025403784439,-9.18485099360514E-17)); +#1543=DIRECTION('center_axis',(-9.18485099360514E-17,5.30287619362453E-17, +-1.)); +#1544=DIRECTION('ref_axis',(0.5,-0.866025403784439,-9.18485099360514E-17)); +#1545=DIRECTION('center_axis',(6.12323399573677E-17,1.,6.12323399573676E-17)); +#1546=DIRECTION('ref_axis',(1.,-6.12323399573677E-17,-6.12323399573676E-17)); +#1547=DIRECTION('',(1.,-6.12323399573677E-17,-6.12323399573677E-17)); +#1548=DIRECTION('',(-6.12323399573676E-17,6.12323399573676E-17,-1.)); +#1549=DIRECTION('',(1.,-6.12323399573677E-17,-6.12323399573676E-17)); +#1550=DIRECTION('',(-6.12323399573676E-17,6.12323399573676E-17,-1.)); +#1551=DIRECTION('center_axis',(-1.,6.12323399573677E-17,6.12323399573676E-17)); +#1552=DIRECTION('ref_axis',(6.12323399573677E-17,1.,6.12323399573676E-17)); +#1553=DIRECTION('',(6.12323399573677E-17,1.,-3.74939945665464E-33)); +#1554=DIRECTION('',(-6.12323399573676E-17,6.12323399573676E-17,-1.)); +#1555=DIRECTION('',(6.12323399573677E-17,1.,6.12323399573676E-17)); +#1556=DIRECTION('center_axis',(-6.12323399573677E-17,-1.,-6.12323399573676E-17)); +#1557=DIRECTION('ref_axis',(-1.,6.12323399573677E-17,6.12323399573676E-17)); +#1558=DIRECTION('',(-1.,6.12323399573677E-17,6.12323399573677E-17)); +#1559=DIRECTION('',(-6.12323399573676E-17,6.12323399573676E-17,-1.)); +#1560=DIRECTION('',(-1.,6.12323399573677E-17,6.12323399573676E-17)); +#1561=DIRECTION('center_axis',(1.,-6.12323399573677E-17,-6.12323399573676E-17)); +#1562=DIRECTION('ref_axis',(-6.12323399573677E-17,-1.,-6.12323399573676E-17)); +#1563=DIRECTION('',(-6.12323399573677E-17,-1.,3.74939945665464E-33)); +#1564=DIRECTION('',(-6.12323399573677E-17,-1.,-6.12323399573676E-17)); +#1565=DIRECTION('center_axis',(-6.12323399573676E-17,6.12323399573676E-17, +-1.)); +#1566=DIRECTION('ref_axis',(-6.12323399573677E-17,-1.,-6.12323399573676E-17)); +#1567=DIRECTION('center_axis',(0.5,0.866025403784439,3.06161699786838E-17)); +#1568=DIRECTION('ref_axis',(0.866025403784439,-0.5,-5.30287619362453E-17)); +#1569=DIRECTION('',(0.866025403784439,-0.5,-5.30287619362453E-17)); +#1570=DIRECTION('',(-3.06161699786838E-17,5.30287619362453E-17,-1.)); +#1571=DIRECTION('',(0.866025403784439,-0.5,-5.30287619362453E-17)); +#1572=DIRECTION('',(-3.06161699786838E-17,5.30287619362453E-17,-1.)); +#1573=DIRECTION('center_axis',(-0.866025403784439,0.5,5.30287619362453E-17)); +#1574=DIRECTION('ref_axis',(0.5,0.866025403784439,3.06161699786838E-17)); +#1575=DIRECTION('',(0.5,0.866025403784439,-3.06161699786838E-17)); +#1576=DIRECTION('',(-3.06161699786838E-17,5.30287619362453E-17,-1.)); +#1577=DIRECTION('',(0.5,0.866025403784439,3.06161699786838E-17)); +#1578=DIRECTION('center_axis',(-0.5,-0.866025403784439,-3.06161699786838E-17)); +#1579=DIRECTION('ref_axis',(-0.866025403784439,0.5,5.30287619362453E-17)); +#1580=DIRECTION('',(-0.866025403784439,0.5,5.30287619362453E-17)); +#1581=DIRECTION('',(-3.06161699786838E-17,5.30287619362453E-17,-1.)); +#1582=DIRECTION('',(-0.866025403784439,0.5,5.30287619362453E-17)); +#1583=DIRECTION('center_axis',(0.866025403784439,-0.5,-5.30287619362453E-17)); +#1584=DIRECTION('ref_axis',(-0.5,-0.866025403784439,-3.06161699786838E-17)); +#1585=DIRECTION('',(-0.5,-0.866025403784439,3.06161699786838E-17)); +#1586=DIRECTION('',(-0.5,-0.866025403784439,-3.06161699786838E-17)); +#1587=DIRECTION('center_axis',(-3.06161699786838E-17,5.30287619362453E-17, +-1.)); +#1588=DIRECTION('ref_axis',(-0.5,-0.866025403784439,-3.06161699786838E-17)); +#1589=DIRECTION('center_axis',(0.866025403784439,0.5,8.20357802112231E-18)); +#1590=DIRECTION('ref_axis',(0.5,-0.866025403784439,-3.06161699786838E-17)); +#1591=DIRECTION('',(0.5,-0.866025403784439,-3.06161699786838E-17)); +#1592=DIRECTION('',(-8.20357802112231E-18,3.06161699786838E-17,-1.)); +#1593=DIRECTION('',(0.5,-0.866025403784439,-3.06161699786838E-17)); +#1594=DIRECTION('',(-8.20357802112231E-18,3.06161699786838E-17,-1.)); +#1595=DIRECTION('center_axis',(-0.5,0.866025403784439,3.06161699786838E-17)); +#1596=DIRECTION('ref_axis',(0.866025403784439,0.5,8.20357802112231E-18)); +#1597=DIRECTION('',(0.866025403784439,0.5,-5.30287619362453E-17)); +#1598=DIRECTION('',(-8.20357802112231E-18,3.06161699786838E-17,-1.)); +#1599=DIRECTION('',(0.866025403784439,0.5,8.20357802112231E-18)); +#1600=DIRECTION('center_axis',(-0.866025403784439,-0.5,-8.20357802112231E-18)); +#1601=DIRECTION('ref_axis',(-0.5,0.866025403784439,3.06161699786838E-17)); +#1602=DIRECTION('',(-0.5,0.866025403784439,3.06161699786838E-17)); +#1603=DIRECTION('',(-8.20357802112231E-18,3.06161699786838E-17,-1.)); +#1604=DIRECTION('',(-0.5,0.866025403784439,3.06161699786838E-17)); +#1605=DIRECTION('center_axis',(0.5,-0.866025403784439,-3.06161699786838E-17)); +#1606=DIRECTION('ref_axis',(-0.866025403784439,-0.5,-8.20357802112231E-18)); +#1607=DIRECTION('',(-0.866025403784439,-0.5,5.30287619362453E-17)); +#1608=DIRECTION('',(-0.866025403784439,-0.5,-8.20357802112231E-18)); +#1609=DIRECTION('center_axis',(-8.20357802112231E-18,3.06161699786838E-17, +-1.)); +#1610=DIRECTION('ref_axis',(-0.866025403784439,-0.5,-8.20357802112231E-18)); +#1611=DIRECTION('center_axis',(1.,0.,0.)); +#1612=DIRECTION('ref_axis',(0.,-1.,0.)); +#1613=DIRECTION('',(0.,-1.,0.)); +#1614=DIRECTION('',(0.,0.,-1.)); +#1615=DIRECTION('',(0.,-1.,0.)); +#1616=DIRECTION('',(0.,0.,-1.)); +#1617=DIRECTION('center_axis',(0.,1.,0.)); +#1618=DIRECTION('ref_axis',(1.,0.,0.)); +#1619=DIRECTION('',(1.,0.,-6.12323399573677E-17)); +#1620=DIRECTION('',(0.,0.,-1.)); +#1621=DIRECTION('',(1.,0.,0.)); +#1622=DIRECTION('center_axis',(-1.,0.,0.)); +#1623=DIRECTION('ref_axis',(0.,1.,0.)); +#1624=DIRECTION('',(0.,1.,0.)); +#1625=DIRECTION('',(0.,0.,-1.)); +#1626=DIRECTION('',(0.,1.,0.)); +#1627=DIRECTION('center_axis',(0.,-1.,0.)); +#1628=DIRECTION('ref_axis',(-1.,0.,0.)); +#1629=DIRECTION('',(-1.,0.,6.12323399573677E-17)); +#1630=DIRECTION('',(-1.,0.,0.)); +#1631=DIRECTION('center_axis',(0.,0.,-1.)); +#1632=DIRECTION('ref_axis',(-1.,0.,0.)); +#1633=DIRECTION('center_axis',(1.,0.,0.)); +#1634=DIRECTION('ref_axis',(0.,1.,0.)); +#1635=DIRECTION('',(0.,1.,0.)); +#1636=DIRECTION('',(0.,0.,1.)); +#1637=DIRECTION('',(0.,1.,0.)); +#1638=DIRECTION('',(0.,0.,1.)); +#1639=DIRECTION('center_axis',(0.,-1.,0.)); +#1640=DIRECTION('ref_axis',(1.,0.,0.)); +#1641=DIRECTION('',(1.,0.,0.)); +#1642=DIRECTION('',(1.,0.,0.)); +#1643=DIRECTION('',(0.,0.,1.)); +#1644=DIRECTION('center_axis',(-1.,0.,0.)); +#1645=DIRECTION('ref_axis',(0.,-1.,0.)); +#1646=DIRECTION('',(0.,-1.,0.)); +#1647=DIRECTION('',(0.,-1.,0.)); +#1648=DIRECTION('',(0.,0.,1.)); +#1649=DIRECTION('center_axis',(0.,1.,0.)); +#1650=DIRECTION('ref_axis',(-1.,0.,0.)); +#1651=DIRECTION('',(-1.,0.,0.)); +#1652=DIRECTION('',(-1.,0.,0.)); +#1653=DIRECTION('center_axis',(0.,0.,-1.)); +#1654=DIRECTION('ref_axis',(1.,0.,0.)); +#1655=DIRECTION('center_axis',(0.,0.,1.)); +#1656=DIRECTION('ref_axis',(1.,0.,0.)); +#1657=DIRECTION('center_axis',(-6.12323399573677E-17,0.,-1.)); +#1658=DIRECTION('ref_axis',(-1.,0.,6.12323399573677E-17)); +#1659=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1660=DIRECTION('ref_axis',(1.,0.,-6.12323399573677E-17)); +#1661=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1662=DIRECTION('ref_axis',(1.,0.,0.)); +#1663=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1664=DIRECTION('ref_axis',(1.,0.,-6.12323399573676E-17)); +#1665=DIRECTION('',(-6.12323399573676E-17,0.,-1.)); +#1666=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1667=DIRECTION('ref_axis',(1.,0.,-6.12323399573677E-17)); +#1668=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1669=DIRECTION('ref_axis',(1.,0.,-6.12323399573677E-17)); +#1670=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1671=DIRECTION('ref_axis',(1.,0.,0.)); +#1672=DIRECTION('',(-6.12323399573677E-17,0.,-1.)); +#1673=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1674=DIRECTION('ref_axis',(1.,0.,-6.12323399573677E-17)); +#1675=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1676=DIRECTION('ref_axis',(1.,0.,-6.12323399573677E-17)); +#1677=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1678=DIRECTION('ref_axis',(1.,0.,-6.12323399573677E-17)); +#1679=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1680=DIRECTION('ref_axis',(1.,0.,0.)); +#1681=DIRECTION('',(0.707106781186548,8.65956056235493E-17,-0.707106781186547)); +#1682=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1683=DIRECTION('ref_axis',(1.,0.,-6.12323399573677E-17)); +#1684=DIRECTION('center_axis',(6.12323399573677E-17,0.,1.)); +#1685=DIRECTION('ref_axis',(1.,0.,0.)); +#1686=DIRECTION('',(-6.12323399573677E-17,0.,-1.)); +#1687=CARTESIAN_POINT('',(0.,0.,0.)); +#1688=CARTESIAN_POINT('Origin',(-5.84567147554496,3.375,8.4)); +#1689=CARTESIAN_POINT('',(-5.84567147554496,3.375,8.4)); +#1690=CARTESIAN_POINT('',(-6.22067147554496,2.72548094716167,8.4)); +#1691=CARTESIAN_POINT('',(-5.22067147554496,4.45753175473055,8.4)); +#1692=CARTESIAN_POINT('',(-5.84567147554496,3.375,4.)); +#1693=CARTESIAN_POINT('',(-5.84567147554496,3.375,8.4)); +#1694=CARTESIAN_POINT('',(-6.22067147554496,2.72548094716167,4.)); +#1695=CARTESIAN_POINT('',(-5.84567147554496,3.375,4.)); +#1696=CARTESIAN_POINT('',(-6.22067147554496,2.72548094716167,8.4)); +#1697=CARTESIAN_POINT('Origin',(-8.44374768689828,4.87500000000001,8.4)); +#1698=CARTESIAN_POINT('',(-8.44374768689828,4.87500000000001,8.4)); +#1699=CARTESIAN_POINT('',(-2.34687384344914,1.35496824526945,8.4)); +#1700=CARTESIAN_POINT('',(-8.44374768689828,4.87500000000001,4.)); +#1701=CARTESIAN_POINT('',(-8.44374768689828,4.87500000000001,8.4)); +#1702=CARTESIAN_POINT('',(-8.44374768689828,4.87500000000001,4.)); +#1703=CARTESIAN_POINT('Origin',(-8.81874768689828,4.22548094716168,8.4)); +#1704=CARTESIAN_POINT('',(-8.81874768689828,4.22548094716168,8.4)); +#1705=CARTESIAN_POINT('',(-8.00624768689828,5.63277222831139,8.4)); +#1706=CARTESIAN_POINT('',(-8.81874768689828,4.22548094716168,4.)); +#1707=CARTESIAN_POINT('',(-8.81874768689828,4.22548094716168,8.4)); +#1708=CARTESIAN_POINT('',(-8.81874768689828,4.22548094716168,4.)); +#1709=CARTESIAN_POINT('Origin',(-6.22067147554496,2.72548094716167,8.4)); +#1710=CARTESIAN_POINT('',(-1.42283573777248,-0.0445508075688766,8.4)); +#1711=CARTESIAN_POINT('',(-6.22067147554496,2.72548094716167,4.)); +#1712=CARTESIAN_POINT('Origin',(-7.33220958122162,3.80024047358084,4.)); +#1713=CARTESIAN_POINT('Origin',(-3.375,5.84567147554496,8.4)); +#1714=CARTESIAN_POINT('',(-3.375,5.84567147554496,8.4)); +#1715=CARTESIAN_POINT('',(-4.02451905283832,5.47067147554496,8.4)); +#1716=CARTESIAN_POINT('',(-1.49999999999999,6.92820323027551,8.4)); +#1717=CARTESIAN_POINT('',(-3.375,5.84567147554496,4.)); +#1718=CARTESIAN_POINT('',(-3.375,5.84567147554496,8.4)); +#1719=CARTESIAN_POINT('',(-4.02451905283832,5.47067147554496,4.)); +#1720=CARTESIAN_POINT('',(-3.375,5.84567147554496,4.)); +#1721=CARTESIAN_POINT('',(-4.02451905283832,5.47067147554496,8.4)); +#1722=CARTESIAN_POINT('Origin',(-4.87499999999999,8.44374768689828,8.4)); +#1723=CARTESIAN_POINT('',(-4.87499999999999,8.44374768689828,8.4)); +#1724=CARTESIAN_POINT('',(-1.8125,3.13934208871859,8.4)); +#1725=CARTESIAN_POINT('',(-4.87499999999999,8.44374768689828,4.)); +#1726=CARTESIAN_POINT('',(-4.87499999999999,8.44374768689828,8.4)); +#1727=CARTESIAN_POINT('',(-4.87499999999999,8.44374768689828,4.)); +#1728=CARTESIAN_POINT('Origin',(-5.52451905283832,8.06874768689828,8.4)); +#1729=CARTESIAN_POINT('',(-5.52451905283832,8.06874768689828,8.4)); +#1730=CARTESIAN_POINT('',(-3.32475952641916,9.33877944162883,8.4)); +#1731=CARTESIAN_POINT('',(-5.52451905283832,8.06874768689828,4.)); +#1732=CARTESIAN_POINT('',(-5.52451905283832,8.06874768689828,8.4)); +#1733=CARTESIAN_POINT('',(-5.52451905283832,8.06874768689828,4.)); +#1734=CARTESIAN_POINT('Origin',(-4.02451905283832,5.47067147554496,8.4)); +#1735=CARTESIAN_POINT('',(-1.71201905283833,1.46530398304193,8.4)); +#1736=CARTESIAN_POINT('',(-4.02451905283832,5.47067147554496,4.)); +#1737=CARTESIAN_POINT('Origin',(-4.44975952641916,6.95720958122162,4.)); +#1738=CARTESIAN_POINT('Origin',(1.75430653977858E-15,6.75,8.4)); +#1739=CARTESIAN_POINT('',(1.75430653977858E-15,6.75,8.4)); +#1740=CARTESIAN_POINT('',(-0.749999999999998,6.75,8.4)); +#1741=CARTESIAN_POINT('',(2.5,6.75,8.4)); +#1742=CARTESIAN_POINT('',(1.48488424396617E-15,6.75,4.)); +#1743=CARTESIAN_POINT('',(1.75430653977858E-15,6.75,8.4)); +#1744=CARTESIAN_POINT('',(-0.749999999999999,6.75,4.)); +#1745=CARTESIAN_POINT('',(1.48488424396617E-15,6.75,4.)); +#1746=CARTESIAN_POINT('',(-0.749999999999998,6.75,8.4)); +#1747=CARTESIAN_POINT('Origin',(2.30539759939489E-15,9.75,8.4)); +#1748=CARTESIAN_POINT('',(2.30539759939489E-15,9.75,8.4)); +#1749=CARTESIAN_POINT('',(1.38777878078145E-15,4.875,8.4)); +#1750=CARTESIAN_POINT('',(2.03597530358247E-15,9.75,4.)); +#1751=CARTESIAN_POINT('',(2.30539759939489E-15,9.75,8.4)); +#1752=CARTESIAN_POINT('',(2.03597530358247E-15,9.75,4.)); +#1753=CARTESIAN_POINT('Origin',(-0.749999999999998,9.75,8.4)); +#1754=CARTESIAN_POINT('',(-0.749999999999998,9.75,8.4)); +#1755=CARTESIAN_POINT('',(2.125,9.75,8.4)); +#1756=CARTESIAN_POINT('',(-0.749999999999998,9.75,4.)); +#1757=CARTESIAN_POINT('',(-0.749999999999998,9.75,8.4)); +#1758=CARTESIAN_POINT('',(-0.749999999999998,9.75,4.)); +#1759=CARTESIAN_POINT('Origin',(-0.749999999999998,6.75,8.4)); +#1760=CARTESIAN_POINT('',(-0.749999999999999,3.375,8.4)); +#1761=CARTESIAN_POINT('',(-0.749999999999999,6.75,4.)); +#1762=CARTESIAN_POINT('Origin',(-0.374999999999998,8.25,4.)); +#1763=CARTESIAN_POINT('Origin',(3.375,5.84567147554496,8.4)); +#1764=CARTESIAN_POINT('',(3.375,5.84567147554496,8.4)); +#1765=CARTESIAN_POINT('',(2.72548094716167,6.22067147554496,8.4)); +#1766=CARTESIAN_POINT('',(5.25,4.76313972081441,8.4)); +#1767=CARTESIAN_POINT('',(3.375,5.84567147554496,4.)); +#1768=CARTESIAN_POINT('',(3.375,5.84567147554496,8.4)); +#1769=CARTESIAN_POINT('',(2.72548094716167,6.22067147554496,4.)); +#1770=CARTESIAN_POINT('',(3.375,5.84567147554496,4.)); +#1771=CARTESIAN_POINT('',(2.72548094716167,6.22067147554496,8.4)); +#1772=CARTESIAN_POINT('Origin',(4.87500000000001,8.44374768689828,8.4)); +#1773=CARTESIAN_POINT('',(4.87500000000001,8.44374768689828,8.4)); +#1774=CARTESIAN_POINT('',(3.0625,5.30440559817969,8.4)); +#1775=CARTESIAN_POINT('',(4.87500000000001,8.44374768689828,4.)); +#1776=CARTESIAN_POINT('',(4.87500000000001,8.44374768689828,8.4)); +#1777=CARTESIAN_POINT('',(4.87500000000001,8.44374768689828,4.)); +#1778=CARTESIAN_POINT('Origin',(4.22548094716168,8.81874768689828,8.4)); +#1779=CARTESIAN_POINT('',(4.22548094716168,8.81874768689828,8.4)); +#1780=CARTESIAN_POINT('',(6.42524047358084,7.54871593216773,8.4)); +#1781=CARTESIAN_POINT('',(4.22548094716168,8.81874768689828,4.)); +#1782=CARTESIAN_POINT('',(4.22548094716168,8.81874768689828,8.4)); +#1783=CARTESIAN_POINT('',(4.22548094716168,8.81874768689828,4.)); +#1784=CARTESIAN_POINT('Origin',(2.72548094716167,6.22067147554496,8.4)); +#1785=CARTESIAN_POINT('',(1.66298094716167,4.38036749250303,8.4)); +#1786=CARTESIAN_POINT('',(2.72548094716167,6.22067147554496,4.)); +#1787=CARTESIAN_POINT('Origin',(3.80024047358084,7.33220958122162,4.)); +#1788=CARTESIAN_POINT('Origin',(5.84567147554496,3.375,8.4)); +#1789=CARTESIAN_POINT('',(5.84567147554496,3.375,8.4)); +#1790=CARTESIAN_POINT('',(5.47067147554496,4.02451905283833,8.4)); +#1791=CARTESIAN_POINT('',(6.47067147554496,2.29246824526945,8.4)); +#1792=CARTESIAN_POINT('',(5.84567147554496,3.375,4.)); +#1793=CARTESIAN_POINT('',(5.84567147554496,3.375,8.4)); +#1794=CARTESIAN_POINT('',(5.47067147554496,4.02451905283833,4.)); +#1795=CARTESIAN_POINT('',(5.84567147554496,3.375,4.)); +#1796=CARTESIAN_POINT('',(5.47067147554496,4.02451905283833,8.4)); +#1797=CARTESIAN_POINT('Origin',(8.44374768689828,4.875,8.4)); +#1798=CARTESIAN_POINT('',(8.44374768689828,4.875,8.4)); +#1799=CARTESIAN_POINT('',(6.09687384344914,3.52003175473055,8.4)); +#1800=CARTESIAN_POINT('',(8.44374768689828,4.875,4.)); +#1801=CARTESIAN_POINT('',(8.44374768689828,4.875,8.4)); +#1802=CARTESIAN_POINT('',(8.44374768689828,4.875,4.)); +#1803=CARTESIAN_POINT('Origin',(8.06874768689828,5.52451905283833,8.4)); +#1804=CARTESIAN_POINT('',(8.06874768689828,5.52451905283833,8.4)); +#1805=CARTESIAN_POINT('',(8.88124768689828,4.11722777168861,8.4)); +#1806=CARTESIAN_POINT('',(8.06874768689828,5.52451905283833,4.)); +#1807=CARTESIAN_POINT('',(8.06874768689828,5.52451905283833,8.4)); +#1808=CARTESIAN_POINT('',(8.06874768689828,5.52451905283833,4.)); +#1809=CARTESIAN_POINT('Origin',(5.47067147554496,4.02451905283833,8.4)); +#1810=CARTESIAN_POINT('',(4.42283573777248,3.41955080756888,8.4)); +#1811=CARTESIAN_POINT('',(5.47067147554496,4.02451905283833,4.)); +#1812=CARTESIAN_POINT('Origin',(6.95720958122162,4.44975952641916,4.)); +#1813=CARTESIAN_POINT('Origin',(6.75,-8.26636589424464E-16,8.4)); +#1814=CARTESIAN_POINT('',(6.75,-8.26636589424464E-16,8.4)); +#1815=CARTESIAN_POINT('',(6.75,0.749999999999999,8.4)); +#1816=CARTESIAN_POINT('',(6.75,-5.20474889637625E-16,8.4)); +#1817=CARTESIAN_POINT('',(6.75,-8.26636589424463E-16,4.)); +#1818=CARTESIAN_POINT('',(6.75,-8.26636589424464E-16,8.4)); +#1819=CARTESIAN_POINT('',(6.75,0.749999999999999,4.)); +#1820=CARTESIAN_POINT('',(6.75,-8.26636589424463E-16,4.)); +#1821=CARTESIAN_POINT('',(6.75,0.749999999999999,8.4)); +#1822=CARTESIAN_POINT('Origin',(9.75,-1.19403062916867E-15,8.4)); +#1823=CARTESIAN_POINT('',(9.75,-1.19403062916867E-15,8.4)); +#1824=CARTESIAN_POINT('',(7.375,-9.03177014371173E-16,8.4)); +#1825=CARTESIAN_POINT('',(9.75,-1.19403062916867E-15,4.)); +#1826=CARTESIAN_POINT('',(9.75,-1.19403062916867E-15,8.4)); +#1827=CARTESIAN_POINT('',(9.75,-1.19403062916867E-15,4.)); +#1828=CARTESIAN_POINT('Origin',(9.75,0.749999999999999,8.4)); +#1829=CARTESIAN_POINT('',(9.75,0.749999999999999,8.4)); +#1830=CARTESIAN_POINT('',(9.75,0.374999999999999,8.4)); +#1831=CARTESIAN_POINT('',(9.75,0.749999999999999,4.)); +#1832=CARTESIAN_POINT('',(9.75,0.749999999999999,8.4)); +#1833=CARTESIAN_POINT('',(9.75,0.749999999999999,4.)); +#1834=CARTESIAN_POINT('Origin',(6.75,0.749999999999999,8.4)); +#1835=CARTESIAN_POINT('',(5.875,0.749999999999999,8.4)); +#1836=CARTESIAN_POINT('',(6.75,0.749999999999999,4.)); +#1837=CARTESIAN_POINT('Origin',(8.25,0.374999999999999,4.)); +#1838=CARTESIAN_POINT('Origin',(5.84567147554496,-3.375,8.4)); +#1839=CARTESIAN_POINT('',(5.84567147554496,-3.375,8.4)); +#1840=CARTESIAN_POINT('',(6.22067147554496,-2.72548094716167,8.4)); +#1841=CARTESIAN_POINT('',(6.47067147554496,-2.29246824526945,8.4)); +#1842=CARTESIAN_POINT('',(5.84567147554496,-3.375,4.)); +#1843=CARTESIAN_POINT('',(5.84567147554496,-3.375,8.4)); +#1844=CARTESIAN_POINT('',(6.22067147554496,-2.72548094716167,4.)); +#1845=CARTESIAN_POINT('',(5.84567147554496,-3.375,4.)); +#1846=CARTESIAN_POINT('',(6.22067147554496,-2.72548094716167,8.4)); +#1847=CARTESIAN_POINT('Origin',(8.44374768689828,-4.875,8.4)); +#1848=CARTESIAN_POINT('',(8.44374768689828,-4.875,8.4)); +#1849=CARTESIAN_POINT('',(6.09687384344914,-3.52003175473055,8.4)); +#1850=CARTESIAN_POINT('',(8.44374768689828,-4.875,4.)); +#1851=CARTESIAN_POINT('',(8.44374768689828,-4.875,8.4)); +#1852=CARTESIAN_POINT('',(8.44374768689828,-4.875,4.)); +#1853=CARTESIAN_POINT('Origin',(8.81874768689828,-4.22548094716167,8.4)); +#1854=CARTESIAN_POINT('',(8.81874768689828,-4.22548094716167,8.4)); +#1855=CARTESIAN_POINT('',(9.25624768689828,-3.46770871885029,8.4)); +#1856=CARTESIAN_POINT('',(8.81874768689828,-4.22548094716167,4.)); +#1857=CARTESIAN_POINT('',(8.81874768689828,-4.22548094716167,8.4)); +#1858=CARTESIAN_POINT('',(8.81874768689828,-4.22548094716167,4.)); +#1859=CARTESIAN_POINT('Origin',(6.22067147554496,-2.72548094716167,8.4)); +#1860=CARTESIAN_POINT('',(5.17283573777248,-2.12051270189222,8.4)); +#1861=CARTESIAN_POINT('',(6.22067147554496,-2.72548094716167,4.)); +#1862=CARTESIAN_POINT('Origin',(7.33220958122162,-3.80024047358084,4.)); +#1863=CARTESIAN_POINT('Origin',(3.375,-5.84567147554496,8.4)); +#1864=CARTESIAN_POINT('',(3.375,-5.84567147554496,8.4)); +#1865=CARTESIAN_POINT('',(4.02451905283833,-5.47067147554496,8.4)); +#1866=CARTESIAN_POINT('',(5.25,-4.76313972081441,8.4)); +#1867=CARTESIAN_POINT('',(3.375,-5.84567147554496,4.)); +#1868=CARTESIAN_POINT('',(3.375,-5.84567147554496,8.4)); +#1869=CARTESIAN_POINT('',(4.02451905283833,-5.47067147554496,4.)); +#1870=CARTESIAN_POINT('',(3.375,-5.84567147554496,4.)); +#1871=CARTESIAN_POINT('',(4.02451905283833,-5.47067147554496,8.4)); +#1872=CARTESIAN_POINT('Origin',(4.875,-8.44374768689828,8.4)); +#1873=CARTESIAN_POINT('',(4.875,-8.44374768689828,8.4)); +#1874=CARTESIAN_POINT('',(3.0625,-5.30440559817969,8.4)); +#1875=CARTESIAN_POINT('',(4.875,-8.44374768689828,4.)); +#1876=CARTESIAN_POINT('',(4.875,-8.44374768689828,8.4)); +#1877=CARTESIAN_POINT('',(4.875,-8.44374768689828,4.)); +#1878=CARTESIAN_POINT('Origin',(5.52451905283833,-8.06874768689828,8.4)); +#1879=CARTESIAN_POINT('',(5.52451905283833,-8.06874768689828,8.4)); +#1880=CARTESIAN_POINT('',(7.07475952641916,-7.17371593216773,8.4)); +#1881=CARTESIAN_POINT('',(5.52451905283833,-8.06874768689828,4.)); +#1882=CARTESIAN_POINT('',(5.52451905283833,-8.06874768689828,8.4)); +#1883=CARTESIAN_POINT('',(5.52451905283833,-8.06874768689828,4.)); +#1884=CARTESIAN_POINT('Origin',(4.02451905283833,-5.47067147554496,8.4)); +#1885=CARTESIAN_POINT('',(2.96201905283833,-3.63036749250303,8.4)); +#1886=CARTESIAN_POINT('',(4.02451905283833,-5.47067147554496,4.)); +#1887=CARTESIAN_POINT('Origin',(4.44975952641916,-6.95720958122162,4.)); +#1888=CARTESIAN_POINT('Origin',(1.01033360929657E-16,-6.75,8.4)); +#1889=CARTESIAN_POINT('',(1.01033360929657E-16,-6.75,8.4)); +#1890=CARTESIAN_POINT('',(0.75,-6.75,8.4)); +#1891=CARTESIAN_POINT('',(2.5,-6.75,8.4)); +#1892=CARTESIAN_POINT('',(-1.68388934882761E-16,-6.75,4.)); +#1893=CARTESIAN_POINT('',(1.01033360929657E-16,-6.75,8.4)); +#1894=CARTESIAN_POINT('',(0.75,-6.75,4.)); +#1895=CARTESIAN_POINT('',(-1.68388934882761E-16,-6.75,4.)); +#1896=CARTESIAN_POINT('',(0.75,-6.75,8.4)); +#1897=CARTESIAN_POINT('Origin',(-8.26636589424465E-17,-9.75,8.4)); +#1898=CARTESIAN_POINT('',(-8.26636589424465E-17,-9.75,8.4)); +#1899=CARTESIAN_POINT('',(2.77555756156289E-16,-4.875,8.4)); +#1900=CARTESIAN_POINT('',(-3.52085954754864E-16,-9.75,4.)); +#1901=CARTESIAN_POINT('',(-8.26636589424465E-17,-9.75,8.4)); +#1902=CARTESIAN_POINT('',(-3.52085954754864E-16,-9.75,4.)); +#1903=CARTESIAN_POINT('Origin',(0.75,-9.75,8.4)); +#1904=CARTESIAN_POINT('',(0.75,-9.75,8.4)); +#1905=CARTESIAN_POINT('',(2.875,-9.75,8.4)); +#1906=CARTESIAN_POINT('',(0.75,-9.75,4.)); +#1907=CARTESIAN_POINT('',(0.75,-9.75,8.4)); +#1908=CARTESIAN_POINT('',(0.75,-9.75,4.)); +#1909=CARTESIAN_POINT('Origin',(0.75,-6.75,8.4)); +#1910=CARTESIAN_POINT('',(0.750000000000001,-3.375,8.4)); +#1911=CARTESIAN_POINT('',(0.75,-6.75,4.)); +#1912=CARTESIAN_POINT('Origin',(0.375,-8.25,4.)); +#1913=CARTESIAN_POINT('Origin',(-3.375,-5.84567147554496,8.4)); +#1914=CARTESIAN_POINT('',(-3.375,-5.84567147554496,8.4)); +#1915=CARTESIAN_POINT('',(-2.72548094716167,-6.22067147554496,8.4)); +#1916=CARTESIAN_POINT('',(-1.5,-6.92820323027551,8.4)); +#1917=CARTESIAN_POINT('',(-3.375,-5.84567147554496,4.)); +#1918=CARTESIAN_POINT('',(-3.375,-5.84567147554496,8.4)); +#1919=CARTESIAN_POINT('',(-2.72548094716167,-6.22067147554496,4.)); +#1920=CARTESIAN_POINT('',(-3.375,-5.84567147554496,4.)); +#1921=CARTESIAN_POINT('',(-2.72548094716167,-6.22067147554496,8.4)); +#1922=CARTESIAN_POINT('Origin',(-4.875,-8.44374768689828,8.4)); +#1923=CARTESIAN_POINT('',(-4.875,-8.44374768689828,8.4)); +#1924=CARTESIAN_POINT('',(-1.8125,-3.13934208871859,8.4)); +#1925=CARTESIAN_POINT('',(-4.875,-8.44374768689828,4.)); +#1926=CARTESIAN_POINT('',(-4.875,-8.44374768689828,8.4)); +#1927=CARTESIAN_POINT('',(-4.875,-8.44374768689828,4.)); +#1928=CARTESIAN_POINT('Origin',(-4.22548094716167,-8.81874768689828,8.4)); +#1929=CARTESIAN_POINT('',(-4.22548094716167,-8.81874768689828,8.4)); +#1930=CARTESIAN_POINT('',(-2.67524047358084,-9.71377944162882,8.4)); +#1931=CARTESIAN_POINT('',(-4.22548094716167,-8.81874768689828,4.)); +#1932=CARTESIAN_POINT('',(-4.22548094716167,-8.81874768689828,8.4)); +#1933=CARTESIAN_POINT('',(-4.22548094716167,-8.81874768689828,4.)); +#1934=CARTESIAN_POINT('Origin',(-2.72548094716167,-6.22067147554496,8.4)); +#1935=CARTESIAN_POINT('',(-0.412980947161671,-2.21530398304193,8.4)); +#1936=CARTESIAN_POINT('',(-2.72548094716167,-6.22067147554496,4.)); +#1937=CARTESIAN_POINT('Origin',(-3.80024047358084,-7.33220958122162,4.)); +#1938=CARTESIAN_POINT('Origin',(-5.84567147554496,-3.375,8.4)); +#1939=CARTESIAN_POINT('',(-5.84567147554496,-3.375,8.4)); +#1940=CARTESIAN_POINT('',(-5.47067147554496,-4.02451905283833,8.4)); +#1941=CARTESIAN_POINT('',(-5.22067147554496,-4.45753175473055,8.4)); +#1942=CARTESIAN_POINT('',(-5.84567147554496,-3.375,4.)); +#1943=CARTESIAN_POINT('',(-5.84567147554496,-3.375,8.4)); +#1944=CARTESIAN_POINT('',(-5.47067147554496,-4.02451905283833,4.)); +#1945=CARTESIAN_POINT('',(-5.84567147554496,-3.375,4.)); +#1946=CARTESIAN_POINT('',(-5.47067147554496,-4.02451905283833,8.4)); +#1947=CARTESIAN_POINT('Origin',(-8.44374768689828,-4.875,8.4)); +#1948=CARTESIAN_POINT('',(-8.44374768689828,-4.875,8.4)); +#1949=CARTESIAN_POINT('',(-2.34687384344914,-1.35496824526945,8.4)); +#1950=CARTESIAN_POINT('',(-8.44374768689828,-4.875,4.)); +#1951=CARTESIAN_POINT('',(-8.44374768689828,-4.875,8.4)); +#1952=CARTESIAN_POINT('',(-8.44374768689828,-4.875,4.)); +#1953=CARTESIAN_POINT('Origin',(-8.06874768689828,-5.52451905283833,8.4)); +#1954=CARTESIAN_POINT('',(-8.06874768689828,-5.52451905283833,8.4)); +#1955=CARTESIAN_POINT('',(-7.63124768689828,-6.28229128114971,8.4)); +#1956=CARTESIAN_POINT('',(-8.06874768689828,-5.52451905283833,4.)); +#1957=CARTESIAN_POINT('',(-8.06874768689828,-5.52451905283833,8.4)); +#1958=CARTESIAN_POINT('',(-8.06874768689828,-5.52451905283833,4.)); +#1959=CARTESIAN_POINT('Origin',(-5.47067147554496,-4.02451905283833,8.4)); +#1960=CARTESIAN_POINT('',(-0.67283573777248,-1.25448729810778,8.4)); +#1961=CARTESIAN_POINT('',(-5.47067147554496,-4.02451905283833,4.)); +#1962=CARTESIAN_POINT('Origin',(-6.95720958122162,-4.44975952641916,4.)); +#1963=CARTESIAN_POINT('Origin',(-6.75,0.,8.4)); +#1964=CARTESIAN_POINT('',(-6.75,0.,8.4)); +#1965=CARTESIAN_POINT('',(-6.75,-0.75,8.4)); +#1966=CARTESIAN_POINT('',(-6.75,0.,8.4)); +#1967=CARTESIAN_POINT('',(-6.75,0.,4.)); +#1968=CARTESIAN_POINT('',(-6.75,0.,8.4)); +#1969=CARTESIAN_POINT('',(-6.75,-0.75,4.)); +#1970=CARTESIAN_POINT('',(-6.75,0.,4.)); +#1971=CARTESIAN_POINT('',(-6.75,-0.75,8.4)); +#1972=CARTESIAN_POINT('Origin',(-9.75,0.,8.4)); +#1973=CARTESIAN_POINT('',(-9.75,0.,8.4)); +#1974=CARTESIAN_POINT('',(-2.375,0.,8.4)); +#1975=CARTESIAN_POINT('',(-9.75,0.,4.)); +#1976=CARTESIAN_POINT('',(-9.75,0.,8.4)); +#1977=CARTESIAN_POINT('',(-9.75,0.,4.)); +#1978=CARTESIAN_POINT('Origin',(-9.75,-0.75,8.4)); +#1979=CARTESIAN_POINT('',(-9.75,-0.75,8.4)); +#1980=CARTESIAN_POINT('',(-9.75,-0.375,8.4)); +#1981=CARTESIAN_POINT('',(-9.75,-0.75,4.)); +#1982=CARTESIAN_POINT('',(-9.75,-0.75,8.4)); +#1983=CARTESIAN_POINT('',(-9.75,-0.75,4.)); +#1984=CARTESIAN_POINT('Origin',(-6.75,-0.75,8.4)); +#1985=CARTESIAN_POINT('',(-0.875,-0.75,8.4)); +#1986=CARTESIAN_POINT('',(-6.75,-0.75,4.)); +#1987=CARTESIAN_POINT('Origin',(-8.25,-0.375,4.)); +#1988=CARTESIAN_POINT('Origin',(12.5,-12.5,2.44929359829471E-16)); +#1989=CARTESIAN_POINT('',(12.5,-12.5,2.44929359829471E-16)); +#1990=CARTESIAN_POINT('',(12.5,12.5,2.44929359829471E-16)); +#1991=CARTESIAN_POINT('',(12.5,-12.5,2.44929359829471E-16)); +#1992=CARTESIAN_POINT('',(12.5,12.5,1.6)); +#1993=CARTESIAN_POINT('',(12.5,12.5,2.44929359829471E-16)); +#1994=CARTESIAN_POINT('',(12.5,-12.5,1.6)); +#1995=CARTESIAN_POINT('',(12.5,-12.5,1.6)); +#1996=CARTESIAN_POINT('',(12.5,-12.5,2.44929359829471E-16)); +#1997=CARTESIAN_POINT('Origin',(-12.5,-12.5,2.44929359829471E-16)); +#1998=CARTESIAN_POINT('',(-12.5,-12.5,2.44929359829471E-16)); +#1999=CARTESIAN_POINT('',(-12.5,-12.5,2.44929359829471E-16)); +#2000=CARTESIAN_POINT('',(-12.5,-12.5,1.6)); +#2001=CARTESIAN_POINT('',(-12.5,-12.5,1.6)); +#2002=CARTESIAN_POINT('',(-12.5,-12.5,2.44929359829471E-16)); +#2003=CARTESIAN_POINT('Origin',(-12.5,12.5,2.44929359829471E-16)); +#2004=CARTESIAN_POINT('',(-12.5,12.5,2.44929359829471E-16)); +#2005=CARTESIAN_POINT('',(-12.5,12.5,2.44929359829471E-16)); +#2006=CARTESIAN_POINT('',(-12.5,12.5,1.6)); +#2007=CARTESIAN_POINT('',(-12.5,12.5,1.6)); +#2008=CARTESIAN_POINT('',(-12.5,12.5,2.44929359829471E-16)); +#2009=CARTESIAN_POINT('Origin',(12.5,12.5,2.44929359829471E-16)); +#2010=CARTESIAN_POINT('',(12.5,12.5,2.44929359829471E-16)); +#2011=CARTESIAN_POINT('',(12.5,12.5,1.6)); +#2012=CARTESIAN_POINT('Origin',(0.,0.,1.6)); +#2013=CARTESIAN_POINT('',(-11.6,1.42059028701093E-15,1.6)); +#2014=CARTESIAN_POINT('Origin',(9.79717439317883E-17,0.,1.6)); +#2015=CARTESIAN_POINT('Origin',(11.6,0.,0.)); +#2016=CARTESIAN_POINT('',(-4.,-4.89858719658941E-16,0.)); +#2017=CARTESIAN_POINT('Origin',(-3.08148791101958E-32,0.,0.)); +#2018=CARTESIAN_POINT('Origin',(3.06161699786838E-16,0.,5.)); +#2019=CARTESIAN_POINT('',(-11.6,-1.42059028701093E-15,10.)); +#2020=CARTESIAN_POINT('Origin',(6.12323399573677E-16,0.,10.)); +#2021=CARTESIAN_POINT('',(-11.6,-1.42059028701093E-15,5.)); +#2022=CARTESIAN_POINT('Origin',(10.,0.,10.)); +#2023=CARTESIAN_POINT('',(-10.,-1.22464679914735E-15,10.)); +#2024=CARTESIAN_POINT('Origin',(6.12323399573677E-16,0.,10.)); +#2025=CARTESIAN_POINT('Origin',(5.63337527607783E-16,0.,9.2)); +#2026=CARTESIAN_POINT('',(-10.,-1.22464679914735E-15,8.4)); +#2027=CARTESIAN_POINT('',(-10.,-1.22464679914735E-15,9.2)); +#2028=CARTESIAN_POINT('Origin',(5.14351655641888E-16,0.,8.4)); +#2029=CARTESIAN_POINT('Origin',(5.,0.,8.4)); +#2030=CARTESIAN_POINT('',(-5.,-6.12323399573677E-16,8.4)); +#2031=CARTESIAN_POINT('Origin',(5.14351655641888E-16,0.,8.4)); +#2032=CARTESIAN_POINT('Origin',(4.83735485663205E-16,0.,7.9)); +#2033=CARTESIAN_POINT('',(-4.,-4.89858719658941E-16,7.4)); +#2034=CARTESIAN_POINT('',(-4.5,-5.51091059616309E-16,7.9)); +#2035=CARTESIAN_POINT('Origin',(4.53119315684521E-16,0.,7.4)); +#2036=CARTESIAN_POINT('Origin',(2.2655965784226E-16,0.,3.7)); +#2037=CARTESIAN_POINT('',(-4.,-4.89858719658941E-16,3.7)); +#2038=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#2042, +'DISTANCE_ACCURACY_VALUE', +'Maximum model space distance between geometric entities at asserted c +onnectivities'); +#2039=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#2042, +'DISTANCE_ACCURACY_VALUE', +'Maximum model space distance between geometric entities at asserted c +onnectivities'); +#2040=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2038)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2042,#2044,#2045)) +REPRESENTATION_CONTEXT('','3D') +); +#2041=( +GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2039)) +GLOBAL_UNIT_ASSIGNED_CONTEXT((#2042,#2044,#2045)) +REPRESENTATION_CONTEXT('','3D') +); +#2042=( +LENGTH_UNIT() +NAMED_UNIT(*) +SI_UNIT(.MILLI.,.METRE.) +); +#2043=( +LENGTH_UNIT() +NAMED_UNIT(*) +SI_UNIT($,.METRE.) +); +#2044=( +NAMED_UNIT(*) +PLANE_ANGLE_UNIT() +SI_UNIT($,.RADIAN.) +); +#2045=( +NAMED_UNIT(*) +SI_UNIT($,.STERADIAN.) +SOLID_ANGLE_UNIT() +); +#2046=SHAPE_DEFINITION_REPRESENTATION(#2047,#2048); +#2047=PRODUCT_DEFINITION_SHAPE('',$,#2050); +#2048=SHAPE_REPRESENTATION('',(#1287),#2040); +#2049=PRODUCT_DEFINITION_CONTEXT('part definition',#2054,'design'); +#2050=PRODUCT_DEFINITION('T-Nut Mounting','T-Nut Mounting v1',#2051,#2049); +#2051=PRODUCT_DEFINITION_FORMATION('',$,#2056); +#2052=PRODUCT_RELATED_PRODUCT_CATEGORY('T-Nut Mounting v1', +'T-Nut Mounting v1',(#2056)); +#2053=APPLICATION_PROTOCOL_DEFINITION('international standard', +'automotive_design',2009,#2054); +#2054=APPLICATION_CONTEXT( +'Core Data for Automotive Mechanical Design Process'); +#2055=PRODUCT_CONTEXT('part definition',#2054,'mechanical'); +#2056=PRODUCT('T-Nut Mounting','T-Nut Mounting v1',$,(#2055)); +#2057=PRESENTATION_STYLE_ASSIGNMENT((#2058)); +#2058=SURFACE_STYLE_USAGE(.BOTH.,#2059); +#2059=SURFACE_SIDE_STYLE('',(#2060)); +#2060=SURFACE_STYLE_FILL_AREA(#2061); +#2061=FILL_AREA_STYLE('Steel - Satin',(#2062)); +#2062=FILL_AREA_STYLE_COLOUR('Steel - Satin',#2063); +#2063=COLOUR_RGB('Steel - Satin',0.627450980392157,0.627450980392157,0.627450980392157); +ENDSEC; +END-ISO-10303-21; diff --git a/Commercial_Components/CAD_Files/T_Nut/T_Nut_Mounting_Positive.stl b/Commercial_Components/CAD_Files/T_Nut/T_Nut_Mounting_Positive.stl new file mode 100644 index 0000000..f8bca9b Binary files /dev/null and b/Commercial_Components/CAD_Files/T_Nut/T_Nut_Mounting_Positive.stl differ diff --git a/Commercial_Components/Cable-Ties.md b/Commercial_Components/Cable-Ties.md new file mode 100644 index 0000000..5f41412 --- /dev/null +++ b/Commercial_Components/Cable-Ties.md @@ -0,0 +1,41 @@ +--- +title: Cable Ties +layout: default +nav_order: 3 +parent: Commercial Components +--- + +# Cable Ties + +Cable ties are typically used for strain relief on cables entering an enclosure or to otherwise attach cables and wires to a 3D print. + +A bundle of cable ties. + +The cable ties used in most MMC projects require at least 3 mm of width, and 1 mm of thickness. When the cable tie runs along the exterior of the device, like the ones found at the bottom of the [Open Rocker Switch](https://github.com/makersmakingchange/Open-Rocker-Switch), be aware that it will not bend a perfect 90 degrees and will either need a radiused bend or a slightly deeper channel to allow it to lie flush with the exterior of the device. If it is in the interior bottom of the device, a fillet along the bottom makes it easier to insert the cable without it getting stuck, as seen in the [Spruce Joystick](https://github.com/makersmakingchange/Spruce-Mini-Joystick) + +## Dimensions + +The primary dimensions and considerations of the part. +* **Minimum Width:** The minimum width of the rectangle required for the cable tie to pass through. If using a circular passthrough, this is also the diameter of the circle. +* **Minimum Height:** The minimum height of the rectangle required for the cable tie to pass through. + +A bundle of cable ties. + +| **Cable Tie Dimensions** | | +| :--------------------- | -----: | +| Minimum Width | 3 mm | +| Minimum Thickness | 1 mm | + +## Design Considerations + +When designing parts that use this component, you need to keep in mind the following design considerations +* **Overhanging Holes:** Holes in unsupported overhanging material can print poorly and lead to parts not fitting. Refer to the Hydra Research Design Rules [section on overhanging holes](https://www.hydraresearch3d.com/design-rules#unsupported-holes) for how to design an overhanging hole that can print without support +* **Horizontally Printed Holes:** Holes in the wall of a print can sag when printed, while this isn’t an issue for the threaded part of the hole, this can cause the passthrough hole to not pass through wall. When designing a hole meant to print horizontally, use a circumscribed octagon instead to eliminate the steep overhangs at the top of the circle. +* **Layer Line Orientation:** When the cable tie is used to provide strain relief for a cable, consider the fact that it may be subject to a significant force. Make sure to orient the section that the cable tie is connected to in a way that the layer lines strengthen the section, not weaken it. + +## Purchasing + + | **Cable Ties can be found at these links:** | | +| :--------------------- | -----: | +| Digikey | [Cable Tie DigiKey Link](https://www.digikey.ca/en/products/detail/3m/CT4NT18-M/2721151)| +| Mouser | [Cable Tie Mouser Link](https://www.mouser.ca/ProductDetail/3M-Electronic-Specialty/CT4NT18-M?qs=ZWbLE8ZZ2FMuC6MNf0Q4Kw%3D%3D) | \ No newline at end of file diff --git a/Commercial_Components/Commercial-Components.md b/Commercial_Components/Commercial-Components.md new file mode 100644 index 0000000..8e8ead7 --- /dev/null +++ b/Commercial_Components/Commercial-Components.md @@ -0,0 +1,8 @@ +--- +title: Commercial Components +layout: default +nav_order: 2 +parent: Home +--- + +This section discusses each of the commonly used commercial components in MMC design. It discusses the key dimensions used when modeling features for these parts, as well as design considerations to be aware of such as overhanging holes and layer orientation. \ No newline at end of file diff --git a/Commercial_Components/Light-Pipe.md b/Commercial_Components/Light-Pipe.md new file mode 100644 index 0000000..1d8b659 --- /dev/null +++ b/Commercial_Components/Light-Pipe.md @@ -0,0 +1,39 @@ +--- +title: Light Pipes +layout: default +nav_order: 3 +parent: Commercial Components +--- + +## Light Pipe + +Light pipes are used to transmit light from the LEDs on a microcontroller or other internal light sources to the exterior of the enclosure. They are used in devices such as the [LipSync](https://github.com/makersmakingchange/LipSync), the [Ivy Joystick](https://github.com/makersmakingchange/Ivy-Nunchuck-Joystick-Adapter), and the [Willow](https://github.com/makersmakingchange/Willow-Joystick). + +A picture of a light pipe + +When designing for a light pipe, there are two things to consider: the shape of the opening that the light pipe sits in, and the length of the light pipe itself. + +- **Mounting Hole Diameter:** The diameter of the hole that the light pipe passes through. This is a press fit and is slightly smaller than the diameter of the light pipe. +- **Counterbore Diameter:** The diameter of the counterbore hole that sinks the head of the light pipe into the surface of the device. +- **Minimum LED Spacing:** The minimum distance between the bottom of the domed section of the light pipe and the LED on the device. If the distance between the LED and the resting surface is less than this, the light pipe will not seat properly in place and can fall out of place. If it is impossible to position the light pipe more than this distance away, the light pipe itself can be trimmed, but this is not recommended. + +A cross sectional view of the Shrub Hub light pipe, with all the key dimensions labeled. + +| Light Pipe Measurements | | +| :--------------------- | -----: | +| Mounting Hole Diameter | 2.8 mm | +| Counterbore Diameter | 4 mm | +| Minimum LED Spacing | 6.6 mm | + +When designing parts that use this component, you need to keep in mind the following design considerations + +- **Overhanging holes**: holes in unsupported overhanging material can print poorly and lead to parts not fitting. Refer to the Hydra Research Design Rules [section on overhanging holes](https://www.hydraresearch3d.com/design-rules#unsupported-holes) for how to design an overhanging hole that can print without support +- **Horizontally printed holes:** Holes in the wall of a print can sag when printed, while this isn't an issue for the threaded part of the hole, this can cause the passthrough hole to not pass through wall. When designing a hole meant to print horizontally, use a circumscribed octagon instead to eliminate the steep overhangs at the top of the circle. + + +## Purchasing + + | **Light Pipes can be found at these links:** | | +| :--------------------- | -----: | +| Digikey | [Light Pipe DigiKey Link](https://www.digikey.ca/en/products/detail/dialight/51513030250F/4965201) | +| Mouser | [Light Pipe Mouser Link](https://www.mouser.ca/ProductDetail/Dialight/515-1303-0250F?qs=rkevp0fsrts4dv75K85%2FWA%3D%3D) | \ No newline at end of file diff --git a/Commercial_Components/M3-Nut.md b/Commercial_Components/M3-Nut.md new file mode 100644 index 0000000..33117e6 --- /dev/null +++ b/Commercial_Components/M3-Nut.md @@ -0,0 +1,46 @@ +--- +title: M3 Nut +layout: default +nav_order: 3 +parent: Commercial Components +--- + +## M3 Nut + +M3 nuts are used to add threads to a project, typically in a pair to allow for the attachment of a mounting adaptor like the RAM B adaptor or the ¼-20 Camera Mount adaptor. + +a picture of an M3 nut + +There is one sketch profile used to make the retaining slot, with two extrudes required. The dimensions used in the sketch and extrusions are listed in the table below, along with a photo of the sketch, the first extrusion, the second extrusion, and the finished retainer after chamfers, filets, and other features are applied. For advice on chamfers and filets, see the [Hydra Research Design Rules](https://www.hydraresearch3d.com/design-rules) guide. The primary dimensions are: + +- **Minimum Wall Thickness:** The minimum thickness of the walls of the nut capture. +- **Retaining Bump Diameter:** The diameter of the circular bumps used to retain the nut in the capture. +- **Inset Distance:** The distance from the retaining bump to the beginning of the nut capture walls. +- **Nut Width:** The distance between the two walls of the nut capture. +- **First Extrude:** The thickness of the first extrusion that forms the walls of the nut capture. +- **Second Extrude:** The thickness of the second extrusion used to cover the nut. +- **Nut Spacing:** The spacing between two nuts used in the OpenAT Joystick mounting adapters. +- **Maximum Base + Adapter Thickness:** This is the maximum combined thickness of the base of the device and the thickness of the adapter. If the combination is thicker than this, the threads of the bolt will not be fully engaged with the thread of the nut. This is the least important dimension, and it assumes that you are using the M3 bolts in the Bill of Materials for the MMC OpenAT Joysticks that has an 8mm long threaded section. If the combined thickness cannot be reduced below this number, you can simply use a longer bolt. For reference, the thickness of the OpenAT Joystick mounting adaptors is 4mm. + +A flowchart of the creation of a mounting slot for an M3 nut. The first image is the sketch used, the second image is the first extrude of the walls, the third image is the extrude of the top, and the final image is the final slot after chamfers and filets have been applied. + +| **M3 Nut Retainer Dimensions** | | +| :--------------------- | -----: | +| Minimum Wall Thickness | 1.6 mm | +| Retaining Bump Diameter | 0.5 mm | +| Inset Distance | 1 mm | +| Nut Width | 5.7 mm | +| First Extrude | 2.8 mm | +| Second Extrude | 1 mm | +| Distance Between Nuts | 50 mm | +| Maximum Base + Adapter Thickness | 5 mm | + +When designing the nut retainer, there are several other considerations that affect the orientation and placement of the retainer. The first consideration is the orientation. In the example in the photographs, the initial sketch is parallel with the printer bed, and it builds up from there. However, in some cases the nut capture may need to be placed on the wall. In this case, the opening that the nut goes in should be facing up and be the last thing that is printed. Another consideration is to leave a hole above the threaded part of the nut to allow bolts of any length to be used to secure the mounting adaptor. For advice on printing unsupported holes, refer to the Hydra Research Design Rules [section on printing unsupported holes.](https://www.hydraresearch3d.com/design-rules#unsupported-holes) If there are parts directly above the nut that the bolt could impact, omit this hole. Finally, there is a maximum base thickness between the outside of the device and the start of the threads. If the base is thicker than this, the default M3 bolt that is used with the nut will not be long enough to pass through the adaptor and the base and still engage with the threads on the nuts. + + +## Purchasing + + | **M3 Nuts can be found at these links:** | | +| :--------------------- | -----: | +| Digikey | [M3 Nut DigiKey Link](https://www.digikey.ca/en/products/detail/keystone-electronics/4708/4499301)| +| Mouser | [M3 Nut Mouser Link](https://www.mouser.ca/ProductDetail/Keystone-Electronics/4708?qs=wOxb8XianXjGbgegRl0S9Q%3D%3D) | \ No newline at end of file diff --git a/Commercial_Components/MicroSD-Card.md b/Commercial_Components/MicroSD-Card.md new file mode 100644 index 0000000..429e3fe --- /dev/null +++ b/Commercial_Components/MicroSD-Card.md @@ -0,0 +1,26 @@ +--- +title: MicroSD Card +layout: default +nav_order: 3 +parent: Commercial Components +--- + +# MicroSD card + +SD cards are used in some devices, such as the [Open Playback Recorder](https://github.com/makersmakingchange/Open-Playback-Recorder), to provide storage for the device, typically for audio files. Sometimes these SD cards are put near the edge of the enclosure so that the user can access the card to view, add, or remove files from it. MMC build typically use the Adafruit MicroSD card breakout board+ to read the MicroSD cards. When properly seated in the reader PCB, the MicroSD card protrudes 2mm beyond the end of the reader PCB. + +a picture of an M3 nut +a picture of an M3 nut + + +When designing for a user accessible SD card, it is important to keep a knockout area that is large enough for the user to get a finger into the enclosure to remove the SD card, as well as a maximum distance away from the enclosure wall the SD card can be before it is too difficult to remove. + +- **Knockout:** The knockout hole in the side of the enclosure, centered on the MicroSD card. This allows the card to pass through the wall of the enclosure. If the hole is too large, debris can enter the enclosure, but if it is too small it is difficult to reach the reader to remove the card. + - **Width:** The width of the knockout hole in the side of the enclosure. + - **Height:** The height of the knockout hole in the side of the enclosure. +- **Maximum Card Depth:** The maximum distance from the end of the card when installed, to the exterior edge of the wall of the device. This ensures that the user can still reach in through the gap with their fingertip and press on the card to eject and release it. + +| MicroSD Card Measurements | | +| :--------------------- | -----: | +| Knockout Size (width x height) | 15 x 5 mm | +| Maximum Card Depth | 2 mm | \ No newline at end of file diff --git a/Commercial_Components/Non-Slip-Feet.md b/Commercial_Components/Non-Slip-Feet.md new file mode 100644 index 0000000..ee55f99 --- /dev/null +++ b/Commercial_Components/Non-Slip-Feet.md @@ -0,0 +1,33 @@ +--- +title: Non-Slip Feet +layout: default +nav_order: 3 +parent: Commercial Components +--- + +## Non-Slip Feet + +Adhesive nonslip feet are used on the bottom of devices to prevent them from sliding around while in use. + +A photo of a non slip foot + +The two primary considerations when designing for a non-slip foot are the diameter of the indent that it fits in, as well as the maximum depth. + +- **Minimum Diameter:** The minimum diameter that the indent can be while still accommodating most common nonslip foot sizes. In the below image, the minimum diameter is measured at the bottom of the hole, and the chamfer expands from there. +- **Maximum Depth:** The deepest an indent can be while still allowing enough of the foot to protrude to contact the surface the device is resting on to be non-stick. + +A CAD rendering of a non slip base, showing one foot installed in place, and the other missing. + +| Non-Slip Foot Measurements | | +| :--------------------- | -----: | +| Minimum Diameter | 12.5 mm | +| Maximum Depth | 3 mm | + +The foot linked was chosen since it can be bought individually on Digikey when ordering the other electronic parts of the project. Non-slip feet can also commonly be bought at dollar stores and other similar places. The lack of consistency with diameter and height makes it difficult to consistently design around, but a common diameter is a half inch. If the foot is larger than that, it would be better to leave the surface flat to allow the maker to place them in the best location for that size foot. + + +## Purchasing + + | **Non Slip Feet can be found at these links:** | | +| :--------------------- | -----: | +| Digikey | [Non-Slip Foot DigiKey Link](https://www.digikey.ca/en/products/detail/bumper-specialties-inc/BS34CL12X25RP/13213600) | \ No newline at end of file diff --git a/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_IMG1.png b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_IMG1.png new file mode 100644 index 0000000..f6fb8d4 Binary files /dev/null and b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_IMG1.png differ diff --git a/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_IMG2.png b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_IMG2.png new file mode 100644 index 0000000..d72e519 Binary files /dev/null and b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_IMG2.png differ diff --git a/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR1.png b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR1.png new file mode 100644 index 0000000..5fde8cf Binary files /dev/null and b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR1.png differ diff --git a/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR2.png b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR2.png new file mode 100644 index 0000000..bbfd016 Binary files /dev/null and b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR2.png differ diff --git a/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR3.png b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR3.png new file mode 100644 index 0000000..11f315a Binary files /dev/null and b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR3.png differ diff --git a/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR4.png b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR4.png new file mode 100644 index 0000000..a8c4c8b Binary files /dev/null and b/Commercial_Components/Photos/3_5_Audio_Jack/3_5_Audio_Jack_QR4.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG1.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG1.png new file mode 100644 index 0000000..bbaefbe Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG1.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG10.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG10.png new file mode 100644 index 0000000..26c0844 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG10.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG11.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG11.png new file mode 100644 index 0000000..227cd6e Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG11.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG12.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG12.png new file mode 100644 index 0000000..22baef0 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG12.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG13.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG13.png new file mode 100644 index 0000000..5d9d0f0 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG13.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG14.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG14.png new file mode 100644 index 0000000..1fb2bbf Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG14.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG15.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG15.png new file mode 100644 index 0000000..5fff3af Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG15.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG16.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG16.png new file mode 100644 index 0000000..96542f8 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG16.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG17.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG17.png new file mode 100644 index 0000000..63e2394 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG17.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG2.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG2.png new file mode 100644 index 0000000..5d85b07 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG2.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG3.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG3.png new file mode 100644 index 0000000..aeed903 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG3.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG4.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG4.png new file mode 100644 index 0000000..540bedc Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG4.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG5.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG5.png new file mode 100644 index 0000000..72bdd97 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG5.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG6.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG6.png new file mode 100644 index 0000000..3dfcf04 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG6.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG7.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG7.png new file mode 100644 index 0000000..e39546a Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG7.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG8.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG8.png new file mode 100644 index 0000000..7a921ca Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG8.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG9.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG9.png new file mode 100644 index 0000000..b5532ec Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_IMG9.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR1.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR1.png new file mode 100644 index 0000000..d65a304 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR1.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR2.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR2.png new file mode 100644 index 0000000..39b6c7c Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR2.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR3.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR3.png new file mode 100644 index 0000000..3a96077 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR3.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR4.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR4.png new file mode 100644 index 0000000..bea8b5d Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR4.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR5.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR5.png new file mode 100644 index 0000000..af52dc5 Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR5.png differ diff --git a/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR6.png b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR6.png new file mode 100644 index 0000000..15a64bf Binary files /dev/null and b/Commercial_Components/Photos/Battery_Contact_Plate/Battery_Contact_Plate_QR6.png differ diff --git a/Commercial_Components/Photos/Cable_Tie/Cable_Tie_Bundle.png b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_Bundle.png new file mode 100644 index 0000000..d97fe79 Binary files /dev/null and b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_Bundle.png differ diff --git a/Commercial_Components/Photos/Cable_Tie/Cable_Tie_IMG1.png b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_IMG1.png new file mode 100644 index 0000000..d97fe79 Binary files /dev/null and b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_IMG1.png differ diff --git a/Commercial_Components/Photos/Cable_Tie/Cable_Tie_IMG2.png b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_IMG2.png new file mode 100644 index 0000000..4f015c9 Binary files /dev/null and b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_IMG2.png differ diff --git a/Commercial_Components/Photos/Cable_Tie/Cable_Tie_QR1.png b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_QR1.png new file mode 100644 index 0000000..c785894 Binary files /dev/null and b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_QR1.png differ diff --git a/Commercial_Components/Photos/Cable_Tie/Cable_Tie_QR2.png b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_QR2.png new file mode 100644 index 0000000..3bb5102 Binary files /dev/null and b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_QR2.png differ diff --git a/Commercial_Components/Photos/Cable_Tie/Cable_Tie_Sketch.png b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_Sketch.png new file mode 100644 index 0000000..4f015c9 Binary files /dev/null and b/Commercial_Components/Photos/Cable_Tie/Cable_Tie_Sketch.png differ diff --git a/Commercial_Components/Photos/LED/LED_IMG1.png b/Commercial_Components/Photos/LED/LED_IMG1.png new file mode 100644 index 0000000..b1b4344 Binary files /dev/null and b/Commercial_Components/Photos/LED/LED_IMG1.png differ diff --git a/Commercial_Components/Photos/LED/LED_IMG2.png b/Commercial_Components/Photos/LED/LED_IMG2.png new file mode 100644 index 0000000..f3e4f1c Binary files /dev/null and b/Commercial_Components/Photos/LED/LED_IMG2.png differ diff --git a/Commercial_Components/Photos/LED/LED_IMG3.png b/Commercial_Components/Photos/LED/LED_IMG3.png new file mode 100644 index 0000000..47ee566 Binary files /dev/null and b/Commercial_Components/Photos/LED/LED_IMG3.png differ diff --git a/Commercial_Components/Photos/LED/LED_IMG4.png b/Commercial_Components/Photos/LED/LED_IMG4.png new file mode 100644 index 0000000..9327c77 Binary files /dev/null and b/Commercial_Components/Photos/LED/LED_IMG4.png differ diff --git a/Commercial_Components/Photos/LED/LED_IMG5.png b/Commercial_Components/Photos/LED/LED_IMG5.png new file mode 100644 index 0000000..fb42475 Binary files /dev/null and b/Commercial_Components/Photos/LED/LED_IMG5.png differ diff --git a/Commercial_Components/Photos/Light_Pipe/Light_Pipe_IMG1.png b/Commercial_Components/Photos/Light_Pipe/Light_Pipe_IMG1.png new file mode 100644 index 0000000..b3d160e Binary files /dev/null and b/Commercial_Components/Photos/Light_Pipe/Light_Pipe_IMG1.png differ diff --git a/Commercial_Components/Photos/Light_Pipe/Light_Pipe_IMG2.png b/Commercial_Components/Photos/Light_Pipe/Light_Pipe_IMG2.png new file mode 100644 index 0000000..5cdd711 Binary files /dev/null and b/Commercial_Components/Photos/Light_Pipe/Light_Pipe_IMG2.png differ diff --git a/Commercial_Components/Photos/Light_Pipe/Light_Pipe_QR1.png b/Commercial_Components/Photos/Light_Pipe/Light_Pipe_QR1.png new file mode 100644 index 0000000..3e4818b Binary files /dev/null and b/Commercial_Components/Photos/Light_Pipe/Light_Pipe_QR1.png differ diff --git a/Commercial_Components/Photos/Light_Pipe/Light_Pipe_QR2.png b/Commercial_Components/Photos/Light_Pipe/Light_Pipe_QR2.png new file mode 100644 index 0000000..45bf551 Binary files /dev/null and b/Commercial_Components/Photos/Light_Pipe/Light_Pipe_QR2.png differ diff --git a/Commercial_Components/Photos/M3_Nut/M3_Nut_IMG1.png b/Commercial_Components/Photos/M3_Nut/M3_Nut_IMG1.png new file mode 100644 index 0000000..ca8f57d Binary files /dev/null and b/Commercial_Components/Photos/M3_Nut/M3_Nut_IMG1.png differ diff --git a/Commercial_Components/Photos/M3_Nut/M3_Nut_IMG2.png b/Commercial_Components/Photos/M3_Nut/M3_Nut_IMG2.png new file mode 100644 index 0000000..e1f0b7a Binary files /dev/null and b/Commercial_Components/Photos/M3_Nut/M3_Nut_IMG2.png differ diff --git a/Commercial_Components/Photos/M3_Nut/M3_Nut_QR1.png b/Commercial_Components/Photos/M3_Nut/M3_Nut_QR1.png new file mode 100644 index 0000000..c5e7c67 Binary files /dev/null and b/Commercial_Components/Photos/M3_Nut/M3_Nut_QR1.png differ diff --git a/Commercial_Components/Photos/M3_Nut/M3_Nut_QR2.png b/Commercial_Components/Photos/M3_Nut/M3_Nut_QR2.png new file mode 100644 index 0000000..34b3156 Binary files /dev/null and b/Commercial_Components/Photos/M3_Nut/M3_Nut_QR2.png differ diff --git a/Commercial_Components/Photos/MicroSD/MicroSD_IMG1.png b/Commercial_Components/Photos/MicroSD/MicroSD_IMG1.png new file mode 100644 index 0000000..46eb4c8 Binary files /dev/null and b/Commercial_Components/Photos/MicroSD/MicroSD_IMG1.png differ diff --git a/Commercial_Components/Photos/MicroSD/MicroSD_IMG2.png b/Commercial_Components/Photos/MicroSD/MicroSD_IMG2.png new file mode 100644 index 0000000..5dad54f Binary files /dev/null and b/Commercial_Components/Photos/MicroSD/MicroSD_IMG2.png differ diff --git a/Commercial_Components/Photos/Non_Slip_Foot/Non_Slip_Foot_IMG1.png b/Commercial_Components/Photos/Non_Slip_Foot/Non_Slip_Foot_IMG1.png new file mode 100644 index 0000000..4889de7 Binary files /dev/null and b/Commercial_Components/Photos/Non_Slip_Foot/Non_Slip_Foot_IMG1.png differ diff --git a/Commercial_Components/Photos/Non_Slip_Foot/Non_Slip_Foot_IMG2.png b/Commercial_Components/Photos/Non_Slip_Foot/Non_Slip_Foot_IMG2.png new file mode 100644 index 0000000..ed74353 Binary files /dev/null and b/Commercial_Components/Photos/Non_Slip_Foot/Non_Slip_Foot_IMG2.png differ diff --git a/Commercial_Components/Photos/Non_Slip_Foot/Non_Slip_Foot_QR1.png b/Commercial_Components/Photos/Non_Slip_Foot/Non_Slip_Foot_QR1.png new file mode 100644 index 0000000..f9e7695 Binary files /dev/null and b/Commercial_Components/Photos/Non_Slip_Foot/Non_Slip_Foot_QR1.png differ diff --git a/Commercial_Components/Photos/QT_Py/QT_PY_IMG1.png b/Commercial_Components/Photos/QT_Py/QT_PY_IMG1.png new file mode 100644 index 0000000..1f22b1a Binary files /dev/null and b/Commercial_Components/Photos/QT_Py/QT_PY_IMG1.png differ diff --git a/Commercial_Components/Photos/QT_Py/QT_PY_IMG2.png b/Commercial_Components/Photos/QT_Py/QT_PY_IMG2.png new file mode 100644 index 0000000..42ee1a0 Binary files /dev/null and b/Commercial_Components/Photos/QT_Py/QT_PY_IMG2.png differ diff --git a/Commercial_Components/Photos/QT_Py/QT_PY_IMG3.png b/Commercial_Components/Photos/QT_Py/QT_PY_IMG3.png new file mode 100644 index 0000000..4b80694 Binary files /dev/null and b/Commercial_Components/Photos/QT_Py/QT_PY_IMG3.png differ diff --git a/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_IMG1.png b/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_IMG1.png new file mode 100644 index 0000000..7050a12 Binary files /dev/null and b/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_IMG1.png differ diff --git a/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_IMG2.png b/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_IMG2.png new file mode 100644 index 0000000..7d7d745 Binary files /dev/null and b/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_IMG2.png differ diff --git a/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_QR1.png b/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_QR1.png new file mode 100644 index 0000000..59c3b16 Binary files /dev/null and b/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_QR1.png differ diff --git a/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_QR2.png b/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_QR2.png new file mode 100644 index 0000000..bc719c1 Binary files /dev/null and b/Commercial_Components/Photos/Sheet_Metal_Screw/Sheet_Metal_Screw_QR2.png differ diff --git a/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG1.png b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG1.png new file mode 100644 index 0000000..b06e28c Binary files /dev/null and b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG1.png differ diff --git a/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG2.png b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG2.png new file mode 100644 index 0000000..6bbb681 Binary files /dev/null and b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG2.png differ diff --git a/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG3.png b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG3.png new file mode 100644 index 0000000..c15f25c Binary files /dev/null and b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG3.png differ diff --git a/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG4.png b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG4.png new file mode 100644 index 0000000..3d867e1 Binary files /dev/null and b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_IMG4.png differ diff --git a/Commercial_Components/Photos/Slide_Switch/Slide_Switch_QR1.png b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_QR1.png new file mode 100644 index 0000000..3aad7d4 Binary files /dev/null and b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_QR1.png differ diff --git a/Commercial_Components/Photos/Slide_Switch/Slide_Switch_QR2.png b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_QR2.png new file mode 100644 index 0000000..591422d Binary files /dev/null and b/Commercial_Components/Photos/Slide_Switch/Slide_Switch_QR2.png differ diff --git a/Commercial_Components/Photos/Snap_Switch/Snap_Switch_IMG1.png b/Commercial_Components/Photos/Snap_Switch/Snap_Switch_IMG1.png new file mode 100644 index 0000000..51d78a0 Binary files /dev/null and b/Commercial_Components/Photos/Snap_Switch/Snap_Switch_IMG1.png differ diff --git a/Commercial_Components/Photos/Snap_Switch/Snap_Switch_IMG2.png b/Commercial_Components/Photos/Snap_Switch/Snap_Switch_IMG2.png new file mode 100644 index 0000000..da5f8f8 Binary files /dev/null and b/Commercial_Components/Photos/Snap_Switch/Snap_Switch_IMG2.png differ diff --git a/Commercial_Components/Photos/Snap_Switch/Snap_Switch_IMG3.png b/Commercial_Components/Photos/Snap_Switch/Snap_Switch_IMG3.png new file mode 100644 index 0000000..3778676 Binary files /dev/null and b/Commercial_Components/Photos/Snap_Switch/Snap_Switch_IMG3.png differ diff --git a/Commercial_Components/Photos/Snap_Switch/Snap_Switch_QR1.png b/Commercial_Components/Photos/Snap_Switch/Snap_Switch_QR1.png new file mode 100644 index 0000000..b622e7e Binary files /dev/null and b/Commercial_Components/Photos/Snap_Switch/Snap_Switch_QR1.png differ diff --git a/Commercial_Components/Photos/Snap_Switch/Snap_Switch_QR2.png b/Commercial_Components/Photos/Snap_Switch/Snap_Switch_QR2.png new file mode 100644 index 0000000..682f9c4 Binary files /dev/null and b/Commercial_Components/Photos/Snap_Switch/Snap_Switch_QR2.png differ diff --git a/Commercial_Components/Photos/TNut/TNut_IMG1.png b/Commercial_Components/Photos/TNut/TNut_IMG1.png new file mode 100644 index 0000000..c57361c Binary files /dev/null and b/Commercial_Components/Photos/TNut/TNut_IMG1.png differ diff --git a/Commercial_Components/Photos/TNut/TNut_IMG2.png b/Commercial_Components/Photos/TNut/TNut_IMG2.png new file mode 100644 index 0000000..c18550d Binary files /dev/null and b/Commercial_Components/Photos/TNut/TNut_IMG2.png differ diff --git a/Commercial_Components/Photos/TNut/TNut_IMG3.png b/Commercial_Components/Photos/TNut/TNut_IMG3.png new file mode 100644 index 0000000..17a4656 Binary files /dev/null and b/Commercial_Components/Photos/TNut/TNut_IMG3.png differ diff --git a/Commercial_Components/Photos/TNut/TNut_IMG4.png b/Commercial_Components/Photos/TNut/TNut_IMG4.png new file mode 100644 index 0000000..807da7a Binary files /dev/null and b/Commercial_Components/Photos/TNut/TNut_IMG4.png differ diff --git a/Commercial_Components/Photos/TNut/TNut_QR1.png b/Commercial_Components/Photos/TNut/TNut_QR1.png new file mode 100644 index 0000000..382284c Binary files /dev/null and b/Commercial_Components/Photos/TNut/TNut_QR1.png differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG1.jpg b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG1.jpg new file mode 100644 index 0000000..cc896dd Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG1.jpg differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG10.png b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG10.png new file mode 100644 index 0000000..f79f501 Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG10.png differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG11.png b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG11.png new file mode 100644 index 0000000..42e536f Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG11.png differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG12.png b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG12.png new file mode 100644 index 0000000..76ef2c3 Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG12.png differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG2.jpg b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG2.jpg new file mode 100644 index 0000000..86f1be7 Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG2.jpg differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG3.jpg b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG3.jpg new file mode 100644 index 0000000..65d5748 Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG3.jpg differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG4.jpg b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG4.jpg new file mode 100644 index 0000000..45f987f Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG4.jpg differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG5.png b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG5.png new file mode 100644 index 0000000..a8af5cf Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG5.png differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG6.png b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG6.png new file mode 100644 index 0000000..21c1c5e Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG6.png differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG7.png b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG7.png new file mode 100644 index 0000000..5e4f36a Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG7.png differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG8.png b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG8.png new file mode 100644 index 0000000..8839c8f Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG8.png differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG9.png b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG9.png new file mode 100644 index 0000000..c1f0ffe Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_IMG9.png differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_QR1.jpg b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_QR1.jpg new file mode 100644 index 0000000..c5b54c8 Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_QR1.jpg differ diff --git a/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_QR2.jpg b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_QR2.jpg new file mode 100644 index 0000000..6489d88 Binary files /dev/null and b/Commercial_Components/Photos/Tactile_Switch/Tactile_Switch_QR2.jpg differ diff --git a/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG1.png b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG1.png new file mode 100644 index 0000000..1bd59e3 Binary files /dev/null and b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG1.png differ diff --git a/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG2.png b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG2.png new file mode 100644 index 0000000..0ffa6c8 Binary files /dev/null and b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG2.png differ diff --git a/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG3.png b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG3.png new file mode 100644 index 0000000..cd51b07 Binary files /dev/null and b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG3.png differ diff --git a/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG4.png b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG4.png new file mode 100644 index 0000000..8349e02 Binary files /dev/null and b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG4.png differ diff --git a/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG5.png b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG5.png new file mode 100644 index 0000000..184dca3 Binary files /dev/null and b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG5.png differ diff --git a/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG6.png b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG6.png new file mode 100644 index 0000000..71f88a9 Binary files /dev/null and b/Commercial_Components/Photos/USB_Connector/USB_Connector_IMG6.png differ diff --git a/Commercial_Components/QTPy-Microcontroller.md b/Commercial_Components/QTPy-Microcontroller.md new file mode 100644 index 0000000..f3d06d2 --- /dev/null +++ b/Commercial_Components/QTPy-Microcontroller.md @@ -0,0 +1,32 @@ +--- +title: QT Py Form Factor +layout: default +nav_order: 3 +parent: Commercial Components +--- + +## QT Py Microcontroller form factor + +The QT Py microcontroller form factor is a common form factor in the low-cost microcontrollers used by MMC, such as the Seeed Studio XIAO nrf52840 used in the LipSync, or the Adafruit SAMD21 QT Py used in the Forest Hub. It is also used in devices such as the Ivy Joystick where it is not soldered to a PCB but instead held in place with a snap fit. + +Angled shot of QT Py. + + +Although it is most commonly attached to a PCB with headers, it is sometimes useful to know the primary dimensions for attaching it through snap fits, slide rails, or other methods. The primary dimensions are as follows. + +- **Board Length:** The length of the board PCB. +- **Board Width:** The width of the board PCB. +- **Board Thickness:** The thickness of the board +- **USB C Port Protrusion:** The distance that the USB connector protrudes past the edge of the board PCB. +- **Base of Board to Center of USB Port:** This is the distance from the bottom of the board PCB to the centre of the USB C port connector. This distance is useful for determining the position of a knockout for the USB connector + +A top view of the QT Py with the length and width labeled. +A side view of the QT Py with the key dimensions labeled. + +| QT Py Form Factor Measurements | | +| :--------------------- | -----: | +| Board Length | 20.6 mm | +| Board Width | 17.8 mm | +| Board Thickness | 4 mm | +| USB C Port Protrusion | 1.5 mm | +| Base of Board to Center of USB Port | 2.9 mm | \ No newline at end of file diff --git a/Commercial_Components/SheetMetalScrew.md b/Commercial_Components/SheetMetalScrew.md new file mode 100644 index 0000000..aa82f61 --- /dev/null +++ b/Commercial_Components/SheetMetalScrew.md @@ -0,0 +1,48 @@ +--- +title: No.4 Sheet Metal Screw +layout: default +nav_order: 3 +parent: Commercial Components +--- + +# #4 Sheet Metal Screw + +Used to hold 3D printed parts together, usually the two halves of the enclosure or other structural connections. The screw most used in MMC devices is a 3/8” #4 Sheet Metal Screw. + +image + +## Dimensions + +For this part, there are several primary dimensions, as well as some design considerations. The primary dimensions are: +* **Clearance Diameter:** This is the diameter of the hole that the screw passes through to get to the threaded hole. The screw threads do not screw into this hole. +* **Threaded Hole Diameter:** This is the diameter of the hole that the threads of the screw dig into. If this hole is too large, the threads will not bite, and if it is too small it requires too much force to tighten and can deform the part. +* **Counterbore Diameter:** This is the minimum diameter of the counterbore to accommodate the head of the screw. +* **Counterbore Depth:** This is the minimum depth of the counterbore to keep the head of the screw from protruding past the surface of the device. +* **Hole Depth:** This is the minimum depth of the section that the screw screws into. This is the length of the screw beneath the head. This includes the thickness of the section that the screw passes through. +* **Screwdriver Clearance:** For deeper holes, the screwdriver itself must also be able to fit through the counterbore to tighten the screw at the bottom of the hole. This diameter is the minimum diameter to allow a common household screwdriver to be used. If using this diameter, it replaces the counterbore diameter. + +image + + +| **#4 Sheet Metal Screw Dimensions** | | +| :--------------------- | -----: | +| Clearance Diameter | 3.2 mm | +| Threaded Hole Diameter | 2.7 mm | +| Counterbore Diameter | 6 mm | +| Counterbore Depth | 2.6 mm | +| Hole Depth | 10 mm | +| Screwdriver Clearance | 8 mm | + +## Design Considerations + +When designing parts that use this component, you need to keep in mind the following design considerations +* **Overhanging holes:** holes in unsupported overhanging material can print poorly and lead to parts not fitting. Refer to the Hydra Research Design Rules [section on overhanging holes](https://www.hydraresearch3d.com/design-rules#unsupported-holes) for how to design an overhanging hole that can print without support +* **Horizontally printed holes:** Holes in the wall of a print can sag when printed, while this isn’t an issue for the threaded part of the hole, this can cause the passthrough hole to not pass through wall. When designing a hole meant to print horizontally, use a circumscribed octagon instead to eliminate the steep overhangs at the top of the circle. +* **Torque:** When the screw is cutting the threads for the first time, this puts a significant amount of stress on the print. This can happen if the hole is an unsupported cylinder coming out of the part, or if it is a hole in a large solid part with low infill. Additional material should be added to ensure the threaded hole is strong enough to withstand the thread cutting. Refer to the entry on screw posts in the 3D printed parts section for more information. + +## Purchasing + + | **#4 Sheet Metal screws can be found at these links:** | | +| :--------------------- | -----: | +| Digikey | [#4 Sheet Metal Screw DigiKey Link](https://www.digikey.ca/en/products/detail/serpac/6005/307599)| +| Mouser | [#4 Sheet Metal Screw Mouser Link](https://www.mouser.ca/ProductDetail/SERPAC/6005?qs=f95KBKa1t%252BoPqs5qKc4pog%3D%3D) | \ No newline at end of file diff --git a/Commercial_Components/Slide-Switch.md b/Commercial_Components/Slide-Switch.md new file mode 100644 index 0000000..51baa82 --- /dev/null +++ b/Commercial_Components/Slide-Switch.md @@ -0,0 +1,44 @@ +--- +title: Slide Switch +layout: default +nav_order: 3 +parent: Commercial Components +--- + +## Slide Switch + +A slide switch is a two-state toggle switch used in the [Cedar Joystick](https://github.com/makersmakingchange/Cedar-Mini-USB-Joystick) and the [Open Playback Recorder.](https://github.com/makersmakingchange/Open-Playback-Recorder) Frequently used as a power switch or to toggle between two states, the switch is mounted near the side of the enclosure where it is accessible to the user. The switch can be used by itself, or with a 3D printed toggle switch cover. + +A photo of a slide toggle switch + + +A slide switch used by itself, like in the Open Playback Recorder, has a different set of requirements than one used with a 3D printed toggle, like in the Cedar Joystick. With the 3D printed toggle, the 3D printed portion can be adjusted to fit the location of the toggle, so there are fewer limitations. + +A CAD render of the open playback recorder with the slide switch visible +A CAD render of the slide switch in the cedar joystick with the 3d printed toggle visible + +When using the switch without a toggle, the primary considerations are how close it is to the enclosure wall, and the size of cutout used. If the switch is too close to the wall, the protruding tab makes it difficult to insert the PCB into the enclosure, and if it is too far from the enclosure, it is too hard for the users finger to reach the tab to toggle the switch. The compromise between these two factors found for the Open Playback Recorder was a distance of 5 mm between the outer wall of the enclosure and the edge of the body of the switch, and a cutout 12 mm wide and 5 mm tall. + +- **Switch Spacing:** The distance between the body of the switch and the exterior wall of the device. +- **Opening Width:** The width of the opening to the switch toggle. +- **Opening Height:** The height of the opening to the switch toggle. + +When designing a version that uses the toggle, the considerations are largely the same as when using the switch without the toggle, the measurements are just slightly different. The main different is that the opening should be split between the two halves of the enclosure, so that the toggle can be captured in place by the closing of the enclosure. + +A CAD render of the slide switch in the cedar joystick with the 3d printed toggle visible + +| **Slide Toggle Dimensions** | | +| :--------------------- | -----: | +| Switch Spacing | 5 mm | +| Opening (width x height) | 12 mm x 5 mm | +| **3D Printed Toggle Dimensions** | | +| Switch Spacing | 6.7 mm | +| Opening (width x height) | 10 mm x 5 mm | + + +## Purchasing + + | **Slide Switches can be found at these links:** | | +| :--------------------- | -----: | +| Digikey | [Slide Switch DigiKey Link](https://www.digikey.ca/en/products/detail/c-k/OS102011MA1QS1/1981431) | +| Mouser | [Slide Switch Mouser Link](https://www.mouser.ca/ProductDetail/CK/0S102011MA1QS1?qs=CScMml99RXNA53k9Q8MdKA%3D%3D) | \ No newline at end of file diff --git a/Commercial_Components/Snap-Switch.md b/Commercial_Components/Snap-Switch.md new file mode 100644 index 0000000..30be581 --- /dev/null +++ b/Commercial_Components/Snap-Switch.md @@ -0,0 +1,37 @@ +--- +title: Snap Switch +layout: default +nav_order: 3 +parent: Commercial Components +--- + +## Snap Switch + +This switch is used in the Interact Switch and has holes in the contacts of the switch to allow the cable to be threaded through to make soldering easier. + +A photo of a snap switch +a render of a snap switch in place in the interact switch + +For this part, there are several primary dimensions used to create a well-fitting press fit retainer. The primary dimensions are: + +- **Press Fit Length:** The length of the press fit rectangle that fits the switch +- **Press Fit Width:** Not pictured in the below cross-sectional diagram, it is the width of the press fit rectangle that fits the switch. +- **Press Fit Depth:** The minimum depth from the top of the walls of the retaining wall to the bottom of the switch. +- **Minimum Contact Clearance:** The minimum required distance for the space between the bottom of the switch seat and the bottom of the switch. This gives space for the contacts of the switch to sit. The switch contacts are only 4mm, but extra space is needed to give space for solder if the switch is not soldered well. + +A cross section of the mount in the interact switch with the key dimensions labeled. + +| Snap Switch Press Fit Measurements | | +| :--------------------- | -----: | +| Press fit length | 20.2 mm | +| Press fit width | 6.4 mm | +| Press fit depth | 7 mm | +| Minimum Contact Clearance | 5 mm | + + +## Purchasing + + | **Snap Switches can be found at these links:** | | +| :--------------------- | -----: | +| Digikey | [Snap Switch DigiKey Link](https://www.digikey.ca/en/products/detail/omron-electronics-inc-emc-div/SS-3GP/664724) | +| Mouser | [Snap Switch Mouser Link](https://www.mouser.ca/ProductDetail/Omron-Electronics/SS-3GPB?qs=Rh%252BaoYk36r7SbQm8UayvHw%3D%3D) | \ No newline at end of file diff --git "a/Commercial_Components/T\342\200\220Nut---Tee-Nut.md" "b/Commercial_Components/T\342\200\220Nut---Tee-Nut.md" new file mode 100644 index 0000000..2d14e92 --- /dev/null +++ "b/Commercial_Components/T\342\200\220Nut---Tee-Nut.md" @@ -0,0 +1,72 @@ +--- +title: T-Nut/Tee Nut +layout: default +nav_order: 3 +parent: Commercial Components +--- + +# T-Nut/Tee Nut + +Tee nuts are off-the-shelf metal components that provide a way to add robust threads to a 3D printed part. Tee nuts are generally designed for use in wood and are intended to be hammered in from the opposite side of where the bolt or machine screw attaches. +A ¼-20 UNC tee nut is used to add threads to a project, typically for mounting purposes. + +image +image + + +This is one of the most complicated parts to add to a model, with a long list of dimensions required to make a suitable mounting feature. They can come in 3-, 4-, and 6- toothed versions, so the mounting hole has 12 slots to accommodate any version. + +## Example Files + +An example of the part dimensioned below is provided as an STL, a STEP, and a F3D file. Currently only the positive is provided, i.e. the part that was dimensioned, but there are plans to add a negative to allow the component to be imported into a design then added as a Boolean subtraction or addition, depending on if you are using the positive or negative. + +* STL File +* STEP File +* F3D File + +## Dimensions + +The following are the list of dimensions used in the T-Nut mounting feature. +* **Counterbore Radius:** The radius of the counterbore that sinks the flat surface of the T-Nut that the teeth and threaded shaft come out of. +* **Counterbore Depth:** The depth of the counterbore that sinks the flat surface of the T-Nut that the teeth and threaded shaft come out of. +* **Thread Radius:** The radius of the hole through the part that the threaded section of the T-Nut goes through. +* **Thread Depth:** The depth of the hole through the part that the threaded section of the T-Nut goes through. +* **Wall Thickness:** The thickness of the outer wall of the T-Nut fixture. +* **Chamfer Length:** The length of chamfer used to start the hole for the threaded shaft. +* **Tooth Spacing:** The distance between the centerline of the fixture and the furthest point of the tooth hole. +* **Tooth Width:** The width of the hole used to capture the teeth of the T-Nut. +* **Tooth Length:** The length of the hole used to capture the teeth of the T-Nut. +* **Tooth Depth:** The depth of the hole used to capture the teeth of the T-Nut. +* **Tooth Angle:** The angle between the teeth sloths on the fixture. This number comes from dividing the number of teeth (12) by the number of degrees in a circle (360). + + +image + +image + + +| **Part Dimensions** | | +| :--------------------- | -----: | +| Counterbore Radius | 10 mm | +| Counterbore Depth | 1.6 mm | +| Thread Radius | 4 mm | +| Thread Depth | 8.4 mm | +| Wall Thickness | 1.6 mm | +| Chamfer Length | 1 mm | +| Tooth Spacing | 9.75 mm | +| Tooth Width | 0.75 mm | +| Tooth Length | 3 mm | +| Dimension 3 | 4.4 mm | +| Dimension 3 | 30 degrees | + +## Design Considerations + +When designing parts that use this component, you need to keep in mind the following design considerations +* **Overhanging Holes:** Holes in unsupported overhanging material can print poorly and lead to parts not fitting. Refer to the Hydra Research Design Rules [section on overhanging holes](https://www.hydraresearch3d.com/design-rules#unsupported-holes) for how to design an overhanging hole that can print without support +* **Horizontally Printed Holes:** Holes in the wall of a print can sag when printed, while this isn’t an issue for the threaded part of the hole, this can cause the passthrough hole to not pass through wall. When designing a hole meant to print horizontally, use a circumscribed octagon instead to eliminate the steep overhangs at the top of the circle. + +## Purchasing + + | **T-Nuts can be found at these links:** | | +| :--------------------- | -----: | +| Amazon | [Part Amazon Link](https://www.amazon.ca/dp/B01MSVU3WF?ref=fed_asin_title&th=1)| \ No newline at end of file diff --git a/Commercial_Components/USB-Connector.md b/Commercial_Components/USB-Connector.md new file mode 100644 index 0000000..9b2f56e --- /dev/null +++ b/Commercial_Components/USB-Connector.md @@ -0,0 +1,55 @@ +--- +title: USB Connectors +layout: default +nav_order: 3 +parent: Commercial Components +--- + +## USB Connector + +A USB connector is commonly used to power a microcontroller in a device, or to connect the microcontroller to another device so that it can send data. + +A render of the Open Playback Recorder with the USB connector visible + +When designing with a USB connector, there are three primary considerations, the size of the knockout, the distance from the end of the connector to the exterior of the wall, and the keep out size for the cable. + +- **Knock Out:** The knockout spacing is the size of opening needed in the wall of the enclosure for the USB connector on the board to be exposed. In some cases, it is impossible to meet the correct minimum distance from the exterior of the wall to the end of the connector due to how far the connector sticks out (or doesn't) from the end of the microcontroller. In this case, use the keep out spacing as the knockout spacing. +- **Wall to Connector:** The wall to connector distance is the maximum distance between the end of the connector and the outer wall of the enclosure. This gap is the distance between the connector and the molded plastic part of the USB cable when the cable is plugged into the connector. +- **Keep Out:** The keep out area is not a modeled feature and is not on the labeled drawing, but is the maximum size of the molded plastic section of the connector cable. The keep out section of two connectors should never overlap, otherwise both cannot be plugged in at the same time. + +A side view of the cross section of the Open Playback Recorder with the Knockout and wall to connector labeled +A side view of the Open Playback recorder with the opening dimensions labeled + +### USB C + +USB C is the connector found on many modern microcontrollers, such as the QT Pi and other commonly used MMC microcontrollers. + +A view of the USB C connector on a device + +| USB C Measurements | | +| :--------------------- | -----: | +| Knock out (width x height) \[mm\] | 10 x 4 mm | +| Wall to Connector \[mm\] | 2 mm | +| Keep out (width x height)\[mm\] | 12 x 6 mm | + +### Micro USB + +A Micro USB is the connector found on some older microcontrollers. + +A close up of a Micro USB connector + +| Micro USB Measurements | | +| :--------------------- | -----: | +| Knock out (width x height) \[mm\] | 7 x 2.6 mm | +| Wall to Connector \[mm\] | 1.9 mm | +| Keep out (width x height)\[mm\] | 12 x 8 mm | + +### USB Mini B + +A close up of a USB Mini B connector + +| Mini B Measurements | | +| :--------------------- | -----: | +| Knock out (width x height) \[mm\] | 7 x 3.4 mm | +| Wall to Connector \[mm\] | 1.6 mm | +| Keep out (width x height)\[mm\] | 10 x 8 mm | diff --git a/Design_Elements_For_3D_Printed_Parts/Battery-Covers.md b/Design_Elements_For_3D_Printed_Parts/Battery-Covers.md new file mode 100644 index 0000000..612fddc --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Battery-Covers.md @@ -0,0 +1,18 @@ +--- +title: Battery Covers +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# Battery Covers + +When using a 9V battery, it is important to have the battery accessible to the user, but still protected, secure, and out of the way. In the Open Playback Recorder, this is done with a battery cover similar to what you would find in a television remote. + +A battery cover holding a 9V battery. The battery cover with a 9V battery installed into the open playback recorder. + +The battery is inserted into the battery cover and held in place by friction and later by the fit between the battery terminal connector and the wall of the enclosure. The battery is passed through the hole in the enclosure, then the tab is inserted into the matching groove in the enclosure. Finally, the battery cover is pivoted closed around the tab, and a single screw is used to fasten it in place. + +The primary goals of the battery cover were to secure the battery, and keep it easily accessible for the user when it needs to be swapped. Currently, the cover is printed without supports, and the width of the battery cover at the top is starting to sag and deform when bridging. It is possible to reduce the number of fasteners used by printing it on its side and redesign it to have a snap fit fastener as found on the battery enclosure of a television remote. In the current orientation, the layer lines would be more likely to snap, whereas if it was printed on its side the layer lines would be in a stronger orientation. + +For detailed measurements, refer to the CAD design files for the Open Playback Recorder, found [here](https://github.com/makersmakingchange/Open-Playback-Recorder/tree/main/Design_Files/CAD_Design_Files). diff --git a/Design_Elements_For_3D_Printed_Parts/Captured-Buttons.md b/Design_Elements_For_3D_Printed_Parts/Captured-Buttons.md new file mode 100644 index 0000000..76f9fef --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Captured-Buttons.md @@ -0,0 +1,40 @@ +--- +title: Captured Buttons +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# Captured Buttons + +Captured buttons are a 3D printed button component that goes between the actual button component that is inside the device, and the outside of the enclosure. They allow for the button to be located deeper within the device, not directly on the edge, and also allow for symbols or labels to be put on the button to make it more intuitive for a user. They come in two styles, one where the button is facing up out the top of the device (Vertical) and where the button is facing the side of the device (Horizontal). + +If you are putting a symbol or other marking on a captured button, make sure to add a locating feature to prevent the button from being inserted in the wrong direction. + +## Vertical + +A cross section of the LipSync Hub showing the captured buttons. + +When the buttons are facing ‘up’ in an enclosure, the captured buttons can often be simply placed over the electrical buttons, then the top of the enclosure attached into place to lock them in place. The important considerations for designing this type of captured button are the height of the captured piece, button retainment, and button alignment. + +If the 3D printed component is too long, it can lead to the button constantly being stuck in the pressed position or frequently sticking when pressed. It is important to have a gap of 0.4 to 0.8 millimeters to ensure that the buttons do not stick but are at the same time not too loose. + +For the buttons to be properly captured, they need some form of retainment to keep them captured by the top half of the enclosure and not falling out the top of the enclosure. This is typically accomplished by a heavy chamfer on both the top of the enclosure and the button itself so that the surface of the button is exposed, but it cannot move past the top of the enclosure. + +A close up of the LipSync Hub captured button with the retaining ring and the tab and slot labeled. + +Finally, the button needs to be restrained from moving side to side inside the enclosure. For most buttons used in MMC devices, there is a tab on the top of the button, and a matching detent in the 3D printed captured button will hold one end of the button in place. A retaining ring on the inside surface of the top enclosure is sufficient for holding the other end of the button in place. Finally, if the captured button has a symbol or other design that needs to be in a certain orientation, place a orientation tab or other feature on the captured button and top enclosure to ensure it can only be assembled in that one direction. + +## Horizontal + +A cross section of the captured button used in the open playback recorder. + +When the switches are facing the side of the enclosure, it is slightly more difficult to design a captive button element. The same constraints apply, the button needs to be close enough to the electrical button, the button needs to be constrained side to side, the button needs to be restrained from falling out of the enclosure, and the button needs to be constrained from rotating. However, when the button is horizontal, it is more difficult to implement these constraints. + +The only device in the MMC library that currently uses this style of button is the Open Playback Recorder. In the Open Playback Recorder, the button is constrained side to side by the top and bottom of the enclosure, and both oriented/constrained from rotating and kept in the enclosure by a peg in the bottom enclosure that fits into a slot in the captured button. The peg is not the ideal method of capturing the button, as it can snap off and is a point of failure. The chamfered edge method used on the LipSync Hub buttons is less likely to fail, and the button is already prevented from rotating due to its octagonal shape. + +The captured button from the open playback recorder with the retaining peg labeled. + +The orientation of the button is also ensured by the horseshoe shaped ring. If the button is not in the correct orientation, the circuit board with the buttons soldered to it cannot be inserted into place, hitting the walls of the button instead of sliding into the channel. Finally, the button is octagonal since it has to pass through a horizontal hole in the wall of the enclosure. A round hole would have sagged slightly at the top due to the greater than 45 degree overhang, and required a looser tolerance on the button to compensate for. An octagonal hole and button allow for a tighter tolerance and a better fit between the button and the enclosure. + +The captured button in the open playback recorder with the lid off and button not fully constrained. The captured button in the open playback recorder with the lid on and button fully captured. diff --git a/Design_Elements_For_3D_Printed_Parts/Capturing-A-PCB.md b/Design_Elements_For_3D_Printed_Parts/Capturing-A-PCB.md new file mode 100644 index 0000000..34546da --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Capturing-A-PCB.md @@ -0,0 +1,35 @@ +--- +title: Capturing a PCB +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# Capturing a PCB + +When attaching a PCB to a 3D printed enclosure, there are two general methods that are used. The first method used is screw, where a PCB is attached to the enclosure with one or more screws, generally a #4 3/8” sheet metal screw. The second method is to design the enclosure with a snap fit that allows the PCB to be pressed and fixed into place. + +## Screws + +A cross section of the Lipsync Hub showing the PCB screwed into place. +A cross section of the LipSync Hub with a post supporting the arms of the PCB. + +When attaching a PCB using screws, one or more screws are used to attach the PCB to the enclosure. The design specifics for the screws can be found in the #4 Sheet Metal Screw entry in the commercial parts section, while the design specifics for the screw posts can be found in the Screw Posts entry in the 3D printed parts section. + +When determining the number and location of the screws, consider the forces that will be acting on the PCB. The PCB will generally be ‘floating’ above the enclosure to make room for the screw posts, and will need to be braced to keep it in place, but not all of the bracing needs to come from the screws. The screws can be used to prevent the PCB from lifting and from sliding side to side, but additional solid posts without screws can be used to prevent the board from tilting or deflecting down when a button is pressed, as seen in the above photo of the LipSync Hub. + +## Snap Fit + +A snap fit is a method of attaching a circuit board, usually a smaller board like a microcontroller or sensor, without requiring additional hardware. With a snap fit, there are two or more posts with hook-like protrusions at the top, which deflect as the board is pressed into place, and then snap back to their original position once the board has been fully inserted, preventing the board from coming back out. Snap fits can also be used to attach two halves of an enclosure together. The [Ivy Joystick](https://github.com/makersmakingchange/Ivy-Nunchuck-Joystick-Adapter) makes use of snap fits for both retaining PCBs and attaching the enclosure. + +A cross section of the Ivy joystick. A photo of the ambient pressure sensor in the LipSync. + +The snap fit posts stop the board from pulling up and from moving side to side, but additional retaining posts will be needed to keep it from moving side to side in the direction that the posts are not in. The board will also generally be above the enclosure and will need posts or ribs to rest on. + +The primary consideration for a snap fit is the length of the deflecting arm, and the layer line orientation of the arm. While it is ideal to orient the arm so that the arms of the snap fit are parallel to the build plate, it is possible to print them perpendicular to the print plate and this frequently has to happen given the orientation of the enclosure and the circuit board. When designing a snap fit, the three main considerations are: + +- **Arm Thickness:** The thickness of the snap fit arm. This varies with the height of the arm. Generally a quarter of the height, although making it less than that makes the snap fit less stiff if it snaps while assembling. +- **Arm Length:** The length of the snap fit arm. Varies depending from 6 mm to 13 mm, depending on the desired positioning of the PCB. +- **Arm Angle:** The angle of the surface that the PCB or other piece pushes against while it is being inserted in the snap fit. 70 degrees is a good minimum angle for this, although others have been used. + +A sketch of a snap fit arm with the key dimensions labeled. \ No newline at end of file diff --git a/Design_Elements_For_3D_Printed_Parts/Cotter-Pins.md b/Design_Elements_For_3D_Printed_Parts/Cotter-Pins.md new file mode 100644 index 0000000..f1d91d2 --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Cotter-Pins.md @@ -0,0 +1,21 @@ +--- +title: Cotter Pins +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# Cotter Pins + +Cotter pins are a method of securing parts, either pinning parts together or to lock them in place after they have been slid into place. They have been used in the [Open Rocker Switch](https://github.com/makersmakingchange/Open-Rocker-Switch) and the [Willow Joystick](https://github.com/makersmakingchange/Willow-Joystick) + +A CAD rendering of a cotter pin installed in the Willow Joystick. + +When designing a cotter pin, it is made with two primary sketches: the pin profile, and the sweep profile. The pin profile is always an octagon for printability, and the minimum diameter of the circumscribed octagon should be 2 mm, anything smaller than that has difficulty with bed adhesion. + +The two sketches used to create a cotter pin. +The previous sketches after being used to create the pin. + +When designing the sweep profile, the end of the pin that does not pass through the holes in the part should be deflected by at least 45 degrees to prevent the wrong side from being inserted into the holes. The side of the pin that does not go through the holes should also have semicircular divots to allow the pin to return to its unstretched shape when it is in place. + +If any curves on the sweep profile are too sharp or too close together, the sweep will stop at that point. If that happens, adjust the profile until the sweep can move through the entire profile. \ No newline at end of file diff --git a/Design_Elements_For_3D_Printed_Parts/Design-Elements-for-3D-Printed-Parts.md b/Design_Elements_For_3D_Printed_Parts/Design-Elements-for-3D-Printed-Parts.md new file mode 100644 index 0000000..4a8d2e5 --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Design-Elements-for-3D-Printed-Parts.md @@ -0,0 +1,14 @@ +--- +title: Design Elements for 3D Printed Parts +layout: default +nav_order: 2 +parent: Home +--- + +# Overview + +In this section, the 3D printed mechanisms used in some devices are described. This section has less of a focus on measurements than the previous section since there are fewer constraints than when working with fixed dimension commercial parts. Some dimensions will be mentioned when they are critical/are a maximum or minimum size. + +# Design Elements + +This section includes guides on how to include: diff --git a/Design_Elements_For_3D_Printed_Parts/Lever-Arm-Button-Pusher.md b/Design_Elements_For_3D_Printed_Parts/Lever-Arm-Button-Pusher.md new file mode 100644 index 0000000..948ece9 --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Lever-Arm-Button-Pusher.md @@ -0,0 +1,18 @@ +--- +title: Lever Arm Button Pusher +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# ‘Lever Arm’ button pusher + +The ‘lever arm’ button pusher is used in the Forest Hub and several other devices to create a section of the enclosure that can be used to press internal buttons on a PCB or microcontroller. + +A cross section of the Forest Hub showing the button pusher arm. + +The primary considerations when creating the button pusher is print orientation and length of the arm. Since the arm needs to be printed as a cantilever with the layer lines running through it, the only feasible angle to print it on is the bottom print surface, printing directly on the bed. Printing it in any other orientation would require large amounts of support material or will print too weak and will break when used. + +the Forest Hub enclosure in the Bambu slicer, showing print orientation . + +The lever section of the arm needs to be long enough to deflect and bend without requiring significantly more force to operate than the button. The lever arm is generally between 2.4 to 6 mm wide, and at least 6 mm long. The end of the lever should have a cone, post, or other protrusion that rests within a millimeter or two of the button on the PCB so that the button is pressed almost immediately after pressing the lever arm. \ No newline at end of file diff --git a/Design_Elements_For_3D_Printed_Parts/Non-Slip-Base.md b/Design_Elements_For_3D_Printed_Parts/Non-Slip-Base.md new file mode 100644 index 0000000..d748097 --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Non-Slip-Base.md @@ -0,0 +1,26 @@ +--- +title: Non-Slip Base +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# Non-Slip Base + +Some of the OpenAT Joysticks, such as the Willow, come with a non-slip base that helps them stay in one place while being used on a table or other flat surface. This base uses the mounting standard used in the camera mount adapter and the Ram-B ball adapter to stay in place, and several non-slip feet to prevent it from moving around on the surface. + +A photo of the Willow Joystick with the non slip pase. +The non slip base of the Willow Joystick. + +To create a non-slip base, create a sketch on the bottommost surface of the device, and project the walls of the device down. Create a clearance offset of 0.1 mm, and a second offset 1.6 mm beyond that. Extrude this ring up, the distance will vary depending on how much of a chamfer there is on the base of the device. + +The base of the Oak Joystick, with a sketch offsetting the perimeter . +The Oak Joystick with the perimeter being extruded up. + +Next, extrude the base down by 2.4 mm, leaving the mounting holes uncovered. Chamfer the interior corner of the base as needed to match the chamfer on the bottom of the device, and chamfer the bottom of the non-slip foot, generally 1.6 mm but this can be changed to keep the thickness more consistent if the chamfer on the bottom of the device is significantly larger or smaller than that. + +The final extrusion of the oak non slip base. + +Once the body of the base has been created, add clearance holes for the M3 screws. Create a 7.5 mm diameter circle around each of the M3 screw holes, then extrude it down by 1.2 mm to create a counterbore. Add the unsupported hole features found [here](https://www.hydraresearch3d.com/design-rules#unsupported-holes). + +Finally, find the locations that you would like to put the non-slip feet, then follow the non-slip feet guide found in the commercial parts section. \ No newline at end of file diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Battery_Cover/Battery_Cover_IMG1.png b/Design_Elements_For_3D_Printed_Parts/Photos/Battery_Cover/Battery_Cover_IMG1.png new file mode 100644 index 0000000..ea16e36 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Battery_Cover/Battery_Cover_IMG1.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Battery_Cover/Battery_Cover_IMG2.png b/Design_Elements_For_3D_Printed_Parts/Photos/Battery_Cover/Battery_Cover_IMG2.png new file mode 100644 index 0000000..58a89fe Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Battery_Cover/Battery_Cover_IMG2.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG1.png b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG1.png new file mode 100644 index 0000000..b597fa9 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG1.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG2.png b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG2.png new file mode 100644 index 0000000..b5d3cf1 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG2.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG3.png b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG3.png new file mode 100644 index 0000000..317f9b4 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG3.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG4.png b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG4.png new file mode 100644 index 0000000..ae637ff Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG4.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG5.png b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG5.png new file mode 100644 index 0000000..39efce9 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG5.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG6.png b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG6.png new file mode 100644 index 0000000..5861102 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_Buttons/Captured_Buttons_IMG6.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG1.png b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG1.png new file mode 100644 index 0000000..b5a08aa Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG1.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG2.png b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG2.png new file mode 100644 index 0000000..87a40a7 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG2.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG3.png b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG3.png new file mode 100644 index 0000000..f85d39a Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG3.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG4.png b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG4.png new file mode 100644 index 0000000..240bfb9 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG4.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG5.png b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG5.png new file mode 100644 index 0000000..d373f2f Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Captured_PCB/Captured_PCB_IMG5.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Cotter_Pin/Cotter_Pin_IMG1.png b/Design_Elements_For_3D_Printed_Parts/Photos/Cotter_Pin/Cotter_Pin_IMG1.png new file mode 100644 index 0000000..b33315d Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Cotter_Pin/Cotter_Pin_IMG1.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Cotter_Pin/Cotter_Pin_IMG2.png b/Design_Elements_For_3D_Printed_Parts/Photos/Cotter_Pin/Cotter_Pin_IMG2.png new file mode 100644 index 0000000..1ea7880 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Cotter_Pin/Cotter_Pin_IMG2.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Cotter_Pin/Cotter_Pin_IMG3.png b/Design_Elements_For_3D_Printed_Parts/Photos/Cotter_Pin/Cotter_Pin_IMG3.png new file mode 100644 index 0000000..be1e0a1 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Cotter_Pin/Cotter_Pin_IMG3.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Lever_Arm/Lever_Arm_IMG1.png b/Design_Elements_For_3D_Printed_Parts/Photos/Lever_Arm/Lever_Arm_IMG1.png new file mode 100644 index 0000000..c7bd99d Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Lever_Arm/Lever_Arm_IMG1.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Lever_Arm/Lever_Arm_IMG2.png b/Design_Elements_For_3D_Printed_Parts/Photos/Lever_Arm/Lever_Arm_IMG2.png new file mode 100644 index 0000000..df2ca0f Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Lever_Arm/Lever_Arm_IMG2.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG1.png b/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG1.png new file mode 100644 index 0000000..0a294e2 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG1.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG2.png b/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG2.png new file mode 100644 index 0000000..2a6636c Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG2.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG3.png b/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG3.png new file mode 100644 index 0000000..82f87db Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG3.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG4.png b/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG4.png new file mode 100644 index 0000000..f61d6c8 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG4.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG5.png b/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG5.png new file mode 100644 index 0000000..49c2ac1 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Non_Slip_Base/Non_Slip_Base_IMG5.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG1.png b/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG1.png new file mode 100644 index 0000000..1c8a0aa Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG1.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG2.png b/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG2.png new file mode 100644 index 0000000..d1aed0c Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG2.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG3.png b/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG3.png new file mode 100644 index 0000000..223e53a Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG3.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG4.png b/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG4.png new file mode 100644 index 0000000..0cba2b0 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG4.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG5.png b/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG5.png new file mode 100644 index 0000000..8b1fe1d Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Screw_Post/Screw_Post_IMG5.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG1.png b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG1.png new file mode 100644 index 0000000..12aba0d Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG1.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG2.png b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG2.png new file mode 100644 index 0000000..3656cbe Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG2.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG3.png b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG3.png new file mode 100644 index 0000000..dd902a4 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG3.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG4.png b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG4.png new file mode 100644 index 0000000..f2943d4 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG4.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG5.png b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG5.png new file mode 100644 index 0000000..01c71ca Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG5.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG6.png b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG6.png new file mode 100644 index 0000000..36c31da Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Shadow_Line/Shadow_Line_IMG6.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Non_Removable.png b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Non_Removable.png new file mode 100644 index 0000000..7aa425d Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Non_Removable.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Opening.png b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Opening.png new file mode 100644 index 0000000..7734210 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Opening.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Removable.png b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Removable.png new file mode 100644 index 0000000..142c91a Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Removable.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Separated.png b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Separated.png new file mode 100644 index 0000000..194957d Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Separated.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Side_View.png b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Side_View.png new file mode 100644 index 0000000..ebf8d40 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Side_View.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Top_View.png b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Top_View.png new file mode 100644 index 0000000..930e4dd Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Snap_Fit/Snap_Fit_Top_View.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Strain_Relief/Strain_Relief_IMG1.png b/Design_Elements_For_3D_Printed_Parts/Photos/Strain_Relief/Strain_Relief_IMG1.png new file mode 100644 index 0000000..0f39f5e Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Strain_Relief/Strain_Relief_IMG1.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Strain_Relief/Strain_Relief_IMG2.png b/Design_Elements_For_3D_Printed_Parts/Photos/Strain_Relief/Strain_Relief_IMG2.png new file mode 100644 index 0000000..4ebbea3 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Strain_Relief/Strain_Relief_IMG2.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG1.png b/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG1.png new file mode 100644 index 0000000..1656e33 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG1.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG2.png b/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG2.png new file mode 100644 index 0000000..0d8aa99 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG2.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG3.png b/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG3.png new file mode 100644 index 0000000..a81fa6a Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG3.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG4.png b/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG4.png new file mode 100644 index 0000000..751c26c Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG4.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG5.png b/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG5.png new file mode 100644 index 0000000..60a8b32 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Threads/Threads_IMG5.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Twist_Lock/Twist_Lock_IMG1.png b/Design_Elements_For_3D_Printed_Parts/Photos/Twist_Lock/Twist_Lock_IMG1.png new file mode 100644 index 0000000..ee41a42 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Twist_Lock/Twist_Lock_IMG1.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Photos/Twist_Lock/Twist_Lock_IMG2.png b/Design_Elements_For_3D_Printed_Parts/Photos/Twist_Lock/Twist_Lock_IMG2.png new file mode 100644 index 0000000..0e97df7 Binary files /dev/null and b/Design_Elements_For_3D_Printed_Parts/Photos/Twist_Lock/Twist_Lock_IMG2.png differ diff --git a/Design_Elements_For_3D_Printed_Parts/Screw-Posts.md b/Design_Elements_For_3D_Printed_Parts/Screw-Posts.md new file mode 100644 index 0000000..d9f6bfa --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Screw-Posts.md @@ -0,0 +1,23 @@ +--- +title: Screw Posts +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# Screw Posts + +When working with screws in 3D prints, care must be taken when designing the hole that the screw screws into. A poorly designed hole can break under the force and ruin the print. + +A screw post with no ribs +The same screw post, with ribs and filets added + +Most screw holes in MMC designs are screw posts, where a cylinder comes out from the enclosure for the screw to screw into. An unreinforced screw post can snap at the base under the force of screwing in the screw, leaving the post spinning freely and making removal of the screw difficult. This happens due to the stress concentration and lack of reinforcement at the base of the post and can be fixed by added reinforcing ribs and a fillet to the post. + +Ribs can be easily added to the sketch used to create the post, using two center rectangles. The length of the rectangles should be between two to three times the diameter of the post, and the width is generally 1.6 mm, the width of four walls on a 0.4 mm 3D printer nozzle. When extruding the post, simply also select the sections of the rectangles that extend past the post walls. After extruding, a two-distance chamfer can be used to chamfer the ribs. + +A sketch used to add ribs to a screw post +Extruding the post and ribs together +Chamfering the ribs + +After creating the ribs, a fillet can be used along the base of the post and ribs to reduce the stress concentration further, usually a 0.8-1.6 mm fillet. \ No newline at end of file diff --git a/Design_Elements_For_3D_Printed_Parts/Shadow-Lines.md b/Design_Elements_For_3D_Printed_Parts/Shadow-Lines.md new file mode 100644 index 0000000..a5b1f72 --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Shadow-Lines.md @@ -0,0 +1,22 @@ +--- +title: Shadow Lines +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# Shadow Line + +When creating an enclosure, a shadow line should be added to help align the halves of the enclosure, hide any visual gaps or inconsistencies with the prints, and make the enclosure look more like a commercial injection molded version. + +A cross section of a device enclosure with a shadow line + +There are a variety of ways to make a shadow line, but they all have an overlap between the two halves of the enclosure instead of just butting them together, which can lead to gaps and a poor seal between the halves. When making an enclosure with 1.6 mm thick walls, it can be difficult to remove material from one side to accommodate the shadow line, so the shadow line is generally built behind it in this situation. + +To do so, create a sketch on the top surface of the bottom enclosure. Offset the inner edge of the top surface by 0.2 mm and 1.8 mm. Extrude both areas down by 1.6 mm to join them to the bottom enclosure, then extrude just the area between the 1.8 mm and the 0.2 mm up by 1.6 mm. Chamfer the bottom edge by 1.8 mm for printability. Finally, chamfer the outside edge of both the top and bottom enclosure by 0.4 mm to prevent any misalignment from creating a visible overhang. + +A cross section of an enclosure with no shadow line +The sketch used to create a shadow line +Extruding the base of the shadow line +Adding a chamfer to the base of the shadow line +Extruding the upper lip of the shadow line \ No newline at end of file diff --git a/Design_Elements_For_3D_Printed_Parts/Snap_Fits.md b/Design_Elements_For_3D_Printed_Parts/Snap_Fits.md new file mode 100644 index 0000000..7a620e8 --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Snap_Fits.md @@ -0,0 +1,43 @@ +--- +title: Snap Fits +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# Snap Fit Connections + +Snap fits can be used to connect 3D printed parts in lieu of using other fasteners. These can make assembly/disassembly faster and easier, and reduce the cost of the device. Getting strong and reliable snap fits can be challenging though, and may require multiple iterations to get correct. These snap fit components were based on those described in a [video by Slant 3D.](https://www.youtube.com/watch?v=RTQjvYENR7w) These types of snap fits were first used by Makers Making Change in the [Chatterbox.](https://github.com/makersmakingchange/Chatterbox) + +Two parts which will connect together with a snap fit. +Two parts which will connect together with a snap fit. + +The snap fit consists of an internal recess and the bending fins. The bending fins are shown in the above images as part of the pink part, and bend then lock into position when they reach the cutout in the recess. The above images show a section view of the snap fit to clarify how they connect, but the recess is fully enclosed, as shown in the image below. + +Recess for the snap fit parts. + +## Dimensions + +The general dimensions of these snap fits will depend on the requirements of the part, so a detailed list of dimensions will not be provided. +* **Clearance/Tolerance:** The clearance/tolerance between the snap fit fins and the hole they snap into will affect how easily the parts snap together/apart, and how tight the resulting fit is. We found that adding a tolerance/clearance of 0.4 mm provided a good balance between ease of assembly/disassembly and tightness of the fit. + + +## Design Considerations + +There are a few key considerations when designing these types of snap fits that will impact their printability, durability, and ease of use. + +* **Print orientation:** You want to make sure the parts are printed so that the layer lines are not in-plane with the tabs. Making the layer lines in-plane with the tabs means that bending load from the tabs flexing is carried across layer lines, which are much weaker and more likely to snap. This also leads to the next consideration. +* **Overhangs:** To avoid printing the tabs in-plane with the layers, the tabs will stick out from the side of a part as it prints. The tabs will either need to come down to the print bed, use support material, or have a slanted overhang. We recommend an overhang angle of 45 degrees or higher (from the horizontal) for these features. Having the tabs touch the build plate reduces flexibility in design, and makes prints more likely to fail due to a complex shape on the first layer. + +Side view of a snap fit to show the overhang. + +* **Smooth Edges:** As always, you want to use fillets and chamfers to smooth sharp edges. These make the connections slide together more easily, and strengthen the parts by reducing stress concentrations. +* **Fixed or Removeable Connection:** You will need to decide if you want this connection to be fixed or removeable. To make a more fixed connection, you can make the hook on the tabs with more of a barbed shape, where the angled end can slide in more easily, but the flattened barb on the back makes it more difficult for the parts to pull apart. + +A snap fit designed not to come apart. + +To make a snap fit that can be pulled apart more easily, the tab can have an angle on both sides, like in the image below. + +A snap fit designed to come apart. + +* **Tab Length and Width:** The length and width of the tabs will impact the strength, durability, and flexibility of the tabs. Shorter, wider tabs will be stronger and harder to bend, while longer, thinner tabs will be easier to flex and weaker. You may need to test different combinations of tab length and width to get the right balance of stiffness, strength, and durability for your joint. diff --git a/Design_Elements_For_3D_Printed_Parts/Strain-Relief-And-Cable-Retention.md b/Design_Elements_For_3D_Printed_Parts/Strain-Relief-And-Cable-Retention.md new file mode 100644 index 0000000..7faa1c7 --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Strain-Relief-And-Cable-Retention.md @@ -0,0 +1,20 @@ +--- +title: Strain Relief and Cable Retention +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# Strain Relief and Cable Retention + +When using cables or wires in your design that pass outside of the enclosure, like the cables on the switches, there is the risk of the cable getting pulled one, putting force on the solder joints or popping the cable out of place. To mitigate this issue, strain relief is used to prevent force on the cable from putting force on the solder joints, and cable retention is used to hold a cable in the channel or spot it is supposed to stay in. Generally, in the devices in the MMC library, this is done with hot glue or a cable tie, but there are some cases where a 3D printed feature is used to accomplish this, such as in the [Interact Switch](https://github.com/makersmakingchange/Interact-Switch). + +A CAD rendering of the Interact switch, showing the cable routing channel. + +For a strain relief feature to work, it needs to stop any mechanical force from making it to the electrical connection. The Interact Switch does this with a serpentine half circular channel in the base, with two opposing wedge-shaped overhangs that prevent the cable from rising out of the channel when pushed or pulled. These overhangs also work as cable retention, stopping the cable from leaving the channel. + +If using hot glue for strain relief, like in the Raindrop Switch, add a channel or other recess that the cable passes through that can be filled with hot glue to secure the cable in place, both retaining the cable and preventing the force from making it to the joint. Hot glue is not recommended as a method of strain relief, as the heat can deform the 3D printed parts, and the glue makes it very difficult to disassemble the device for future repairs. + +The bottom of the Raindrop switch, showing the cavity that gets filled with hot glue. + +If using a cable tie for strain relief, refer to the cable tie entry in the commercial parts section for information about designing cable ties into devices. diff --git a/Design_Elements_For_3D_Printed_Parts/Threads.md b/Design_Elements_For_3D_Printed_Parts/Threads.md new file mode 100644 index 0000000..950c731 --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Threads.md @@ -0,0 +1,28 @@ +--- +title: Threads +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# Threads + +When designing parts, 3D printed threads can be used to fasten together parts without requiring the maker to purchase additional hardware. However, there are considerations that limit the use of 3D printed threads to specific use cases. + +The first consideration is print orientation. Due to overhang limitations, threads can either be printed on their side, or vertically. Attempting to print a thread on an angle will not work. Printing a thread on its side creates a stronger thread, as the layer lines will not be under tension as in a vertical orientation. However, one side needs to be trimmed to create a print surface, and it is difficult to do when the thread is on anything other than a bolt. Vertical printing is commonly used when on an enclosure or other part, such as in the LipSync. The layer orientation is less of an issue in larger diameter threads when the surface area in each layer is larger. + +A cross sectional view of the LipSync joystick, showing the internal threads used. + +When printing on their side, trim one side of the thread to provide a surface for the print. Trimming a quarter of the diameter off one side generally provides a good-sized build surface without degrading the quality of the bolt. + +A CAD render of a bolt with the sides sliced off to allow for better 3D printing. + +When modeling threads for printing, it is important to add a clearance between the male and female threads to allow for the tolerances of the 3D printer and ensure an easy fit between threads. After modeling both the male and female threads with the same thread size, select the faces of the female thread with the offset tool, and offset them inwards by 0.1 mm. + +A cross section of a female thread in CAD being offset by 0.1 mm. + +When deciding which thread size to use, it is important to consider the minimum possible thread size that a 3D printer can make. Anything smaller than an M5 thread is difficult to print, and will likely fit poorly, if it fits at all. + +Finally, to make it easier to begin threading 3D printed parts together, the beginning parts of the male and female threads can be manually chamfered to make starting the threads easier. Because of the threads spiraling, the chamfer tool cannot be used for this. Instead, create a triangle in the shape of the desired chamfer at the midplane of the thread, and revolve it around the center axis to cut the chamfer. When doing this to the male section of the threads, the threads can be trimmed off the first several millimeters of the thread to create a dog point to make inserting the screw easier. + +Adding a chamfer to a female thread. Adding a dog point to male thread. \ No newline at end of file diff --git a/Design_Elements_For_3D_Printed_Parts/Twist-Lock.md b/Design_Elements_For_3D_Printed_Parts/Twist-Lock.md new file mode 100644 index 0000000..f87d566 --- /dev/null +++ b/Design_Elements_For_3D_Printed_Parts/Twist-Lock.md @@ -0,0 +1,29 @@ +--- +title: Twist Lock +layout: default +nav_order: 3 +parent: Design Elements for 3D Printed Parts +--- + +# Twist Lock + +A twist lock allows a piece, such as a button topper, to be pressed into place then rotated and locked into position. This allows for parts to be installed with minimal force without using fasteners. This design element is used in the [Open Rocker Switch](https://github.com/makersmakingchange/Open-Rocker-Switch) and [Willow Joystick](https://github.com/makersmakingchange/Willow-Joystick). + +There are two components to the twist lock, the tab and the slot. The tab is the section that protrudes from the component that locks in place, and the slot is the section in the main part that the tab rides in. There are typically two to four tabs on a part. + +A close up of the slot in the rocker switch. +A close up of the tab in the rocker switch. + +The dimensions and key considerations for tabs and slots + +- **Minimum Size:** The minimum size for the tab is driven by the minimum size for the retaining bump. The tab should be at least 3mm wide, and 1.2mm tall, but larger than this is better. +- **Overhangs:** Depending on the print orientation, the tab and slot may need to have one or more surfaces printed on a 45 degree angle to print without sagging. + +The final consideration when designing a twist lock mechanism is the locking bump. There is a bump located on the slot of the part, which locks into a corresponding divot in the tab. When the tab is nearly fully rotated in the part, it comes into contact with the bump. The part with the tab can then be forced past the bump until it is fully seated and the bump is resting in the divot in the tab. At this point the part is fully installed and will not come loose until twisted with equal force past the bump. + +Dimensions and key considerations for bump and divot are as follows: + +- **Bump Placement:** The bumps can either be placed on the top of the tab and slot, as seen in the above images, or on the sides. Putting the bump on the side is the better placement, as this usually printed parallel to the build plate, and lasts longer against repeated removals and insertions. +- **Minimum and Maximum Size:** The sizing of the bumps can be difficult, as they need to allow the tab to pass through, but still retain it once it is in place. The best size varies with the flexibility of the parts being connected together, but 0.4-1 mm is a good starting range. + +If using the bump and divot, it is important to note that makers will need to twist the part until they lock in place. Otherwise, makers may assume they have properly assembled the parts once they twist and meet the resistance of the edge of the tab with the divot meeting the bump. If they do not lock the bump into the divot, the parts will easily twist apart. \ No newline at end of file diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..fb982b7 --- /dev/null +++ b/Gemfile @@ -0,0 +1,7 @@ +source 'https://rubygems.org' + +gem "jekyll", "~> 4.4.1" # installed by `gem jekyll` +# gem "webrick" # required when using Ruby >= 3 and Jekyll <= 4.2.2 + +gem "just-the-docs", "0.10.1" # pinned to the current release +# gem "just-the-docs" # always download the latest release diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..2052fe4 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,97 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + base64 (0.2.0) + bigdecimal (3.1.9) + colorator (1.1.0) + concurrent-ruby (1.3.5) + csv (3.3.2) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.17.1-arm64-darwin) + ffi (1.17.1-x86_64-linux-gnu) + forwardable-extended (2.6.0) + google-protobuf (4.29.3-arm64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.29.3-x86_64-linux) + bigdecimal + rake (>= 13) + http_parser.rb (0.8.0) + i18n (1.14.7) + concurrent-ruby (~> 1.0) + jekyll (4.4.1) + addressable (~> 2.4) + base64 (~> 0.2) + colorator (~> 1.0) + csv (~> 3.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + json (~> 2.6) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (~> 0.3, >= 0.3.6) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + json (2.9.1) + just-the-docs (0.10.1) + jekyll (>= 3.8.5) + jekyll-include-cache + jekyll-seo-tag (>= 2.0) + rake (>= 12.3.1) + kramdown (2.5.1) + rexml (>= 3.3.9) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (6.0.1) + rake (13.2.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.4.0) + rouge (4.5.1) + safe_yaml (1.0.5) + sass-embedded (1.83.4-arm64-darwin) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-x86_64-linux-gnu) + google-protobuf (~> 4.29) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + unicode-display_width (2.6.0) + webrick (1.9.1) + +PLATFORMS + arm64-darwin + x86_64-linux-gnu + +DEPENDENCIES + jekyll (~> 4.4.1) + just-the-docs (= 0.10.1) + +BUNDLED WITH + 2.5.9 diff --git a/How-To-Contribute.md b/How-To-Contribute.md new file mode 100644 index 0000000..451572c --- /dev/null +++ b/How-To-Contribute.md @@ -0,0 +1,40 @@ +--- +title: How To Contribute +parent: Home +layout: default +nav_order: 2 + +--- + +The OpenAT design guide is a living document. We welcome improvements from people with disabilities, makers, disability professionals, engineers, and anyone designing OpenAT. This section includes instructions for making a correction or an improvement to an existing page, as well as instructions on how to add a new page to add something new to the guide. + +You can contribute in two main ways: + +1. **Suggest a correction or improvement** (e.g., better dimensions, clearer instructions). +2. **Add a new page** for a component or design element that is missing. + +## Suggest a correction or improvement + +If after testing a dimension or step in this guide, you find a better dimension or set of steps for a page in the guide, you can raise a GitHub issue to change the dimension in the guide. + +To do so, click [this link](https://github.com/makersmakingchange/OpenAT_Design_Guide/issues). From here, click on the green 'New Issue' button at the top right. Give the issue a title that explains what feature in what part need to be changed (i.e., "Changing threaded hole diameter for #4 sheet metal screw") then fill out the issue description with more information about what you want to change, and why you think it needs changing. + + +## Adding a new page + +If you have something that you think should be added to the design guide, you can create a pull request to add a page to the guide. + +To do so, click [this link](https://github.com/makersmakingchange/OpenAT_Design_Guide/tree/Github-Pages-Version) to go to the project repository. Create a local copy of the repository, then copy the template.md file. Paste the copy into either the Commercial_Components folder or the Design_Elements_For_3D_Printed_Parts folder, depending on what you want to add to the guide. Once you have copied the template to the correct location, open the file and begin filling it out. + +This file, aside from the first 6 lines, is written in a language called Markdown. A basic Markdown syntax guide can be found [here](https://www.markdownguide.org/basic-syntax/) + +The first 6 lines are the header, which gives the page its title, parent page, and navigation order. Change the title from template to something short but descriptive, keep the nav_order at 3, and change the parent to be either Commercial Components or Design Elements for 3D Printed Parts, depending on which folder you put the template in. Finally, fill in the rest of the template. The template was created from a commercial parts page, as that has the most sections, and sections can be removed or modified as needed for a Design Elements page. + +Once you have created the page for your new entry, create a push request for the repository, and an MMC team member will review it and either add it to the guide, give feedback on what needs to be changed before adding it to the guide, or will not add it if the content is deemed inappropriate for the guide. + +If you are unable to create a local version of the GitHub repo to modify the template file yourself, you can download and modify the template file as explained in the above instruction, then submit it through GitHub issues like in the Making a Correction section. + +{: .note } +**Not comfortable with GitHub yet?** + +That’s okay! You can still help. Open an issue describing your suggestion in plain language, or contact the Makers Making Change team with your notes, measurements, or photos. We can help turn it into a page in the guide. \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7d510d0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 just-the-docs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 484488f..e0e4f32 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,31 @@ # Open Assistive Technology (OpenAT) Design Resources +**OpenAT (Open-Source Assistive Technology)** refers to assistive devices whose designs are publicly shared, allowing anyone to study, modify, make, and improve them. OpenAT projects are typically co-created by people with disabilities, engineers, makers, and disability professionals. Because the designs are open, these technologies can be adapted to individual needs, built at lower cost, and improved by a global community, increasing accessibility for everyone. + +The **OpenAT Design Guide** is intended to be an ever-growing collection of resources and best practises for designing OpenAT that is easy to build, adapt, use, and improve upon. The guide includes information on Design for 3D Printing, as well as details on many of the design elements and common commercial components used by Makers Making Change. + +This guide is a living document, and is intended to be changed and updates as better measurements and methods are discovered. If you have an improvement or a section that should be added, you are welcome to contribute to the guide. + +The content is best viewed using the generated site: https://makersmakingchange.github.io/OpenAT_Design_Guide/ + +## How to Contribute / Improve the Design Guide +As open source documentation, you are welcome and encouraged to improve upon the Design Guide. Information on how to contribute can be found in the [How To Contribute](https://makersmakingchange.github.io/OpenAT_Design_Guide/How-To-Contribute.html) section. + +## Attribution + +Content Contributors: + - Brad Wellington + - Jake McIvor + - Stephan Dobri + +## License +Copyright (c) 2025 Neil Squire / Makers Making Change. + +The site content is licensed under the [Creative Commons Attribution-ShareAlike 4.0 license (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/). + +The underlying site generation tools—[Jekyll](https://jekyllrb.com/) and the [Just the Docs](https://github.com/just-the-docs/just-the-docs) theme—are MIT-licensed and remain under their respective licenses. No part of their source code or assets is relicensed by this site. + +--- ## About Makers Making Change @@ -21,3 +47,4 @@ Makers Making Change leverages the capacity of community based Makers, Disabilit ### Contact Us For technical questions, to get involved, or to share your experience we encourage you to [visit our website](https://www.makersmakingchange.com/) or [contact us](https://www.makersmakingchange.com/s/contact). + diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..72c9221 --- /dev/null +++ b/_config.yml @@ -0,0 +1,13 @@ +title: OpenAT Design Guide +description: Design resources for creating open assistive technology (OpenAT) +theme: just-the-docs + +url: https://makersmakingchange.github.io/Open-AT-Design-Guide + +aux_links: + "Makers Making Change": + - "https://www.makersmakingchange.com" +aux_links_new_tab: true + +#_includes/footer_custom.html +footer_content: 'Copyright (c) 2025 Neil Squire / Makers Making Change. Content is licensed under the CC BY SA 4.0 License. This website is built with Jekyll and styled with the Just the Docs. Jekyll and Just the Docs are MIT-licensed software and are not covered by the CC BY-SA license applied to this site’s content.' \ No newline at end of file diff --git a/_sass/custom/custom.scss b/_sass/custom/custom.scss new file mode 100644 index 0000000..2211804 --- /dev/null +++ b/_sass/custom/custom.scss @@ -0,0 +1,20 @@ +.side-bar { + z-index: 0; + display: flex; + flex-wrap: wrap; + background-color: $sidebar-color; + + @include mq(md) { + flex-flow: column nowrap; + position: fixed; + width: $nav-width-md; + height: 100%; + border-right: $border $border-color; + align-items: flex-end; + } + + @include mq(lg) { + width: calc((100% - #{$nav-width + $content-width}) / 20 + #{$nav-width}); + min-width: $nav-width; + } + } \ No newline at end of file diff --git a/index.md b/index.md new file mode 100644 index 0000000..815ff3f --- /dev/null +++ b/index.md @@ -0,0 +1,65 @@ +--- +title: Home +layout: home +--- + +# OpenAT Design Guide + +## What is Open Assistive Technology (OpenAT)? + +Open Assistive Technology (OpenAT) refers to assistive devices whose designs are publicly shared so that anyone can study, make, modify, and improve them. OpenAT projects are typically co-created by people with disabilities, engineers, makers, and disability professionals. + +Because the designs are open, these assistive technologies can be: + +- Adapted to individual needs +- Built locally at lower cost +- Improved collaboratively by a global community + +## What is the OpenAT Design Guide? + +The OpenAT Design Guide is an evolving collection of practical resources and best practices for designing open assistive devices that are easy to build, adapt, use, and improve upon. This guide is an attempt to standardize the dimensions for parts across designs and to serve as a central reference point for people designing devices. The guide is a living document, intended to be changed and updated as better measurements and new design techniques are developed by the Makers Making Change team and the wider community. + +## Who is this guide for? + +This guide is for anyone who designs assistive technology intended to be built as a do-it-yourself (DIY) or do-it-together (DIT) project, or build by volunteer makers. + + +## How this guide is organized + +- [**Commercial Components**]({{ "/Commercial_Components/Commercial-Components.html" | relative_url }}) + – Recommended dimensions and mounting methods for common parts used in OpenAT and MMC designs (e.g., screws, switches, USB connectors, etc.). +- [**Design Elements for 3D Printed Parts**]({{ "/Design_Elements_For_3D_Printed_Parts/Design-Elements-for-3D-Printed-Parts.html" | relative_url }}) + – Patterns like screw posts, snap fits, shadow lines, and strain relief, with design considerations and typical min/max dimensions. +- [**3D Printing Design Tips**]({{ "/3D_Printing_Design_Tips/3D-Printing-Design-Tips.html" | relative_url }}) – Links to trusted 3D printing design guides and explains how printer choice and settings affect tolerances used in this guide. +- [**How to Contribute**]({{ "/How-To-Contribute.html" | relative_url }}) – Instructions for how to suggest improvements or add content. + +Additional sections will be added as this resource grows. + +In the [Commercial Components]({{ "/Commercial_Components/Commercial-Components.html" | relative_url }}) section, the guide covers the commonly used commercial parts in MMC designs, and how to integrate them into 3D printed components. This includes the right size holes to use for screws, the best ways to secure a switch to a component, and what size openings to use for various USB connectors. + +The [Design Elements for 3D Printed Parts]({{ "/Design_Elements_For_3D_Printed_Parts/Design-Elements-for-3D-Printed-Parts.html" | relative_url }}) + section covers common design elements used in MMC devices, such as 3D printed threads, cotter pins, and shadow lines. This section focuses less on exact measurements and dimensions than the previous section, as the designer has control over the dimensions of all the components involved. Instead this section focuses more on the necessary design considerations and minimum/maximum sizes of the features. + +The [3D Printing Design Tips]({{ "/3D_Printing_Design_Tips/3D-Printing-Design-Tips.html" | relative_url }}) section of the guide links to other 3D printing design guides that cover wall thicknesses, overhangs, optimizing for print speed and material usage, and filet sizes while breaking out the section on printing overhanging holes from the Hydra Research design guide for easy reference. It also gives a brief overview of the printers used in the design of the devices mentioned in the guide, and how that affected the tolerances used in the guide. Finally, it covers how these tolerances can be changed for other 3D printers to make them fit better. + +Finally, there is a [**How to Contribute**]({{ "/How-To-Contribute.html" | relative_url }}) section that covers how to make changes to the guide or add new sections. This guide is a living document and intended to be changed and updated as better measurements and new design techniques are used, both by the Makers Making Change team and community. + + +## About Makers Making Change +[Makers Making Change Logo](https://www.makersmakingchange.com/) + +Makers Making Change is a program of [Neil Squire](https://www.neilsquire.ca/), a Canadian non-profit that uses technology, knowledge, and passion to empower people with disabilities. + +Makers Making Change leverages the capacity of community based Makers, Disability Professionals and Volunteers to develop and deliver affordable Open Source Assistive Technologies. + + - Website: [www.MakersMakingChange.com](https://www.makersmakingchange.com/) + - GitHub: [makersmakingchange](https://github.com/makersmakingchange) + - Bluesky: [@makersmakingchange.bsky.social](https://bsky.app/profile/makersmakingchange.bsky.social) + - Instagram: [@makersmakingchange](https://www.instagram.com/makersmakingchange) + - Facebook: [makersmakechange](https://www.facebook.com/makersmakechange) + - LinkedIn: [Neil Squire Society](https://www.linkedin.com/company/neil-squire-society/) + - Thingiverse: [makersmakingchange](https://www.thingiverse.com/makersmakingchange/about) + - Printables: [MakersMakingChange](https://www.printables.com/@MakersMakingChange) + +### Contact Us +For technical questions, to get involved, or to share your experience we encourage you to [visit our website](https://www.makersmakingchange.com/) or [contact us](https://www.makersmakingchange.com/s/contact). diff --git a/template.md b/template.md new file mode 100644 index 0000000..852b3d7 --- /dev/null +++ b/template.md @@ -0,0 +1,43 @@ +--- +title: Template +layout: default +nav_order: 3 +parent: How To Contribute +--- + +# [Part Name] + +Brief introduction to part and what devices it is used in + +[image of part here] + +## Dimensions + +For this part, there are several primary dimensions, as well as some design considerations. The primary dimensions are: +* **[Dimension 1]:** Explanation of what this dimension is and why it is important +* **[Dimension 2]:** Explanation of what this dimension is and why it is important +* **[Dimension 3]:** Explanation of what this dimension is and why it is important + +[labeled sketch of the dimensions used in a part] + + +| **[Part name] Dimensions** | | +| :--------------------- | -----: | +| [Dimension 1] | xx mm | +| [Dimension 2] | xx mm | +| [Dimension 3] | xx mm | + +## Design Considerations + +When designing parts that use this component, you need to keep in mind the following design considerations +* **[Consideration 1]:** Something that is not a dimension, but still affects the design. Something like using an octagon for a horizontal hole to prevent sagging. +* **[Consideration 2]:** Something that is not a dimension, but still affects the design. Something like using an octagon for a horizontal hole to prevent sagging. + + +## Purchasing + + | **[Part name] can be found at these links:** | | +| :--------------------- | -----: | +| Digikey | [[Part name] DigiKey Link](link here)| +| Mouser | [[Part name] Mouser Link](link here) | +