forked from 1b-agent/opencadstudio-upstream
ocs_doc_api: Phase 4 set_view + viewport-view query
- SetViewportView op + GetViewportView query (append-only). - backend set_viewport_view (update Viewport.view_target/view_height) + viewport_view. - facade Entity::set_view/viewport_view (Viewport returns Entity). - spec Viewport methods; api_reference + binding_schema regenerated; mocks + baseline. - Test phase4_set_view_and_view_query -> 609 host lib + 3 consistency green. - Phase 4 complete.
This commit is contained in:
1 parent
67655add72
commit
e6c132e0eb
15 files changed
+187
-7
No files matched your search
@@ -309,6 +309,18 @@ impl Entity {
|
||||
self.session.apply_op(Operation::SetAttribute { id: self.id, tag: tag.to_string(), value: value.to_string() })?;
|
||||
Ok(())
|
||||
}
|
||||
/// This viewport's view (target WCS + zoom height). Viewport-only.
|
||||
pub fn viewport_view(&self) -> ApiResult<([f64; 3], f64)> {
|
||||
match self.session.one_query(Query::GetViewportView { id: self.id })? {
|
||||
QueryResult::ViewportView { target, height } => Ok((target, height)),
|
||||
_ => Err(ApiError::Transport("unexpected viewport-view result".into())),
|
||||
}
|
||||
}
|
||||
/// Retarget / re-zoom this viewport (one undo step). Viewport-only.
|
||||
pub fn set_view(&self, view_target: [f64; 3], view_height: f64) -> ApiResult<()> {
|
||||
self.session.apply_op(Operation::SetViewportView { id: self.id, view_target, view_height })?;
|
||||
Ok(())
|
||||
}
|
||||
pub fn as_solid(&self) -> Option<Solid> {
|
||||
// Typed downcast is validated by the view's kind.
|
||||
matches!(self.view().ok()?.kind.as_str(), "Solid3D").then(|| Solid::new(self.session.clone(), self.id))
|
||||
|
||||
Reference in new issue
Block a user