mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-19 06:39:13 +00:00
improved send function logic to make there be 1 function only
This commit is contained in:
@@ -36,8 +36,6 @@ class WebNamespace(socketio.AsyncNamespace):
|
|||||||
print(f"Web client disconnected: {sid}")
|
print(f"Web client disconnected: {sid}")
|
||||||
|
|
||||||
async def on_web_operator(self, sid, data):
|
async def on_web_operator(self, sid, data):
|
||||||
print(f"Web client {sid} operator: {data}")
|
|
||||||
# TODO: need to add event listeners in blenderbim side for event web_operator
|
|
||||||
await sio.emit("web_operator", data["operator"], namespace="/blender", room=data["blenderId"])
|
await sio.emit("web_operator", data["operator"], namespace="/blender", room=data["blenderId"])
|
||||||
|
|
||||||
|
|
||||||
@@ -59,13 +57,13 @@ class BlenderNamespace(socketio.AsyncNamespace):
|
|||||||
del blender_messages[sid]
|
del blender_messages[sid]
|
||||||
await sio.emit("blender_disconnect", sid, namespace="/web")
|
await sio.emit("blender_disconnect", sid, namespace="/web")
|
||||||
|
|
||||||
async def on_default_data(self, sid, data):
|
async def on_data(self, sid, data):
|
||||||
print(f"Default data from Blender client {sid}: {data}")
|
print(f"Data from Blender client {sid}")
|
||||||
# blender_messages[sid]["default_data"] = data
|
# blender_messages[sid]["default_data"] = data
|
||||||
# await sio.emit("default_data", {"blenderId": sid, "data": data}, namespace="/web")
|
# await sio.emit("default_data", {"blenderId": sid, "data": data}, namespace="/web")
|
||||||
|
|
||||||
async def on_csv_data(self, sid, data):
|
async def on_csv_data(self, sid, data):
|
||||||
print(f"CSV data from Blender client {sid}:")
|
print(f"CSV data from Blender client {sid}")
|
||||||
# Store the message and forward it to the web client
|
# Store the message and forward it to the web client
|
||||||
blender_messages[sid]["csv_data"] = data
|
blender_messages[sid]["csv_data"] = data
|
||||||
await sio.emit("csv_data", {"blenderId": sid, "data": data}, namespace="/web")
|
await sio.emit("csv_data", {"blenderId": sid, "data": data}, namespace="/web")
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ def refresh_ui_data():
|
|||||||
|
|
||||||
bpy.context.scene.DocProperties.should_draw_decorations = bpy.context.scene.DocProperties.should_draw_decorations
|
bpy.context.scene.DocProperties.should_draw_decorations = bpy.context.scene.DocProperties.should_draw_decorations
|
||||||
if bpy.context.scene.WebProperties.is_connected:
|
if bpy.context.scene.WebProperties.is_connected:
|
||||||
tool.Web.send_default_webui_data()
|
tool.Web.send_webui_data()
|
||||||
|
|
||||||
|
|
||||||
@persistent
|
@persistent
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ class ExportIfcCsv(bpy.types.Operator):
|
|||||||
schedule_creator = scheduler.Scheduler()
|
schedule_creator = scheduler.Scheduler()
|
||||||
schedule_creator.schedule(self.filepath, tool.Drawing.get_path_with_ext(self.filepath, "svg"))
|
schedule_creator.schedule(self.filepath, tool.Drawing.get_path_with_ext(self.filepath, "svg"))
|
||||||
if props.format == "web":
|
if props.format == "web":
|
||||||
tool.Web.send_webui_data(ifc_csv.dataframe.to_csv(index=False), event="csv_data")
|
tool.Web.send_webui_data(extra_data=ifc_csv.dataframe.to_csv(index=False), event="csv_data")
|
||||||
self.report({"INFO"}, f"Data is exported to {props.format.upper()}.")
|
self.report({"INFO"}, f"Data is exported to {props.format.upper()}.")
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ class Web(blenderbim.core.tool.Web):
|
|||||||
ws_thread.run_coro(cls.sio_connect(ws_url))
|
ws_thread.run_coro(cls.sio_connect(ws_url))
|
||||||
cls.set_is_connected(True)
|
cls.set_is_connected(True)
|
||||||
bpy.app.timers.register(cls.check_operator_queue)
|
bpy.app.timers.register(cls.check_operator_queue)
|
||||||
cls.send_default_webui_data()
|
cls.send_webui_data()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def disconnect_websocket_server(cls):
|
def disconnect_websocket_server(cls):
|
||||||
@@ -118,19 +118,18 @@ class Web(blenderbim.core.tool.Web):
|
|||||||
print("Websocket server terminated successfully")
|
print("Websocket server terminated successfully")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def send_default_webui_data(cls, event="default_data", namespace="/blender"):
|
def send_webui_data(cls, extra_data=None, event="data", namespace="/blender", use_web_data=True):
|
||||||
if not WebData.is_loaded:
|
|
||||||
WebData.load()
|
|
||||||
cls.send_webui_data(WebData.data, event=event, namespace=namespace)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def send_webui_data(cls, data, event="data", namespace="/blender"):
|
|
||||||
global ws_thread
|
global ws_thread
|
||||||
# TODO: find a better way to include ifc_filename with the csv data
|
data = {}
|
||||||
data = {
|
|
||||||
"IFC_File": bpy.context.scene.BIMProperties.ifc_file,
|
if use_web_data:
|
||||||
"data": data,
|
if not WebData.is_loaded:
|
||||||
}
|
WebData.load()
|
||||||
|
data = WebData.data
|
||||||
|
|
||||||
|
if extra_data is not None:
|
||||||
|
data["data"] = extra_data
|
||||||
|
|
||||||
if ws_thread is not None and bpy.context.scene.WebProperties.is_connected:
|
if ws_thread is not None and bpy.context.scene.WebProperties.is_connected:
|
||||||
ws_thread.run_coro(cls.sio_send(data, event, namespace))
|
ws_thread.run_coro(cls.sio_send(data, event, namespace))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user