Library-Thumbnails: Auto-Capture + Base64-Preview in der UI
Beim Hinzufuegen oder Importieren eines Library-Items wird automatisch ein PNG-Thumbnail vom Item generiert (Top-View, 128x128) und in library/previews/<id>.png abgelegt. Frontend rendert die Previews als Base64-Data-URIs (sicher gegen WebKit-file://-Restriktionen). library.py: - _previews_dir(): legt previews/-Folder an - _preview_rel_for(asset_rel): predictable PNG-Pfad pro Item - _capture_thumbnail_of_objects(): hided andere Objekte temporaer, switcht auf Top-Parallel, ZoomBoundingBox, CaptureToBitmap → PNG, restored Viewport + Hidden-State - read_preview_data_uri(): liest PNG + encoded als data:image/png;base64 - Hook in convert_to_3dm_via_import (vor Cleanup) + save_selection_to_asset rhinopanel.py: - _enrich_library_items_with_previews(): haengt previewDataUri an jedes Item das ein preview-Feld hat - Initial-Params + _send_library + ElementeBridge._cmd_list_library liefern angereicherte Items - _add_library_file + _save_selection_as_library setzen preview-Pfad im Item wenn Thumbnail-Datei existiert Frontend: - SymbolPicker.ItemPreview: rendert <div backgroundImage> mit Base64-URI wenn vorhanden, sonst Icon-Fallback - ProjectSettingsDialog Symbole-Tab: List-Row + Detail-Identity zeigen Thumbnail (32px in Liste, 56px im Detail), Icon nur als Fallback Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+3
-2
@@ -8096,9 +8096,10 @@ class ElementeBridge(panel_base.BaseBridge):
|
||||
Library-Items + Handling von PICK (User waehlt Item → CREATE_SYMBOL
|
||||
im aktiven Doc) und CANCEL (Fenster schliessen)."""
|
||||
try:
|
||||
import library
|
||||
import library, rhinopanel
|
||||
manifest = library.load_manifest()
|
||||
items = manifest.get("items", [])
|
||||
items = rhinopanel._enrich_library_items_with_previews(
|
||||
manifest.get("items", []))
|
||||
except Exception as ex:
|
||||
print("[ELEMENTE] list library:", ex)
|
||||
items = []
|
||||
|
||||
Reference in New Issue
Block a user