Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pyvista as pv | |
import tempfile | |
from stpyvista import stpyvista | |
import os | |
def delmodel(): | |
del st.session_state.fileuploader | |
def option_stl_1(): | |
"""π€ Upload a STL file""" | |
st.header("π€ β Upload a x3D STL file", anchor=False, divider="rainbow") | |
placeholder = st.empty() | |
" " | |
with placeholder: | |
uploadedFile = st.file_uploader( | |
"Upload a x3D file:", | |
["stl"], | |
accept_multiple_files=False, | |
key="fileuploader", | |
) | |
if uploadedFile: | |
st.info(f"Uploaded file size: {uploadedFile.size} bytes") | |
# Save to temporary file | |
with tempfile.NamedTemporaryFile(suffix=".stl", delete=False) as f: | |
f.write(uploadedFile.getbuffer()) | |
f.flush() | |
temp_file_path = f.name | |
try: | |
reader = pv.STLReader(temp_file_path) | |
mesh = reader.read() | |
st.info(f"Mesh points: {mesh.n_points}, Mesh cells: {mesh.n_cells}") | |
if mesh.n_points == 0: | |
st.error("The uploaded STL file is empty or invalid. Please upload a valid file.") | |
else: | |
plotter = pv.Plotter(border=False, window_size=[500, 400]) | |
plotter.background_color = "#f0f8ff" | |
plotter.add_mesh(mesh, color="orange", specular=0.5) | |
plotter.view_xz() | |
with placeholder.container(): | |
st.button("π Restart", "btn_rerender", on_click=delmodel) | |
stpyvista(plotter) | |
finally: | |
os.remove(temp_file_path) # Clean up the temp file | |
def option_stl_2(file_path): | |
st.header("π€ β Using embed exported file x3D", anchor=False, divider="rainbow") | |
placeholder = st.empty() | |
" " | |
if file_path: | |
if os.path.exists(file_path) and file_path.endswith(".stl"): | |
try: | |
reader = pv.STLReader(file_path) | |
mesh = reader.read() | |
st.info(f"Mesh points: {mesh.n_points}, Mesh cells: {mesh.n_cells}") | |
if mesh.n_points == 0: | |
st.error("The uploaded STL file is empty or invalid. Please upload a valid file.") | |
else: | |
plotter = pv.Plotter(border=False, window_size=[500, 400]) | |
plotter.background_color = "#f0f8ff" | |
plotter.add_mesh(mesh, color="orange", specular=0.5) | |
plotter.view_xz() | |
with placeholder.container(): | |
st.button("π Restart", "btn_rerender") | |
stpyvista(plotter) | |
finally: | |
st.info("Processing completed.") | |
else: | |
st.error("Invalid file path. Please ensure the file exists and is an STL file.") | |