日別アーカイブ: 2024年3月17日

3Dプリンターでモデルの特定の場所が出なくなった

OpenSCADでモデル作成からstl出力。Repetier-HostV2.2.4というソフトでスライス&プリンタ操作をしている。使用しているプリンターはIUSEというアマゾンで安かった数年前のもの。

The object is not manifold.
This essentially means, that it is not watertight.
This normally causes problems during slicing, resulting in unwanted results.
We strongly advice to repair the model.

気付いたら上のエラーメッセージがRepetier-Hostにガッツリ出ている。しばらく出力していないモデルだけど昔は気づかなかった。

モデルがwatertight(防水?)でないのでうまくいかんかも知らんので修理しろと。watertightでないはモデルの部品が隙間なく並んでいても、重なる部分がないみたいな状態。1cmの立方体から1cmずらして立方体を置いたら隙間なく隣り合ってはいるけどかぶっている部分がないみたいな状態のはず。

なお、OpenSCADでは昔からnot manifoldという旨のメッセージが出ていたけど実際には出力されるから問題なしと放置していた。

いかにも修理ボタンがRepetier-Hostのエラーメッセージの横に出ているのでボタンを押してやると「オブジェクトは多様状態です」といかにも治った雰囲気のメッセージに変わった。

ところが実際に出力するとうまく出力されないと書こうとしたが、出力されたgcodeをRepetier-Hostのgcodeエディタから保存しオンラインシミュレーターで確認するといけそうなのが出力された。

とりあえず印刷中。ちゃんとOpenSCADでmanifoldにしてやってと書こうとしたが、gcode確認してうまく修理ボタンでなおったらそれでしのぐというのもありかもしれない。

結果が出たら追記する。->結果出た下に

manifoldにしてやらないでも動きそうなgcodeで通常通りに出力された。悪いgcodeと比較しようと思ったが何もしないでも動きそうなgcodeが現状出力されている。また、昔のうまくいかなかったときのgcodeは保存していないどころか観点になくチェックもしていない。

現時点では追加で調べられることもないので様子を見る。(調査いったん終了)

ArduinoIDE2系のキャッシュされたコンパイル済みファイルの消し方

ちょっと面倒。こちらをみると他の方法もあるみたいだけどガッツリ手動削除のほうで(以下の手法もリンク先が元)

消し方

ArduinoIDEのFile->Preference->Setting->Show verbose output duringのcompileにチェックを入れる

そのあとコンパイル実行。

outputに”Using previously compiled file ~”と”Using precompiled core ~”が出力される。その中にある目当てのクラスの場所が出ているはずなので検索。

対象のキャッシュを削除(面倒なら丸ごとフォルダでもいけるはず)

自分のけしたいやつはだけでなくて同じフォルダにいた他のやつも必要だったけどログ取り忘れた。

けしてっやて同じく他のも

Avatar.cppの~はすでに定義済みでうんぬんかんぬんというエラーメッセージだった。Avatar.cppとAvater.oも削除した。(コンパイルされたものがまとめて詰まっているobjs.aを見る作りな気がするのでそっちを削除してもよかったかも)

再度IDEからコンパイル実行(IDEの再起動等はいらないはず)

Show verbose output duringはかなり遅い気がするので好みで元の設定に。

一応発端

動きを調べようとライブラリフォルダのソースをフォルダ内で一旦コピーしてArduinoIDEからビルドした。ところAvatar – コピー.cppもコンパイルされインクルードガードなく(?)重複定義になった。

こんな配置で

PS C:\Users\kitam\Documents\Arduino\libraries\M5Stack_Avatar\src> ls

    Directory: C:\Users\kitam\Documents\Arduino\libraries\M5Stack_Avatar\src

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----

-a---          2024/03/07    14:40            261 Accessory.h
-a---          2024/03/07    14:40           8007 Avatar - コピー.cpp
-a---          2024/03/07    14:40           8007 Avatar.cpp

コンパイル(IDEのまるっとアップロード)実行

c:\Users\kitam\Documents\Arduino\libraries\M5Stack_Avatar\src/Avatar.cpp:233: multiple definition of `m5avatar::Avatar::getColorPalette() const'; C:\Users\kitam\AppData\Local\Temp\arduino\sketches\24ABF9CB78656DF99B51FAEF43A95CDD\libraries\M5Stack_Avatar\objs.a(Avatar - �R�s�[.cpp.o):c:\Users\kitam\Documents\Arduino\libraries\M5Stack_Avatar\src/Avatar - �R�s�[.cpp:233: first defined here
c:/users/kitam/appdata/local/arduino15/packages/m5stack/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:\Users\kitam\AppData\Local\Temp\arduino\sketches\24ABF9CB78656DF99B51FAEF43A95CDD\libraries\M5Stack_Avatar\objs.a(Avatar.cpp.o): in function `m5avatar::Avatar::setColorPalette(m5avatar::ColorPalette)':
c:\Users\kitam\Documents\Arduino\libraries\M5Stack_Avatar\src/Avatar.cpp:231: multiple definition of `m5avatar::Avatar::setColorPalette(m5avatar::ColorPalette)'; C:\Users\kitam\AppData\Local\Temp\arduino\sketches\24ABF9CB78656DF99B51FAEF43A95CDD\libraries\M5Stack_Avatar\objs.a(Avatar - �R�s�[.cpp.o):c:\Users\kitam\Documents\Arduino\libraries\M5Stack_Avatar\src/Avatar - �R�s�[.cpp:231: first defined here