2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

高校生にPythonSCADの最初のExampleを解説する

2
Last updated at Posted at 2026-07-30

ネジ穴付きの小型ケース

PythonSCADコミュニティ・開発者に感謝申し上げます。ありがとうございます。

今回は、コメントアウト(#)を1行ずつ外していくことで、ただの四角いブロックが「実用的なケース(容器)」へと進化していく様子を体験しましょう。

特に今回は、「プログラミングならではの魔法」とも言える、記号を使った図形の移動(+)や一括コピー(^)の書き方をメインに解説していきます。後で記事にしやすいよう、図面やJIS規格を意識した解説も交えてまとめました。

まずは、ベースとなる完成コードです。

1. 完成コード(PythonSCAD)

# ==========================================
# [ネジ穴付きの小型ケース]
# 作成日: 2026/07/30
# ==========================================

from pythonscad import *

# --- パラメータ設定 (単位: mm) ---
fn_val = 60  # 円の滑らかさ(数が多いほどキレイな円になる)
eps = 0.1    # くり抜きの時の「削り残し」を防ぐための微小値

# --- メイン処理 ---
# 以下の # を1行ずつ外して(コメントアウトを解除して)実行してみてね!

# 【ステップ1】土台となる外側の箱を作る
box = cube([40, 40, 10], center=False)

# 【ステップ2】内側をくり抜いて「容器」にする(移動:+ リスト)
# box -= cube([36, 36, 40], center=False) + [2, 2, 2]

# 【ステップ3】底の裏側に円柱のくぼみを作る(移動:+ リスト)
# box -= cylinder(r=10, h=5, fn=fn_val) + [20, 20, -eps]

# 【ステップ4】四隅にネジ用の小さな穴を開ける(一括コピー配置:^ 演算子)
# box -= cylinder(r=1.5, h=15, fn=fn_val) ^ [[5, 35], [5, 35], -eps]

# 3Dプレビュー表示
show(box)


2. 段階的な解説(ステップバイステップ)

このプログラムが「なぜこう動くのか」、1行ずつ秘密を解き明かしていきましょう!

【ステップ1】ただのブロック(ベース)

box = cube([40, 40, 10], center=False)

スクリーンショット 2026-07-30 142717.png

最初は、幅(X)40mm、奥行き(Y)40mm、高さ(Z)10mm の黄色の直方体が表示されます。
今回は座標計算の都合上、原点 [0,0,0] を左下の手前(center=False)として作っています。ここからこの box をどんどん削っていきますよ。

【ステップ2】内側をくり抜く(引き算と移動の魔法)

box -= cube([36, 36, 40], center=False) + [2, 2, 2]

スクリーンショット 2026-07-30 142734.png

# を外して実行すると、中がくり抜かれて「箱」になります。
ここでのポイントは2つ!

  1. -= 演算子:Pythonで「元の変数から引き算して更新する」という意味です。3D CADでは「元の形から右側の形を削り取る(ブーリアン演算の差)」という動作になります。
  2. **移動の書き方 + [2, 2, 2]**:普通、図形を動かすときは translate(図形, [X, Y, Z]) という関数を使いますが、PythonSCADでは 図形に + [X座標, Y座標, Z座標] を足すだけで移動 できてしまいます!
  • ここでは、XとYに2mmずつズラし、Z(高さ)も2mm浮かせています。これにより、外壁の厚み2mm、底の厚み2mmが残るというわけです。

【ステップ3】裏側のくぼみを作る

box -= cylinder(r=10, h=5, fn=fn_val) + [20, 20, -eps]

スクリーンショット 2026-07-30 142751.png

箱の裏側(底)を見ると、丸いくぼみができています。
直径20mm(r=10)の円柱(cylinder)を使って削っています。
ここでも + [20, 20, -eps] を使って移動させています。XとYを20mm移動させて「箱のど真ん中」に合わせ、Z軸は少しだけマイナス(-eps)にしています。
※ワンポイント:ぴったり 0 の位置から削ろうとすると、パソコンの計算誤差で薄い膜が残ってしまう(Zファイティング)ことがあります。そのため、ほんの少し(eps = 0.1)だけはみ出させて削るのが、キレイな3Dモデルを作るプロのコツです。

【ステップ4】四隅の穴を一気に開ける(最強のコピー機能)

box -= cylinder(r=1.5, h=15, fn=fn_val) ^ [[5, 35], [5, 35], -eps]

スクリーンショット 2026-07-30 142807.png

いよいよ最後の行です。四隅にネジを通すための直径3mm(r=1.5)の穴(キリ穴)が開きます。
ここで登場するのが、PythonSCADの超便利機能 ^ 演算子 です!

【基本の書き方】
配置した図形 = 元のパーツ ^ [X座標のリスト, Y座標のリスト, Z座標のリスト]

^ 演算子は、「左側の形」を「右側の座標の組み合わせ」すべてに一気にコピーして配置する機能です。
今回の指定 [[5, 35], [5, 35], -eps] を読み解いてみましょう。

  • X座標は 535 の2パターン
  • Y座標も 535 の2パターン
  • Z座標は -eps の1パターン

これが掛け算のように組み合わさって、

  1. [5, 5, -eps]
  2. [5, 35, -eps]
  3. [35, 5, -eps]
  4. [35, 35, -eps]
    という 4箇所に同時に円柱が配置 されます。これを一気に box から引き算(-=)しているため、たった1行で四隅に正確な穴が開くのです。工業製品の設計(例えばM3ネジ用の3.2mmバカ穴を四隅に開ける等)で、この機能はめちゃくちゃ役立ちます。

プロンプト例

PythonSCADを使って、高校生が1行ずつ実行しながら形状の変化と特殊な文法を学ぶためのチュートリアル用コードを作成し、わかりやすく解説してください。

【作成するパーツ】
ネジ穴付きの小型ケース

【形状の寸法・配置ステップ】
・ステップ1(土台): 40×40×10の直方体を作る(center=False)
・ステップ2(くり抜き): 36×36×40の直方体を [2, 2, 2] に移動して土台から削る
・ステップ3(底面のくぼみ): 半径10、高さ5の円柱を [20, 20, -eps] に配置して底の裏側から削る
・ステップ4(四隅のネジ穴): 半径1.5、高さ15の円柱を X座標(5, 35), Y座標(5, 35) の4箇所に配置して削る

【コードの条件】
・今回は生徒がコードの構造を直感的に理解しやすいよう、あえて寸法は変数化せず直書きとし、パラメータ設定は fn_valeps のみにしてください。
・ベースとなる変数(boxなど)に対して、-= 演算子を使って順番に削っていくスタイルにしてください。
・ステップ2とステップ3の移動処理には、translate 関数ではなく、PythonSCAD特有のリスト加算による移動(例: + [x, y, z])を使用してください。
・ステップ4の四隅への一括配置には、PythonSCAD特有のコピー演算子(例: ^ [[x1, x2], [y1, y2], z])を使用してください。
・学習体験のため、ステップ2〜4の処理は最初 # でコメントアウトしておき、直前に「以下の # を1行ずつ外して(コメントアウトを解除して)実行してみてね!」というメッセージを書いてください。

【解説の要望】
以下の点を高校生向けに解説してください。

  1. リストを加算する + [x, y, z] 演算子での移動(translateとの違いや手軽さ)
  2. ^ 演算子を使った配列(グリッド)コピーの仕組みと、複数の穴を一気に開けるメリット
  3. 1行ずつ # を外して変化を確認する学習アプローチ(プログラミングにおけるデバッグやステップ実行の考え方)

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?