From 371dfdb9771903c994628dc6c350afbfc9dfc83f Mon Sep 17 00:00:00 2001 From: 42loop <ulf.freyhoff@gmx.net> Date: Sun, 23 Jun 2019 12:48:29 +0200 Subject: [PATCH] added blower function, inverted read_data result to reflect sensor function active low --- android/.idea/vcs.xml | 6 + .../com/stuffaboutcode/bluedot/Button.java | 22 + android/app/src/main/res/drawable/blower.png | Bin 0 -> 16985 bytes .../src/main/res/layout/activity_button.xml | 40 +- bluedot_server/dotserver.py | 31 +- bluedot_server/sensorcheck.py | 106 + christ_io/.gitignore | 1 + raspi_mount.dxf | 4438 +++++++++++++++++ raspi_mount.scad | 24 + 9 files changed, 4642 insertions(+), 26 deletions(-) create mode 100644 android/.idea/vcs.xml create mode 100644 android/app/src/main/res/drawable/blower.png create mode 100644 bluedot_server/sensorcheck.py create mode 100644 christ_io/.gitignore create mode 100644 raspi_mount.dxf create mode 100644 raspi_mount.scad diff --git a/android/.idea/vcs.xml b/android/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/android/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/android/app/src/main/java/com/stuffaboutcode/bluedot/Button.java b/android/app/src/main/java/com/stuffaboutcode/bluedot/Button.java index 2ed59f5..9cb91a8 100644 --- a/android/app/src/main/java/com/stuffaboutcode/bluedot/Button.java +++ b/android/app/src/main/java/com/stuffaboutcode/bluedot/Button.java @@ -98,6 +98,7 @@ public class Button extends AppCompatActivity { final View fwd = (View)findViewById(R.id.fwdButton); final View bwd = (View)findViewById(R.id.bwdButton); + final View blowerButton = (View)findViewById(R.id.blowerButton); //send heartbeat to server: final Handler h = new Handler(); @@ -184,6 +185,20 @@ public class Button extends AppCompatActivity { } }); + blowerButton.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + + if (event.getAction() == MotionEvent.ACTION_DOWN) { + blowerpressed(blowerButton, event); + + } + return false; + } + }); + + + leftbrush.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { @@ -535,6 +550,13 @@ public class Button extends AppCompatActivity { } + + + private void blowerpressed(View blowerButton, MotionEvent event) { + send(buildMessageWithID("1", 0, 0, "blower")); + + } + private void sqonpressed(View squareonButton, MotionEvent event) { double x = calcX(squareonButton, event); double y = calcY(squareonButton, event); diff --git a/android/app/src/main/res/drawable/blower.png b/android/app/src/main/res/drawable/blower.png new file mode 100644 index 0000000000000000000000000000000000000000..315d5ea56d82224e9f2eb2d7b8be8706ce600e74 GIT binary patch literal 16985 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/layout/activity_button.xml b/android/app/src/main/res/layout/activity_button.xml index 5959cec..962e67a 100644 --- a/android/app/src/main/res/layout/activity_button.xml +++ b/android/app/src/main/res/layout/activity_button.xml @@ -60,11 +60,11 @@ android:layout_marginEnd="16dp" android:layout_marginRight="16dp" - android:layout_marginBottom="16dp" + android:layout_marginBottom="8dp" android:background="@drawable/square_off_button" android:text="OFF" android:textSize="40dp" - app:layout_constraintBottom_toTopOf="@+id/cb1" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="@+id/roundButton2" /> <Button @@ -76,11 +76,11 @@ android:layout_marginLeft="16dp" android:layout_marginEnd="16dp" android:layout_marginRight="16dp" - android:layout_marginBottom="16dp" + android:layout_marginBottom="8dp" android:background="@drawable/square_off_button" android:text="AUTO" android:textSize="40dp" - app:layout_constraintBottom_toTopOf="@+id/cb1" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/offButton" app:layout_constraintStart_toEndOf="@+id/onButton" /> @@ -199,11 +199,11 @@ android:layout_marginStart="16dp" android:layout_marginLeft="16dp" - android:layout_marginBottom="16dp" + android:layout_marginBottom="8dp" android:background="@drawable/square_off_button" android:text="ON" android:textSize="40dp" - app:layout_constraintBottom_toTopOf="@+id/cb1" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="@+id/roundButton1" /> <ImageButton @@ -236,22 +236,20 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/yellowButton" /> - <CheckBox - android:id="@+id/cb1" - android:layout_width="0dp" - android:layout_height="60dp" - android:layout_marginStart="16dp" - android:layout_marginLeft="16dp" - android:layout_marginEnd="16dp" - android:layout_marginRight="16dp" - android:layout_marginBottom="16dp" - android:layout_weight="1" - android:onClick="onCheckboxClicked" - android:scaleX="2" - android:scaleY="2" - app:layout_constraintBottom_toBottomOf="parent" + <ImageButton + android:id="@+id/blowerButton" + android:layout_width="100dp" + android:layout_height="100dp" + android:layout_marginTop="32dp" + android:layout_marginEnd="24dp" + android:layout_marginRight="24dp" + android:background="@drawable/round_button" + android:scaleType="fitXY" + android:src="@drawable/blower" + android:text="SPEED" + android:textSize="40dp" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintTop_toBottomOf="@+id/RLButton" /> </android.support.constraint.ConstraintLayout> diff --git a/bluedot_server/dotserver.py b/bluedot_server/dotserver.py index 8342082..95904e9 100644 --- a/bluedot_server/dotserver.py +++ b/bluedot_server/dotserver.py @@ -1,5 +1,11 @@ #!/usr/bin/python3 + +# ggf wegen umrichter: +# s.wendel@sourceindex.de + + + DEBUG=False platform="raspi" @@ -22,6 +28,8 @@ data0=0 data1=0 data2=0 +blower=False + last_sensors=0 sensors=0 @@ -77,9 +85,10 @@ master_in=4 data0_ids={"fwd":0,"bwd":1,"none":2,"none":3,"LL":4,"LR":5,"RL":6,"RR":7} # GND 15V DC data1_ids={"lbrushcw":0,"lbrushccw":1,"none":2,"none":3,"rbrushcw":4,"rbrushccw":5,"none":6,"none":7} -# 12V DC 5V DC -data2_ids={"col1":0,"col2":1,"col3":2,"col4":3,"ampel_fwd":4,"ampel_bwd":5,"ampel_stop":6,"none":7} +# 12V DC 42V AC +data2_ids={"col1":0,"col2":1,"col3":2,"col4":3,"blower":4,"none":5,"none":6,"none":7} +data3_ids={"ampel_fwd":0,"ampel_bwd":1,"ampel_stop":2,"none":3} #all on 42V AC sensor_ids={"railstart":0,"railend":1,"railposition":2,"left":3,"right":4,"center":5,"none":6,"none":7} @@ -252,7 +261,7 @@ def read_data(card_no,adr): #print("READ card_no: ",card_no," subadr: ",adr," data: ",result) - return result + return ~result @@ -460,6 +469,7 @@ def check_sensor_action(): else: print("estop railend released") motion_block = motion_block & ~(1<<data0_ids["fwd"]) + if (sensors & (1<<sensor_ids["railposition"])) != (last_sensors & (1<<sensor_ids["railposition"])): if (sensors & (1<<sensor_ids["railposition"])) !=0: @@ -821,6 +831,7 @@ def pressed(pos,id): global auto global time_elap + global blower @@ -837,12 +848,14 @@ def pressed(pos,id): global rightpressedts global heartbeatts + + ts = int(round(time.time() * 1000)) -# print("pressed: ",id,ts); + #print("pressed: ",id,ts); if id=="heartbeat": - print("have heartbeat from client") +# print("have heartbeat from client") heartbeatts=ts if id=="leftbrush": @@ -889,6 +902,14 @@ def pressed(pos,id): data0=data0 | 1<<data0_ids[id] + elif id=="blower": + blower=not blower + if blower: + data2=data2 | 1<<data2_ids[id] + else: + data2=data2 & ~(1<<data2_ids[id]) + + #handle colors diff --git a/bluedot_server/sensorcheck.py b/bluedot_server/sensorcheck.py new file mode 100644 index 0000000..48ba6dd --- /dev/null +++ b/bluedot_server/sensorcheck.py @@ -0,0 +1,106 @@ +#!/usr/bin/python3 + +st_stop=0 +st_fwd=1 +st_bwd=2 + +state=st_fwd +#state=st_bwd + +last_sensors=0 +sensors=32 + +position=0 + +data0_ids={"fwd":0,"bwd":1,"LL":2,"LR":3,"RL":4,"RR":5,"none":6,"none":7} +#data1_ids={"lbrushcw":0,"lbrushccw":1,"rbrushcw":2,"rbrushccw":3,"col1":4,"col2":5,"col3":6,"col4":7} +sensor_ids={"railstart":0,"railend":1,"railposition":2,"left":3,"right":4,"center":5,"none":6,"none":7} + +motion_block=0 + + +def check_sensor_action(): + global position + global motion_block + + if (sensors & (1<<sensor_ids["railstart"])) != (last_sensors & (1<<sensor_ids["railstart"])): + if (sensors & (1<<sensor_ids["railstart"])) != 0: + print("railstart hit") + motion_block = motion_block | (1<<data0_ids["bwd"]) + else: + print("railstart released") + motion_block = motion_block & ~(1<<data0_ids["bwd"]) + + if (sensors & (1<<sensor_ids["railend"])) != (last_sensors & (1<<sensor_ids["railend"])): + if (sensors & (1<<sensor_ids["railend"])) !=0: + print("railend hit") + motion_block = motion_block | (1<<data0_ids["fwd"]) + else: + print("railend released") + motion_block = motion_block & ~(1<<data0_ids["fwd"]) + + if (sensors & (1<<sensor_ids["railposition"])) != (last_sensors & (1<<sensor_ids["railposition"])): + if (sensors & (1<<sensor_ids["railposition"])) !=0: + print("railposition hit") + if state==st_fwd: + position+=1 + else: + position-=1 + else: + print("railposition released") + + if (sensors & (1<<sensor_ids["left"])) != (last_sensors & (1<<sensor_ids["left"])): + if (sensors & (1<<sensor_ids["left"])) !=0: + print("left hit") + motion_block = motion_block | (1<<data0_ids["LL"]) + else: + print("left released") + motion_block = motion_block & ~(1<<data0_ids["LL"]) + + + if (sensors & (1<<sensor_ids["right"])) != (last_sensors & (1<<sensor_ids["right"])): + if (sensors & (1<<sensor_ids["right"])) !=0: + print("right hit") + motion_block = motion_block | (1<<data0_ids["RR"]) + else: + print("right released") + motion_block = motion_block & ~(1<<data0_ids["RR"]) + + if (sensors & (1<<sensor_ids["center"])) != (last_sensors & (1<<sensor_ids["center"])): + if (sensors & (1<<sensor_ids["center"])) !=0: + print("center hit") + motion_block = motion_block | (1<<data0_ids["LR"]) + motion_block = motion_block | (1<<data0_ids["RL"]) + + else: + print("center released") + motion_block = motion_block & ~(1<<data0_ids["LR"]) + motion_block = motion_block & ~(1<<data0_ids["RL"]) + + print(motion_block) + + +def apply_motion_block(): + if (motion_block & (1<<data0_ids["fwd"]) !=0): + print("block fwd") + + if (motion_block & (1<<data0_ids["bwd"]) !=0): + print("block bwd") + + if (motion_block & (1<<data0_ids["LL"]) !=0): + print("block LL") + + if (motion_block & (1<<data0_ids["LR"]) !=0): + print("block LR") + + if (motion_block & (1<<data0_ids["RL"]) !=0): + print("block RL") + + if (motion_block & (1<<data0_ids["RR"]) !=0): + print("block RR") + + + + +check_sensor_action() +apply_motion_block() \ No newline at end of file diff --git a/christ_io/.gitignore b/christ_io/.gitignore new file mode 100644 index 0000000..13b8155 --- /dev/null +++ b/christ_io/.gitignore @@ -0,0 +1 @@ +*.s#* diff --git a/raspi_mount.dxf b/raspi_mount.dxf new file mode 100644 index 0000000..928a996 --- /dev/null +++ b/raspi_mount.dxf @@ -0,0 +1,4438 @@ + 0 +SECTION + 2 +BLOCKS + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 8 +0 + 10 +0 + 20 +0 + 11 +100 + 21 +0 + 0 +LINE + 8 +0 + 10 +100 + 20 +0 + 11 +100 + 21 +75 + 0 +LINE + 8 +0 + 10 +100 + 20 +75 + 11 +0 + 21 +75 + 0 +LINE + 8 +0 + 10 +0 + 20 +75 + 11 +0 + 21 +0 + 0 +LINE + 8 +0 + 10 +3.5 + 20 +3 + 11 +3.50822 + 21 +3.15679 + 0 +LINE + 8 +0 + 10 +3.50822 + 20 +3.15679 + 11 +3.53278 + 21 +3.31187 + 0 +LINE + 8 +0 + 10 +3.53278 + 20 +3.31187 + 11 +3.57342 + 21 +3.46352 + 0 +LINE + 8 +0 + 10 +3.57342 + 20 +3.46352 + 11 +3.62968 + 21 +3.6101 + 0 +LINE + 8 +0 + 10 +3.62968 + 20 +3.6101 + 11 +3.70096 + 21 +3.75 + 0 +LINE + 8 +0 + 10 +3.70096 + 20 +3.75 + 11 +3.78648 + 21 +3.88168 + 0 +LINE + 8 +0 + 10 +3.78648 + 20 +3.88168 + 11 +3.88528 + 21 +4.0037 + 0 +LINE + 8 +0 + 10 +3.88528 + 20 +4.0037 + 11 +3.9963 + 21 +4.11472 + 0 +LINE + 8 +0 + 10 +3.9963 + 20 +4.11472 + 11 +4.11832 + 21 +4.21352 + 0 +LINE + 8 +0 + 10 +4.11832 + 20 +4.21352 + 11 +4.25 + 21 +4.29904 + 0 +LINE + 8 +0 + 10 +4.25 + 20 +4.29904 + 11 +4.3899 + 21 +4.37032 + 0 +LINE + 8 +0 + 10 +4.3899 + 20 +4.37032 + 11 +4.53648 + 21 +4.42658 + 0 +LINE + 8 +0 + 10 +4.53648 + 20 +4.42658 + 11 +4.68813 + 21 +4.46722 + 0 +LINE + 8 +0 + 10 +4.68813 + 20 +4.46722 + 11 +4.84321 + 21 +4.49178 + 0 +LINE + 8 +0 + 10 +4.84321 + 20 +4.49178 + 11 +5 + 21 +4.5 + 0 +LINE + 8 +0 + 10 +5 + 20 +4.5 + 11 +5.15679 + 21 +4.49178 + 0 +LINE + 8 +0 + 10 +5.15679 + 20 +4.49178 + 11 +5.31187 + 21 +4.46722 + 0 +LINE + 8 +0 + 10 +5.31187 + 20 +4.46722 + 11 +5.46352 + 21 +4.42658 + 0 +LINE + 8 +0 + 10 +5.46352 + 20 +4.42658 + 11 +5.6101 + 21 +4.37032 + 0 +LINE + 8 +0 + 10 +5.6101 + 20 +4.37032 + 11 +5.75 + 21 +4.29904 + 0 +LINE + 8 +0 + 10 +5.75 + 20 +4.29904 + 11 +5.88168 + 21 +4.21352 + 0 +LINE + 8 +0 + 10 +5.88168 + 20 +4.21352 + 11 +6.0037 + 21 +4.11472 + 0 +LINE + 8 +0 + 10 +6.0037 + 20 +4.11472 + 11 +6.11472 + 21 +4.0037 + 0 +LINE + 8 +0 + 10 +6.11472 + 20 +4.0037 + 11 +6.21352 + 21 +3.88168 + 0 +LINE + 8 +0 + 10 +6.21352 + 20 +3.88168 + 11 +6.29904 + 21 +3.75 + 0 +LINE + 8 +0 + 10 +6.29904 + 20 +3.75 + 11 +6.37032 + 21 +3.6101 + 0 +LINE + 8 +0 + 10 +6.37032 + 20 +3.6101 + 11 +6.42658 + 21 +3.46352 + 0 +LINE + 8 +0 + 10 +6.42658 + 20 +3.46352 + 11 +6.46722 + 21 +3.31187 + 0 +LINE + 8 +0 + 10 +6.46722 + 20 +3.31187 + 11 +6.49178 + 21 +3.15679 + 0 +LINE + 8 +0 + 10 +6.49178 + 20 +3.15679 + 11 +6.5 + 21 +3 + 0 +LINE + 8 +0 + 10 +6.5 + 20 +3 + 11 +6.49178 + 21 +2.84321 + 0 +LINE + 8 +0 + 10 +6.49178 + 20 +2.84321 + 11 +6.46722 + 21 +2.68813 + 0 +LINE + 8 +0 + 10 +6.46722 + 20 +2.68813 + 11 +6.42658 + 21 +2.53648 + 0 +LINE + 8 +0 + 10 +6.42658 + 20 +2.53648 + 11 +6.37032 + 21 +2.3899 + 0 +LINE + 8 +0 + 10 +6.37032 + 20 +2.3899 + 11 +6.29904 + 21 +2.25 + 0 +LINE + 8 +0 + 10 +6.29904 + 20 +2.25 + 11 +6.21352 + 21 +2.11832 + 0 +LINE + 8 +0 + 10 +6.21352 + 20 +2.11832 + 11 +6.11472 + 21 +1.9963 + 0 +LINE + 8 +0 + 10 +6.11472 + 20 +1.9963 + 11 +6.0037 + 21 +1.88528 + 0 +LINE + 8 +0 + 10 +6.0037 + 20 +1.88528 + 11 +5.88168 + 21 +1.78648 + 0 +LINE + 8 +0 + 10 +5.88168 + 20 +1.78648 + 11 +5.75 + 21 +1.70096 + 0 +LINE + 8 +0 + 10 +5.75 + 20 +1.70096 + 11 +5.6101 + 21 +1.62968 + 0 +LINE + 8 +0 + 10 +5.6101 + 20 +1.62968 + 11 +5.46352 + 21 +1.57342 + 0 +LINE + 8 +0 + 10 +5.46352 + 20 +1.57342 + 11 +5.31187 + 21 +1.53278 + 0 +LINE + 8 +0 + 10 +5.31187 + 20 +1.53278 + 11 +5.15679 + 21 +1.50822 + 0 +LINE + 8 +0 + 10 +5.15679 + 20 +1.50822 + 11 +5 + 21 +1.5 + 0 +LINE + 8 +0 + 10 +5 + 20 +1.5 + 11 +4.84321 + 21 +1.50822 + 0 +LINE + 8 +0 + 10 +4.84321 + 20 +1.50822 + 11 +4.68813 + 21 +1.53278 + 0 +LINE + 8 +0 + 10 +4.68813 + 20 +1.53278 + 11 +4.53648 + 21 +1.57342 + 0 +LINE + 8 +0 + 10 +4.53648 + 20 +1.57342 + 11 +4.3899 + 21 +1.62968 + 0 +LINE + 8 +0 + 10 +4.3899 + 20 +1.62968 + 11 +4.25 + 21 +1.70096 + 0 +LINE + 8 +0 + 10 +4.25 + 20 +1.70096 + 11 +4.11832 + 21 +1.78648 + 0 +LINE + 8 +0 + 10 +4.11832 + 20 +1.78648 + 11 +3.9963 + 21 +1.88528 + 0 +LINE + 8 +0 + 10 +3.9963 + 20 +1.88528 + 11 +3.88528 + 21 +1.9963 + 0 +LINE + 8 +0 + 10 +3.88528 + 20 +1.9963 + 11 +3.78648 + 21 +2.11832 + 0 +LINE + 8 +0 + 10 +3.78648 + 20 +2.11832 + 11 +3.70096 + 21 +2.25 + 0 +LINE + 8 +0 + 10 +3.70096 + 20 +2.25 + 11 +3.62968 + 21 +2.3899 + 0 +LINE + 8 +0 + 10 +3.62968 + 20 +2.3899 + 11 +3.57342 + 21 +2.53648 + 0 +LINE + 8 +0 + 10 +3.57342 + 20 +2.53648 + 11 +3.53278 + 21 +2.68813 + 0 +LINE + 8 +0 + 10 +3.53278 + 20 +2.68813 + 11 +3.50822 + 21 +2.84321 + 0 +LINE + 8 +0 + 10 +3.50822 + 20 +2.84321 + 11 +3.5 + 21 +3 + 0 +LINE + 8 +0 + 10 +3.5 + 20 +23 + 11 +3.50822 + 21 +23.1568 + 0 +LINE + 8 +0 + 10 +3.50822 + 20 +23.1568 + 11 +3.53278 + 21 +23.3119 + 0 +LINE + 8 +0 + 10 +3.53278 + 20 +23.3119 + 11 +3.57342 + 21 +23.4635 + 0 +LINE + 8 +0 + 10 +3.57342 + 20 +23.4635 + 11 +3.62968 + 21 +23.6101 + 0 +LINE + 8 +0 + 10 +3.62968 + 20 +23.6101 + 11 +3.70096 + 21 +23.75 + 0 +LINE + 8 +0 + 10 +3.70096 + 20 +23.75 + 11 +3.78648 + 21 +23.8817 + 0 +LINE + 8 +0 + 10 +3.78648 + 20 +23.8817 + 11 +3.88528 + 21 +24.0037 + 0 +LINE + 8 +0 + 10 +3.88528 + 20 +24.0037 + 11 +3.9963 + 21 +24.1147 + 0 +LINE + 8 +0 + 10 +3.9963 + 20 +24.1147 + 11 +4.11832 + 21 +24.2135 + 0 +LINE + 8 +0 + 10 +4.11832 + 20 +24.2135 + 11 +4.25 + 21 +24.299 + 0 +LINE + 8 +0 + 10 +4.25 + 20 +24.299 + 11 +4.3899 + 21 +24.3703 + 0 +LINE + 8 +0 + 10 +4.3899 + 20 +24.3703 + 11 +4.53648 + 21 +24.4266 + 0 +LINE + 8 +0 + 10 +4.53648 + 20 +24.4266 + 11 +4.68813 + 21 +24.4672 + 0 +LINE + 8 +0 + 10 +4.68813 + 20 +24.4672 + 11 +4.84321 + 21 +24.4918 + 0 +LINE + 8 +0 + 10 +4.84321 + 20 +24.4918 + 11 +5 + 21 +24.5 + 0 +LINE + 8 +0 + 10 +5 + 20 +24.5 + 11 +5.15679 + 21 +24.4918 + 0 +LINE + 8 +0 + 10 +5.15679 + 20 +24.4918 + 11 +5.31187 + 21 +24.4672 + 0 +LINE + 8 +0 + 10 +5.31187 + 20 +24.4672 + 11 +5.46352 + 21 +24.4266 + 0 +LINE + 8 +0 + 10 +5.46352 + 20 +24.4266 + 11 +5.6101 + 21 +24.3703 + 0 +LINE + 8 +0 + 10 +5.6101 + 20 +24.3703 + 11 +5.75 + 21 +24.299 + 0 +LINE + 8 +0 + 10 +5.75 + 20 +24.299 + 11 +5.88168 + 21 +24.2135 + 0 +LINE + 8 +0 + 10 +5.88168 + 20 +24.2135 + 11 +6.0037 + 21 +24.1147 + 0 +LINE + 8 +0 + 10 +6.0037 + 20 +24.1147 + 11 +6.11472 + 21 +24.0037 + 0 +LINE + 8 +0 + 10 +6.11472 + 20 +24.0037 + 11 +6.21352 + 21 +23.8817 + 0 +LINE + 8 +0 + 10 +6.21352 + 20 +23.8817 + 11 +6.29904 + 21 +23.75 + 0 +LINE + 8 +0 + 10 +6.29904 + 20 +23.75 + 11 +6.37032 + 21 +23.6101 + 0 +LINE + 8 +0 + 10 +6.37032 + 20 +23.6101 + 11 +6.42658 + 21 +23.4635 + 0 +LINE + 8 +0 + 10 +6.42658 + 20 +23.4635 + 11 +6.46722 + 21 +23.3119 + 0 +LINE + 8 +0 + 10 +6.46722 + 20 +23.3119 + 11 +6.49178 + 21 +23.1568 + 0 +LINE + 8 +0 + 10 +6.49178 + 20 +23.1568 + 11 +6.5 + 21 +23 + 0 +LINE + 8 +0 + 10 +6.5 + 20 +23 + 11 +6.49178 + 21 +22.8432 + 0 +LINE + 8 +0 + 10 +6.49178 + 20 +22.8432 + 11 +6.46722 + 21 +22.6881 + 0 +LINE + 8 +0 + 10 +6.46722 + 20 +22.6881 + 11 +6.42658 + 21 +22.5365 + 0 +LINE + 8 +0 + 10 +6.42658 + 20 +22.5365 + 11 +6.37032 + 21 +22.3899 + 0 +LINE + 8 +0 + 10 +6.37032 + 20 +22.3899 + 11 +6.29904 + 21 +22.25 + 0 +LINE + 8 +0 + 10 +6.29904 + 20 +22.25 + 11 +6.21352 + 21 +22.1183 + 0 +LINE + 8 +0 + 10 +6.21352 + 20 +22.1183 + 11 +6.11472 + 21 +21.9963 + 0 +LINE + 8 +0 + 10 +6.11472 + 20 +21.9963 + 11 +6.0037 + 21 +21.8853 + 0 +LINE + 8 +0 + 10 +6.0037 + 20 +21.8853 + 11 +5.88168 + 21 +21.7865 + 0 +LINE + 8 +0 + 10 +5.88168 + 20 +21.7865 + 11 +5.75 + 21 +21.701 + 0 +LINE + 8 +0 + 10 +5.75 + 20 +21.701 + 11 +5.6101 + 21 +21.6297 + 0 +LINE + 8 +0 + 10 +5.6101 + 20 +21.6297 + 11 +5.46352 + 21 +21.5734 + 0 +LINE + 8 +0 + 10 +5.46352 + 20 +21.5734 + 11 +5.31187 + 21 +21.5328 + 0 +LINE + 8 +0 + 10 +5.31187 + 20 +21.5328 + 11 +5.15679 + 21 +21.5082 + 0 +LINE + 8 +0 + 10 +5.15679 + 20 +21.5082 + 11 +5 + 21 +21.5 + 0 +LINE + 8 +0 + 10 +5 + 20 +21.5 + 11 +4.84321 + 21 +21.5082 + 0 +LINE + 8 +0 + 10 +4.84321 + 20 +21.5082 + 11 +4.68813 + 21 +21.5328 + 0 +LINE + 8 +0 + 10 +4.68813 + 20 +21.5328 + 11 +4.53648 + 21 +21.5734 + 0 +LINE + 8 +0 + 10 +4.53648 + 20 +21.5734 + 11 +4.3899 + 21 +21.6297 + 0 +LINE + 8 +0 + 10 +4.3899 + 20 +21.6297 + 11 +4.25 + 21 +21.701 + 0 +LINE + 8 +0 + 10 +4.25 + 20 +21.701 + 11 +4.11832 + 21 +21.7865 + 0 +LINE + 8 +0 + 10 +4.11832 + 20 +21.7865 + 11 +3.9963 + 21 +21.8853 + 0 +LINE + 8 +0 + 10 +3.9963 + 20 +21.8853 + 11 +3.88528 + 21 +21.9963 + 0 +LINE + 8 +0 + 10 +3.88528 + 20 +21.9963 + 11 +3.78648 + 21 +22.1183 + 0 +LINE + 8 +0 + 10 +3.78648 + 20 +22.1183 + 11 +3.70096 + 21 +22.25 + 0 +LINE + 8 +0 + 10 +3.70096 + 20 +22.25 + 11 +3.62968 + 21 +22.3899 + 0 +LINE + 8 +0 + 10 +3.62968 + 20 +22.3899 + 11 +3.57342 + 21 +22.5365 + 0 +LINE + 8 +0 + 10 +3.57342 + 20 +22.5365 + 11 +3.53278 + 21 +22.6881 + 0 +LINE + 8 +0 + 10 +3.53278 + 20 +22.6881 + 11 +3.50822 + 21 +22.8432 + 0 +LINE + 8 +0 + 10 +3.50822 + 20 +22.8432 + 11 +3.5 + 21 +23 + 0 +LINE + 8 +0 + 10 +3.5 + 20 +72 + 11 +3.50822 + 21 +72.1568 + 0 +LINE + 8 +0 + 10 +3.50822 + 20 +72.1568 + 11 +3.53278 + 21 +72.3119 + 0 +LINE + 8 +0 + 10 +3.53278 + 20 +72.3119 + 11 +3.57342 + 21 +72.4635 + 0 +LINE + 8 +0 + 10 +3.57342 + 20 +72.4635 + 11 +3.62968 + 21 +72.6101 + 0 +LINE + 8 +0 + 10 +3.62968 + 20 +72.6101 + 11 +3.70096 + 21 +72.75 + 0 +LINE + 8 +0 + 10 +3.70096 + 20 +72.75 + 11 +3.78648 + 21 +72.8817 + 0 +LINE + 8 +0 + 10 +3.78648 + 20 +72.8817 + 11 +3.88528 + 21 +73.0037 + 0 +LINE + 8 +0 + 10 +3.88528 + 20 +73.0037 + 11 +3.9963 + 21 +73.1147 + 0 +LINE + 8 +0 + 10 +3.9963 + 20 +73.1147 + 11 +4.11832 + 21 +73.2135 + 0 +LINE + 8 +0 + 10 +4.11832 + 20 +73.2135 + 11 +4.25 + 21 +73.299 + 0 +LINE + 8 +0 + 10 +4.25 + 20 +73.299 + 11 +4.3899 + 21 +73.3703 + 0 +LINE + 8 +0 + 10 +4.3899 + 20 +73.3703 + 11 +4.53648 + 21 +73.4266 + 0 +LINE + 8 +0 + 10 +4.53648 + 20 +73.4266 + 11 +4.68813 + 21 +73.4672 + 0 +LINE + 8 +0 + 10 +4.68813 + 20 +73.4672 + 11 +4.84321 + 21 +73.4918 + 0 +LINE + 8 +0 + 10 +4.84321 + 20 +73.4918 + 11 +5 + 21 +73.5 + 0 +LINE + 8 +0 + 10 +5 + 20 +73.5 + 11 +5.15679 + 21 +73.4918 + 0 +LINE + 8 +0 + 10 +5.15679 + 20 +73.4918 + 11 +5.31187 + 21 +73.4672 + 0 +LINE + 8 +0 + 10 +5.31187 + 20 +73.4672 + 11 +5.46352 + 21 +73.4266 + 0 +LINE + 8 +0 + 10 +5.46352 + 20 +73.4266 + 11 +5.6101 + 21 +73.3703 + 0 +LINE + 8 +0 + 10 +5.6101 + 20 +73.3703 + 11 +5.75 + 21 +73.299 + 0 +LINE + 8 +0 + 10 +5.75 + 20 +73.299 + 11 +5.88168 + 21 +73.2135 + 0 +LINE + 8 +0 + 10 +5.88168 + 20 +73.2135 + 11 +6.0037 + 21 +73.1147 + 0 +LINE + 8 +0 + 10 +6.0037 + 20 +73.1147 + 11 +6.11472 + 21 +73.0037 + 0 +LINE + 8 +0 + 10 +6.11472 + 20 +73.0037 + 11 +6.21352 + 21 +72.8817 + 0 +LINE + 8 +0 + 10 +6.21352 + 20 +72.8817 + 11 +6.29904 + 21 +72.75 + 0 +LINE + 8 +0 + 10 +6.29904 + 20 +72.75 + 11 +6.37032 + 21 +72.6101 + 0 +LINE + 8 +0 + 10 +6.37032 + 20 +72.6101 + 11 +6.42658 + 21 +72.4635 + 0 +LINE + 8 +0 + 10 +6.42658 + 20 +72.4635 + 11 +6.46722 + 21 +72.3119 + 0 +LINE + 8 +0 + 10 +6.46722 + 20 +72.3119 + 11 +6.49178 + 21 +72.1568 + 0 +LINE + 8 +0 + 10 +6.49178 + 20 +72.1568 + 11 +6.5 + 21 +72 + 0 +LINE + 8 +0 + 10 +6.5 + 20 +72 + 11 +6.49178 + 21 +71.8432 + 0 +LINE + 8 +0 + 10 +6.49178 + 20 +71.8432 + 11 +6.46722 + 21 +71.6881 + 0 +LINE + 8 +0 + 10 +6.46722 + 20 +71.6881 + 11 +6.42658 + 21 +71.5365 + 0 +LINE + 8 +0 + 10 +6.42658 + 20 +71.5365 + 11 +6.37032 + 21 +71.3899 + 0 +LINE + 8 +0 + 10 +6.37032 + 20 +71.3899 + 11 +6.29904 + 21 +71.25 + 0 +LINE + 8 +0 + 10 +6.29904 + 20 +71.25 + 11 +6.21352 + 21 +71.1183 + 0 +LINE + 8 +0 + 10 +6.21352 + 20 +71.1183 + 11 +6.11472 + 21 +70.9963 + 0 +LINE + 8 +0 + 10 +6.11472 + 20 +70.9963 + 11 +6.0037 + 21 +70.8853 + 0 +LINE + 8 +0 + 10 +6.0037 + 20 +70.8853 + 11 +5.88168 + 21 +70.7865 + 0 +LINE + 8 +0 + 10 +5.88168 + 20 +70.7865 + 11 +5.75 + 21 +70.701 + 0 +LINE + 8 +0 + 10 +5.75 + 20 +70.701 + 11 +5.6101 + 21 +70.6297 + 0 +LINE + 8 +0 + 10 +5.6101 + 20 +70.6297 + 11 +5.46352 + 21 +70.5734 + 0 +LINE + 8 +0 + 10 +5.46352 + 20 +70.5734 + 11 +5.31187 + 21 +70.5328 + 0 +LINE + 8 +0 + 10 +5.31187 + 20 +70.5328 + 11 +5.15679 + 21 +70.5082 + 0 +LINE + 8 +0 + 10 +5.15679 + 20 +70.5082 + 11 +5 + 21 +70.5 + 0 +LINE + 8 +0 + 10 +5 + 20 +70.5 + 11 +4.84321 + 21 +70.5082 + 0 +LINE + 8 +0 + 10 +4.84321 + 20 +70.5082 + 11 +4.68813 + 21 +70.5328 + 0 +LINE + 8 +0 + 10 +4.68813 + 20 +70.5328 + 11 +4.53648 + 21 +70.5734 + 0 +LINE + 8 +0 + 10 +4.53648 + 20 +70.5734 + 11 +4.3899 + 21 +70.6297 + 0 +LINE + 8 +0 + 10 +4.3899 + 20 +70.6297 + 11 +4.25 + 21 +70.701 + 0 +LINE + 8 +0 + 10 +4.25 + 20 +70.701 + 11 +4.11832 + 21 +70.7865 + 0 +LINE + 8 +0 + 10 +4.11832 + 20 +70.7865 + 11 +3.9963 + 21 +70.8853 + 0 +LINE + 8 +0 + 10 +3.9963 + 20 +70.8853 + 11 +3.88528 + 21 +70.9963 + 0 +LINE + 8 +0 + 10 +3.88528 + 20 +70.9963 + 11 +3.78648 + 21 +71.1183 + 0 +LINE + 8 +0 + 10 +3.78648 + 20 +71.1183 + 11 +3.70096 + 21 +71.25 + 0 +LINE + 8 +0 + 10 +3.70096 + 20 +71.25 + 11 +3.62968 + 21 +71.3899 + 0 +LINE + 8 +0 + 10 +3.62968 + 20 +71.3899 + 11 +3.57342 + 21 +71.5365 + 0 +LINE + 8 +0 + 10 +3.57342 + 20 +71.5365 + 11 +3.53278 + 21 +71.6881 + 0 +LINE + 8 +0 + 10 +3.53278 + 20 +71.6881 + 11 +3.50822 + 21 +71.8432 + 0 +LINE + 8 +0 + 10 +3.50822 + 20 +71.8432 + 11 +3.5 + 21 +72 + 0 +LINE + 8 +0 + 10 +15 + 20 +6 + 11 +15 + 21 +19 + 0 +LINE + 8 +0 + 10 +15 + 20 +19 + 11 +85 + 21 +19 + 0 +LINE + 8 +0 + 10 +85 + 20 +19 + 11 +85 + 21 +6 + 0 +LINE + 8 +0 + 10 +85 + 20 +6 + 11 +15 + 21 +6 + 0 +LINE + 8 +0 + 10 +61.5 + 20 +23 + 11 +61.5082 + 21 +23.1568 + 0 +LINE + 8 +0 + 10 +61.5082 + 20 +23.1568 + 11 +61.5328 + 21 +23.3119 + 0 +LINE + 8 +0 + 10 +61.5328 + 20 +23.3119 + 11 +61.5734 + 21 +23.4635 + 0 +LINE + 8 +0 + 10 +61.5734 + 20 +23.4635 + 11 +61.6297 + 21 +23.6101 + 0 +LINE + 8 +0 + 10 +61.6297 + 20 +23.6101 + 11 +61.701 + 21 +23.75 + 0 +LINE + 8 +0 + 10 +61.701 + 20 +23.75 + 11 +61.7865 + 21 +23.8817 + 0 +LINE + 8 +0 + 10 +61.7865 + 20 +23.8817 + 11 +61.8853 + 21 +24.0037 + 0 +LINE + 8 +0 + 10 +61.8853 + 20 +24.0037 + 11 +61.9963 + 21 +24.1147 + 0 +LINE + 8 +0 + 10 +61.9963 + 20 +24.1147 + 11 +62.1183 + 21 +24.2135 + 0 +LINE + 8 +0 + 10 +62.1183 + 20 +24.2135 + 11 +62.25 + 21 +24.299 + 0 +LINE + 8 +0 + 10 +62.25 + 20 +24.299 + 11 +62.3899 + 21 +24.3703 + 0 +LINE + 8 +0 + 10 +62.3899 + 20 +24.3703 + 11 +62.5365 + 21 +24.4266 + 0 +LINE + 8 +0 + 10 +62.5365 + 20 +24.4266 + 11 +62.6881 + 21 +24.4672 + 0 +LINE + 8 +0 + 10 +62.6881 + 20 +24.4672 + 11 +62.8432 + 21 +24.4918 + 0 +LINE + 8 +0 + 10 +62.8432 + 20 +24.4918 + 11 +63 + 21 +24.5 + 0 +LINE + 8 +0 + 10 +63 + 20 +24.5 + 11 +63.1568 + 21 +24.4918 + 0 +LINE + 8 +0 + 10 +63.1568 + 20 +24.4918 + 11 +63.3119 + 21 +24.4672 + 0 +LINE + 8 +0 + 10 +63.3119 + 20 +24.4672 + 11 +63.4635 + 21 +24.4266 + 0 +LINE + 8 +0 + 10 +63.4635 + 20 +24.4266 + 11 +63.6101 + 21 +24.3703 + 0 +LINE + 8 +0 + 10 +63.6101 + 20 +24.3703 + 11 +63.75 + 21 +24.299 + 0 +LINE + 8 +0 + 10 +63.75 + 20 +24.299 + 11 +63.8817 + 21 +24.2135 + 0 +LINE + 8 +0 + 10 +63.8817 + 20 +24.2135 + 11 +64.0037 + 21 +24.1147 + 0 +LINE + 8 +0 + 10 +64.0037 + 20 +24.1147 + 11 +64.1147 + 21 +24.0037 + 0 +LINE + 8 +0 + 10 +64.1147 + 20 +24.0037 + 11 +64.2135 + 21 +23.8817 + 0 +LINE + 8 +0 + 10 +64.2135 + 20 +23.8817 + 11 +64.299 + 21 +23.75 + 0 +LINE + 8 +0 + 10 +64.299 + 20 +23.75 + 11 +64.3703 + 21 +23.6101 + 0 +LINE + 8 +0 + 10 +64.3703 + 20 +23.6101 + 11 +64.4266 + 21 +23.4635 + 0 +LINE + 8 +0 + 10 +64.4266 + 20 +23.4635 + 11 +64.4672 + 21 +23.3119 + 0 +LINE + 8 +0 + 10 +64.4672 + 20 +23.3119 + 11 +64.4918 + 21 +23.1568 + 0 +LINE + 8 +0 + 10 +64.4918 + 20 +23.1568 + 11 +64.5 + 21 +23 + 0 +LINE + 8 +0 + 10 +64.5 + 20 +23 + 11 +64.4918 + 21 +22.8432 + 0 +LINE + 8 +0 + 10 +64.4918 + 20 +22.8432 + 11 +64.4672 + 21 +22.6881 + 0 +LINE + 8 +0 + 10 +64.4672 + 20 +22.6881 + 11 +64.4266 + 21 +22.5365 + 0 +LINE + 8 +0 + 10 +64.4266 + 20 +22.5365 + 11 +64.3703 + 21 +22.3899 + 0 +LINE + 8 +0 + 10 +64.3703 + 20 +22.3899 + 11 +64.299 + 21 +22.25 + 0 +LINE + 8 +0 + 10 +64.299 + 20 +22.25 + 11 +64.2135 + 21 +22.1183 + 0 +LINE + 8 +0 + 10 +64.2135 + 20 +22.1183 + 11 +64.1147 + 21 +21.9963 + 0 +LINE + 8 +0 + 10 +64.1147 + 20 +21.9963 + 11 +64.0037 + 21 +21.8853 + 0 +LINE + 8 +0 + 10 +64.0037 + 20 +21.8853 + 11 +63.8817 + 21 +21.7865 + 0 +LINE + 8 +0 + 10 +63.8817 + 20 +21.7865 + 11 +63.75 + 21 +21.701 + 0 +LINE + 8 +0 + 10 +63.75 + 20 +21.701 + 11 +63.6101 + 21 +21.6297 + 0 +LINE + 8 +0 + 10 +63.6101 + 20 +21.6297 + 11 +63.4635 + 21 +21.5734 + 0 +LINE + 8 +0 + 10 +63.4635 + 20 +21.5734 + 11 +63.3119 + 21 +21.5328 + 0 +LINE + 8 +0 + 10 +63.3119 + 20 +21.5328 + 11 +63.1568 + 21 +21.5082 + 0 +LINE + 8 +0 + 10 +63.1568 + 20 +21.5082 + 11 +63 + 21 +21.5 + 0 +LINE + 8 +0 + 10 +63 + 20 +21.5 + 11 +62.8432 + 21 +21.5082 + 0 +LINE + 8 +0 + 10 +62.8432 + 20 +21.5082 + 11 +62.6881 + 21 +21.5328 + 0 +LINE + 8 +0 + 10 +62.6881 + 20 +21.5328 + 11 +62.5365 + 21 +21.5734 + 0 +LINE + 8 +0 + 10 +62.5365 + 20 +21.5734 + 11 +62.3899 + 21 +21.6297 + 0 +LINE + 8 +0 + 10 +62.3899 + 20 +21.6297 + 11 +62.25 + 21 +21.701 + 0 +LINE + 8 +0 + 10 +62.25 + 20 +21.701 + 11 +62.1183 + 21 +21.7865 + 0 +LINE + 8 +0 + 10 +62.1183 + 20 +21.7865 + 11 +61.9963 + 21 +21.8853 + 0 +LINE + 8 +0 + 10 +61.9963 + 20 +21.8853 + 11 +61.8853 + 21 +21.9963 + 0 +LINE + 8 +0 + 10 +61.8853 + 20 +21.9963 + 11 +61.7865 + 21 +22.1183 + 0 +LINE + 8 +0 + 10 +61.7865 + 20 +22.1183 + 11 +61.701 + 21 +22.25 + 0 +LINE + 8 +0 + 10 +61.701 + 20 +22.25 + 11 +61.6297 + 21 +22.3899 + 0 +LINE + 8 +0 + 10 +61.6297 + 20 +22.3899 + 11 +61.5734 + 21 +22.5365 + 0 +LINE + 8 +0 + 10 +61.5734 + 20 +22.5365 + 11 +61.5328 + 21 +22.6881 + 0 +LINE + 8 +0 + 10 +61.5328 + 20 +22.6881 + 11 +61.5082 + 21 +22.8432 + 0 +LINE + 8 +0 + 10 +61.5082 + 20 +22.8432 + 11 +61.5 + 21 +23 + 0 +LINE + 8 +0 + 10 +61.5 + 20 +72 + 11 +61.5082 + 21 +72.1568 + 0 +LINE + 8 +0 + 10 +61.5082 + 20 +72.1568 + 11 +61.5328 + 21 +72.3119 + 0 +LINE + 8 +0 + 10 +61.5328 + 20 +72.3119 + 11 +61.5734 + 21 +72.4635 + 0 +LINE + 8 +0 + 10 +61.5734 + 20 +72.4635 + 11 +61.6297 + 21 +72.6101 + 0 +LINE + 8 +0 + 10 +61.6297 + 20 +72.6101 + 11 +61.701 + 21 +72.75 + 0 +LINE + 8 +0 + 10 +61.701 + 20 +72.75 + 11 +61.7865 + 21 +72.8817 + 0 +LINE + 8 +0 + 10 +61.7865 + 20 +72.8817 + 11 +61.8853 + 21 +73.0037 + 0 +LINE + 8 +0 + 10 +61.8853 + 20 +73.0037 + 11 +61.9963 + 21 +73.1147 + 0 +LINE + 8 +0 + 10 +61.9963 + 20 +73.1147 + 11 +62.1183 + 21 +73.2135 + 0 +LINE + 8 +0 + 10 +62.1183 + 20 +73.2135 + 11 +62.25 + 21 +73.299 + 0 +LINE + 8 +0 + 10 +62.25 + 20 +73.299 + 11 +62.3899 + 21 +73.3703 + 0 +LINE + 8 +0 + 10 +62.3899 + 20 +73.3703 + 11 +62.5365 + 21 +73.4266 + 0 +LINE + 8 +0 + 10 +62.5365 + 20 +73.4266 + 11 +62.6881 + 21 +73.4672 + 0 +LINE + 8 +0 + 10 +62.6881 + 20 +73.4672 + 11 +62.8432 + 21 +73.4918 + 0 +LINE + 8 +0 + 10 +62.8432 + 20 +73.4918 + 11 +63 + 21 +73.5 + 0 +LINE + 8 +0 + 10 +63 + 20 +73.5 + 11 +63.1568 + 21 +73.4918 + 0 +LINE + 8 +0 + 10 +63.1568 + 20 +73.4918 + 11 +63.3119 + 21 +73.4672 + 0 +LINE + 8 +0 + 10 +63.3119 + 20 +73.4672 + 11 +63.4635 + 21 +73.4266 + 0 +LINE + 8 +0 + 10 +63.4635 + 20 +73.4266 + 11 +63.6101 + 21 +73.3703 + 0 +LINE + 8 +0 + 10 +63.6101 + 20 +73.3703 + 11 +63.75 + 21 +73.299 + 0 +LINE + 8 +0 + 10 +63.75 + 20 +73.299 + 11 +63.8817 + 21 +73.2135 + 0 +LINE + 8 +0 + 10 +63.8817 + 20 +73.2135 + 11 +64.0037 + 21 +73.1147 + 0 +LINE + 8 +0 + 10 +64.0037 + 20 +73.1147 + 11 +64.1147 + 21 +73.0037 + 0 +LINE + 8 +0 + 10 +64.1147 + 20 +73.0037 + 11 +64.2135 + 21 +72.8817 + 0 +LINE + 8 +0 + 10 +64.2135 + 20 +72.8817 + 11 +64.299 + 21 +72.75 + 0 +LINE + 8 +0 + 10 +64.299 + 20 +72.75 + 11 +64.3703 + 21 +72.6101 + 0 +LINE + 8 +0 + 10 +64.3703 + 20 +72.6101 + 11 +64.4266 + 21 +72.4635 + 0 +LINE + 8 +0 + 10 +64.4266 + 20 +72.4635 + 11 +64.4672 + 21 +72.3119 + 0 +LINE + 8 +0 + 10 +64.4672 + 20 +72.3119 + 11 +64.4918 + 21 +72.1568 + 0 +LINE + 8 +0 + 10 +64.4918 + 20 +72.1568 + 11 +64.5 + 21 +72 + 0 +LINE + 8 +0 + 10 +64.5 + 20 +72 + 11 +64.4918 + 21 +71.8432 + 0 +LINE + 8 +0 + 10 +64.4918 + 20 +71.8432 + 11 +64.4672 + 21 +71.6881 + 0 +LINE + 8 +0 + 10 +64.4672 + 20 +71.6881 + 11 +64.4266 + 21 +71.5365 + 0 +LINE + 8 +0 + 10 +64.4266 + 20 +71.5365 + 11 +64.3703 + 21 +71.3899 + 0 +LINE + 8 +0 + 10 +64.3703 + 20 +71.3899 + 11 +64.299 + 21 +71.25 + 0 +LINE + 8 +0 + 10 +64.299 + 20 +71.25 + 11 +64.2135 + 21 +71.1183 + 0 +LINE + 8 +0 + 10 +64.2135 + 20 +71.1183 + 11 +64.1147 + 21 +70.9963 + 0 +LINE + 8 +0 + 10 +64.1147 + 20 +70.9963 + 11 +64.0037 + 21 +70.8853 + 0 +LINE + 8 +0 + 10 +64.0037 + 20 +70.8853 + 11 +63.8817 + 21 +70.7865 + 0 +LINE + 8 +0 + 10 +63.8817 + 20 +70.7865 + 11 +63.75 + 21 +70.701 + 0 +LINE + 8 +0 + 10 +63.75 + 20 +70.701 + 11 +63.6101 + 21 +70.6297 + 0 +LINE + 8 +0 + 10 +63.6101 + 20 +70.6297 + 11 +63.4635 + 21 +70.5734 + 0 +LINE + 8 +0 + 10 +63.4635 + 20 +70.5734 + 11 +63.3119 + 21 +70.5328 + 0 +LINE + 8 +0 + 10 +63.3119 + 20 +70.5328 + 11 +63.1568 + 21 +70.5082 + 0 +LINE + 8 +0 + 10 +63.1568 + 20 +70.5082 + 11 +63 + 21 +70.5 + 0 +LINE + 8 +0 + 10 +63 + 20 +70.5 + 11 +62.8432 + 21 +70.5082 + 0 +LINE + 8 +0 + 10 +62.8432 + 20 +70.5082 + 11 +62.6881 + 21 +70.5328 + 0 +LINE + 8 +0 + 10 +62.6881 + 20 +70.5328 + 11 +62.5365 + 21 +70.5734 + 0 +LINE + 8 +0 + 10 +62.5365 + 20 +70.5734 + 11 +62.3899 + 21 +70.6297 + 0 +LINE + 8 +0 + 10 +62.3899 + 20 +70.6297 + 11 +62.25 + 21 +70.701 + 0 +LINE + 8 +0 + 10 +62.25 + 20 +70.701 + 11 +62.1183 + 21 +70.7865 + 0 +LINE + 8 +0 + 10 +62.1183 + 20 +70.7865 + 11 +61.9963 + 21 +70.8853 + 0 +LINE + 8 +0 + 10 +61.9963 + 20 +70.8853 + 11 +61.8853 + 21 +70.9963 + 0 +LINE + 8 +0 + 10 +61.8853 + 20 +70.9963 + 11 +61.7865 + 21 +71.1183 + 0 +LINE + 8 +0 + 10 +61.7865 + 20 +71.1183 + 11 +61.701 + 21 +71.25 + 0 +LINE + 8 +0 + 10 +61.701 + 20 +71.25 + 11 +61.6297 + 21 +71.3899 + 0 +LINE + 8 +0 + 10 +61.6297 + 20 +71.3899 + 11 +61.5734 + 21 +71.5365 + 0 +LINE + 8 +0 + 10 +61.5734 + 20 +71.5365 + 11 +61.5328 + 21 +71.6881 + 0 +LINE + 8 +0 + 10 +61.5328 + 20 +71.6881 + 11 +61.5082 + 21 +71.8432 + 0 +LINE + 8 +0 + 10 +61.5082 + 20 +71.8432 + 11 +61.5 + 21 +72 + 0 +LINE + 8 +0 + 10 +92.5 + 20 +3 + 11 +92.5082 + 21 +3.15679 + 0 +LINE + 8 +0 + 10 +92.5082 + 20 +3.15679 + 11 +92.5328 + 21 +3.31187 + 0 +LINE + 8 +0 + 10 +92.5328 + 20 +3.31187 + 11 +92.5734 + 21 +3.46352 + 0 +LINE + 8 +0 + 10 +92.5734 + 20 +3.46352 + 11 +92.6297 + 21 +3.6101 + 0 +LINE + 8 +0 + 10 +92.6297 + 20 +3.6101 + 11 +92.701 + 21 +3.75 + 0 +LINE + 8 +0 + 10 +92.701 + 20 +3.75 + 11 +92.7865 + 21 +3.88168 + 0 +LINE + 8 +0 + 10 +92.7865 + 20 +3.88168 + 11 +92.8853 + 21 +4.0037 + 0 +LINE + 8 +0 + 10 +92.8853 + 20 +4.0037 + 11 +92.9963 + 21 +4.11472 + 0 +LINE + 8 +0 + 10 +92.9963 + 20 +4.11472 + 11 +93.1183 + 21 +4.21352 + 0 +LINE + 8 +0 + 10 +93.1183 + 20 +4.21352 + 11 +93.25 + 21 +4.29904 + 0 +LINE + 8 +0 + 10 +93.25 + 20 +4.29904 + 11 +93.3899 + 21 +4.37032 + 0 +LINE + 8 +0 + 10 +93.3899 + 20 +4.37032 + 11 +93.5365 + 21 +4.42658 + 0 +LINE + 8 +0 + 10 +93.5365 + 20 +4.42658 + 11 +93.6881 + 21 +4.46722 + 0 +LINE + 8 +0 + 10 +93.6881 + 20 +4.46722 + 11 +93.8432 + 21 +4.49178 + 0 +LINE + 8 +0 + 10 +93.8432 + 20 +4.49178 + 11 +94 + 21 +4.5 + 0 +LINE + 8 +0 + 10 +94 + 20 +4.5 + 11 +94.1568 + 21 +4.49178 + 0 +LINE + 8 +0 + 10 +94.1568 + 20 +4.49178 + 11 +94.3119 + 21 +4.46722 + 0 +LINE + 8 +0 + 10 +94.3119 + 20 +4.46722 + 11 +94.4635 + 21 +4.42658 + 0 +LINE + 8 +0 + 10 +94.4635 + 20 +4.42658 + 11 +94.6101 + 21 +4.37032 + 0 +LINE + 8 +0 + 10 +94.6101 + 20 +4.37032 + 11 +94.75 + 21 +4.29904 + 0 +LINE + 8 +0 + 10 +94.75 + 20 +4.29904 + 11 +94.8817 + 21 +4.21352 + 0 +LINE + 8 +0 + 10 +94.8817 + 20 +4.21352 + 11 +95.0037 + 21 +4.11472 + 0 +LINE + 8 +0 + 10 +95.0037 + 20 +4.11472 + 11 +95.1147 + 21 +4.0037 + 0 +LINE + 8 +0 + 10 +95.1147 + 20 +4.0037 + 11 +95.2135 + 21 +3.88168 + 0 +LINE + 8 +0 + 10 +95.2135 + 20 +3.88168 + 11 +95.299 + 21 +3.75 + 0 +LINE + 8 +0 + 10 +95.299 + 20 +3.75 + 11 +95.3703 + 21 +3.6101 + 0 +LINE + 8 +0 + 10 +95.3703 + 20 +3.6101 + 11 +95.4266 + 21 +3.46352 + 0 +LINE + 8 +0 + 10 +95.4266 + 20 +3.46352 + 11 +95.4672 + 21 +3.31187 + 0 +LINE + 8 +0 + 10 +95.4672 + 20 +3.31187 + 11 +95.4918 + 21 +3.15679 + 0 +LINE + 8 +0 + 10 +95.4918 + 20 +3.15679 + 11 +95.5 + 21 +3 + 0 +LINE + 8 +0 + 10 +95.5 + 20 +3 + 11 +95.4918 + 21 +2.84321 + 0 +LINE + 8 +0 + 10 +95.4918 + 20 +2.84321 + 11 +95.4672 + 21 +2.68813 + 0 +LINE + 8 +0 + 10 +95.4672 + 20 +2.68813 + 11 +95.4266 + 21 +2.53648 + 0 +LINE + 8 +0 + 10 +95.4266 + 20 +2.53648 + 11 +95.3703 + 21 +2.3899 + 0 +LINE + 8 +0 + 10 +95.3703 + 20 +2.3899 + 11 +95.299 + 21 +2.25 + 0 +LINE + 8 +0 + 10 +95.299 + 20 +2.25 + 11 +95.2135 + 21 +2.11832 + 0 +LINE + 8 +0 + 10 +95.2135 + 20 +2.11832 + 11 +95.1147 + 21 +1.9963 + 0 +LINE + 8 +0 + 10 +95.1147 + 20 +1.9963 + 11 +95.0037 + 21 +1.88528 + 0 +LINE + 8 +0 + 10 +95.0037 + 20 +1.88528 + 11 +94.8817 + 21 +1.78648 + 0 +LINE + 8 +0 + 10 +94.8817 + 20 +1.78648 + 11 +94.75 + 21 +1.70096 + 0 +LINE + 8 +0 + 10 +94.75 + 20 +1.70096 + 11 +94.6101 + 21 +1.62968 + 0 +LINE + 8 +0 + 10 +94.6101 + 20 +1.62968 + 11 +94.4635 + 21 +1.57342 + 0 +LINE + 8 +0 + 10 +94.4635 + 20 +1.57342 + 11 +94.3119 + 21 +1.53278 + 0 +LINE + 8 +0 + 10 +94.3119 + 20 +1.53278 + 11 +94.1568 + 21 +1.50822 + 0 +LINE + 8 +0 + 10 +94.1568 + 20 +1.50822 + 11 +94 + 21 +1.5 + 0 +LINE + 8 +0 + 10 +94 + 20 +1.5 + 11 +93.8432 + 21 +1.50822 + 0 +LINE + 8 +0 + 10 +93.8432 + 20 +1.50822 + 11 +93.6881 + 21 +1.53278 + 0 +LINE + 8 +0 + 10 +93.6881 + 20 +1.53278 + 11 +93.5365 + 21 +1.57342 + 0 +LINE + 8 +0 + 10 +93.5365 + 20 +1.57342 + 11 +93.3899 + 21 +1.62968 + 0 +LINE + 8 +0 + 10 +93.3899 + 20 +1.62968 + 11 +93.25 + 21 +1.70096 + 0 +LINE + 8 +0 + 10 +93.25 + 20 +1.70096 + 11 +93.1183 + 21 +1.78648 + 0 +LINE + 8 +0 + 10 +93.1183 + 20 +1.78648 + 11 +92.9963 + 21 +1.88528 + 0 +LINE + 8 +0 + 10 +92.9963 + 20 +1.88528 + 11 +92.8853 + 21 +1.9963 + 0 +LINE + 8 +0 + 10 +92.8853 + 20 +1.9963 + 11 +92.7865 + 21 +2.11832 + 0 +LINE + 8 +0 + 10 +92.7865 + 20 +2.11832 + 11 +92.701 + 21 +2.25 + 0 +LINE + 8 +0 + 10 +92.701 + 20 +2.25 + 11 +92.6297 + 21 +2.3899 + 0 +LINE + 8 +0 + 10 +92.6297 + 20 +2.3899 + 11 +92.5734 + 21 +2.53648 + 0 +LINE + 8 +0 + 10 +92.5734 + 20 +2.53648 + 11 +92.5328 + 21 +2.68813 + 0 +LINE + 8 +0 + 10 +92.5328 + 20 +2.68813 + 11 +92.5082 + 21 +2.84321 + 0 +LINE + 8 +0 + 10 +92.5082 + 20 +2.84321 + 11 +92.5 + 21 +3 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 0 +ENDSEC + 0 +EOF diff --git a/raspi_mount.scad b/raspi_mount.scad new file mode 100644 index 0000000..e4f3a91 --- /dev/null +++ b/raspi_mount.scad @@ -0,0 +1,24 @@ +$fn=60; + + +projection(cut=true) +{ +translate([5,3,0]) difference() +{ +translate([-5,-3,0]) cube([100,75,3]); + + +translate([0,20,0]) +{ +cylinder(10,1.5,1.5,true); +translate([58,0,0]) cylinder(10,1.5,1.5,true); +translate([58,49,0]) cylinder(10,1.5,1.5,true); +translate([0,49,0]) cylinder(10,1.5,1.5,true); +} + +translate([0,0,0]) cylinder(10,1.5,1.5,true); +translate([89,0,0]) cylinder(10,1.5,1.5,true); + +translate([10,3,-5]) cube([70,13,10]); +} +} -- GitLab