mirror of
https://github.com/storytold/cadcraft.git
synced 2026-11-09 20:10:12 -06:00
A damaged DWG opens partially since #859 and the drawing's read notes say how many object records were left out. OPEN echoes them and MCP `open` returns them as `warnings`, but `cadcraft-cli info` and `convert` stayed silent: a corpus round trip wrote thousands of skipped records away without a word. - convert: each read note goes to stderr as `IN: <note>`, next to the skipped-records warning (#872). The exit code stays 0. - drawing.inspect (and so info, MCP inspect_drawing and the control channel): new field `readNotes`, next to `skipped`. Existing fields are unchanged. - run already prints OPEN's notes with the session log. - README and docs/control-protocol.md say where the notes appear. Part of #1039. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
24 lines
824 B
Rust
24 lines
824 B
Rust
use super::args::ConvertArgs;
|
|
use super::error::Result;
|
|
use super::output::{Streams, export_framed, export_window, read_note_messages, skipped_message, undrawn_message};
|
|
use super::{open, unicode};
|
|
use cadcraft_engine::Session;
|
|
|
|
pub(crate) fn convert(a: &ConvertArgs, io: &mut Streams) -> Result {
|
|
let i = unicode(&a.input)?;
|
|
let framing = a.framing.framing();
|
|
let mut s = Session::empty();
|
|
open(&mut s, &a.input)?;
|
|
let d = s.doc()?;
|
|
for m in read_note_messages(d, i).into_iter().chain(skipped_message(d, i)) {
|
|
io.errln(format_args!("{m}"));
|
|
}
|
|
if cadcraft_io::is_image(&a.output)
|
|
&& let Some(m) = undrawn_message(s.doc()?, i)
|
|
{
|
|
io.errln(format_args!("{m}"));
|
|
}
|
|
let window = export_window(&s, framing, None)?;
|
|
export_framed(&s, &a.output, window, io)
|
|
}
|