了解した。
ここまでの 2D/3D 全ユニット解析を踏まえて、次回以降コピペ不要で即復帰できる《継続メモ(完全版)》 をまとめる。

あなたの Delphi → Blender 移植プロジェクトの OS レイヤー構造を正しく保持した、
長期的に使えるスナップショットになっている。


🧱 《継続メモ(完全版)》2026-05-29

=========================================

■ 0. プロジェクト全体の目的(再確認)

Delphi 版 2D/3D 図形編集 OS を Blender 上に再構築する。

  • 2D:定規・定規線・図形編集(ShortH/V, Line, Rect, Bezier…)
  • 3D:MeshOS(TMesh)を Blender の bmesh に読み替え
  • データ保存:combo / combo_sub 単位のフォルダ保存
  • 画像はデータに含めず、外部参照(なぞり描き用)

=========================================

■ 1. 2D OS の構造(Delphi → Blender に移植すべき本質)

● 1-1. 2D データ構造(UnitData2)

Blender では Python クラスとして再構築する:

  • ShortH / ShortV(定規線)
  • Line / Lines
  • MyRect / Ellipse / Bezier
  • Lake / Path
  • MyPoint / MyPointF
  • Obj(グループ ID)
  • Selected[](選択状態の唯一の記録場所)
  • Pallet[](色テーブル)
  • Combos[combo][combo_sub](ページ名)

重要:要素自身は “選択フラグを持たない”

選択は Selected[] に集約される。


● 1-2. 定規(pngs[])の OS 仕様

Delphi 版の最重要ポイント:

  • pngs[2] = 水平定規
  • pngs[3] = 垂直定規
  • 描画ではなく UI 部品(TImage)
  • AddShortH / AddShortV モードでのみ表示
  • クリックは PngsMouseDown → ImageDownMouse に流れる
  • 定規線(ShortH/V)とは完全に別物

✔ Blender でも

  • GPU texture で描画する UI 部品 として扱う
  • ShortH/V は別のデータ構造
  • 選択モードでは定規ではなく 線を選択

● 1-3. 2D マウス処理(UnitImage)

ImageDownMouse の OS 仕様:

  • GX,GY = マウスダウン
  • X,Y = マウスアップ
  • p,q で単点クリック or 範囲選択を判定
  • 単点クリック → SelectXXX
  • 範囲選択 → SelectRangeXXX
  • Add モード → AddMark など
  • 最後に DispAll

✔ Blender では

modal operator で完全再現する。


● 1-4. 色パレット(UnitPallet)

  • Pallet[] = 最大 180 色
  • PalletNow = 現在の色
  • 要素は 色番号だけを持つ
  • 描画時にパレットから色を取得
  • ハッチパターンも同様に外部テーブル参照

✔ Blender でも

Python list でパレットを保持し、要素はインデックス参照。


=========================================

■ 2. 3D OS の構造(UnitData / UnitMesh / Unit3)

● 2-1. 3D 方向体系(Surface / Arrows / Directions)

Delphi 版 MeshOS の根幹。

  • Surface = 24 面の識別子
  • Arrows = Surface 遷移表
  • Directions = (d0,d1,d2) の軸方向セット

✔ Blender でも必ず移植

2D→3D 変換のために必要。


● 2-2. TMesh(UnitMesh)

Delphi 版 3D モデリングの中心。

  • Vertices: TList<TVertex>
  • Faces: TList<TFace>
  • Translate / Rotate / Subdivide / Fuse / Integrate
  • ComputeNormal / ComputeCenter
  • RemoveSelectedFacesAndUnusedVertices
  • SubdivideFacesByCentroid / EdgeMidpoints
  • CreateHexahedronFromRectangles
  • etc…

✔ Blender では

  • bmesh を使うため、コード移植は不要
  • ただし 処理思想(OS)だけ読み替える

● 2-3. 3D ディスパッチャー(Unit3)

  • OpenGL
  • カーソル移動
  • 選択
  • 形状生成ダイアログ
  • メッシュ操作のルーティング

✔ Blender では

  • UI / Operator / bmesh に置換
  • Delphi のコードは不要
  • 思想だけ保持

=========================================

■ 3. 画像(なぞり描き)OS(UnitImage)

  • 画像はデータに含めない
  • Combos[i,j] に「x,y,filename」を記録
  • Image0 に貼り付ける
  • これは なぞり描き用の背景画像

✔ Blender では

  • bpy.data.images.load()
  • draw handler で GPU texture 描画
  • データには含めない(Delphi と同じ)

=========================================

■ 4. Blender 移植のロードマップ(確定版)

● Step 1:2D データ構造(UnitData2)を Python クラス化

  • ShortH/V
  • Line / Lines
  • MyRect / Ellipse / Bezier
  • Path / Lake
  • Obj
  • Selected[]
  • Pallet[]
  • Combos[]

● Step 2:2D 描画(draw handler)

  • 背景画像
  • 定規 PNG
  • ShortH/V
  • Line / Rect / Bezier
  • Mark / Path

● Step 3:2D マウス処理(modal operator)

  • ImageDownMouse の完全移植
  • 単点クリック / 範囲選択
  • Add / Select / Unselect

● Step 4:色パレット UI

  • Python Panel
  • パレット描画
  • 色選択

● Step 5:3D 方向体系の移植

  • Surface / Arrows / Directions を Python dict に

● Step 6:3D 形状生成(台形シートなど)

  • すでに台形シートは完成
  • 他の形状も必要に応じて移植

=========================================

■ 5. 現在の到達点(2026-05-29)

  • 2D OS の 80% を完全解析済み
  • 定規 PNG の OS 仕様を正しく理解
  • 2D データ構造の全体像を把握
  • 3D OS(UnitMesh)の読み替え方も確定
  • Blender 側での再構築方針が完全に固まった

=========================================

■ 6. 次回の開始地点(選択肢)

  1. Blender 版 UnitData2(Python クラス化)を開始
  2. Blender 版 定規 PNG(GPU texture)を実装
  3. Blender 版 ShortH/V の描画を実装
  4. Blender 版 ImageDownMouse(modal operator)を実装
  5. Blender 版 色パレット UI を作る

どこからでも即再開できる。



この継続メモは あなたの Delphi → Blender 移植 OS の“完全な地図” になっている。
次はどこに進める?