1+ # Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
2+ # SPDX-License-Identifier: MIT
3+ #
4+ #
5+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6+ # of this software and associated documentation files (the "Software"), to deal
7+ # in the Software without restriction, including without limitation the rights
8+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+ # copies of the Software, and to permit persons to whom the Software is
10+ # furnished to do so, subject to the following conditions:
11+ #
12+ # The above copyright notice and this permission notice shall be included in all
13+ # copies or substantial portions of the Software.
14+ #
15+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+ # SOFTWARE.
22+ """Module containing the assembly controls service implementation for v0."""
23+
24+ import grpc
25+
26+ from ansys .geometry .core .errors import protect_grpc
27+
28+ from ..base .assembly_controls import GRPCAssemblyControlsService
29+
30+
31+ class GRPCAssemblyControlsServiceV0 (GRPCAssemblyControlsService ):
32+ """Assembly controls service for gRPC communication with the Geometry server.
33+
34+ This class provides methods to interact with the Geometry server's
35+ assembly controls service. It is specifically designed for the v0 version of the
36+ Geometry API.
37+
38+ Parameters
39+ ----------
40+ channel : grpc.Channel
41+ The gRPC channel to the server.
42+ """
43+
44+ @protect_grpc
45+ def __init__ (self , channel : grpc .Channel ): # noqa: D102
46+ from ansys .api .geometry .v0 .commands_pb2_grpc import CommandsStub
47+
48+ self .stub = CommandsStub (channel )
49+
50+ @protect_grpc
51+ def create_align_condition (self , ** kwargs ) -> dict : # noqa: D102
52+ from ansys .api .dbu .v0 .dbumodels_pb2 import EntityIdentifier
53+ from ansys .api .geometry .v0 .commands_pb2 import (
54+ CreateAlignTangentOrientGearConditionRequest ,
55+ )
56+
57+ # Create the request - assumes all inputs are valid and of the proper type
58+ request = CreateAlignTangentOrientGearConditionRequest (
59+ parent = EntityIdentifier (id = kwargs ["parent_id" ]),
60+ geometric_a = EntityIdentifier (id = kwargs ["geometric_a_id" ]),
61+ geometric_b = EntityIdentifier (id = kwargs ["geometric_b_id" ]),
62+ )
63+
64+ # Call the gRPC service
65+ resp = self .stub .CreateAlignCondition (request )
66+
67+ # Return the response - formatted as a dictionary
68+ return {
69+ "moniker" : resp .condition .moniker ,
70+ "is_deleted" : resp .condition .is_deleted ,
71+ "is_enabled" : resp .condition .is_enabled ,
72+ "is_satisfied" : resp .condition .is_satisfied ,
73+ "offset" : resp .offset ,
74+ "is_reversed" : resp .is_reversed ,
75+ "is_valid" : resp .is_valid ,
76+ }
77+
78+ @protect_grpc
79+ def create_tangent_condition (self , ** kwargs ) -> dict : # noqa: D102
80+ from ansys .api .dbu .v0 .dbumodels_pb2 import EntityIdentifier
81+ from ansys .api .geometry .v0 .commands_pb2 import (
82+ CreateAlignTangentOrientGearConditionRequest ,
83+ )
84+
85+ # Create the request - assumes all inputs are valid and of the proper type
86+ request = CreateAlignTangentOrientGearConditionRequest (
87+ parent = EntityIdentifier (id = kwargs ["parent_id" ]),
88+ geometric_a = EntityIdentifier (id = kwargs ["geometric_a_id" ]),
89+ geometric_b = EntityIdentifier (id = kwargs ["geometric_b_id" ]),
90+ )
91+
92+ # Call the gRPC service
93+ resp = self .stub .CreateTangentCondition (request )
94+
95+ # Return the response - formatted as a dictionary
96+ return {
97+ "moniker" : resp .condition .moniker ,
98+ "is_deleted" : resp .condition .is_deleted ,
99+ "is_enabled" : resp .condition .is_enabled ,
100+ "is_satisfied" : resp .condition .is_satisfied ,
101+ "offset" : resp .offset ,
102+ "is_reversed" : resp .is_reversed ,
103+ "is_valid" : resp .is_valid ,
104+ }
105+
106+ @protect_grpc
107+ def create_orient_condition (self , ** kwargs ) -> dict : # noqa: D102
108+ from ansys .api .dbu .v0 .dbumodels_pb2 import EntityIdentifier
109+ from ansys .api .geometry .v0 .commands_pb2 import (
110+ CreateAlignTangentOrientGearConditionRequest ,
111+ )
112+
113+ # Create the request - assumes all inputs are valid and of the proper type
114+ request = CreateAlignTangentOrientGearConditionRequest (
115+ parent = EntityIdentifier (id = kwargs ["parent_id" ]),
116+ geometric_a = EntityIdentifier (id = kwargs ["geometric_a_id" ]),
117+ geometric_b = EntityIdentifier (id = kwargs ["geometric_b_id" ]),
118+ )
119+
120+ # Call the gRPC service
121+ resp = self .stub .CreateOrientCondition (request )
122+
123+ # Return the response - formatted as a dictionary
124+ return {
125+ "moniker" : resp .condition .moniker ,
126+ "is_deleted" : resp .condition .is_deleted ,
127+ "is_enabled" : resp .condition .is_enabled ,
128+ "is_satisfied" : resp .condition .is_satisfied ,
129+ "offset" : resp .offset ,
130+ "is_reversed" : resp .is_reversed ,
131+ "is_valid" : resp .is_valid ,
132+ }
0 commit comments