3DプリンタをPhoton Mono SEに買い替えました

3DプリンタにPhoton-Sを使っていたのですが、Photon Mono SEに買い替えました。

印刷速度が上がっているという話で気になっており、価格が6万円とのことで更新を後回しにしていたのですが、印刷したいものが出来たのと、セールで値下げされてタイミングが良かったため購入することに。






カタログスペック4倍、ただし実際の運用では倍速程度ではありますが、 いまどきはPCで3万円出せば実性能が倍になるということはありえないので、良い買い物だと思います。



比較用のPhoton-S の写真





Photon-Sでは初期には窓に遮光フィルムが貼られていなかったらしく、ユーザが貼るテクニックが紹介されていたのを読んだような気がします。

私が買った Photon-Sには最初からフィルムが張られていましたし、今回のPhoton Mono SEにも張られていました。

 



SEでないPhoton Monoならば最初から安いのですが、前回Photon-Sで開閉式のカバーが都合がよかったため、SEをねらっていました。


内部はこんな感じ。



 











付属している印刷データ用のUSBメモリです。

 

Photon Mono SEの写真

まず箱を開くと、付属品と取り扱い説明書がお出迎えです。

Photon Mono SEの付属品もPhoton-Sの頃とあまり変わらず。

 

形状が似ているため、収納方法も同じです。

本体を引き抜いたところ。足のための穴がクッションにあけられています。

本体の裏側

この謎の端子ネジが、WiFi用のアンテナ取り付け場所になっています。


操作パネル。

配送された段階では、まだ取っ手がついていないため、最初に開けるのに難儀します。

用途が違いますが、付属のスクレイパーでむりやりこじあけました。

クッションが中に詰まっているのも懐かしい感じです。




そしてクッションに埋まっている印刷台座。


レジンバット。

今回はレジンを濾すためのフィルタまでついてきました。たぶんPhoton-Sにはついてきていなかったはず。

 

奇しくも、Photon-Sを初導入した際に自分で追加購入したのとほぼ同じタイプのフィルタでした。

(そちらがまだ残っているので、まだそちらを使いつづけますが。)

紫外線モノクロLCDパネル。

保護フィルムが 張ってあるので剥がします。

レジンバットを設置。


レジンバットを設置してみたところ。

ちょっと気になる凹凸はある気がしたものの、フィルムも穴あきなどはなく、この後印刷も問題なく上手くいきました。


WiFiアンテナ。

設定すると、印刷の進捗をスマホから確認するなどができるのですが、一応設置したものの、スマホ接続は使っていません。


本体を組み立てて設置、電源を入れたところ。

タッチパネルの画面も、操作性含めPhoton-Sと同じ。




テスト印刷の結果。問題ありませんでした。
 

 

見た目も、内部もおおむねPhoton-Sと同じ。

印刷速度だけ早くなるので、アップグレードとしてとても良いです。

 

Photon Mono SE(Photon Monoシリーズ)の印刷速度

 Photon Monoシリーズの印刷速度ですが、Anycubic公式が動画で比較を上げています。

https://www.youtube.com/watch?v=Pt2VkMhQwzQ



左からPhoton Mono SE、Photon mono X、Photon monoの順です。


 

透明ティーポットの思いがけない罠

もうそろそろ寒い季節になるし、 ということで温かい飲み物を家で飲むためにティーポットを購入しました。


 

購入したのはプラスチック製なので、落としたりしてもかんたんには割れない。



茶葉用のスプーンもついてきました。葉っぱ型で可愛いけれど使い方がよくわからない。




くせのない中国茶などを買って飲んでいます。

 

ところで透明なティーポットを買ったのは、中身が見えて茶葉の開き具合が一発で確認できるので飲み頃がわかる、と思ったのですが。


上から見ると、湯気の結露でくもって、茶葉の様子が見えないのでした。

机の上に置いてある急須を、わざわざ横から見ないですし。

(わざわざ持ち上げないといけない。)


とはいえデメリットというほどでもなく、横からはいくらか見えますし、ふつうに使えて軽くて丈夫で洗いやすくて便利です。

というわけで目論見は外れましたが、洗いやすさや中の広さ(で茶葉が広がりやすい)など、買ってよかったです。



掃除ロボット Kyvol E20 を購入(WiFi対応)

Kyvol E20を購入しました。

掃除ロボット初導入したILIFE V3 Liteを2年ほど使っていたのですが、もうそろそろ買い替え時期かなというのと、せっかくなのでWiFi対応機種を使ってみたかったので。

 

 

 

 箱を開けるとこんな感じで入っています。





箱の中にダンボール製のカバー。

 

こんな状態で入っています。

裏側はこういう状態で、オレンジの開口部は開いてローラーを取り出すことができます。



この回転ブラシが、無理な力がかかると外れるので良いのですが、ちょっと力がかかるとすぐ外れるので、2回に1回くらいは部屋のどこかにこれがおちている状況になります。


電源ボタンが下面にあります。

これまで使っていて、障害物でおされて電源OFF、という自体にはいちどもなっていません。

わざわざ指差すシールで示してくれる丁寧さ。


吸入口。

白いのは金属の針金です。滑落防止かなにか。


充電ベース。これに戻ってくる確率は、半分前後といったところ。




磁性テープ的なものが入っていて、どうやら進入禁止ラインを引くのに使うらしいのですが、私は使っていません。



たぶん清掃具。




WiFi接続してアプリから制御できます。

画像は接続の様子。いちどOS設定からWiFiを2.4Ghzでつなぎ直す必要があります。





 安くWiFi対応機種で外出先から掃除開始が可能なロボット掃除機として、かなり気に入っています。

リモコンからタイマ設定もできますが、モバイルアプリから設定すると、週の曜日ごとに異なる起動時間を設定することもできました。土日と平日で掃除の時間を変更できます。

 

 


Blenderの Apply Modifier ボタン/Apply All Modifierメニュー がなくなった( blender 2.93.5, blender 3.0.1 )

 手元の2.93.5で、Blenderから"Apply Modifier"ボタンが無くなっていました。
同じく手元にある中では、2.90.1では存在しているので、最近(?)なくなったようです。



https://blender.stackexchange.com/questions/17733/apply-modifiers-button-not-appearing
https://www.reddit.com/r/blenderhelp/comments/iob46k/blender_29_modifiers_have_no_apply_button/

メニューから複数Objectの全ModifierをまとめてApplyできる "Apply All Modifier" もなくなっているようです。
(メニューの Object > Apply > Apply All Modifier )



3Dプリントデータを作るために、Apply All Modifier を便利遣いしていたので無くなると困ります。
ModifierにはSTLファイルに書き出した形状データに反映されない効果もあるため、3Dプリンタ用に書き出すにはModifierをApplyでObject形状に変換しておく必要があるからです。
(より正確には、Booleanで穴をあけている場合に必要な処置。
STLエクスポートを使うと、Boolean Modifierで穴あけするための非表示の穴Objectも3Dプリント出力されてしまう。
そのため事前に削除しておく必要があるが、穴Objectがなくなると穴もなくなるので、事前にApply Modifierが必要。)


## Apply Modifierする他の方法:
ModifierのApply自体はできるのですが、Object、Modifierそれぞれ1つずつ適用する方法ばかりで、一括でまとめてApplyする方法は見つかりませんでした。

**Modifierの右上にあるドロップダウンから**
これまでもあったもの。
画面右のModifier一覧の対象Modifierを1つずつApplyする。

**Modifierの上にマウスカーソルを置いてCtrl+A**
文字通り画面右のModifier一覧の対象Modifierから1つ選んでApplyする。


URL先に書いてある「ALT+C」ショートカットは機能しなかったのですが、右クリックから同じ機能と思われるメニューを開いて操作することができました。

https://blender.stackexchange.com/questions/3488/is-it-possible-to-apply-modifiers-to-multiple-objects-at-once




## 備考

(single usedなど適用してから)Aで全選択 -> Object > Apply > Apply All Modifier としていたのですが、
もしかしてバグ動作だったのだろうか。

 

## 追記

Blender 3.0あたりからは、さらに変更されて以下のように。

(single usedなど適用してから)Aで全選択 -> Object>Convert>Mesh
(Blender 3.0.1 にて確認)


BlenderでBezierパスのMesh法線が反転できないとき

Bebelと組み合わせることで、Bezierのパスから厚みのあるObjectを作成できます。

しかし Mesh法線が反対になっていることがあります。

 



法線は ViewPortOverray / Geometory / Face Orientation で確認できます。

通常Objectであれば、EditMode でMesh>Normals>Filpで反転して修正することができます。

ですが BezierのパスにはMeshがないためかMeshのメニューが表示されず反転操作ができません。

 

解決策ですが、厚みを作っているBebelに指定したBezierObjectの回転方向を逆にします。

(Bezierを構成する点に番号が振ってあるとして、それを逆にするイメージ。)

スクリーンショットを拡大すると、上部にベジエがあるのがわかると思います。

最初の

最初の画像と次の画像で選択しているのは同じ点で、位置を画像のように移動することで、法線の向きが解消されています。

(ただし中心位置から形状がずれたので、下のパスObjectの形・位置も少し変わっている。)

漢数字文字列のもう一歩実用的な数値変換 - その2

 前のブログ記事では、数字をあらわす漢数字と大字の文字列について、あつかうための前処理とパタン、また変換のさいに考慮しなければならない細則について書きました。
ここから実際に文字列から数値へ変換をおこなっていきます。



実装はJavaScriptで行いました。
これはWebExtensionsによるブラウザ拡張がJavaScriptだからです。

daisy WarekiConv 和暦を西暦へ自動変換するFireFoxアドオン

daisy WarekiConv 和暦を西暦へ自動変換するChromeアドオン


JavaScriptにない機能を実装していくことになります。
つまり、parseInt()の漢数字版のようなものを、自分で実装することになります。

つまり、こういうことになります。
- 文字列中にある漢数字による桁と数を、それぞれ数値と桁のべき指数に変換する。
- それを順に足し合わせるなどして、文字列全体が表す数を得る。
- なお、漢数字文字列の桁のありなしを判定して処理をわける。


## 桁ごとの桁文字、数字文字の変換
'百'、'千'といった桁の文字、'壱'、'九'といった数字の文字を、それぞれ桁や数に変換します。

漢数字による数字文字の変換は、とうぜんJavaScriptの言語機能にはないので実装しています。

なお今回のプロジェクトでは、
- 数字文字の変換は cKanSuuzi2Int()
- 桁文字の変換は cKanSuuziKeta2Int()
で行っています。


// 漢数字(桁漢字なし)
```
function cKanSuuzi2Int(cKanSuuzi)
{
    const res0 = kanSuuziNumChars.indexOf(cKanSuuzi);
    if(-1 !== res0){
        return res0;
    }
    const res1 = daiziNumChars.indexOf(cKanSuuzi);
    if(-1 !== res1){
        return res1;
    }
    const res2 = daiziNumOtherCharPairs[cKanSuuzi];
    if(undefined !== res2){
        return res2;
    }
    const res3 = kanSuuziOtherCharPairs[cKanSuuzi];
    if(undefined !== res3){
        return res3;
    }
    return -1;
}

```

番号に並べてindexOfで返ってきた値をそのまま使う、というのがC言語ネイティブの書いたC的コードという感じがします。
(意味としては違うが数字は合っている。)

桁の変換も同じです。
桁の場合は、10のべき乗ということで、べき指数を返させています。
たとえば’千’の場合は3を返させて、使う側は10の3乗をして1000を得る、といったやり方をしています。
(JavaScriptでは`10 ** 3`という記法でべき乗計算できる。)


## 漢数字文字列を実際に数値へ変換する
『桁の有無』はこれにより数値への変換ロジックを切り替える必要があり、重要です。
判定方法としては、これもまた単純に、桁の文字を変数にあつめておいて正規表現で検出です。
ひとつでも桁を表す文字が含まれていれば桁有り、そうでなければ桁なしです。

『漢数字』『大字』は同じ数字表記のなかで混交しない雰囲気なのですが、分けておかなくても困らないのでチェックはせず、そのまま混在で判定しています。


### 桁なし漢数字文字列の変換
単純に、頭から1文字ずつ数値変換しながら10をかけて桁上がりさせていくだけです。
途中にゼロが入っていたりしても、専用の分岐処理がいりません。

コードも必要ないけれど全文引用してしまうくらい短いです。
```
function convKanSuuziStr2Int(sKanSuuzi)
{
    let val = 0;
    for(let i = 0; i < sKanSuuzi.length; i++){
        const num = cKanSuuzi2Int(sKanSuuzi[i]);
        if(-1 === num){
            // 変換を打ち切って結果を返す
            return val;
        }
        val *= 10;
        val += num
    }
    return val;
}

```
変換の打ち切りのところは、アドオンの実装上で末尾に『年』の文字がついた文字列が渡されてくることがあるのをナアナアで処理しているものです。
今回の用途では不正な文字列が入ってくることはないのですが、汎用をにらむと漢数字以外が混ざっていたら不正と判定するように変えるべき箇所ではあります。

後ろから処理していく方法でもよく、桁が最初から自明という利点もあるのですが、今回は頭から処理で実装しました。
こういうところの判断になんというべきか、今回のコードはJavaScriptで書いていますが全体的にCライクな空気があります。


### 桁あり漢数字文字列の変換
桁ありの場合、文字列の中に『数桁数...』と並んでいることになります。
前述のとおり数が1のときに『桁数桁』から数が省略されて『桁桁』になる場合もあります。

今回の実装は以下のようにしました。
頭から処理して『数』であれば数値に変換して変数にしまう。
桁であればべき指数Nに変換してから、10のN乗で値に展開します。
(’千’の場合は桁であるNは3、10の3乗で1000が得られる)
変数から数をとりだしてかけ合わせれば、その桁の値ができあがるので、結果をしまう変数に足しこみます。
これを漢数字文字列の最後まで行い、すべての桁を足し合わせることで数値変換を実現しています。

ここで主要なトリックは、数の変数を用意しておきあらかじめ1を入れておくことです。
桁桁と続いたときに、省略された1がそのまま存在するので、専用の分岐処理がいりません。
数の変数は、取り出して使ったら1に戻しておきます。


### 細則の、'20'を表す文字などについて
"参廿"で3*20=60、"廿十"で20*10=200とかやられる心配はしなくてよさそうなので、そのまま加算しています。


----
## おわり

というわけで、以上のことを考慮し、複数の記法に対応しているという意味で、いくらか現実世界に対応できるであろう変換機能を書いた次第です。

>『しかし輝く宝石の完璧さは、私たちがMozillaを書いたときの目的ではなかった』
「ストラテジーレターIV: ブロートウェアと80/20の神話(ジョエル・スポルスキ / 翻訳: 青木靖)」より

というやつかなと思いながらコードを書いていました。まあこの程度の内容はまったく複雑とは言わないわけではありますが。

今回、とりあえず不要として不正な文字列の検出を適当にしています。
年号を書き間違えているときにできることは大してないので、とりあえずいいだろうとしたのですが。
そのうち機会があればきちんとするかもしれません。

ComfyUIでXYZ-PlotするワークフローのサンプルとTips(ComfyUI-XYZ-Stitch)

 ComfyUIでAutomatic1111的なXY-Plotをしたいのだが、ComfyUIデフォルト機能には用意されていない。     カスタムノードが必要となるのだが、Webには古いとか何故か動かないとかなXY-Plotパッケージの使ってみた系記事か、githubに上げられた...