Skip to content

Commit 4c3890f

Browse files
committed
Move around files
1 parent abec07b commit 4c3890f

6 files changed

Lines changed: 133 additions & 3 deletions

File tree

stlib/core/entity.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
from stlib.core.parameters import EntityParameters
2+
import dataclasses
3+
from typing import Callable, Optional, overload
4+
import Sofa
5+
6+
7+
8+
class Entity(Sofa.Core.BasePrefab):
9+
10+
# A simulated object
11+
simulation : Simulation
12+
visual : VisualModel
13+
collision : CollisionModel
14+
15+
parameters : EntityParameters
16+
17+
@dataclasses.dataclass
18+
class Parameters(EntityParameters):
19+
name : str = "Entity"
20+
21+
addSimulation : Callable = Simulation
22+
addCollisionModel : Callable = CollisionModel
23+
addVisualModel : Callable = VisualModel
24+
25+
#setConstitutiveLaw # : Callable = addBidule
26+
#setBoundaryCondition #: Callable = addBidule
27+
28+
mechanical : dict = dataclasses.field(default_factory=dict)
29+
collision : CollisionModel.Parameters = CollisionModel.Parameters()
30+
visual : VisualModelParameters = VisualModelParameters()
31+
simulation : SimulationParameters = SimulationParameters()
32+
33+
34+
def __init__(self, parent=None, parameters=EntityParameters(), **kwargs):
35+
Sofa.Core.Node.__init__(self, name=parameters.name)
36+
37+
if parent is not None:
38+
parent.addChild(self)
39+
40+
self.parameters = parameters
41+
42+
self.addMechanicalModel(**parameters.mechanical)
43+
self.addSimulation(parameters=parameters.simulation)
44+
self.addVisualModel(parameters=parameters.visual)
45+
self.addCollisionModel()
46+
47+
def addMechanicalModel(self, **kwargs):
48+
self.addObject("MechanicalObject", **kwargs)
49+
50+
def addSimulation(self, **kwargs):
51+
self.parameters.addSimulation(self, **kwargs)
52+
53+
def addVisualModel(self, **kwargs):
54+
self.parameters.addVisualModel(self, **kwargs)
55+
56+
def addCollisionModel(self):
57+
pass

stlib/core/parameters.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import dataclasses
2+
from splib.core.utils import DEFAULT_VALUE
3+
4+
#defaultValueType
5+
6+
@dataclasses.dataclass
7+
class PrefabParameters(object):
8+
name : str = "Prefab"
9+
kwargs : dict = dataclasses.field(default_factory=dict)
10+
11+
def __getattr__(self, name: str) :
12+
if name == "__getstate__":
13+
getattr(PrefabParameters, "__getstate__")
14+
if name == "__setstate__":
15+
getattr(PrefabParameters, "__setstate__")
16+
17+
try:
18+
a = self.__getattribute__(name)
19+
except Exception as e:
20+
return DEFAULT_VALUE
21+
return a
22+
23+
def to_dict(self):
24+
return dataclasses.asdict(self)

stlib/core/visual_model.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from stlib.core.parameters import EntityParameters
2+
import dataclasses
3+
import Sofa
4+
5+
class VisualModel(Sofa.Core.BasePrefab):
6+
@dataclasses.dataclass
7+
class Parameters(EntityParameters):
8+
name : str = "VisualModel"
9+
10+
filename : str = "mesh/sphere_02.obj"
11+
12+
renderer : dict = dataclasses.field(default_factory=dict)
13+
mapping : dict = dataclasses.field(default_factory=dict)
14+
15+
16+
17+
def __init__(self, parent=None, parameters : VisualModelParameters = VisualModelParameters()):
18+
Sofa.Core.Node.__init__(self, name=parameters.name)
19+
20+
if parent != None:
21+
parent.addChild(self)
22+
23+
self.addObject("MeshOBJLoader", name="loader", filename=parameters.filename)
24+
self.addRenderer(**to_dict(parameters.renderer) | {"src" : "@loader"} )
25+
self.addMapping(**to_dict(parameters.mapping) )
26+
27+
def addRenderer(self, **kwargs):
28+
self.addObject("OglModel", name="renderer", **kwargs)
29+
30+
def addMapping(self, **kwargs):
31+
self.addObject("RigidMapping", name="mapping", **kwargs)
32+

stlib/examples/PrefabScene_beginner.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from splib.helper import exportScene
2-
from stlib.misc.entity import Entity
2+
from stlib.simulated.deformable import Deformable
33

44

55
def createScene(root):
6-
params = Entity.Deformable.Parameters()
6+
params = Deformable.Parameters()
77
params.name = "Logo"
88
params.topology.filename="share/mesh/SOFA-logo.obj"
9-
root.add(Entity.Deformable, params=params)
9+
root.add(Deformable, params=params)
1010
return root
1111

1212

stlib/simulated/deformable.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from stlib.core.entity import Entity
2+
from stlib.core.parameters import EntityParameters
3+
import dataclasses
4+
5+
class Deformable(Entity):
6+
@dataclasses.dataclass
7+
class Parameters(EntityParameters):
8+
addConstitutiveLaw : Callable = lambda x: x
9+
10+
mass : Optional[float] = None
11+
12+
def to_dict(self):
13+
return dataclasses.asdict(self)
14+
15+
def __init__(self, **kwargs):
16+
Entity.__init__(self, **kwargs)
17+

stlib/simulated/rigid.py

Whitespace-only changes.

0 commit comments

Comments
 (0)