├── LICENSE ├── README.md └── models ├── Left-hand Trackpoint Glove80 sidecar bottom.step ├── Left-hand Trackpoint Glove80 sidecar bottom.stl ├── Left-hand Trackpoint Glove80 sidecar top.step └── Left-hand Trackpoint Glove80 sidecar top.stl /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 David Jones 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Glove80-Trackpoint 2 | Trackpoint sidecar mod for the Glove80 keyboard 3 | 4 | ![glove80-left-with-trackpoint](https://github.com/user-attachments/assets/d2faad88-5a96-45db-8982-0737be08cd68) 5 | 6 | ## Why 7 | 8 | I recently started getting RSI-like pain and went on a deep dive into the word of ergonomic split keyboards, but I knew part of my issue was my mouse usage habits, and that moving from the keyboard to the mouse (or trackpad) over and over again certainly wasn't helping. 9 | 10 | Unfortunately, there currently are very few commercially available ergonomic keyboards that have built-in pointing devices. 11 | However, the [MoErgo Glove80](https://www.moergo.com/collections/glove80-keyboards) keyboard tries to be highly ergonomic, as well as [customizable](https://www.moergo.com/pages/glove80-ergonomic-keyboard-customization) platform, and even provides built-in anchor points and some basic 3d models that can be used to add your own pointing devices right between the thumb cluster and forefinger areas. I figured this could be how I could possibly _make_ the Glove80 the perfect keyboard for me. 12 | 13 | So I bought the Glove80, and a 3d printer, and got to work. This is helping me, and so I hope my efforts can help others. 14 | 15 | ## What you'll need 16 | 17 | 1. The [MoErgo Glove80 keyboard](https://www.moergo.com/collections/glove80-keyboards) 18 | 2. Soldering equipment, [some wire](https://www.amazon.com/gp/product/B01EV70C78/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1), and a steady hand ([this is a great kit for cheap](https://www.amazon.com/gp/product/B07Q2B4ZY9/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&th=1)) 19 | 3. A hot glue gun (or regular glue/tape could work in a pinch) 20 | 4. A 3D printer (or a friend/library/makerspace/business with one) 21 | 5. [USB Overdrive](https://www.usboverdrive.com/) or an equivalent software that allows you to invert x and y axis of your mouse (ideally per-device) 22 | 6. Trackpoint / Rocker mouse control board (I used [this one](https://www.aliexpress.us/item/3256804502547098.html)) 23 | 7. 2.5mm screws (for the Glove80 mounting holes). I'm using 8mm deep ones I got in [this kit](https://www.amazon.com/dp/B0BLCFD9HR) 24 | 8. A USB-C breakout board (I used [this treedix board](https://treedix.com/products/treedix-4pcs-usb-type-c-breakout-board-serial-basic-breakout-female-connector-type-pcb-converter-board) also available on [Amazon here](https://www.amazon.com/dp/B096M2HQLK), but this is completely optional. I used it because I wanted to be able to "unplug" at the keyboard, instead of at the computer). 25 | 9. These [3d model files](/models/) 26 | 27 | ## Test the trackpoint 28 | 29 | ![trackpoint](https://github.com/user-attachments/assets/463f927c-a512-4b79-8001-11ee43161e15) 30 | 31 | While unlikely, it's entirely possible the trackpoint may be DOA (Dead on Arrival), so plug it in to a computer and make sure it works before we start questioning our sanity if it somehow no longer works after soldering. 32 | This is also a good time to install [USB Overdrive](https://www.usboverdrive.com/) (mac), or equivalent software for your computer. We will be installing the Trackpoint board mostly upside-down, so we will want to invert the X and Y axis. 33 | 34 | When plugged in and USB Overdrive installed, go into it's settings, and choose the Trackpoint, which shows up for me as `Mouse VID 0x1018 PID 0x1006, Any Application`. 35 | 36 | Then go into "Advanced Settings", and check the boxes next to "Invert X axis" and "Invert Y axis": 37 | 38 | ![usb-overdrive](https://github.com/user-attachments/assets/2bb68b5e-5e0c-4f5d-8474-0e5304376774) 39 | ![overdrive2](https://github.com/user-attachments/assets/8e26b8f9-85ca-4943-9d29-049e2e78bd0c) 40 | 41 | Now, the trackpoint should work correctly while upside-down. 42 | 43 | ## Soldering 44 | 45 | The trackpoint rocker board (blue) comes pre-soldered onto the control board (green), but together they are too big (in my opinion) to get the trackpoint in a spot really close enough to comfortably reach, so let's de-solder that, and re-solder the 2 parts together using some wire instead. Be sure to solder on the BACK side of the blue board, or you'll have trouble with the trackpoint being flush when mounted to the case. I made this mistake, as seen in this photo. It still works, but is less flush to the surface: 46 | 47 | ![trackpoint half-soldered](https://github.com/user-attachments/assets/a12ba8c3-72b7-4700-80ef-d99302c23af2) 48 | 49 | These contacts are very close to each other, so be careful your solder and wires doesn't bridge from one solder point to its neighboring ones. If it does, de-solder and try again. Once finished, plug it in and make sure it still works. If it does, I recommend hot-gluing the wires in place (to protect them from bridging and breaking off easily), and testing again. 50 | 51 | Assuming that went well, the next step is to add the USB-C connector (if desired). First take a photo of the wires to make sure you know what color goes where. Try to make your cables a little longer than I did. This is so short, I had trouble getting the big green board in a good position. 52 | 53 | ![usb-c soldering](https://github.com/user-attachments/assets/853847c8-6fb5-4ad3-ba3a-a044ed8be759) 54 | 55 | The Trackpoint only uses 4 pins on it's built-in cable, and the Treedix connector has 6. The red wire is power (VBUS), the black wire is ground (GND), the blue wire is Data - (D-), and the green wire is data + (D+). Solder your wires onto the top surface. There are little holes so you can push your wires though before soldering them in place. 56 | 57 | Again, I recommend testing things when done to make sure wiggling the trackpoint moves the mouse at this point, and possibly hot-gluing over the connection if it's good. 58 | 59 | ## 3d printing 60 | 61 | This model should serve as a ready-to-print piece for you, however, I've made some design tweaks over the MoErgo one worth pointing out: 62 | 63 | - The platform is widened to reach all the way to the edge of the thumb cluster 64 | - The platform is elongated to be taller, and follow the curve that the number row is usually on 65 | - The platform is deepened to go much lower, allowing you to cram the maximum amount of cables/boards/stuff you can put inside (however, this may limit how low you can tent the Glove80, but should accomodate the default height) 66 | - It has a hole and a platform inside for the USB-C connector 67 | - It has a detachable bottom cover to contain and protect the electronics inside 68 | 69 | ![left hand model](https://github.com/user-attachments/assets/428b3df6-0126-462a-828f-b1354cc94f4d) 70 | ![left-hand-back](https://github.com/user-attachments/assets/42dfc230-2bdd-41da-939a-ed0dfaf01674) 71 | 72 | If you want to use on the right-hand of the Glove80, mirror the model along the flat outer surface. 73 | 74 | Make sure that the USB-C board platform, and bottom screw surfaces are flat and free from support dots. Use the edge of a flathead screwdriver or knife if needed. 75 | Make sure the top and bottom parts fit neatly together. I recommend carefully screwing them together to thread them before putting anything inside. 76 | 77 | ## Assembly 78 | 79 | 1. Take the rubber nub off of the rocker board, and position it in the corner like this, and put the rubber nub back on through the hole. This should keep it centered. It won't be perfectly upright, but should be as close as you can get it. I've found a little bit crooked is ok, but a lot feels off, even though it follows the sweep of your thumb, it doesn't match up with the screen, and feels weird. 80 | 81 | 2. Hot glue the blue rocker board down, leaving a few spots open so, if necessary, you can get under it with a flathead screwdriver to remove later if needed. 82 | 83 | ![glued-rocker](https://github.com/user-attachments/assets/db1ecd85-080b-4c1c-85d0-3cd586cf8329) 84 | 85 | 3. Carefully slide the USB-C board into the platform. it should go into the rounded hole first, and be a little difficult to get in there, but once all the way in, it should pop down into the platform. This can be screwed, hot-glued, or taped down. 86 | 87 | 4. Stuff the rest of the wires in the case. The green board is large, so you'll need to tuck it in under the USB-C platform: 88 | 89 | ![stuff-components](https://github.com/user-attachments/assets/72d05a20-3094-4bf5-9809-14be467a34c0) 90 | 91 | 6. Put the bottom on and screw it in 92 | 93 | ![back-on](https://github.com/user-attachments/assets/6078b19d-477a-41d9-9a05-34b77833fd0c) 94 | 95 | 8. Connect a USB-c cable from the Trackpoint mouse to your computer, and make sure it still works 96 | 97 | ## Glove80 mouse-keys configuration 98 | 99 | Because the mouse we've just printed doesn't have the mouse buttons wired up, we probably want to map some keys on the Glove80 to act as mouse buttons. 100 | I've setup the 2 right and bottom-most thumb keys to act as mouse buttons in [my layout](https://my.glove80.com/#/layout/user/2e9038ef-1ab4-45dc-9edd-4a34c662d1fc) by assigning them to the "CUSTOM" behavior with `&mkp MB1` for left-click and `&mkp MB2` for right-click (I did not setup middle-click). 101 | 102 | ![thumb-buttons](https://github.com/user-attachments/assets/51838a18-f06e-4d03-8430-dec2b59a7873) 103 | 104 | It is not at all necessary, but you might consider setting up a "mouse" layer like mine above, now that you will be building a firmware capable of emulating a mouse, you might want to take advantage of that. 105 | 106 | By default, the MoErgo editor does not build a ZMK firmware with mouse support, so after saving your changes, but before building the firmware, go to "settings" at the top, and change the firmware to "community.pr23.mouse-keys.20240223.113355" or the modern equivalent you see there. One day, ZMK should merge mouse support into main, and this step may not be needed any longer. 107 | ![mouse-pr](https://github.com/user-attachments/assets/9fc0f0fd-7894-47cb-8bb1-e3797d4ec1f4) 108 | 109 | Once you flash your Glove80 with the new firmware, these keys should act as mouse buttons. 110 | 111 | ## Result 112 | 113 | ![glove80-left-with-trackpoint](https://github.com/user-attachments/assets/27213585-940c-4b9b-92a7-232cd66db891) 114 | ![on-tray](https://github.com/user-attachments/assets/55c7a682-9e07-4ba5-ba30-455f57071726) 115 | 116 | ## Bonus 117 | 118 | I do most of my computer work on a Mac computer, and also use [Homerow](https://homerow.app) to add some very helpful navigation stuff. `CMD+h` will pepper your active window with a bunch of 2-letter key combos, that when typed will send a left-click at that spot/menu/link, and `CMD+j` makes whatever is focused scrollable. It's _almost_ enough to replace a lot of light mouse usage, and I highly recommend it. 119 | 120 | ## TODO 121 | 122 | - I plan to soon also make the actual Trackpoint buttons work with individual wired keyswitches. I have some Kalih switches and am working on making nice mounting holes for them in the 3d model. 123 | - The height/angle of the top does't _quite_ line up with the Glove80 notch 124 | - My screw mounts could use some work. The screw holes are a little small, and the screws aren't recessed enough to be flush 125 | - I may make it a little thinner on the underside in this specific model, and post a version of the deep model as a generic starter model for _your_ projects 126 | - I plan to try a version that is even closer to the corner, and does not need X/Y changed, by placing the circuit board below the thumb cluster, and extending the touchpoint with a 3d-printed extension 127 | 128 | ## See Also 129 | 130 | - These models on [Thingiverse](https://www.thingiverse.com/thing:6711751) 131 | - My [Glove80 Wireless Trackball mod](https://github.com/unixmonkey/glove80-trackball) (in progress) 132 | - My [Glove80 Ergo Touchpad mod](https://github.com/unixmonkey/glove80-touchpad) (in progress) 133 | 134 | I love the freedom from RSI pain this keyboard has saved me from, and I love it even more with these mouse-replacements. My pain has gotten much more managable, and I've enjoyed getting into 3d modeling and printing! 135 | 136 | Thank you to the many people who have posted on the [MoErgo Discord Community](https://www.moergo.com/discord) that helped inspire me to make this happen, and are always dropping great tips on how to optimize my computing experience. 137 | -------------------------------------------------------------------------------- /models/Left-hand Trackpoint Glove80 sidecar bottom.step: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | /* Generated by software containing ST-Developer 4 | * from STEP Tools, Inc. (www.steptools.com) 5 | */ 6 | 7 | FILE_DESCRIPTION( 8 | /* description */ (''), 9 | /* implementation_level */ '2;1'); 10 | 11 | FILE_NAME( 12 | /* name */ 'lh tp btm v62.step', 13 | /* time_stamp */ '2024-07-11T11:20:42-04:00', 14 | /* author */ (''), 15 | /* organization */ (''), 16 | /* preprocessor_version */ 'ST-DEVELOPER v20', 17 | /* originating_system */ 'Autodesk Translation Framework v13.14.0.145', 18 | 19 | /* authorisation */ ''); 20 | 21 | FILE_SCHEMA (('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }')); 22 | ENDSEC; 23 | 24 | DATA; 25 | #10=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#13),#444); 26 | #11=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#451,#12); 27 | #12=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#14),#443); 28 | #13=STYLED_ITEM('',(#460),#14); 29 | #14=MANIFOLD_SOLID_BREP('left back',#257); 30 | #15=ELLIPSE('',#289,1551.60869723813,112.35); 31 | #16=CYLINDRICAL_SURFACE('',#284,1.00000000000001); 32 | #17=CYLINDRICAL_SURFACE('',#288,112.35); 33 | #18=CYLINDRICAL_SURFACE('',#291,1.00000000000002); 34 | #19=CYLINDRICAL_SURFACE('',#294,1.); 35 | #20=CONICAL_SURFACE('',#282,1.25000000000001,0.392699081698724); 36 | #21=CONICAL_SURFACE('',#293,1.25000000000001,0.785398163397448); 37 | #22=CONICAL_SURFACE('',#296,1.25,0.785398163397448); 38 | #23=FACE_BOUND('',#44,.T.); 39 | #24=FACE_BOUND('',#45,.T.); 40 | #25=FACE_BOUND('',#46,.T.); 41 | #26=FACE_BOUND('',#49,.T.); 42 | #27=FACE_BOUND('',#50,.T.); 43 | #28=FACE_BOUND('',#51,.T.); 44 | #29=FACE_OUTER_BOUND('',#43,.T.); 45 | #30=FACE_OUTER_BOUND('',#47,.T.); 46 | #31=FACE_OUTER_BOUND('',#48,.T.); 47 | #32=FACE_OUTER_BOUND('',#52,.T.); 48 | #33=FACE_OUTER_BOUND('',#53,.T.); 49 | #34=FACE_OUTER_BOUND('',#54,.T.); 50 | #35=FACE_OUTER_BOUND('',#55,.T.); 51 | #36=FACE_OUTER_BOUND('',#56,.T.); 52 | #37=FACE_OUTER_BOUND('',#57,.T.); 53 | #38=FACE_OUTER_BOUND('',#58,.T.); 54 | #39=FACE_OUTER_BOUND('',#59,.T.); 55 | #40=FACE_OUTER_BOUND('',#60,.T.); 56 | #41=FACE_OUTER_BOUND('',#61,.T.); 57 | #42=FACE_OUTER_BOUND('',#62,.T.); 58 | #43=EDGE_LOOP('',(#170,#171,#172,#173,#174,#175)); 59 | #44=EDGE_LOOP('',(#176)); 60 | #45=EDGE_LOOP('',(#177)); 61 | #46=EDGE_LOOP('',(#178)); 62 | #47=EDGE_LOOP('',(#179,#180,#181,#182)); 63 | #48=EDGE_LOOP('',(#183,#184,#185,#186,#187,#188)); 64 | #49=EDGE_LOOP('',(#189)); 65 | #50=EDGE_LOOP('',(#190)); 66 | #51=EDGE_LOOP('',(#191)); 67 | #52=EDGE_LOOP('',(#192,#193,#194,#195)); 68 | #53=EDGE_LOOP('',(#196,#197,#198,#199)); 69 | #54=EDGE_LOOP('',(#200,#201,#202,#203)); 70 | #55=EDGE_LOOP('',(#204,#205,#206,#207)); 71 | #56=EDGE_LOOP('',(#208,#209,#210,#211)); 72 | #57=EDGE_LOOP('',(#212,#213,#214,#215)); 73 | #58=EDGE_LOOP('',(#216,#217,#218,#219)); 74 | #59=EDGE_LOOP('',(#220,#221,#222,#223)); 75 | #60=EDGE_LOOP('',(#224,#225,#226,#227)); 76 | #61=EDGE_LOOP('',(#228,#229,#230,#231)); 77 | #62=EDGE_LOOP('',(#232,#233,#234,#235)); 78 | #63=CIRCLE('',#272,112.350000055847); 79 | #64=CIRCLE('',#273,1.50000000000059); 80 | #65=CIRCLE('',#274,1.5); 81 | #66=CIRCLE('',#275,1.49999999999991); 82 | #67=CIRCLE('',#278,112.350000055847); 83 | #68=CIRCLE('',#279,1.00000000000001); 84 | #69=CIRCLE('',#280,1.); 85 | #70=CIRCLE('',#281,1.00000000000002); 86 | #71=CIRCLE('',#283,1.00000000000001); 87 | #72=CIRCLE('',#292,1.00000000000002); 88 | #73=CIRCLE('',#295,1.); 89 | #74=LINE('',#376,#95); 90 | #75=LINE('',#380,#96); 91 | #76=LINE('',#382,#97); 92 | #77=LINE('',#384,#98); 93 | #78=LINE('',#385,#99); 94 | #79=LINE('',#394,#100); 95 | #80=LINE('',#396,#101); 96 | #81=LINE('',#397,#102); 97 | #82=LINE('',#400,#103); 98 | #83=LINE('',#402,#104); 99 | #84=LINE('',#406,#105); 100 | #85=LINE('',#407,#106); 101 | #86=LINE('',#416,#107); 102 | #87=LINE('',#419,#108); 103 | #88=LINE('',#421,#109); 104 | #89=LINE('',#423,#110); 105 | #90=LINE('',#425,#111); 106 | #91=LINE('',#432,#112); 107 | #92=LINE('',#434,#113); 108 | #93=LINE('',#438,#114); 109 | #94=LINE('',#440,#115); 110 | #95=VECTOR('',#301,10.); 111 | #96=VECTOR('',#304,10.); 112 | #97=VECTOR('',#305,10.); 113 | #98=VECTOR('',#306,10.); 114 | #99=VECTOR('',#307,10.); 115 | #100=VECTOR('',#316,10.); 116 | #101=VECTOR('',#317,10.); 117 | #102=VECTOR('',#318,10.); 118 | #103=VECTOR('',#321,10.); 119 | #104=VECTOR('',#322,10.); 120 | #105=VECTOR('',#325,10.); 121 | #106=VECTOR('',#326,10.); 122 | #107=VECTOR('',#335,1.25000000000001); 123 | #108=VECTOR('',#340,1.00000000000001); 124 | #109=VECTOR('',#343,10.); 125 | #110=VECTOR('',#346,10.); 126 | #111=VECTOR('',#349,10.); 127 | #112=VECTOR('',#360,1.00000000000002); 128 | #113=VECTOR('',#363,1.25000000000001); 129 | #114=VECTOR('',#368,1.); 130 | #115=VECTOR('',#371,1.25); 131 | #116=VERTEX_POINT('',#374); 132 | #117=VERTEX_POINT('',#375); 133 | #118=VERTEX_POINT('',#377); 134 | #119=VERTEX_POINT('',#379); 135 | #120=VERTEX_POINT('',#381); 136 | #121=VERTEX_POINT('',#383); 137 | #122=VERTEX_POINT('',#386); 138 | #123=VERTEX_POINT('',#388); 139 | #124=VERTEX_POINT('',#390); 140 | #125=VERTEX_POINT('',#393); 141 | #126=VERTEX_POINT('',#395); 142 | #127=VERTEX_POINT('',#399); 143 | #128=VERTEX_POINT('',#401); 144 | #129=VERTEX_POINT('',#403); 145 | #130=VERTEX_POINT('',#405); 146 | #131=VERTEX_POINT('',#408); 147 | #132=VERTEX_POINT('',#410); 148 | #133=VERTEX_POINT('',#412); 149 | #134=VERTEX_POINT('',#415); 150 | #135=VERTEX_POINT('',#430); 151 | #136=VERTEX_POINT('',#436); 152 | #137=EDGE_CURVE('',#116,#117,#74,.F.); 153 | #138=EDGE_CURVE('',#117,#118,#63,.T.); 154 | #139=EDGE_CURVE('',#118,#119,#75,.T.); 155 | #140=EDGE_CURVE('',#119,#120,#76,.T.); 156 | #141=EDGE_CURVE('',#120,#121,#77,.F.); 157 | #142=EDGE_CURVE('',#121,#116,#78,.F.); 158 | #143=EDGE_CURVE('',#122,#122,#64,.T.); 159 | #144=EDGE_CURVE('',#123,#123,#65,.T.); 160 | #145=EDGE_CURVE('',#124,#124,#66,.T.); 161 | #146=EDGE_CURVE('',#125,#120,#79,.T.); 162 | #147=EDGE_CURVE('',#126,#125,#80,.T.); 163 | #148=EDGE_CURVE('',#121,#126,#81,.T.); 164 | #149=EDGE_CURVE('',#125,#127,#82,.F.); 165 | #150=EDGE_CURVE('',#127,#128,#83,.F.); 166 | #151=EDGE_CURVE('',#128,#129,#67,.F.); 167 | #152=EDGE_CURVE('',#130,#129,#84,.F.); 168 | #153=EDGE_CURVE('',#130,#126,#85,.T.); 169 | #154=EDGE_CURVE('',#131,#131,#68,.T.); 170 | #155=EDGE_CURVE('',#132,#132,#69,.T.); 171 | #156=EDGE_CURVE('',#133,#133,#70,.T.); 172 | #157=EDGE_CURVE('',#122,#134,#86,.T.); 173 | #158=EDGE_CURVE('',#134,#134,#71,.T.); 174 | #159=EDGE_CURVE('',#134,#131,#87,.T.); 175 | #160=EDGE_CURVE('',#119,#127,#88,.F.); 176 | #161=EDGE_CURVE('',#116,#130,#89,.F.); 177 | #162=EDGE_CURVE('',#128,#118,#90,.T.); 178 | #163=EDGE_CURVE('',#129,#117,#15,.F.); 179 | #164=EDGE_CURVE('',#135,#135,#72,.T.); 180 | #165=EDGE_CURVE('',#135,#133,#91,.T.); 181 | #166=EDGE_CURVE('',#123,#135,#92,.T.); 182 | #167=EDGE_CURVE('',#136,#136,#73,.T.); 183 | #168=EDGE_CURVE('',#136,#132,#93,.T.); 184 | #169=EDGE_CURVE('',#124,#136,#94,.T.); 185 | #170=ORIENTED_EDGE('',*,*,#137,.T.); 186 | #171=ORIENTED_EDGE('',*,*,#138,.T.); 187 | #172=ORIENTED_EDGE('',*,*,#139,.T.); 188 | #173=ORIENTED_EDGE('',*,*,#140,.T.); 189 | #174=ORIENTED_EDGE('',*,*,#141,.T.); 190 | #175=ORIENTED_EDGE('',*,*,#142,.T.); 191 | #176=ORIENTED_EDGE('',*,*,#143,.T.); 192 | #177=ORIENTED_EDGE('',*,*,#144,.F.); 193 | #178=ORIENTED_EDGE('',*,*,#145,.F.); 194 | #179=ORIENTED_EDGE('',*,*,#141,.F.); 195 | #180=ORIENTED_EDGE('',*,*,#146,.F.); 196 | #181=ORIENTED_EDGE('',*,*,#147,.F.); 197 | #182=ORIENTED_EDGE('',*,*,#148,.F.); 198 | #183=ORIENTED_EDGE('',*,*,#147,.T.); 199 | #184=ORIENTED_EDGE('',*,*,#149,.T.); 200 | #185=ORIENTED_EDGE('',*,*,#150,.T.); 201 | #186=ORIENTED_EDGE('',*,*,#151,.T.); 202 | #187=ORIENTED_EDGE('',*,*,#152,.F.); 203 | #188=ORIENTED_EDGE('',*,*,#153,.T.); 204 | #189=ORIENTED_EDGE('',*,*,#154,.T.); 205 | #190=ORIENTED_EDGE('',*,*,#155,.F.); 206 | #191=ORIENTED_EDGE('',*,*,#156,.F.); 207 | #192=ORIENTED_EDGE('',*,*,#143,.F.); 208 | #193=ORIENTED_EDGE('',*,*,#157,.T.); 209 | #194=ORIENTED_EDGE('',*,*,#158,.T.); 210 | #195=ORIENTED_EDGE('',*,*,#157,.F.); 211 | #196=ORIENTED_EDGE('',*,*,#158,.F.); 212 | #197=ORIENTED_EDGE('',*,*,#159,.T.); 213 | #198=ORIENTED_EDGE('',*,*,#154,.F.); 214 | #199=ORIENTED_EDGE('',*,*,#159,.F.); 215 | #200=ORIENTED_EDGE('',*,*,#146,.T.); 216 | #201=ORIENTED_EDGE('',*,*,#140,.F.); 217 | #202=ORIENTED_EDGE('',*,*,#160,.T.); 218 | #203=ORIENTED_EDGE('',*,*,#149,.F.); 219 | #204=ORIENTED_EDGE('',*,*,#148,.T.); 220 | #205=ORIENTED_EDGE('',*,*,#153,.F.); 221 | #206=ORIENTED_EDGE('',*,*,#161,.F.); 222 | #207=ORIENTED_EDGE('',*,*,#142,.F.); 223 | #208=ORIENTED_EDGE('',*,*,#160,.F.); 224 | #209=ORIENTED_EDGE('',*,*,#139,.F.); 225 | #210=ORIENTED_EDGE('',*,*,#162,.F.); 226 | #211=ORIENTED_EDGE('',*,*,#150,.F.); 227 | #212=ORIENTED_EDGE('',*,*,#162,.T.); 228 | #213=ORIENTED_EDGE('',*,*,#138,.F.); 229 | #214=ORIENTED_EDGE('',*,*,#163,.F.); 230 | #215=ORIENTED_EDGE('',*,*,#151,.F.); 231 | #216=ORIENTED_EDGE('',*,*,#161,.T.); 232 | #217=ORIENTED_EDGE('',*,*,#152,.T.); 233 | #218=ORIENTED_EDGE('',*,*,#163,.T.); 234 | #219=ORIENTED_EDGE('',*,*,#137,.F.); 235 | #220=ORIENTED_EDGE('',*,*,#164,.T.); 236 | #221=ORIENTED_EDGE('',*,*,#165,.T.); 237 | #222=ORIENTED_EDGE('',*,*,#156,.T.); 238 | #223=ORIENTED_EDGE('',*,*,#165,.F.); 239 | #224=ORIENTED_EDGE('',*,*,#144,.T.); 240 | #225=ORIENTED_EDGE('',*,*,#166,.T.); 241 | #226=ORIENTED_EDGE('',*,*,#164,.F.); 242 | #227=ORIENTED_EDGE('',*,*,#166,.F.); 243 | #228=ORIENTED_EDGE('',*,*,#167,.T.); 244 | #229=ORIENTED_EDGE('',*,*,#168,.T.); 245 | #230=ORIENTED_EDGE('',*,*,#155,.T.); 246 | #231=ORIENTED_EDGE('',*,*,#168,.F.); 247 | #232=ORIENTED_EDGE('',*,*,#145,.T.); 248 | #233=ORIENTED_EDGE('',*,*,#169,.T.); 249 | #234=ORIENTED_EDGE('',*,*,#167,.F.); 250 | #235=ORIENTED_EDGE('',*,*,#169,.F.); 251 | #236=PLANE('',#271); 252 | #237=PLANE('',#276); 253 | #238=PLANE('',#277); 254 | #239=PLANE('',#285); 255 | #240=PLANE('',#286); 256 | #241=PLANE('',#287); 257 | #242=PLANE('',#290); 258 | #243=ADVANCED_FACE('',(#29,#23,#24,#25),#236,.T.); 259 | #244=ADVANCED_FACE('',(#30),#237,.F.); 260 | #245=ADVANCED_FACE('',(#31,#26,#27,#28),#238,.F.); 261 | #246=ADVANCED_FACE('',(#32),#20,.F.); 262 | #247=ADVANCED_FACE('',(#33),#16,.F.); 263 | #248=ADVANCED_FACE('',(#34),#239,.F.); 264 | #249=ADVANCED_FACE('',(#35),#240,.F.); 265 | #250=ADVANCED_FACE('',(#36),#241,.F.); 266 | #251=ADVANCED_FACE('',(#37),#17,.F.); 267 | #252=ADVANCED_FACE('',(#38),#242,.T.); 268 | #253=ADVANCED_FACE('',(#39),#18,.F.); 269 | #254=ADVANCED_FACE('',(#40),#21,.F.); 270 | #255=ADVANCED_FACE('',(#41),#19,.F.); 271 | #256=ADVANCED_FACE('',(#42),#22,.F.); 272 | #257=CLOSED_SHELL('',(#243,#244,#245,#246,#247,#248,#249,#250,#251,#252, 273 | #253,#254,#255,#256)); 274 | #258=DERIVED_UNIT_ELEMENT(#260,1.); 275 | #259=DERIVED_UNIT_ELEMENT(#446,-3.); 276 | #260=( 277 | MASS_UNIT() 278 | NAMED_UNIT(*) 279 | SI_UNIT(.KILO.,.GRAM.) 280 | ); 281 | #261=DERIVED_UNIT((#258,#259)); 282 | #262=MEASURE_REPRESENTATION_ITEM('density measure', 283 | POSITIVE_RATIO_MEASURE(1060.),#261); 284 | #263=PROPERTY_DEFINITION_REPRESENTATION(#268,#265); 285 | #264=PROPERTY_DEFINITION_REPRESENTATION(#269,#266); 286 | #265=REPRESENTATION('material name',(#267),#443); 287 | #266=REPRESENTATION('density',(#262),#443); 288 | #267=DESCRIPTIVE_REPRESENTATION_ITEM('ABS Plastic','ABS Plastic'); 289 | #268=PROPERTY_DEFINITION('material property','material name',#453); 290 | #269=PROPERTY_DEFINITION('material property','density of part',#453); 291 | #270=AXIS2_PLACEMENT_3D('',#372,#297,#298); 292 | #271=AXIS2_PLACEMENT_3D('',#373,#299,#300); 293 | #272=AXIS2_PLACEMENT_3D('',#378,#302,#303); 294 | #273=AXIS2_PLACEMENT_3D('',#387,#308,#309); 295 | #274=AXIS2_PLACEMENT_3D('',#389,#310,#311); 296 | #275=AXIS2_PLACEMENT_3D('',#391,#312,#313); 297 | #276=AXIS2_PLACEMENT_3D('',#392,#314,#315); 298 | #277=AXIS2_PLACEMENT_3D('',#398,#319,#320); 299 | #278=AXIS2_PLACEMENT_3D('',#404,#323,#324); 300 | #279=AXIS2_PLACEMENT_3D('',#409,#327,#328); 301 | #280=AXIS2_PLACEMENT_3D('',#411,#329,#330); 302 | #281=AXIS2_PLACEMENT_3D('',#413,#331,#332); 303 | #282=AXIS2_PLACEMENT_3D('',#414,#333,#334); 304 | #283=AXIS2_PLACEMENT_3D('',#417,#336,#337); 305 | #284=AXIS2_PLACEMENT_3D('',#418,#338,#339); 306 | #285=AXIS2_PLACEMENT_3D('',#420,#341,#342); 307 | #286=AXIS2_PLACEMENT_3D('',#422,#344,#345); 308 | #287=AXIS2_PLACEMENT_3D('',#424,#347,#348); 309 | #288=AXIS2_PLACEMENT_3D('',#426,#350,#351); 310 | #289=AXIS2_PLACEMENT_3D('',#427,#352,#353); 311 | #290=AXIS2_PLACEMENT_3D('',#428,#354,#355); 312 | #291=AXIS2_PLACEMENT_3D('',#429,#356,#357); 313 | #292=AXIS2_PLACEMENT_3D('',#431,#358,#359); 314 | #293=AXIS2_PLACEMENT_3D('',#433,#361,#362); 315 | #294=AXIS2_PLACEMENT_3D('',#435,#364,#365); 316 | #295=AXIS2_PLACEMENT_3D('',#437,#366,#367); 317 | #296=AXIS2_PLACEMENT_3D('',#439,#369,#370); 318 | #297=DIRECTION('axis',(0.,0.,1.)); 319 | #298=DIRECTION('refdir',(1.,0.,0.)); 320 | #299=DIRECTION('center_axis',(-0.130733544355535,0.114710087066874,-0.984759024485356)); 321 | #300=DIRECTION('ref_axis',(0.0373370749386588,0.993148866459648,0.110730627583069)); 322 | #301=DIRECTION('',(0.0450543390428542,0.992945056369173,0.109682366702361)); 323 | #302=DIRECTION('center_axis',(0.130733544355535,-0.114710087066874,0.984759024485356)); 324 | #303=DIRECTION('ref_axis',(0.346581126530405,0.935901454414786,0.0630078594875605)); 325 | #304=DIRECTION('',(-0.872332077023988,0.458688390870932,0.169238611065116)); 326 | #305=DIRECTION('',(-0.873926428572533,0.455694282812025,0.169101502225413)); 327 | #306=DIRECTION('',(-0.022294829023064,-0.993372814773784,-0.112753676069746)); 328 | #307=DIRECTION('',(-0.990156116176836,0.0349831440168813,0.135525072338286)); 329 | #308=DIRECTION('center_axis',(0.130733544355535,-0.114710087066874,0.984759024485356)); 330 | #309=DIRECTION('ref_axis',(-0.991302601620576,1.20374512637967E-16,0.131602249297943)); 331 | #310=DIRECTION('center_axis',(-0.130733544355535,0.114710087066874,-0.984759024485356)); 332 | #311=DIRECTION('ref_axis',(0.987221239670767,-0.076229880843061,-0.139940091501927)); 333 | #312=DIRECTION('center_axis',(-0.130733544355535,0.114710087066874,-0.984759024485356)); 334 | #313=DIRECTION('ref_axis',(0.987221239670767,-0.076229880843061,-0.139940091501927)); 335 | #314=DIRECTION('center_axis',(0.991166828025975,-0.00721434636810663,-0.132424590720187)); 336 | #315=DIRECTION('ref_axis',(-0.132428036992378,1.60808217253742E-17,-0.991192622560492)); 337 | #316=DIRECTION('',(-0.130732763234865,0.114744887189227,-0.984755073853854)); 338 | #317=DIRECTION('',(-0.0222948290230639,-0.993372814773784,-0.112753676069745)); 339 | #318=DIRECTION('',(0.119011573744724,-0.39221775059725,0.912141152142166)); 340 | #319=DIRECTION('center_axis',(-0.130733544355535,0.114710087066873,-0.984759024485356)); 341 | #320=DIRECTION('ref_axis',(-0.990178478282549,0.0345371068407488,0.135476084225691)); 342 | #321=DIRECTION('',(-0.873926428572533,0.455694282812025,0.169101502225412)); 343 | #322=DIRECTION('',(-0.872332077023988,0.458688390870933,0.169238611065116)); 344 | #323=DIRECTION('center_axis',(0.130733544355535,-0.114710087066873,0.984759024485356)); 345 | #324=DIRECTION('ref_axis',(0.346581048106323,0.935901482535179,0.0630078731745131)); 346 | #325=DIRECTION('',(0.0450543390428541,0.992945056369173,0.10968236670236)); 347 | #326=DIRECTION('',(-0.990156116176836,0.0349831440168813,0.135525072338286)); 348 | #327=DIRECTION('center_axis',(-0.130733544355535,0.114710087066873,-0.984759024485356)); 349 | #328=DIRECTION('ref_axis',(-0.991302601620576,1.20374512637967E-16,0.131602249297943)); 350 | #329=DIRECTION('center_axis',(0.130733544355535,-0.114710087066874,0.984759024485356)); 351 | #330=DIRECTION('ref_axis',(0.987221239670766,-0.076229880843061,-0.139940091501927)); 352 | #331=DIRECTION('center_axis',(0.130733544355535,-0.114710087066874,0.984759024485356)); 353 | #332=DIRECTION('ref_axis',(0.987221239670767,-0.076229880843061,-0.139940091501927)); 354 | #333=DIRECTION('center_axis',(-0.130733544355535,0.114710087066874,-0.984759024485356)); 355 | #334=DIRECTION('ref_axis',(-0.991302601620576,1.20374512637967E-16,0.131602249297942)); 356 | #335=DIRECTION('',(-0.25857303625787,-0.105978301613673,0.960160707646104)); 357 | #336=DIRECTION('center_axis',(0.130733544355535,-0.114710087066874,0.984759024485356)); 358 | #337=DIRECTION('ref_axis',(-0.991302601620576,1.20374512637967E-16,0.131602249297943)); 359 | #338=DIRECTION('center_axis',(0.130733544355535,-0.114710087066874,0.984759024485356)); 360 | #339=DIRECTION('ref_axis',(-0.991302601620576,1.20374512637967E-16,0.131602249297943)); 361 | #340=DIRECTION('',(0.130733544355535,-0.114710087066874,0.984759024485356)); 362 | #341=DIRECTION('center_axis',(0.468150789980476,0.882710591475663,0.0407044166810024)); 363 | #342=DIRECTION('ref_axis',(-0.117704398210062,0.107946311214117,-0.987164256108006)); 364 | #343=DIRECTION('',(-0.130722616458621,0.114739596328317,-0.984757037334909)); 365 | #344=DIRECTION('center_axis',(-0.0850675878988611,-0.91932019411829,-0.384205525956328)); 366 | #345=DIRECTION('ref_axis',(4.68240528014728E-17,0.385603267197603,-0.922664684664225)); 367 | #346=DIRECTION('',(-0.0435180090180498,0.388663404201011,-0.920351531278123)); 368 | #347=DIRECTION('center_axis',(0.471114990775188,0.8811584657949,0.0401300837885098)); 369 | #348=DIRECTION('ref_axis',(-0.117709286317501,0.107891841155518,-0.987169628041046)); 370 | #349=DIRECTION('',(-0.130722616458643,0.114739596328329,-0.984757037334904)); 371 | #350=DIRECTION('center_axis',(0.130722616458643,-0.114739596328329,0.984757037334905)); 372 | #351=DIRECTION('ref_axis',(0.468150789980476,0.882710591475663,0.0407044166810024)); 373 | #352=DIRECTION('center_axis',(0.997260355472479,-0.0382567746453635,-0.0633103672129434)); 374 | #353=DIRECTION('ref_axis',(-0.0586662668274081,0.112264160785073,-0.991945072743324)); 375 | #354=DIRECTION('center_axis',(0.997260355472479,-0.0382567746453635,-0.0633103672129434)); 376 | #355=DIRECTION('ref_axis',(-0.0633567480498797,4.74740576720768E-17,-0.997990943083425)); 377 | #356=DIRECTION('center_axis',(-0.130733544355535,0.114710087066874,-0.984759024485356)); 378 | #357=DIRECTION('ref_axis',(0.987221239670767,-0.076229880843061,-0.139940091501927)); 379 | #358=DIRECTION('center_axis',(-0.130733544355535,0.114710087066874,-0.984759024485356)); 380 | #359=DIRECTION('ref_axis',(0.987221239670767,-0.076229880843061,-0.139940091501927)); 381 | #360=DIRECTION('',(0.130733544355535,-0.114710087066874,0.984759024485356)); 382 | #361=DIRECTION('center_axis',(-0.130733544355535,0.114710087066874,-0.984759024485356)); 383 | #362=DIRECTION('ref_axis',(0.987221239670766,-0.076229880843061,-0.139940091501927)); 384 | #363=DIRECTION('',(0.79051340884494,-0.135014946108657,0.597377196387366)); 385 | #364=DIRECTION('center_axis',(-0.130733544355535,0.114710087066874,-0.984759024485356)); 386 | #365=DIRECTION('ref_axis',(0.987221239670766,-0.076229880843061,-0.139940091501927)); 387 | #366=DIRECTION('center_axis',(-0.130733544355535,0.114710087066874,-0.984759024485356)); 388 | #367=DIRECTION('ref_axis',(0.987221239670766,-0.076229880843061,-0.139940091501927)); 389 | #368=DIRECTION('',(0.130733544355535,-0.114710087066874,0.984759024485356)); 390 | #369=DIRECTION('center_axis',(-0.130733544355535,0.114710087066874,-0.984759024485356)); 391 | #370=DIRECTION('ref_axis',(0.987221239670766,-0.0762298808430611,-0.139940091501927)); 392 | #371=DIRECTION('',(0.79051340884494,-0.135014946108657,0.597377196387366)); 393 | #372=CARTESIAN_POINT('',(0.,0.,0.)); 394 | #373=CARTESIAN_POINT('Origin',(-200.795319483408,63.8655358374081,-2.62948180739981)); 395 | #374=CARTESIAN_POINT('',(-157.143933033867,115.340103675995,-2.42846644527519)); 396 | #375=CARTESIAN_POINT('',(-161.972120572252,8.93248458069789,-14.1824294895267)); 397 | #376=CARTESIAN_POINT('',(-158.869177948145,77.3177190388976,-6.62848245614476)); 398 | #377=CARTESIAN_POINT('',(-200.83345464955,43.3145244397738,-5.01831268156211)); 399 | #378=CARTESIAN_POINT('Origin',(-253.762765192416,-55.6840317828633,-9.52347234592618)); 400 | #379=CARTESIAN_POINT('',(-200.999816707072,43.402000696209,-4.98603726226893)); 401 | #380=CARTESIAN_POINT('',(-205.106789676411,45.5615232820152,-4.18925537229861)); 402 | #381=CARTESIAN_POINT('',(-207.309414950929,46.6920349056824,-3.76515355101893)); 403 | #382=CARTESIAN_POINT('',(-205.790172620941,45.8998514662682,-4.05912127169426)); 404 | #383=CARTESIAN_POINT('',(-205.730180866059,117.056701369413,4.22165129325697)); 405 | #384=CARTESIAN_POINT('',(-206.932396857304,63.4905277085212,-1.85842549506486)); 406 | #385=CARTESIAN_POINT('',(-189.134368112987,116.470355743575,1.9501420967506)); 407 | #386=CARTESIAN_POINT('',(-201.439904826169,109.107915887727,2.72616982924272)); 408 | #387=CARTESIAN_POINT('Origin',(-202.926858728601,109.107915887727,2.92357320318971)); 409 | #388=CARTESIAN_POINT('',(-165.612647413173,16.4055399652768,-12.8286223368049)); 410 | #389=CARTESIAN_POINT('Origin',(-164.131815553667,16.2911951440122,-13.0385324740578)); 411 | #390=CARTESIAN_POINT('',(-162.627496657638,93.2104568941032,-4.2782672143795)); 412 | #391=CARTESIAN_POINT('Origin',(-161.146664798132,93.0961120728386,-4.48817735163236)); 413 | #392=CARTESIAN_POINT('Origin',(-206.779028773404,62.9280848838198,-0.679860292478168)); 414 | #393=CARTESIAN_POINT('',(-207.047949424299,46.4625451311631,-1.79564340210262)); 415 | #394=CARTESIAN_POINT('',(-207.13184572517,46.5361813899006,-2.42759904899549)); 416 | #395=CARTESIAN_POINT('',(-205.481927020797,116.238549304854,6.12434479873531)); 417 | #396=CARTESIAN_POINT('',(-206.040705181113,91.3415189947112,3.29838494867866)); 418 | #397=CARTESIAN_POINT('',(-203.767977390702,110.590010701414,19.2605797136916)); 419 | #398=CARTESIAN_POINT('Origin',(-156.62906106663,119.486545775937,0.0171345974717158)); 420 | #399=CARTESIAN_POINT('',(-200.738371474025,43.1725215034383,-3.01652318662004)); 421 | #400=CARTESIAN_POINT('',(-199.933710342721,42.7529444484966,-3.17222211233869)); 422 | #401=CARTESIAN_POINT('',(-200.572009416503,43.085045247003,-3.04879860591324)); 423 | #402=CARTESIAN_POINT('',(-199.364043503472,42.4498743579928,-3.28315256207283)); 424 | #403=CARTESIAN_POINT('',(-161.845851448699,8.89750969775167,-12.1723129342589)); 425 | #404=CARTESIAN_POINT('Origin',(-253.501319959369,-55.913510975634,-7.55395827027722)); 426 | #405=CARTESIAN_POINT('',(-157.052948025601,114.527508066912,-0.504247172130386)); 427 | #406=CARTESIAN_POINT('',(-157.456023873435,105.644186749776,-1.48551365811686)); 428 | #407=CARTESIAN_POINT('',(-168.392916313232,114.928159779578,1.04788182791974)); 429 | #408=CARTESIAN_POINT('',(-201.674089038269,108.878495713593,4.76148900286247)); 430 | #409=CARTESIAN_POINT('Origin',(-202.66539163989,108.878495713593,4.89309125216041)); 431 | #410=CARTESIAN_POINT('',(-161.872418949091,92.9429217795479,-2.37871921115972)); 432 | #411=CARTESIAN_POINT('Origin',(-160.885197709421,92.8666918987048,-2.51865930266165)); 433 | #412=CARTESIAN_POINT('',(-164.857569704627,16.1380048507215,-10.9290743335851)); 434 | #413=CARTESIAN_POINT('Origin',(-163.870348464956,16.0617749698784,-11.0690144250871)); 435 | #414=CARTESIAN_POINT('Origin',(-202.84795405464,109.038682225742,3.51792785133657)); 436 | #415=CARTESIAN_POINT('',(-201.77774677906,108.969448563758,3.98068025018407)); 437 | #416=CARTESIAN_POINT('',(-201.608825802615,109.038682225742,3.35342503971414)); 438 | #417=CARTESIAN_POINT('Origin',(-202.76904938068,108.969448563758,4.11228249948201)); 439 | #418=CARTESIAN_POINT('Origin',(-202.273191006823,108.534365452392,7.8473683256179)); 440 | #419=CARTESIAN_POINT('',(-201.281888405202,108.534365452392,7.71576607631996)); 441 | #420=CARTESIAN_POINT('Origin',(-202.046593412227,43.8792718738058,-3.29685894730626)); 442 | #421=CARTESIAN_POINT('',(-200.448429767069,42.9180300059755,-0.832340035482355)); 443 | #422=CARTESIAN_POINT('Origin',(-178.345088254705,109.828099613022,15.4547427130444)); 444 | #423=CARTESIAN_POINT('',(-156.033051361737,105.418715678315,21.0652932896826)); 445 | #424=CARTESIAN_POINT('Origin',(-199.923082469307,42.5154604422846,1.83968508022798)); 446 | #425=CARTESIAN_POINT('',(-199.269469387014,41.941762460643,6.76347026690251)); 447 | #426=CARTESIAN_POINT('Origin',(-252.199238600606,-57.0563911714138,2.25485535326344)); 448 | #427=CARTESIAN_POINT('Origin',(-92.4334526616811,-197.288145112095,1205.79932448094)); 449 | #428=CARTESIAN_POINT('Origin',(-156.567071892495,88.8931025239333,22.6394296970013)); 450 | #429=CARTESIAN_POINT('Origin',(-163.412781059711,15.6602896651444,-7.6223578393883)); 451 | #430=CARTESIAN_POINT('',(-165.05367002116,16.3100699813218,-12.4062128703132)); 452 | #431=CARTESIAN_POINT('Origin',(-164.066448781489,16.2338401004788,-12.5461529618151)); 453 | #432=CARTESIAN_POINT('',(-164.400002299382,15.7365195459874,-7.48241774788637)); 454 | #433=CARTESIAN_POINT('Origin',(-164.099132167578,16.2625176222455,-12.7923427179364)); 455 | #434=CARTESIAN_POINT('',(-165.333158717166,16.3578049732993,-12.617417603559)); 456 | #435=CARTESIAN_POINT('Origin',(-160.427630304176,92.4652065939708,0.927997283037015)); 457 | #436=CARTESIAN_POINT('',(-162.068519265625,93.1149869101482,-3.85585774788785)); 458 | #437=CARTESIAN_POINT('Origin',(-161.081298025954,93.0387570293051,-3.99579783938977)); 459 | #438=CARTESIAN_POINT('',(-161.414851543847,92.5414364748138,1.06793737453894)); 460 | #439=CARTESIAN_POINT('Origin',(-161.113981412043,93.0674345510719,-4.2419875955111)); 461 | #440=CARTESIAN_POINT('',(-162.348007961631,93.1627219021257,-4.06706248113369)); 462 | #441=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#445, 463 | 'DISTANCE_ACCURACY_VALUE', 464 | 'Maximum model space distance between geometric entities at asserted c 465 | onnectivities'); 466 | #442=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#445, 467 | 'DISTANCE_ACCURACY_VALUE', 468 | 'Maximum model space distance between geometric entities at asserted c 469 | onnectivities'); 470 | #443=( 471 | GEOMETRIC_REPRESENTATION_CONTEXT(3) 472 | GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#441)) 473 | GLOBAL_UNIT_ASSIGNED_CONTEXT((#445,#447,#448)) 474 | REPRESENTATION_CONTEXT('','3D') 475 | ); 476 | #444=( 477 | GEOMETRIC_REPRESENTATION_CONTEXT(3) 478 | GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#442)) 479 | GLOBAL_UNIT_ASSIGNED_CONTEXT((#445,#447,#448)) 480 | REPRESENTATION_CONTEXT('','3D') 481 | ); 482 | #445=( 483 | LENGTH_UNIT() 484 | NAMED_UNIT(*) 485 | SI_UNIT(.MILLI.,.METRE.) 486 | ); 487 | #446=( 488 | LENGTH_UNIT() 489 | NAMED_UNIT(*) 490 | SI_UNIT($,.METRE.) 491 | ); 492 | #447=( 493 | NAMED_UNIT(*) 494 | PLANE_ANGLE_UNIT() 495 | SI_UNIT($,.RADIAN.) 496 | ); 497 | #448=( 498 | NAMED_UNIT(*) 499 | SI_UNIT($,.STERADIAN.) 500 | SOLID_ANGLE_UNIT() 501 | ); 502 | #449=SHAPE_DEFINITION_REPRESENTATION(#450,#451); 503 | #450=PRODUCT_DEFINITION_SHAPE('',$,#453); 504 | #451=SHAPE_REPRESENTATION('',(#270),#443); 505 | #452=PRODUCT_DEFINITION_CONTEXT('part definition',#457,'design'); 506 | #453=PRODUCT_DEFINITION('Glove80_LH_Side_Car_large', 507 | 'Glove80_LH_Side_Car_large v62',#454,#452); 508 | #454=PRODUCT_DEFINITION_FORMATION('',$,#459); 509 | #455=PRODUCT_RELATED_PRODUCT_CATEGORY('Glove80_LH_Side_Car_large v62', 510 | 'Glove80_LH_Side_Car_large v62',(#459)); 511 | #456=APPLICATION_PROTOCOL_DEFINITION('international standard', 512 | 'automotive_design',2009,#457); 513 | #457=APPLICATION_CONTEXT( 514 | 'Core Data for Automotive Mechanical Design Process'); 515 | #458=PRODUCT_CONTEXT('part definition',#457,'mechanical'); 516 | #459=PRODUCT('Glove80_LH_Side_Car_large', 517 | 'Glove80_LH_Side_Car_large v62',$,(#458)); 518 | #460=PRESENTATION_STYLE_ASSIGNMENT((#463)); 519 | #461=PRESENTATION_STYLE_ASSIGNMENT((#464)); 520 | #462=PRESENTATION_STYLE_ASSIGNMENT((#465)); 521 | #463=SURFACE_STYLE_USAGE(.BOTH.,#466); 522 | #464=SURFACE_STYLE_USAGE(.BOTH.,#467); 523 | #465=SURFACE_STYLE_USAGE(.BOTH.,#468); 524 | #466=SURFACE_SIDE_STYLE('',(#469)); 525 | #467=SURFACE_SIDE_STYLE('',(#470)); 526 | #468=SURFACE_SIDE_STYLE('',(#471)); 527 | #469=SURFACE_STYLE_FILL_AREA(#472); 528 | #470=SURFACE_STYLE_FILL_AREA(#473); 529 | #471=SURFACE_STYLE_FILL_AREA(#474); 530 | #472=FILL_AREA_STYLE('ABS (White)',(#475)); 531 | #473=FILL_AREA_STYLE('Opaque(246,246,243)',(#476)); 532 | #474=FILL_AREA_STYLE('Steel - Satin',(#477)); 533 | #475=FILL_AREA_STYLE_COLOUR('ABS (White)',#478); 534 | #476=FILL_AREA_STYLE_COLOUR('Opaque(246,246,243)',#479); 535 | #477=FILL_AREA_STYLE_COLOUR('Steel - Satin',#480); 536 | #478=COLOUR_RGB('ABS (White)',0.964705882352941,0.964705882352941,0.952941176470588); 537 | #479=COLOUR_RGB('Opaque(246,246,243)',0.964705882352941,0.964705882352941, 538 | 0.952941176470588); 539 | #480=COLOUR_RGB('Steel - Satin',0.627450980392157,0.627450980392157,0.627450980392157); 540 | ENDSEC; 541 | END-ISO-10303-21; 542 | -------------------------------------------------------------------------------- /models/Left-hand Trackpoint Glove80 sidecar bottom.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixmonkey/glove80-trackpoint/c8859c53de8751f27b67ae6a14c6c7b0361517f8/models/Left-hand Trackpoint Glove80 sidecar bottom.stl -------------------------------------------------------------------------------- /models/Left-hand Trackpoint Glove80 sidecar top.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unixmonkey/glove80-trackpoint/c8859c53de8751f27b67ae6a14c6c7b0361517f8/models/Left-hand Trackpoint Glove80 sidecar top.stl --------------------------------------------------------------------------------