0
0

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】共通部分(積集合): &(アンパサンド:AND)を使う。

0
Last updated at Posted at 2026-07-29

勘違いしていました。追記訂正しました。ありがとうございます。

🛠️ PythonSCAD 演算子チートシート

3Dモデリングで最もよく使う「図形の足し引き」は、Pythonの「集合(Set)」を扱う記号と同じように設計されています。

  • 足し算(くっつける / 和集合): + または | (OR)

  • 例:result = part1 + part2

  • 基本的には + を使いますが、Pythonの集合演算としての | (パイプ記号:ORの意味) でも同じように結合できることが多いです

  • **引き算(削り取る / 差集合): -**

  • 例:result = base - cutter

  • メインの部品から、穴あけ用のカッター部品を引く時によく使いますね。Zファイティング(面のチラつき)を防ぐための少し長めのカッター作りが腕の見せ所です!

  • 掛け合わせ(重なりを残す / 積集合): & (AND)

  • 例:result = s1 & s2

  • 今回マスターした記号です!「両方の図形が存在している空間(AND)」だけを残します。レンズを作ったり、複雑な曲面を切り出したりする高度なモデリングに欠かせません


【誤り訂正】 ~~排他的論理和 (重なった部分だけ消す): ^ (XOR) 

  • 例:result = part1 ^ part2
  • 少しマニアックですが、「どちらか一方だけにある部分」を残し、「重なっている部分はくり抜く」という面白い形を作れます

訂正です。
^ 演算子を使った方法は、

配置した図形 = 元のパーツ ^ [X座標のリスト, Y座標のリスト, Z座標のリスト]

PythonSCADにおいて、^ 演算子は「XOR(排他的論理和)」ではありません。「一括スタンプ機能」として、「配列コピー(スタンプ一括配置)」の機能になります。

「2つの球の積集合」のコード

2つの球を横に並べて、重なるように配置し、積集合で、重なる部分を求めるスクリプト

# ==========================================
# 2つの球の積集合(重なり部分)でレンズを作る
# 作成日: 2026/07/29
# ==========================================

from pythonscad import *

# --- パラメータ設定 (単位: mm) ---
sphere_r   = 20.0   # 球の半径
center_gap = 25.0   # 2つの球の中心間距離(2 * sphere_r より小さいと重なる)
fn_val     = 80     # 球の滑らかさ(分割数)

# --- メイン処理 ---

# 1. 球を「横(X方向)」に並べるために、中心を ±center_gap / 2 に配置する
# 左側の球(X軸のマイナス方向へ移動)
s1 = translate(sphere(r=sphere_r, fn=fn_val), [-center_gap / 2, 0, 0])

# 右側の球(X軸のプラス方向へ移動)
s2 = translate(sphere(r=sphere_r, fn=fn_val), [center_gap / 2, 0, 0])

# 2. 2つの球の「重なっている部分」だけを抽出する(積集合)
# ※ 形状同士の共通部分は & (AND演算子) を使います
result = s1 & s2

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

スクリーンショット 2026-07-29 204014.png

解説ポイント

① 重なった部分はどんな形になる?(魔法のレンズ作り)

このプログラムを実行すると、虫眼鏡の「凸レンズ」のような、どら焼きのような形ができあがります。
2つのまん丸な球体を少しだけめり込ませて、その「両方が重なっている(AND)空間」だけを削り出すと、美しいカーブを持ったレンズの形になるんです。3Dモデリングでは、このように「基本的な図形の重なり(&)」を利用して複雑な部品を作ることがよくあります。

center_gap を変えて実験してみよう!

プログラミングでものづくりをする最大のメリットは、「数字を1つ変えるだけで形がパッと変わる」ことです。
ぜひ、center_gap(中心同士の距離)の数値を変えて実行してみてください。

  • center_gap10.0 に小さくすると?

  • 2つの球が深くめり込むので、分厚いレンズになります。

  • center_gap35.0 に大きくすると?

  • めり込む量が減るので、薄くて鋭いレンズになります。

  • center_gap40.0(半径の2倍)にするとどうなる?

  • 球と球がギリギリ触れ合うだけになり、重なる部分がなくなるので図形が消えてしまいます

+(結合)と &(共通部分)の違い

もし、プログラムの result = s1 & s2 の部分を、result = s1 + s2 に書き換えたらどうなるでしょうか?
+ は「くっつける(OR)」なので、重なっている部分だけでなく、2つの球が雪ダルマ(あるいはダンベル)のように繋がった形が表示されます。

スクリーンショット 2026-07-29 211317.png

「足し算(+)」と「共通部分(&)」の違いを、ぜひ画面上で見比べてみてください。

^演算子の使い方補足です。

参考資料

追記:練習帳です。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?