|
3 | 3 | # r: compas>=2.5, compas_rui>=0.3.1, compas_session>=0.4.1, compas_tna>=0.5 |
4 | 4 |
|
5 | 5 | import rhinoscriptsyntax as rs # type: ignore |
| 6 | +from pydantic import BaseModel |
6 | 7 |
|
7 | 8 | from compas_rui.forms import NamedValuesForm |
8 | 9 | from compas_rv.session import RVSession |
9 | 10 |
|
| 11 | +# Switch to using ModelFieldsForm |
| 12 | + |
10 | 13 |
|
11 | 14 | def update_settings(model, title): |
12 | | - names = [name for name, info in model.model_fields.items()] |
13 | | - values = [getattr(model, name) for name in names] |
| 15 | + names = [] |
| 16 | + values = [] |
| 17 | + for name, info in model.model_fields.items(): |
| 18 | + if issubclass(info.annotation, BaseModel): |
| 19 | + continue |
| 20 | + names.append(name) |
| 21 | + values.append(getattr(model, name)) |
14 | 22 | form = NamedValuesForm(names, values, title=title) |
15 | 23 | if form.show(): |
16 | 24 | for name, value in form.attributes.items(): |
17 | 25 | setattr(model, name, value) |
18 | 26 |
|
19 | 27 |
|
| 28 | +# ============================================================================= |
| 29 | +# Command |
| 30 | +# ============================================================================= |
| 31 | + |
| 32 | + |
20 | 33 | def RunCommand(): |
21 | 34 | session = RVSession() |
22 | 35 |
|
23 | | - options1 = ["TNA", "Drawing"] |
24 | | - option1 = rs.GetString(message="Settings Section", strings=options1) |
25 | | - if not option1: |
| 36 | + options = ["RhinoVAULT", "TNA", "Drawing"] |
| 37 | + option = rs.GetString(message="Settings Section", strings=options) |
| 38 | + if not option: |
26 | 39 | return |
27 | 40 |
|
28 | | - if option1 == "TNA": |
29 | | - options2 = ["Horizontal", "Vertical"] |
30 | | - option2 = rs.GetString(message="Settings Section", strings=options2) |
31 | | - if not option2: |
32 | | - return |
33 | | - |
34 | | - title = f"{option1} {option2}" |
| 41 | + if option == "RhinoVAULT": |
| 42 | + update_settings(session.settings, title=option) |
35 | 43 |
|
36 | | - if option2 == "Horizontal": |
37 | | - update_settings(session.settings.tna.horizontal, title=title) |
| 44 | + elif option == "TNA": |
| 45 | + update_settings(session.settings.tna, title=option) |
38 | 46 |
|
39 | | - elif option2 == "Vertical": |
40 | | - update_settings(session.settings.tna.vertical, title=title) |
41 | | - |
42 | | - elif option1 == "Drawing": |
43 | | - options2 = ["FormDiagram", "ForceDiagram", "ThrustDiagram"] |
44 | | - option2 = rs.GetString(message="Settings Section", strings=options2) |
45 | | - if not option2: |
46 | | - return |
47 | | - |
48 | | - title = f"{option1} {option2}" |
49 | | - |
50 | | - if option2 == "FormDiagram": |
51 | | - pass |
52 | | - |
53 | | - elif option2 == "ForceDiagram": |
54 | | - pass |
55 | | - |
56 | | - elif option2 == "ThrustDiagram": |
57 | | - update_settings(session.settings.drawing.thrust, title=title) |
| 47 | + elif option == "Drawing": |
| 48 | + update_settings(session.settings.drawing, title=option) |
58 | 49 |
|
59 | 50 | session.scene.redraw() |
60 | 51 |
|
61 | | - # ============================================================================= |
62 | | - # Save session |
63 | | - # ============================================================================= |
64 | | - |
65 | 52 | if session.settings.autosave: |
66 | 53 | session.record(name="Update settings") |
67 | 54 |
|
|
0 commit comments