首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ezdxf更改页面设置

用ezdxf更改页面设置
EN

Stack Overflow用户
提问于 2022-09-25 10:09:32
回答 1查看 76关注 0票数 1

我想用ezdxf更改布局的属性。有一个名为page_setup的函数,但它在我的例子中不起作用。这是一个从API创建的最小示例。我的方法有什么问题?

代码语言:javascript
复制
import ezdxf

# Create a new DXF document.
doc = ezdxf.new(dxfversion="R2010", setup=True)
doc.units = ezdxf.units.M

# Create new table entries (layers, linetypes, text styles, ...).
doc.layers.add("TEXTLAYER", color=0)

# DXF entities (LINE, TEXT, ...) reside in a layout (modelspace,
# paperspace layout or block definition).
msp = doc.modelspace()

# Add entities to a layout by factory methods: layout.add_...()
msp.add_line((0, 0), (20, 0), dxfattribs={"color": 0})
msp.add_text(
    "Test",
    dxfattribs={
        "layer": "TEXTLAYER"
    }).set_pos((0, 0.2), align="CENTER") #halign, valign

# Create Layout
psp = doc.layout("Layout1")
psp.page_setup(size=(297, 210),
            margins=(0, 0, 0, 0),
            units="mm", offset=(0, 0),
            rotation=0, scale=16,
            name="ezdxf ",
            device="DWG to PDF.pc3")

a4_x = 21
a4_y = 29.7

a4_x = a4_x * 0.01
a4_y = a4_y * 0.01

# Add viewport
psp.add_viewport(
    center=(a4_x*(0.5),a4_y*(0.5)),
    size=(a4_x,a4_y),
    view_center_point=(0,0),
    view_height=100)

# Needs to be done twice for some reason
psp.add_viewport(
    center=(a4_x*(0.5),a4_y*(0.5)),
    size=(a4_x,a4_y),
    view_center_point=(0,0),
    view_height=100)

# Save as File
doc.saveas("test.dxf")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-26 05:02:11

我想你是从过时的文档中得到你的例子的。我重构了您的示例,以便它适用于最新版本的ezdxf

代码语言:javascript
复制
from typing import cast
import ezdxf
from ezdxf.layouts import Paperspace
from ezdxf.enums import TextEntityAlignment

doc = ezdxf.new(dxfversion="R2010", setup=True)
doc.units = ezdxf.units.M
doc.layers.add("TEXTLAYER", color=0)
msp = doc.modelspace()

msp.add_line((0, 0), (20, 0), dxfattribs={"color": 0})
msp.add_text("Test", dxfattribs={"layer": "TEXTLAYER"}).set_placement(
    (0, 0.2), align=TextEntityAlignment.CENTER
)

# get the existing (default) "Layout1":
psp = cast(Paperspace, doc.layout("Layout1"))
a4_width = 210
a4_height = 297

# reset page properties:
psp.page_setup(size=(a4_width, a4_height), margins=(0, 0, 0, 0))

# add a new viewport to the paperspace:
psp.add_viewport(
    # center of viewport in paperspace:
    center=(a4_width * 0.5, a4_height * 0.5),
    # size of the viewport in paperspace:
    size=(a4_width, a4_height),
    # Define the portion of the modelspace to show.
    # center in modelspace:
    view_center_point=(0, 0),
    # the view height to show in modelspace units:
    view_height=100,
    # The view width is proportional to the viewport size!
)
doc.saveas("test.dxf")

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73843656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档