mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-16 13:46:54 +00:00
BBIM 4D: Features to select a Work Schedule's assigned / unassigned products
This commit is contained in:
@@ -99,6 +99,8 @@ classes = (
|
|||||||
operator.RemoveWorkTime,
|
operator.RemoveWorkTime,
|
||||||
operator.SelectTaskRelatedProducts,
|
operator.SelectTaskRelatedProducts,
|
||||||
operator.SelectTaskRelatedInputs,
|
operator.SelectTaskRelatedInputs,
|
||||||
|
operator.SelectWorkScheduleProducts,
|
||||||
|
operator.SelectUnassignedWorkScheduleProducts,
|
||||||
operator.SetTaskSortColumn,
|
operator.SetTaskSortColumn,
|
||||||
operator.SetupDefaultTaskColumns,
|
operator.SetupDefaultTaskColumns,
|
||||||
operator.UnassignLagTime,
|
operator.UnassignLagTime,
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
import bpy
|
import bpy
|
||||||
import blenderbim.tool as tool
|
import blenderbim.tool as tool
|
||||||
import ifcopenshell
|
import ifcopenshell
|
||||||
|
from ifcopenshell.util.doc import get_predefined_type_doc
|
||||||
|
|
||||||
|
|
||||||
def refresh():
|
def refresh():
|
||||||
@@ -34,6 +35,7 @@ class SequenceData:
|
|||||||
@classmethod
|
@classmethod
|
||||||
def load(cls):
|
def load(cls):
|
||||||
cls.data = {
|
cls.data = {
|
||||||
|
"predefined_types": cls.get_work_schedule_types(),
|
||||||
"has_work_plans": cls.has_work_plans(),
|
"has_work_plans": cls.has_work_plans(),
|
||||||
"has_work_schedules": cls.has_work_schedules(),
|
"has_work_schedules": cls.has_work_schedules(),
|
||||||
"has_work_calendars": cls.has_work_calendars(),
|
"has_work_calendars": cls.has_work_calendars(),
|
||||||
@@ -223,6 +225,22 @@ class SequenceData:
|
|||||||
data["HasAssignmentsWorkCalendar"].append(rel.RelatingControl.id())
|
data["HasAssignmentsWorkCalendar"].append(rel.RelatingControl.id())
|
||||||
cls.data["tasks"][task.id()] = data
|
cls.data["tasks"][task.id()] = data
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_work_schedule_types(cls):
|
||||||
|
results = []
|
||||||
|
declaration = tool.Ifc().schema().declaration_by_name("IfcWorkSchedule")
|
||||||
|
version = tool.Ifc.get_schema()
|
||||||
|
for attribute in declaration.attributes():
|
||||||
|
if attribute.name() == "PredefinedType":
|
||||||
|
results.extend(
|
||||||
|
[
|
||||||
|
(e, e, get_predefined_type_doc(version, "IfcWorkSchedule", e))
|
||||||
|
for e in attribute.type_of_attribute().declared_type().enumeration_items()
|
||||||
|
]
|
||||||
|
)
|
||||||
|
break
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
class WorkPlansData:
|
class WorkPlansData:
|
||||||
data = {}
|
data = {}
|
||||||
|
|||||||
@@ -1327,3 +1327,31 @@ class HighlightTask(bpy.types.Operator):
|
|||||||
if isinstance(r, str):
|
if isinstance(r, str):
|
||||||
self.report({"WARNING"}, r)
|
self.report({"WARNING"}, r)
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
|
class SelectWorkScheduleProducts(bpy.types.Operator):
|
||||||
|
bl_idname = "bim.select_work_schedule_products"
|
||||||
|
bl_label = "Select Work Schedule Products"
|
||||||
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
|
work_schedule: bpy.props.IntProperty()
|
||||||
|
|
||||||
|
def execute(self, context):
|
||||||
|
r = core.select_work_schedule_products(
|
||||||
|
tool.Sequence, tool.Spatial, work_schedule=tool.Ifc.get().by_id(self.work_schedule)
|
||||||
|
)
|
||||||
|
if isinstance(r, str):
|
||||||
|
self.report({"WARNING"}, r)
|
||||||
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
|
class SelectUnassignedWorkScheduleProducts(bpy.types.Operator):
|
||||||
|
bl_idname = "bim.select_unassigned_work_schedule_products"
|
||||||
|
bl_label = "Select Unassigned Work Schedule Products"
|
||||||
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
|
work_schedule: bpy.props.IntProperty()
|
||||||
|
|
||||||
|
def execute(self, context):
|
||||||
|
r = core.select_unassigned_work_schedule_products(tool.Ifc, tool.Sequence, tool.Spatial)
|
||||||
|
if isinstance(r, str):
|
||||||
|
self.report({"WARNING"}, r)
|
||||||
|
return {"FINISHED"}
|
||||||
|
|||||||
@@ -228,6 +228,12 @@ def updateTaskDuration(self, context):
|
|||||||
bpy.ops.bim.load_task_properties()
|
bpy.ops.bim.load_task_properties()
|
||||||
|
|
||||||
|
|
||||||
|
def get_schedule_predefined_types(self, context):
|
||||||
|
if not SequenceData.is_loaded:
|
||||||
|
SequenceData.load()
|
||||||
|
return SequenceData.data["predefined_types"]
|
||||||
|
|
||||||
|
|
||||||
def update_visualisation_start(self, context):
|
def update_visualisation_start(self, context):
|
||||||
update_visualisation_start_finish(self, context, "visualisation_start")
|
update_visualisation_start_finish(self, context, "visualisation_start")
|
||||||
|
|
||||||
@@ -335,6 +341,9 @@ class ISODuration(PropertyGroup):
|
|||||||
|
|
||||||
|
|
||||||
class BIMWorkScheduleProperties(PropertyGroup):
|
class BIMWorkScheduleProperties(PropertyGroup):
|
||||||
|
work_schedule_predefined_types: EnumProperty(
|
||||||
|
items=get_schedule_predefined_types, name="Predefined Type", default=None
|
||||||
|
)
|
||||||
durations_attributes: CollectionProperty(name="Durations Attributes", type=ISODuration)
|
durations_attributes: CollectionProperty(name="Durations Attributes", type=ISODuration)
|
||||||
work_calendars: EnumProperty(items=getWorkCalendars, name="Work Calendars")
|
work_calendars: EnumProperty(items=getWorkCalendars, name="Work Calendars")
|
||||||
work_schedule_attributes: CollectionProperty(name="Work Schedule Attributes", type=Attribute)
|
work_schedule_attributes: CollectionProperty(name="Work Schedule Attributes", type=Attribute)
|
||||||
@@ -346,7 +355,7 @@ class BIMWorkScheduleProperties(PropertyGroup):
|
|||||||
active_task_id: IntProperty(name="Active Task Id")
|
active_task_id: IntProperty(name="Active Task Id")
|
||||||
task_attributes: CollectionProperty(name="Task Attributes", type=Attribute)
|
task_attributes: CollectionProperty(name="Task Attributes", type=Attribute)
|
||||||
should_show_visualisation_ui: BoolProperty(name="Should Show Visualisation UI", default=False)
|
should_show_visualisation_ui: BoolProperty(name="Should Show Visualisation UI", default=False)
|
||||||
should_show_bar_visual_option: BoolProperty(name="Should Show Settings UI", default=False)
|
should_show_bar_visual_option: BoolProperty(name="Add to task bar", default=False)
|
||||||
should_show_column_ui: BoolProperty(name="Should Show Column UI", default=False)
|
should_show_column_ui: BoolProperty(name="Should Show Column UI", default=False)
|
||||||
columns: CollectionProperty(name="Columns", type=Attribute)
|
columns: CollectionProperty(name="Columns", type=Attribute)
|
||||||
active_column_index: IntProperty(name="Active Column Index")
|
active_column_index: IntProperty(name="Active Column Index")
|
||||||
@@ -501,3 +510,4 @@ class BIMAnimationProperties(PropertyGroup):
|
|||||||
description="color picker",
|
description="color picker",
|
||||||
update=update_color_progress,
|
update=update_color_progress,
|
||||||
)
|
)
|
||||||
|
should_show_task_bar_options: BoolProperty(name="Show Task Bar Options", default=False)
|
||||||
|
|||||||
Reference in New Issue
Block a user