From 7dfbd0a23a8cab8853e7e28e67f374c09217f0d0 Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Fri, 13 Jun 2025 15:36:53 +0200 Subject: [PATCH 1/7] new data pointSet & edgedCurve --- src/tests/data/edged_curve.vtp | 20 ++++++++++++++++++++ src/tests/data/points.vtp | 19 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/tests/data/edged_curve.vtp create mode 100644 src/tests/data/points.vtp diff --git a/src/tests/data/edged_curve.vtp b/src/tests/data/edged_curve.vtp new file mode 100644 index 0000000..3a04efb --- /dev/null +++ b/src/tests/data/edged_curve.vtp @@ -0,0 +1,20 @@ + + + + + + 0.1 0.2 0.3 2.1 9.4 6.7 7.5 5.2 6.3 8.7 1.4 4.7 + + + 0.1 0.2 0.3 2.1 9.4 6.7 7.5 5.2 6.3 8.7 1.4 4.7 + + + 0 1 0 2 3 2 1 2 + + + 0 1 0 2 3 2 1 2 + 2 4 6 8 + + + + diff --git a/src/tests/data/points.vtp b/src/tests/data/points.vtp new file mode 100644 index 0000000..8962e6a --- /dev/null +++ b/src/tests/data/points.vtp @@ -0,0 +1,19 @@ + + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 + 0.5 1 2 20 2 12 1.5 19 12.3 39.1 1.5 7 1.5 39.1 8.5 37.5 38.2 11.1 17.8 35.5 15 13.9 15.1 17 25.9 14 17.5 22 25 25 15 29 20 27 28 22 1 0.5 21 19 1.5 27 1.3 17 29.5 38.7 2.1 25 1.2 37.8 30 38.1 37.7 26.8 17.5 36.2 31 14.2 14.9 29.5 26.5 15 29.5 21.2 23.4 35.5 14.5 28.7 33 26.3 25.7 34 + 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 + + + 0.5 1 2 20 2 12 1.5 19 12.3 39.1 1.5 7 1.5 39.1 8.5 37.5 38.2 11.1 17.8 35.5 15 13.9 15.1 17 25.9 14 17.5 22 25 25 15 29 20 27 28 22 1 0.5 21 19 1.5 27 1.3 17 29.5 38.7 2.1 25 1.2 37.8 30 38.1 37.7 26.8 17.5 36.2 31 14.2 14.9 29.5 26.5 15 29.5 21.2 23.4 35.5 14.5 28.7 33 26.3 25.7 34 + + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 + + + + From 090819579452b2c79512b726e634e35f7ebcf470 Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Fri, 13 Jun 2025 15:37:16 +0200 Subject: [PATCH 2/7] test points --- .../object/object_methods.py | 26 +++++++++++-- .../rpc/mesh/edges/mesh_edges_protocols.py | 10 ++--- .../rpc/mesh/edges/schemas/width.json | 18 +++++++++ .../rpc/mesh/mesh_protocols.py | 35 ++++++++++++++---- .../images/mesh/points/point_set_color.jpeg | Bin 0 -> 9588 bytes .../images/mesh/points/point_set_size.jpeg | Bin 0 -> 6280 bytes .../mesh/points/point_set_visibility.jpeg | Bin 0 -> 1072 bytes .../mesh/points/register_point_set.jpeg | Bin 0 -> 2582 bytes .../mesh/points/test_mesh_points_protocols.py | 32 ++++++++++++++++ 9 files changed, 104 insertions(+), 17 deletions(-) create mode 100644 src/opengeodeweb_viewer/rpc/mesh/edges/schemas/width.json create mode 100644 src/tests/data/images/mesh/points/point_set_color.jpeg create mode 100644 src/tests/data/images/mesh/points/point_set_size.jpeg create mode 100644 src/tests/data/images/mesh/points/point_set_visibility.jpeg create mode 100644 src/tests/data/images/mesh/points/register_point_set.jpeg diff --git a/src/opengeodeweb_viewer/object/object_methods.py b/src/opengeodeweb_viewer/object/object_methods.py index 2bc9c7c..4ccf96b 100644 --- a/src/opengeodeweb_viewer/object/object_methods.py +++ b/src/opengeodeweb_viewer/object/object_methods.py @@ -108,21 +108,35 @@ def SetColor(self, id, red, green, blue): def SetEdgesVisibility(self, id, visibility): actor = self.get_object(id)["actor"] - actor.GetProperty().SetEdgeVisibility(visibility) + max_dimension = self.get_object(id)["max_dimension"] + if max_dimension == "edges": + self.SetVisibility(id, visibility) + else: + + actor.GetProperty().SetEdgeVisibility(visibility) self.render() - def SetEdgesSize(self, id, size): + def SetEdgesWidth(self, id, width): actor = self.get_object(id)["actor"] - actor.GetProperty().SetEdgeWidth(size) + actor.GetProperty().UseLineWidthForEdgeThicknessOn() + actor.GetProperty().SetEdgeWidth(width) self.render() def SetEdgesColor(self, id, red, green, blue): actor = self.get_object(id)["actor"] - actor.GetProperty().SetEdgeColor([red / 255, green / 255, blue / 255]) + max_dimension = self.get_object(id)["max_dimension"] + if max_dimension == "edges": + self.SetColor(id, red, green, blue) + else: + # actor.GetProperty().SetEdgeColor([red / 255, green / 255, blue / 255]) self.render() def SetPointsVisibility(self, id, visibility): actor = self.get_object(id)["actor"] + # max_dimension = self.get_object(id)["max_dimension"] + # if max_dimension == "points": + # self.SetVisibility(id, visibility) + # else: actor.GetProperty().SetVertexVisibility(visibility) actor.GetProperty().SetEdgeVisibility(visibility) self.render() @@ -134,6 +148,10 @@ def SetPointsSize(self, id, size): def SetPointsColor(self, id, red, green, blue): actor = self.get_object(id)["actor"] + # max_dimension = self.get_object(id)["max_dimension"] + # if max_dimension == "points": + # self.SetColor(id, red, green, blue) + # else: actor.GetProperty().SetVertexColor([red / 255, green / 255, blue / 255]) self.render() diff --git a/src/opengeodeweb_viewer/rpc/mesh/edges/mesh_edges_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/edges/mesh_edges_protocols.py index fdeea46..a2db0f5 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/edges/mesh_edges_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/edges/mesh_edges_protocols.py @@ -39,10 +39,10 @@ def setMeshEdgesColor(self, params): ) self.SetEdgesColor(id, red, green, blue) - @exportRpc(mesh_edges_prefix + mesh_edges_schemas_dict["size"]["rpc"]) - def setMeshEdgesSize(self, params): + @exportRpc(mesh_edges_prefix + mesh_edges_schemas_dict["width"]["rpc"]) + def setMeshEdgesWidth(self, params): validate_schema( - params, self.mesh_edges_schemas_dict["size"], self.mesh_edges_prefix + params, self.mesh_edges_schemas_dict["width"], self.mesh_edges_prefix ) - id, size = params["id"], params["size"] - self.SetEdgesSize(id, size) + id, size = params["id"], params["width"] + self.SetEdgesWidth(id, width) diff --git a/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/width.json b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/width.json new file mode 100644 index 0000000..21eab3a --- /dev/null +++ b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/width.json @@ -0,0 +1,18 @@ +{ + "rpc": "size", + "type": "object", + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "width": { + "type": "integer" + } + }, + "required": [ + "id", + "width" + ], + "additionalProperties": false +} \ No newline at end of file diff --git a/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py index 30fb3a5..cf26d9c 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py @@ -23,14 +23,33 @@ def __init__(self): def registerMesh(self, params): validate_schema(params, self.mesh_schemas_dict["register"], self.mesh_prefix) id, file_name = params["id"], params["file_name"] - try: - reader = vtk.vtkXMLGenericDataObjectReader() - filter = {} - mapper = vtk.vtkDataSetMapper() - mapper.SetInputConnection(reader.GetOutputPort()) - self.registerObject(id, file_name, reader, filter, mapper) - except Exception as e: - print("error : ", str(e), flush=True) + # try: + reader = vtk.vtkXMLGenericDataObjectReader() + filter = {} + mapper = vtk.vtkDataSetMapper() + mapper.SetInputConnection(reader.GetOutputPort()) + self.registerObject(id, file_name, reader, filter, mapper) + + data_object = reader.GetOutput() + data_set = vtk.vtkDataSet.SafeDownCast(data_object) + cell_types = vtk.vtkCellTypes() + data_set.GetCellTypes(cell_types) + cell_data = cell_types.GetCellTypesArray() + max_id = -1 + for t in range(cell_data.GetSize()): + t_id = cell_data.GetValue(t) + max_id = max(max_id, t_id) + print(f"{max_id=}", flush=True) + max_dimension = "" + if max_id < 3: + max_dimension = "points" + elif max_id < 5: + max_dimension = "edges" + elif max_id < 7: + max_dimension = "polygons" + elif max_id >= 7: + max_dimension = "polyhedra" + self.get_data_base()[id]["max_dimension"] = max_dimension @exportRpc(mesh_prefix + mesh_schemas_dict["deregister"]["rpc"]) def deregisterMesh(self, params): diff --git a/src/tests/data/images/mesh/points/point_set_color.jpeg b/src/tests/data/images/mesh/points/point_set_color.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..a9f37c29652aefcf41a37de1e2421b67518a1c1e GIT binary patch literal 9588 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 I+3(f=2d`C!<^TWy literal 0 HcmV?d00001 diff --git a/src/tests/data/images/mesh/points/point_set_size.jpeg b/src/tests/data/images/mesh/points/point_set_size.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..93123a19290f648a3fe372aba15fd3e04865f6ec GIT binary patch literal 6280 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 literal 0 HcmV?d00001 diff --git a/src/tests/data/images/mesh/points/point_set_visibility.jpeg b/src/tests/data/images/mesh/points/point_set_visibility.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..35b6a3d48a33a5b247cedb58137770255ba7d5f3 GIT binary patch literal 1072 zcmeH^I}XAy5JYFZ0!4_zmf!$Tr%ay$DH2=?ZW7LdI0T=DBXEOd9R-m@N+?pox>|d@ zpLu%G2mG$s79auIf!?vPY+S@5<0{y1Js~7anF`l%ffA@^EUQt`jG0|8;sWi^8|Fed zFWz=5pY7LQ&-T$Y-!<)MrX^-2CoU_aB6JmpN+D#kGx3MEd{$ literal 0 HcmV?d00001 diff --git a/src/tests/data/images/mesh/points/register_point_set.jpeg b/src/tests/data/images/mesh/points/register_point_set.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..cb0d888308922f6f086c73feb3cdfd0e32869d99 GIT binary patch literal 2582 zcmeHIdpwkR7k{34jJs{dOeB{mLM}^V(vVE!l87C{xJ`sIlucAFHCm%kVZE3cCi$32 zi`|JZ-u^ZfJsoy+%g&i6Uzcldq$Q2=3W zdB_p~K>z>+AHe?^FcaMVnXH2RGXz02zZO7>g4&=q1a1dlNDxAT{CYs{b8^7Cz=dGK z;sO(TwTLf;KLAKVAOJ%^2tj>3{+HIjyJ?^veRkn~vv#<-4*`Xw?BACazmowfc0vZ#ghRLLJayp*P21BwX(z7OmgL^9x`%(-TMSy*y){1Q^2D;e7^ZoeB>OUA z^|vF}lUmE4{wW&>1WiE$KJXVVuyvQO5rCjkKo|rU7Fk1q2`WS(rO_%xxU$}EJg|L- zswZ8aU{4ARiu_!zuqkZ$>WVEByALD7(l|0JoBn!NS6`kc>hRKZ64qqeSluoEcw%V- znh#hXN)9EpXH;MFbJc6~Qwx6HkttVmEg3gLmgG4`mF83e6b?Z-jo~@-#?Xz<1?0_h zY2$;rn6flk{Uo9{+<2R@oP2H~!{#DycW}Fu+!I}OlT(zuMaRV5c(G20Z<5d_RB^15 zJhH(!EN`>+h(t`)h*o9d$}aQ?Unwhh2gA}!Y7ORXWKmzcUX}cl?^3)eQx9o17f3RxUt$I$HTP{+{I<)aEcJ(TVL zvO;8#{F+m1($c@z-mg0CVmXF*DPv6QpR7LW8y0Yc!%E+>tQewR6INBOXGZDoVwmZj ztA0P>dp|eZ!7nqWP?R8Jdv>t%5sAsI-GhyBk#M0VrHm#7%-^ywywl^Z)R|e;G4l>z zv1f9y7qGg`+K=j|DA|ZTkMET)ho8@>nqp>Oa6XALW5zjFXp(ckRdLrMYuQRr>h!tQ z=o}zL!bv0zH^q|3*;#rGOv;>fj{c6w*vSr2B9*cII9Gz*w9njbTmjYiKrVw6bJlx{ zHkfxP;D%L1jFBYgwFZ)hZ_!^KCAyL zAD}rm{n8<#FmA>x*v0T`_mE3NWvjP5_+>My+HKH#j)^1NwSt^zChc)T%Gdn^olgG6 zvbmbFqG@S!26t;25LAcG2x6DL`Z)Z3%!Gbc9I1qT+$WY0De7?|U`|KVt&_`h;=*G* z6Q~ia*w{3?An|&(yV0B)o;C5VmFHBljW;>DU{R1lgW#9TdY;vW$6_Z^T6mnO2fE~` zy+#I5O{FpYp%e_ng?NanM~MSCovRk%!INRrK_g@dt>Wfpp;aC&pCegZbzyA#74p zNJr{3x}=YWi13p-kwN@}U+pBHf^P$s6w3-+ppe$~-Dhc>v9EH`qh+?Z*ip`vz`NkO4xYb6RKj@7x4 z#DfX~Z@#sY+QwiMVFs)TfsN5Q)`MFu5#hs1_EW)k(}U~eEMgHRVSRfGr#H}ljyfkJiA0IB&aLoEv)54`*qk(mGGZ!Wo*^tP*rDfY;NI) zm+bn~ismhEbTXwDqY7ck(qpXsqX%T0HvK3l{?j4@AOSamUG{%jX8`((7k+gKApU*{ ze0EV3bRZ1eu;c&`Nd#2%1np=4NBbcbjj+w;Kc5o8{q(L$iMkNLT8e&&_S*WG(NbgR zbAX&9`dx!Y{3S0LMJ!h>7C-thPf~lcTn7af$Orc5Ls@$c>^n&94aF%FFfs9$I8L}C zA$qeG9@8aduhyWDgb{XanbDfR_hP=P{*1nJ0TQ^+L78p08LP7 Date: Fri, 13 Jun 2025 17:04:58 +0200 Subject: [PATCH 3/7] fix(edges & points): color & visibility on actor --- .../object/object_methods.py | 27 ++++----- ...protocols.py => model_blocks_protocols.py} | 0 ...rotocols.py => model_corners_protocols.py} | 0 ..._protocols.py => model_edges_protocols.py} | 0 ..._protocols.py => model_lines_protocols.py} | 0 .../rpc/model/model_protocols.py | 1 + ...protocols.py => model_points_protocols.py} | 0 ...otocols.py => model_surfaces_protocols.py} | 0 src/opengeodeweb_viewer/vtkw_server.py | 12 ++-- .../images/mesh/edges/edged_curve_color.jpeg | Bin 0 -> 10102 bytes .../mesh/edges/edged_curve_visibility.jpeg | Bin 0 -> 1072 bytes .../mesh/edges/register_edged_curve.jpeg | Bin 0 -> 7673 bytes src/tests/mesh/edges/test_edges_protocols.py | 31 ---------- .../mesh/edges/test_mesh_edges_protocols.py | 56 ++++++++++++++++++ .../mesh/points/test_mesh_points_protocols.py | 4 +- ...ols.py => test_mesh_polygons_protocols.py} | 0 ...ls.py => test_mesh_polyhedra_protocols.py} | 0 .../blocks/test_model_blocks_protocols.py | 2 +- .../corners/test_model_corners_protocols.py | 2 +- .../model/edges/test_model_edges_protocols.py | 2 +- .../model/lines/test_model_lines_protocols.py | 2 +- .../points/test_model_points_protocols.py | 2 +- .../surfaces/test_model_surfaces_protocols.py | 2 +- 23 files changed, 84 insertions(+), 59 deletions(-) rename src/opengeodeweb_viewer/rpc/model/blocks/{blocks_protocols.py => model_blocks_protocols.py} (100%) rename src/opengeodeweb_viewer/rpc/model/corners/{corners_protocols.py => model_corners_protocols.py} (100%) rename src/opengeodeweb_viewer/rpc/model/edges/{edges_protocols.py => model_edges_protocols.py} (100%) rename src/opengeodeweb_viewer/rpc/model/lines/{lines_protocols.py => model_lines_protocols.py} (100%) rename src/opengeodeweb_viewer/rpc/model/points/{points_protocols.py => model_points_protocols.py} (100%) rename src/opengeodeweb_viewer/rpc/model/surfaces/{surfaces_protocols.py => model_surfaces_protocols.py} (100%) create mode 100644 src/tests/data/images/mesh/edges/edged_curve_color.jpeg create mode 100644 src/tests/data/images/mesh/edges/edged_curve_visibility.jpeg create mode 100644 src/tests/data/images/mesh/edges/register_edged_curve.jpeg delete mode 100644 src/tests/mesh/edges/test_edges_protocols.py create mode 100644 src/tests/mesh/edges/test_mesh_edges_protocols.py rename src/tests/mesh/polygons/{test_polygons_protocols.py => test_mesh_polygons_protocols.py} (100%) rename src/tests/mesh/polyhedra/{test_polyhedra_protocols.py => test_mesh_polyhedra_protocols.py} (100%) diff --git a/src/opengeodeweb_viewer/object/object_methods.py b/src/opengeodeweb_viewer/object/object_methods.py index 4ccf96b..c460e50 100644 --- a/src/opengeodeweb_viewer/object/object_methods.py +++ b/src/opengeodeweb_viewer/object/object_methods.py @@ -111,8 +111,7 @@ def SetEdgesVisibility(self, id, visibility): max_dimension = self.get_object(id)["max_dimension"] if max_dimension == "edges": self.SetVisibility(id, visibility) - else: - + else: actor.GetProperty().SetEdgeVisibility(visibility) self.render() @@ -128,17 +127,17 @@ def SetEdgesColor(self, id, red, green, blue): if max_dimension == "edges": self.SetColor(id, red, green, blue) else: - # actor.GetProperty().SetEdgeColor([red / 255, green / 255, blue / 255]) + actor.GetProperty().SetEdgeColor([red / 255, green / 255, blue / 255]) self.render() def SetPointsVisibility(self, id, visibility): actor = self.get_object(id)["actor"] - # max_dimension = self.get_object(id)["max_dimension"] - # if max_dimension == "points": - # self.SetVisibility(id, visibility) - # else: - actor.GetProperty().SetVertexVisibility(visibility) - actor.GetProperty().SetEdgeVisibility(visibility) + max_dimension = self.get_object(id)["max_dimension"] + if max_dimension == "points": + self.SetVisibility(id, visibility) + else: + actor.GetProperty().SetVertexVisibility(visibility) + actor.GetProperty().SetEdgeVisibility(visibility) self.render() def SetPointsSize(self, id, size): @@ -148,11 +147,11 @@ def SetPointsSize(self, id, size): def SetPointsColor(self, id, red, green, blue): actor = self.get_object(id)["actor"] - # max_dimension = self.get_object(id)["max_dimension"] - # if max_dimension == "points": - # self.SetColor(id, red, green, blue) - # else: - actor.GetProperty().SetVertexColor([red / 255, green / 255, blue / 255]) + max_dimension = self.get_object(id)["max_dimension"] + if max_dimension == "points": + self.SetColor(id, red, green, blue) + else: + actor.GetProperty().SetVertexColor([red / 255, green / 255, blue / 255]) self.render() def SetBlocksVisibility(self, id, block_ids, visibility): diff --git a/src/opengeodeweb_viewer/rpc/model/blocks/blocks_protocols.py b/src/opengeodeweb_viewer/rpc/model/blocks/model_blocks_protocols.py similarity index 100% rename from src/opengeodeweb_viewer/rpc/model/blocks/blocks_protocols.py rename to src/opengeodeweb_viewer/rpc/model/blocks/model_blocks_protocols.py diff --git a/src/opengeodeweb_viewer/rpc/model/corners/corners_protocols.py b/src/opengeodeweb_viewer/rpc/model/corners/model_corners_protocols.py similarity index 100% rename from src/opengeodeweb_viewer/rpc/model/corners/corners_protocols.py rename to src/opengeodeweb_viewer/rpc/model/corners/model_corners_protocols.py diff --git a/src/opengeodeweb_viewer/rpc/model/edges/edges_protocols.py b/src/opengeodeweb_viewer/rpc/model/edges/model_edges_protocols.py similarity index 100% rename from src/opengeodeweb_viewer/rpc/model/edges/edges_protocols.py rename to src/opengeodeweb_viewer/rpc/model/edges/model_edges_protocols.py diff --git a/src/opengeodeweb_viewer/rpc/model/lines/lines_protocols.py b/src/opengeodeweb_viewer/rpc/model/lines/model_lines_protocols.py similarity index 100% rename from src/opengeodeweb_viewer/rpc/model/lines/lines_protocols.py rename to src/opengeodeweb_viewer/rpc/model/lines/model_lines_protocols.py diff --git a/src/opengeodeweb_viewer/rpc/model/model_protocols.py b/src/opengeodeweb_viewer/rpc/model/model_protocols.py index a9d46a8..a15a5ad 100644 --- a/src/opengeodeweb_viewer/rpc/model/model_protocols.py +++ b/src/opengeodeweb_viewer/rpc/model/model_protocols.py @@ -33,6 +33,7 @@ def registerModel(self, params): attributes = vtkCompositeDataDisplayAttributes() mapper.SetCompositeDataDisplayAttributes(attributes) self.registerObject(id, file_name, reader, filter, mapper) + self.get_object(id)["max_dimension"] = "dummy" except Exception as e: print("error : ", str(e), flush=True) diff --git a/src/opengeodeweb_viewer/rpc/model/points/points_protocols.py b/src/opengeodeweb_viewer/rpc/model/points/model_points_protocols.py similarity index 100% rename from src/opengeodeweb_viewer/rpc/model/points/points_protocols.py rename to src/opengeodeweb_viewer/rpc/model/points/model_points_protocols.py diff --git a/src/opengeodeweb_viewer/rpc/model/surfaces/surfaces_protocols.py b/src/opengeodeweb_viewer/rpc/model/surfaces/model_surfaces_protocols.py similarity index 100% rename from src/opengeodeweb_viewer/rpc/model/surfaces/surfaces_protocols.py rename to src/opengeodeweb_viewer/rpc/model/surfaces/model_surfaces_protocols.py diff --git a/src/opengeodeweb_viewer/vtkw_server.py b/src/opengeodeweb_viewer/vtkw_server.py index 45dd29f..35135a9 100644 --- a/src/opengeodeweb_viewer/vtkw_server.py +++ b/src/opengeodeweb_viewer/vtkw_server.py @@ -18,22 +18,22 @@ from .rpc.mesh.polygons.polygons_protocols import VtkMeshPolygonsView from .rpc.mesh.polyhedra.polyhedra_protocols import VtkMeshPolyhedraView from .rpc.model.model_protocols import VtkModelView -from .rpc.model.edges.edges_protocols import ( +from .rpc.model.edges.model_edges_protocols import ( VtkModelEdgesView, ) -from .rpc.model.points.points_protocols import ( +from .rpc.model.points.model_points_protocols import ( VtkModelPointsView, ) -from .rpc.model.corners.corners_protocols import ( +from .rpc.model.corners.model_corners_protocols import ( VtkModelCornersView, ) -from .rpc.model.lines.lines_protocols import ( +from .rpc.model.lines.model_lines_protocols import ( VtkModelLinesView, ) -from .rpc.model.surfaces.surfaces_protocols import ( +from .rpc.model.surfaces.model_surfaces_protocols import ( VtkModelSurfacesView, ) -from .rpc.model.blocks.blocks_protocols import ( +from .rpc.model.blocks.model_blocks_protocols import ( VtkModelBlocksView, ) from .rpc.generic.generic_protocols import VtkGenericView diff --git a/src/tests/data/images/mesh/edges/edged_curve_color.jpeg b/src/tests/data/images/mesh/edges/edged_curve_color.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..d190d02cdb01b35aa15e6c479e5d701937353356 GIT binary patch literal 10102 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 literal 0 HcmV?d00001 diff --git a/src/tests/data/images/mesh/edges/edged_curve_visibility.jpeg b/src/tests/data/images/mesh/edges/edged_curve_visibility.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..35b6a3d48a33a5b247cedb58137770255ba7d5f3 GIT binary patch literal 1072 zcmeH^I}XAy5JYFZ0!4_zmf!$Tr%ay$DH2=?ZW7LdI0T=DBXEOd9R-m@N+?pox>|d@ zpLu%G2mG$s79auIf!?vPY+S@5<0{y1Js~7anF`l%ffA@^EUQt`jG0|8;sWi^8|Fed zFWz=5pY7LQ&-T$Y-!<)MrX^-2CoU_aB6JmpN+D#kGx3MEd{$ literal 0 HcmV?d00001 diff --git a/src/tests/data/images/mesh/edges/register_edged_curve.jpeg b/src/tests/data/images/mesh/edges/register_edged_curve.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..ab8130643b3ee752260b8ea86fd918ed73899f25 GIT binary patch literal 7673 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 literal 0 HcmV?d00001 diff --git a/src/tests/mesh/edges/test_edges_protocols.py b/src/tests/mesh/edges/test_edges_protocols.py deleted file mode 100644 index 1c62008..0000000 --- a/src/tests/mesh/edges/test_edges_protocols.py +++ /dev/null @@ -1,31 +0,0 @@ -# Standard library imports - -# Third party imports -from src.opengeodeweb_viewer.rpc.mesh.edges.mesh_edges_protocols import VtkMeshEdgesView - -# Local application imports -from src.tests.mesh.test_mesh_protocols import test_register_mesh - - -def test_edges_visibility(server): - - test_register_mesh(server) - - server.call( - VtkMeshEdgesView.mesh_edges_prefix - + VtkMeshEdgesView.mesh_edges_schemas_dict["visibility"]["rpc"], - [{"id": "123456789", "visibility": True}], - ) - assert server.compare_image(3, "mesh/edges/visibility.jpeg") == True - - -def test_edges_color(server): - - test_edges_visibility(server) - - server.call( - VtkMeshEdgesView.mesh_edges_prefix - + VtkMeshEdgesView.mesh_edges_schemas_dict["color"]["rpc"], - [{"id": "123456789", "color": {"r": 255, "g": 0, "b": 0}}], - ) - assert server.compare_image(3, "mesh/edges/color.jpeg") == True diff --git a/src/tests/mesh/edges/test_mesh_edges_protocols.py b/src/tests/mesh/edges/test_mesh_edges_protocols.py new file mode 100644 index 0000000..ebaf563 --- /dev/null +++ b/src/tests/mesh/edges/test_mesh_edges_protocols.py @@ -0,0 +1,56 @@ +# Standard library imports + +# Third party imports +from src.opengeodeweb_viewer.rpc.mesh.mesh_protocols import VtkMeshView +from src.opengeodeweb_viewer.rpc.mesh.edges.mesh_edges_protocols import VtkMeshEdgesView + +# Local application imports +from src.tests.mesh.test_mesh_protocols import test_register_mesh + + +def test_edges_visibility(server): + + test_register_mesh(server) + + server.call( + VtkMeshEdgesView.mesh_edges_prefix + + VtkMeshEdgesView.mesh_edges_schemas_dict["visibility"]["rpc"], + [{"id": "123456789", "visibility": True}], + ) + assert server.compare_image(3, "mesh/edges/visibility.jpeg") == True + + +def test_edges_color(server): + + test_edges_visibility(server) + + server.call( + VtkMeshEdgesView.mesh_edges_prefix + + VtkMeshEdgesView.mesh_edges_schemas_dict["color"]["rpc"], + [{"id": "123456789", "color": {"r": 255, "g": 0, "b": 0}}], + ) + assert server.compare_image(3, "mesh/edges/color.jpeg") == True + +def test_edges_with_edged_curve(server): + + server.call( + VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"], + [{"id": "123456789", "file_name": "edged_curve.vtp"}], + ) + assert server.compare_image(3, "mesh/edges/register_edged_curve.jpeg") == True + + server.call( + VtkMeshEdgesView.mesh_edges_prefix + + VtkMeshEdgesView.mesh_edges_schemas_dict["color"]["rpc"], + [{"id": "123456789", "color": {"r": 255, "g": 0, "b": 0}}], + ) + assert server.compare_image(3, "mesh/edges/edged_curve_color.jpeg") == True + + server.call( + VtkMeshEdgesView.mesh_edges_prefix + + VtkMeshEdgesView.mesh_edges_schemas_dict["visibility"]["rpc"], + [{"id": "123456789", "visibility": False}], + ) + assert server.compare_image(3, "mesh/edges/edged_curve_visibility.jpeg") == True + + diff --git a/src/tests/mesh/points/test_mesh_points_protocols.py b/src/tests/mesh/points/test_mesh_points_protocols.py index f80e288..66359ad 100644 --- a/src/tests/mesh/points/test_mesh_points_protocols.py +++ b/src/tests/mesh/points/test_mesh_points_protocols.py @@ -1,8 +1,8 @@ # Standard library imports # Third party imports -from opengeodeweb_viewer.rpc.mesh.points.mesh_points_protocols import VtkMeshPointsView from opengeodeweb_viewer.rpc.mesh.mesh_protocols import VtkMeshView +from opengeodeweb_viewer.rpc.mesh.points.mesh_points_protocols import VtkMeshPointsView # Local application imports from src.tests.mesh.test_mesh_protocols import test_register_mesh @@ -44,7 +44,7 @@ def test_points_color(server): assert server.compare_image(3, "mesh/points/color.jpeg") == True -def test_points_visibility_with_point_set(server): +def test_points_with_point_set(server): server.call( VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"], diff --git a/src/tests/mesh/polygons/test_polygons_protocols.py b/src/tests/mesh/polygons/test_mesh_polygons_protocols.py similarity index 100% rename from src/tests/mesh/polygons/test_polygons_protocols.py rename to src/tests/mesh/polygons/test_mesh_polygons_protocols.py diff --git a/src/tests/mesh/polyhedra/test_polyhedra_protocols.py b/src/tests/mesh/polyhedra/test_mesh_polyhedra_protocols.py similarity index 100% rename from src/tests/mesh/polyhedra/test_polyhedra_protocols.py rename to src/tests/mesh/polyhedra/test_mesh_polyhedra_protocols.py diff --git a/src/tests/model/blocks/test_model_blocks_protocols.py b/src/tests/model/blocks/test_model_blocks_protocols.py index 457a215..f3682c1 100644 --- a/src/tests/model/blocks/test_model_blocks_protocols.py +++ b/src/tests/model/blocks/test_model_blocks_protocols.py @@ -1,7 +1,7 @@ # Standard library imports # Third party imports -from opengeodeweb_viewer.rpc.model.blocks.blocks_protocols import ( +from opengeodeweb_viewer.rpc.model.blocks.model_blocks_protocols import ( VtkModelBlocksView, ) diff --git a/src/tests/model/corners/test_model_corners_protocols.py b/src/tests/model/corners/test_model_corners_protocols.py index 14f27aa..5ced01f 100644 --- a/src/tests/model/corners/test_model_corners_protocols.py +++ b/src/tests/model/corners/test_model_corners_protocols.py @@ -1,7 +1,7 @@ # Standard library imports # Third party imports -from opengeodeweb_viewer.rpc.model.corners.corners_protocols import ( +from opengeodeweb_viewer.rpc.model.corners.model_corners_protocols import ( VtkModelCornersView, ) diff --git a/src/tests/model/edges/test_model_edges_protocols.py b/src/tests/model/edges/test_model_edges_protocols.py index a14ce1e..ea7876a 100644 --- a/src/tests/model/edges/test_model_edges_protocols.py +++ b/src/tests/model/edges/test_model_edges_protocols.py @@ -1,7 +1,7 @@ # Standard library imports # Third party imports -from opengeodeweb_viewer.rpc.model.edges.edges_protocols import ( +from opengeodeweb_viewer.rpc.model.edges.model_edges_protocols import ( VtkModelEdgesView, ) diff --git a/src/tests/model/lines/test_model_lines_protocols.py b/src/tests/model/lines/test_model_lines_protocols.py index 8f63830..39a26b9 100644 --- a/src/tests/model/lines/test_model_lines_protocols.py +++ b/src/tests/model/lines/test_model_lines_protocols.py @@ -1,7 +1,7 @@ # Standard library imports # Third party imports -from opengeodeweb_viewer.rpc.model.lines.lines_protocols import ( +from opengeodeweb_viewer.rpc.model.lines.model_lines_protocols import ( VtkModelLinesView, ) diff --git a/src/tests/model/points/test_model_points_protocols.py b/src/tests/model/points/test_model_points_protocols.py index 15ca7b5..231ab61 100644 --- a/src/tests/model/points/test_model_points_protocols.py +++ b/src/tests/model/points/test_model_points_protocols.py @@ -1,7 +1,7 @@ # Standard library imports # Third party imports -from opengeodeweb_viewer.rpc.model.points.points_protocols import ( +from opengeodeweb_viewer.rpc.model.points.model_points_protocols import ( VtkModelPointsView, ) diff --git a/src/tests/model/surfaces/test_model_surfaces_protocols.py b/src/tests/model/surfaces/test_model_surfaces_protocols.py index 309daa0..c8323c5 100644 --- a/src/tests/model/surfaces/test_model_surfaces_protocols.py +++ b/src/tests/model/surfaces/test_model_surfaces_protocols.py @@ -1,7 +1,7 @@ # Standard library imports # Third party imports -from opengeodeweb_viewer.rpc.model.surfaces.surfaces_protocols import ( +from opengeodeweb_viewer.rpc.model.surfaces.model_surfaces_protocols import ( VtkModelSurfacesView, ) From e2fe4e5b73bd378c11059930996fef51c58ab6b8 Mon Sep 17 00:00:00 2001 From: JulienChampagnol <91873154+JulienChampagnol@users.noreply.github.com> Date: Fri, 13 Jun 2025 15:05:32 +0000 Subject: [PATCH 4/7] Apply prepare changes --- src/opengeodeweb_viewer/object/object_methods.py | 4 ++-- src/tests/mesh/edges/test_mesh_edges_protocols.py | 3 +-- src/tests/mesh/points/test_mesh_points_protocols.py | 1 - 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/opengeodeweb_viewer/object/object_methods.py b/src/opengeodeweb_viewer/object/object_methods.py index c460e50..d17fb4f 100644 --- a/src/opengeodeweb_viewer/object/object_methods.py +++ b/src/opengeodeweb_viewer/object/object_methods.py @@ -126,7 +126,7 @@ def SetEdgesColor(self, id, red, green, blue): max_dimension = self.get_object(id)["max_dimension"] if max_dimension == "edges": self.SetColor(id, red, green, blue) - else: + else: actor.GetProperty().SetEdgeColor([red / 255, green / 255, blue / 255]) self.render() @@ -135,7 +135,7 @@ def SetPointsVisibility(self, id, visibility): max_dimension = self.get_object(id)["max_dimension"] if max_dimension == "points": self.SetVisibility(id, visibility) - else: + else: actor.GetProperty().SetVertexVisibility(visibility) actor.GetProperty().SetEdgeVisibility(visibility) self.render() diff --git a/src/tests/mesh/edges/test_mesh_edges_protocols.py b/src/tests/mesh/edges/test_mesh_edges_protocols.py index ebaf563..214f745 100644 --- a/src/tests/mesh/edges/test_mesh_edges_protocols.py +++ b/src/tests/mesh/edges/test_mesh_edges_protocols.py @@ -31,6 +31,7 @@ def test_edges_color(server): ) assert server.compare_image(3, "mesh/edges/color.jpeg") == True + def test_edges_with_edged_curve(server): server.call( @@ -52,5 +53,3 @@ def test_edges_with_edged_curve(server): [{"id": "123456789", "visibility": False}], ) assert server.compare_image(3, "mesh/edges/edged_curve_visibility.jpeg") == True - - diff --git a/src/tests/mesh/points/test_mesh_points_protocols.py b/src/tests/mesh/points/test_mesh_points_protocols.py index 66359ad..609f891 100644 --- a/src/tests/mesh/points/test_mesh_points_protocols.py +++ b/src/tests/mesh/points/test_mesh_points_protocols.py @@ -72,4 +72,3 @@ def test_points_with_point_set(server): [{"id": "123456789", "visibility": False}], ) assert server.compare_image(3, "mesh/points/point_set_visibility.jpeg") == True - From ea0e0ee41d7e3ae7234734f48ed99d264fc27328 Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Fri, 13 Jun 2025 17:09:00 +0200 Subject: [PATCH 5/7] revert try catch --- .../rpc/mesh/mesh_protocols.py | 54 ++++++++++--------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py b/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py index cf26d9c..5d61136 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py +++ b/src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py @@ -23,33 +23,35 @@ def __init__(self): def registerMesh(self, params): validate_schema(params, self.mesh_schemas_dict["register"], self.mesh_prefix) id, file_name = params["id"], params["file_name"] - # try: - reader = vtk.vtkXMLGenericDataObjectReader() - filter = {} - mapper = vtk.vtkDataSetMapper() - mapper.SetInputConnection(reader.GetOutputPort()) - self.registerObject(id, file_name, reader, filter, mapper) + try: + reader = vtk.vtkXMLGenericDataObjectReader() + filter = {} + mapper = vtk.vtkDataSetMapper() + mapper.SetInputConnection(reader.GetOutputPort()) + self.registerObject(id, file_name, reader, filter, mapper) - data_object = reader.GetOutput() - data_set = vtk.vtkDataSet.SafeDownCast(data_object) - cell_types = vtk.vtkCellTypes() - data_set.GetCellTypes(cell_types) - cell_data = cell_types.GetCellTypesArray() - max_id = -1 - for t in range(cell_data.GetSize()): - t_id = cell_data.GetValue(t) - max_id = max(max_id, t_id) - print(f"{max_id=}", flush=True) - max_dimension = "" - if max_id < 3: - max_dimension = "points" - elif max_id < 5: - max_dimension = "edges" - elif max_id < 7: - max_dimension = "polygons" - elif max_id >= 7: - max_dimension = "polyhedra" - self.get_data_base()[id]["max_dimension"] = max_dimension + data_object = reader.GetOutput() + data_set = vtk.vtkDataSet.SafeDownCast(data_object) + cell_types = vtk.vtkCellTypes() + data_set.GetCellTypes(cell_types) + cell_data = cell_types.GetCellTypesArray() + max_id = -1 + for t in range(cell_data.GetSize()): + t_id = cell_data.GetValue(t) + max_id = max(max_id, t_id) + print(f"{max_id=}", flush=True) + max_dimension = "" + if max_id < 3: + max_dimension = "points" + elif max_id < 5: + max_dimension = "edges" + elif max_id < 7: + max_dimension = "polygons" + elif max_id >= 7: + max_dimension = "polyhedra" + self.get_data_base()[id]["max_dimension"] = max_dimension + except Exception as e: + print("error : ", str(e), flush=True) @exportRpc(mesh_prefix + mesh_schemas_dict["deregister"]["rpc"]) def deregisterMesh(self, params): From eaac12fce2def8a0185c07e7c7677c105f0b4fc1 Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Fri, 13 Jun 2025 17:09:06 +0200 Subject: [PATCH 6/7] revert try catch --- src/opengeodeweb_viewer/object/object_methods.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/opengeodeweb_viewer/object/object_methods.py b/src/opengeodeweb_viewer/object/object_methods.py index c460e50..3da26f2 100644 --- a/src/opengeodeweb_viewer/object/object_methods.py +++ b/src/opengeodeweb_viewer/object/object_methods.py @@ -117,7 +117,6 @@ def SetEdgesVisibility(self, id, visibility): def SetEdgesWidth(self, id, width): actor = self.get_object(id)["actor"] - actor.GetProperty().UseLineWidthForEdgeThicknessOn() actor.GetProperty().SetEdgeWidth(width) self.render() From 87e735a41cb30c2cdb1811cb3d0e2fe820a8abc0 Mon Sep 17 00:00:00 2001 From: JulienChampagnol Date: Mon, 16 Jun 2025 11:07:18 +0200 Subject: [PATCH 7/7] pr comments --- src/opengeodeweb_viewer/rpc/mesh/edges/schemas/width.json | 2 +- src/opengeodeweb_viewer/rpc/model/model_protocols.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/width.json b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/width.json index 21eab3a..9495dd5 100644 --- a/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/width.json +++ b/src/opengeodeweb_viewer/rpc/mesh/edges/schemas/width.json @@ -7,7 +7,7 @@ "minLength": 1 }, "width": { - "type": "integer" + "type": "number" } }, "required": [ diff --git a/src/opengeodeweb_viewer/rpc/model/model_protocols.py b/src/opengeodeweb_viewer/rpc/model/model_protocols.py index a15a5ad..9b4e579 100644 --- a/src/opengeodeweb_viewer/rpc/model/model_protocols.py +++ b/src/opengeodeweb_viewer/rpc/model/model_protocols.py @@ -33,7 +33,7 @@ def registerModel(self, params): attributes = vtkCompositeDataDisplayAttributes() mapper.SetCompositeDataDisplayAttributes(attributes) self.registerObject(id, file_name, reader, filter, mapper) - self.get_object(id)["max_dimension"] = "dummy" + self.get_object(id)["max_dimension"] = "default" except Exception as e: print("error : ", str(e), flush=True)