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 円でこれだけのことができるとは。