<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>What I believe this means is that the addChild is not found on an abstract class (not the TransformObject concrete class which is NOT shown below, but it looks like what’s returned from setRotation, X3DConcreteNode, which I believe TransformObject inherits from, but please check).  It’s basically the same error as we saw before with interfaces, but now rearing it’s head on abstract classes.  So look what addChild is called on, and we can try to cast or wrap like we did for SF and MF fields.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So basically, we would have to wrap each set call in a cast or wrap.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>That’s my best suggestion on fixing without modifying or extending pyjnius.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:brutzman@nps.edu">Brutzman, Donald (Don) (CIV)</a><br><b>Sent: </b>Thursday, May 9, 2019 9:58 AM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: X3DPSAIL error</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Not seeing what is wrong here.  Original X3D excerpt:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>     <Transform rotation='1 0 0 1.395'></p><p class=MsoNormal>                <Transform DEF='FishTransform'></p><p class=MsoNormal>                 <IS></p><p class=MsoNormal>               <connect nodeField='scale' protoField='fishScale'/></p><p class=MsoNormal>                 </IS></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The java version works, compiling and running OK.  Excerpt:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>     .addChild(new TransformObject().setRotation(1.0f,0.0f,0.0f,1.395f)</p><p class=MsoNormal>       .addChild(new TransformObject("FishTransform")</p><p class=MsoNormal>         .setIS(new ISObject()</p><p class=MsoNormal>           .addConnect(new connectObject().setNodeField("scale").setProtoField("fishScale")))</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The python version looks like:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>         .addChild(Transform() \</p><p class=MsoNormal>          .setDEF(SFString("FishTransform")) \</p><p class=MsoNormal>          .setIS(IS() \</p><p class=MsoNormal>           .addConnect(connect() \</p><p class=MsoNormal>            .setNodeField(SFString("scale")) \</p><p class=MsoNormal>            .setProtoField(SFString("fishScale")) \</p><p class=MsoNormal>           ) \</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I get the same error as you - but I don't see what is wrong here either.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Of note is that Python source is interpreted, i.e. compiled and run one line at a time... a common error mode for interpreted languages is that they misinterpret and provide misdirection regarding where an error actually occurs.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Possibly the error occurs before or after this block; still not seeing it though.  You might try cutting out lines of original .x3d model piecemeal in an attempt to isolate the actual cause further. "Moving an error around" is a good debug strategy.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Current versions attached - good night + good luck!</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 5/8/2019 8:26 PM, John Carlson wrote:</p><p class=MsoNormal>> processSingleScene.pythonValidation:</p><p class=MsoNormal>> </p><p class=MsoNormal>>       [echo] processSingleScene.python C:\x3d-code\www.web3d.org\x3d\content\examples\X3dForWebAuthors\Chapter05AppearanceMaterialTextures\CircleFishPrototype.future.py</p><p class=MsoNormal>> </p><p class=MsoNormal>>       [echo] Loading X3D model as .py program, if successful then saving as round-trip .x3d version:</p><p class=MsoNormal>> </p><p class=MsoNormal>>       [exec] Traceback (most recent call last):</p><p class=MsoNormal>> </p><p class=MsoNormal>>       [exec]   File "C:\x3d-code\www.web3d.org\x3d\content\examples\X3dForWebAuthors\Chapter05AppearanceMaterialTextures\CircleFishPrototype.future.py", line 92, in <module></p><p class=MsoNormal>> </p><p class=MsoNormal>>       [exec]     .addConnect(connect().setNodeField(SFString("scale")).setProtoField(SFString("fishScale")) \</p><p class=MsoNormal>> </p><p class=MsoNormal>>       [exec] AttributeError: 'org.web3d.x3d.jsail.X3DConcreteNode' object has no attribute 'addChild'</p><p class=MsoNormal>> </p><p class=MsoNormal>>       [exec] Result: 1</p><p class=MsoNormal>> </p><p class=MsoNormal>>       [echo] =====================</p><p class=MsoNormal>all the best, Don</p><p class=MsoNormal>-- </p><p class=MsoNormal>Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman@nps.edu</p><p class=MsoNormal>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149</p><p class=MsoNormal>X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>