Skip to content

types

BaseGeometry

Bases: BaseType

基础几何类

Source code in dimine_python_sdk\models\types.py
57
58
59
60
61
62
63
64
65
class BaseGeometry(BaseType):
    """基础几何类"""
    model_config = {"arbitrary_types_allowed": True}
    id: Optional[str] = Field(default=None, description="对象id")
    file: Optional[str] = Field(default=None, description="所属文件id")
    layer: Optional[str] = Field(default=None, description="所在图层id")
    feature: Optional[str] = Field(default=None, description="所属要素名")
    color: List[int] = Field(default=[0,0,0], description="颜色")
    properties: List[PropertyValue] = Field(default_factory=list, description="点属性")

BaseType

Bases: BaseModel

基础类型

Source code in dimine_python_sdk\models\types.py
 9
10
11
class BaseType(BaseModel):
    """基础类型"""
    related: Optional[bool] = Field(default=False, description="表示此python端的对象是否关联到数采端对象,即修改数值后,会自动同步到数采端对象中")

FeatureInfo

Bases: BaseType

要素定义,也是一组属性的定义,比如:巷道要素,包含属性如名称、长度、宽度、高度等

Source code in dimine_python_sdk\models\types.py
50
51
52
53
class FeatureInfo(BaseType):
    """要素定义,也是一组属性的定义,比如:巷道要素,包含属性如名称、长度、宽度、高度等"""
    name: str = Field(description="要素名称", validation_alias="feature_name")
    properties: List[PropertyInfo] = Field(default_factory=list, description="要素属性", validation_alias="feature_define")

FileInfo

Bases: BaseType

数采文件信息

Source code in dimine_python_sdk\models\types.py
15
16
17
18
19
20
21
22
23
24
25
class FileInfo(BaseType):
    """数采文件信息"""
    id: str = Field(description="文件id")
    name: str = Field(description="文件名")


    async def close(self):
        """关闭文件"""
        from dimine_python_sdk.conn import open_client
        with open_client() as conn:
            await conn.close_file(file_id=self.id)

close() async

关闭文件

Source code in dimine_python_sdk\models\types.py
21
22
23
24
25
async def close(self):
    """关闭文件"""
    from dimine_python_sdk.conn import open_client
    with open_client() as conn:
        await conn.close_file(file_id=self.id)

LayerInfo

Bases: BaseType

图层信息

Source code in dimine_python_sdk\models\types.py
29
30
31
32
class LayerInfo(BaseType):
    """图层信息"""
    id: str = Field(description="图层id")
    name: str = Field(description="图层名称")

Line

Bases: BaseGeometry

线:表示一条直线或者多段线

Source code in dimine_python_sdk\models\types.py
88
89
90
91
92
93
94
95
96
97
98
99
class Line(BaseGeometry):
    """线:表示一条直线或者多段线"""
    type: Optional[Literal["line"]] = Field(default="line", description="线类型")
    geometry: np.ndarray = Field(default=np.array([]), description="线坐标, shape=(N,3)")


    @field_validator("geometry", mode="before")
    @classmethod
    def validate_geometry(cls, v):
        if isinstance(v, list): 
            return np.array(v).astype(np.float32)
        return v

Point

Bases: BaseGeometry

Source code in dimine_python_sdk\models\types.py
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
class Point(BaseGeometry):
    """点"""
    type: Optional[Literal["point"]] = Field(default="point", description="点类型")
    geometry: np.ndarray = Field(default=np.array([]), description="点坐标, shape=(3,)")


    @field_validator("geometry", mode="before")
    @classmethod
    def validate_geometry(cls, v):
        if isinstance(v, list): 
            return np.array(v).astype(np.float32)
        return v


    def to_dmdpoint(self) -> DmDPoint:
        if self.geometry.shape != (3,): 
            raise ValueError("geometry shape must be (3,)")
        return DmDPoint(x=self.geometry[0], y=self.geometry[1], z=self.geometry[2])

PropertyInfo

Bases: BaseType

属性定义信息:单个属性的定义,比如:属性名称、数据类型

Source code in dimine_python_sdk\models\types.py
35
36
37
38
class PropertyInfo(BaseType):
    """属性定义信息:单个属性的定义,比如:属性名称、数据类型"""
    name: str = Field(description="属性名称")
    type: Literal["long","string","int", "short"] = Field(description="数据类型")

PropertyValue

Bases: PropertyInfo

属性值信息

Source code in dimine_python_sdk\models\types.py
40
41
42
43
44
45
46
47
48
class PropertyValue(PropertyInfo):
    """属性值信息"""
    value: str|int|float|None = Field(default=None, description="属性值")

    def to_dict(self):
        return {
            "name": self.name,
            "value": self.value
        }

Shell

Bases: BaseGeometry

实体

Source code in dimine_python_sdk\models\types.py
124
125
126
127
class Shell(BaseGeometry):
    """实体"""
    type: Optional[Literal["shell"]] = Field(default="shell", description="体类型")
    geometry: TINGeometry = Field(default=None, description="三角网模型对象(TIN)")

TINGeometry

Bases: BaseType

三角网模型定义,

Source code in dimine_python_sdk\models\types.py
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
class TINGeometry(BaseType):
    """三角网模型定义,"""
    model_config = {"arbitrary_types_allowed": True}
    faces: np.ndarray = Field(default=np.array([]), description="三角面片:每行是三个顶点的索引,三个顶点连接起来形成一个三角面。shape=(N,3)")
    points: np.ndarray = Field(default=np.array([]), description="所有顶点坐标, shape=(N,3)")

    @field_validator("faces", mode="before")
    @classmethod
    def validate_faces(cls, v):
        if isinstance(v, list): 
            return np.array(v).astype(np.int32)
        return v

    @field_validator("points", mode="before")
    @classmethod
    def validate_points(cls, v):
        if isinstance(v, list): 
            return np.array(v).astype(np.float32)
        return v