金曜日, 3月 27, 2026

JavaScriptでAI遊び 91 
Illustratorで線幅と線形状を指定変更(改訂版2)


改訂版2も普通に[線]パレットで処理出来るので意味ないですが・・・
今回は[pt/mm、破線間隔]を指定できるようにしました。
また、前回までは[キャンセル]が出来なかった点を解決しました。

main();

function main() {

if (app.documents.length === 0) {
alert("ドキュメントがありません");
return;
}

var doc = app.activeDocument;
var sel = doc.selection;

if (!sel || sel.length === 0) {
alert("パスを選択してください");
return;
}

// ===============================
// 単位変換
// ===============================
function toPt(val, unit) {
if (unit === "mm") return val * 2.83464567;
return val;
}

// ===============================
// UI
// ===============================
var dlg = new Window("dialog", "ストローク詳細設定");
dlg.orientation = "column";
dlg.alignChildren = "left";

dlg.add("statictext", undefined, "単位");
var unitList = dlg.add("dropdownlist", undefined, ["pt", "mm"]);
unitList.selection = 0;

dlg.add("statictext", undefined, "線幅");
var weightInput = dlg.add("edittext", undefined, "2");
weightInput.characters = 6;

dlg.add("statictext", undefined, "線種");
var typeList = dlg.add("dropdownlist",
        undefined, ["実線", "破線", "二重線"]);
typeList.selection = 0;

dlg.add("statictext", undefined, "破線:線分長");
var dashInput = dlg.add("edittext", undefined, "4");
dashInput.characters = 6;

dlg.add("statictext", undefined, "破線:間隔");
var dashGapInput = dlg.add("edittext", undefined, "2");
dashGapInput.characters = 6;

dlg.add("statictext", undefined, "二重線の間隔");
var doubleGapInput = dlg.add("edittext", undefined, "2");
doubleGapInput.characters = 6;

dlg.add("statictext", undefined, "線端(Cap)");
var capList = dlg.add("dropdownlist",
        undefined, ["丸", "角", "四角"]);
capList.selection = 0;

dlg.add("statictext", undefined, "線角(Join)");
var joinList = dlg.add("dropdownlist",
        undefined, ["丸", "角", "ベベル"]);
joinList.selection = 0;

var btns = dlg.add("group");
btns.add("button", undefined, "OK", { name: "ok" });
btns.add("button", undefined, "キャンセル", { name: "cancel" });

if (dlg.show() !== 1) {
return; // ← ここで安全終了
}

// ===============================
// 値取得 & チェック
// ===============================
var unit = unitList.selection.text;

var strokeWeight = toPt(parseFloat(weightInput.text), unit);
var dashLength = toPt(parseFloat(dashInput.text), unit);
var dashGap = toPt(parseFloat(dashGapInput.text), unit);
var doubleGap = toPt(parseFloat(doubleGapInput.text), unit);

if (isNaN(strokeWeight) || strokeWeight <= 0) {
alert("線幅が不正です");
return;
}

var strokeType = typeList.selection.text;

var capStyle = StrokeCap.ROUNDENDCAP;
if (capList.selection.text === "角") capStyle =
        StrokeCap.BUTTENDCAP;
if (capList.selection.text === "四角") capStyle =
        StrokeCap.PROJECTINGENDCAP;

var joinStyle = StrokeJoin.ROUNDENDJOIN;
if (joinList.selection.text === "角") joinStyle =
        StrokeJoin.MITERENDJOIN;
if (joinList.selection.text === "ベベル") joinStyle =
        StrokeJoin.BEVELENDJOIN;

// ===============================
// 処理
// ===============================
for (var i = 0; i < sel.length; i++) {

if (!(sel[i] instanceof PathItem)) continue;

var p = sel[i];
p.stroked = true;
p.strokeWidth = strokeWeight;
p.strokeCap = capStyle;
p.strokeJoin = joinStyle;

// ---- 実線 ----
if (strokeType === "実線") {
p.strokeDashes = [];
}

// ---- 破線 ----
if (strokeType === "破線") {
p.strokeDashes = [dashLength, dashGap];
}

// ---- 二重線 ----
if (strokeType === "二重線") {
p.strokeDashes = [];

var outer = p.duplicate();
outer.strokeWidth = strokeWeight;

var offsetValue = strokeWeight + doubleGap;

var effectXML =
'<LiveEffect name="Adobe Offset Path">' +
'<Dict data="R mlim 4 R ofst ' + offsetValue + '"/>' +
'</LiveEffect>';

outer.applyEffect(effectXML);
}
}

alert("ストローク設定を適用しました");
}




実行すると表示されるパレットで設定をすればOKです。ちなみに前回までのソースでは[キャンセル]が出来なかった問題を解決しました。

TCDW8718 
知らない道には入らないことにしている

何年も利用しているのに、知らなかった地下鉄の抜け道的通路を知って、超得した気分&凄く損した気分。基本知らない人にはついて行かない&知らない道には入らないことにしているので・・・(^o^)

木曜日, 3月 26, 2026

Bambu Studio Lessons 06 
座面が曲面の場合の対処方法(2)

座面が曲面の場合の対処方法への追加実験報告です。

Bambu Studio Lessons 04 座面が曲面の場合の対処方法 2026/03/18

Bambu Studio Lessons

読み込んだら・・・

慣れないうちは[回転(R)]にてこのくらいに回転させた方が後処理が楽かもしれませんが・・・

今回はそのままで処理します。まず[カット(C)]にてスライス位置を設定します。黄色いポチで角度を保ったまま上下できます。[カットを実行]したら・・・

カットした臀部を選択し[底面選択(F)]で底面としたい面をクリックすると・・・

その面が自動的に底面となります。

あとはプレートとに位置関係を調整し、プレビューで問題点がなければプリントです。

プリント結果はこんな感じです。

問題の接合部分はピッタリでした。ヤスリがけとサフで問題解決です・・・

ただし正面のおでこあたりは頂上になっていたので、色々面倒かも。でもパテとサフで対置できる範囲ですね。

※ELEGOO PLAを使用(グレー)

TCDW8717 
破損してしまう危険性が生まれるので・・・

Cute Baby Alien 021(^o^)
サザエ頭系〜。
3Dプリンタで作ったキャラクターの保管に悩み始めました。私の場合、ほとんどは無造作に段ボール箱に入れていますが、部分的にデリケートな形状の場合は専用の容器を厚紙などで作成します。そうしないと破損してしまう危険性が生まれるので・・・。

水曜日, 3月 25, 2026

Illustratorの無駄知識38 
正円4つの組み合わせで15度分割

正円4つの組み合わせで90度を6分割。都合15度分割ができます。

任意の正円を作成します。

作成した正円が外接する正方形の角を中心とっして同じサイズの絵支援を作成します。

同様にして残りの角を中心とした正円を作成します。

こうして4つの円を作成すると、中心部に十字手裏剣のような形状が出来ます。

そこで、再著に作成した正円の中点と、上図で示した赤丸の位置を繋げると・・・

90度が6分割され・・・

それぞれの角度は15度になります。

TCDW8716 
私の勉強が足りないのかもですが

様々なシーンでデジタル化の波は確実に浸透してきていますが、妙なインターフェースで混乱することが多いような気がします。なまじPCを日頃から使っているからこその思い込みとのギャップですね。「何でここで、この流れ?」みたいなアレです(^o^)。私の勉強が足りないのかもですが(>_<)

火曜日, 3月 24, 2026

3Dプリンタ遊び 06 
プリント結果はサンドペーパー必須

3Dプリンタのプリント結果はサンドペーパー必須ですが、今回は失敗作の修復です。

取りあえず田宮パテで欠如部分を修復です。ちなみに、しばらく使っていなかったので変色してしまいましたが、ギリギリ使えました。

処理は600番あたりから段階的に細かくしていきますが、ミニルーターがあれば細かい箇所も上手く対処できます。

ミニルーターのビットは先端が細いので細部に最適です。正直、修正する時間を考えたら、廃棄して作り直した方が経済的かつ合理的なのですが、形あるモノを壊す事は私には出来ないので・・・。

※Bambu Lab 高速 PETGを使用

TCDW8715 
ガソリンもジワジワきていますね

3Dプリント用のフィラメントが値上がりしています。石油製品ですから気になります。ガソリンもジワジワきていますね。

月曜日, 3月 23, 2026

Bambu Studio Lessons 05 
PETGとPLAフィラメント

PLAフィラメントを購入したので、PETGとの比較をしてみました。

結局3体プリントすることになってしまいました。購入したPLAフィラメントはBambu純正ではなく、ちょっと暗いELEGOOとしてみました。サードパーティー製でも大丈夫?的なノリです。

Bambu Studioでも設定はいつもの様にデフォルト設定でフィラメントを指定するだけです。なお、サードパーティー製のPLAは[Generic PLA]でOKです。なお上図では[2]の設定していますが、これは切り換えて2色使う場合で、今回は無意味です。

まずPETGですが・・・

シャツの裾部分が苦手みたいです。

PLAでの最初のプリントはA1 miniをクールダウンさせなかったからか?・・・

見事に失敗してしまいました。フィラメント毎に設定温度が異なるので、切り換える場合はしばらく時間を空けた方が良いかもですね。

ということで時間を空けてクールダウンしてからの結果は・・・

良好でした。ちなみに、PLAだから綺麗できめ細かいわけではありませんでした。これはBambu Studioでの設定をデフォルトにしているからで、細かく調整していくと違いが出てくるのかもしれませんが、設定実験には時間が掛かりそうです。

※Bambu Lab 高速 PETGを使用(グレー)
※ELEGOO PLAを使用(グレー)

TCDW8714 
気にしていないのは本人だけなんだけどね

昔よく聞いた話として、「麻雀すると性格が分かる」がありましたが、車の運転のそうですね。あと、色々な打ち合わせ時にも如実にソレは出ますね。気にしていないのは本人だけなんだけどね・・・痛い人。