Skip to content

Instantly share code, notes, and snippets.

@pschatzmann
Created March 13, 2020 11:01
Show Gist options
  • Save pschatzmann/890c3d951033f57b7e28d3ec9ac9937d to your computer and use it in GitHub Desktop.
Save pschatzmann/890c3d951033f57b7e28d3ec9ac9937d to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Parametric Control Horns in OpenSCAD\n\nFor the design of my RC Plane I needed some control horns. The design is based around a triangle. This is built by positioning 3 cylnders in the corners and hull them:\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"%clear","execution_count":75,"outputs":[{"name":"stdout","output_type":"stream","text":"SCAD code buffer has been cleared"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"\nmodule triangle(x,y,z, width){\n hull() {\n translate([x,0,0]) rotate([90,0,0]) cylinder(d=1,h=width, $fn=50);\n translate([0,y,0]) rotate([90,0,0]) cylinder(d=1,h=width, $fn=50);\n translate([0,0,z]) rotate([90,0,0]) cylinder(d=1,h=width, $fn=50);\n } \n}\n\n%display triangle(10,0,10);","execution_count":76,"outputs":[{"name":"stdout","output_type":"stream","text":"Compiling design (CSG Products normalization)...\nNormalized CSG tree has 1 elements\n"},{"data":{"image/png":"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"},"metadata":{"image/png":{"height":400,"width":600}},"output_type":"display_data","source":"kernel"}]},{"metadata":{},"cell_type":"markdown","source":"The triangle is put on a stand:"},{"metadata":{"trusted":true},"cell_type":"code","source":"module controlHorn1(holes=5, length=16.6, width=2, holeDistance=3, holeStartZ=7, socketHeight=1){\n triangle(length, 0, holes*holeDistance+holeStartZ, width);\n translate([-1,-width*1.5,0])cube([length+2,width*2,socketHeight]);\n}\n\n%display controlHorn1();","execution_count":77,"outputs":[{"name":"stdout","output_type":"stream","text":"Compiling design (CSG Products normalization)...\nNormalized CSG tree has 2 elements\n"},{"data":{"image/png":"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"},"metadata":{"image/png":{"height":400,"width":600}},"output_type":"display_data","source":"kernel"}]},{"metadata":{},"cell_type":"markdown","source":"We need some cut out some holes and optionally the right lower corner "},{"metadata":{"trusted":true},"cell_type":"code","source":"module controlHornHoles(holes=5, length=16.6, width=2, cutout=3, holeDistance=3, holeStartZ=7) {\n for (i = [holeStartZ : holeDistance : holes*holeDistance+holeStartZ-1])\n translate([0.5,0,i]) rotate([90,0,0]) cylinder(d=1,h=width*2, $fn=50);\n if (cutout>0){\n translate([-2,-10,-2]) cube([cutout+1,20,holeStartZ]);\n }\n}\n\n%display controlHornHoles();","execution_count":78,"outputs":[{"name":"stdout","output_type":"stream","text":"Compiling design (CSG Products normalization)...\nNormalized CSG tree has 6 elements\n"},{"data":{"image/png":"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"},"metadata":{"image/png":{"height":400,"width":600}},"output_type":"display_data","source":"kernel"}]},{"metadata":{},"cell_type":"markdown","source":"## Final Result\nFinally I build the difference:"},{"metadata":{"trusted":true},"cell_type":"code","source":"module controlHorn(holes=5,length=16.6, width=2, cutout=3, holeDistance=3, holeStartZ=7,socketHeight=1) {\n difference() {\n controlHorn1(holes, length, width, holeDistance,holeStartZ,socketHeight); \n controlHornHoles(holes, length, width, cutout, holeDistance, holeStartZ);\n }\n}\n\n%display controlHorn();","execution_count":79,"outputs":[{"name":"stdout","output_type":"stream","text":"Compiling design (CSG Products normalization)...\nNormalized CSG tree has 9 elements\n"},{"data":{"image/png":"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"},"metadata":{"image/png":{"height":400,"width":600}},"output_type":"display_data","source":"kernel"}]},{"metadata":{},"cell_type":"markdown","source":"## Parameters: holes\n\nThis defines the number of holes (and with this drives the hight)"},{"metadata":{"trusted":true},"cell_type":"code","source":"%%display\ntranslate([0,0,0]) controlHorn(holes=1);\ntranslate([0,10,0]) controlHorn(holes=2);\ntranslate([0,20,0]) controlHorn(holes=5);\ntranslate([0,30,0]) controlHorn(holes=20);","execution_count":80,"outputs":[{"name":"stdout","output_type":"stream","text":"Compiling design (CSG Products normalization)...\nNormalized CSG tree has 44 elements\n"},{"data":{"image/png":"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"},"metadata":{"image/png":{"height":400,"width":600}},"output_type":"display_data","source":"kernel"}]},{"metadata":{},"cell_type":"markdown","source":"## Parameters: length\n\nThis defines the length of the control horn"},{"metadata":{"trusted":true},"cell_type":"code","source":"%%display\ntranslate([0,0,0]) controlHorn(length=5);\ntranslate([0,10,0]) controlHorn(length=10);\ntranslate([0,20,0]) controlHorn(length=15);\ntranslate([0,30,0]) controlHorn(length=20);","execution_count":81,"outputs":[{"name":"stdout","output_type":"stream","text":"Compiling design (CSG Products normalization)...\nNormalized CSG tree has 36 elements\n"},{"data":{"image/png":"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"},"metadata":{"image/png":{"height":400,"width":600}},"output_type":"display_data","source":"kernel"}]},{"metadata":{},"cell_type":"markdown","source":"## Parameters: width\n\nThis defines the width of the control horn"},{"metadata":{"trusted":true},"cell_type":"code","source":"%%display\ntranslate([0,0,0]) controlHorn(width=1);\ntranslate([0,10,0]) controlHorn(width=2);\ntranslate([0,20,0]) controlHorn(width=3);\ntranslate([0,40,0]) controlHorn(width=5);","execution_count":82,"outputs":[{"name":"stdout","output_type":"stream","text":"Compiling design (CSG Products normalization)...\nNormalized CSG tree has 36 elements\n"},{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAv5klEQVR4AezVMQGAMBDAQMC/TXR8p2r4IXcKsuWd+R8Aer7tAAB2GABAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARN0BHPbq2CeKNIzjOLvZg8DcXoDkIHfNFZdc7u0uuU2murtM8SZXYN5SE3trKytK/wBKC/8HQ71RCyujidFIMCZoNKwIuAYkiMLCumYJIqvssMzDM/u+309lIjP5zRbPFwAQGAIAAIEiAAAQqJL2ACAf3k0NbDd36o2Fl9sr9ca/F+5oDwLEFbUHADmwce7w9V9+07hy6S/tTYA4AoDgta7/x73D1//eo63FpR1njfYyQBYBQNi+c/03P+y1/pMGwG8EAAE79voD3iMACFW66++s0R4KSCEACFK66w/4jQAgPK3rv95If/2dNdqLAREEAIFpX//NvZTXv40GwEsEACHp6foDviIACMbprr+zRvsDgIwRAIThdNe/jQbAMwQAAcji+gP+KTSbNe0NgKSvr/+Dua3acuM013+2Oq/9SUA2itoDAEnrU9le/xZnjfZXAdkoaQ8AxLSu/8bu6tJOfW03q+sP+KSoPQCQIXn9nTXanwdkgADAR5LXv40GwAMl7QFAxmamK+1//P9fWej6A34oNJs17Q1AZg6u/4FXK4LXf7Y6r/3FQO+K2gMAWb9OlISuf4uzRvv7gN4RAPhjZrqiPQHoJwQA/kviSO7lzhrt7wN6RAAQBBoAdCIAABAoAoBQJHEk93Jnjfb3ASdGABAQ0QYAfYcAANlw1mhPAE6GACAsSRzJvZwGoL8QAARHtAFAHyEAQJacNdoTgLQIAPxx+er9lH+ZxJHcDBqAfkEAECjRBgB9gQAA2XPWaE8AuiMACFcSR3IvpwHIPwKAoIk2AMg5AgBIcdZoTwCOQwAQuiSO5F5OA5BnBACQbQCQWwQAkOWs0Z4AfBsBAD5L4kju5TQA+UQAgH2iDQByiAAAZ8FZoz0BOIoAwGdr5s+HhV9uzA1dv7mb5u+TOJIbQwOQNwQA3mpd/xdP1p89flt//b48OlRdLGsvAvKFAMBbh6//+OTw2MTw6u9/dH0qiSO5Sc4a7V8F+IIAwFtHrv9vZvSnsaE0D4o2AMgPAgBvdV7/H0cHJy/+o7vKWaP9wwD7CAC81Xn9xydHRso/pHk2iSO5YTQAOUEA4K3zfzc6r//za7dSPi7aACAPCAB8Vhlc+XnhaQ/XX5qzRnsCMFBoNmvaG4DMzExXsn3h7bubcmtnq/OyPwdwrKL2ACDXkjjSngBIIQCAGmeN9gQEjQAAXSRxJPdyGgBFBADoTrQBgBYCAChz1mhPQKAIAJBKEkdyL6cBUEEAgLREGwCcPQIA5IKzRnsCgkMAgBNI4kju5TQAZ+xoAD6xV/++Tdx/HMeTkMSxLya2IbEiwRchAuKEBEuk+zIwnNAtVZHVtaws3fgD6MbSLV1ahq4MTChLF1Oo1IVKRFVoorRVSARKC0lkSIj4EYxDP+ASkthx7Lv7+H0/ng999VXVKvbbd9LrCaAxrQ0A2okAAAFScEzpExAjBABomW0Z+j6cBqBtCADghtYGAO1BAIDAKTim9AmIBQKAKKucPTPZOXxzOqHjw23LkP59gCcEAJGl1n/q7tLc1NPSk5c3JrqLC2nfv0JfAwqOqffpAAQAEabW/9nSK7X+5fVKLp/MDiVnB/4nfVQLaAB0IwCILLX+s/dLav1HTh9Q658Z7Dt8fMD3b7EtQ/qHAi4RAERW7fr3Z3rzF8/5/kX6GlBwTL3PCPFGABBZteufy6dS6R7pu1pDA6APAUBkffVZb+36z1+7reO7bMuQ/rlAywgAomy0d2ngYJ9afzX9vX37KpUNfd+lrwEFx9R3NuKsW/oAQK/BB3+VH3Ssdrz/X3ipBowXZ6SvQNR0SR8ARIdtGdInAC0gAICf9DWg4JjSPw5RQwCA0KAB8BcBAHxmW4b0CUBTCADgP30NKDim9I9DdHRLH4Dgef55x5t3Ha83lh+XSyuVk84d6YOwjWrAeHFG+gpEQZf0AQiY7eu/VHr77dej0jeFkm0Z0icAeyAA2OLD+pdLbzfX/7fpV38vvv3ywinpy7BNwTGlT0AUEAB89HH9V55Xtq7/wuPyi9cbLI4LtmXo+3DeCLwjAPig4fpLHxdiWhsAeEQAsHP9f//zdd31Lzim9KHYhjcCjwhA7NWs/z+L5dr1r2JxXLAtQ9+H80bgBQGIt1bWH65pbQDgGgGIsbULLta/4JjSd2Mb3ghcIwBxpdZ/faPV9a8K0eKsmCcnO4dvTie+//GN7CW2ZUg/DGAnAhBLHta/KhQNqJw98/CP1bmpp6UnL3P5VHEhLXuPvgaE4nUggAhA/Hhe/7CYurtUXf90JpHLJ4+eyi4fOyF9lC40AC4QgJjxb/2Dvzhb1z87lBw42Lc/mxj44v+CJ9mWIf1UgE8IQJysXRj75vHY2KL39a8KeAO2rv8RM6PWf+iw0Zfqkb1KXwMC/joQQN3SB6BNxq6Mbv7z9fEV9f+dnR1e1j/4Lp3fV1zYuf7GgHAAtFINGC/OSF+B0OiSPgBi3r3r8L7+anGkf0cjzqG1zGCfWv/+TK9a/1S6Z+6729JHddiWIX0C8B4BiIWxK6N1/73H9a8KeANGVh+p9c/lU2r956/Jr3+VvgYE/HUgULqlD4AkNUN3fn0hfYV25VsTi9I3tJNqwHhxRvoKhECX9AEQphrg/UPU4kj/jvDx5ckDXhCAWLh89V6D/0oDpOhrAK8DzSAAQDTRAOyJAOA92zK8fwiL44IvTx5whwDgPzRAir4G8DrQGAEAoowGoAECgE9sy/D+ISyOC748eaBVBADb0AAp+hrA68BuCAAQfTQAdREA7GRbhvcPYXFc8OXJA80jAKiDBkjR1wBeB2oRAACIKQKA+mzL8P4hBceU/h3h48uTr4vXgR0IAHYVjQZMdg7fnE7I3tAqGoD2IADQTnB0Hg4dnZt6Wnry8sZEd3EhLf0kgGAhAGjEtgzpE9xT6z8//UytfzqTyOWT2aHk8rET0kc1S9+TF+wxgoYAYA++LJHI6Kj1n71fKq9Xqut/xMzszybaf4ZrNAC6EQDsLaQNqK7/yOkDav0zg31q/fszvfmL59p8BhBYBACRden8vs31P3x8QK1/Lp9KpXuk72qBL+mtq/09RgARADTFlyVq/+g4h9Z2rP/8tdttvsEjGgB9CACaFdIGjKw+Cu/6A1oRgLi4fPWe9AliyrcmFq//Et719yW9dbW/xwgUAhBflbNnJjuHf17O/PBTpck/8WWJGJ1A4XXEGQGIKbX+U3eXni29mr1fKq9Xbkx0FxfSzfwhDRDhy2MHdiAAMbV1/XP5VC6fzA4ll4+dkL4Lu9LXAHocWwQgpmrX/4iZ2Z9NNPO3viwRoxMovI54IgAxVXf9+zO9+YvnmvlzGiDCl8cObNotAP+yV3+xTV13HMAdGseOPeePIY5ACxMq67DQ2kl4S/eARLRabOpQhJQJqVOfNu2lecjTnrK3vPTNk1q6B/pUVWpFpSgvZVUG6baHEdVIow0KIEhFmjRxwNQmMsGxHe+sd/Jc+8b2Pfec+zvn3u9HfjDB9v2dc+/5fsHlfv+L55rTn/2lJ/gc9WjQirwOQB97EArAuy6cKjen/1fvftrh14UkEUJHKbgdXoMCUMCTX/sevepb+9XDz15x+MqJni0j/UMRP0v/7h5rzwM6gISQbQdguqkH8DyW/rtV37O9hxulbK6y/MHpzKPybyb/5dj1A+kvSj5f/tsX6IJ1wMJiQcYvsz6em1+mXh845AD1AN723fTfypZZ+n+dKf3xDz+hnqxTLIns/wgLHep1AHgRCoDOt+lfypYb0n89U77zZZF6OAvQASSEbLsp3AvvQAEQ2T5npH/uSaU+/Rf/vWOkv16HUF4YQQvoALAJBUCBpX9xzzT9C8/2ap/y2iH02noByKEAHNdZ+hs0ysSx0bD9HxG+3srPX7rZdXj2VuCdj3dp9kUyIdtuSqNnD7ihAJxlJf21o1oHBH/506XrWytLjzcfbEeHQ+ndGOXuSIMOAG4oAAdxpT8OIbfFT9ZY+mc3n7L0jw73DgwFHz7/AvVQAApBATjFLP0/+3yndfobNOqAsdGw/R8Rtd5vtnZY+kcGAiz9j50c7D8UPHIs0n/+ZeI9kkDItpvS6NkDDigAJ6SmE6k3N1KpTEP6r22U2qa/dtTpgDNDOSP9B2O9LP37BgOhiL8vGqTeISnQAcABBSAdS//a+/fncn/9+zZH+uMQ8jHS/wfxAZb+sZEwS39/AM88wP/gMBBY3yxZSn+DRh0wNhq2/yNC1pv8/nYt/YMhP0v/lYvXqLdHFiHbbkqjZw8sQQHQ+NlLvc5fdGom7di11OmAoft3A+kv8rPXM+//08Xpb0AHgCUoADIcZxWHEAAEQgFoRqMO4Gg4rderCCHbbgr3wn1QAJT4zqpG5xAdQAIdAB1CARCTd1YBAFpDAdDj6IDxZFzIpXPxEze7Ds/eCly6WvnwRrciq5O3Xu8Qsu2mcC/cBAWgK/vnkKX/g9v5laXH2c2npWIlOtyb3o3JGBUdQAIdAG2hAJQg76y2UJ/+x188OBjrHRgKPnz+BdcsEABaQwGogiMix5NxO1dsTv/+Q8EjxyLUOyFrvR4kr3dxL9wBBaA3O+fw/MliQ/r3DQZCEf/wb0/LGFVIGLVd79RMmr1kzK8peR0ALtBNPQD8HzurC4sFJ68YHQ7Vp39sJBwM+VkH6L7A+g5ITSccuKIHsTKem1+mngJs6apW16lncDmrAcQRkZ2fw+Zh7vUfbUj/L/9yTd5uCCkA7tzxbBnI6110gNZQAE6wlDt8Z7XDc7jfJP3nX3Yg/VXoAM+WgaQOQAFoDQXgBKtZI68DFEk9+2EkNncU2RapJBWADx2gswPUA4CJsdEw9QiqG0/GBf7a1EyavajXJJe8h0rsvQAnoQAUxXFcNTqHQsJIo/UqQl4HgKZQAK6iUSaiA9wEN0JTKAB1CYlIgHryHip0gI5QAErjOK4anUMhYaTRegFUgwJwIY0yER3gPCF7bgo3QjsoANWJPa5TM2nqBQE9dAAYUAAa4DiuGp1DIWGk0XoB1IEC0AM6wE3rVYGQPTeFG6ERFICbaXQU5eUR7AcdACgASje7Dnf+YURkW8gdAEtQADRy8RMs/VeWHl+6Wnnn490Ov8XRARplopCG02i9KhCy56ZwI7SAAnDC1Ey6/p8s/R/czn+ztZPdfFoqVqLDofm1iLyra3QU5eUR7Acd4GUoAAJG+t/7PGukf3S4dzDWe6//aCffRUS2hdwB6BAKgEBz+g8MBUd+2O9/5VQnX+foAI0yUUjDabReFQjZc1O4EYpDARA4M5RrTv/vDfSEIn55F93vKObiJ252HZ69Fbh0tfLhjW7qvfkveXkE+0EHeBMKgIZp+vdFgx1+XdRxZen/4HZ+ZelxdvNpZCDARkrvxqj3RgzkDkBbKAAaF06Vm9PfH7BwOzg6oDkTG9LfGKmY+DH19ohpOHSAJUL23BRuhLJQAGQSPVv9h4L16b9y8ZqlX7DfAUb6l4qVWvobI1Hvjdw8MpWaTlCvmJ7Dew7kUACUhu7fLf3tRn72+lfvfmo1/bktLBZq78+fLLL0P/7iwVr6HzkWYYU08rsz1HsjRkPhARXcCDWhAPQ2Nhq2+QvR4VBD+vdFg/6AEg+G/dX5ED0WCdlzU+xGlO6cpV4ffIcS5xzs4DixC4uF2vsLp8pG+vcNBlj6B0N+lv4rF69RLwsdQEZeBzCsA2ov6oUCCsCr6jvgeH516P7d2EiYpT/rAHXSH1xmYnK1/p8oA3Jd1eo69QyekJpOSP39+kDv0NhomGw75K+u2dz8cov/lX2DtCNkz0199NbR1h/w/+gT6tV7xQHqAUAMjjSXd8JVWF2z8WSceh06EbLnfEp3ztZe1NvgcigAh0zNpKlHMOG1DgAVTEyudv5hNIFUHiiA7XO+R6964QFCRLY1noxTj6ATeU+UpQ4w1JrAC2fZMW4vAJb+xb1Stpx7Urk9P/aPD05TDyQXx4ldWCxQT+1oHqEDLJHXAXagA0RxdQHUpX82V9nKljOPyn/+U4J6LLnQAXzeeP2g8aJeoldMTK5yf/fylTz1+C7h3gIwS/+vM6X1TPm1cyeph1OORh1g33gy3vCX0p2ztfe1JkAZGOSVrp0OACFcWgD7p//aRqnwbK85AtxE3olVgZDV1T8A9enfAGVgUOqJunwlTz2Ce7ixANqlP/V8TuA4sQuLBeqpCfKoRfo3QBnIMDG5aunzSH+x3FYAqelE6s2NVCrz9nvZ1uk/noxTD6scjTrAPjsPgAebQGDpNrDaASBQV7W6Tj2DMCz9TVbY5WtO/5q5+WXa8aTiCHR551yF1TX76K2jouZ5+70s5XY4QsieN+vwLly+kq+9f23qOvVmuMEB6gGkq1Z9+6U/M56MUw8oEUeaSzrhiqxOqjdeP1h7Uc+imYnJ1bafQfrL0K4A/sNe+fw2cW1xfBz8K4YktiGOKhUqBA9hIdpFLLXdtSredGMhISFFeqvXTfVY+A/IMn9AFqS8RbvKCgUJZdMs0iYsE8lZtAIFVZAoKZZ4iUzihwwvCdH0UqPLYE9uxnPvnXN/nI8iNMiJ53vOnfl+jOCo9rcBsx3AT5DqCYGpMlBNuggnVgiA/dRWykWoYLvFy7/FPrr/KPXjr4dQGbRGSB9JcgDFMBmAOGBmrkmvx6pL0DswBysE4CjpANL+G4+baw9fNJ6/Otg7vLsSn382oMgbu7jcin4hGvVRaEwygUDu3T7H+BTbXx62CMBRrylI++9svW63f34kkx/pP38lp87sGjmAnxu3NiO+IzWBjjIQ+yqx2x+RikUCYFMpF2XfojpR8/6XtP+T3xve9h86k94rXYXexHt0cYCQPoreARQdZSDWAQxm5pr0eqy6BD23adglAPZTG4EDvHjbP1foJ+0/mEudyiaHrn+h9RsLgjHT6SgDHu7dPsf4FNtfNnYJwFHJAd99c4K2/yfFbLv9MwOJwXxanZZcXG5FthBwB9y4tQk9xAcobgL+hbPbH4mAOHQAq7k5+qa2358dTnvbP5FSy8rEAfyvui4QB9Bh1Wleb5Kp6QZ0nIiYmWvS67HqEnQcM4m5bh06g0gmx0tBfo2UGuPT2fnVKOPtla5623/thwWpK2LP7otGAggxXZB51ZGBFxVkEHrh926fY3yK7R8NlgrAAXIAI97Zf331508PZO4GHSBmWJRBByEWzm5/BwUQFfYKwIFwQE/xpGKwA/gFEHBYNU3gRC4D4QLA9o+MOHQARBvIe66FA0hIfgcEGdbbs0rJgIaJxgS9Lpzd/l6w/WUTc906dAaRTI6Xevp99oM7O78KG08qIVpSCwGEnk7UsErJgCJbBgEXfmz7z8w16TUKQDa2C8CJ1gFKCcBsB/ALgH9YNU3gyJGBEAFg+0dMHDoAPOQlF1IWlkB2pYUDhBwr57DenlVKBt4womQQZOHs9keiJ+a6degMIpkcL4X4K/aDOzu/ChtPKiFaUgsBhJ6ug/bpiz04pWRAEWICxsKPbf+ZuSa9HqsuQe/DClAA74jGAQoKwGwH8AvA6Tp9lAGD0ALA9gfBNAE4ajtATQGgA47lqNMXeKBqmsDpXQa+C2e3v4MCAAIF8J4IBKCsAwwWgBAHHHv6Yo9Vdxl0LBzbX1lQAB8QgQPUFIDZDuAXgNPL6dsgA7YJehIAtj8gKIBOZDtAWQGgA44lxOkLPG41TeAcIQO6cHb7OygAUFAAPjDKAgXQjT0O4Dl9seeuhQzIwrH9FQcF4AO7KTgdoLIAwrWkLgIAdwDFEhncuLXJFgC2PzgoAH/kOUBxAZjtAH4BOIIcQLFEBr6gAMBBARyJJAcYKQDHJgeIFQDFNhNg+6tAHDpARGwUzu9u/3/t4YvrV/ags6gOqXL+llQW/ukq5aIMB1QnavSaXwZT0w16raAMsP0VIea6degMgul+eXaLlzceN0n7N56/Otg7zI9kbo6+CfJV7KYI1wId8Q6//Ozh0tbO1usnvzdItu+/TQKvL9jsvpBuhU4ta7RuZDjAF34ZeFFEBigARTBQAM6H70x3++dH+nOF/lJyK8hXCXdAx/u8UTi//min3f7tbOev5C42N6FXiA44hsgE4MUMGWD7q0MfdADp+LZ/dji9feFSkD9nN1qlXOSMR9p/Z+u1N9vQmTT0zsyHX1T8Rx+C6kSt/SPk26amG+2fKEfA9leKOHQA6fi2PynZwVwKOtpbSPs/33hJs31SzJJgiWujB7+sQEd725KLy62e/oT8Pn+36gJxwOz8KsitvQ6YHC9xfpvXAf/+52mQiRAQYq5bh84gno5X4s7P+93tXzh7snl/KeAXsnuwpxZgZzv7j6FT2WRmIBE8m2x6dYDztzmgU8sarRsoB/jCLwMvwmUwM9ek12NVVZ5wm7FCAHdX4t3tn84kSM+u/2ch4HfKc8D8s4GO9h/Mp//86QH0Frla0h4HKCUAioImwPZXkDh0gCi4Ofqmtv++/UnJkvZPpk8Eb3/n70bjLwtfyh+/fDKUI9lo+ydSfdA7i2JwM6iUiwo6oDpRo9f8MpiabtBrITJAFCHmunXoDOI56onfK10lJZsfyZD2jyf71u8s9PS17B4M3gK+8RLXRkn7EzORf3syUzSEcAAxB3RqWaN1o6ADfOGXgZfgMpiZa9LrseoS9BqQd9glAH6EOEBePKmgAxjoIgCK8IeQIQNv+zsoAJWIQwfQDNJojLKolIvaFQEiBO2OvjpRo9dCZDA13WhfMEzgYPsrRsx169AZxCPkgT4KhgAIQVpAajypsGf3hSgTOrWs0brRywG+iH04iQxm5pr0v9j+qtEHHUAK1YmavC9nN1qlXISeXiIh2lxIsao5mpGQd6f9I+TbpqYb0AMhLMwUgGxsdoDB8DvApKOnJhAlg7HqEvRMSCcogJDwl4WmhBh8cbkFnTo6THIAhV8G2P5qggKQgpEtQDHYAdZ6PTicJkCUIua6degMUpgcL0VwF3avzc6vAmYDHPwodKlXfl0ddfSmwnikC2fiY9Ul6ICIP33QAfSG3WiVchE6IMzgiMFH70t1okZ/Oj7C9leZOHQA7SFVuLjcgk6hx+Dk97Uwh7VnKgSvAybHS9BxEBZ90AEMp1IuQkeQSIg216VY+UVl9tEHxCsDREFQAAJgl0V3EeBbYQnoAERxUABi6NUBxsAe3JfF5RZ0almjIYheGCuA6kQNOoItoAMYGOx+xACMFUD0sMsCi8Ba8OgRZUEBiMRaB7AH92VxuQWdWtZoCKILKADBhOuL3eLl32If3X+U+vHXw7srcegh0AGCHWCw+xGtsUsAh19+tlE4/2A7CxXAtwhI+288bq49fNF4/mogm8qP9Nf2C5BrCovBDuAHHYAoiEUCIO3/7On/1h/t7Gy9vvPz/t2VuKQbsXuwuwho+x/sHZL2zxX6s8Pp7QuXoBeGvCeE27pBByCqYZEAaPuTqs2PZEjV1vYLku7VkwPakUj7X/z0dLv9h86kB3OpoetfQO8siqJcXG5Bp47OAQiiFBYJgLb/QDZF2r9dtdsXLkm6XfC++Gp4l7Q/cZK3/QtnT6YzCeidoQMEO6DD/QgCi0UC6G7/dtUmro1GH6aj8r7/Nnnhar6j/TMDWgoAYYMOQNTBZAFUJ2re/5L2P9g77Gj/U9lkfiQjKcDXn59kfNrhgFJyi0Z61/4x6A3KGTzINpQlxGgIoiwmC6CD7745cfHT0x3tT3o2mT4h76Y9OWD46R9tIb2NFHPW7yxA7wwdIMUBlXIReggEeUscOkCklD9++WQo523/wXw6kVLIgge/rPwXOgMSAcQBs/Or0CkQ21Go+6LhYnNz+Okf3vZf+2FB6h2//vwk49PF5Rb0SmAG90WXbYQYDUEUJOa6degMEpkcL0FHeAe72gwulBCdrss2+HU1O78KPQRiNX3QAWxBl1JTYXD+YtWFSrkIHQGxGhSAEthTeSZhrdQRY0ABRAe7Lwx2QIii1GUb/A6olIvQQyD2ElQAf7FXP61tHHEYxyVXjmW1jm3Ff0igKiahjQhpD9UhvQVaUehFFHwS5NReSnzQC/DRL0AHm/SQngyFYEPIJaa4qXqUwD4kJCQtbkLcCIKL4uigBMeo2y0blo0kj3dnd+a3M/N8MEWJXWVmbT9fiAQa4J/GT6MHGgBUEADZOKYQ4gzfUFCX5gGoLG1RHyGYWqNDfQRROIZSlacRvgGlYp76EmAizQMQT+y9UGX10IBooQEgHwJAg2MK9aDrxXW9F+gNAYijWqNDfYQYUeVphG9AqZinvgSYBQEgw94LVVZPzlCq8jTQAFALAkAJDfBP46cBQAUBIMYxhRBn4b+hpWKe+hJgCgQg1mqNDvURROEYSlWeBhoAqkAA6LH3QpXVQwOihQaABAhALBjbAF1xtA1APv0DUFnaoj6CL2ZOBsetVclh+G9oqZinvgRoTv8A9HuZP383efrmg5Hrd7rXbr+hPo4vqqweB40bEB4aAEIZFwB7/Z8+au/vvW49f3V40M3OZjafjVEf6i32FGq8ero2gONeADIZFwBn/XfutZz1z86OTs6M7oznqM/1FiZDM+G/oaVinvoSoC3jAtC//hPT6fGp9PBXn1Mf7Xi1Rof6CKJwDKXGT6MHGgCCGBeAy9Mv+9f/zNxYZmyY+mhvsadQ49XTtQEc9wKQw7gA2H745oR3/U9Ojtjrn87EJQAJgxugq/ANKBXz1JcADZkYAJt3/Wc+fN9ef7sB1Id6R/jJUBHHrc3JIRoAkTM0AIUTe+fau++sf5L6TEFovHq6NsDMokPMJS2rSX0G4aqLBeojcGJPm8abEnTTVXkU4Vu1vpwb/uQX6nuAJowIQAINUA3HUKryKCJpgPMCJYCQhqgPAMdQZdfIbx1+WJVz+MfX7gf1WUBJCIDaNF49XRsQvujzC7v9f4kSAAcEQAHsyVBi9cBLUAMcbgkQAzgWAqCG8JOhIo5bI4deKAGwIQA60Hj1dG1A+KLPL+z6/2K3BIgBeCEAymBPhhKrB16SG+D6uXqJ+uoQFwiASsxsAMdQ2o/i6pVT9gf12YXjawCAAwFQDMcaaoDj1s4yOhmIbQnkfzfXNtrUl4YYSVpWk/oMklQXC9RHiEat0WF8VuNCsC/eb305N/DvV1Zb1FcJdS//N+3hrn+5Uqe+NMTCEPUBIDD2xIdfE23ML+wO/PurV045H9QHFH5TADYEQEnsBuiK49bsZXRLQBsDOd/NtY024R0hnhAADdUaHeojiBJ5A1y0JQjZgPXlHPsLsP4wEAKgKvZkaNwA0ahKwN2AY9e/R7lSl3w1iC0EQGFmNoBjKOcXdjn+IbcE8mMQrbWNNvURIKaMDsDL/Pm7ydM3H4xQH4QfxxpqQFoDXHJKwHGv9eVcoK8vV+pCrwBqMTcA9vo/fdR+fP9F6/mra7ff3NhOUZ8oerVGh/oIolCVT3QJAt3Lz/qvbbTd11h/6GFuAOz13997ba//4UE3O5s5ezG7M56jPhQP9mRo3ICg5hd2I3w3twTiYhCed/0B+pkbAHv9d+61nPXPzo5OTKfHp9IHhYvU5+JhZgPYtx4o2ga4oi2Bz3utL+cCvW25Uhdxd1Ba0rKa1GeQp7pYcF9fv9N1139yZvSj/MTJyZEPJk4c/rpNfUxOjKHn2EpVBM2b/SiiWmq2ldWWuHv5Wf+1jbb7GusPA6WoD0Dm+y/fu7E94qz/xHTaWf/M2PDJ7y7//dPv1KeLmL0mGjcgkJ5hFRcD951DloCPd/0BjpK0rCb1GeSpLha8f9x8Nuas//hU+szc2P/rn02nhoee/Pgb9Uk59axbD10bwL71QP2PQlwJXEFLcNS91pdzx/6/3gCUK3XRVwNFGR0Axz9nP3bWP50Ztv+r7vo7GGuoawCiaoBDQgkSvmPQfy+sP0QoRX0AetN//Zn59JKz/t3uv9THEcheE40bEBXvNIuLgfvOPkvgn3f9AdiSltWkPoM81cUC9RFksIee8VldG8C+9UD+H4W4EriOKoH3XuvLuWPfxxuAcqUu+tigNARAT2iAT0EfhYQSJPpi4NwL6w+RS1EfAISwd41jDVUn4dbeaRYXA/ede0rA5l1/AD+SltWkPoM81cUC9RHkYU+hvZXUByS49UDhH4W4EgTiDUC5Uqc+DigAAdAZGuBTVI+CsARYf+BgVgASaICHrgHgaMCtzYfu66h+QmTGwLv+CQQAfEMA9GdgA4IGIPFuAxwKlcAbAKw/+IcA6I+9hmiAq78BjpiXAOsP3BAAI6ABPh3VAFfcYuBd/wQCAAGlqA8AMtgTz7GGqhNx68rSlvMiZAlWVlvOi6hKkMD6Q3AIACTslbS3kvoUsVAq5m9tPvTzlXEowdpGW/YDAr0kLatJfQapQv66Ks0eesZndW0A+9YD+WxAv6h+uvzEoGf9y5V6JP80GAUBMAsa4Ad3AFwSSuANANYf+KSoDwBS2RMfdA0NVCrmQzagsrTlvAhZgpXVlvOipwTe9QfglrSsJvUZpAr5C6kBdgDsQlAfkODWA4VsQI8If/BmplLeP5Yr9QjPCUYxLgCJvl/F7hef3a/vPb7/4tsLB9RHkwQN8CPaAHiFjIE3AFh/CGOI+gDEnPXf33vdev7q2u03N7ZT1CeSQdeJj1apmBf0zpWlLeeD+opguqRlNanPIFt1seC+fjoz9+TB/s691uFBNzubyc6Ozl2YPNfepT6jDLVG56hP6VoIxpWPcmvzoYSDeX8mjzUzlXJelCt1CWcDjQUNwH/s1bFrG1ccwPGTUWI3bhKnTjwU6tKhBO0Cd6wH09EUOgn8F7iD/gCN/gM02BDo6DGGoikUQZxRBm0ZRAslENDSYqgHLS3p9cILrxdZerp7706/907fD8Kcc5b1e1L8+1ZB+o/t1Z9b6e3/aOeTLxtbDx6trw9fS49ZOvM2pAHachqgLYyBCgDbH+7WpAcQ9u2Tv9Lbf+vJRrL9P926+/D7b6RHK515xVssyiD4H7b2yVA9pAdB9a16ABLp7f/F1w+T7X/v/p0Hn21Iz7UM/m9DHxweNERe11CCVnsg/KagEmpxPJaeYdm6nebUvwz/3km2/8PHG59/dT/Z/hv37iRf3zx7KT3pMlxeTQx3q1oI86ln6vVH0lO/l/zvnZkEwMKa9ABeaN79I9n+Dx6t6+3/7t2/0kMtiXnFWyzKIIQbNrY/CkQAPnjy+2/rw9c3Pw+S7f/m2cu3P72Snmh5VrMBeR0eNKRHAApWi+Ox9AwCup2m9AjeMSx6cyHCZdG2Xn8kPTVQmDXpARAAi0UZhKqGDciIAOAD8zakAcrhQUN6ZKAwBAD/M2/D46Nt9ZAeUxgNQGXU4ngsPYOAbqcpPYK/Lq8m825dnO6mvz07v5YetvQjz9Prj6SnBlytSQ+AkPzw49v0t8dH2+ohPZer/b1N6REAAbU4HkvPIKDbaUqP4LXLq4nh7sXp7rxbZ+fX0rOXcuSZev2R9NSAkzXpAeCj/b1NuyceH22rh/QJlnHkw4OG9NSAk1ocj6VnkNHtNKVH8Nrl1cRw9+J0N+PvOTu/lj5KYae+rdcfSY8M2FvdAKQRg5mKaoDmfwzyBiCiAQgZAfgIJZhiWIgWAdB8LgENwOogALNRAq2kBih+lsCiAeqtuPP0F+nZgRwIwAKUwLwN9/c2j4+23V/FtxLkbcBUCykBgkAAslrlEixsgLqoUgnyBiC61QCNGMBbBCC31SyBYSHqAGiFlCCSjkGBDVAoAXxDACytYAZyNUArJAZSJcjbAHMANEoATxAASwRgiqEBSoglyBuAKHMDFEoAWQTAHg2YsrABSlgloAGosLr0AAhJsuItFuIUvbtdSqCfW3YJCjnyPM9f3LSeljo+YFKL47H0DKHqdprSIwgwb8NkXVr8TpcSaKWWIG8DLk53F/5Msv2Tr632oLyxAbO69AAITLLiDdswuWXRAL27XUqQfm6pMQAqoxbHY+kZQtXtNKVHEGNoQK8/KuSdcYmBVmAJDEeecnG6u/Bnnr+4URet9qCoCYG8CIC9VQ5AtKgB6qJiJcjSgFzbPyIAEFWXHgAVdHjQUA1onwzVv7iUQO9ulxLo5xZSAqAaanE8lp4hVC5LrRouryaGu6oBUwp501xKoNmVwHzki9Pdhb/h+Yub9Let9sD9LIAdAmCPAETGhTgzAJo/JYhyxmDekbNs/+jjALD9IYsA2CMAinUDlOBK4BIAtj+8QgDsEQDFEIAoWwOUgEpw+8h5t39EAOABAuCEBihFNUDzJwbzSpA+cpbtH30cALY/fEAAnBAAzdAAiwBoPpdAHzlLANLbPyIA8AMBcEIANEMAIrcGKB6WQB2Z7Y9wEQAnBCCt7AYo/pQgu3QA2P7wR116AFTH/t6muQGFaJ8M1YVLCc7Or9XFEkqQ3v6AV2pxPJaeIWAuO6iqDA3o9UdlvGIhn0JJJZja/q32oIxXAewQACcE4DZDAKLSGqAU9XEUGIN0ANj+8A0BcEIAZhJsgFbIR+NYgvT2jwgA/EMAnBCAeQwNWE4ANKkSsP3hPwLghADMYwhAtPQGKEsuQToAbH/4iQA4IQAGHjZAWUIJ0ts/IgDwFQFwQgDMDA0QDIBWUgnY/ggFAXBFA8w8b4BSbAnSAWD7w2d16QGwug4PGp40oH0yVBcuJTg7v06+7jzmbwrBqMXxWHqGsLmsjBVxeTUx3PWkAVOsP9Z0AFrtgfQ5AJO69ACovv29TXMDPNQ+Gepruxiw/eG/NekBsBKSBsy7dXjQkJ5ugSQG6iE9CFCwuvQAwPsG9Poj6SkW0w3odprmn2y1B9LDAovV4ngsPUPA/vn1O319dn4tPY7vLq8mhrtBNGDK7RLsPK6z/REKAuAkHQCNEhgYGhBiADRdAgKAgBAAezO3fxoluM0QgCjwBgDBIQD2up1m8vX4aHvhT1KCNBoAeIIA2FMB0ChBdoYGEABgaQiAvakAaJQgCxoAiCMA9uYFQKMEBoYARDQAWAoCYG9hADRKMBMNAGQRAHvZA6BkyUC0YiUwNIAAAGUjAPbyBkDLUoLVyQANAKQQACfWDVAoQWQMQEQDgDIRgGJQAheGBhAAoDy2Afivvfq5Ud2KAjjsiUgHo1lmm56owkVQQrp42Y/SAQvamAKmAoLkJwvBcDH+d+/1+b6FdRALDl6cHw8owTgaAOsTgKUowUsSAWg0AJYhAItTgoE0AFYmAOtRgqcSDRAAmJ0AZKAECRoAqxGAnJTgXiIAjQbArASgCEpwTQNgHQJQFiXoJBogADAXASiUEmgALE0AShe2BIkANBoAcxCAOkzMQFNnCRINEACYTgAqE60EGgDLEYBaBSlBIgCNBsA0AlC9zZdAA2AhArAdGy5BogECAKMJwAZtsgQaALMTgC3bUgkSAWg0AEYRgBC2UQINgHkJQCy1lyDRAAGAVwlAUPWWQANgLgIQXXUlSATg4t9//ro8//z7v7l+DjZMAPitohIkGtAFoKcEkCAA3KqiBMMb0FECuCcAPFRyCRIBaB40oKME0BMAniuzBKMb0FECEABeUFoJEg14GoCODBCZADBGOSX4sQEDr/+vz+99e1zkBUENBIBJspfgPgDDr//lKQBEJgDMY2IJhmSgeVCCmwYIAAwkAMwsSwn6Brx0/RsBIDYBYBETM9C8XoJLA169/o0AENsu9wJsU3s4dcPoEvSXPV2C/ttLAHL/aajM2/n8lXsHQhhdgl66BAP9+vy+/rhvjxnfCeQlAKwtYwlcf7gmAGSzfgkEAK4JAPmtUwLXH24IAAVZrgSuP9wTAEo0ewkEAO4JAEWbpQSuP/xIAKjDlBJ8vO/62fWH3i73AjBIezh1w5QSANfezuev3DvAGMNL8PG+64Z9e8y9NRREAKje0xJ0AXD94cYu9wIwVXs4dcPTEgDX3s7nr9w7wMxuSvDxvtu3x9xLQXEEgC3rStAeTrkXgRIJAEBQf+ReAIA8BAAgKAEACEoAAIISAICgBAAgKAEACEoAAIISAICgBAAgKAEACEoAAIISAICgBAAgKAEACEoAAIISAICg/gfc3PS4wRlAOwAAAABJRU5ErkJggg=="},"metadata":{"image/png":{"height":400,"width":600}},"output_type":"display_data","source":"kernel"}]},{"metadata":{},"cell_type":"markdown","source":"## Parameters: cutout\n\nThis defines the size of the cutout"},{"metadata":{"trusted":true},"cell_type":"code","source":"%%display\ntranslate([0,0,0]) controlHorn(cutout=1);\ntranslate([20,0,0]) controlHorn(cutout=2);\ntranslate([40,0,0]) controlHorn(cutout=3);\ntranslate([60,0,0]) controlHorn(cutout=5);\ntranslate([80,0,0]) controlHorn(cutout=10);","execution_count":83,"outputs":[{"name":"stdout","output_type":"stream","text":"Compiling design (CSG Products normalization)...\nNormalized CSG tree has 45 elements\n"},{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAgPElEQVR4AezVMQGAMBDAQMC/TXR8p2r4IXcKsuWd+R8Aer7tAAB2GABAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARBkAQJQBAEQZAECUAQBEGQBAlAEARN0BHPbqYAAAAICBkL/1/lO4kgiAGAEARAkAIEoAAFECAIgSAECUAACiBAAQJQCAKAEARAkAIEoAAFECAIgSAECUAACiBAAQJQCAKAEARAkAIEoAAFECAIgSAECUAACiBAAQJQCAKAEARAkAIEoAAFECAIgSAECUAACiBAAQJQCAKAEARAkAIEoAAFECAIgSAECUAACiBAAQJQCAKAEARAkAIEoAAFECAIgSAECUAACiBAAQJQCAKAEARAkAIEoAAFECAIgSAECUAACiBAAQJQCAKAEARAkAIEoAAFECAIgSAECUAACiBAAQ9QGMvfppaSMPAzgeXWGRYcF10cVlYZH1sMOuuizuDltoy9DOoSjMtS+gL8AX4NEX4MvoTSxeSkSlXipJtf8kKogI6sF4qJWQxNam01pFopPGZOzz+/P9HEQmmfA8l+cLALAEAQAASxEAALAUAQAASxEAALAUAQAASxEAALAUAQAASxEAALAUAQAASxEAALAUAQAASxEAALAUAQAASxEAALAUAQAASxEAALAUAQAASxEAALAUAQAASxEAALAUAQAASxEAALAUAQAASxEAALCUegE4GMln7j55eFN6DgAwnGIB2B/Or5fmFwvTs4dh4EpPAwAma5Me4Jzte6u50qu1UuZlcW2zLD0NABiupVLZkZ7hs9PrP/n4baH04ezxVDonPRkAmEk+ABNjQ9Hff/5qX14pLj4vnr/+J2gAAFyHVukBvlh6ffn1j4SBKz0dABhIlQBE/htslx4BACyiUAAivudc+jwMXOnRAMA0agWgBhoAAMlSLgC+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"},"metadata":{"image/png":{"height":400,"width":600}},"output_type":"display_data","source":"kernel"}]},{"metadata":{},"cell_type":"markdown","source":"## Parameters: holeDistance\n\nThis defines the distance between the holes"},{"metadata":{"trusted":true},"cell_type":"code","source":"%%display\ntranslate([0,0,0]) controlHorn(holeDistance=1.5);\ntranslate([0,10,0]) controlHorn(holeDistance=2);\ntranslate([0,20,0]) controlHorn(holeDistance=3);\n","execution_count":84,"outputs":[{"name":"stdout","output_type":"stream","text":"Compiling design (CSG Products normalization)...\nNormalized CSG tree has 27 elements\n"},{"data":{"image/png":"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"},"metadata":{"image/png":{"height":400,"width":600}},"output_type":"display_data","source":"kernel"}]},{"metadata":{},"cell_type":"markdown","source":"## Parameters: holeStartZ\n\nThis defines the lower z position where the first hole will start"},{"metadata":{"trusted":true},"cell_type":"code","source":"%%display\ntranslate([0,0,0]) controlHorn(holeStartZ=5);\ntranslate([20,0,0]) controlHorn(holeStartZ=6);\ntranslate([40,0,0]) controlHorn(holeStartZ=7);\ntranslate([60,0,0]) controlHorn(holeStartZ=8);\ntranslate([80,0,0]) controlHorn(holeStartZ=15);","execution_count":85,"outputs":[{"name":"stdout","output_type":"stream","text":"Compiling design (CSG Products normalization)...\nNormalized CSG tree has 45 elements\n"},{"data":{"image/png":"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"},"metadata":{"image/png":{"height":400,"width":600}},"output_type":"display_data","source":"kernel"}]},{"metadata":{},"cell_type":"markdown","source":"## Parameters: socketHeight\n\nThis defines the height of the socket"},{"metadata":{"trusted":true},"cell_type":"code","source":"%%display\ntranslate([0,0,0]) controlHorn(socketHeight=0);\ntranslate([0,10,0]) controlHorn(socketHeight=1);\ntranslate([0,20,0]) controlHorn(socketHeight=2);","execution_count":88,"outputs":[{"name":"stdout","output_type":"stream","text":"Compiling design (CSG Products normalization)...\nNormalized CSG tree has 26 elements\n"},{"data":{"image/png":"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"},"metadata":{"image/png":{"height":400,"width":600}},"output_type":"display_data","source":"kernel"}]},{"metadata":{"trusted":true},"cell_type":"markdown","source":"## The Complete Source Code"},{"metadata":{"trusted":true},"cell_type":"code","source":"%displayCode","execution_count":89,"outputs":[{"output_type":"stream","text":"\nmodule triangle(x,y,z, width){\n hull() {\n translate([x,0,0]) rotate([90,0,0]) cylinder(d=1,h=width, $fn=50);\n translate([0,y,0]) rotate([90,0,0]) cylinder(d=1,h=width, $fn=50);\n translate([0,0,z]) rotate([90,0,0]) cylinder(d=1,h=width, $fn=50);\n } \n}\n\nmodule controlHorn1(holes=5, length=16.6, width=2, holeDistance=3, holeStartZ=7, socketHeight=1){\n triangle(length, 0, holes*holeDistance+holeStartZ, width);\n translate([-1,-width*1.5,0])cube([length+2,width*2,socketHeight]);\n}\n\nmodule controlHornHoles(holes=5, length=16.6, width=2, cutout=3, holeDistance=3, holeStartZ=7) {\n for (i = [holeStartZ : holeDistance : holes*holeDistance+holeStartZ-1])\n translate([0.5,0,i]) rotate([90,0,0]) cylinder(d=1,h=width*2, $fn=50);\n if (cutout>0){\n translate([-2,-10,-2]) cube([cutout+1,20,holeStartZ]);\n }\n}\n\nmodule controlHorn(holes=5,length=16.6, width=2, cutout=3, holeDistance=3, holeStartZ=7,socketHeight=1) {\n difference() {\n controlHorn1(holes, length, width, holeDistance,holeStartZ,socketHeight); \n controlHornHoles(holes, length, width, cutout, holeDistance, holeStartZ);\n }\n}\n\n\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"name":"openscad","display_name":"OpenSCAD","language":"application-xopenscad"},"language_info":{"name":"OpenSCAD","mimetype":"application/x-openscad","extension":".scad"},"toc-autonumbering":false,"toc":{"nav_menu":{},"number_sections":false,"sideBar":false,"skip_h1_title":false,"base_numbering":1,"title_cell":"Table of Contents","title_sidebar":"Contents","toc_cell":false,"toc_position":{},"toc_section_display":false,"toc_window_display":false}},"nbformat":4,"nbformat_minor":4}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment