@@ -37,49 +37,84 @@ def to_dict(self):
3737def addBidule (self ):
3838 return self .addChild ("Bidule" )
3939
40- class Entity (Sofa .Core .Node ):
40+
41+ class Entity (Sofa .Core .Prefab ):
42+ def __init__ (self , ** kwargs ):
43+ self .addChild (VisualModel (** kwargs ), name = "visual" )
44+ self .addChild (CollisionModel (** kwargs ), name = "visual" )
45+
46+ def addConstitutiveLaw (self ):
47+ pass
48+
49+ def addSolver (self ):
50+ pass
51+
52+ DEFAULT_VALUE = object ()
53+
54+ def addSolver (node : Sofa .Core .Node , template = DEFAULT_VALUE , numiterations = DEFAULT_VALUE , ** kwargs ):
55+ node .addObject ("ODESolver" , name = "integrationscheme" ,numiterations = numiterations , ** kwargs )
56+ node .addObject ("LinearSolver" , name = "numericalsolver" , template = DEFAULT_VALUE , ** kwargs )
57+
58+ #@dataclasses.dataclass
59+ #class Solver(object):
60+ # integrationscheme : str
61+ # numericalsolver : str
62+
63+ @dataclasses .dataclass
64+ class SolverParameters (object ):
65+ numiteration : int | object = DEFAULT_VALUE
66+ template : str | object = DEFAULT_VALUE
67+
68+ kwargs : dict = {"intergrato" }
69+
70+ def to_dict (self ):
71+ return self .asdict () | self .kwargs
72+
73+ class Entity (Sofa .Core .Prefab ):
4174 # A simulated object
4275 visual : VisualModel
4376 collision : CollisionModel
4477
45- @staticmethod
46- def addSolver (self ):
47- pass
78+ parameters : EntityParameters
4879
49- @dataclasses .dataclass
50- class Parameters (object ):
51- addSolver : Callable = addBidule
52- addConstitutiveLaw : Callable = addBidule
53- addBoundaryCondition : Callable = addBidule
80+ addSolver : PrefabMethod
5481
55- mechanical : MechanicalObject .Parameters = MechanicalObject .Parameters ()
56- collision : CollisionModel .Parameters = CollisionModel .Parameters ()
57- visual : VisualModel .Parameters = VisualModel .Parameters ()
82+ def __init__ (self , params ):
83+ self .params = params
84+
85+ self .addChild (VisualModel (params .visual ), name = "visual" )
5886
59- name = "Entity"
87+ self .addSolver ()
88+ self .addCollisionModel ()
6089
61- def to_dict (self ):
62- return dataclasses .asdict (self )
90+ #@staticmethod
91+ #def addSolver(self):
92+ # pass
6393
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 )
94+ #def defaultAddSolver(self):
95+ # pass
6996
70- print ("ZUT ZUT " )
71-
72- print ("COUCOU" )
73- self .addObject ("MechanicalObject" , ** params .mechanical .to_dict ())
74- print ("COUCO S" )
97+ @prefab .method
98+ def addCollisionModel (self ):
99+ pass
100+
101+ @dataclasses .dataclass
102+ class EntityParameters (object ):
103+ addSolver : Callable = addSolver
104+ setConstitutiveLaw # : Callable = addBidule
105+ setBoundaryCondition #: Callable = addBidule
106+
107+ addCollisionModel : CollisionModel
75108
76- #if(params.visual != None):
77- # self.addChild(VisualModel(params.visual),
78- # name="visual")
109+ #mechanical : MechanicalObject.Parameters = MechanicalObject.Parameters()
110+ collision : CollisionModel .Parameters = CollisionModel .Parameters ()
111+ visual : VisualModel .Parameters = VisualModel .Parameters ()
112+ solver : SolverParameters = SolverParameters ()
113+
114+ kwargs : dict = {}
115+ def to_dict (self ):
116+ return dataclasses .asdict (self )
79117
80- #if(params.collision != None):
81- # self.addChild(CollisionModel(params.collision),
82- # name="collision")
83118
84119class Rigid (Entity ):
85120 def __init__ (self , ** kwargs ):
@@ -90,10 +125,8 @@ class Parameters(Entity.Parameters):
90125
91126class Deformable (Entity ):
92127 def __init__ (self , ** kwargs ):
93- print ("ZUT" )
94128 Entity .__init__ (self , ** kwargs )
95- print ("DEFORMABLE" )
96-
129+
97130 class Parameters (Entity .Parameters ):
98131 addConstitutiveLaw : Callable
99132 mass = 3.4
@@ -119,7 +152,7 @@ def Parameters(object):
119152class Trunk (Sofa .Core .BasePrefab ):
120153 body : Entity .Deformable
121154 cables : list [SoftRobots .Cable ]
122-
155+
123156 def __init__ (self , params ):
124157 body = Entity .Deformable ()
125158
0 commit comments