fix(task-18): the headless Model plot is doc.modelspace(), not the current tab
EzdxfBackend.drawing_export_pdf routed layout=None / layout="Model" through _msp(), which follows the current tab, so with a sheet current the "Model" PDF was that sheet's paper-space content with no refusal — the same defect finding 3 named on COM, still live on the headless engine. Measured: circle in model space, 390x270 rectangle on an A3 sheet, sheet current — the Model row's /MediaBox was 176.1x121.9 mm (the rectangle) instead of 121.9x121.9 (the circle). The model target is now doc.modelspace() whichever tab is current, on both entry points. The test that vouched for this only asserted the row's shape (paper is None, true by construction). It is replaced by two tests that prove content: the Model row's mediabox with a sheet current equals the one with Model current and carries the circle's square aspect, and drawing_export_pdf(path) with no layout does the same. Both fail without the backend change. plot.py's docstring now says which engine does what. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FKFStjEFzpGyLq5bMpWxTd
This commit is contained in:
co-authored by
Claude Opus 5
parent
f6951e2597
commit
86c5d6ad65
@@ -1513,6 +1513,16 @@ class EzdxfBackend(AutoCADBackend):
|
||||
the geometry that viewport shows, and geometry outside the window is
|
||||
correctly left out. What is genuinely missing is the viewport *border*,
|
||||
which the headless renderer does not draw.
|
||||
|
||||
``layout=None`` and ``layout="Model"`` both mean model space, as the
|
||||
tool advertises and as the COM engine plots. This used to route them
|
||||
through ``_msp()``, which follows the *current* tab, so with a sheet
|
||||
current the "Model" PDF was that sheet's paper-space content — a wrong
|
||||
page with no refusal. Measured: circle in model space, 390 x 270
|
||||
rectangle on an A3 sheet, sheet current — the Model row's /MediaBox
|
||||
was 176.1 x 121.9 mm (the rectangle's aspect) instead of the circle's
|
||||
121.9 x 121.9. The target is now ``doc.modelspace()`` whichever tab
|
||||
is current.
|
||||
"""
|
||||
|
||||
def _sync():
|
||||
@@ -1523,7 +1533,7 @@ class EzdxfBackend(AutoCADBackend):
|
||||
return {"ok": False, "error": f"Layout not found: {layout}"}
|
||||
target = doc.layouts.get(resolved)
|
||||
else:
|
||||
target = self._msp()
|
||||
target = doc.modelspace()
|
||||
try:
|
||||
from ezdxf.addons.drawing import Frontend, RenderContext
|
||||
from ezdxf.addons.drawing.matplotlib import MatplotlibBackend
|
||||
|
||||
Reference in New Issue
Block a user