Entity: rozvinout bloky, doplnit elipsy a hlásit, co program neumí

Switch v Replay neměl default větev: INSERT, ELLIPSE, POINT, SOLID, 3DFACE
a POLYLINE3D propadly bez akce a bez záznamu. V dodávaných souborech žádná
z nich není, ale uživatel si přidává vlastní loga – to nejhorší, co se mu může
stát, je logo, které se nevykreslí a nikdo mu to neřekne.

- INSERT se rozvine rekurzivně (vztažný bod, měřítko os, natočení), s ochranou
  proti bloku vkládajícímu sám sebe. Uvnitř bloku se hladina „0" a barva
  ByBlock berou od vkládající entity – proto jde stejný blok vložit dvakrát
  a pokaždé v jiné barvě.
- TransformRenderer umí celou afinní transformaci, ne jen měřítko a posun.
  Oblouk zůstane obloukem jen u podobnosti bez zrcadlení; jinak by z kružnice
  byla elipsa, kterou kreslicí rozhraní nezná, tak se rozloží na lomenou čáru.
- ELLIPSE, POINT, SOLID, 3DFACE, POLYLINE3D se kreslí. U SOLID pozor na
  prohozený 3. a 4. roh, jinak vyjdou přesýpací hodiny.
- Zbytek se počítá do DxfTemplate.NezpracovaneEntity a souhrn exportu (PDF
  i DXF) ho vypíše. Export se kvůli tomu nezastaví.
- Spline se dělí podle délky (dřív pevných 64 dílků – málo pro dlouhé křivky,
  zbytečně moc pro krátké).
- Verze výstupního DXF se zafixovala na AC1027 (jako zdrojová šablona). Dřív ji
  určoval default ACadSharp, který může upgrade balíčku tiše změnit.

Šablona i všech 9 log projdou s prázdným počítadlem (test). Render log do PNG
je pixel po pixelu shodný s předchozím stavem. 114 testů zelených.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-07 14:46:02 +02:00
co-authored by Claude Opus 5
parent 001afc2d81
commit a900acc7bb
8 changed files with 548 additions and 45 deletions
+9
View File
@@ -87,6 +87,15 @@ public class DxfBarvyRoundTripTesty : IDisposable
}
}
[Fact]
public void VerzeVystupuJeZafixovana()
{
// Bez explicitního nastavení určí verzi výchozí hodnota ACadSharp a tu může upgrade
// balíčku tiše změnit. Verze rozhoduje, čím půjde výkres u kolegy otevřít.
var doc = Kolecko();
Assert.Equal(DxfProfileRenderer.VerzeVystupu, doc.Header.Version);
}
[Fact]
public void RamecekNoPrintZustaneNetisknutelny()
{