Skip to content

models

可视化配置模型 — Pydantic 参数模型

CameraAngle

Bases: BaseModel

相机角度定义

支持两种模式: 1. 预设模式:使用 preset 字段(top/bottom/north/south/east/west/isometric) 2. 自定义模式:使用 custom 字段提供 (position, focal_point, view_up) 三元组

两种模式必须且只能指定一种。

Source code in dimine_python_sdk\lib\visualization\models.py
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class CameraAngle(BaseModel):
    """相机角度定义

    支持两种模式:
    1. 预设模式:使用 preset 字段(top/bottom/north/south/east/west/isometric)
    2. 自定义模式:使用 custom 字段提供 (position, focal_point, view_up) 三元组

    两种模式必须且只能指定一种。
    """

    name: str = Field(description="角度名称,用于输出文件命名")
    preset: Optional[
        Literal["top", "bottom", "north", "south", "east", "west", "isometric"]
    ] = Field(default=None, description="预设相机角度名")
    custom: Optional[Tuple[
        Tuple[float, float, float],
        Tuple[float, float, float],
        Tuple[float, float, float],
    ]] = Field(default=None, description="自定义相机位置:(position, focal_point, view_up)")

    @model_validator(mode="after")
    def _validate_exactly_one_mode(self):
        has_preset = self.preset is not None
        has_custom = self.custom is not None
        if has_preset and has_custom:
            raise ValueError("preset 和 custom 不能同时指定,请只选择一种")
        if not has_preset and not has_custom:
            raise ValueError("必须指定 preset 或 custom 之一")
        return self

RenderOptions

Bases: BaseModel

渲染选项

Source code in dimine_python_sdk\lib\visualization\models.py
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class RenderOptions(BaseModel):
    """渲染选项"""

    width: int = Field(default=1024, gt=0, description="图像宽度(像素)")
    height: int = Field(default=768, gt=0, description="图像高度(像素)")
    dpi: int = Field(default=96, gt=0, description="分辨率(DPI)")
    background_color: str = Field(default="white", description="背景颜色(CSS 颜色名或十六进制)")
    show_edges: bool = Field(default=True, description="是否显示网格边线")
    edge_color: str = Field(default="black", description="边线颜色")
    edge_width: float = Field(default=1.0, ge=0, description="边线宽度")
    mesh_opacity: float = Field(default=1.0, ge=0.0, le=1.0, description="网格透明度")
    show_axes: bool = Field(default=False, description="是否显示坐标轴")
    show_grid: bool = Field(default=False, description="是否显示网格平面")
    lighting: bool = Field(default=True, description="是否启用光照")
    smooth_shading: bool = Field(default=True, description="是否启用平滑着色")

TinRenderConfig

Bases: BaseModel

TIN 渲染总配置

Source code in dimine_python_sdk\lib\visualization\models.py
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
class TinRenderConfig(BaseModel):
    """TIN 渲染总配置"""

    angles: List[CameraAngle] = Field(min_length=1, description="相机角度列表")
    mode: Literal["separate", "combined"] = Field(default="separate", description="渲染模式")
    render_options: RenderOptions = Field(default_factory=RenderOptions, description="渲染选项")
    layout: Optional[TinSubplotLayout] = Field(
        default=None,
        description="组合视图布局(仅 combined 模式有效,为空时自动生成 1×N 布局)",
    )
    colors: Optional[List[str]] = Field(
        default=None,
        description="网格颜色列表,与 geometries 一一对应。不指定时使用默认颜色",
    )
    labels: Optional[List[str]] = Field(
        default=None,
        description="网格标签列表,与 geometries 一一对应。用于图例显示",
    )
    show_legend: bool = Field(default=False, description="是否显示图例")

TinSubplotLayout

Bases: BaseModel

组合视图的子图布局

Source code in dimine_python_sdk\lib\visualization\models.py
56
57
58
59
60
61
62
63
64
65
class TinSubplotLayout(BaseModel):
    """组合视图的子图布局"""

    rows: int = Field(default=1, gt=0, description="子图行数")
    cols: int = Field(default=1, gt=0, description="子图列数")
    title: Optional[str] = Field(default=None, description="组合视图总标题")
    spacing: float = Field(default=0.1, ge=0.0, le=1.0, description="子图间距比例")
    border: bool = Field(default=False, description="是否显示子图边框")
    border_color: str = Field(default="black", description="子图边框颜色")
    border_width: float = Field(default=1.0, ge=0, description="子图边框宽度")