火曜日, 9月 29, 2026

Bambu Studio Lessons 21 
同じSTLでも3Dツール毎に印刷結果が激変します

同じSTLでも3Dツール毎に印刷結果が激変するので、3Dツールで有機的な形状を作成する場合は要注意です。

私は現在キャラクター作成は基本modoで作成しています。上は[TAB]キーでサブディビジョン設定した状態です。

構造はこんな感じ。

で、実際のデータはこんな状態で、[TAB]キーでサブディビジョン設定した状態でSTL書き出してBambu Studioに読み込んで処理しています。

Bambu Studioに読み込んだ状態。

プレビューで印刷結果を確認した状態。曲面は滑らかになっています。実際に印刷はしていませんが、ここで見えている状態でプリントされます。

momoでobj書き出ししたデータをBlenderに読み込んだ状態(スムース表示)です。そのままSTL書き出してBambu Studioに読み込んで処理しています。

Bambu Studioに読み込んだ状態。

プレビューで印刷結果を確認した状態。曲面は滑らかになっていません。STLを読み込んだままの結果です。実際に印刷はしていませんが、ここで見えている状態でプリントされます。

[モディファイアー]>[モディファイアーを追加]>[生成]>[サブディビジョンサーフェース]にて[ビューポートのレベル数]を1にして適用し、STL書き出してBambu Studioに読み込んで処理しています。

Bambu Studioに読み込んだ状態。

プレビューで印刷結果を確認した状態。曲面はおおむね滑らかになっています。実際に印刷はしていませんが、ここで見えている状態でプリントされます。

今回のデータの場合、Blenderで[モディファイアー]>[モディファイアーを追加]>[生成]>[サブディビジョンサーフェース]にて[ビューポートのレベル数]を2ぐらいにして適用すればmodoのデフォルトと同等の結果になります。

modo 17.1v1
Bambu Studio 2.8.3.66
Blender 5.2.1

TCDW8904 
もちろんマズくはありませんでした

昨夜、衝動的に購入したノンアルコール梅酒は、ちょっと薄味でした。昔自宅で作っていたときはウイスキーで作っていたからちょっと味になじめなかったかも。もちろんマズくはありませんでした。

月曜日, 9月 28, 2026

カメラの内蔵ストロボバウンスアダプター

ホットシューのあるカメラの内蔵ストロボの光を上面に発酵させるためのバウンスアダプターを3Dプリンタで作成しました。


カメラの内蔵ストロボは被写体に向けられるように設計されています。

これを何らかの方法で上に向けることが出来れば天井などへバウンスさせることが出来ます。過去にいくつかの方法をアップしましたが、上の割り箸で抑えるイメージから3Dプリンタでホットシューアダプターとっして作成することを思いつきました。

アダプターはこんな感じです。

ストロボを起動させてからアダプターをホットシューに差し込めば完成です。問題はカメラ毎に作成しなければならない点ですが、モデリングは難しくないので問題なしですね。

TCDW8903 
大型店だと思っていたら中型店だったりしますから

ちょっと気になる100均製品は、確実に店頭には名愛ですね。もちろん大型店なら手に入るのでしょうが、意外と大型店って近くに無いんですよね〜。大型店だと思っていたら中型店だったりしますから・・・。

日曜日, 9月 27, 2026

JavaScriptでAI遊び 107 
Illustratorで選択オブジェクトを指定数ランダム散布

Illustratorで選択したオブジェクトを数だけ指定してアートボード内に散布させるシンプル処理が必要だったので作ってみました。多分過去に作っていないと思います。処理結果はアートボードからはみ出すことはありません。

(function () {

if (app.documents.length === 0) {
alert("ドキュメントが開かれていません。");
return;
}

var doc = app.activeDocument;

// --------------------------------
// 選択チェック
// --------------------------------
if (doc.selection.length === 0) {
alert("散布するオブジェクトを選択してください。");
return;
}

// --------------------------------
// 散布数を入力
// --------------------------------
var input = prompt(
"散布する個数を入力してください。",
"50"
);

if (input === null) {
return; // キャンセル
}

var count = parseInt(input, 10);

if (isNaN(count) || count < 1) {
alert("1以上の整数を入力してください。");
return;
}

// --------------------------------
// 現在のアートボード
// --------------------------------
var ab = doc.artboards[doc.artboards.getActiveArtboardIndex()];
var abRect = ab.artboardRect;

var abLeft = abRect[0];
var abTop = abRect[1];
var abRight = abRect[2];
var abBottom = abRect[3];

// --------------------------------
// 選択オブジェクトを保存
// --------------------------------
var originals = [];

for (var i = 0; i < doc.selection.length; i++) {
originals.push(doc.selection[i]);
}

// --------------------------------
// 選択オブジェクトをグループ化
// --------------------------------
var group = doc.groupItems.add();

for (var i = 0; i < originals.length; i++) {
originals[i].move(group, ElementPlacement.PLACEATEND);
}

// グループの中心
var gb = group.geometricBounds;

var centerX = (gb[0] + gb[2]) / 2;
var centerY = (gb[1] + gb[3]) / 2;

// --------------------------------
// 複製してランダム散布
// --------------------------------
for (var i = 0; i < count; i++) {

var item = group.duplicate();

// オブジェクトサイズ
var b = item.geometricBounds;

var width = b[2] - b[0];
var height = b[1] - b[3];

// アートボード内に収まる範囲
var minX = abLeft + width / 2;
var maxX = abRight - width / 2;

var minY = abBottom + height / 2;
var maxY = abTop - height / 2;

// ランダム位置
var x = minX + Math.random() * (maxX - minX);
var y = minY + Math.random() * (maxY - minY);

// 移動
item.translate(
x - centerX,
y - centerY
);

// ランダム回転
var angle = Math.random() * 360;

item.rotate(
angle,
true,
true,
true,
true,
Transformation.CENTER
);
}

// --------------------------------
// 元オブジェクトを削除
// --------------------------------
group.remove();

// 選択解除
doc.selection = null;

alert(count + "個のオブジェクトをランダム配置しました。");

})();

べースとなるオブジェクト(※)を選択して実行すると・・・

散布による重なりを想定してオブジェクトを乗算設定しています。

散布する数を指定します。デフォルトは50。

これが表示されれば問題なく完了です。

処理結果はこんな感じ。

散布数を200にし・・・

これが表示されれば完了です。

処理結果はこんな感じ。ちなみにベースオブジェクトは処理後に削除されます。

※Illustratorのアップデートで不具合が出る場合があります。気がついた時点でデバッグするように心がけていますが、すぐに対応できないのでご容赦ください。

TCDW8902 
出せない味わいなので色々悩んでしまう

Cute Baby Alien 067(^o^)
太鼓腹星人に進化しないように頑張ろう〜
愛用していた万年筆用のインク価格が7年で2倍になっていて唖然。サインペンやボールペンでは出せない味わいなので色々悩んでしまう・・・(>_<)。今度は耐水インクにしようと思っていますが、色々調べると頻度を考慮すれば、つけペンを使った方が良さそうですね。超アナログで意外といいかも(^o^)

土曜日, 9月 26, 2026

Dreamweaverのファイル管理をお復習い

インターフェースを憶える必要が出たので、Dreamweaverのファイル(サイト)管理のお復習いです。私はHTMLやCSSはVisual Studio Codeを使っています。だから正直Dreamweaverはアウェイ環境なので、ちょっと気になる部分を整理してみることにしました。今回はその第一弾です。ただし、これで終わるかもしれませんけど・・・。

起動したら[新規作成]をクリックします。

※久しぶりに起動したら1年ぶりで、ダミーファイルばかりでした(^o^)汗

新たにゼロから作成する場合は、適当に新規ファイルを作成します。既に出来ている、あるいは支給されたデータ編集の場合は、後述する[サイト]>[サイトの管理]からフォルダーを設定します。

新規ファイルを作成直後の画面です。これで最低限記述されたHTMLファイルが編集待ち状態になります。

※ちなみにDreamweaverのプレビュー画面はちょっとへそ曲がりなところがあって正しく表示されないことがあります。ブラウザーでの確認が必須ですね。そもそもアップデートは今間も行われていますが、正式名は2021となっています。この原稿は2026年7月25日バージョンで行っています。


サンプルとして用意した2つのデータの構造です。

既に出来ている、あるいは支給されたデータ編集の場合は、起動直後の画面で[サイト]>[サイトの管理]をクリックし・・・

※水平。垂直分割は[表示]>[分割]で変更できます。

[新規サイト]をクリックし・・・

※ここでは新規ファイルを作成した後に[サイト]>[サイトの管理]を実行しているので背景が、新規ファイル編集画面になっています。

ローカルサイトフォルダー右端のフォルダーアイコンをクリックして、該当ファイルのフォルダーを指定します。

これで使用サイトリストにデータが表示され,選択状態になるので[完了]をクリックします。

次に右端の[ファイル] をクリックするとお指定したデータを表示するので、編集したいHTML等をダブルクリックすれば・・・

編集状態が得られます。

同じように別のデータを編集したい場合は、[サイト]>[サイトの管理]をクリックし・・・

新規サイト]をクリックし、ローカルサイトフォルダー右端のフォルダーアイコンをクリックして、該当ファイルの√フォルダーを指定します。

次に右端の[ファイル] をクリックするとお指定したデータを表示するので、編集したいHTML等をダブルクリックすれば・・・

編集状態が得られます。もちろん左上のデータタグからでも切り替え可能です。

Dreamweaver 21.8.1

TCDW8901 
地下鉄でのシェービングは、かなりの強者ですね。

地下鉄の車内で電気カミソリを使っているサラリーマンを初めて見ました。運転しながら族はよく見ますが、地下鉄でのシェービング族は、かなりの強者ですね。

金曜日, 9月 25, 2026

3Dプリンタ遊び 24 
結局、不安定な部分は別パーツですね


Bambu Studioでは直線カットしか出来ないので、Blenderのブーリアン処理を利用して、一番不安定な腕を別パーツとしました。それ以外は全て合成しています。

そのままBambu Studioでデフォルト設定でプリント。

プリント完了直後の状態です。

サポート材を取り除き・・・

胴体に腕を接着して完成です。なお、上の写真は仮組みで実際の接着前の段階です。

Bambu Studio 2.7.1.62
Fusion 2704.1.23 arm64
modo 17.1v1
Blender 5.2.0
eSUN PLA Plus(グレー)