73 lines
1.9 KiB
Python
73 lines
1.9 KiB
Python
from pathlib import Path
|
|
import shutil
|
|
import bpy
|
|
|
|
|
|
def copy_to_dir(source_path, dir_path, new_name=None, exist_ok=True):
|
|
source = Path(source_path)
|
|
target = Path(dir_path)
|
|
|
|
# Check if the source exists
|
|
if not source.exists():
|
|
raise FileNotFoundError
|
|
|
|
# Check if the target exists
|
|
if not target.exists():
|
|
target.mkdir(parents=True, exist_ok=True)
|
|
|
|
target_path = target / new_name if new_name else target / source.name
|
|
# If source is a file, copy it to the target directory
|
|
if source.is_file():
|
|
try:
|
|
shutil.copy(source, target_path)
|
|
except shutil.SameFileError:
|
|
if exist_ok:
|
|
pass
|
|
else:
|
|
raise shutil.SameFileError
|
|
# If source is a directory, copy its contents to the target directory
|
|
elif source.is_dir():
|
|
shutil.copytree(source, target_path, dirs_exist_ok=exist_ok)
|
|
|
|
if not target_path.exists():
|
|
raise Exception
|
|
|
|
|
|
def select_object(target_obj):
|
|
for obj in bpy.data.objects:
|
|
obj.select_set(False)
|
|
|
|
target_obj.select_set(True)
|
|
bpy.context.view_layer.objects.active = target_obj
|
|
|
|
|
|
def progress_bar(self, context):
|
|
row = self.layout.row()
|
|
row.progress(
|
|
factor=context.window_manager.bioxelnodes_progress_factor,
|
|
type="BAR",
|
|
text=context.window_manager.bioxelnodes_progress_text
|
|
)
|
|
row.scale_x = 2
|
|
|
|
|
|
def progress_update(context, factor, text=""):
|
|
context.window_manager.bioxelnodes_progress_factor = factor
|
|
context.window_manager.bioxelnodes_progress_text = text
|
|
|
|
|
|
def get_preferences():
|
|
return bpy.context.preferences.addons[__package__].preferences
|
|
|
|
|
|
def get_cache_dir():
|
|
preferences = get_preferences()
|
|
cache_path = Path(preferences.cache_dir, 'VDBs')
|
|
cache_path.mkdir(parents=True, exist_ok=True)
|
|
return str(cache_path)
|
|
|
|
|
|
def get_use_link():
|
|
preferences = get_preferences()
|
|
return preferences.node_import_method == "LINK"
|