Add target_view prop to camera

This property was already set in 50b41f5 but Blender property was missing. Though nowit's not very useful as it just writes value to pset.
This commit is contained in:
Andrej730
2025-04-22 15:43:26 +05:00
parent 8d31d93531
commit 932939099a
2 changed files with 58 additions and 17 deletions
+55 -17
View File
@@ -45,7 +45,7 @@ from bpy.props import (
CollectionProperty, CollectionProperty,
BoolVectorProperty, BoolVectorProperty,
) )
from typing import TYPE_CHECKING, Literal, Any from typing import TYPE_CHECKING, Literal, Any, Callable
diagram_scales_enum = [] diagram_scales_enum = []
@@ -218,14 +218,19 @@ def update_has_underlay(self: "BIMCameraProperties", context: bpy.types.Context)
bpy.ops.bim.activate_drawing_style() bpy.ops.bim.activate_drawing_style()
def get_update_layer_callback(
camera_prop_name: str, pset_prop_name: str
) -> Callable[["BIMCameraProperties", bpy.types.Context], None]:
def update_layer_callback(self: "BIMCameraProperties", context: bpy.types.Context) -> None:
update_layer(self, context, pset_prop_name, getattr(self, camera_prop_name))
return update_layer_callback
def update_has_linework(self: "BIMCameraProperties", context: bpy.types.Context) -> None: def update_has_linework(self: "BIMCameraProperties", context: bpy.types.Context) -> None:
update_layer(self, context, "HasLinework", self.has_linework) update_layer(self, context, "HasLinework", self.has_linework)
def update_has_annotation(self: "BIMCameraProperties", context: bpy.types.Context) -> None:
update_layer(self, context, "HasAnnotation", self.has_annotation)
def update_dpi(self: "BIMCameraProperties", context: bpy.types.Context) -> None: def update_dpi(self: "BIMCameraProperties", context: bpy.types.Context) -> None:
update_layer(self, context, "DPI", self.dpi) update_layer(self, context, "DPI", self.dpi)
@@ -243,6 +248,7 @@ def update_cut_mode(self: "BIMCameraProperties", context: bpy.types.Context) ->
def update_layer(self: "BIMCameraProperties", context: bpy.types.Context, name: str, value: Any) -> None: def update_layer(self: "BIMCameraProperties", context: bpy.types.Context, name: str, value: Any) -> None:
assert context.scene
if not self.update_props: if not self.update_props:
return return
if not context.scene.camera or context.scene.camera.data != self.id_data: if not context.scene.camera or context.scene.camera.data != self.id_data:
@@ -292,10 +298,24 @@ class Variable(PropertyGroup):
prop_key: StringProperty(name="Property Key") prop_key: StringProperty(name="Property Key")
TargetView = Literal["PLAN_VIEW", "ELEVATION_VIEW", "SECTION_VIEW", "REFLECTED_PLAN_VIEW", "MODEL_VIEW"]
TARGET_VIEW_ITEMS: list[tuple[TargetView, str, str]] = [
("PLAN_VIEW", "Plan", ""),
("ELEVATION_VIEW", "Elevation", ""),
("SECTION_VIEW", "Section", ""),
("REFLECTED_PLAN_VIEW", "RCP", ""),
("MODEL_VIEW", "Model", ""),
]
class Drawing(PropertyGroup): class Drawing(PropertyGroup):
ifc_definition_id: IntProperty(name="IFC Definition ID") ifc_definition_id: IntProperty(name="IFC Definition ID")
name: StringProperty(name="Name", update=update_drawing_name) name: StringProperty(name="Name", update=update_drawing_name)
target_view: StringProperty(name="Target View") target_view: EnumProperty(
name="Target View",
default="PLAN_VIEW",
items=TARGET_VIEW_ITEMS,
)
is_selected: BoolProperty(name="Is Selected", default=True) is_selected: BoolProperty(name="Is Selected", default=True)
is_drawing: BoolProperty(name="Is Drawing", default=False) is_drawing: BoolProperty(name="Is Drawing", default=False)
is_expanded: BoolProperty(name="Is Expanded", default=True) is_expanded: BoolProperty(name="Is Expanded", default=True)
@@ -303,7 +323,7 @@ class Drawing(PropertyGroup):
if TYPE_CHECKING: if TYPE_CHECKING:
ifc_definition_id: int ifc_definition_id: int
name: str name: str
target_view: str target_view: TargetView
is_selected: bool is_selected: bool
is_drawing: bool is_drawing: bool
is_expanded: bool is_expanded: bool
@@ -380,13 +400,7 @@ class DocProperties(PropertyGroup):
is_editing_schedules: BoolProperty(name="Is Editing Schedules", default=False) is_editing_schedules: BoolProperty(name="Is Editing Schedules", default=False)
is_editing_references: BoolProperty(name="Is Editing References", default=False) is_editing_references: BoolProperty(name="Is Editing References", default=False)
target_view: EnumProperty( target_view: EnumProperty(
items=[ items=TARGET_VIEW_ITEMS,
("PLAN_VIEW", "Plan", ""),
("ELEVATION_VIEW", "Elevation", ""),
("SECTION_VIEW", "Section", ""),
("REFLECTED_PLAN_VIEW", "RCP", ""),
("MODEL_VIEW", "Model", ""),
],
name="Target View", name="Target View",
default="PLAN_VIEW", default="PLAN_VIEW",
update=update_target_view, update=update_target_view,
@@ -507,9 +521,30 @@ class BIMCameraProperties(PropertyGroup):
name="Cut Mode", name="Cut Mode",
update=update_cut_mode, update=update_cut_mode,
) )
has_underlay: BoolProperty(name="Underlay", default=False, update=update_has_underlay)
has_linework: BoolProperty(name="Linework", default=True, update=update_has_linework) # EPset_Drawing.
has_annotation: BoolProperty(name="Annotation", default=True, update=update_has_annotation) has_underlay: BoolProperty(
name="Underlay",
default=False,
update=get_update_layer_callback("has_underlay", "HasUnderlay"),
)
has_linework: BoolProperty(
name="Linework",
default=True,
update=get_update_layer_callback("has_linework", "HasLinework"),
)
has_annotation: BoolProperty(
name="Annotation",
default=True,
update=get_update_layer_callback("has_annotation", "HasAnnotation"),
)
target_view: EnumProperty(
name="Target View",
default="PLAN_VIEW",
items=TARGET_VIEW_ITEMS,
update=get_update_layer_callback("target_view", "TargetView"),
)
representation: StringProperty(name="Representation") representation: StringProperty(name="Representation")
view_name: StringProperty(name="View Name") view_name: StringProperty(name="View Name")
diagram_scale: EnumProperty(items=get_diagram_scales, name="Drawing Scale", update=update_diagram_scale) diagram_scale: EnumProperty(items=get_diagram_scales, name="Drawing Scale", update=update_diagram_scale)
@@ -535,9 +570,12 @@ class BIMCameraProperties(PropertyGroup):
linework_mode: Literal["OPENCASCADE", "FREESTYLE"] linework_mode: Literal["OPENCASCADE", "FREESTYLE"]
fill_mode: Literal["NONE", "SHAPELY", "SVGFILL"] fill_mode: Literal["NONE", "SHAPELY", "SVGFILL"]
cut_mode: Literal["BISECT", "OPENCASCADE"] cut_mode: Literal["BISECT", "OPENCASCADE"]
has_underlay: bool has_underlay: bool
has_linework: bool has_linework: bool
has_annotation: bool has_annotation: bool
target_view: TargetView
representation: str representation: str
view_name: str view_name: str
diagram_scale: str diagram_scale: str
@@ -71,6 +71,9 @@ class BIM_PT_camera(Panel):
row.prop(props, "has_annotation", icon="MOD_EDGESPLIT") row.prop(props, "has_annotation", icon="MOD_EDGESPLIT")
row.prop(dprops, "should_use_annotation_cache", text="", icon="FILE_REFRESH") row.prop(dprops, "should_use_annotation_cache", text="", icon="FILE_REFRESH")
row = self.layout.row(align=True)
row.prop(props, "target_view")
row = self.layout.row() row = self.layout.row()
row.prop(props, "linework_mode") row.prop(props, "linework_mode")
if props.linework_mode == "OPENCASCADE": if props.linework_mode == "OPENCASCADE":