日曜日, 10月 11, 2026

TCDW8916 
一歩も違えると筆記具は「とても危険な」底なし沼

最近、筆記具熱が再発しました。最も一歩も違えると筆記具は「とても危険な」底なし沼なので、リーズナブルな価格帯に絞っての散財です。今度Blogで整理してみます。

土曜日, 10月 10, 2026

FreeCAD Modeling 13 
円柱のような曲面へ文字を凸表示

円柱のような曲面へ文字を凸表示する手順を整理しました。

まず、いつものようにPart Designにて任意の円柱を作成します。ここでは50mmの円をパッドで40mm押し出しました。

ワークベンチを[Curves]に変更し、[Surfaces]>[Sketch on Surfaces]を実行すると・・・

※[Curves]が表示されな合い場合は、[ツール]>[Addon Manager]にて[Curves]をインストールします。
手順は以下を参考にしてください。


モデルに[Sketch on Surfaces]が追加され、その中にある[Mapped sketch]をダブルクリックすると・・・

選択した面の展開図的なスケッチが表示されます。

ここでPad表示をオフにし、タスクで[閉じる]で、スケッチから抜けます。

ワークベンチを[Draft]に変更し、

[ドラフト]>[テキストからシェイプへ]を選び・・・

タスクでテキストを入力し。書体の右端をクリックして・・・

書体を設定します。

任意の場所をクリックすればテキストが表示されます。ただし、このまま処理を進めると文字が反転した状態となってしまうので・・・

[変更]>[鏡像]を選び・・・

回転位置をクリックしてShiftキーを併用して回転させます。

元のテキスト[ShapeString(鏡像)]を非表示とします。

[変更]>[ドラフトからスケッチへ]を選びます。

これでテキストのスケッチが変更されました。
続きは明日アップします。

FreeCAD 1.1.1 arm64

TCDW8915 
原材料が値下げされたら戻るわけ無いですからね〜

色々な商品の値上げやサイズ小型化が露骨になってきましたが、原材料高騰〜なんて言っても、原材料が値下げされたら戻るわけ無いですからね〜(>_<)

金曜日, 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
);
}

})();

オブジェクトを選択して実行し・・・

デフォルト値を無修正のまま[配置]をクリックすれば・・・

円に均等配置されます。

もしろんグループ化されているオブジェクトも有効です。

配置数を変更すれば・・・

こんな感じです。

TCDW8914 
砂糖を20袋以上も買い込んでいる人に遭遇

Cute Baby Alien 070(^o^)
驚きのボトル族〜
驚きと言えば、行きつけのスーパーで、砂糖を20袋以上も買い込んでいる人に遭遇。過去にも発見したときはアーリア系の方でしたが、今回は日本人のようでした。ちょっと理解できない量で気になって仕方がないです。業務用なら一般のスーパーで買うより安いのに・・・何故???

木曜日, 10月 08, 2026

Bambu Studio Lessons 22 
小さいサイズで可変積層ピッチの設定結果を比較

可変積層ピッチの設定結果を比較を差の出やすい小さいサイズで実験して見ました。

左はデフォルト無修正、右は可変積層ピッチをフル設定。

プリント結果でサポート材を取り除いただけの状態。サイズは50mmの大きさです。

デフォルトのアップ。

可変積層ピッチを設定したアップ。この差は大きいですね。今まで絵完全にデフォルト設定だったので、かなり驚いています。ただし、概ねプリント時間が2倍になりエラーの頻度が上がるというデメリットがあります。

Bambu Studio 2.8.3.66
modo 17.1v1
Blender 5.2.1
eSUN PLA Plus(グレー)

TCDW8913 
思い出したくもないトラブルでした・・・

ちょうど1年前の10月8日は、50日間に及ぶドメイントラブルが発生した日でした。顛末記はサイトで公開していますが、問題解決した今も、思い出したくもないトラブルでした・・・。

■ 突然降り注いだ50日間に及ぶドメイントラブルの記録

水曜日, 10月 07, 2026

Illustratorでの作図基本 46 
2枚の三角定規を作図

2枚の三角定規を作図する手順です。三角形の関係は以下を参照してください・


まず適当な矩形を作成し、底面右下を起点とした直線を仰臥します。

基点を軸に-30°回転させ・・・

全体をッ選択して[パッスファインダー]>[分割]を実行して

ダイレクト選択ツールで余分な部分を削除します。

次に底辺左端を起点とした直線を描画し・・・

基点を軸に-45°回転させ・・・

続けて底辺右端を起点とした直線を描画し・・・

基点を軸に45°回転させ・・・

2つの基点をダイレクト選択ツールで選択し、[オブジェクト]>[パス]>[連結]を実行後に[パスファインダー]>[合体]または[中マド]を実行後に余分な線を削除します。

これで基本形状は完成です。


2つの三角形を選択し、[オブジェクト]>[パス]>[パスのオフセット]にて、マイナス値で任意の値を実行すれば・・・

くりぬかれた部分を演出できます。

最後に[パスファインダー]>[中マド]を実行すれば完成です。

TCDW8912 
頑張って予定を組んで専門店へ出かけても

昔はあった文豪具店が少しずつ消えている感じがします。ちょっと気になる文房具を実際に確認出来ないのはちょっと辛いですね。ホームセンターの文具コーナーはお世辞にも潤沢な品揃えではないので、ネット通販に頼ろうにも、お目当ての筆記具は10本セットだったりして躊躇してしまいます。頑張って予定を組んで専門店へ出かけても、お目当ての商品は定価販売で高いし・・・。

火曜日, 10月 06, 2026

ミニ封筒は厚紙や塩ビのカバーで決める

変則的なミニ封筒は厚紙や塩ビのカバーで型紙的な定規を作成すると便利です。

とりあえず展開図を作成し・・・

展開図に合わせて厚紙や塩ビのカバーをカットして定規を作成します。

あとは定規を当てて適当な用紙をカットし・・・

織り込みながら底辺の糊代に糊をつけて織り込み・・・

側面の糊代に糊をつけて織り込めば完成です。