import polars as pl
import numpy as np
from csv_importer.parsers import polars_df_to_bob
df = pl.DataFrame({
"Star": [
[58.2, 91.8, 0.0],
[58.1, 92.2, 0.0]
],
"Is_Visible": [True, False],
"Intensity": [10, 20],
})
bob = polars_df_to_bob(df, name="Test")
update_obj_from_csv
and update_bob_from_polars_df
from csv_importer.csv import load_csv
from csv_importer.parsers import update_obj_from_csv
from pathlib import Path
csv_path1 = Path("/Users/jan-hendrik/projects/blender_csv_import/docs/sample_datasets/data_california_housing.csv")
csv_path2 = Path("/Users/jan-hendrik/projects/blender_csv_import/docs/sample_datasets/data_gemeran_cities.csv")
bob = load_csv(csv_path1)
print(bob.name)
# out: CSV_data_california_housing
# Make changes to the CSV file using a text editor.
# Important note: The name of the Blender object won't change, only the underlying data.
update_obj_from_csv(bob, csv_path2)
import polars as pl
from csv_importer.parsers import polars_df_to_bob, update_bob_from_polars_df
# Create initial DataFrame with star coordinates
df1 = pl.DataFrame({
"Star": [
[58.2, 91.8, 0.0],
[58.1, 92.2, 0.0]
]
})
# Convert DataFrame to 'bob' object
bob = polars_df_to_bob(df1, name="Test")
# Create a second DataFrame with new star coordinates
df2 = pl.DataFrame({
"Star": [
[1.2, 1.8, 0.0],
[1.1, 1.2, 0.0]
]
})
# Update 'bob' object with new data from df2
update_bob_from_polars_df(bob, df2)
from csv_importer.csv import load_csv
from csv_importer.parsers import polars_df_to_bob
Loading CSV File:
>>> from csv_importer.csv import load_csv
>>> bob = load_csv("/Users/jan-hendrik/Desktop/data_california_housing.csv")
>>> bob
bpy.data.objects['CSV_data_california_housing']
Converting Polars DataFrame:
from io import StringIO
import polars as pl
from csv_importer.parsers import polars_df_to_bob
csv_data = StringIO(
"""FloatVal,IntVal,BoolVal,StringVal
1.23,10,true,Hello
4.56,20,false,World"""
)
df = pl.read_csv(csv_data)
bob = polars_df_to_bob(df, name="Test")
Rename the imported mesh from "ImportedMesh" to "CSV_filename"
Build with Blender 4.3.1, which resolved a python wheels naming issue https://projects.blender.org/blender/blender/issues/130561#issuecomment-1344427
Add drag'n'drop support based on https://docs.blender.org/api/current/bpy.types.FileHandler.html#filehandler-bpy-struct
Apply feedback from review:
Version 0.1.0 • Added a button “🐻❄️📥 CSV Import” in the World Properties tab. • Implemented CSV file import using the Polars library. • Automatically links the imported mesh to the current Blender collection.