mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +00:00
Skip pyradiance import if it fails #6633
This commit is contained in:
@@ -24,7 +24,21 @@ from pathlib import Path
|
||||
|
||||
import importlib
|
||||
import importlib.util
|
||||
import pyradiance
|
||||
import traceback
|
||||
|
||||
# There are unresolved problems with pyradiance import that we couldn't narrow down.
|
||||
# So import is optional not to make it a showstopper for random users,
|
||||
# who don't even need pyradiance.
|
||||
# See #6633.
|
||||
try:
|
||||
import pyradiance
|
||||
except ImportError as e:
|
||||
print(traceback.format_exc())
|
||||
print(
|
||||
"PyRadiance is not available. Pyradiance Rendering functionality will be disabled. "
|
||||
"See above for more detailed import traceback."
|
||||
)
|
||||
pyradiance = None
|
||||
|
||||
|
||||
def get_pyradiance_path():
|
||||
@@ -58,12 +72,14 @@ classes = (
|
||||
def register():
|
||||
bpy.types.Scene.BIMRadianceExporeterProperies = bpy.props.PointerProperty(type=prop.RadianceExporterProperties)
|
||||
bpy.types.Scene.BIMSolarProperties = bpy.props.PointerProperty(type=prop.BIMSolarProperties)
|
||||
pyradiance_path = Path(get_pyradiance_path())
|
||||
bin_path = pyradiance_path / "bin"
|
||||
if bin_path.exists():
|
||||
for file in bin_path.iterdir():
|
||||
if file.is_file():
|
||||
file.chmod(file.stat().st_mode | stat.S_IEXEC)
|
||||
|
||||
if pyradiance:
|
||||
pyradiance_path = Path(get_pyradiance_path())
|
||||
bin_path = pyradiance_path / "bin"
|
||||
if bin_path.exists():
|
||||
for file in bin_path.iterdir():
|
||||
if file.is_file():
|
||||
file.chmod(file.stat().st_mode | stat.S_IEXEC)
|
||||
|
||||
|
||||
def unregister():
|
||||
|
||||
@@ -21,7 +21,6 @@ import os
|
||||
try:
|
||||
import pyradiance as pr
|
||||
except ImportError:
|
||||
print("PyRadiance is not available. Rendering functionality will be disabled.")
|
||||
pr = None
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
@@ -21,6 +21,11 @@ import bonsai.tool as tool
|
||||
from typing import TYPE_CHECKING
|
||||
from bonsai.bim.module.light.data import SolarData
|
||||
|
||||
try:
|
||||
import pyradiance
|
||||
except ImportError:
|
||||
pyradiance = None
|
||||
|
||||
|
||||
class BIM_PT_radiance_exporter(bpy.types.Panel):
|
||||
"""Creates a Panel in the render properties window"""
|
||||
@@ -38,6 +43,13 @@ class BIM_PT_radiance_exporter(bpy.types.Panel):
|
||||
layout = self.layout
|
||||
props = tool.Blender.get_radiance_exporter_props()
|
||||
|
||||
if pyradiance is None:
|
||||
box = layout.box()
|
||||
box.label(text="There was a problem importing Pyradiance", icon="ERROR")
|
||||
box.label(text="and it's functionality is not available.")
|
||||
box.label(text="See system console logs at Bonsai startup.")
|
||||
return
|
||||
|
||||
if tool.Ifc.get():
|
||||
row = self.layout.row()
|
||||
row.prop(props, "should_load_from_memory")
|
||||
|
||||
Reference in New Issue
Block a user