model_edit.py 938 B

12345678910111213141516171819202122232425262728
  1. """模型部件重命名:按查看器标签定位 GLB 节点并写回文件。"""
  2. from typing import Any
  3. from fastapi import APIRouter, HTTPException
  4. from pydantic import BaseModel, Field
  5. from services import model_edit_service
  6. router = APIRouter()
  7. class RenamePartInput(BaseModel):
  8. model: str = Field(min_length=1)
  9. label: str = Field(min_length=1)
  10. new_name: str = Field(min_length=1, max_length=100)
  11. @router.post("/api/models/rename-part")
  12. def rename_part(payload: RenamePartInput) -> dict[str, Any]:
  13. try:
  14. return model_edit_service.rename_part(payload.model, payload.label, payload.new_name)
  15. except FileNotFoundError as exc:
  16. raise HTTPException(status_code=404, detail=str(exc)) from exc
  17. except LookupError as exc:
  18. raise HTTPException(status_code=409, detail=str(exc)) from exc
  19. except ValueError as exc:
  20. raise HTTPException(status_code=400, detail=str(exc)) from exc