Skip to content

Commit ebdade2

Browse files
cleaning to fix deformable example
1 parent 75fa28f commit ebdade2

6 files changed

Lines changed: 42 additions & 42 deletions

File tree

splib/mechanics/mass.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ def addMass(node, elem:ElementType, totalMass=DEFAULT_VALUE, massDensity=DEFAULT
1111
print("[warning] You defined the totalMass and the massDensity in the same time, only taking massDensity into account")
1212
del kwargs["massDensity"]
1313

14-
if(elem !=ElementType.POINTS and elem !=ElementType.EDGES):
15-
node.addObject("MeshMatrixMass",name="mass", totalMass=totalMass, massDensity=massDensity, lumping=lumping, **kwargs)
16-
else:
17-
if (not isDefault(massDensity)) :
18-
print("[warning] mass density can only be used on a surface or volumetric topology. Please use totalMass instead")
19-
if (not isDefault(lumping)) :
20-
print("[warning] lumping can only be set for surface or volumetric topology")
14+
# if(elem !=ElementType.POINTS and elem !=ElementType.EDGES):
15+
# node.addObject("MeshMatrixMass",name="mass", totalMass=totalMass, massDensity=massDensity, lumping=lumping, **kwargs)
16+
# else:
17+
# if (not isDefault(massDensity)) :
18+
# print("[warning] mass density can only be used on a surface or volumetric topology. Please use totalMass instead")
19+
# if (not isDefault(lumping)) :
20+
# print("[warning] lumping can only be set for surface or volumetric topology")
2121

22-
node.addObject("UniformMass",name="mass", totalMass=totalMass, **kwargs)
22+
node.addObject("UniformMass",name="mass", totalMass=totalMass, **kwargs)
2323

stlib/__init__.py

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
__all__ = ["core","entities","geometries","materials","collision","visual"]
22

33
import Sofa.Core
4+
45
def __genericAdd(self : Sofa.Core.Node, typeName, **kwargs):
56
def findName(cname, names):
67
"""Compute a working unique name in the node"""
@@ -13,35 +14,32 @@ def findName(cname, names):
1314

1415
# Check if a name is provided, if not, use the one of the class
1516
params = kwargs.copy()
16-
isNode = False
17-
if "name" not in params:
18-
if isinstance(typeName, str):
19-
params["name"] = typeName
20-
isNode=True
21-
elif isinstance(typeName, type) and issubclass(typeName, Sofa.Core.Node):
22-
params["name"] = "Node"
23-
isNode=True
24-
elif isinstance(typeName, Sofa.Core.Node):
25-
params["name"] = "Node"
26-
isNode=True
27-
elif isinstance(typeName, type) and issubclass(typeName, Sofa.Core.Object):
28-
params["name"] = typeName.name.value
29-
elif isinstance(typeName, type) and issubclass(typeName, Sofa.Core.ObjectDeclaration):
30-
params["name"] = typeName.__name__
31-
else:
32-
raise RuntimeError("Invalid argument ", typeName)
17+
# if "name" not in params:
18+
# if isinstance(typeName, str):
19+
# params["name"] = typeName
20+
# elif isinstance(typeName, type) and issubclass(typeName, Sofa.Core.Node):
21+
# params["name"] = typeName.__name__
22+
# elif isinstance(typeName, Sofa.Core.Node):
23+
# params["name"] = "Node"
24+
# elif isinstance(typeName, type) and issubclass(typeName, Sofa.Core.Object):
25+
# params["name"] = typeName.name.value
26+
# elif isinstance(typeName, type) and issubclass(typeName, Sofa.Core.ObjectDeclaration):
27+
# params["name"] = typeName.__name__
28+
# else:
29+
# raise RuntimeError("Invalid argument ", typeName)
3330

34-
# Check if the name already exists, if this happens, create a new one.
35-
if params["name"] in self.children or params["name"] in self.objects:
36-
names = {node.name.value for node in self.children}
37-
names = names.union({object.name.value for object in self.objects})
38-
params["name"] = findName(params["name"], names)
31+
# Check if the name already exists, if this happens, create a new one.
32+
# if params["name"] in self.children or params["name"] in self.objects:
33+
# names = {node.name.value for node in self.children}
34+
# names = names.union({object.name.value for object in self.objects})
35+
# params["name"] = findName(params["name"], names)
3936

4037
# Dispatch the creation to either addObject or addChild
41-
if isinstance(typeName, type) and issubclass(typeName, Sofa.Core.Node):
42-
pref = self.addChild(typeName(params["name"]))
38+
if isinstance(typeName, type) and issubclass(typeName, core.basePrefab.BasePrefab):
39+
pref = self.addChild(typeName(**params))
40+
pref.init()
4341
elif isinstance(typeName, Sofa.Core.Node):
44-
pref = self.addChild(typeName)
42+
pref = self.addChild(typeName(**params))
4543
elif isinstance(typeName, type) and issubclass(typeName, Sofa.Core.Object):
4644
pref = self.addObject(typeName(**params))
4745
elif isinstance(typeName, type) and issubclass(typeName, Sofa.Core.ObjectDeclaration):

stlib/core/basePrefab.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ class BasePrefab(Sofa.Core.Node):
88
A Prefab is a Sofa.Node that assembles a set of components and nodes
99
"""
1010

11-
def __init__(self, params: BasePrefabParameters):
12-
Sofa.Core.Node.__init__(self, name=params.name)
13-
self.parameters = params
11+
def __init__(self, parameters: BasePrefabParameters):
12+
Sofa.Core.Node.__init__(self, name=parameters.name)
13+
self.parameters = parameters
1414

1515
def init(self):
1616
raise NotImplemented("To be overridden by child class")

stlib/entities/__entity__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,22 +43,22 @@ def __init__(self, parameters=EntityParameters(), **kwargs):
4343

4444

4545
def init(self):
46-
self.geometry = self.add(Geometry, self.parameters.geometry)
46+
self.geometry = self.add(Geometry, parameters=self.parameters.geometry)
4747

4848
### Check compatilibility of Material
4949
if self.parameters.material.stateType != self.parameters.stateType:
5050
print("WARNING: imcompatibility between templates of both the entity and the material")
5151
self.parameters.material.stateType = self.parameters.stateType
5252

53-
self.material = self.add(Material, self.parameters.material)
53+
self.material = self.add(Material, parameters=self.parameters.material)
5454
self.material.States.position.parent = self.geometry.container.position.linkpath
5555

5656
if self.parameters.collision is not None:
57-
self.collision = self.add(Collision, self.parameters.collision)
57+
self.collision = self.add(Collision, parameters=self.parameters.collision)
5858
self.addMapping(self.collision)
5959

6060
if self.parameters.visual is not None:
61-
self.visual = self.add(Visual, self.parameters.visual)
61+
self.visual = self.add(Visual, parameters=self.parameters.visual)
6262
self.addMapping(self.visual)
6363

6464

stlib/materials/deformable.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def createScene(root) :
2929
from stlib.visual import VisualParameters
3030
from stlib.geometries.file import FileParameters
3131

32+
root.addObject('RequiredPlugin', name='Sofa.Component.Visual') # Needed to use components [VisualStyle]
3233
root.addObject("VisualStyle", displayFlags=["showBehavior"])
3334

3435
bunnyParameters = EntityParameters()
@@ -42,4 +43,5 @@ def createScene(root) :
4243
# destinationType=ElementType.TRIANGLES)
4344
bunnyParameters.visual.geometry = FileParameters(filename="mesh/Bunny.stl")
4445
bunnyParameters.visual.color = [1, 1, 1, 0.5]
45-
bunny = root.add(Entity, bunnyParameters)
46+
bunny = root.add(Entity, parameters=bunnyParameters)
47+
# bunny.init()

stlib/visual.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def __init__(self, parameters: VisualParameters):
2121
BasePrefab.__init__(self, parameters)
2222

2323
def init(self):
24-
self.geometry = self.add(Geometry, self.parameters.geometry)
24+
self.geometry = self.add(Geometry, parameters=self.parameters.geometry)
2525
self.addObject("OglModel", color=self.parameters.color, src=self.geometry.container.linkpath)
2626

2727

0 commit comments

Comments
 (0)