EggX を復活させるか…

NIIMBOT B18 を持っているんですが、間違えて互換性のないラベルを買ってしまいました。

どうしようか悩んでいたところ、Amazon でセールをしていたので、NIIMBOT D110 を買いました。
3,000 円を切る値段で、往年の KP-C10 を思い出すような、そんなラベルライターです。
ただまあ、そこには 30 年近い時間の流れがあるわけで、ラベルの質は劇的に向上し、テープの検出や、Blutooth でのワイヤレス接続, USB-C 充電と、基本性能は大きく進化しています。

が、ソフトがちょっと気に入らないんですよね。
iPhone でさっと印刷できるのはお手軽なんですが、細かなことが一切できません。

それで、EggX 的なものをサクッと作ろうかと思っているんですが、ふと気になって調べてみたら、あれから 30 年経っても、いまだに CoreText を使わないと縦書きができないようなんです。(本当?)

当時、ATSUI から結局移行しませんでしたが、WebView と CSS で縦書き描画する方法でどこまでできるかやってみようかなと思います。
さすがにもう EggX のことを覚えている人はいないんだろうけど、自分が満足に使える程度のものは作ってみようと思います。
その前にさっさと AI 選別機を作れよ、まずは RPi5 ケースを印刷しろよといわれそうですが、その部品を入れるハマグリケースのレベルシールが美しくないのが耐えられないのです。

まあ、とにかく Xcode を入れるところからです。
ボケ老人には相当のリハビリが必要になりそうです。

毎度クソすぎるプリンタ周りの問題を力技で解決した備忘録

macOS を 26 にしたんですが、気がついたら、プリンターの設定がごっそり消えていて、印刷ができません。
前から調子が悪いんですが、Bonjour もまともに機能しなんです。
ついでに言うと、白黒だの(カラーはカウンター料金が高い)、紙折ユニットの設定だの、これをプリセットにして保存しても、呼び出したら消えてしまうと言う残念すぎる状態なので、消えたのでこの機会に、いい加減頭にきたので、対策をすることにしました。

対策の方針

  • Bonjour の駆除 IP アドレスを固定して指定する
  • CUPS の管理画面でプリンタのデフォルトを書き換えてしまう

まず、不安定な Bonjour を駆除します。
これ、RPi5 なんかでも同じことが起こるんで、プリンタに限った問題ではないようです。
WiFi ルーターが DHCP で払い出しているんですが、MAC アドレスで払い出す IP を固定しました。

で、IP アドレスを指定して、プリンタを追加します。
このあと、トレイの段数や、フィニッシャー、紙折ユニットの有無などを設定します。

次に CUPS Web インターフェースを有効にします。

cupsctl WebInterface=yes

ブラウザで http://localhost:631/printers/ にアクセスして、_192_168_68_222 を選択、「Administration」 のドロップダウンメニュー(左側のボタン)から 「Set Default Options」 を選択して、内容を編集して、最後に「Set Default Options」ボタンを押下して保存して完了です。

SVGに含まれるベジェ曲線の撲滅

旅から戻ってきたら、A1 mini が届いていたので早速格闘中です。
とりあえず、簡単で、必要なものということで、まずはハンコを作ることにしました。

が、印面のデータを SVG で書き出して import したんですが、うまく読めません。
もしかして、と思って調べたら、案の定、ベジェがダメでした。
いや、たったそれだけのことですが、猛烈に難儀をしました。
Illustrator でもっと簡単に直線だけにできたと思ったんですが、忘れる方が早いし。
いい加減 Adobe 税を払うのも嫌になってきたのもあります。
ということで、いろいろ試したんですが、元のデータが悪いのか、どうしても成功せず、よく考えると、

どうせハンコなんだから、見えたらいいんじゃない?

ということで、画像に変換、それをトレースという力技で解決したので、メモしておきます。

#!/bin/bash

使い方: ./flat_svg.sh 入力ファイル.svg

INPUT=$1
OUTPUT="${INPUT%.*}-final.svg"
BMP="temp_convert.bmp"
DPI=1200

echo "Converting $INPUT to $OUTPUT (Linearized)..."

1. 高解像度BMPに変換

magick -density $DPI "$INPUT" -colorspace gray -flatten "$BMP"

2. potraceで直線化してSVG出力

--unit 2.83465 でmm単位に調整

potrace -s -a 0 --unit 2.83465 --resolution $DPI "$BMP" -o "$OUTPUT"

3. 中間ファイルの削除

rm "$BMP"

echo "Done! Saved as $OUTPUT"

とまあ、これだけ。

あとはできた svg を OpenSCAD で import として、.STL 変換してやれば OK。

translate([0, 0, rect_z - epsilon])
mirror([1, 0, 0])
linear_extrude(height = text_h + epsilon)
scale([svg_scale, svg_scale, 1])
offset(r = 0.01)
import(svg_file, center = true);

反転も .scad でやるので、普通に画像は作れば OK ですね。

データを作る以前に、設定がうまくいかず、糸を引いて失敗していたりしたんですが、なんとか PETG で安定してプリントできるようになりましたし、OpenSCAD の使い方もある程度わかってきました。
これで色々制作に選択肢が増えました。

しかしすごいな。
たった 29,800 円でこれだけのことができるとは。

SHARP BP-60C26 のドライバの問題(解決)

SHARP BP-60C26 なんですが、PPD のドライバの問題か、プリンタの設定を保存しても、次回指定した際に全く反映されない状態で、とても不便です。
たまにそういう状態になるんですが、SHARP の返答は「OS の問題です」で終わってしまうので、今回、別の解決方法を試してうまくったようなので、備忘録がわりに顛末を書いておきます。

すごく貧乏くさいのですが、このプリンターはいわゆる「カウンター」で契約しているので、印刷した枚数に応じて料金が発生しますが、白黒とカラーとでかなりの金額差があります。
なので、よほどのことがない限り、白黒で出力したいのですが、デフォルトでは Automatic になっていて、ちょっとでもカラーのデータがあれば、自動的にカラーに切り替わってしまいます。
そのため、白黒を標準に変更します。

まず、Web でプリンタの設定が変更できるようにします。

cupsctl WebInterface=yes

次にプリンタの設定画面をブラウザで開きます。
プリセットが信用できない状態なので、「何も選択しなくても最初からその設定になっている」 状態を CUPS(プリントサーバー)側で作ります。

  • ブラウザで http://localhost:631/printers/ にアクセス。
  • BP-60C26 を選択 > Administration > Set Default Options。
  • ここで「Image Quality」の中の「Color Mode:」を「Black and White」などに固定し、最下部のボタンで保存。

という流れです。
自分の場合、パスワードの入力がありましたが、これは今のユーザ(わからない場合は whoami で出てきます)の id, password です。

生きている化石 — MacVim

AtomS3 用のコードをゴリゴリ書いているんですが、自分、実はエディタは vi しか使えないのです。
なもんでターミナルの小さな窓で syntax on とかしてたんですが、かったるい。

調べたら、なんと MacVim はまだ生きていました!
というわけで、サクッとインストール。
なんといういんでしょうか、この安心感。
インターネッツ老人会の皆皆様、そして、vi よ、私は帰ってきた!

それはそうと、なんでこんな羽目になったかというとサーボのコントロールがうまくいかなくて、カクカクしてしまうんです。
AtomS3 は初めてなんだけど、どうもパルス生成のタイミングがずれているのか、ノイズなのか、ハッキリしないのです。

なもんで、VxWorks の TaskSpawn() に相当する機能はないのかしらと思ったら、ありました。
が、これがまた、適当にやっているもんだし、そもそも VxWorks で開発していたのなんで、25 年は前なので、何もかもほとんど忘れてしまっています。

ノイズの影響か USB の接続もよく切れるし、これは

;upload_port = /dev/cu.usbmodem1101
;monitor_port = /dev/cu.usbmodem1101
upload_port = /dev/cu.usbmodem*
monitor_port = /dev/cu.usbmodem*

という風に platformio.ini を書き換えればいいとわかったので、そうしたんですが、MacVim を入れたことだし、.zshrc も整理しました。

# --- エディタ設定 ---
export EDITOR='/Applications/MacVim.app/Contents/bin/mvim'
alias vi='$EDITOR'
alias vim='$EDITOR'
alias gvim='$EDITOR'

ターミナル内で閉じたい時(GUIを起動したくない時)用の Alias

alias viv='$EDITOR -v'

--- PlatformIO (AtomS3) 開発用 ---

alias pu='pio run -t upload' # 書き込み
alias pm='pio device monitor' # シリアルモニタ
alias pum='pu && pm' # 書き込み後、即モニタ起動
alias pc='pio run' # コンパイルのみ(チェック用)

--- 便利ツール ---

現在のポートをサッと確認する用

alias lsp='ls /dev/cu.usbmodem*'

さて、昨日でようやく新年の行事が一段落したので、今日から配達です。
ボチボチ頑張ります。

OpenSCAD のインストール

Bamboo Lab の A1 mini も買ったんです。
なぜか直販だと 29,800 円(ただし、届くのがひと月後)で、Amazon だと翌日届く代わりに 39,800 円。
当然、29,800 円をチョイスしたわけです。

それで、昨日判明したタッチパネルのネジが M2 っぽいという件と、それ以前に全然寸法も違うので、プレートをアクリル板から切り出してなんとかしようと思うわけです。

今までだと Adobe Illustrator で作図して、svg で保存して、Laser Pecker 2 で切るところなんですが、思い立って OpenSCAD をインストールすることにしました。
A1 mini が届いたら、ケースを出力しないといけないので、データが使いまわせるようにしたいのです。

というわけで、それまでの準備の一環として、OpenSCAD をインストールすることにしました。

まず、Homebrew で OpenSCAD をインストールしました。

brew install --cask openscad

起動しようとすると、macOSのセキュリティ機能(Gatekeeper)によって、未確認の開発元としてブロックされている状態になります。

  1. 一旦、そのアラートの「Done」を押して閉じる。
  2. Macの 「システム設定」(System Settings)を開く。
  3. 「プライバシーとセキュリティ」(Privacy & Security)を選択。
  4. 右側の画面を下へスクロールしていくと、「セキュリティ」 の項目に “OpenSCAD” がブロックされているので、その横にある 「このまま開く」(Open Anyway)ボタンをクリック。
  5. パスワード入力を求められたら入力し、再度確認ダイアログが出たら 「開く」 を押す。

これで起動できます。

適当な .scad ファイルを作って開いてみると、うまくいったようです。

これでテキストファイル(.scad)を書いて、それを 2D や 3D で造形することができることになったんだろうと思います。

ボチボチ、がんばります。