Skip to content

Commit 97eda89

Browse files
committed
WIP FileParameters
1 parent b5efd73 commit 97eda89

File tree

2 files changed

+77
-29
lines changed

2 files changed

+77
-29
lines changed

stlib/entities/__entity__.py

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,25 @@
1-
from stlib.core.parameters import EntityParameters
1+
from stlib.core.baseParameters import BaseParameters
22
import dataclasses
33
from typing import Callable, Optional, overload
44
import Sofa
55

6+
@dataclasses.dataclass
7+
class EntityParameters(BaseParameters):
8+
name : str = "Entity"
9+
10+
addSimulation : Callable = Simulation
11+
addCollisionModel : Callable = CollisionModel
12+
addVisualModel : Callable = VisualModel
13+
14+
#setConstitutiveLaw # : Callable = addBidule
15+
#setBoundaryCondition #: Callable = addBidule
16+
17+
mechanical : dict = dataclasses.field(default_factory=dict)
18+
collision : CollisionModel.Parameters = CollisionModel.Parameters()
19+
visual : VisualModelParameters = VisualModelParameters()
20+
simulation : SimulationParameters = SimulationParameters()
21+
22+
623

724
class Entity(Sofa.Core.BaseEntity):
825

@@ -13,22 +30,6 @@ class Entity(Sofa.Core.BaseEntity):
1330

1431
parameters : EntityParameters
1532

16-
@dataclasses.dataclass
17-
class Parameters(EntityParameters):
18-
name : str = "Entity"
19-
20-
addSimulation : Callable = Simulation
21-
addCollisionModel : Callable = CollisionModel
22-
addVisualModel : Callable = VisualModel
23-
24-
#setConstitutiveLaw # : Callable = addBidule
25-
#setBoundaryCondition #: Callable = addBidule
26-
27-
mechanical : dict = dataclasses.field(default_factory=dict)
28-
collision : CollisionModel.Parameters = CollisionModel.Parameters()
29-
visual : VisualModelParameters = VisualModelParameters()
30-
simulation : SimulationParameters = SimulationParameters()
31-
3233

3334
def __init__(self, parent=None, parameters=EntityParameters(), **kwargs):
3435
Sofa.Core.Node.__init__(self, name=parameters.name)

stlib/geometry/__geometry__.py

Lines changed: 59 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,76 @@
11
from stlib.core.basePrefab import BasePrefab
2-
from stlib.core.baseParameters import BaseParameters, Optional
2+
from stlib.core.baseParameters import BaseParameters, Optional, dataclasses
33
from splib.topology.loader import loadMesh
4+
from splib.topology.dynamic import addDynamicTopology
45
from splib.core.enum_types import ElementType
56
from Sofa.Core import Object
67

7-
class Geometry(BasePrefab):
8-
topology : Object # This should be more specialized into the right SOFA type
9-
topologyModifier : Optional[Object]
10-
11-
def __init__(self, *args, **kwargs):
12-
BasePrefab.__init__(self, *args, **kwargs)
138

149

10+
@dataclasses.dataclass
1511
class GeometryParameter(BaseParameters):
16-
isDynamic : bool
12+
isDynamic : bool = False
1713
elementType : Optional[ElementType]
14+
positions : Optional[list]
15+
edges : Optional[list]
16+
triangles : Optional[list]
17+
tetrahedra : Optional[list]
18+
hexahedra : Optional[list]
19+
quads : Optional[list]
20+
21+
22+
class Geometry(BasePrefab):
23+
container : Object # This should be more specialized into the right SOFA type
24+
modifier : Optional[Object]
1825

26+
def __init__(self, params: GeometryParameter):
27+
BasePrefab.__init__(self, params)
28+
if(param.isDynamic):
29+
if(param.elementType is not None):
30+
addDynamicTopology(self, param.elementType, **kargs)
31+
else:
32+
raise ValueError
1933

20-
class FileGeometryParamtetrs(GeometryParameter):
34+
35+
@dataclasses.dataclass
36+
class FileGeometryParameters(GeometryParameter):
2137
filename : str
2238

2339

2440
class FileGeometry(Geometry):
25-
fileLoader : Object
41+
loader : Object
42+
43+
def __init__(self,param : FileGeometryParameters):
44+
loadMesh(self, param.filename, **param.kwargs)
45+
param.positions = "@loader.positions"
46+
param.edges = "@loader.edges"
47+
param.positions = "@loader.positions"
48+
param.positions = "@loader.positions"
49+
Geometry.__init__(self,param)
2650

27-
def __init__(self):
2851
pass
29-
52+
53+
54+
55+
def createScene(root):
56+
from stlib.entities.deformable import Deformable
57+
58+
fileParameters = FileGeometryParameters(filename = "MyFile.obj",
59+
isDynamic = True,
60+
elementType=ElementType.TETRA,
61+
name="geometry")
62+
63+
64+
65+
cubeGeometry = FileGeometry(FileGeometryParameters)
66+
67+
entityParam = Deformable.getParameters( geometry = cubeGeometry, name="MyCube")
68+
69+
70+
myCube = root.addChild("MyCube")
71+
cubeGeomtry = myCube.addChild("geometry")
72+
73+
cubeGeomtry.addObject("MeshObjLoader", name="loader", filenmae="MyFile.obj")
74+
cubeGeomtry.addObject("TetrahedronSetTopologyContainer", name="container", positions="@loader.positions")
75+
cubeGeomtry.addObject("TetrahedronSetTopologyModifier", name="modifier")
76+

0 commit comments

Comments
 (0)