导出文件
我们会导出多个可本地使用的文件。
网格 .parquet .csv
Section titled “网格 ”待补充。
接触面 .parquet .csv
Section titled “接触面 ”待补充。
报告 .json
Section titled “报告 ”待补充。
图表 .csv
Section titled “图表 ”该文件以 .csv
格式提供,包含用于绘制 3D 打印质量图表的数据。
以下示例展示如何使用该文件生成交互式 3D 质量图表:
-
确保已安装依赖
#!/bin/bashuv inituv add polars plotly -
导入依赖项
from typing import Listfrom dataclasses import dataclassimport plotly.graph_objects as goimport polars as pl -
加载图表数据并按
group
分组df = pl.read_csv("plot.csv")df = df.rename({"meshIndex": "mesh_index"}) # 使用 snake case 更方便grouped_df = df.group_by("group") -
编写函数生成对应颜色
@dataclassclass Color:r: floatg: floatb: floatdef 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 + 1return Color(r=0, g=round(t * 255), b=round((1 - t) * 255))else:t = clamped_valuereturn Color(r=round(t * 255), g=round((1 - t) * 255), b=0) -
遍历数据并为图表生成线条
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) -
绘制图表
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() -
浏览器将自动打开,展示图表