Ubuntu > マウスクリックの自動化 > Tinkercadの操作が面倒なので > 下に移動しながらスライス | link:Iron Man Bust by tails_, published Nov 12, 2014

ブラウザ動作するAutoDeskのTinkercad。

```txt:動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04 LTS desktop amd64
TensorFlow v1.2.1
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)
ADDA v.1.3b6
gnustep-gui-runtime v0.24.0-3.1
```

### 関連

- [Tinkercad + レーザーカッター > MDF積層状の構造物を作る案 | layered Delta Flyer v0.1-v0.3](https://qiita.com/7of9/items/893bc07a82bed2d2341e)

### スライシングの手順と問題

Tinkercadで積層モデルのレーザーカット用.svgファイルを作る手順は以下の通り。

1. Exportクリック
2. .svgクリック
3. Ctrl + A
4. Ctrl + 下カーソル
5. 1から繰り返す (積層数)
    - 40秒おきくらい (Tinkercadの処理時間を考慮して)

44回繰り返してDelta Flyerの.svgファイルを作ったが、面倒なのでもう一回実行したいとは思わない。

自動化しよう。


### マウスクリックの自動化

xdotoolを使う。

https://askubuntu.com/questions/179581/how-can-i-make-my-mouse-auto-click-every-5-seconds

前準備としてExportボタンと.svgの位置を調べる。
(**ボタンの表示位置はブラウザ(Chromeなど)のファイルダウンロード済があるかどうかで変化する。
１つのファイルをダウンロードした状態で座標位置を取得すること。また、実行時もダウンロード済がある状態で行うこと。**)
マウスを該当ボタンの位置に移動して、Alt+Tabでターミナルに移動して、以下を実行する。

```
$ xdotool getmouselocation
x:2378 y:287 screen:0 window:54525962
```

上記の情報(Exportボタンと.svg選択)を元にスクリプトを書く。

```bash:auto_save_svg_tinkercad_180324_exec
#!/usr/bin/env bash

# location of the mouse click dpends on the environment
# check with 
# xdotool getmouselocation

for loop in $(seq 1 5)
do
	xdotool mousemove 2378 287 click 1 &  # Export
	sleep 1
	xdotool mousemove 1762 862 click 1 &  # .svg
	sleep 40
done
```

### 使用

Tinkercadの画面を開いてターミナルから下記を実行する。

```
$ bash auto_save_svg_tinkercad_180324_exec
```

処理中は他の作業はしない方がいいかもしれない。

### 下に移動しながらスライス

- [x] Ctrl + Aなどキークリックの送信。

下記の実装でオブジェクトを-3.0下に移動しながらスライスできる。

```bash:auto_save_svg_tinkercad_180324_exec
#!/usr/bin/env bash

# location of the mouse click dpends on the environment
# check with 
# xdotool getmouselocation

for loop in $(seq 1 5)
do
	xdotool mousemove 2378 287 click 1 &  # Export
	sleep 1
	xdotool mousemove 1762 862 click 1 &  # .svg
	sleep 40
	xdotool key ctrl+a
	xdotool key ctrl+Down
	xdotool key ctrl+Down
	xdotool key ctrl+Down
	sleep 1
done
```

![qiita.png](https://qiita-image-store.s3.amazonaws.com/0/32870/df6c2fb4-c71c-f93c-516e-bf404c383ee9.png)

bashスクリプトが自動的にDelta Flyerをスライスしていている間に、こちらはサンマを三枚におろす (v0.5)。


### Iron Man Bust by tails_, published Nov 12, 2014

https://www.thingiverse.com/thing:540937
からSTLを取得し、上記の処理でスライスした。

そのスライスをTinkercadでインポートし、仮組み実施。
(仮組み作業時間: 28分)

https://www.tinkercad.com/things/cMpamE8YClk
![qiita.png](https://qiita-image-store.s3.amazonaws.com/0/32870/ed82a575-2cce-0419-1dfe-80bb4bb2b19e.png)


これじゃないロボ発進。

分解能を上げればSTLと似てくるだろうが、*万円コースのレーザーカットになってしまうだろう。

以下はスライスの進む方向を横にした場合。顔の特徴が出てきた。

![qiita.png](https://qiita-image-store.s3.amazonaws.com/0/32870/7b73ffe2-8926-9967-de4c-36dffc0fc969.png)

SVGファイルを作ってみた。
A3 サイズとなった。
https://www.dropbox.com/s/mqgtx9gtax1i655/A3_IronMan_180325.svg?dl=0
部品のいくつかは小さすぎて、カットした後に台座下に落ちるサバイバル形式。

![qiita.png](https://qiita-image-store.s3.amazonaws.com/0/32870/5f0b5080-10c6-e46d-42ec-219d5d9c8fe7.png)