Library: Format-Konvertierung beim Import (.dwg/.obj/.fbx/.dae/.stl/...)
User kann jetzt im Symbole-Tab Dateien in vielen Formaten waehlen — Rhino konvertiert automatisch nach .3dm via _-Import + File3dm.Write. library.py — convert_to_3dm_via_import(): - Snapshot der existierenden Object-IDs im aktiven Doc - User-Selection sichern - _-Import scripted ausfuehren → neue Objekte in Doc - Diff -> neue Objekte sammeln - BoundingBox.Min als Origin → in File3dm packen - f3.Write nach library/assets/<name>.3dm - Neue Objekte aus Doc wieder loeschen + User-Selection restoren - sticky 'dossier_library_import_busy' + 'dossier_swisstopo_busy' damit unsere Listener nichts cascaden waehrend Doc kurzzeitig die Importe haelt rhinopanel.py — _add_library_file(): - .3dm: copy_to_assets (wie bisher) - .dwg/.dxf/.obj/.fbx/.dae/.stl/.3ds/.skp/.iges/.step/.ply: konvertieren - Sonst LIBRARY_ERROR Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+19
-14
@@ -1224,20 +1224,28 @@ class EbenenBridge(panel_base.BaseBridge):
|
||||
path = dlg.FileName or ""
|
||||
if not path: return
|
||||
ext = (path.split(".")[-1] if "." in path else "").lower()
|
||||
if ext != "3dm":
|
||||
# TODO: konvertieren via temporaerer RhinoDoc-Import
|
||||
# Phase 1: nur .3dm direkt unterstuetzt
|
||||
print("[PROJECT-SETTINGS] Format '.{}' wird in dieser "
|
||||
"Version noch nicht konvertiert — bitte in Rhino "
|
||||
"oeffnen + als .3dm speichern".format(ext))
|
||||
import os
|
||||
base = os.path.basename(path)
|
||||
stem = os.path.splitext(base)[0]
|
||||
rel = None
|
||||
if ext == "3dm":
|
||||
# Direkt kopieren
|
||||
rel = library.copy_to_assets(path)
|
||||
elif ext in ("dwg", "dxf", "obj", "fbx", "dae",
|
||||
"stl", "3ds", "skp", "iges", "igs",
|
||||
"step", "stp", "ply"):
|
||||
# Konvertieren via Rhino-Import
|
||||
rel = library.convert_to_3dm_via_import(
|
||||
path, stem + "_" + variant)
|
||||
else:
|
||||
self.send("LIBRARY_ERROR", {
|
||||
"msg": "Format .{} noch nicht unterstuetzt. "
|
||||
"Konvertiere in Rhino zu .3dm.".format(ext),
|
||||
"msg": "Format .{} wird nicht unterstuetzt.".format(ext),
|
||||
})
|
||||
return
|
||||
rel = library.copy_to_assets(path)
|
||||
if not rel:
|
||||
print("[PROJECT-SETTINGS] copy_to_assets failed")
|
||||
print("[PROJECT-SETTINGS] add file failed")
|
||||
self.send("LIBRARY_ERROR", {
|
||||
"msg": "Konnte Datei nicht importieren — siehe Log."})
|
||||
return
|
||||
if target_id:
|
||||
# Bestehendes Item updaten
|
||||
@@ -1250,10 +1258,7 @@ class EbenenBridge(panel_base.BaseBridge):
|
||||
break
|
||||
library.save_manifest(m)
|
||||
else:
|
||||
# Neues Item
|
||||
import os
|
||||
base = os.path.basename(path)
|
||||
stem = os.path.splitext(base)[0]
|
||||
# Neues Item — stem aus dem Pfad oben bereits berechnet
|
||||
import uuid as _uuid
|
||||
new_id = "obj-" + _uuid.uuid4().hex[:10]
|
||||
item = {
|
||||
|
||||
Reference in New Issue
Block a user