跳转到内容

导出文件

我们会导出多个可本地使用的文件。

网格 .parquet .csv

Section titled “网格 ”

待补充。

接触面 .parquet .csv

Section titled “接触面 ”

待补充。

待补充。

该文件以 .csv 格式提供,包含用于绘制 3D 打印质量图表的数据。

以下示例展示如何使用该文件生成交互式 3D 质量图表:

  1. 确保已安装依赖

    #!/bin/bash
    uv init
    uv add polars plotly
  2. 导入依赖项

    from typing import List
    from dataclasses import dataclass
    import plotly.graph_objects as go
    import polars as pl
  3. 加载图表数据并按 group 分组

    df = pl.read_csv("plot.csv")
    df = df.rename({"meshIndex": "mesh_index"}) # 使用 snake case 更方便
    grouped_df = df.group_by("group")
  4. 编写函数生成对应颜色

    @dataclass
    class Color:
    r: float
    g: float
    b: float
    def get_gradient_rgb(raw_value: float | None) -> Color:
    if raw_value == None:
    return Color(r=0, g=0, b=0)
    clamped_value = max(-1, min(1, raw_value))
    if clamped_value <= 0:
    t = clamped_value + 1
    return Color(r=0, g=round(t * 255), b=round((1 - t) * 255))
    else:
    t = clamped_value
    return Color(r=round(t * 255), g=round((1 - t) * 255), b=0)
  5. 遍历数据并为图表生成线条

    lines: List[go.Scatter3d] = []
    for group_id, group_data in grouped_df:
    shifted_group_data = group_data.shift(-1)
    for previous_row, row in zip(group_data.iter_rows(named=True), shifted_group_data.iter_rows(named=True)):
    color = get_gradient_rgb(previous_row["quality"])
    line = go.Scatter3d(
    x=[previous_row["x"], row["x"]],
    y=[previous_row["y"], row["y"]],
    z=[previous_row["z"], row["z"]],
    mode="lines",
    line=dict(color=f"rgb({color.r},{color.g},{color.b})", width=5),
    )
    lines.append(line)
  6. 绘制图表

    layout = go.Layout(
    scene=dict(
    xaxis_title="X 轴",
    yaxis_title="Y 轴",
    zaxis_title="Z 轴",
    aspectmode="data"
    ),
    showlegend=False
    )
    fig = go.Figure(data=lines, layout=layout)
    fig.show()
  7. 浏览器将自动打开,展示图表