Skip to content

Commit c22121f

Browse files
committed
Tests...
1 parent 6378a1a commit c22121f

File tree

3 files changed

+199
-0
lines changed

3 files changed

+199
-0
lines changed
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
from typing import Callable, Optional, overload
2+
3+
import Sofa
4+
import dataclasses
5+
6+
7+
class VisualModel(Sofa.Core.BasePrefab):
8+
def __init__(self, params, **kwargs):
9+
Sofa.Core.Node.__init__(self, **kwargs)
10+
11+
class Parameters(object):
12+
enabled : bool
13+
filename : str
14+
15+
class DefaultParameters(object):
16+
enabled : bool
17+
filename : str
18+
19+
class CollisionModel(Sofa.Core.BasePrefab):
20+
def __init__(self, params, **kwargs):
21+
Sofa.Core.Node.__init__(self, **kwargs)
22+
23+
class Parameters(object):
24+
enabled : bool = False
25+
26+
class MechanicalObject(Sofa.Core.Object):
27+
positions : list[float]
28+
29+
@dataclasses.dataclass
30+
class Parameters(object):
31+
name : str = "MechanicalObject"
32+
33+
def to_dict(self):
34+
return dataclasses.asdict(self)
35+
36+
37+
def addBidule(self):
38+
return self.addChild("Bidule")
39+
40+
class Entity(Sofa.Core.Node):
41+
# A simulated object
42+
visual : VisualModel
43+
collision : CollisionModel
44+
45+
@staticmethod
46+
def addSolver(self):
47+
pass
48+
49+
@dataclasses.dataclass
50+
class Parameters(object):
51+
addSolver : Callable = addBidule
52+
addConstitutiveLaw : Callable = addBidule
53+
addBoundaryCondition : Callable = addBidule
54+
55+
mechanical : MechanicalObject.Parameters = MechanicalObject.Parameters()
56+
collision : CollisionModel.Parameters = CollisionModel.Parameters()
57+
visual : VisualModel.Parameters = VisualModel.Parameters()
58+
59+
name = "Entity"
60+
61+
def to_dict(self):
62+
return dataclasses.asdict(self)
63+
64+
# Ici mettre un prefab simplfié.
65+
def __init__(self, **kwargs):
66+
print("CCOUou")
67+
params = kwargs.get("params", None) # type: Entity.Parameters
68+
Sofa.Core.Node.__init__(self, params.name)
69+
70+
print("ZUT ZUT ")
71+
72+
print("COUCOU")
73+
self.addObject("MechanicalObject", **params.mechanical.to_dict())
74+
print("COUCO S")
75+
76+
#if(params.visual != None):
77+
# self.addChild(VisualModel(params.visual),
78+
# name="visual")
79+
80+
#if(params.collision != None):
81+
# self.addChild(CollisionModel(params.collision),
82+
# name="collision")
83+
84+
class Rigid(Entity):
85+
def __init__(self, **kwargs):
86+
Entity.__init__(self, **kwargs)
87+
88+
class Parameters(Entity.Parameters):
89+
pass
90+
91+
class Deformable(Entity):
92+
def __init__(self, **kwargs):
93+
print("ZUT")
94+
Entity.__init__(self, **kwargs)
95+
print("DEFORMABLE")
96+
97+
class Parameters(Entity.Parameters):
98+
addConstitutiveLaw : Callable
99+
mass = 3.4
100+
name = "Deformable"
101+
102+
def to_dict(self):
103+
return dataclasses.asdict(self)
104+
105+
106+
Entity.Rigid = Rigid
107+
Entity.Deformable = Deformable
108+
109+
class SoftRobots:
110+
class Cable(Sofa.Core.BasePrefab):
111+
length : float
112+
113+
def __init__(self,**kwargs):
114+
pass
115+
116+
def Parameters(object):
117+
lenght : float
118+
119+
class Trunk(Sofa.Core.BasePrefab):
120+
body : Entity.Deformable
121+
cables : list [SoftRobots.Cable]
122+
123+
def __init__(self, params):
124+
body = Entity.Deformable()
125+
126+
for param in range(params.cables):
127+
cables.append(SoftRobots.Cable(body, param))
128+
129+
class Parameters(object):
130+
body : Entity.Deformable.Parameters
131+
cables : list[SoftRobots.Cable.Parameters]
132+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from typing import Callable, Optional, overload
2+
import Sofa
3+
4+
class Parameters(object):
5+
addConstitutiveLaw : Callable
6+
mass = 3.4
7+
8+
def Deformable(parent, name="Deformable"):
9+
self = parent.addChild(name)
10+
return self
11+
12+
Deformable.get_parameters = Parameters
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
from typing import Callable, Optional, overload
2+
import Sofa.Core
3+
4+
5+
import entity
6+
import entity2
7+
8+
# Monkey patch for demonstration purpose
9+
def newAdd(self, creator, **kwargs):
10+
if callable(creator):
11+
creator(parent=self, **kwargs)
12+
Sofa.Core.Node.add = newAdd
13+
14+
def createScene(root):
15+
#root.add(entity.Deformable)
16+
#root.addChild(entity2.Deformable(root))
17+
18+
params = entity.Deformable.Parameters()
19+
params.name = "Deformable2"
20+
root.add(entity.Deformable, params=auto_load)
21+
22+
23+
24+
#def addCustomVisual(self, **kwargs):
25+
# Rigid.addVisualModel( mapping={"toto":"in"} )
26+
27+
#params = Entity.Parameters()
28+
#params.addVisualModel = addCustomVisual
29+
#root.add(Entity, params)
30+
31+
32+
#params = Rigid.new_parameters()
33+
#params.mass = 4.5
34+
#root.add(Entity, params)
35+
#root.add(Entity)
36+
37+
#params.addVisualModelOverride = addCustomVisual
38+
39+
### 
40+
#Entity._addVisualModel = addCustomVisual
41+
#root.add(Entity, params)
42+
43+
#root.add(Entity.Rigid)
44+
#root.add(Entity.Deformable)
45+
46+
#root.add(Entity)
47+
#root.add(VisualModel, params)
48+
49+
#root.add(VisualModel)
50+
51+
#params = Entity.Deformable.Parameters()
52+
#params.visual = None
53+
#a = root.add(Entity.Deformable, params)
54+
55+
return root

0 commit comments

Comments
 (0)