pagespaceの設定について

dxfファイルにおける paperspace と modelspace について

ezdxfにおける"paperspace"と"modelspace"は、DXF(Drawing Exchange Format)ファイル内における表示単位である.図面のモデル、レイアウト、ビューを管理するために使用される.以下にそれぞれの領域の違いを説明する.

  1. Modelspace(モデルスペース):

    • モデルスペースは実際の図面データを含む主要な描画領域である。

    • 2Dまたは3Dの図面データ、線、円、ポリライン、テキストなどのCADエンティティがモデルスペース内に配置される。

    • 図面の実際のコンテンツや設計要素はモデルスペースに配置され、CADプロジェクトの基盤となる。

  2. Paperspace(ペーパースペース):

    • ペーパースペースは、図面を印刷またはプレビューするためのレイアウトおよびビューを管理する領域である。

    • ペーパースペースには、ビューポートと呼ばれる矩形の表示領域が含まれます。これらのビューポートはモデルスペース内の特定の部分を表示する

    • ペーパースペース内でテキスト、寸法、表題ブロックなどの図面の注釈やレイアウトを配置する。

    • ペーパースペースを使用して、図面全体を印刷可能な形式に整理し、印刷設定を管理できる。

モデルスペースは実際のCADデータを保持し、ペーパースペースは印刷や表示のためにそのデータを整理するためのレイアウト領域を提供する。この2つの領域を適切に管理することによって、CAD図面をプロフェッショナルに設計し、出力できる。 (generated by chatGPT, supervised by K.N.)

基本サンプル

基本のサンプルプログラムを掲載する.

pagespace の基本プログラム
import sys
import ezdxf

# -- コーディング用設定 -- #
w_, h_    = 0, 1

# -- パラメータ設定 -- #
a4_width  = 210
a4_height = 297
radius    = 60
size      = ( a4_width, a4_height )
center    = ( 0.4*a4_width, 0.6*a4_height )

# -- 出力ファイル名 -- #
outFile   = "dxf/pagespace_sample.dxf"

# -- 新しい.dxfファイルを作成 -- #
doc       = ezdxf.new()
msp       = doc.modelspace()

# -- model を描く(modelspaceへ) -- #
msp.add_circle( center=center, radius=radius )

# -- Layout を設定 ( page_setupが肝要 ) -- #
lo      = doc.layout()
sp      = lo.page_setup( size=size, margins=(0,0,0,0) )
vp      = lo.add_viewport( center=center, view_center_point=center, \
                           size=size, view_height=size[h_] )

# -- .dxf ファイルとして保存 -- #
doc.saveas( outFile )
print( "[pagespace_sample.py] outFile :: {} ".format( outFile ) )

paperspace使おうと思ってたけど、困難で挫折した件

  • paperspaceのextminやextmaxの取得がわからない

    • viewportの設定を、"Layout1"で拾おうとすると、なかなかうまくいかない.

    • 全体のviewportと、viewportで指定したviewportの2つがあって、"Layout1"から拾うようにすると全体のやつを拾ってきて、思うように情報取得できない.

    • doc.entities()を取得すると、viewportエンティティが2つある.

    • entities[-1] などで、指定して、.dxf.all_existing_dxf_attribs()をすると、描画エリアの情報が設定されていたりする.

    • viewportを探すのに苦労する.