土曜日, 10月 10, 2026
金曜日, 10月 09, 2026
JavaScriptでAI遊び 108
オブジェクトを設定した直径の円に対して指定数を均等配置
選択したオブジェクトを設定した直径の円に対して指定数を均等配置します。
#target illustrator
(function () {
if (app.documents.length === 0) {
alert("ドキュメントを開いてください。");
return;
}
var doc = app.activeDocument;
if (doc.selection.length !== 1) {
alert("配置する元のオブジェクトを1つ選択してください。");
return;
}
var source = doc.selection[0];
// =========================
// ダイアログ
// =========================
var dialog = new Window("dialog", "円周上に均等配置");
dialog.orientation = "column";
dialog.alignChildren = "left";
// 配置数
var countGroup = dialog.add("group");
countGroup.add("statictext", undefined, "配置数:");
var countInput = countGroup.add("edittext", undefined, "12");
countInput.characters = 8;
// 円の直径
var diameterGroup = dialog.add("group");
diameterGroup.add("statictext", undefined, "円の直径(mm):");
var diameterInput = diameterGroup.add("edittext", undefined, "100");
diameterInput.characters = 8;
// 開始角度
var angleGroup = dialog.add("group");
angleGroup.add("statictext", undefined, "開始角度(°):");
var angleInput = angleGroup.add("edittext", undefined, "0");
angleInput.characters = 8;
// ボタン
var buttonGroup = dialog.add("group");
buttonGroup.alignment = "right";
var cancelButton = buttonGroup.add("button", undefined, "キャンセル");
var okButton = buttonGroup.add("button", undefined, "配置");
cancelButton.onClick = function () {
dialog.close(0);
};
okButton.onClick = function () {
dialog.close(1);
};
dialog.defaultElement = okButton;
dialog.cancelElement = cancelButton;
if (dialog.show() !== 1) {
return;
}
// =========================
// 入力値
// =========================
var count = parseInt(countInput.text, 10);
var diameterMM = parseFloat(diameterInput.text);
var startAngle = parseFloat(angleInput.text);
if (isNaN(count) || count < 1) {
alert("配置数は1以上の整数を入力してください。");
return;
}
if (isNaN(diameterMM) || diameterMM <= 0) {
alert("直径は0より大きい数値を入力してください。");
return;
}
if (isNaN(startAngle)) {
startAngle = 0;
}
// =========================
// mm → pt
// =========================
function mmToPt(mm) {
return mm * 72 / 25.4;
}
var diameter = mmToPt(diameterMM);
var radius = diameter / 2;
// =========================
// 元オブジェクトの中心
// =========================
var bounds = source.visibleBounds;
var centerX = (bounds[0] + bounds[2]) / 2;
var centerY = (bounds[1] + bounds[3]) / 2;
// =========================
// ガイドとなる円を作成
// =========================
var circle = doc.pathItems.ellipse(
centerY + radius,
centerX - radius,
diameter,
diameter
);
// 塗りなし
circle.filled = false;
// 線あり
circle.stroked = true;
// 線幅 1pt
circle.strokeWidth = 1;
// 黒線
var black = new RGBColor();
black.red = 0;
black.green = 0;
black.blue = 0;
circle.strokeColor = black;
// 円を最背面へ
circle.zOrder(ZOrderMethod.SENDTOBACK);
// =========================
// 円周上に均等配置
// =========================
for (var i = 0; i < count; i++) {
var angle =
(startAngle + (360 / count) * i)
* Math.PI / 180;
var x = centerX + radius * Math.cos(angle);
var y = centerY + radius * Math.sin(angle);
var obj;
if (i === 0) {
obj = source;
} else {
obj = source.duplicate();
}
// オブジェクト中心
var b = obj.visibleBounds;
var objCenterX = (b[0] + b[2]) / 2;
var objCenterY = (b[1] + b[3]) / 2;
// 指定位置へ移動
obj.translate(
x - objCenterX,
y - objCenterY
);
}
})();
オブジェクトを選択して実行し・・・
デフォルト値を無修正のまま[配置]をクリックすれば・・・
円に均等配置されます。
もしろんグループ化されているオブジェクトも有効です。
配置数を変更すれば・・・
こんな感じです。
ラベル:
Illustrator,
JavaScript
TCDW8914
砂糖を20袋以上も買い込んでいる人に遭遇
Cute Baby Alien 070(^o^)
驚きのボトル族〜驚きと言えば、行きつけのスーパーで、砂糖を20袋以上も買い込んでいる人に遭遇。過去にも発見したときはアーリア系の方でしたが、今回は日本人のようでした。ちょっと理解できない量で気になって仕方がないです。業務用なら一般のスーパーで買うより安いのに・・・何故???
ラベル:
3D,
Cute Baby Alien,
modo,
TCDW
木曜日, 10月 08, 2026
TCDW8913
思い出したくもないトラブルでした・・・
ちょうど1年前の10月8日は、50日間に及ぶドメイントラブルが発生した日でした。顛末記はサイトで公開していますが、問題解決した今も、思い出したくもないトラブルでした・・・。
ラベル:
illustration,
Photoshop,
TCDW
水曜日, 10月 07, 2026
Illustratorでの作図基本 46
2枚の三角定規を作図
2枚の三角定規を作図する手順です。三角形の関係は以下を参照してください・
Illustratorの無駄知識46 2枚の三角定規のサイズ関係 2026/10/02
まず適当な矩形を作成し、底面右下を起点とした直線を仰臥します。
基点を軸に-30°回転させ・・・
全体をッ選択して[パッスファインダー]>[分割]を実行して
ダイレクト選択ツールで余分な部分を削除します。
次に底辺左端を起点とした直線を描画し・・・
基点を軸に-45°回転させ・・・
続けて底辺右端を起点とした直線を描画し・・・
基点を軸に45°回転させ・・・
2つの基点をダイレクト選択ツールで選択し、[オブジェクト]>[パス]>[連結]を実行後に[パスファインダー]>[合体]または[中マド]を実行後に余分な線を削除します。
これで基本形状は完成です。
2つの三角形を選択し、[オブジェクト]>[パス]>[パスのオフセット]にて、マイナス値で任意の値を実行すれば・・・
くりぬかれた部分を演出できます。
最後に[パスファインダー]>[中マド]を実行すれば完成です。
ラベル:
Illustrator
TCDW8912
頑張って予定を組んで専門店へ出かけても
昔はあった文豪具店が少しずつ消えている感じがします。ちょっと気になる文房具を実際に確認出来ないのはちょっと辛いですね。ホームセンターの文具コーナーはお世辞にも潤沢な品揃えではないので、ネット通販に頼ろうにも、お目当ての筆記具は10本セットだったりして躊躇してしまいます。頑張って予定を組んで専門店へ出かけても、お目当ての商品は定価販売で高いし・・・。
ラベル:
illustration,
Photoshop,
TCDW
火曜日, 10月 06, 2026
ミニ封筒は厚紙や塩ビのカバーで決める
変則的なミニ封筒は厚紙や塩ビのカバーで型紙的な定規を作成すると便利です。
とりあえず展開図を作成し・・・
展開図に合わせて厚紙や塩ビのカバーをカットして定規を作成します。
あとは定規を当てて適当な用紙をカットし・・・
織り込みながら底辺の糊代に糊をつけて織り込み・・・
側面の糊代に糊をつけて織り込めば完成です。
ラベル:
Do It Yourself
TCDW8911
10mほど離れているのに会話内容は筒抜けでした
久しぶりに電車内で、声の大きいサラリーマン2名の聞きたくもない会話で頭がクラクラしてしまいました。下車した駅が同じだったのですが、10mほど離れているのに会話内容は筒抜けでした。声の大きい人苦手です。
ラベル:
illustration,
Photoshop,
TCDW
月曜日, 10月 05, 2026
3Dプリンタ遊び 25
プリントデータの構造と考え方
一連のプリントトラブルのまとめを整理しました。
3Dプリンタ遊び 24 結局、不安定な部分は別パーツですね 2026/09/25
3Dプリンタ遊び 23 修正はパテ盛りより部分再プリントが経済的かも 2026/09/23
Bambu Studio Lessons 20 サポートツリーが折れてしまう謎トラブル 2026/09/19
A:胴体を分割プリントして接着
プリント時間:2時間58分
B:失敗した右腕だけを追加プリントして接着
プリント時間:2時間39分+32分=3時間11分
C:腕だけを別パーツ化してプリント
プリント時間:2時間3分
プリント直後後 斜め正面
A:腕と足下にパテ処理
B:胴体に謎の凹みと腕のつなぎ目にパテ処理
C:腕と角のつなぎ目に接着剤がはみ出る
プリント直後後 斜め背面
A:胴体のつなぎ目や腕と足下にパテ処理
B:胴体に謎の凹みと腕と角のつなぎ目にパテ処理
C:後処理なし
サーフェース処理後 斜め正面
A:問題なし
B:ブリント時のトラブルが頭部にもありました
C:問題なし

サーフェース処理後 斜め背面
A:腕の部分の紙やすりが雑でした。胴体のつなぎ目のパテ処理が甘かったです
B:ブリント時のトラブルが頭部にもありました
C:問題なし
結局Cタイプがプリント時間最短で問題皆無という結論になりました。データ構造的に腕以外を一体化したことも影響しています。
Bambu Studio 2.7.1.62
Fusion 2704.1.23 arm64
modo 17.1v1
Blender 5.2.0
ANYCUBIC PLA(質感グレー)
eSUN PLA Plus(グレー)
ラベル:
3D,
Bambu Studio,
Blender,
modo
登録:
投稿 (Atom)






























