pagespaceの設定について¶
dxfファイルにおける paperspace と modelspace について¶
ezdxfにおける"paperspace"と"modelspace"は、DXF(Drawing Exchange Format)ファイル内における表示単位である.図面のモデル、レイアウト、ビューを管理するために使用される.以下にそれぞれの領域の違いを説明する.
Modelspace(モデルスペース):
モデルスペースは実際の図面データを含む主要な描画領域である。
2Dまたは3Dの図面データ、線、円、ポリライン、テキストなどのCADエンティティがモデルスペース内に配置される。
図面の実際のコンテンツや設計要素はモデルスペースに配置され、CADプロジェクトの基盤となる。
Paperspace(ペーパースペース):
ペーパースペースは、図面を印刷またはプレビューするためのレイアウトおよびビューを管理する領域である。
ペーパースペースには、ビューポートと呼ばれる矩形の表示領域が含まれます。これらのビューポートはモデルスペース内の特定の部分を表示する
ペーパースペース内でテキスト、寸法、表題ブロックなどの図面の注釈やレイアウトを配置する。
ペーパースペースを使用して、図面全体を印刷可能な形式に整理し、印刷設定を管理できる。
モデルスペースは実際のCADデータを保持し、ペーパースペースは印刷や表示のためにそのデータを整理するためのレイアウト領域を提供する。この2つの領域を適切に管理することによって、CAD図面をプロフェッショナルに設計し、出力できる。 (generated by chatGPT, supervised by K.N.)
基本サンプル¶
基本のサンプルプログラムを掲載する.
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を探すのに苦労する.