Point clouds: drawn from their scans, placed, cropped and attached as the reference does

Scans (.rcs) and projects (.rcp) are read and their points drawn as
screen-sized dots, coloured by the cloud's stylization. The cloud's
placement carries its scale and rotation; its extents and crops stay in
the scan's coordinates. A missing scan shows the extents with the saved
path. -POINTCLOUDATTACH / POINTCLOUDATTACH, POINTCLOUDCROP and the
POINTCLOUD* settings follow the reference's prompts and messages, the
Properties list is the reference's, and a locked cloud is left alone by
edits.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
ramox81andClaude Opus 5.5 committed 2026-09-29 17:08:46 +03:00
1 parent 07f25f4bca
commit e9c4e501db
58 files changed
+2711 -237

No files matched your search

+13
View File
@@ -1572,6 +1572,13 @@ pub enum CmdResult {
OpenPdfImportSettings,
/// Import a page of a file (PDFIMPORT File); ends the command.
PdfImportFile(crate::modules::insert::pdf_import::PdfFileImport),
/// Attach a point cloud: the host creates or reuses its definition,
/// commits the cloud in one undo step, then ends the command. The
/// message is the last prompt's echo.
AttachPointCloud {
placement: crate::modules::insert::pc_attach::PointCloudPlacement,
message: String,
},
/// Attach PDF pages: each page's underlay with its file (as stored) and
/// page; the host creates or reuses the definitions and commits them all
/// in one undo step, then ends the command.
@@ -2843,6 +2850,12 @@ pub trait CadCommand: Send {
false
}
/// The command moves, turns or resizes what it gathers: the host drops
/// locked point clouds from each completed selection and says so.
fn selection_drops_locked_point_clouds(&self) -> bool {
false
}
/// Before each input the host says which block references carry a clip
/// boundary.
fn inject_clipped(&mut self, _clipped: &dyn Fn(Handle) -> bool) {}