Add mozc-dial nine dial edition.
Co-authored-by: Takashi Toyoshima <toyoshim@google.com> Co-authored-by: Shun Ikejima <ikejima@google.com>
@@ -2,7 +2,7 @@ Gboard[English version](./README.md) is available.
|
||||
|
||||
# Gboard ダイヤルバージョン
|
||||
|
||||
このディレクトリは 2025 年 10 月 1 日にリリースされた Gboard ダイヤルバージョンの設計データとファームウエアを含んでいます。
|
||||
このディレクトリは 2025 年 10 月 1 日にリリースされた Gboard ダイヤルバージョンの設計データとファームウェアを含んでいます。
|
||||
Gboard ダイヤルバージョンは正式な Google 製品ではありません。
|
||||
|
||||

|
||||
@@ -23,7 +23,7 @@ Gboard ダイヤルバージョン
|
||||
|
||||

|
||||
|
||||
今年も 3D プリント用モデルデータ、基板データ、ファームウエアを公開しています。
|
||||
今年も 3D プリント用モデルデータ、基板データ、ファームウェアを公開しています。
|
||||
|
||||
[ビルドガイドはこちら](./buildguide_ja.md)
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ First, attach the photo sensors from the side where the U1, U2, and U3 markings
|
||||
|
||||
On the back side, there are places to attach three resistors on the `(SENSOR)` side and three on the `(LED)` side, as shown in the figure. Both through-hole and chip resistors can be used, so use the parts of your choice. However, even for through-hole types, it is more stable to mount them without passing them through the holes when attaching the dial.
|
||||
|
||||
As mentioned earlier, the resistors depend on the adjustment, but it is recommended to leave the `(SENSOR)` side unpopulated and install 330Ω resistors on the `(LED)` side as a standard.
|
||||
As for the resistors, it depends on the adjustment as mentioned above. By default, we recommended using the internal pull-up, leaving the `(SENSOR)` side unpopulated and installing a 330Ω resistor on the `(LED)` side. However, since the internal resistance value varies greatly from device to device, we now recommend using the `no_pull` variant of the firmware, with 33KΩ on the `(SENSOR)` side and 330Ω on the `(LED)` side.
|
||||
|
||||
For the 1x5 pin header, using an L-shaped one will fit well in the case.
|
||||
|
||||
@@ -129,9 +129,9 @@ Follow the general method for the Raspberry Pi Pico. Connect the Raspberry Pi Pi
|
||||
|
||||
#### Assembly
|
||||
|
||||
Currently, we have released up to the schematics. We will release the Gerber data soon, so please look forward to it!
|
||||
The Gerber data for the main board is in `board/gerber/main.zip`. Together with `main_bom.csv` and `main_positions.csv`, this data can be used to order board manufacturing and assembly from JLCPCB. If you order correctly, you will receive a semi-finished board like the one below.
|
||||
|
||||

|
||||

|
||||
|
||||
### Assembly
|
||||
|
||||
@@ -139,6 +139,14 @@ Attach 1x5 L-shaped pin headers for connecting to the sensor boards to `SENSOR A
|
||||
|
||||
Attach 1x5 L-shaped pin headers for connecting to the motors to `MOTOR A`, `MOTOR B`, `MOTOR C`, `MOTOR D`, `MOTOR E`, `MOTOR F`, `MOTOR G`, `MOTOR H`, and `MOTOR I`.
|
||||
|
||||

|
||||
|
||||
If you attach them facing outwards on the front side like this, it will be easier to route the cables during wiring. It is a good idea to not insert the inner pins all the way, but to leave them slightly raised to create a height difference. Be especially careful with `SENSOR I-H`, which will pass over the USB connector.
|
||||
|
||||
The following work on the back side can minimize the board thickness and at the same time avoid short circuits with components and heat dissipation problems.
|
||||
|
||||

|
||||
|
||||
Attach a 1x3 pin header to the location marked `U1 PWR U2` and short the `U1` and `PWR` positions with a jumper pin.
|
||||
|
||||
Attach a 1x3 pin header to the location marked `USB V_MTR ALT` and short the `USB` and `V_MTR` positions with a jumper pin.
|
||||
@@ -161,6 +169,16 @@ Referring to the [Common to All Dial Editions](#common-to-all-dial-editions) sec
|
||||
| SENSOR I-L | 3 |
|
||||
| SENSOR I-H | 1 |
|
||||
|
||||
### Firmware Flashing
|
||||
|
||||
This dedicated board also follows the general method for Raspberry Pi Pico, but since two RP2040s are mounted on the board, you need to flash two firmwares to each.
|
||||
|
||||
First, flash the sub-chip using the USB Type-C terminal labeled `USB 2`. The jumper labeled `U1 PWR U2` normally shorts `U1` and `PWR`. This is a setting where the power on the board is taken from the `USB 1` terminal. Temporarily change this to short `PWR` and `U2`.
|
||||
|
||||
In this state, connect the `USB 2` terminal to the PC while holding down `BOOT 2`. Copy `sub.uf2` or `sub_no_pull.uf2` to the drive named `RPI-RP2` that appears on the PC. If the writing is successful, the drive will disappear.
|
||||
|
||||
Once disconnect from the PC, and then flash the main firmware. Return the jumper setting to shorting `U1` and `PWR`, and connect the `USB 1` terminal to the PC while holding down `BOOT 1`. Similarly, copy `main.uf2` or `main_no_pull.uf2`. When the drive disappears, the flashing is complete.
|
||||
|
||||
## Photo Sensor Adjustment
|
||||
|
||||
The photo sensor readings should not vary greatly as they are taken inside the case, but differences may arise due to the brightness of the 3D printing material or the quality of the paper on which the Gray code is printed. If the dial reading is unstable or the rotation does not stop, the sensor value change range may not be within the expected range. In that case, please adjust the sensor paying attention to the following points.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## 各ダイヤル版共通
|
||||
|
||||
### センサー基板(1枚あたり)
|
||||
### センサ基板(1枚あたり)
|
||||
|
||||
#### 部品表
|
||||
|
||||
@@ -12,37 +12,37 @@
|
||||
-------- | -------------------- | --- | ---
|
||||
R1,R3,R5 | 抵抗 330Ω | 3 | スルーホール用でも表面実装用でも可
|
||||
R2,R4,R6 | 未実装 | - |
|
||||
U1-3 | 反射型フォトセンサー RPR-220 | 3 | (例:[反射型フォトセンサー(フォトリフレクター) RPR-220](https://akizukidenshi.com/catalog/g/g111401/))
|
||||
J1 | 2.54mmピッチ 1x5 ピンヘッダー | 1 | L字のものが望ましい(例:[ピンヘッダー (オスL型) 1×40 (40P)](https://akizukidenshi.com/catalog/g/g101627/))
|
||||
U1-3 | 反射型フォトセンサ RPR-220 | 3 | (例:[反射型フォトセンサー(フォトリフレクター) RPR-220](https://akizukidenshi.com/catalog/g/g111401/))
|
||||
J1 | 2.54mmピッチ 1x5 ピンヘッダ | 1 | L字のものが望ましい(例:[ピンヘッダー (オスL型) 1×40 (40P)](https://akizukidenshi.com/catalog/g/g101627/))
|
||||
|
||||
#### 実装
|
||||
|
||||
この説明では3ビット分全て実装する場合について説明していますが、9ダイヤル版ではセンサーによっては1ビットまたは2ビット分の実装で良い場合があります。その場合は、上(U1)から順に必要な数だけ実装してください。詳しくは9ダイヤル版の説明に従ってください。
|
||||
この説明では3ビット分全て実装する場合について説明していますが、9ダイヤル版ではセンサによっては1ビットまたは2ビット分の実装で良い場合があります。その場合は、上(U1)から順に必要な数だけ実装してください。詳しくは9ダイヤル版の説明に従ってください。
|
||||
|
||||
また、すべて制作する前に、実際にグレイコード板の値が適切に読み取れるか確認し、問題がない事を確認してから作ると万が一の際の手間が軽減できます。うまくいかない場合にはR2,R4,R6に抵抗を実装します。詳しくは[読み取りセンサー調整](#読み取りセンサー調整)を確認してください。
|
||||
また、すべて制作する前に、実際にグレイコード板の値が適切に読み取れるか確認し、問題がない事を確認してから作ると万が一の際の手間が軽減できます。うまくいかない場合にはR2,R4,R6に抵抗を実装します。詳しくは[読み取りセンサ調整](#読み取りセンサ調整)を確認してください。
|
||||
|
||||

|
||||
|
||||
まずはU1、U2、U3の印刷が見える方から、フォトセンサーを取りつけます。向きに十分気をつけて下さい。右上の角が面取りされているので、印刷面とセンサーの形状を見て、同じ向きになるよう設置してください。正しく設置したら、裏側から不要な足を切り取りハンダ付けします。
|
||||
まずはU1、U2、U3の印刷が見える方から、フォトセンサを取り付けます。向きに十分気をつけて下さい。右上の角が面取りされているので、印刷面とセンサの形状を見て、同じ向きになるよう設置してください。正しく設置したら、裏側から不要な足を切り取りハンダ付けします。
|
||||
|
||||

|
||||
|
||||
裏面はこの図のように`(SENSOR)`側に3つ、`(LED)`側に3つの抵抗を取り付けられるようになっています。抵抗はスルーホール用のものと、チップ抵抗と、いずれのタイプでも取り付けられるようになっているので、お好みいのパーツを使って取り付けてください。ただし、スルーホール用の物でも、穴には通さずに取り付けた方がダイヤル取り付け時に安定します。
|
||||
|
||||
抵抗については前述の通り調整に依存しますが、標準では`(SENSOR)`側は未実装、`(LED)`側に330Ωの抵抗を取り付ける事を推奨します。
|
||||
抵抗については前述の通り調整に依存します。標準では内部抵抗を用いて、`(SENSOR)`側は未実装、`(LED)`側に330Ωの抵抗を取り付ける事を推奨していましたが、内部抵抗値は個体によりバラツキが大きいようなので、`no_pull`版のファームウェアを用いて、`(SENSOR)`側は33KΩ、`(LED)`側は330Ωを推奨します。
|
||||
|
||||
また、1x5のピンヘッダーについては、L字の物を使うとケースにうまく収まります。
|
||||
また、1x5のピンヘッダについては、L字の物を使うとケースにうまく収まります。
|
||||
|
||||
組立時には`⇧Center`マークに注意してください。ダイヤル内周側が矢印の方向になります。
|
||||
|
||||
## 1ダイヤル版
|
||||
|
||||
センサー基板以外は市販の汎用部品を使う入門版です。
|
||||
センサ基板以外は市販の汎用部品を使う入門版です。
|
||||
|
||||
### 部品
|
||||
|
||||
- Raspberry Pi Pico: 1個
|
||||
- センサー基板(3bit実装): 2個
|
||||
- センサ基板(3bit実装): 2個
|
||||
- [ユニポーラー ステッピングモーター 28BYJ-48 5V](https://akizukidenshi.com/catalog/g/g113256/):
|
||||
1個
|
||||
- [ステッピングモータドライブモジュール [M2003S]](https://www.aitendo.com/product/12366): 1個
|
||||
@@ -50,20 +50,20 @@ J1 | 2.54mmピッチ 1x5 ピンヘッダー | 1 | L字のものが望ましい
|
||||
|
||||
### 組み立て
|
||||
|
||||
#### センサー基板
|
||||
#### センサ基板
|
||||
|
||||
各ダイヤル版共通で説明したセンサー基板を、3bit実装で2つ組み立てます。 1つを`SENSOR L`、もう1つを`SENSOR H`と呼ぶことにします。
|
||||
各ダイヤル版共通で説明したセンサ基板を、3bit実装で2つ組み立てます。 1つを`SENSOR L`、もう1つを`SENSOR H`と呼ぶことにします。
|
||||
|
||||
実験時に使用したもので見本としては綺麗なものではありませんが、スルーホール型の抵抗とチップ抵抗それぞれの実装例がこちらになります。
|
||||
|
||||

|
||||
|
||||
それぞれに基板のピンヘッダーには`V`、`1`、`2`、`3`、`G`の5つの端子があります。
|
||||
それぞれに基板のピンヘッダには`V`、`1`、`2`、`3`、`G`の5つの端子があります。
|
||||
このうち`V`は3.3V電源へ繋ぐのですが、今回利用するRaspberry Pi
|
||||
Picoには3.3V出力端子は1つしかありませんので、写真の赤い配線のように基板上で`V`が通っている端子ペアを接続します。
|
||||
センサー基板の説明で上げた図において`V`と書かれた長方形の内側にある端子、つまり抵抗用パターンのうち外側の6箇所が`V`になっています。
|
||||
センサ基板の説明で上げた図において`V`と書かれた長方形の内側にある端子、つまり抵抗用パターンのうち外側の6箇所が`V`になっています。
|
||||
|
||||
上側のセンサー基板が`SENSOR L`で内周側、下側のセンサー基板が`SENSOR H`で外周側になります。
|
||||
上側のセンサ基板が`SENSOR L`で内周側、下側のセンサ基板が`SENSOR H`で外周側になります。
|
||||
`V`を相互接続したので、一番上の最も内側にあたる端子の`V`は今回接続不要となります。
|
||||
|
||||
#### ステッピングモータドライブモジュール
|
||||
@@ -71,11 +71,11 @@ Picoには3.3V出力端子は1つしかありませんので、写真の赤い
|
||||

|
||||
|
||||
Raspberry Pi
|
||||
PicoのGPIOでは直接モーターをドライブできないため、1ダイヤル版では市販のドライブモジュールを流用します。シンクタイプのドライバなら今回指定したもの以外でも構いませんし、9ダイヤル版の回路を参考に自作する事も可能です。
|
||||
PicoのGPIOでは直接モータをドライブできないため、1ダイヤル版では市販のドライブモジュールを流用します。シンクタイプのドライバなら今回指定したもの以外でも構いませんし、9ダイヤル版の回路を参考に自作する事も可能です。
|
||||
|
||||
今回参考に上げた物を例にすると、緑で囲んだ`IN1`〜`IN4`がRaspberry Pi
|
||||
Picoからの出力の`1`〜`4`を受ける端子になります。黒で囲んだ`GND`と赤で囲んだ`VCC`がそれぞれ`G`と`V`です。
|
||||
モーターの方はUSBバスから5Vの電源をRaspberry Pi
|
||||
モータの方はUSBバスから5Vの電源をRaspberry Pi
|
||||
Pico経由で引き込みます。0.3Aくらい必要となるため、1ダイヤル版のファームウェアではUSB microでの上限である0.5Aを要求しています。
|
||||
|
||||
白い端子はステッピングモータとの接続に使います。
|
||||
@@ -84,7 +84,7 @@ Pico経由で引き込みます。0.3Aくらい必要となるため、1ダイ
|
||||
|
||||

|
||||
|
||||
市販のRaspberry Pi Picoに対して、写真のようにL字のピンヘッダーを取り付けます。
|
||||
市販のRaspberry Pi Picoに対して、写真のようにL字のピンヘッダを取り付けます。
|
||||
写真で下の方にあるDEBUG用のピン3つについては、ファームウェアの開発とデバッグが必要な場合のみで構いませんので、お好みで取り付けてください。
|
||||
|
||||

|
||||
@@ -102,9 +102,9 @@ Pico基板上の`BOOT`ボタンを押しながらPCに接続すると`RPI-RP2`
|
||||
### 部品
|
||||
|
||||
- メイン基板: 1個
|
||||
- センサー基板(3bit実装): 6個
|
||||
- センサー基板(2bit実装): 4個
|
||||
- センサー基板(1bit実装): 1個
|
||||
- センサ基板(3bit実装): 6個
|
||||
- センサ基板(2bit実装): 4個
|
||||
- センサ基板(1bit実装): 1個
|
||||
- [ユニポーラー ステッピングモーター 28BYJ-48 5V](https://akizukidenshi.com/catalog/g/g113256/):
|
||||
9個
|
||||
- 配線材: 適宜
|
||||
@@ -127,7 +127,7 @@ R203-204,R303-304 | 抵抗 5.1KΩ | 4
|
||||
R205,R207,R305,R307 | 抵抗 1KΩ | 4
|
||||
R206,R306 | 抵抗 10KΩ | 2
|
||||
SW101,SW201,SW301 | スイッチ | 3
|
||||
U101 | AMS1117 3.3V レギュレーター | 1
|
||||
U101 | AMS1117 3.3V レギュレータ | 1
|
||||
U102-103,U105,U107,U109 | TBD62083AFNG | 5
|
||||
U104,U106,U108,U110 | 74HC238 | 4
|
||||
U201,U301 | RP2040 | 2
|
||||
@@ -137,23 +137,31 @@ N/A | ジャンパーピン | 2
|
||||
|
||||
#### 実装
|
||||
|
||||
現在、回路図まで公開しています。近日中にガーバーデータを公開しますのでお楽しみに!
|
||||
メイン基板のガーバーデータは `board/gerber/main.zip` にあります。`main_bom.csv`と`main_positions.csv`と合わせて、JLCPCBで基板製造と組み立ての発注ができるデータになっています。正しく発注すると、以下のような半完成品の基板が届きます。
|
||||
|
||||

|
||||

|
||||
|
||||
### 組み立て
|
||||
|
||||
`SENSOR A-L`、`SENSOR A-H`、`SENSOR B`、`SENSOR C`、`SENSOR D`、`SENSOR E`、`SENSOR F`、`SENSOR G`、`SENSOR H`、`SENSOR I-L`、`SENSOR I-H`それぞれに、センサー基板との接続に用いる1x5のL字型ピンヘッダを取り付けます。
|
||||
`SENSOR A-L`、`SENSOR A-H`、`SENSOR B`、`SENSOR C`、`SENSOR D`、`SENSOR E`、`SENSOR F`、`SENSOR G`、`SENSOR H`、`SENSOR I-L`、`SENSOR I-H`それぞれに、センサ基板との接続に用いる1x5のL字型ピンヘッダを取り付けます。
|
||||
|
||||
`MOTOR A`、`MOTOR B`、`MOTOR C`、`MOTOR D`、`MOTOR E`、`MOTOR F`、`MOTOR G`、`MOTOR H`、`MOTOR I`についてはモーターとの接続に用いる1x5のL字型ピンヘッダを取り付けます。
|
||||
`MOTOR A`、`MOTOR B`、`MOTOR C`、`MOTOR D`、`MOTOR E`、`MOTOR F`、`MOTOR G`、`MOTOR H`、`MOTOR I`についてはモータとの接続に用いる1x5のL字型ピンヘッダを取り付けます。
|
||||
|
||||

|
||||
|
||||
表面に、このように外側に向けて取り付けると、配線の時にケーブルの取り回しがしやすくなります。内側のピンは奥まで入れずに、少し浮かせて高さに差がでるようにすると良いでしょう。特にUSBコネクタの上を通す事になる`SENSOR I-H`は注意が必要です。
|
||||
|
||||
以下は裏面で作業するとボードの厚みを最小限に抑えると同時に部品とのショートや放熱問題を避けることができます。
|
||||
|
||||

|
||||
|
||||
`U1 PWR U2`と書かれた箇所に1x3のピンヘッダを取り付け、ジャンパーピンで`U1`と`PWR`の位置をショートします。
|
||||
|
||||
`USB V_MTR ALT`と書かれた箇所に1x3のピンヘッダと取り付け、ジャンパーピンで`USB`と`V_MTR`の位置をショートします。
|
||||
|
||||
### センサー基板
|
||||
### センサ基板
|
||||
|
||||
[各ダイヤル版共通](#各ダイヤル版共通)の説明を参照して、合計11個のセンサー基板をそれぞれ以下の実装ビット幅で用意します。多めに実装する分には待機時消費電力の増加以外は問題ないので、全てを3ビット幅で用意してしまっても問題はありません。
|
||||
[各ダイヤル版共通](#各ダイヤル版共通)の説明を参照して、合計11個のセンサ基板をそれぞれ以下の実装ビット幅で用意します。多めに実装する分には待機時消費電力の増加以外は問題ないので、全てを3ビット幅で用意してしまっても問題はありません。
|
||||
|
||||
参照名 | 実装ビット幅
|
||||
---------- | ------
|
||||
@@ -169,19 +177,29 @@ SENSOR H | 2
|
||||
SENSOR I-L | 3
|
||||
SENSOR I-H | 1
|
||||
|
||||
## フォトセンサーの調整について
|
||||
### ファームウェア書き込み
|
||||
|
||||
フォトセンサーの読み取り値は、ケース内での読み取りになるため大きな差は出にくいはずですが、3Dプリント素材の明るさの違いや、グレイコードを印刷した紙の質などによって違いが出てくる可能性があります。ダイヤルの読み取りが安定しない、回転が止まらないなどの症状が出ている場合にはセンサー値の変化範囲が想定内に収まっていない可能性がありますので、以下の点に注意してセンサーの調整をしてください。
|
||||
この専用ボードもRaspberry Pi Picoの一般的な方法に従いますが、ボード上に2つのRP2040が搭載されているため、2つのファームウェアをそれぞれに書き込む必要があります。
|
||||
|
||||
まずは`USB 2`と書かれたUSB Type-C端子を用いてサブチップに書き込みます。`U1 PWR U2`と書かれたジャンパーは通常`U1`と`PWR`をショートしてあります。これはボード上の電源は`USB 1`端子からとるような設定です。これを一時的に`PWR`と`U2`をショートするようにします。
|
||||
|
||||
この状態で`BOOT 2`を押しながら`USB 2`端子とPCを接続します。この状態でPC上に現れた`RPI-RP2`という名前のドライブに`sub.uf2`または`sub_no_pull.uf2`をコピーします。正しく書き込みができた場合ドライブが消えます。
|
||||
|
||||
一旦PCとの接続を解除し、続けてメインのファームウェアを書き込みます。ジャンパー設定を`U1`と`PWR`のショートに戻し、`BOOT 1`を押しながら`USB 1`端子とPCを接続します。同様にして`main.uf2`または`main_no_pull.uf2`をコピーします。同じくドライブが消えたら書き込み完了です。
|
||||
|
||||
## フォトセンサの調整について
|
||||
|
||||
フォトセンサの読み取り値は、ケース内での読み取りになるため大きな差は出にくいはずですが、3Dプリント素材の明るさの違いや、グレイコードを印刷した紙の質などによって違いが出てくる可能性があります。ダイヤルの読み取りが安定しない、回転が止まらないなどの症状が出ている場合にはセンサ値の変化範囲が想定内に収まっていない可能性がありますので、以下の点に注意してセンサの調整をしてください。
|
||||
|
||||
### RP2040での読み取り
|
||||
|
||||
センサーの値はGPIOでデジタル値として処理しています。そのため、3.3V稼働時にHIGHは2.0 - 3.3[V]、LOWは0.0 -
|
||||
センサの値はGPIOでデジタル値として処理しています。そのため、3.3V稼働時にHIGHは2.0 - 3.3[V]、LOWは0.0 -
|
||||
0.3[V]の範囲に収まるよう調整されている必要があります。
|
||||
|
||||
### LEDセンサー調整
|
||||
### LEDセンサ調整
|
||||
|
||||
LEDに流れる電流が少ないと発光も弱くなり、センサーで読み取る光量も不足します。そのため、読み取り値が高くなり、白と黒で電圧差がはっきりとでなくなってきます。その場合、`(LED)`と書かれた側にある3つの抵抗を弱いものに変えてみてください。標準では330Ωで調整していますが、今回用いているフォトセンサーRPR-220では40Ωくらいまで下げても定格内に収まります。ただし、待機時の消費電力に大きく影響しますので、可能なら読み取りセンサー側の抵抗で調整してください。
|
||||
LEDに流れる電流が少ないと発光も弱くなり、センサで読み取る光量も不足します。そのため、読み取り値が高くなり、白と黒で電圧差がはっきりとでなくなってきます。その場合、`(LED)`と書かれた側にある3つの抵抗を弱いものに変えてみてください。標準では330Ωで調整していますが、今回用いているフォトセンサRPR-220では40Ωくらいまで下げても定格内に収まります。ただし、待機時の消費電力に大きく影響しますので、可能なら読み取りセンサ側の抵抗で調整してください。
|
||||
|
||||
### 読み取りセンサー調整
|
||||
### 読み取りセンサ調整
|
||||
|
||||
読み取りセンサーのpull-up抵抗値を変える事で、読み取る電圧値をシフトさせる事ができます。ただし、大きく変えすぎるとやはり白と黒の電圧差が出にくくなります。`(SENSOR)`と書かれた側にある3つの抵抗を実装する事で調整できます。標準のファームウェアではRP2040のpull-upにより、およそ50-80KΩでpull-upされる事を期待しています。黒で十分に電圧が上がらない場合は、追加の抵抗でより強くpull-upすると良いでしょう。[ファームウェア開発ガイド](../firmware/README_ja.md)に従いRP2040のpull-upを無効化すると、ここに実装した抵抗がそのままpull-up抵抗になります。無効化しない場合は並列接続での合成抵抗でpull-upする事になります。計算が少し煩雑ですが、より強くpull-upする分にはファームウェアを変えずに追加の抵抗で並列でpull-upする方が簡単かもしれません。
|
||||
読み取りセンサのpull-up抵抗値を変える事で、読み取る電圧値をシフトさせる事ができます。ただし、大きく変えすぎるとやはり白と黒の電圧差が出にくくなります。`(SENSOR)`と書かれた側にある3つの抵抗を実装する事で調整できます。標準のファームウェアではRP2040のpull-upにより、およそ50-80KΩでpull-upされる事を期待しています。黒で十分に電圧が上がらない場合は、追加の抵抗でより強くpull-upすると良いでしょう。[ファームウェア開発ガイド](../firmware/README_ja.md)に従いRP2040のpull-upを無効化すると、ここに実装した抵抗がそのままpull-up抵抗になります。無効化しない場合は並列接続での合成抵抗でpull-upする事になります。計算が少し煩雑ですが、より強くpull-upする分にはファームウェアを変えずに追加の抵抗で並列でpull-upする方が簡単かもしれません。
|
||||
|
||||
BIN
mozc-dial/board/gerber/main.zip
Normal file
20
mozc-dial/board/gerber/main_bom.csv
Normal file
@@ -0,0 +1,20 @@
|
||||
Designator,Footprint,Quantity,Value,LCSC Part #
|
||||
C101,0603,1,10u,
|
||||
"C102, C103, C104, C105, C106, C107, C108, C109, C110, C111, C112, C113, C114, C115, C116, C117, C118, C119, C120, C121",0402,20,100n,
|
||||
"C201, C209, C301, C309",0603,4,1u,
|
||||
"C202, C203, C204, C205, C206, C207, C208, C212, C302, C303, C304, C305, C306, C307, C308, C312",0402,16,100n,
|
||||
"C210, C211, C310, C311",0402,4,20p,
|
||||
J101,TestPoint_Pad_2.0x2.0mm,1,Conn_01x01,
|
||||
"J104, J105, J202, J203, J302, J303",TestPoint_Pad_1.0x1.0mm,6,Conn_01x01,
|
||||
"J201, J301",USBC_24P,2,USB_C_Receptacle,C2681555
|
||||
"R201, R202, R301, R302",0402,4,27.4,
|
||||
"R203, R204, R303, R304",0402,4,5.1K,
|
||||
"R205, R207, R305, R307",0402,4,1K,
|
||||
"R206, R306",0402,2,10K,
|
||||
"SW101, SW201, SW301",SW_SMD_PUSH,3,SW_Push,C720477
|
||||
U101,SOT-223-3_TabPin2,1,AMS1117-3.3,C347222
|
||||
"U102, U103, U105, U107, U109",SSOP-18_4.4x6.5mm_P0.65mm,5,TBD62083AFNG,C163229
|
||||
"U104, U106, U108, U110",SOP-16_3.9x9.9mm_P1.27mm,4,74HC238,C7432189
|
||||
"U201, U301",QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mm,2,RP2040,C2040
|
||||
"U202, U302",SOIC-8_5.3x5.3mm_P1.27mm,2,W25Q128JVS,C97521
|
||||
"Y201, Y301",Crystal_SMD_SeikoEpson_TSX3225-4Pin_3.2x2.5mm,2,12MHz_GND24,C9002
|
||||
|
81
mozc-dial/board/gerber/main_positions.csv
Normal file
@@ -0,0 +1,81 @@
|
||||
Designator,Mid X,Mid Y,Rotation,Layer
|
||||
C101,73.94,-46.22,0.0,top
|
||||
C102,32.8,-37.6,90.0,top
|
||||
C103,32.8,-52.9,90.0,top
|
||||
C104,33.0,-68.1,90.0,top
|
||||
C105,31.02,-86.4,180.0,top
|
||||
C106,46.2,-86.4,180.0,top
|
||||
C107,61.5,-86.3,180.0,top
|
||||
C108,76.7,-86.3,180.0,top
|
||||
C109,91.9,-86.3,180.0,top
|
||||
C110,101.2,-79.2,270.0,top
|
||||
C111,101.3,-64.0,270.0,top
|
||||
C112,101.3,-48.7,270.0,top
|
||||
C113,22.8,-64.0,270.0,top
|
||||
C114,22.8,-79.2,270.0,top
|
||||
C115,42.1,-99.1,0.0,top
|
||||
C116,57.3,-99.0,0.0,top
|
||||
C117,72.5,-99.1,0.0,top
|
||||
C118,87.8,-99.1,0.0,top
|
||||
C119,103.0,-99.1,0.0,top
|
||||
C120,111.7,-68.1,90.0,top
|
||||
C121,111.7,-52.78,90.0,top
|
||||
C201,46.0,-57.92,180.0,top
|
||||
C202,46.4,-62.22,180.0,top
|
||||
C203,51.6,-66.6,270.0,top
|
||||
C204,52.0,-55.6,90.0,top
|
||||
C205,57.0,-57.5,0.0,top
|
||||
C206,57.0,-58.5,0.0,top
|
||||
C207,51.0,-55.6,90.0,top
|
||||
C208,52.6,-66.6,270.0,top
|
||||
C209,55.3,-55.0,90.0,top
|
||||
C210,47.921,-69.147,90.0,top
|
||||
C211,42.321,-69.247,270.0,top
|
||||
C212,52.081,-45.04,180.0,top
|
||||
C301,79.0775,-49.4375,180.0,top
|
||||
C302,79.4775,-53.7375,180.0,top
|
||||
C303,84.8,-58.1,270.0,top
|
||||
C304,84.2,-47.1,90.0,top
|
||||
C305,90.0975,-49.1,0.0,top
|
||||
C306,90.0775,-50.1,0.0,top
|
||||
C307,85.2,-47.1,90.0,top
|
||||
C308,85.8,-58.1,270.0,top
|
||||
C309,88.5,-46.6,90.0,top
|
||||
C310,71.6,-56.02,90.0,top
|
||||
C311,66.0,-56.0,270.0,top
|
||||
C312,88.44,-34.42,180.0,top
|
||||
J201,55.338,-37.7025,180.0,top
|
||||
J301,112.0975,-43.198,90.0,top
|
||||
R201,53.0,-55.6,270.0,top
|
||||
R202,54.0,-55.6,270.0,top
|
||||
R203,57.738,-41.9772,0.0,top
|
||||
R204,52.638,-41.9772,180.0,top
|
||||
R205,41.121,-69.247,90.0,top
|
||||
R206,43.781,-45.74,0.0,top
|
||||
R207,43.781,-46.74,0.0,top
|
||||
R301,86.2,-47.1,270.0,top
|
||||
R302,87.2,-47.1,270.0,top
|
||||
R303,107.94,-45.6,270.0,top
|
||||
R304,107.84,-40.6,90.0,top
|
||||
R305,64.9,-56.0,90.0,top
|
||||
R306,79.555,-35.62,0.0,top
|
||||
R307,79.53,-36.62,0.0,top
|
||||
SW101,68.44,-50.62,0.0,top
|
||||
SW201,41.14,-48.92,90.0,top
|
||||
SW301,76.84,-38.82,90.0,top
|
||||
U101,68.44,-43.02,270.0,top
|
||||
U102,27.7,-73.6,180.0,top
|
||||
U103,106.6,-58.4,0.0,top
|
||||
U104,54.5,-74.825,0.0,top
|
||||
U105,52.1,-93.4,270.0,top
|
||||
U106,66.5,-74.825,0.0,top
|
||||
U107,79.3,-93.5,270.0,top
|
||||
U108,78.5,-74.825,0.0,top
|
||||
U109,106.7,-74.2,0.0,top
|
||||
U110,90.5,-74.825,0.0,top
|
||||
U201,51.762,-61.22,0.0,top
|
||||
U202,49.681,-48.64,0.0,top
|
||||
U301,84.8,-52.8,0.0,top
|
||||
U302,85.34,-38.12,0.0,top
|
||||
Y201,45.1,-69.2,180.0,top
|
||||
Y301,68.8,-56.0,180.0,top
|
||||
|
55733
mozc-dial/board/main/main.kicad_pcb
Normal file
@@ -50,7 +50,7 @@
|
||||
"shapes"
|
||||
],
|
||||
"visible_layers": "00000000_00000000_0fffd575_ffffffff",
|
||||
"zone_display_mode": 1
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
- stls/ : STL files for the case
|
||||
- stls/one_dial/ : For the 1-dial edition
|
||||
- stls/full/ : For the 9-dial edition (Stay tuned!)
|
||||
- stls/full/ : For the 9-dial edition
|
||||
- pattern/ : Encoder pattern files
|
||||
- board/ : KiCad schematics and board layout data
|
||||
- board/gerber/ : Gerber data for PCB production and assembly
|
||||
@@ -102,30 +102,33 @@ Secure the board to the edge of the bottom case with double-sided tape or simila
|
||||
|
||||
### 9-Dial Edition
|
||||
|
||||
**The 9-dial edition is currently under adjustment.**
|
||||
|
||||

|
||||
|
||||
The 9-dial edition consists of nine dial modules.
|
||||
These modules are named "Dial A" through "Dial I" respectively.
|
||||
These names are used for the encoders, patterns, wiring, and so on.
|
||||
|
||||

|
||||
|
||||
The keymap is as follows:
|
||||
|
||||

|
||||
|
||||
#### Required Parts
|
||||
|
||||
- 3D printed parts
|
||||
- 1 each of left and right bottom cases
|
||||
- 1 each of left and right top cases
|
||||
- 9 dials (including the enter key)
|
||||
- 9 dial caps
|
||||
- 5 types of encoders, 9 in total
|
||||
- 1 for 6 bits
|
||||
- 1 for 4 bits
|
||||
- 3 for 3 bits
|
||||
- 3 for 2 bits
|
||||
- 1 for 1 bit
|
||||
- 9 clutches
|
||||
- Bottom cases (case_bottom_left.stl and case_top_right.stl), one for each side
|
||||
- Top cases (case_top_left.stl and case_top_right.stl), one for each side
|
||||
- 9 dials (dial_a.stl to dial_i.stl), including the enter key
|
||||
- 9 dial caps (cap_a.stl to cap_i.stl)
|
||||
- 9 encoders (encoder_a.stl to encoder_i.stl)
|
||||
- 9 clutches (clutch.stl)
|
||||
- 2 types of fixing covers, 9 in total
|
||||
- 7 small
|
||||
- 2 large
|
||||
- 7 small (cover_small.stl)
|
||||
- 2 large (cover_large.stl)
|
||||
- 3 types of over-rotation prevention claws, 9 in total
|
||||
- 8 small
|
||||
- 1 triple
|
||||
- 8 small (end.stl)
|
||||
- 1 triple (end3.stl)
|
||||
- 9 types of encoder patterns
|
||||
- Screws
|
||||
- About 100 self-tapping screws, 2mm diameter, 4mm length
|
||||
@@ -152,17 +155,21 @@ Connect the left and right bottom cases with four M3 screws.
|
||||
|
||||
Same as the 1-dial edition.
|
||||
|
||||
#### Step 2: Assemble the Cover Module
|
||||
#### Step 3: Assemble the Cover Module
|
||||
|
||||
Basically the same as the 1-dial edition.
|
||||
|
||||
Attach only one sensor board to seven of the covers.
|
||||
Attach two sensor boards to two of the covers.
|
||||
|
||||
#### Step 3: Attach to the Case
|
||||
#### Step 4: Attach to the Case
|
||||
|
||||
Basically the same as the 1-dial edition.
|
||||
|
||||
#### Step 4: Wiring
|
||||
Please refer to the following figure for how to attach the covers.
|
||||
|
||||

|
||||
|
||||
#### Step 5: Wiring
|
||||
|
||||
Wire the motor and sensor board to the dedicated main board.
|
||||
|
||||
@@ -40,10 +40,10 @@
|
||||
- 直径2mm 長さ4mmのセルフタッピングスクリュー 12個
|
||||
- ワッシャー2個
|
||||
- 電子部品([詳細についてはboardディレクトリを参照のこと](./board/README_ja.md))
|
||||
- [ファームウエア書き込み済み](./firmware/README_ja.md) Raspberry Pi Pico 1個
|
||||
- 組み立て済センサー基板 2枚
|
||||
- [ファームウェア書き込み済み](./firmware/README_ja.md) Raspberry Pi Pico 1個
|
||||
- 組み立て済センサ基板 2枚
|
||||
- [ユニポーラー ステッピングモーター 28BYJ-48 5V](https://akizukidenshi.com/catalog/g/g113256/): 1個
|
||||
- [モータードライバーモジュール](https://www.aitendo.com/product/12366): 1個
|
||||
- [ステッピングモータドライブモジュール](https://www.aitendo.com/product/12366): 1個
|
||||
- 配線材: 適宜
|
||||
|
||||
#### Step 1: エンコーダの作成
|
||||
@@ -59,15 +59,15 @@
|
||||
|
||||
#### Step 2: カバーモジュールの組み立て
|
||||
|
||||
カバーは、フォトセンサーを使う仕組み上、透過しない色で印刷する必要があります。
|
||||
カバーは、フォトセンサを使う仕組み上、透過しない色で印刷する必要があります。
|
||||
試作では灰色のPLAで印刷しました。
|
||||
他の色の場合、センサ基板の抵抗値を調節する必要があるかもしれません。
|
||||
|
||||
裏面に、センサ基板2枚をネジ止めします。
|
||||
裏面に、センサ基板2枚をねじ止めします。
|
||||
|
||||
同じく裏面にステッピングモータをネジ止めします。
|
||||
同じく裏面にステッピングモータをねじ止めします。
|
||||
|
||||
モータに近い側の基板をセンサーL基板、もう1つの基板をセンサーH基板を呼びます。
|
||||
モータに近い側の基板をセンサL基板、もう1つの基板をセンサH基板を呼びます。
|
||||
|
||||

|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
|
||||

|
||||
|
||||
#### Step 3: ケースへの取りつけ
|
||||
#### Step 3: ケースへの取り付け
|
||||
|
||||
裏側から、エンコーダ、そしてカバーを取り付けます。
|
||||
カバーの向きは下の写真を参考にしてください。
|
||||
@@ -87,13 +87,13 @@
|
||||
|
||||

|
||||
|
||||
上からダイヤルキャップをつけネジで止めます。
|
||||
上からダイヤルキャップをつけねじで止めます。
|
||||
|
||||

|
||||
|
||||
#### Step 4: 配線
|
||||
|
||||
RaspberryPiPicoにセンサ基板とモータドライバをつけます。
|
||||
Raspberry Pi Picoにセンサ基板とモータドライバをつけます。
|
||||
|
||||

|
||||
|
||||
@@ -103,39 +103,42 @@ RaspberryPiPicoにセンサ基板とモータドライバをつけます。
|
||||
|
||||
### 9ダイヤル版
|
||||
|
||||
**9ダイヤル版は現在調整中です。**
|
||||
|
||||

|
||||
|
||||
9ダイヤルは、9個のダイヤルモジュールからなります。
|
||||
9個のモジュールはそれぞれ次のように"ダイヤルA"から"ダイヤルI"と呼んでいます。
|
||||
エンコーダやパターン、配線などでは、この番号で呼んでいます。
|
||||
|
||||

|
||||
|
||||
また、キーマップは以下のようになっています。
|
||||
|
||||

|
||||
|
||||
#### 必要な部品
|
||||
|
||||
- 3Dプリント品
|
||||
- ケース下面 左右1つずつ
|
||||
- ケース上面 左右1つずつ
|
||||
- ダイヤル 9個 (エンターキーを含む)
|
||||
- ダイヤルキャップ 9個
|
||||
- エンコーダ 5種 計9個
|
||||
- 6ビット用 1個
|
||||
- 4ビット用 1個
|
||||
- 3ビット用 3個
|
||||
- 2ビット用 3個
|
||||
- 1ビット用 1個
|
||||
- クラッチ 9個
|
||||
- ケース下面 (case_bottom_left.stlとcase_top_right.stl) 左右1つずつ
|
||||
- ケース上面 (case_top_left.stlとcase_top_right.stl) 左右1つずつ
|
||||
- ダイヤル (dial_a.stl から dial_i.stl) 9個 (エンターキーを含む)
|
||||
- ダイヤルキャップ (cap_a.stl から cap_i.stl) 9個
|
||||
- エンコーダ (encoder_a.stl から encoder_i.stl) 9個
|
||||
- クラッチ (clutch.stl) 9個
|
||||
- 固定カバー 2種 計9個
|
||||
- 小 7個
|
||||
- 大 2個
|
||||
- 小 (cover_small.stl) 7個
|
||||
- 大 (cover_large.stl) 2個
|
||||
- 回転しすぎ防止つめ 3種 9個
|
||||
- 小 8個
|
||||
- 3連 1個
|
||||
- 小 (end.stl) 8個
|
||||
- 3連 (end3.stl) 1個
|
||||
- エンコーダパターン 9種類
|
||||
- ねじ類
|
||||
- 直径2mm 長さ4mmのセルフタッピングスクリュー 約100個
|
||||
- ワッシャー 18個
|
||||
- M3ボルトとナット 少々
|
||||
- 電子部品([詳細については基板組み立てガイドを参照のこと](./board/README_ja.md))
|
||||
- 組み立て[ファームウエア書き込み](./firmware/README_ja.md)済みメイン基板 1枚
|
||||
- 組み立て済センサー基板 11枚
|
||||
- [ユニポーラー ステッピングモーター 28BYJ-48 5V](https://akizukidenshi.com/catalog/g/g113256/): 9個
|
||||
- 組み立て[ファームウェア書き込み](./firmware/README_ja.md)済みメイン基板 1枚
|
||||
- 組み立て済センサ基板 11枚
|
||||
- [ユニポーラー ステッピングモーター 28BYJ-48 5V](https://akizukidenshi.com/catalog/g/g113256/): 1個
|
||||
- 配線材: 適宜
|
||||
|
||||
#### Step 1: 左右の接続
|
||||
@@ -148,17 +151,21 @@ RaspberryPiPicoにセンサ基板とモータドライバをつけます。
|
||||
|
||||
1ダイヤル版と同様です。
|
||||
|
||||
#### Step 2: カバーモジュールの組み立て
|
||||
#### Step 3: カバーモジュールの組み立て
|
||||
|
||||
基本的には1ダイヤル版と同様です。
|
||||
|
||||
カバーのうち7つは、センサ基板を1枚だけ組みつけます。
|
||||
2つは、センサ基板を2枚つけます。
|
||||
|
||||
#### Step 3: ケースへの取りつけ
|
||||
#### Step 4: ケースへの取り付け
|
||||
|
||||
基本的には1ダイヤル版と同様です。
|
||||
|
||||
#### Step 4: 配線
|
||||
カバーのつけ方は下の図を参考にしてください。
|
||||
|
||||

|
||||
|
||||
#### Step 5: 配線
|
||||
|
||||
専用のメイン基板に、モータとセンサ基板を配線します。
|
||||
|
||||
@@ -16,6 +16,10 @@ We have included pre-built firmware under `prebuilt/`, so you can use them as is
|
||||
|
||||
Use `main.uf2` and `sub.uf2` for the 9-dial edition, and `one_dial.uf2` for the 1-dial edition.
|
||||
|
||||
We have also prepared `main_no_pull.uf2`, `sub_no_pull.uf2`, and `one_dial_no_pull.uf2` that do not use internal pull-up for the sensors. For details, please see [About Sensor Adjustment](#about-sensor-adjustment).
|
||||
|
||||
If the dial rotation is reversed, try using the firmware with `backward` in its name. It seems that the direction of rotation may differ depending on the shipping time even for the same model number product.
|
||||
|
||||
## Guide to Developing Your Own Firmware
|
||||
|
||||
Install [Visual Studio Code](https://code.visualstudio.com/) and add the [Raspberry Pi Pico extension](https://marketplace.visualstudio.com/items?itemName=raspberry-pi.raspberry-pi-pico).
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
- common/ : 各ボード共通で用いられるライブラリのソースファイル
|
||||
- main/ : 9ダイヤル版メインチップ用のソースファイルとプロジェクト
|
||||
- sub/ : 9ダイヤル版サブチップ用のソースファイルとプロジェクト
|
||||
- one_dial/ : 1ダイヤル版 Raspberry Pi Pico用のソーとファイルとプロジェクト
|
||||
- one_dial/ : 1ダイヤル版 Raspberry Pi Pico用のソースファイルとプロジェクト
|
||||
|
||||
## 事前にビルドしたファームウェア
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
|
||||
9ダイヤル板は`main.uf2`と`sub.uf2`を、1ダイヤル板は`one_dial.uf2`を使用します。
|
||||
|
||||
それぞれセンサに内部pull-upを使わない`main_no_pull.uf2`、`sub_no_pull.uf2`、`one_dial_no_pull.uf2`も用意しています。詳しくは[センサの調整について](#センサの調整について)をご覧ください。
|
||||
|
||||
ダイヤルの回転方向が逆だった場合には`backward`の名前がついたものを使用してみてください。同じ型番の製品でも出荷時期により回転方向が異なるようです。
|
||||
|
||||
## 独自のファームウェア開発の手引き
|
||||
|
||||
[Visual Studio Code](https://code.visualstudio.com/) をインストールし、[Raspberry Pi Pico拡張](https://marketplace.visualstudio.com/items?itemName=raspberry-pi.raspberry-pi-pico) を追加します。
|
||||
@@ -52,9 +56,9 @@ Activity Barの`Raspberry Pi Pico Projects`の拡張機能から`Import Project`
|
||||
|
||||
などを定義し、`CMakeFiles.txt`のボード設定で指定する事で、キャッシュミス時のQSPI経由でのEEPROMアクセスを最適化し、さらなる性能を引き出す事も可能です。
|
||||
|
||||
### センサーの調整について
|
||||
### センサの調整について
|
||||
|
||||
標準ではセンサーは内部抵抗でpull-upされています。外部抵抗によりpull-upで調整したい場合、`photo_sensor.cc`の`PhotoSensor::PhotoSensor()`内にある`gpio_pull_up(gpio);`を`gpio_disable_pulls(gpio);`に変更してください。
|
||||
標準ではセンサは内部抵抗でpull-upされています。外部抵抗によりpull-upで調整したい場合、`photo_sensor.cc`の`PhotoSensor::PhotoSensor()`内にある`gpio_pull_up(gpio);`を`gpio_disable_pulls(gpio);`に変更してください。
|
||||
|
||||
あるいは、内部抵抗を有効にしたまま外部抵抗との合成抵抗でpull-upする事も可能です。この場合、内部抵抗は公称値で50-80KΩ、外部抵抗とは並列接続になります。
|
||||
|
||||
|
||||
@@ -49,9 +49,10 @@ bool MotorController::OnAlarm(repeating_timer* t) {
|
||||
return true;
|
||||
}
|
||||
|
||||
MotorController::MotorController(Mode mode) {
|
||||
MotorController::MotorController(Mode mode, Direction direction)
|
||||
: direction_(direction) {
|
||||
if (mode == Mode::k9Motor) {
|
||||
// Each decoder is responsible for a specific phase to driver 1 of 8 motor
|
||||
// Each decoder is responsible for a specific phase to drive 1 of 8 motor
|
||||
// drivers. As we have 4 phases, it can drive 4 motors at the same time, and
|
||||
// by time division multiplexing, we make them drive 8 motors.
|
||||
decoder_[0] = std::make_unique<Decoder>(1, 2, 3, 4);
|
||||
@@ -88,7 +89,7 @@ void MotorController::Step() {
|
||||
size_t start_index = (phase_ & 1) ? kNumOfPhases : 0;
|
||||
size_t half_phase = phase_ >> 1;
|
||||
for (size_t i = start_index; i < start_index + kNumOfPhases; ++i) {
|
||||
if (!decoder_[i]) {
|
||||
if (!decoder_[i % kNumOfPhases]) {
|
||||
continue;
|
||||
}
|
||||
if (started_[i]) {
|
||||
@@ -104,5 +105,9 @@ void MotorController::Step() {
|
||||
gpio_put(19, on && half_phase == 2);
|
||||
gpio_put(20, on && half_phase == 3);
|
||||
|
||||
phase_ = (phase_ + 7) % 8;
|
||||
if (direction_ == Direction::kForward) {
|
||||
phase_ = (phase_ + 1) % 8;
|
||||
} else if (direction_ == Direction::kBackward) {
|
||||
phase_ = (phase_ + 7) % 8;
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,8 @@
|
||||
class MotorController final {
|
||||
public:
|
||||
enum class Mode { k1Motor, k9Motor };
|
||||
explicit MotorController(Mode = Mode::k9Motor);
|
||||
enum class Direction { kForward, kBackward };
|
||||
explicit MotorController(Mode = Mode::k9Motor, Direction = Direction::kForward);
|
||||
MotorController(const MotorController&) = delete;
|
||||
MotorController& operator=(const MotorController&) = delete;
|
||||
~MotorController();
|
||||
@@ -33,6 +34,7 @@ class MotorController final {
|
||||
bool started_[kNumOfMotors] = { false };
|
||||
uint8_t phase_ = 0;
|
||||
repeating_timer timer_;
|
||||
Direction direction_ = Direction::kForward;
|
||||
};
|
||||
|
||||
#endif // COMMON_MOTOR_CONTROLLER_H_
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#include "hardware/gpio.h"
|
||||
|
||||
//#define NO_SENSOR_PULL
|
||||
|
||||
PhotoSensor::PhotoSensor(int8_t bit0,
|
||||
int8_t bit1,
|
||||
int8_t bit2,
|
||||
@@ -16,7 +18,13 @@ PhotoSensor::PhotoSensor(int8_t bit0,
|
||||
for (int8_t gpio : bits) {
|
||||
gpio_init(gpio);
|
||||
gpio_set_dir(gpio, GPIO_IN);
|
||||
gpio_pull_up(gpio); // Built-in 50-80K pull-up
|
||||
#ifdef NO_SENSOR_PULL
|
||||
gpio_disable_pulls(gpio);
|
||||
#else
|
||||
// Built-in 50-80K pull-up is expected, but the actual value appears to
|
||||
// depend on the RP2040's shipping years?
|
||||
gpio_pull_up(gpio);
|
||||
#endif // NO_SENSOR_PULL
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,8 +41,8 @@ const std::vector<uint8_t> a = {
|
||||
0x14, // q
|
||||
0x04, // a
|
||||
0x1d, // z
|
||||
0x39, // <CAPS>
|
||||
0x2c, // <SPACE>
|
||||
0x39, // <CAPS>
|
||||
};
|
||||
const std::vector<uint8_t> fn_a = {};
|
||||
const std::vector<uint8_t> modifier_a = {};
|
||||
|
||||
@@ -43,6 +43,8 @@ int main() {
|
||||
PhotoSensor(24, 25, 26, 27), // I
|
||||
};
|
||||
|
||||
const std::array<int8_t, 9> sensor_indices = { 0, 1, 2, 3, 4, 5, 6, -1, 7 };
|
||||
|
||||
std::array<DialController, 9> dials = {
|
||||
DialController(), // A
|
||||
DialController(), // B
|
||||
@@ -98,37 +100,39 @@ int main() {
|
||||
UsbHidKeyboard usb_hid_keyboard(
|
||||
/*vendor_id=*/0x6666, /*product_id=*/0x2025,
|
||||
/*version=*/0x0109, /*vendor_name=*/"Gboard DIY prototype",
|
||||
/*product_name=*/"Gboard Dial version", /*version_name=*/"9 Dial");
|
||||
/*product_name=*/"Gboard Dial version", /*version_name=*/"9 Dial rev2");
|
||||
usb_hid_keyboard.SetAutoKeyRelease(true);
|
||||
|
||||
// Wait for a while, just in case, so that the sub-controller can be ready on
|
||||
// I2C.
|
||||
sleep_ms(100);
|
||||
|
||||
std::vector<uint8_t> i2c_buffer(2);
|
||||
std::vector<uint8_t> i2c_buffer(1);
|
||||
bool fn = false;
|
||||
|
||||
while (true) {
|
||||
uint16_t motor_start_bitmap = 0;
|
||||
for (size_t i = 0; i < sensors.size(); ++i) {
|
||||
dials[i].Update(sensors[i].Read());
|
||||
for (size_t i = 0; i < sensor_indices.size(); ++i) {
|
||||
if (sensor_indices[i] < 0) {
|
||||
// Read the remote sensor H value via I2C.
|
||||
if (i2c.Read(68, 0, i2c_buffer)) {
|
||||
dials[i].Update(i2c_buffer[0]);
|
||||
}
|
||||
} else {
|
||||
// Read one of the local sensors.
|
||||
dials[i].Update(sensors[sensor_indices[i]].Read());
|
||||
}
|
||||
if (!dials[i].IsBasePosition()) {
|
||||
motor_start_bitmap |= (1 << i);
|
||||
}
|
||||
}
|
||||
// Read the remote sensor H value via I2C.
|
||||
bool rc = i2c.Read(68, 0, std::span<uint8_t>({i2c_buffer.data(), 1}));
|
||||
if (rc) {
|
||||
dials[8].Update(i2c_buffer[0]);
|
||||
if (!dials[8].IsBasePosition()) {
|
||||
motor_start_bitmap |= (1 << 8);
|
||||
}
|
||||
}
|
||||
|
||||
// Drive all motors via I2C.
|
||||
// Use non-burst mode for better stability.
|
||||
i2c_buffer[0] = motor_start_bitmap & 0xff;
|
||||
i2c_buffer[1] = motor_start_bitmap >> 8;
|
||||
rc = i2c.Write(68, 0, i2c_buffer);
|
||||
i2c.Write(68, 0, i2c_buffer);
|
||||
i2c_buffer[0] = motor_start_bitmap >> 8;
|
||||
i2c.Write(68, 1, i2c_buffer);
|
||||
|
||||
// Check all dials to see if we have pending inputs to send over USB HID.
|
||||
for (size_t i = 0; i < dials.size(); ++i) {
|
||||
|
||||
@@ -14,12 +14,16 @@
|
||||
#include "../common/usage_tables.h"
|
||||
#include "../common/usb_hid_keyboard.h"
|
||||
|
||||
#define MOTOR_DIRECTION MotorController::Direction::kForward
|
||||
//#define MOTOR_DIRECTION MotorController::Direction::kBackward
|
||||
|
||||
int main() {
|
||||
// GPIO0 and 1 are used for stdout, and stdin by default.
|
||||
stdio_init_all();
|
||||
|
||||
// GPIO17, 18, 19, and 20 are used for motor phase control.
|
||||
MotorController motor_controller(MotorController::Mode::k1Motor);
|
||||
MotorController motor_controller(MotorController::Mode::k1Motor,
|
||||
MOTOR_DIRECTION);
|
||||
|
||||
// GPIO2, 3, 4, 5, 6, and 7 are used for 6bit photo sensing.
|
||||
PhotoSensor photo_sensor(2, 3, 4, 5, 6, 7);
|
||||
|
||||
BIN
mozc-dial/firmware/prebuilt/main_no_pull.uf2
Normal file
BIN
mozc-dial/firmware/prebuilt/one_dial_backward.uf2
Normal file
BIN
mozc-dial/firmware/prebuilt/one_dial_backward_no_pull.uf2
Normal file
BIN
mozc-dial/firmware/prebuilt/one_dial_no_pull.uf2
Normal file
BIN
mozc-dial/firmware/prebuilt/sub_backward.uf2
Normal file
BIN
mozc-dial/firmware/prebuilt/sub_backward_no_pull.uf2
Normal file
BIN
mozc-dial/firmware/prebuilt/sub_no_pull.uf2
Normal file
@@ -24,7 +24,6 @@ if (EXISTS ${picoVscode})
|
||||
endif()
|
||||
# ====================================================================================
|
||||
set(PICO_BOARD none CACHE STRING "Board type")
|
||||
#set(PICO_BOARD pico CACHE STRING "Board type")
|
||||
|
||||
# Pull in Raspberry Pi Pico SDK (must be before project)
|
||||
include(pico_sdk_import.cmake)
|
||||
|
||||
@@ -14,9 +14,13 @@
|
||||
#include "../common/photo_sensor.h"
|
||||
#include "i2c_device.h"
|
||||
|
||||
#define MOTOR_DIRECTION MotorController::Direction::kForward
|
||||
//#define MOTOR_DIRECTION MotorController::Direction::kBackward
|
||||
|
||||
namespace {
|
||||
|
||||
MotorController motor_controller;
|
||||
MotorController motor_controller(MotorController::Mode::k9Motor,
|
||||
MOTOR_DIRECTION);
|
||||
PhotoSensor sensor_h(26, 27);
|
||||
|
||||
uint8_t i2c_reader(uint8_t address) {
|
||||
|
||||
BIN
mozc-dial/images/dial-list-back.webp
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
mozc-dial/images/dial-list.webp
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
mozc-dial/images/main_pcb_back.webp
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
mozc-dial/images/main_pcb_ph.webp
Normal file
|
After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 59 KiB |
158
mozc-dial/keymap/generate.py
Normal file
@@ -0,0 +1,158 @@
|
||||
import math
|
||||
import svgwrite
|
||||
|
||||
|
||||
class SvgGenerator:
|
||||
|
||||
def __init__(self, width, height):
|
||||
self.dwg = svgwrite.Drawing(
|
||||
size=(f"{width}mm", f"{height}mm"), profile="full"
|
||||
)
|
||||
self.dwg.viewbox(0, 0, width, height)
|
||||
|
||||
def circle(self, center_x, center_y, size, stroke="black", fill="none"):
|
||||
radius = size / 2
|
||||
self.dwg.add(
|
||||
self.dwg.circle(
|
||||
center=(center_x, center_y), r=radius, stroke=stroke, fill=fill
|
||||
)
|
||||
)
|
||||
|
||||
def text(self, center_x, center_y, label, font_size=5):
|
||||
self.dwg.add(
|
||||
self.dwg.text(
|
||||
label,
|
||||
insert=(center_x, center_y),
|
||||
text_anchor="middle",
|
||||
dominant_baseline="central",
|
||||
font_size=font_size,
|
||||
fill="black",
|
||||
)
|
||||
)
|
||||
|
||||
def save(self, filename):
|
||||
self.dwg.saveas(filename)
|
||||
|
||||
|
||||
# PROJECT.mdから変換したデータ
|
||||
# [id, 直径, x, y, keys, bits, pcbの回転量]
|
||||
DIALS = [
|
||||
["a", 150, 125, 84, 35, 6, 0],
|
||||
["b", 41, 27, 45, 3, 2, 180 - 90],
|
||||
["c", 44, 29, 125, 4, 3, 180],
|
||||
["d", 37, 234, 87, 1, 3, 45],
|
||||
["e", 59, 290, 54, 6, 3, 45],
|
||||
["f", 59, 290, 118, 4, 3, 0],
|
||||
["g", 41, 345, 49, 3, 2, 10],
|
||||
["h", 41, 405, 49, 3, 2, 0],
|
||||
["i", 82, 378, 112, 10, 4, -45],
|
||||
]
|
||||
|
||||
LABELS = {
|
||||
"a": [
|
||||
"@",
|
||||
":",
|
||||
"_",
|
||||
"p",
|
||||
";",
|
||||
"/",
|
||||
"o",
|
||||
"l",
|
||||
".",
|
||||
"i",
|
||||
"k",
|
||||
",",
|
||||
"u",
|
||||
"j",
|
||||
"m",
|
||||
"y",
|
||||
"h",
|
||||
"n",
|
||||
"t",
|
||||
"g",
|
||||
"b",
|
||||
"r",
|
||||
"f",
|
||||
"v",
|
||||
"e",
|
||||
"d",
|
||||
"c",
|
||||
"w",
|
||||
"s",
|
||||
"x",
|
||||
"q",
|
||||
"a",
|
||||
"z",
|
||||
"<SPACE>",
|
||||
"<CAPS>",
|
||||
],
|
||||
"b": ["^", "<ESC>", "<TAB>"],
|
||||
"c": ["<SHIFT>", "<CTRL>", "<ALT>", "<FN>"],
|
||||
"d": ["Ent"],
|
||||
"e": ["<END>", "<PAGE DOWN>", "<PAGE UP>", "<HOME>", "<INS>", "<DEL>"],
|
||||
"f": ["<RIGHT>", "<UP>", "<LEFT>", "<DOWN>"],
|
||||
"g": ["*", "/", "."],
|
||||
"h": ["+", "-", "="],
|
||||
"i": ["9", "8", "7", "6", "5", "4", "3", "2", "1", "0"],
|
||||
}
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# 全体のサイズを計算 (paddingを追加)
|
||||
padding = 10
|
||||
max_x = max(d[2] + d[1] / 2 for d in DIALS) + padding
|
||||
max_y = max(d[3] + d[1] / 2 for d in DIALS) + padding
|
||||
|
||||
generator = SvgGenerator(max_x, max_y)
|
||||
|
||||
for dial_data in DIALS:
|
||||
dial_id, diameter, x, y, keys, _, _ = dial_data
|
||||
|
||||
# 大円を描画
|
||||
generator.circle(x, y, diameter)
|
||||
|
||||
# 小円とラベルを描画
|
||||
if keys > 0:
|
||||
labels = LABELS.get(dial_id, [])
|
||||
large_radius = diameter / 2
|
||||
small_diameter = 13
|
||||
small_radius = small_diameter / 2
|
||||
|
||||
# 小円の中心が並ぶ円の半径
|
||||
inner_circle_radius = large_radius - small_radius
|
||||
|
||||
# 小円は270度の範囲に配置し、右下(0〜90度)を開ける
|
||||
start_angle_rad = 0 # 0度(右)から開始
|
||||
angle_span_rad = 1.5 * math.pi # 270度の範囲
|
||||
|
||||
for i in range(keys):
|
||||
# 角度を計算 (ラジアン) - 減算して反時計回りにする
|
||||
sector_angle = angle_span_rad / keys
|
||||
angle = start_angle_rad - sector_angle * (i + 0.5)
|
||||
|
||||
# ダイヤル 'a' のみ3列に配置
|
||||
current_inner_radius = inner_circle_radius
|
||||
if dial_id == "a":
|
||||
offset = (i % 3) * 12
|
||||
current_inner_radius -= offset
|
||||
|
||||
# 小円の中心座標を計算
|
||||
small_x = x + current_inner_radius * math.cos(angle)
|
||||
small_y = y + current_inner_radius * math.sin(angle)
|
||||
|
||||
generator.circle(small_x, small_y, small_diameter)
|
||||
|
||||
if i < len(labels):
|
||||
label = labels[i]
|
||||
# ラベルの長さに応じてフォントサイズを調整
|
||||
if len(label) > 8:
|
||||
font_size = 2.0
|
||||
elif len(label) > 4:
|
||||
font_size = 3.0
|
||||
else:
|
||||
font_size = 4.0
|
||||
generator.text(small_x, small_y, label, font_size=font_size)
|
||||
|
||||
output_filename = "keymap.svg"
|
||||
generator.save(output_filename)
|
||||
print(f"SVG file '{output_filename}' has been generated.")
|
||||
2
mozc-dial/keymap/keymap.svg
Normal file
|
After Width: | Height: | Size: 16 KiB |
283
mozc-dial/pattern/nine_dial.svg
Normal file
@@ -0,0 +1,283 @@
|
||||
<svg width="210mm" height="297mm" viewBox="0 0 210 297" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(0, 10)">
|
||||
<circle cx="50.0" cy="50.0" r="8" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<circle cx="50.0" cy="50.0" r="38" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<polygon points="82.4003262454555,69.85494545920605 84.61739326668491,70.04086034629447 83.57250498771904,71.74596304718604" fill="black" />
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 54.446261863233694 37.78399592978319 A 13 13 0 0 0 50.0 37.0 L 50.0 42.0 A 8 8 0 0 1 52.73616114660535 42.482459033712736 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 56.03624925742874 38.48636916945002 A 13 13 0 0 0 54.446261863233694 37.78399592978319 L 52.73616114660535 42.482459033712736 A 8 8 0 0 1 53.714614927648455 42.914688719661555 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 58.35788358720903 34.058049619238496 A 18 18 0 0 0 56.15636257986204 33.08553282585365 L 54.446261863233694 37.78399592978319 A 13 13 0 0 1 56.03624925742874 38.48636916945002 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 60.40998205102376 35.31557717520491 A 18 18 0 0 0 58.35788358720903 34.058049619238496 L 56.03624925742874 38.48636916945002 A 13 13 0 0 1 57.51832037018382 39.394583515425765 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 62.27597048112497 36.835633370854936 A 18 18 0 0 0 60.40998205102376 35.31557717520491 L 57.51832037018382 39.394583515425765 A 13 13 0 0 1 58.86597868081248 40.49240187895079 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 65.68596228143747 33.178864862759085 A 23 23 0 0 0 63.30164373186369 31.236570834984043 L 60.40998205102376 35.31557717520491 A 18 18 0 0 1 62.27597048112497 36.835633370854936 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 60.05513070554153 41.76019742381677 A 13 13 0 0 0 58.86597868081248 40.49240187895079 L 55.455986880499985 44.14917038704664 A 8 8 0 0 1 56.18777274187171 44.92935226081032 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 63.922488669211354 38.59104258682322 A 18 18 0 0 0 62.27597048112497 36.835633370854936 L 58.86597868081248 40.49240187895079 A 13 13 0 0 1 60.05513070554153 41.76019742381677 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 67.78984663288117 35.421887749829665 A 23 23 0 0 0 65.68596228143747 33.178864862759085 L 62.27597048112497 36.835633370854936 A 18 18 0 0 1 63.922488669211354 38.59104258682322 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 61.064516741681 43.17530445565072 A 13 13 0 0 0 60.05513070554153 41.76019742381677 L 56.18777274187171 44.92935226081032 A 8 8 0 0 1 56.808933379496 45.800187357323516 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 69.57568346605099 37.925538652305114 A 23 23 0 0 0 67.78984663288117 35.421887749829665 L 63.922488669211354 38.59104258682322 A 18 18 0 0 1 65.320100103866 40.55042155397791 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 71.01154552577982 40.64505720925659 A 23 23 0 0 0 69.57568346605099 37.925538652305114 L 65.320100103866 40.55042155397791 A 18 18 0 0 1 66.44381823756682 42.6787404246356 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 72.07176241849403 43.53182377006049 A 23 23 0 0 0 71.01154552577982 40.64505720925659 L 66.44381823756682 42.6787404246356 A 18 18 0 0 1 67.2735531970823 44.93794903743865 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 76.86997163990577 42.12569850268234 A 28 28 0 0 0 75.57927281399282 38.61137399387759 L 71.01154552577982 40.64505720925659 A 23 23 0 0 1 72.07176241849403 43.53182377006049 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 62.851562353462455 48.04108574075672 A 13 13 0 0 0 62.47534397567054 46.3440743048168 L 57.677134754258795 47.75019957219495 A 8 8 0 0 1 57.90865375597689 48.79451430200414 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 72.73737954843357 46.53422861826189 A 23 23 0 0 0 72.07176241849403 43.53182377006049 L 67.2735531970823 44.93794903743865 A 18 18 0 0 1 67.79447095094801 47.28765717950931 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 77.68028814591912 45.780800057014474 A 28 28 0 0 0 76.86997163990577 42.12569850268234 L 72.07176241849403 43.53182377006049 A 23 23 0 0 1 72.73737954843357 46.53422861826189 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 62.998020037033086 49.77311871631532 A 13 13 0 0 0 62.851562353462455 48.04108574075672 L 57.90865375597689 48.79451430200414 A 8 8 0 0 1 57.99878156125113 49.86038074850173 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 67.99725851281505 49.68585668412889 A 18 18 0 0 0 67.79447095094801 47.28765717950931 L 62.851562353462455 48.04108574075672 A 13 13 0 0 1 62.998020037033086 49.77311871631532 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 72.996496988597 49.59859465194248 A 23 23 0 0 0 72.73737954843357 46.53422861826189 L 67.79447095094801 47.28765717950931 A 18 18 0 0 1 67.99725851281505 49.68585668412889 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 77.99573546437895 49.51133261975606 A 28 28 0 0 0 77.68028814591912 45.780800057014474 L 72.73737954843357 46.53422861826189 A 23 23 0 0 1 72.996496988597 49.59859465194248 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 67.87829043935497 52.08967245425414 A 18 18 0 0 0 67.99725851281505 49.68585668412889 L 62.998020037033086 49.77311871631532 A 13 13 0 0 1 62.91209865064526 51.509207883627994 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 72.84448222806469 52.6701370248803 A 23 23 0 0 0 72.996496988597 49.59859465194248 L 67.99725851281505 49.68585668412889 A 18 18 0 0 1 67.87829043935497 52.08967245425414 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 77.81067401677441 53.250601595506446 A 28 28 0 0 0 77.99573546437895 49.51133261975606 L 72.996496988597 49.59859465194248 A 23 23 0 0 1 72.84448222806469 52.6701370248803 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 67.43969364606622 54.45612898504495 A 18 18 0 0 0 67.87829043935497 52.08967245425414 L 62.91209865064526 51.509207883627994 A 13 13 0 0 1 62.59533429993671 53.218315378088015 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 77.12841233832522 56.93175619895881 A 28 28 0 0 0 77.81067401677441 53.250601595506446 L 72.84448222806469 52.6701370248803 A 23 23 0 0 1 72.28405299219571 55.693942592001875 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 62.05339010936824 54.869885714406855 A 13 13 0 0 0 62.59533429993671 53.218315378088015 L 57.75097495380721 51.98050177113109 A 8 8 0 0 1 57.4174708365343 52.996852747327296 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 66.68930938220217 56.742918681486415 A 18 18 0 0 0 67.43969364606622 54.45612898504495 L 62.59533429993671 53.218315378088015 A 13 13 0 0 1 62.05339010936824 54.869885714406855 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 75.96114792787004 60.488984615645535 A 28 28 0 0 0 77.12841233832522 56.93175619895881 L 72.28405299219571 55.693942592001875 A 23 23 0 0 1 71.32522865503611 58.615951648565975 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 61.29595497668079 56.434392058679705 A 13 13 0 0 0 62.05339010936824 54.869885714406855 L 57.4174708365343 52.996852747327296 A 8 8 0 0 1 56.95135690872664 53.95962588226443 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 74.32974918054325 63.85869058792552 A 28 28 0 0 0 75.96114792787004 60.488984615645535 L 71.32522865503611 58.615951648565975 A 23 23 0 0 1 69.9851511125891 61.38392441151025 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 72.26338230185574 66.98063039116677 A 28 28 0 0 0 74.32974918054325 63.85869058792552 L 69.9851511125891 61.38392441151025 A 23 23 0 0 1 68.2877783193815 63.94837496417271 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 69.79898987322333 69.79898987322332 A 28 28 0 0 0 72.26338230185574 66.98063039116677 L 68.2877783193815 63.94837496417271 A 23 23 0 0 1 66.2634559672906 66.2634559672906 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 73.33452377915607 73.33452377915606 A 33 33 0 0 0 76.23898628432998 70.01288581816084 L 72.26338230185574 66.98063039116677 A 28 28 0 0 1 69.79898987322333 69.79898987322332 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 57.883864110184575 60.33657035443302 A 13 13 0 0 0 59.19238815542512 59.19238815542512 L 55.65685424949238 55.65685424949238 A 8 8 0 0 1 54.851608683190506 56.36096637195878 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 66.98063039116677 72.26338230185574 A 28 28 0 0 0 69.79898987322333 69.79898987322332 L 66.2634559672906 66.2634559672906 A 23 23 0 0 1 63.9483749641727 68.2877783193815 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 70.01288581816084 76.23898628432998 A 33 33 0 0 0 73.33452377915607 73.33452377915606 L 69.79898987322333 69.79898987322332 A 28 28 0 0 1 66.98063039116677 72.26338230185574 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 56.434392058679705 61.29595497668079 A 13 13 0 0 0 57.883864110184575 60.33657035443302 L 54.851608683190506 56.36096637195878 A 8 8 0 0 1 53.95962588226443 56.95135690872664 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 58.90915823509498 65.64055304463494 A 18 18 0 0 0 60.91611953717864 64.31217433690726 L 57.883864110184575 60.33657035443302 A 13 13 0 0 1 56.434392058679705 61.29595497668079 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 63.858690587925516 74.32974918054325 A 28 28 0 0 0 66.98063039116677 72.26338230185574 L 63.9483749641727 68.2877783193815 A 23 23 0 0 1 61.38392441151024 69.9851511125891 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 66.33345676434078 78.6743472484974 A 33 33 0 0 0 70.01288581816084 76.23898628432998 L 66.98063039116677 72.26338230185574 A 28 28 0 0 1 63.858690587925516 74.32974918054325 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 56.742918681486415 66.68930938220217 A 18 18 0 0 0 58.90915823509498 65.64055304463494 L 56.434392058679705 61.29595497668079 A 13 13 0 0 1 54.869885714406855 62.05339010936824 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 60.488984615645535 75.96114792787004 A 28 28 0 0 0 63.858690587925516 74.32974918054325 L 61.38392441151024 69.9851511125891 A 23 23 0 0 1 58.615951648565975 71.32522865503611 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 62.362017582725095 80.59706720070399 A 33 33 0 0 0 66.33345676434078 78.6743472484974 L 63.858690587925516 74.32974918054325 A 28 28 0 0 1 60.488984615645535 75.96114792787004 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 54.45612898504495 67.43969364606622 A 18 18 0 0 0 56.742918681486415 66.68930938220217 L 54.869885714406855 62.05339010936824 A 13 13 0 0 1 53.21831537808802 62.59533429993671 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 55.69394259200188 72.28405299219571 A 23 23 0 0 0 58.615951648565975 71.32522865503611 L 56.742918681486415 66.68930938220217 A 18 18 0 0 1 54.45612898504495 67.43969364606622 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 56.931756198958816 77.12841233832522 A 28 28 0 0 0 60.488984615645535 75.96114792787004 L 58.615951648565975 71.32522865503611 A 23 23 0 0 1 55.69394259200188 72.28405299219571 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 58.16956980591574 81.97277168445473 A 33 33 0 0 0 62.362017582725095 80.59706720070399 L 60.488984615645535 75.96114792787004 A 28 28 0 0 1 56.931756198958816 77.12841233832522 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 51.509207883627994 62.91209865064526 A 13 13 0 0 0 53.21831537808802 62.59533429993671 L 51.98050177113109 57.75097495380721 A 8 8 0 0 1 50.928743313001846 57.94590686193554 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 52.08967245425414 67.87829043935497 A 18 18 0 0 0 54.45612898504495 67.43969364606622 L 53.21831537808802 62.59533429993671 A 13 13 0 0 1 51.509207883627994 62.91209865064526 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 52.6701370248803 72.84448222806469 A 23 23 0 0 0 55.69394259200188 72.28405299219571 L 54.45612898504495 67.43969364606622 A 18 18 0 0 1 52.08967245425414 67.87829043935497 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 53.250601595506446 77.81067401677441 A 28 28 0 0 0 56.931756198958816 77.12841233832522 L 55.69394259200188 72.28405299219571 A 23 23 0 0 1 52.6701370248803 72.84448222806469 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 53.8310661661326 82.77686580548412 A 33 33 0 0 0 58.16956980591574 81.97277168445473 L 56.931756198958816 77.12841233832522 A 28 28 0 0 1 53.250601595506446 77.81067401677441 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 49.77311871631532 62.998020037033086 A 13 13 0 0 0 51.509207883627994 62.91209865064526 L 50.928743313001846 57.94590686193554 A 8 8 0 0 1 49.86038074850173 57.99878156125113 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 49.59859465194248 72.996496988597 A 23 23 0 0 0 52.6701370248803 72.84448222806469 L 52.08967245425414 67.87829043935497 A 18 18 0 0 1 49.6858566841289 67.99725851281505 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 49.51133261975606 77.99573546437895 A 28 28 0 0 0 53.250601595506446 77.81067401677441 L 52.6701370248803 72.84448222806469 A 23 23 0 0 1 49.59859465194248 72.996496988597 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 49.424070587569645 82.99497394016092 A 33 33 0 0 0 53.8310661661326 82.77686580548412 L 53.250601595506446 77.81067401677441 A 28 28 0 0 1 49.51133261975606 77.99573546437895 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 46.53422861826189 72.73737954843357 A 23 23 0 0 0 49.59859465194248 72.996496988597 L 49.6858566841289 67.99725851281505 A 18 18 0 0 1 47.28765717950931 67.79447095094801 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 45.78080005701448 77.68028814591912 A 28 28 0 0 0 49.51133261975606 77.99573546437895 L 49.59859465194248 72.996496988597 A 23 23 0 0 1 46.53422861826189 72.73737954843357 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 45.02737149576706 82.62319674340469 A 33 33 0 0 0 49.424070587569645 82.99497394016092 L 49.51133261975606 77.99573546437895 A 28 28 0 0 1 45.78080005701448 77.68028814591912 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 43.53182377006049 72.07176241849403 A 23 23 0 0 0 46.53422861826189 72.73737954843357 L 47.28765717950931 67.79447095094801 A 18 18 0 0 1 44.93794903743864 67.2735531970823 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 40.71957323530418 81.66818086131752 A 33 33 0 0 0 45.02737149576706 82.62319674340469 L 45.78080005701448 77.68028814591912 A 28 28 0 0 1 42.12569850268234 76.86997163990577 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 44.7124236400146 61.87609094935381 A 13 13 0 0 0 46.3440743048168 62.47534397567054 L 47.75019957219495 57.677134754258795 A 8 8 0 0 1 46.7461068553936 57.30836366114081 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 40.6450572092566 71.01154552577982 A 23 23 0 0 0 43.53182377006049 72.07176241849403 L 44.93794903743864 67.2735531970823 A 18 18 0 0 1 42.6787404246356 66.44381823756682 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 36.5776907784986 80.14700010220584 A 33 33 0 0 0 40.71957323530418 81.66818086131752 L 42.12569850268234 76.86997163990577 A 28 28 0 0 1 38.6113739938776 75.57927281399283 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 43.17530445565072 61.064516741681 A 13 13 0 0 0 44.7124236400146 61.87609094935381 L 46.7461068553936 57.30836366114081 A 8 8 0 0 1 45.80018735732352 56.808933379496 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 40.55042155397792 65.320100103866 A 18 18 0 0 0 42.6787404246356 66.44381823756682 L 44.7124236400146 61.87609094935381 A 13 13 0 0 1 43.17530445565072 61.064516741681 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 37.92553865230512 69.57568346605099 A 23 23 0 0 0 40.6450572092566 71.01154552577982 L 42.6787404246356 66.44381823756682 A 18 18 0 0 1 40.55042155397792 65.320100103866 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 32.67577284895952 78.08685019042099 A 33 33 0 0 0 36.5776907784986 80.14700010220584 L 38.6113739938776 75.57927281399283 A 28 28 0 0 1 35.300655750632316 73.831266828236 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 38.591042586823214 63.92248866921135 A 18 18 0 0 0 40.55042155397792 65.320100103866 L 43.17530445565072 61.064516741681 A 13 13 0 0 1 41.76019742381676 60.05513070554153 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 35.421887749829665 67.78984663288117 A 23 23 0 0 0 37.92553865230512 69.57568346605099 L 40.55042155397792 65.320100103866 A 18 18 0 0 1 38.591042586823214 63.92248866921135 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 29.083578075842556 75.5245625602208 A 33 33 0 0 0 32.67577284895952 78.08685019042099 L 35.300655750632316 73.831266828236 A 28 28 0 0 1 32.25273291283611 71.657204596551 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 36.835633370854936 62.27597048112497 A 18 18 0 0 0 38.591042586823214 63.92248866921135 L 41.76019742381676 60.05513070554153 A 13 13 0 0 1 40.49240187895079 58.86597868081248 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 25.865327846567375 72.50594588206245 A 33 33 0 0 0 29.083578075842556 75.5245625602208 L 32.25273291283611 71.657204596551 A 28 28 0 0 1 29.522096354663226 69.09595408174997 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 39.394583515425765 57.51832037018383 A 13 13 0 0 0 40.49240187895079 58.86597868081248 L 44.14917038704664 55.45598688049999 A 8 8 0 0 1 43.47358985564662 54.62665868934389 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 35.31557717520491 60.40998205102376 A 18 18 0 0 0 36.835633370854936 62.27597048112497 L 40.49240187895079 58.86597868081248 A 13 13 0 0 1 39.394583515425765 57.51832037018383 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 23.07855815454233 69.08496709354355 A 33 33 0 0 0 25.865327846567375 72.50594588206245 L 29.522096354663226 69.09595408174997 A 28 28 0 0 1 27.15756449476319 66.19330541270364 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 38.48636916945002 56.03624925742874 A 13 13 0 0 0 39.394583515425765 57.51832037018383 L 43.47358985564662 54.62665868934389 A 8 8 0 0 1 42.914688719661555 53.714614927648455 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 20.7730909686039 65.32278657654987 A 33 33 0 0 0 23.07855815454233 69.08496709354355 L 27.15756449476319 66.19330541270364 A 28 28 0 0 1 25.20141051881543 63.00115224676959 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 18.990143514065025 61.28666472974707 A 33 33 0 0 0 20.7730909686039 65.32278657654987 L 25.20141051881543 63.00115224676959 A 28 28 0 0 1 23.688606617994566 59.57656401311873 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 17.761591389677662 57.04875948475295 A 33 33 0 0 0 18.990143514065025 61.28666472974707 L 23.688606617994566 59.57656401311873 A 28 28 0 0 1 22.646198754878018 55.98076562342674 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 12.87698402447731 58.11675334607915 A 38 38 0 0 0 14.291680410135484 62.99676544637542 L 18.990143514065025 61.28666472974707 A 33 33 0 0 1 17.761591389677662 57.04875948475295 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 37.04309645542142 51.05766277068215 A 13 13 0 0 0 37.30002085047908 52.77678403944813 L 42.18462821567943 51.70879017812192 A 8 8 0 0 1 42.026520895643955 50.650869397342866 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 17.1093986945313 52.68483626403931 A 33 33 0 0 0 17.761591389677662 57.04875948475295 L 22.646198754878018 55.98076562342674 A 28 28 0 0 1 22.09282313475383 52.27804289070002 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 12.125974254308773 53.0916296373786 A 38 38 0 0 0 12.87698402447731 58.11675334607915 L 17.761591389677662 57.04875948475295 A 33 33 0 0 1 17.1093986945313 52.68483626403931 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 37.01781604819054 49.31963256884173 A 13 13 0 0 0 37.04309645542142 51.05766277068215 L 42.026520895643955 50.650869397342866 A 8 8 0 0 1 42.01096372196341 49.58131235005645 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 32.02466837441767 49.057952787627016 A 18 18 0 0 0 32.05967201519889 51.46445614402144 L 37.04309645542142 51.05766277068215 A 13 13 0 0 1 37.01781604819054 49.31963256884173 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 17.045225353099063 48.272913443982866 A 33 33 0 0 0 17.1093986945313 52.68483626403931 L 22.09282313475383 52.27804289070002 A 28 28 0 0 1 22.038373026871934 48.53459322519758 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 12.052077679326196 48.01123366276814 A 38 38 0 0 0 12.125974254308773 53.0916296373786 L 17.1093986945313 52.68483626403931 A 33 33 0 0 1 17.045225353099063 48.272913443982866 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 32.31102835928456 46.66829138519513 A 18 18 0 0 0 32.02466837441767 49.057952787627016 L 37.01781604819054 49.31963256884173 A 13 13 0 0 1 37.22463159281663 47.593766000418704 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 17.57021865868836 43.891867539524405 A 33 33 0 0 0 17.045225353099063 48.272913443982866 L 22.038373026871934 48.53459322519758 A 28 28 0 0 1 22.48382189222043 44.817342154747976 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 12.656615425156296 42.96639292430083 A 38 38 0 0 0 12.052077679326196 48.01123366276814 L 17.045225353099063 48.272913443982866 A 33 33 0 0 1 17.57021865868836 43.891867539524405 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_a</text>
|
||||
<path d="M 38.42982302564229 36.211200023858396 A 18 18 0 0 0 32.31102835928456 46.66829138519513 L 37.22463159281663 47.593766000418704 A 13 13 0 0 1 41.64376107407499 40.04142223945328 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 35.21588497720959 32.38097780826351 A 23 23 0 0 0 27.397425125752495 45.742816769971554 L 32.31102835928456 46.66829138519513 A 18 18 0 0 1 38.42982302564229 36.211200023858396 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 28.788008880344197 24.72053337707373 A 33 33 0 0 0 17.57021865868836 43.891867539524405 L 22.48382189222043 44.817342154747976 A 28 28 0 0 1 32.001946928776896 28.55075559266862 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 25.5740708319115 20.89031116147884 A 38 38 0 0 0 12.656615425156296 42.96639292430083 L 17.57021865868836 43.891867539524405 A 33 33 0 0 1 28.788008880344197 24.72053337707373 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
</g>
|
||||
<g transform="translate(70, 10)">
|
||||
<circle cx="50.0" cy="50.0" r="8" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<circle cx="50.0" cy="50.0" r="18" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<polygon points="67.38666487320323,45.34125718815463 69.03566219325552,43.864564818673195 69.55308462788167,45.79561163367404" fill="black" />
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_b</text>
|
||||
<path d="M 63.0 50.0 A 13 13 0 0 0 50.0 37.0 L 50.0 42.0 A 8 8 0 0 1 58.0 50.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_b</text>
|
||||
<path d="M 50.0 63.0 A 13 13 0 0 0 63.0 50.0 L 58.0 50.0 A 8 8 0 0 1 50.0 58.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 50.0 68.0 A 18 18 0 0 0 68.0 50.0 L 63.0 50.0 A 13 13 0 0 1 50.0 63.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_b</text>
|
||||
<path d="M 32.0 50.0 A 18 18 0 0 0 50.0 68.0 L 50.0 63.0 A 13 13 0 0 1 37.0 50.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
</g>
|
||||
<g transform="translate(120, 10)">
|
||||
<circle cx="50.0" cy="50.0" r="8" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<circle cx="50.0" cy="50.0" r="23" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<polygon points="44.04716196264202,27.78370599535143 42.569031296517366,26.129920315845997 44.50036782986608,25.61242025142249" fill="black" />
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_c</text>
|
||||
<path d="M 62.010433922646726 45.02511537925383 A 13 13 0 0 0 50.0 37.0 L 50.0 42.0 A 8 8 0 0 1 57.391036260090296 46.93853254107928 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_c</text>
|
||||
<path d="M 59.19238815542512 59.19238815542512 A 13 13 0 0 0 62.010433922646726 45.02511537925383 L 57.391036260090296 46.93853254107928 A 8 8 0 0 1 55.65685424949238 55.65685424949238 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 62.72792206135786 62.72792206135786 A 18 18 0 0 0 66.62983158520316 43.11169821742838 L 62.010433922646726 45.02511537925383 A 13 13 0 0 1 59.19238815542512 59.19238815542512 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_c</text>
|
||||
<path d="M 43.11169821742838 66.62983158520316 A 18 18 0 0 0 62.72792206135786 62.72792206135786 L 59.19238815542512 59.19238815542512 A 13 13 0 0 1 45.02511537925383 62.010433922646726 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_c</text>
|
||||
<path d="M 32.0 50.0 A 18 18 0 0 0 43.11169821742838 66.62983158520316 L 45.02511537925383 62.010433922646726 A 13 13 0 0 1 37.0 50.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 27.0 50.0 A 23 23 0 0 0 41.19828105560293 71.24922924775959 L 43.11169821742838 66.62983158520316 A 18 18 0 0 1 32.0 50.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
</g>
|
||||
<g transform="translate(0, 110)">
|
||||
<circle cx="50.0" cy="50.0" r="8" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<circle cx="50.0" cy="50.0" r="23" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<polygon points="72.91247805611015,52.00458208319614 74.97207871778483,51.181221618815826 74.79781371163381,53.17307975366302" fill="black" />
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_d</text>
|
||||
<path d="M 54.446261863233694 37.78399592978319 A 13 13 0 0 0 50.0 37.0 L 50.0 42.0 A 8 8 0 0 1 52.73616114660535 42.482459033712736 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_d</text>
|
||||
<path d="M 38.7416697508023 43.5 A 13 13 0 1 0 54.446261863233694 37.78399592978319 L 52.73616114660535 42.482459033712736 A 8 8 0 1 1 43.07179676972449 46.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 34.411542731880104 41.0 A 18 18 0 1 0 56.15636257986204 33.08553282585365 L 54.446261863233694 37.78399592978319 A 13 13 0 1 1 38.7416697508023 43.5 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
</g>
|
||||
<g transform="translate(60, 110)">
|
||||
<circle cx="50.0" cy="50.0" r="8" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<circle cx="50.0" cy="50.0" r="23" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<polygon points="64.7841150227904,67.61902219173649 66.82267638492111,68.49317601841874 65.29099602303616,69.77840844515788" fill="black" />
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_e</text>
|
||||
<path d="M 54.446261863233694 37.78399592978319 A 13 13 0 0 0 50.0 37.0 L 50.0 42.0 A 8 8 0 0 1 52.73616114660535 42.482459033712736 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_e</text>
|
||||
<path d="M 61.78200123147645 44.50596259737091 A 13 13 0 0 0 54.446261863233694 37.78399592978319 L 52.73616114660535 42.482459033712736 A 8 8 0 0 1 57.2504622962932 46.619053906074406 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 66.31354016665969 42.39287128866741 A 18 18 0 0 0 56.15636257986204 33.08553282585365 L 54.446261863233694 37.78399592978319 A 13 13 0 0 1 61.78200123147645 44.50596259737091 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_e</text>
|
||||
<path d="M 66.91446717414635 56.156362579862034 A 18 18 0 0 0 66.31354016665969 42.39287128866741 L 61.78200123147645 44.50596259737091 A 13 13 0 0 1 62.21600407021681 54.446261863233694 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_e</text>
|
||||
<path d="M 57.60712871133259 66.31354016665969 A 18 18 0 0 0 66.91446717414635 56.156362579862034 L 62.21600407021681 54.446261863233694 A 13 13 0 0 1 55.49403740262909 61.78200123147645 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 59.72022002003609 70.84507910184294 A 23 23 0 0 0 71.6129302780759 57.86646329649038 L 66.91446717414635 56.156362579862034 A 18 18 0 0 1 57.60712871133259 66.31354016665969 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_e</text>
|
||||
<path d="M 45.553738136766306 62.21600407021681 A 13 13 0 0 0 55.49403740262909 61.78200123147645 L 53.380946093925594 57.2504622962932 A 8 8 0 0 1 47.26383885339465 57.51754096628727 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 43.843637420137966 66.91446717414635 A 18 18 0 0 0 57.60712871133259 66.31354016665969 L 55.49403740262909 61.78200123147645 A 13 13 0 0 1 45.553738136766306 62.21600407021681 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 42.13353670350962 71.6129302780759 A 23 23 0 0 0 59.72022002003609 70.84507910184294 L 57.60712871133259 66.31354016665969 A 18 18 0 0 1 43.843637420137966 66.91446717414635 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_e</text>
|
||||
<path d="M 38.21799876852355 55.49403740262909 A 13 13 0 0 0 45.553738136766306 62.21600407021681 L 47.26383885339465 57.51754096628727 A 8 8 0 0 1 42.7495377037068 53.380946093925594 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 29.15492089815705 59.72022002003609 A 23 23 0 0 0 42.13353670350962 71.6129302780759 L 43.843637420137966 66.91446717414635 A 18 18 0 0 1 33.6864598333403 57.60712871133259 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_e</text>
|
||||
<path d="M 28.387069721924107 42.13353670350962 A 23 23 0 0 0 29.15492089815705 59.72022002003609 L 33.6864598333403 57.60712871133259 A 18 18 0 0 1 33.08553282585365 43.843637420137966 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
</g>
|
||||
<g transform="translate(120, 110)">
|
||||
<circle cx="50.0" cy="50.0" r="8" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<circle cx="50.0" cy="50.0" r="23" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<polygon points="61.5,69.91858428704208 63.355795815413494,71.13345021848026 61.624206851110955,72.13318357314611" fill="black" />
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_f</text>
|
||||
<path d="M 52.257426309670095 37.19749921084129 A 13 13 0 0 0 50.0 37.0 L 50.0 42.0 A 8 8 0 0 1 51.38918542133544 42.121537975902335 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_f</text>
|
||||
<path d="M 62.80250078915871 52.257426309670095 A 13 13 0 0 0 52.257426309670095 37.19749921084129 L 51.38918542133544 42.121537975902335 A 8 8 0 0 1 57.878462024097665 51.38918542133544 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 67.72653955421974 53.12566719800475 A 18 18 0 0 0 53.12566719800475 32.27346044578026 L 52.257426309670095 37.19749921084129 A 13 13 0 0 1 62.80250078915871 52.257426309670095 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_f</text>
|
||||
<path d="M 46.87433280199525 67.72653955421974 A 18 18 0 0 0 67.72653955421974 53.12566719800475 L 62.80250078915871 52.257426309670095 A 13 13 0 0 1 47.742573690329905 62.80250078915871 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_f</text>
|
||||
<path d="M 32.27346044578026 46.87433280199525 A 18 18 0 0 0 46.87433280199525 67.72653955421974 L 47.742573690329905 62.80250078915871 A 13 13 0 0 1 37.19749921084129 47.742573690329905 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 27.349421680719214 46.0060919136606 A 23 23 0 0 0 46.006091913660605 72.65057831928078 L 46.87433280199525 67.72653955421974 A 18 18 0 0 1 32.27346044578026 46.87433280199525 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_f</text>
|
||||
<path d="M 42.5435063274364 39.35102342424311 A 13 13 0 0 0 37.19749921084129 47.742573690329905 L 42.121537975902335 48.61081457866456 A 8 8 0 0 1 45.41138850919163 43.446783645688065 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 39.67562414568117 35.25526320279815 A 18 18 0 0 0 32.27346044578026 46.87433280199525 L 37.19749921084129 47.742573690329905 A 13 13 0 0 1 42.5435063274364 39.35102342424311 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 36.807741963925935 31.159502981353192 A 23 23 0 0 0 27.349421680719214 46.0060919136606 L 32.27346044578026 46.87433280199525 A 18 18 0 0 1 39.67562414568117 35.25526320279815 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
</g>
|
||||
<g transform="translate(0, 210)">
|
||||
<circle cx="50.0" cy="50.0" r="8" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<circle cx="50.0" cy="50.0" r="18" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<polygon points="57.60712871133259,66.31354016665969 59.3477321852166,67.68106057320843 57.535871773231065,68.52594495882516" fill="black" />
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_g</text>
|
||||
<path d="M 63.0 50.0 A 13 13 0 0 0 50.0 37.0 L 50.0 42.0 A 8 8 0 0 1 58.0 50.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_g</text>
|
||||
<path d="M 50.0 63.0 A 13 13 0 0 0 63.0 50.0 L 58.0 50.0 A 8 8 0 0 1 50.0 58.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 50.0 68.0 A 18 18 0 0 0 68.0 50.0 L 63.0 50.0 A 13 13 0 0 1 50.0 63.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_g</text>
|
||||
<path d="M 32.0 50.0 A 18 18 0 0 0 50.0 68.0 L 50.0 63.0 A 13 13 0 0 1 37.0 50.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
</g>
|
||||
<g transform="translate(50, 210)">
|
||||
<circle cx="50.0" cy="50.0" r="8" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<circle cx="50.0" cy="50.0" r="18" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<polygon points="54.65874281184537,67.38666487320323 56.135435181326805,69.03566219325552 54.20438836632596,69.55308462788167" fill="black" />
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_h</text>
|
||||
<path d="M 63.0 50.0 A 13 13 0 0 0 50.0 37.0 L 50.0 42.0 A 8 8 0 0 1 58.0 50.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_h</text>
|
||||
<path d="M 50.0 63.0 A 13 13 0 0 0 63.0 50.0 L 58.0 50.0 A 8 8 0 0 1 50.0 58.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 50.0 68.0 A 18 18 0 0 0 68.0 50.0 L 63.0 50.0 A 13 13 0 0 1 50.0 63.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_h</text>
|
||||
<path d="M 32.0 50.0 A 18 18 0 0 0 50.0 68.0 L 50.0 63.0 A 13 13 0 0 1 37.0 50.0 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
</g>
|
||||
<g transform="translate(110, 210)">
|
||||
<circle cx="50.0" cy="50.0" r="8" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<circle cx="50.0" cy="50.0" r="28" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<polygon points="59.57656401311871,23.688606617994562 59.31538587853599,21.482924660232563 61.19442310513856,22.166838279794014" fill="black" />
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_i</text>
|
||||
<path d="M 54.446261863233694 37.78399592978319 A 13 13 0 0 0 50.0 37.0 L 50.0 42.0 A 8 8 0 0 1 52.73616114660535 42.482459033712736 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_i</text>
|
||||
<path d="M 59.50759812104921 41.13402131918752 A 13 13 0 0 0 54.446261863233694 37.78399592978319 L 52.73616114660535 42.482459033712736 A 8 8 0 0 1 55.85082961295336 44.544013119500015 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 63.16436662914507 37.72402951887503 A 18 18 0 0 0 56.15636257986204 33.08553282585365 L 54.446261863233694 37.78399592978319 A 13 13 0 0 1 59.50759812104921 41.13402131918752 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_i</text>
|
||||
<path d="M 67.30271052688974 45.03852759529401 A 18 18 0 0 0 63.16436662914507 37.72402951887503 L 59.50759812104921 41.13402131918752 A 13 13 0 0 1 62.496402047198146 46.41671437437901 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_i</text>
|
||||
<path d="M 67.66928930205795 53.43456191677781 A 18 18 0 0 0 67.30271052688974 45.03852759529401 L 62.496402047198146 46.41671437437901 A 13 13 0 0 1 62.761153384819636 52.48051693989508 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 72.57742521929627 54.38860689366053 A 23 23 0 0 0 72.10901900658133 43.66034081620902 L 67.30271052688974 45.03852759529401 A 18 18 0 0 1 67.66928930205795 53.43456191677781 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_i</text>
|
||||
<path d="M 60.24413979688739 58.00359917923356 A 13 13 0 0 0 62.761153384819636 52.48051693989508 L 57.85301746758131 51.526471963012355 A 8 8 0 0 1 56.304086028853774 54.925291802605265 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 64.184193564921 61.08190655586185 A 18 18 0 0 0 67.66928930205795 53.43456191677781 L 62.761153384819636 52.48051693989508 A 13 13 0 0 1 60.24413979688739 58.00359917923356 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 68.12424733295461 64.16021393249014 A 23 23 0 0 0 72.57742521929627 54.38860689366053 L 67.66928930205795 53.43456191677781 A 18 18 0 0 1 64.184193564921 61.08190655586185 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_i</text>
|
||||
<path d="M 55.49403740262909 61.78200123147645 A 13 13 0 0 0 60.24413979688739 58.00359917923356 L 56.304086028853774 54.925291802605265 A 8 8 0 0 1 53.380946093925594 57.2504622962932 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 59.72022002003609 70.84507910184294 A 23 23 0 0 0 68.12424733295461 64.16021393249014 L 64.184193564921 61.08190655586185 A 18 18 0 0 1 57.60712871133259 66.31354016665969 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_i</text>
|
||||
<path d="M 49.197311575842484 72.9859890214392 A 23 23 0 0 0 59.72022002003609 70.84507910184294 L 57.60712871133259 66.31354016665969 A 18 18 0 0 1 49.37180905935499 67.98903488634372 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_i</text>
|
||||
<path d="M 38.84937873433425 70.11625326420611 A 23 23 0 0 0 49.197311575842484 72.9859890214392 L 49.37180905935499 67.98903488634372 A 18 18 0 0 1 41.273426835565935 65.74315472850913 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 36.42533063310256 74.48935179990309 A 28 28 0 0 0 49.02281409232998 77.98294315653467 L 49.197311575842484 72.9859890214392 A 23 23 0 0 1 38.84937873433425 70.11625326420611 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_i</text>
|
||||
<path d="M 39.22251155678446 57.26950774511971 A 13 13 0 0 0 43.69747493679762 61.37005619281214 L 46.1215230380293 56.99695765711517 A 8 8 0 0 1 43.36769941955967 54.47354322776597 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 30.932135831234042 62.86143677982718 A 23 23 0 0 0 38.84937873433425 70.11625326420611 L 41.273426835565935 65.74315472850913 A 18 18 0 0 1 35.07732369400925 60.06547226247344 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 26.786947968458833 65.65740129718091 A 28 28 0 0 0 36.42533063310256 74.48935179990309 L 38.84937873433425 70.11625326420611 A 23 23 0 0 1 30.932135831234042 62.86143677982718 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_i</text>
|
||||
<path d="M 37.096900028662816 51.584301464266915 A 13 13 0 0 0 39.22251155678446 57.26950774511971 L 43.36769941955967 54.47354322776597 A 8 8 0 0 1 42.05963078686943 50.97495474724118 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 32.134169270456205 52.19364818129266 A 18 18 0 0 0 35.07732369400925 60.06547226247344 L 39.22251155678446 57.26950774511971 A 13 13 0 0 1 37.096900028662816 51.584301464266915 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 27.171438512249594 52.802994898318396 A 23 23 0 0 0 30.932135831234042 62.86143677982718 L 35.07732369400925 60.06547226247344 A 18 18 0 0 1 32.134169270456205 52.19364818129266 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 22.208707754042983 53.41234161534413 A 28 28 0 0 0 26.786947968458833 65.65740129718091 L 30.932135831234042 62.86143677982718 A 23 23 0 0 1 27.171438512249594 52.802994898318396 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">dial_i</text>
|
||||
<path d="M 33.08553282585365 43.843637420137966 A 18 18 0 0 0 32.134169270456205 52.19364818129266 L 37.096900028662816 51.584301464266915 A 13 13 0 0 1 37.78399592978319 45.553738136766306 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 28.387069721924107 42.13353670350962 A 23 23 0 0 0 27.171438512249594 52.802994898318396 L 32.134169270456205 52.19364818129266 A 18 18 0 0 1 33.08553282585365 43.843637420137966 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 23.688606617994566 40.42343598688127 A 28 28 0 0 0 22.208707754042983 53.41234161534413 L 27.171438512249594 52.802994898318396 A 23 23 0 0 1 28.387069721924107 42.13353670350962 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 43 KiB |
@@ -1,101 +1,139 @@
|
||||
<svg width="100mm" height="100mm" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<svg width="210mm" height="297mm" viewBox="0 0 210 297" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(10, 10)">
|
||||
<circle cx="50.0" cy="50.0" r="8" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<circle cx="50.0" cy="50.0" r="38" stroke="black" stroke-width="0.1" fill="none" />
|
||||
<polygon points="72.60326589655097,19.453439296545742 72.98170344432137,17.26101243475498 74.58924970060986,18.450534090716246" fill="black" />
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 54.446261863233694 37.78399592978319 A 13 13 0 0 0 50.0 37.0 L 50.0 42.0 A 8 8 0 0 1 52.73616114660535 42.482459033712736 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 56.03624925742874 38.48636916945002 A 13 13 0 0 0 54.446261863233694 37.78399592978319 L 52.73616114660535 42.482459033712736 A 8 8 0 0 1 53.714614927648455 42.914688719661555 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 58.35788358720903 34.058049619238496 A 18 18 0 0 0 56.15636257986204 33.08553282585365 L 54.446261863233694 37.78399592978319 A 13 13 0 0 1 56.03624925742874 38.48636916945002 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 60.40998205102376 35.31557717520491 A 18 18 0 0 0 58.35788358720903 34.058049619238496 L 56.03624925742874 38.48636916945002 A 13 13 0 0 1 57.51832037018382 39.394583515425765 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 62.27597048112497 36.835633370854936 A 18 18 0 0 0 60.40998205102376 35.31557717520491 L 57.51832037018382 39.394583515425765 A 13 13 0 0 1 58.86597868081248 40.49240187895079 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 65.68596228143747 33.178864862759085 A 23 23 0 0 0 63.30164373186369 31.236570834984043 L 60.40998205102376 35.31557717520491 A 18 18 0 0 1 62.27597048112497 36.835633370854936 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 60.05513070554153 41.76019742381677 A 13 13 0 0 0 58.86597868081248 40.49240187895079 L 55.455986880499985 44.14917038704664 A 8 8 0 0 1 56.18777274187171 44.92935226081032 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 63.922488669211354 38.59104258682322 A 18 18 0 0 0 62.27597048112497 36.835633370854936 L 58.86597868081248 40.49240187895079 A 13 13 0 0 1 60.05513070554153 41.76019742381677 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 67.78984663288117 35.421887749829665 A 23 23 0 0 0 65.68596228143747 33.178864862759085 L 62.27597048112497 36.835633370854936 A 18 18 0 0 1 63.922488669211354 38.59104258682322 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 61.064516741681 43.17530445565072 A 13 13 0 0 0 60.05513070554153 41.76019742381677 L 56.18777274187171 44.92935226081032 A 8 8 0 0 1 56.808933379496 45.800187357323516 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 69.57568346605099 37.925538652305114 A 23 23 0 0 0 67.78984663288117 35.421887749829665 L 63.922488669211354 38.59104258682322 A 18 18 0 0 1 65.320100103866 40.55042155397791 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 71.01154552577982 40.64505720925659 A 23 23 0 0 0 69.57568346605099 37.925538652305114 L 65.320100103866 40.55042155397791 A 18 18 0 0 1 66.44381823756682 42.6787404246356 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 72.07176241849403 43.53182377006049 A 23 23 0 0 0 71.01154552577982 40.64505720925659 L 66.44381823756682 42.6787404246356 A 18 18 0 0 1 67.2735531970823 44.93794903743865 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 76.86997163990577 42.12569850268234 A 28 28 0 0 0 75.57927281399282 38.61137399387759 L 71.01154552577982 40.64505720925659 A 23 23 0 0 1 72.07176241849403 43.53182377006049 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 62.851562353462455 48.04108574075672 A 13 13 0 0 0 62.47534397567054 46.3440743048168 L 57.677134754258795 47.75019957219495 A 8 8 0 0 1 57.90865375597689 48.79451430200414 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 72.73737954843357 46.53422861826189 A 23 23 0 0 0 72.07176241849403 43.53182377006049 L 67.2735531970823 44.93794903743865 A 18 18 0 0 1 67.79447095094801 47.28765717950931 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 77.68028814591912 45.780800057014474 A 28 28 0 0 0 76.86997163990577 42.12569850268234 L 72.07176241849403 43.53182377006049 A 23 23 0 0 1 72.73737954843357 46.53422861826189 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 62.998020037033086 49.77311871631532 A 13 13 0 0 0 62.851562353462455 48.04108574075672 L 57.90865375597689 48.79451430200414 A 8 8 0 0 1 57.99878156125113 49.86038074850173 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 67.99725851281505 49.68585668412889 A 18 18 0 0 0 67.79447095094801 47.28765717950931 L 62.851562353462455 48.04108574075672 A 13 13 0 0 1 62.998020037033086 49.77311871631532 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 72.996496988597 49.59859465194248 A 23 23 0 0 0 72.73737954843357 46.53422861826189 L 67.79447095094801 47.28765717950931 A 18 18 0 0 1 67.99725851281505 49.68585668412889 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 77.99573546437895 49.51133261975606 A 28 28 0 0 0 77.68028814591912 45.780800057014474 L 72.73737954843357 46.53422861826189 A 23 23 0 0 1 72.996496988597 49.59859465194248 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 67.87829043935497 52.08967245425414 A 18 18 0 0 0 67.99725851281505 49.68585668412889 L 62.998020037033086 49.77311871631532 A 13 13 0 0 1 62.91209865064526 51.509207883627994 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 72.84448222806469 52.6701370248803 A 23 23 0 0 0 72.996496988597 49.59859465194248 L 67.99725851281505 49.68585668412889 A 18 18 0 0 1 67.87829043935497 52.08967245425414 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 77.81067401677441 53.250601595506446 A 28 28 0 0 0 77.99573546437895 49.51133261975606 L 72.996496988597 49.59859465194248 A 23 23 0 0 1 72.84448222806469 52.6701370248803 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 67.43969364606622 54.45612898504495 A 18 18 0 0 0 67.87829043935497 52.08967245425414 L 62.91209865064526 51.509207883627994 A 13 13 0 0 1 62.59533429993671 53.218315378088015 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 77.12841233832522 56.93175619895881 A 28 28 0 0 0 77.81067401677441 53.250601595506446 L 72.84448222806469 52.6701370248803 A 23 23 0 0 1 72.28405299219571 55.693942592001875 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 62.05339010936824 54.869885714406855 A 13 13 0 0 0 62.59533429993671 53.218315378088015 L 57.75097495380721 51.98050177113109 A 8 8 0 0 1 57.4174708365343 52.996852747327296 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 66.68930938220217 56.742918681486415 A 18 18 0 0 0 67.43969364606622 54.45612898504495 L 62.59533429993671 53.218315378088015 A 13 13 0 0 1 62.05339010936824 54.869885714406855 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 75.96114792787004 60.488984615645535 A 28 28 0 0 0 77.12841233832522 56.93175619895881 L 72.28405299219571 55.693942592001875 A 23 23 0 0 1 71.32522865503611 58.615951648565975 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 61.29595497668079 56.434392058679705 A 13 13 0 0 0 62.05339010936824 54.869885714406855 L 57.4174708365343 52.996852747327296 A 8 8 0 0 1 56.95135690872664 53.95962588226443 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 74.32974918054325 63.85869058792552 A 28 28 0 0 0 75.96114792787004 60.488984615645535 L 71.32522865503611 58.615951648565975 A 23 23 0 0 1 69.9851511125891 61.38392441151025 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 72.26338230185574 66.98063039116677 A 28 28 0 0 0 74.32974918054325 63.85869058792552 L 69.9851511125891 61.38392441151025 A 23 23 0 0 1 68.2877783193815 63.94837496417271 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 69.79898987322333 69.79898987322332 A 28 28 0 0 0 72.26338230185574 66.98063039116677 L 68.2877783193815 63.94837496417271 A 23 23 0 0 1 66.2634559672906 66.2634559672906 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 73.33452377915607 73.33452377915606 A 33 33 0 0 0 76.23898628432998 70.01288581816084 L 72.26338230185574 66.98063039116677 A 28 28 0 0 1 69.79898987322333 69.79898987322332 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 57.883864110184575 60.33657035443302 A 13 13 0 0 0 59.19238815542512 59.19238815542512 L 55.65685424949238 55.65685424949238 A 8 8 0 0 1 54.851608683190506 56.36096637195878 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 66.98063039116677 72.26338230185574 A 28 28 0 0 0 69.79898987322333 69.79898987322332 L 66.2634559672906 66.2634559672906 A 23 23 0 0 1 63.9483749641727 68.2877783193815 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 70.01288581816084 76.23898628432998 A 33 33 0 0 0 73.33452377915607 73.33452377915606 L 69.79898987322333 69.79898987322332 A 28 28 0 0 1 66.98063039116677 72.26338230185574 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 56.434392058679705 61.29595497668079 A 13 13 0 0 0 57.883864110184575 60.33657035443302 L 54.851608683190506 56.36096637195878 A 8 8 0 0 1 53.95962588226443 56.95135690872664 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 58.90915823509498 65.64055304463494 A 18 18 0 0 0 60.91611953717864 64.31217433690726 L 57.883864110184575 60.33657035443302 A 13 13 0 0 1 56.434392058679705 61.29595497668079 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 63.858690587925516 74.32974918054325 A 28 28 0 0 0 66.98063039116677 72.26338230185574 L 63.9483749641727 68.2877783193815 A 23 23 0 0 1 61.38392441151024 69.9851511125891 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 66.33345676434078 78.6743472484974 A 33 33 0 0 0 70.01288581816084 76.23898628432998 L 66.98063039116677 72.26338230185574 A 28 28 0 0 1 63.858690587925516 74.32974918054325 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 56.742918681486415 66.68930938220217 A 18 18 0 0 0 58.90915823509498 65.64055304463494 L 56.434392058679705 61.29595497668079 A 13 13 0 0 1 54.869885714406855 62.05339010936824 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 60.488984615645535 75.96114792787004 A 28 28 0 0 0 63.858690587925516 74.32974918054325 L 61.38392441151024 69.9851511125891 A 23 23 0 0 1 58.615951648565975 71.32522865503611 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 62.362017582725095 80.59706720070399 A 33 33 0 0 0 66.33345676434078 78.6743472484974 L 63.858690587925516 74.32974918054325 A 28 28 0 0 1 60.488984615645535 75.96114792787004 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 54.45612898504495 67.43969364606622 A 18 18 0 0 0 56.742918681486415 66.68930938220217 L 54.869885714406855 62.05339010936824 A 13 13 0 0 1 53.21831537808802 62.59533429993671 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 55.69394259200188 72.28405299219571 A 23 23 0 0 0 58.615951648565975 71.32522865503611 L 56.742918681486415 66.68930938220217 A 18 18 0 0 1 54.45612898504495 67.43969364606622 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 56.931756198958816 77.12841233832522 A 28 28 0 0 0 60.488984615645535 75.96114792787004 L 58.615951648565975 71.32522865503611 A 23 23 0 0 1 55.69394259200188 72.28405299219571 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 58.16956980591574 81.97277168445473 A 33 33 0 0 0 62.362017582725095 80.59706720070399 L 60.488984615645535 75.96114792787004 A 28 28 0 0 1 56.931756198958816 77.12841233832522 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 51.509207883627994 62.91209865064526 A 13 13 0 0 0 53.21831537808802 62.59533429993671 L 51.98050177113109 57.75097495380721 A 8 8 0 0 1 50.928743313001846 57.94590686193554 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 52.08967245425414 67.87829043935497 A 18 18 0 0 0 54.45612898504495 67.43969364606622 L 53.21831537808802 62.59533429993671 A 13 13 0 0 1 51.509207883627994 62.91209865064526 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 52.6701370248803 72.84448222806469 A 23 23 0 0 0 55.69394259200188 72.28405299219571 L 54.45612898504495 67.43969364606622 A 18 18 0 0 1 52.08967245425414 67.87829043935497 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 53.250601595506446 77.81067401677441 A 28 28 0 0 0 56.931756198958816 77.12841233832522 L 55.69394259200188 72.28405299219571 A 23 23 0 0 1 52.6701370248803 72.84448222806469 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 53.8310661661326 82.77686580548412 A 33 33 0 0 0 58.16956980591574 81.97277168445473 L 56.931756198958816 77.12841233832522 A 28 28 0 0 1 53.250601595506446 77.81067401677441 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 49.77311871631532 62.998020037033086 A 13 13 0 0 0 51.509207883627994 62.91209865064526 L 50.928743313001846 57.94590686193554 A 8 8 0 0 1 49.86038074850173 57.99878156125113 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 49.59859465194248 72.996496988597 A 23 23 0 0 0 52.6701370248803 72.84448222806469 L 52.08967245425414 67.87829043935497 A 18 18 0 0 1 49.6858566841289 67.99725851281505 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 49.51133261975606 77.99573546437895 A 28 28 0 0 0 53.250601595506446 77.81067401677441 L 52.6701370248803 72.84448222806469 A 23 23 0 0 1 49.59859465194248 72.996496988597 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 49.424070587569645 82.99497394016092 A 33 33 0 0 0 53.8310661661326 82.77686580548412 L 53.250601595506446 77.81067401677441 A 28 28 0 0 1 49.51133261975606 77.99573546437895 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 46.53422861826189 72.73737954843357 A 23 23 0 0 0 49.59859465194248 72.996496988597 L 49.6858566841289 67.99725851281505 A 18 18 0 0 1 47.28765717950931 67.79447095094801 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 45.78080005701448 77.68028814591912 A 28 28 0 0 0 49.51133261975606 77.99573546437895 L 49.59859465194248 72.996496988597 A 23 23 0 0 1 46.53422861826189 72.73737954843357 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 45.02737149576706 82.62319674340469 A 33 33 0 0 0 49.424070587569645 82.99497394016092 L 49.51133261975606 77.99573546437895 A 28 28 0 0 1 45.78080005701448 77.68028814591912 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 43.53182377006049 72.07176241849403 A 23 23 0 0 0 46.53422861826189 72.73737954843357 L 47.28765717950931 67.79447095094801 A 18 18 0 0 1 44.93794903743864 67.2735531970823 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 40.71957323530418 81.66818086131752 A 33 33 0 0 0 45.02737149576706 82.62319674340469 L 45.78080005701448 77.68028814591912 A 28 28 0 0 1 42.12569850268234 76.86997163990577 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 44.7124236400146 61.87609094935381 A 13 13 0 0 0 46.3440743048168 62.47534397567054 L 47.75019957219495 57.677134754258795 A 8 8 0 0 1 46.7461068553936 57.30836366114081 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 40.6450572092566 71.01154552577982 A 23 23 0 0 0 43.53182377006049 72.07176241849403 L 44.93794903743864 67.2735531970823 A 18 18 0 0 1 42.6787404246356 66.44381823756682 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 36.5776907784986 80.14700010220584 A 33 33 0 0 0 40.71957323530418 81.66818086131752 L 42.12569850268234 76.86997163990577 A 28 28 0 0 1 38.6113739938776 75.57927281399283 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 43.17530445565072 61.064516741681 A 13 13 0 0 0 44.7124236400146 61.87609094935381 L 46.7461068553936 57.30836366114081 A 8 8 0 0 1 45.80018735732352 56.808933379496 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 40.55042155397792 65.320100103866 A 18 18 0 0 0 42.6787404246356 66.44381823756682 L 44.7124236400146 61.87609094935381 A 13 13 0 0 1 43.17530445565072 61.064516741681 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 37.92553865230512 69.57568346605099 A 23 23 0 0 0 40.6450572092566 71.01154552577982 L 42.6787404246356 66.44381823756682 A 18 18 0 0 1 40.55042155397792 65.320100103866 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 32.67577284895952 78.08685019042099 A 33 33 0 0 0 36.5776907784986 80.14700010220584 L 38.6113739938776 75.57927281399283 A 28 28 0 0 1 35.300655750632316 73.831266828236 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 38.591042586823214 63.92248866921135 A 18 18 0 0 0 40.55042155397792 65.320100103866 L 43.17530445565072 61.064516741681 A 13 13 0 0 1 41.76019742381676 60.05513070554153 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 35.421887749829665 67.78984663288117 A 23 23 0 0 0 37.92553865230512 69.57568346605099 L 40.55042155397792 65.320100103866 A 18 18 0 0 1 38.591042586823214 63.92248866921135 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 29.083578075842556 75.5245625602208 A 33 33 0 0 0 32.67577284895952 78.08685019042099 L 35.300655750632316 73.831266828236 A 28 28 0 0 1 32.25273291283611 71.657204596551 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 36.835633370854936 62.27597048112497 A 18 18 0 0 0 38.591042586823214 63.92248866921135 L 41.76019742381676 60.05513070554153 A 13 13 0 0 1 40.49240187895079 58.86597868081248 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 25.865327846567375 72.50594588206245 A 33 33 0 0 0 29.083578075842556 75.5245625602208 L 32.25273291283611 71.657204596551 A 28 28 0 0 1 29.522096354663226 69.09595408174997 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 39.394583515425765 57.51832037018383 A 13 13 0 0 0 40.49240187895079 58.86597868081248 L 44.14917038704664 55.45598688049999 A 8 8 0 0 1 43.47358985564662 54.62665868934389 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 35.31557717520491 60.40998205102376 A 18 18 0 0 0 36.835633370854936 62.27597048112497 L 40.49240187895079 58.86597868081248 A 13 13 0 0 1 39.394583515425765 57.51832037018383 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 23.07855815454233 69.08496709354355 A 33 33 0 0 0 25.865327846567375 72.50594588206245 L 29.522096354663226 69.09595408174997 A 28 28 0 0 1 27.15756449476319 66.19330541270364 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 38.48636916945002 56.03624925742874 A 13 13 0 0 0 39.394583515425765 57.51832037018383 L 43.47358985564662 54.62665868934389 A 8 8 0 0 1 42.914688719661555 53.714614927648455 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 20.7730909686039 65.32278657654987 A 33 33 0 0 0 23.07855815454233 69.08496709354355 L 27.15756449476319 66.19330541270364 A 28 28 0 0 1 25.20141051881543 63.00115224676959 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 18.990143514065025 61.28666472974707 A 33 33 0 0 0 20.7730909686039 65.32278657654987 L 25.20141051881543 63.00115224676959 A 28 28 0 0 1 23.688606617994566 59.57656401311873 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 17.761591389677662 57.04875948475295 A 33 33 0 0 0 18.990143514065025 61.28666472974707 L 23.688606617994566 59.57656401311873 A 28 28 0 0 1 22.646198754878018 55.98076562342674 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 12.87698402447731 58.11675334607915 A 38 38 0 0 0 14.291680410135484 62.99676544637542 L 18.990143514065025 61.28666472974707 A 33 33 0 0 1 17.761591389677662 57.04875948475295 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 37.04309645542142 51.05766277068215 A 13 13 0 0 0 37.30002085047908 52.77678403944813 L 42.18462821567943 51.70879017812192 A 8 8 0 0 1 42.026520895643955 50.650869397342866 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 17.1093986945313 52.68483626403931 A 33 33 0 0 0 17.761591389677662 57.04875948475295 L 22.646198754878018 55.98076562342674 A 28 28 0 0 1 22.09282313475383 52.27804289070002 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 12.125974254308773 53.0916296373786 A 38 38 0 0 0 12.87698402447731 58.11675334607915 L 17.761591389677662 57.04875948475295 A 33 33 0 0 1 17.1093986945313 52.68483626403931 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 37.01781604819054 49.31963256884173 A 13 13 0 0 0 37.04309645542142 51.05766277068215 L 42.026520895643955 50.650869397342866 A 8 8 0 0 1 42.01096372196341 49.58131235005645 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 32.02466837441767 49.057952787627016 A 18 18 0 0 0 32.05967201519889 51.46445614402144 L 37.04309645542142 51.05766277068215 A 13 13 0 0 1 37.01781604819054 49.31963256884173 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 17.045225353099063 48.272913443982866 A 33 33 0 0 0 17.1093986945313 52.68483626403931 L 22.09282313475383 52.27804289070002 A 28 28 0 0 1 22.038373026871934 48.53459322519758 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 12.052077679326196 48.01123366276814 A 38 38 0 0 0 12.125974254308773 53.0916296373786 L 17.1093986945313 52.68483626403931 A 33 33 0 0 1 17.045225353099063 48.272913443982866 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 32.31102835928456 46.66829138519513 A 18 18 0 0 0 32.02466837441767 49.057952787627016 L 37.01781604819054 49.31963256884173 A 13 13 0 0 1 37.22463159281663 47.593766000418704 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 17.57021865868836 43.891867539524405 A 33 33 0 0 0 17.045225353099063 48.272913443982866 L 22.038373026871934 48.53459322519758 A 28 28 0 0 1 22.48382189222043 44.817342154747976 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 12.656615425156296 42.96639292430083 A 38 38 0 0 0 12.052077679326196 48.01123366276814 L 17.045225353099063 48.272913443982866 A 33 33 0 0 1 17.57021865868836 43.891867539524405 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<text x="40" y="8" font-size="8" fill="black">one_dial</text>
|
||||
<path d="M 38.42982302564229 36.211200023858396 A 18 18 0 0 0 32.31102835928456 46.66829138519513 L 37.22463159281663 47.593766000418704 A 13 13 0 0 1 41.64376107407499 40.04142223945328 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 35.21588497720959 32.38097780826351 A 23 23 0 0 0 27.397425125752495 45.742816769971554 L 32.31102835928456 46.66829138519513 A 18 18 0 0 1 38.42982302564229 36.211200023858396 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 28.788008880344197 24.72053337707373 A 33 33 0 0 0 17.57021865868836 43.891867539524405 L 22.48382189222043 44.817342154747976 A 28 28 0 0 1 32.001946928776896 28.55075559266862 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
<path d="M 25.5740708319115 20.89031116147884 A 38 38 0 0 0 12.656615425156296 42.96639292430083 L 17.57021865868836 43.891867539524405 A 33 33 0 0 1 28.788008880344197 24.72053337707373 Z" stroke="none" stroke-width="0.1" fill="black"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 25 KiB |
@@ -68,6 +68,12 @@ class SVGGenerator:
|
||||
f'<polygon points="{p1[0]},{p1[1]} {p2[0]},{p2[1]} {p3[0]},{p3[1]}" fill="black" />'
|
||||
)
|
||||
|
||||
def label(self, text):
|
||||
"""左上にラベルを書く"""
|
||||
self.elements.append(
|
||||
f'<text x="40" y="8" font-size="8" fill="black">{text}</text>'
|
||||
)
|
||||
|
||||
def export_to_svg(self):
|
||||
"""描いたデータをsvgにして出力する。"""
|
||||
svg_elements = "\n".join(self.elements)
|
||||
@@ -79,34 +85,222 @@ class SVGGenerator:
|
||||
|
||||
encoders = [
|
||||
{
|
||||
"page": "one_dial",
|
||||
"x": 10,
|
||||
"y": 10,
|
||||
"name": "one_dial",
|
||||
"bits": 6,
|
||||
# ダイヤルでは最初の穴の中心が0度の位置、そこから23/3度おきに35個の穴がある。
|
||||
# コードでは最初の穴位置が20度から(20+23/2)度になってる。
|
||||
"degrees": [
|
||||
0, # 最初の遊び
|
||||
]+[
|
||||
(i * 23 / 3 + 20) for i in range(33+2)
|
||||
] + [320],
|
||||
"indicator": 23/3*.5+20 + 23/3+5,
|
||||
}
|
||||
# 最初の穴の中央位置 = 23/3*.5+20
|
||||
# センサとエンドの位置のズレ = 23/3+5
|
||||
"indicator": 23/3*0.5+20 + 23/3+5,
|
||||
},
|
||||
{
|
||||
"page": "nine_dial",
|
||||
"x": 0,
|
||||
"y": 10,
|
||||
"name": "dial_a",
|
||||
"bits": 6,
|
||||
# あそびあり35穴
|
||||
"degrees": [
|
||||
0, # 最初の遊び
|
||||
]+[
|
||||
(i * 23 / 3 + 20) for i in range(33+2)
|
||||
] + [320],
|
||||
"indicator": 23/3*0.5+20 + 23/3+5 + 85,
|
||||
},
|
||||
{
|
||||
"page": "nine_dial",
|
||||
"x": 70,
|
||||
"y": 10,
|
||||
"name": "dial_b",
|
||||
"bits": 2,
|
||||
# あそびなし3穴
|
||||
"degrees": [
|
||||
270/3*0, # 穴1
|
||||
270/3*1, # 穴2
|
||||
270/3*2, # 穴3
|
||||
270/3*3, # 最後
|
||||
],
|
||||
"indicator": 75,
|
||||
},
|
||||
{
|
||||
"page": "nine_dial",
|
||||
"x": 120,
|
||||
"y": 10,
|
||||
"name": "dial_c",
|
||||
"bits": 3,
|
||||
# あそびなし4穴
|
||||
"degrees": [
|
||||
270/4*0, # 穴1
|
||||
270/4*1, # 穴2
|
||||
270/4*2, # 穴3
|
||||
270/4*3, # 穴4
|
||||
270/4*4, # 最後
|
||||
],
|
||||
"indicator": 75-90,
|
||||
},
|
||||
{
|
||||
"page": "nine_dial",
|
||||
"x": 0,
|
||||
"y": 110,
|
||||
"name": "dial_d",
|
||||
"bits": 3,
|
||||
# あそびあり1穴
|
||||
"degrees": [
|
||||
0, # あそび
|
||||
20, # 1オンになる所
|
||||
300, # 最後
|
||||
],
|
||||
"indicator": 20+75+90-90,
|
||||
},
|
||||
{
|
||||
"page": "nine_dial",
|
||||
"x": 60,
|
||||
"y": 110,
|
||||
"name": "dial_e",
|
||||
"bits": 3,
|
||||
# あそびあり6穴
|
||||
"degrees": [
|
||||
0, # あそび
|
||||
20 + 270/6*0, # 穴1
|
||||
20 + 270/6*1, # 穴2
|
||||
20 + 270/6*2, # 穴3
|
||||
20 + 270/6*3, # 穴4
|
||||
20 + 270/6*4, # 穴5
|
||||
20 + 270/6*5, # 穴6
|
||||
20 + 270/6*6, # 最後
|
||||
],
|
||||
"indicator": 20+75+45,
|
||||
},
|
||||
{
|
||||
"page": "nine_dial",
|
||||
"x": 120,
|
||||
"y": 110,
|
||||
"name": "dial_f",
|
||||
"bits": 3,
|
||||
# あそびあり4穴
|
||||
# 十字キーなので値がすごい変則
|
||||
"degrees": [
|
||||
0, # あそび
|
||||
10+360/4*0, # 穴1
|
||||
10+360/4*1, # 穴2
|
||||
10+360/4*2, # 穴3
|
||||
10+360/4*3, # 穴4
|
||||
10+360/4*4-45, # 最後
|
||||
],
|
||||
"indicator": 75+90-15,
|
||||
},
|
||||
{
|
||||
"page": "nine_dial",
|
||||
"x": 0,
|
||||
"y": 210,
|
||||
"name": "dial_g",
|
||||
"bits": 2,
|
||||
# あそびなし3穴
|
||||
"degrees": [ # degrees dial_bと同じ
|
||||
270/3*0, # 穴1
|
||||
270/3*1, # 穴2
|
||||
270/3*2, # 穴3
|
||||
270/3*3, # 最後
|
||||
],
|
||||
"indicator": 75+80,
|
||||
},
|
||||
{
|
||||
"page": "nine_dial",
|
||||
"x": 50,
|
||||
"y": 210,
|
||||
"name": "dial_h",
|
||||
"bits": 2,
|
||||
# あそびなし3穴
|
||||
"degrees": [ # degrees dial_bと同じ
|
||||
270/3*0, # 穴1
|
||||
270/3*1, # 穴2
|
||||
270/3*2, # 穴3
|
||||
270/3*3, # 最後
|
||||
],
|
||||
"indicator": 75+90,
|
||||
},
|
||||
{
|
||||
"page": "nine_dial",
|
||||
"x": 110,
|
||||
"y": 210,
|
||||
"name": "dial_i",
|
||||
"bits": 4,
|
||||
# あそびあり10穴
|
||||
"degrees": [
|
||||
0, # あそび
|
||||
20 + 270/10*0, # 穴1
|
||||
20 + 270/10*1, # 穴2
|
||||
20 + 270/10*2, # 穴3
|
||||
20 + 270/10*3, # 穴4
|
||||
20 + 270/10*4, # 穴5
|
||||
20 + 270/10*5, # 穴6
|
||||
20 + 270/10*6, # 穴7
|
||||
20 + 270/10*7, # 穴8
|
||||
20 + 270/10*8, # 穴9
|
||||
20 + 270/10*9, # 穴10
|
||||
20 + 270/10*10, # 最後
|
||||
],
|
||||
"indicator": 20+75+315-30,
|
||||
},
|
||||
]
|
||||
|
||||
from collections import defaultdict
|
||||
|
||||
# Group encoders by page
|
||||
pages = defaultdict(list)
|
||||
for encoder in encoders:
|
||||
gen = SVGGenerator()
|
||||
bits = encoder["bits"]
|
||||
templ = encoder["degrees"]
|
||||
gen.circle(8)
|
||||
gen.circle(8+5*bits)
|
||||
gen.indicator(8+5*bits, encoder["indicator"])
|
||||
pages[encoder["page"]].append(encoder)
|
||||
|
||||
for i in range(len(templ)-1):
|
||||
num = i+1
|
||||
gray = num ^ (num>>1)
|
||||
s = f'{gray:0{bits}b}'
|
||||
# print(s)
|
||||
for j in range(bits):
|
||||
if (s[bits-j-1] == "1"):
|
||||
gen.sector_ring(8+5+5*j, 8+5*j, templ[i], templ[i+1])
|
||||
# A4 size in mm
|
||||
A4_WIDTH_MM = 210
|
||||
A4_HEIGHT_MM = 297
|
||||
|
||||
with open(f"{encoder["name"]}.svg", "w") as f:
|
||||
f.write(gen.export_to_svg())
|
||||
# Process each page
|
||||
for page_name, page_encoders in pages.items():
|
||||
page_svg_elements = []
|
||||
for encoder in page_encoders:
|
||||
# SVGGeneratorは内部でwidth/height=100を想定して中心座標を計算している
|
||||
gen = SVGGenerator(width_mm=100, height_mm=100)
|
||||
bits = encoder["bits"]
|
||||
templ = encoder["degrees"]
|
||||
gen.circle(8)
|
||||
gen.circle(8 + 5 * bits)
|
||||
gen.indicator(8 + 5 * bits, encoder["indicator"])
|
||||
|
||||
for i in range(len(templ)-1):
|
||||
gen.label(encoder["name"])
|
||||
num = i+1
|
||||
gray = num ^ (num>>1)
|
||||
s = f'{gray:0{bits}b}'
|
||||
# print(s)
|
||||
for j in range(bits):
|
||||
if (s[bits-j-1] == "1"):
|
||||
gen.sector_ring(8+5+5*j, 8+5*j, templ[i], templ[i+1])
|
||||
|
||||
# Get the SVG elements from the public member
|
||||
encoder_elements = "\n".join(gen.elements)
|
||||
|
||||
transform_x = encoder["x"]
|
||||
transform_y = encoder["y"]
|
||||
page_svg_elements.append(
|
||||
f'<g transform="translate({transform_x}, {transform_y})">\n{encoder_elements}\n</g>'
|
||||
)
|
||||
|
||||
# Combine all elements for the page into a single A4 SVG
|
||||
final_svg_content = (
|
||||
f'<svg width="{A4_WIDTH_MM}mm" height="{A4_HEIGHT_MM}mm" viewBox="0 0 {A4_WIDTH_MM} {A4_HEIGHT_MM}" xmlns="http://www.w3.org/2000/svg">\n'
|
||||
+ "\n".join(page_svg_elements)
|
||||
+ "\n</svg>"
|
||||
)
|
||||
|
||||
# Write to the page file
|
||||
with open(f"{page_name}.svg", "w") as f:
|
||||
f.write(final_svg_content)
|
||||
|
||||
46552
mozc-dial/stls/nine_dials/cap_a.stl
Normal file
20302
mozc-dial/stls/nine_dials/cap_b.stl
Normal file
23046
mozc-dial/stls/nine_dials/cap_c.stl
Normal file
35310
mozc-dial/stls/nine_dials/cap_e.stl
Normal file
35310
mozc-dial/stls/nine_dials/cap_f.stl
Normal file
20302
mozc-dial/stls/nine_dials/cap_g.stl
Normal file
20302
mozc-dial/stls/nine_dials/cap_h.stl
Normal file
50150
mozc-dial/stls/nine_dials/cap_i.stl
Normal file
13498
mozc-dial/stls/nine_dials/case_bottom_left.stl
Normal file
8122
mozc-dial/stls/nine_dials/case_bottom_right.stl
Normal file
32566
mozc-dial/stls/nine_dials/case_top_left.stl
Normal file
50486
mozc-dial/stls/nine_dials/case_top_right.stl
Normal file
9144
mozc-dial/stls/nine_dials/clutch.stl
Normal file
9214
mozc-dial/stls/nine_dials/cover_large.stl
Normal file
6890
mozc-dial/stls/nine_dials/cover_small.stl
Normal file
95685
mozc-dial/stls/nine_dials/dial_a.stl
Normal file
13561
mozc-dial/stls/nine_dials/dial_b.stl
Normal file
15997
mozc-dial/stls/nine_dials/dial_c.stl
Normal file
5413
mozc-dial/stls/nine_dials/dial_d.stl
Normal file
21233
mozc-dial/stls/nine_dials/dial_e.stl
Normal file
16641
mozc-dial/stls/nine_dials/dial_f.stl
Normal file
13561
mozc-dial/stls/nine_dials/dial_g.stl
Normal file
13561
mozc-dial/stls/nine_dials/dial_h.stl
Normal file
32853
mozc-dial/stls/nine_dials/dial_i.stl
Normal file
16305
mozc-dial/stls/nine_dials/encoder_a.stl
Normal file
14401
mozc-dial/stls/nine_dials/encoder_b.stl
Normal file
14765
mozc-dial/stls/nine_dials/encoder_c.stl
Normal file
14877
mozc-dial/stls/nine_dials/encoder_d.stl
Normal file
14877
mozc-dial/stls/nine_dials/encoder_e.stl
Normal file
14653
mozc-dial/stls/nine_dials/encoder_f.stl
Normal file
14513
mozc-dial/stls/nine_dials/encoder_g.stl
Normal file
14513
mozc-dial/stls/nine_dials/encoder_h.stl
Normal file
15213
mozc-dial/stls/nine_dials/encoder_i.stl
Normal file
982
mozc-dial/stls/nine_dials/end.stl
Normal file
@@ -0,0 +1,982 @@
|
||||
solid
|
||||
facet normal -1.511831e-14 1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.000000e+00 4.500000e+00
|
||||
vertex -2.467437e+00 8.000000e+00 4.500000e+00
|
||||
vertex -2.467437e+00 8.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -4.995488e-15 1.000000e+00 1.248872e-14
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.000000e+00 6.500000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 4.500000e+00
|
||||
vertex -2.467437e+00 8.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 1.000000e+00 -0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 4.500000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -4.510188e+00 5.114986e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
vertex -5.008773e+00 4.610759e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -5.534110e+00 4.134469e+00 4.500000e+00
|
||||
vertex -5.008773e+00 4.610759e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -4.039839e+00 5.645649e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
vertex -4.510188e+00 5.114986e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -6.084635e+00 3.687532e+00 4.500000e+00
|
||||
vertex -5.534110e+00 4.134469e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -3.599124e+00 6.201168e+00 4.500000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -3.599124e+00 6.201168e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
vertex -4.039839e+00 5.645649e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -6.658712e+00 3.271277e+00 4.500000e+00
|
||||
vertex -6.084635e+00 3.687532e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -3.189355e+00 6.779892e+00 4.500000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 4.500000e+00
|
||||
vertex -3.599124e+00 6.201168e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -7.254631e+00 2.886945e+00 4.500000e+00
|
||||
vertex -6.658712e+00 3.271277e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -2.811752e+00 7.380098e+00 4.500000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 4.500000e+00
|
||||
vertex -3.189355e+00 6.779892e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -7.870620e+00 2.535677e+00 4.500000e+00
|
||||
vertex -7.254631e+00 2.886945e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -2.467437e+00 8.000000e+00 4.500000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 4.500000e+00
|
||||
vertex -2.811752e+00 7.380098e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -8.504846e+00 2.218519e+00 4.500000e+00
|
||||
vertex -7.870620e+00 2.535677e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -9.155422e+00 1.936416e+00 4.500000e+00
|
||||
vertex -8.504846e+00 2.218519e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -9.820412e+00 1.690205e+00 4.500000e+00
|
||||
vertex -9.155422e+00 1.936416e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -1.049784e+01 1.480621e+00 4.500000e+00
|
||||
vertex -9.820412e+00 1.690205e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 0.000000e+00 4.500000e+00
|
||||
vertex -1.258442e+01 1.077301e+00 4.500000e+00
|
||||
vertex -1.188190e+01 1.173712e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 0.000000e+00 4.500000e+00
|
||||
vertex -1.188190e+01 1.173712e+00 4.500000e+00
|
||||
vertex -1.118568e+01 1.308285e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 0.000000e+00 4.500000e+00
|
||||
vertex -1.118568e+01 1.308285e+00 4.500000e+00
|
||||
vertex -1.049784e+01 1.480621e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 0.000000e+00 4.500000e+00
|
||||
vertex -1.049784e+01 1.480621e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -1.329116e+01 1.019340e+00 4.500000e+00
|
||||
vertex -1.258442e+01 1.077301e+00 4.500000e+00
|
||||
vertex -1.400000e+01 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 1.000000e+00 4.500000e+00
|
||||
vertex -1.329116e+01 1.019340e+00 4.500000e+00
|
||||
vertex -1.400000e+01 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 -0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 -5.000000e-01 5.010000e-01
|
||||
vertex 0.000000e+00 -1.000000e-03 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 -5.000000e-01 0.000000e+00
|
||||
vertex 0.000000e+00 -5.000000e-01 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 -5.000000e-01 5.010000e-01
|
||||
vertex 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.500000e+00 5.010000e-01
|
||||
vertex 0.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 8.001000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.000000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.000000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.000000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 8.500000e+00 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.500000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 8.500000e+00 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.000000e+00 -3.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 -3.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.000000e+00 -3.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 8.881784e-13 1.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.001000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 8.001000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 8.881784e-13 1.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.001000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 8.500000e+00 5.010000e-01
|
||||
vertex 5.000000e+00 8.001000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 8.500000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 8.500000e+00 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 8.500000e+00 5.010000e-01
|
||||
vertex 5.000000e+00 8.000000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 -5.000000e-01 5.010000e-01
|
||||
vertex 5.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 -1.000000e-03 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 -0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 -5.000000e-01 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 -5.000000e-01 0.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 -5.000000e-01 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 0.000000e+00 -3.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 -3.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 0.000000e+00 -3.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -4.510188e+00 5.114986e+00 6.500000e+00
|
||||
vertex -5.008773e+00 4.610759e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -5.534110e+00 4.134469e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
vertex -5.008773e+00 4.610759e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -4.039839e+00 5.645649e+00 6.500000e+00
|
||||
vertex -4.510188e+00 5.114986e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -6.084635e+00 3.687532e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
vertex -5.534110e+00 4.134469e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -3.599124e+00 6.201168e+00 6.500000e+00
|
||||
vertex -4.039839e+00 5.645649e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -6.658712e+00 3.271277e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
vertex -6.084635e+00 3.687532e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -3.189355e+00 6.779892e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -3.189355e+00 6.779892e+00 6.500000e+00
|
||||
vertex -3.599124e+00 6.201168e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -7.254631e+00 2.886945e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
vertex -6.658712e+00 3.271277e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -2.811752e+00 7.380098e+00 6.500000e+00
|
||||
vertex -3.189355e+00 6.779892e+00 6.500000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -7.870620e+00 2.535677e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
vertex -7.254631e+00 2.886945e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -2.467437e+00 8.000000e+00 6.500000e+00
|
||||
vertex -2.811752e+00 7.380098e+00 6.500000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -8.504846e+00 2.218519e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
vertex -7.870620e+00 2.535677e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -9.155422e+00 1.936416e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
vertex -8.504846e+00 2.218519e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -9.820412e+00 1.690205e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
vertex -9.155422e+00 1.936416e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -1.049784e+01 1.480621e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
vertex -9.820412e+00 1.690205e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 0.000000e+00 6.500000e+00
|
||||
vertex -1.188190e+01 1.173712e+00 6.500000e+00
|
||||
vertex -1.258442e+01 1.077301e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 0.000000e+00 6.500000e+00
|
||||
vertex -1.118568e+01 1.308285e+00 6.500000e+00
|
||||
vertex -1.188190e+01 1.173712e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 0.000000e+00 6.500000e+00
|
||||
vertex -1.049784e+01 1.480621e+00 6.500000e+00
|
||||
vertex -1.118568e+01 1.308285e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 0.000000e+00 6.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
vertex -1.049784e+01 1.480621e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -1.329116e+01 1.019340e+00 6.500000e+00
|
||||
vertex -1.400000e+01 0.000000e+00 6.500000e+00
|
||||
vertex -1.258442e+01 1.077301e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 1.000000e+00 6.500000e+00
|
||||
vertex -1.400000e+01 0.000000e+00 6.500000e+00
|
||||
vertex -1.329116e+01 1.019340e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -2.727331e-02 9.996280e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.329116e+01 1.019340e+00 6.500000e+00
|
||||
vertex -1.400000e+01 1.000000e+00 4.500000e+00
|
||||
vertex -1.400000e+01 1.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -2.727331e-02 9.996280e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.329116e+01 1.019340e+00 6.500000e+00
|
||||
vertex -1.329116e+01 1.019340e+00 4.500000e+00
|
||||
vertex -1.400000e+01 1.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -8.173878e-02 9.966538e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.258442e+01 1.077301e+00 6.500000e+00
|
||||
vertex -1.258442e+01 1.077301e+00 4.500000e+00
|
||||
vertex -1.329116e+01 1.019340e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -8.173878e-02 9.966538e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.258442e+01 1.077301e+00 6.500000e+00
|
||||
vertex -1.329116e+01 1.019340e+00 4.500000e+00
|
||||
vertex -1.329116e+01 1.019340e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.359611e-01 9.907142e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.188190e+01 1.173712e+00 6.500000e+00
|
||||
vertex -1.188190e+01 1.173712e+00 4.500000e+00
|
||||
vertex -1.258442e+01 1.077301e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.359611e-01 9.907142e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.188190e+01 1.173712e+00 6.500000e+00
|
||||
vertex -1.258442e+01 1.077301e+00 4.500000e+00
|
||||
vertex -1.258442e+01 1.077301e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.897788e-01 9.818269e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.118568e+01 1.308285e+00 6.500000e+00
|
||||
vertex -1.118568e+01 1.308285e+00 4.500000e+00
|
||||
vertex -1.188190e+01 1.173712e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.897788e-01 9.818269e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.118568e+01 1.308285e+00 6.500000e+00
|
||||
vertex -1.188190e+01 1.173712e+00 4.500000e+00
|
||||
vertex -1.188190e+01 1.173712e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -2.430319e-01 9.700183e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.049784e+01 1.480621e+00 6.500000e+00
|
||||
vertex -1.049784e+01 1.480621e+00 4.500000e+00
|
||||
vertex -1.118568e+01 1.308285e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -2.430319e-01 9.700183e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.049784e+01 1.480621e+00 6.500000e+00
|
||||
vertex -1.118568e+01 1.308285e+00 4.500000e+00
|
||||
vertex -1.118568e+01 1.308285e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -2.955619e-01 9.553236e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -9.820412e+00 1.690205e+00 6.500000e+00
|
||||
vertex -9.820412e+00 1.690205e+00 4.500000e+00
|
||||
vertex -1.049784e+01 1.480621e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -2.955619e-01 9.553236e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -9.820412e+00 1.690205e+00 6.500000e+00
|
||||
vertex -1.049784e+01 1.480621e+00 4.500000e+00
|
||||
vertex -1.049784e+01 1.480621e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -3.472125e-01 9.377865e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -9.155422e+00 1.936416e+00 6.500000e+00
|
||||
vertex -9.155422e+00 1.936416e+00 4.500000e+00
|
||||
vertex -9.820412e+00 1.690205e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -3.472125e-01 9.377865e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -9.155422e+00 1.936416e+00 6.500000e+00
|
||||
vertex -9.820412e+00 1.690205e+00 4.500000e+00
|
||||
vertex -9.820412e+00 1.690205e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -3.978300e-01 9.174592e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -8.504846e+00 2.218519e+00 6.500000e+00
|
||||
vertex -8.504846e+00 2.218519e+00 4.500000e+00
|
||||
vertex -9.155422e+00 1.936416e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -3.978300e-01 9.174592e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -8.504846e+00 2.218519e+00 6.500000e+00
|
||||
vertex -9.155422e+00 1.936416e+00 4.500000e+00
|
||||
vertex -9.155422e+00 1.936416e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -4.472638e-01 8.944021e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -7.870620e+00 2.535677e+00 6.500000e+00
|
||||
vertex -7.870620e+00 2.535677e+00 4.500000e+00
|
||||
vertex -8.504846e+00 2.218519e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -4.472638e-01 8.944021e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -7.870620e+00 2.535677e+00 6.500000e+00
|
||||
vertex -8.504846e+00 2.218519e+00 4.500000e+00
|
||||
vertex -8.504846e+00 2.218519e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -4.953669e-01 8.686838e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -7.254631e+00 2.886945e+00 6.500000e+00
|
||||
vertex -7.254631e+00 2.886945e+00 4.500000e+00
|
||||
vertex -7.870620e+00 2.535677e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -5.419961e-01 8.403810e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -7.254631e+00 2.886945e+00 6.500000e+00
|
||||
vertex -6.658712e+00 3.271277e+00 4.500000e+00
|
||||
vertex -7.254631e+00 2.886945e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -4.953669e-01 8.686838e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -7.254631e+00 2.886945e+00 6.500000e+00
|
||||
vertex -7.870620e+00 2.535677e+00 4.500000e+00
|
||||
vertex -7.870620e+00 2.535677e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -5.419961e-01 8.403810e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -6.658712e+00 3.271277e+00 6.500000e+00
|
||||
vertex -6.658712e+00 3.271277e+00 4.500000e+00
|
||||
vertex -7.254631e+00 2.886945e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -5.870127e-01 8.095777e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -6.084635e+00 3.687532e+00 6.500000e+00
|
||||
vertex -6.084635e+00 3.687532e+00 4.500000e+00
|
||||
vertex -6.658712e+00 3.271277e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -5.870127e-01 8.095777e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -6.084635e+00 3.687532e+00 6.500000e+00
|
||||
vertex -6.658712e+00 3.271277e+00 4.500000e+00
|
||||
vertex -6.658712e+00 3.271277e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -6.302827e-01 7.763657e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -5.534110e+00 4.134469e+00 6.500000e+00
|
||||
vertex -5.534110e+00 4.134469e+00 4.500000e+00
|
||||
vertex -6.084635e+00 3.687532e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -6.302827e-01 7.763657e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -5.534110e+00 4.134469e+00 6.500000e+00
|
||||
vertex -6.084635e+00 3.687532e+00 4.500000e+00
|
||||
vertex -6.084635e+00 3.687532e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -6.716774e-01 7.408437e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -5.008773e+00 4.610759e+00 6.500000e+00
|
||||
vertex -5.534110e+00 4.134469e+00 4.500000e+00
|
||||
vertex -5.534110e+00 4.134469e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -6.716774e-01 7.408437e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -5.008773e+00 4.610759e+00 6.500000e+00
|
||||
vertex -5.008773e+00 4.610759e+00 4.500000e+00
|
||||
vertex -5.534110e+00 4.134469e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -7.110737e-01 7.031175e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -4.510188e+00 5.114986e+00 6.500000e+00
|
||||
vertex -5.008773e+00 4.610759e+00 4.500000e+00
|
||||
vertex -5.008773e+00 4.610759e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -7.110737e-01 7.031175e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -4.510188e+00 5.114986e+00 6.500000e+00
|
||||
vertex -4.510188e+00 5.114986e+00 4.500000e+00
|
||||
vertex -5.008773e+00 4.610759e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -7.483543e-01 6.632992e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -4.039839e+00 5.645649e+00 6.500000e+00
|
||||
vertex -4.510188e+00 5.114986e+00 4.500000e+00
|
||||
vertex -4.510188e+00 5.114986e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -7.483543e-01 6.632992e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -4.039839e+00 5.645649e+00 6.500000e+00
|
||||
vertex -4.039839e+00 5.645649e+00 4.500000e+00
|
||||
vertex -4.510188e+00 5.114986e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -7.834082e-01 6.215075e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -4.039839e+00 5.645649e+00 6.500000e+00
|
||||
vertex -3.599124e+00 6.201168e+00 4.500000e+00
|
||||
vertex -4.039839e+00 5.645649e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -7.834082e-01 6.215075e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -3.599124e+00 6.201168e+00 6.500000e+00
|
||||
vertex -3.599124e+00 6.201168e+00 4.500000e+00
|
||||
vertex -4.039839e+00 5.645649e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -8.161313e-01 5.778665e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -3.189355e+00 6.779892e+00 6.500000e+00
|
||||
vertex -3.599124e+00 6.201168e+00 4.500000e+00
|
||||
vertex -3.599124e+00 6.201168e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -8.161313e-01 5.778665e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -3.189355e+00 6.779892e+00 6.500000e+00
|
||||
vertex -3.189355e+00 6.779892e+00 4.500000e+00
|
||||
vertex -3.599124e+00 6.201168e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -8.464261e-01 5.325062e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -2.811752e+00 7.380098e+00 6.500000e+00
|
||||
vertex -3.189355e+00 6.779892e+00 4.500000e+00
|
||||
vertex -3.189355e+00 6.779892e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -8.464261e-01 5.325062e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -2.811752e+00 7.380098e+00 6.500000e+00
|
||||
vertex -2.811752e+00 7.380098e+00 4.500000e+00
|
||||
vertex -3.189355e+00 6.779892e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -8.742025e-01 4.855615e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -2.811752e+00 7.380098e+00 6.500000e+00
|
||||
vertex -2.467437e+00 8.000000e+00 4.500000e+00
|
||||
vertex -2.811752e+00 7.380098e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -8.742025e-01 4.855615e-01 0.000000e+00
|
||||
outer loop
|
||||
vertex -2.467437e+00 8.000000e+00 6.500000e+00
|
||||
vertex -2.467437e+00 8.000000e+00 4.500000e+00
|
||||
vertex -2.811752e+00 7.380098e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 0.000000e+00 6.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 0.000000e+00 4.500000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 4.500000e+00
|
||||
vertex -1.400000e+01 0.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 1.776357e-13 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 1.000000e+00 4.500000e+00
|
||||
vertex -1.400000e+01 0.000000e+00 4.500000e+00
|
||||
vertex -1.400000e+01 0.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 1.776357e-13 0.000000e+00
|
||||
outer loop
|
||||
vertex -1.400000e+01 1.000000e+00 4.500000e+00
|
||||
vertex -1.400000e+01 0.000000e+00 6.500000e+00
|
||||
vertex -1.400000e+01 1.000000e+00 6.500000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.000000e+00 -3.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 -3.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 -3.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.000000e+00 -3.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 -3.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 -3.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.000000e+00 -3.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 -3.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 1.000000e+00 -0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.000000e+00 -3.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.500000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 8.500000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 8.500000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 8.000000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 8.000000e+00 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.500000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 8.500000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 8.500000e+00 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 1.000000e+00 -0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.500000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 8.500000e+00 5.010000e-01
|
||||
vertex 5.000000e+00 8.500000e+00 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 7.071068e-01 7.071068e-01
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.001000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 8.500000e+00 5.010000e-01
|
||||
vertex 0.000000e+00 8.001000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 7.071068e-01 7.071068e-01
|
||||
outer loop
|
||||
vertex 5.000000e+00 8.001000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 8.500000e+00 5.010000e-01
|
||||
vertex 0.000000e+00 8.500000e+00 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 5.000000e+00 -1.000000e-03 1.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
vertex 0.000000e+00 -1.000000e-03 1.000000e+00
|
||||
vertex 5.000000e+00 -1.000000e-03 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -7.071068e-01 7.071068e-01
|
||||
outer loop
|
||||
vertex 0.000000e+00 -1.000000e-03 1.000000e+00
|
||||
vertex 5.000000e+00 -5.000000e-01 5.010000e-01
|
||||
vertex 5.000000e+00 -1.000000e-03 1.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -7.071068e-01 7.071068e-01
|
||||
outer loop
|
||||
vertex 0.000000e+00 -1.000000e-03 1.000000e+00
|
||||
vertex 0.000000e+00 -5.000000e-01 5.010000e-01
|
||||
vertex 5.000000e+00 -5.000000e-01 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 -5.000000e-01 0.000000e+00
|
||||
vertex 5.000000e+00 -5.000000e-01 0.000000e+00
|
||||
vertex 5.000000e+00 -5.000000e-01 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 -5.000000e-01 0.000000e+00
|
||||
vertex 5.000000e+00 -5.000000e-01 5.010000e-01
|
||||
vertex 0.000000e+00 -5.000000e-01 5.010000e-01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 -5.000000e-01 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 5.000000e+00 -5.000000e-01 0.000000e+00
|
||||
vertex 0.000000e+00 -5.000000e-01 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 0.000000e+00 -3.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 -3.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 0.000000e+00 0.000000e+00 -3.000000e+00
|
||||
vertex 5.000000e+00 0.000000e+00 0.000000e+00
|
||||
vertex 0.000000e+00 0.000000e+00 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
endsolid
|
||||