11from stlib .core .basePrefab import BasePrefab
2- from stlib .core .baseParameters import BaseParameters , Optional
2+ from stlib .core .baseParameters import BaseParameters , Optional , dataclasses
33from splib .topology .loader import loadMesh
4+ from splib .topology .dynamic import addDynamicTopology
45from splib .core .enum_types import ElementType
56from 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
1511class 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
2440class 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