<div dir="ltr">Hello,<div><br></div><div>I've currently been porting the pythonocc x3d exporter code to the x3d.py official package (latest release 0.0.31). Here are the feedbacks from my first experiments. I will reply to this message to report other issues as long as they come.<br><br>1. I'm confused with the way lists and tuples are used to pass sequences to class methods:<br><br>For example, the Coordinate node accepts both lists and tuples as a point vector:<br><font face="monospace">>>> import x3d<br>x3d.py package loaded, have fun with X3D Graphics!<br>>>> x3d.Coordinate(point=[[1,0,0], [0,1,0]])<br><x3d.Coordinate object at 0x000001EA57A437F0><br>>>> x3d.Coordinate(point=[(1,0,0), (0,1,0)])<br><x3d.Coordinate object at 0x000001EA57A43710><br></font><br>But the Normal node only takes list of tuples:<br><font face="monospace">>>> x3d.Normal(vector=[(1,0,0), (0,1,0)])<br><x3d.Normal object at 0x000001EA582FA160><br>>>> x3d.Normal(vector=[[1,0,0], [0,1,0]])<br>Traceback (most recent call last):<br>  File "<stdin>", line 1, in <module><br>  File "D:\Devel\pythonocc-core\src\Extend\DataExchange\x3d_standard\x3d.py", line 35739, in __init__<br>    self.vector = vector<br>  File "D:\Devel\pythonocc-core\src\Extend\DataExchange\x3d_standard\x3d.py", line 35749, in vector<br>    assertGreaterThanEquals('vector', vector, -1)<br>  File "D:\Devel\pythonocc-core\src\Extend\DataExchange\x3d_standard\x3d.py", line 1652, in assertGreaterThanEquals<br>    assert isGreaterThanEquals(value, minimum), fieldName + '=' + str(value) + ' fails assertGreaterThanEquals minimum=' + str(minimum)<br>  File "D:\Devel\pythonocc-core\src\Extend\DataExchange\x3d_standard\x3d.py", line 1641, in isGreaterThanEquals<br>    if each < minimum:<br>TypeError: '<' not supported between instances of 'list' and 'int'</font></div><div><br></div><div>IMO all sequence parameters should accept both lists and tuples and all possible combinations (list of lists, list of tuples, tuple of lists, tuple of tuples).</div><div><br></div><div>2. I noticed the IndexedTriangleSet does not have any creaseAngle field, whereas x3dom supports it.<br><br></div><div><font face="monospace">>>> x3d.IndexedFaceSet(creaseAngle=0.2)<br></font></div><div><font face="monospace"><x3d.IndexedFaceSet object at 0x000001EA5ED7A7B8><br></font></div><div><font face="monospace">>>> x3d.IndexedTriangleSet(creaseAngle=0.2)<br>Traceback (most recent call last):<br>  File "<stdin>", line 1, in <module><br>TypeError: __init__() got an unexpected keyword argument 'creaseAngle'<br></font></div><div><br></div><div>It actually follows the standard specification (<a href="https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/rendering.html#IndexedTriangleSet">https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/rendering.html#IndexedTriangleSet</a>), my question is then related to the standard itself: why do the IndexedTriangleSet (and some other geometries) does not define the creaseAngle field ?</div><div><br></div><div>Best Regards,</div><div><br></div><div>Thomas Paviot<br></div><div><br></div><div><br><div><br></div></div></div>