[x3d-public] x3d.py users...quick question and answer. SFColor...MFColorRGBA smoke tests
Brutzman, Donald (Don) (CIV)
brutzman at nps.edu
Mon Jan 31 14:19:21 PST 2022
Hi John. Answers to many x3d.py syntax questions can be found in the Smoke Tests example:
* https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/python/examples/PythonX3dSmokeTests.py
For example, SFColor takes three parameters and SFColorRGBA takes four parameters. Excerpted source and results follow.
p.s. NOW HEAR THIS department: draconian intolerance of incorrect invocations is what makes Python strictness so reliable and repeatable. Enjoy! 8)
print ('- - - - - - - - - -')
print ('SFColor().NAME() = ' + SFColor().NAME());
print ('SFColor().DEFAULT_VALUE()= ' + str(SFColor().DEFAULT_VALUE()));
print ('SFColor().ARRAY_TYPE() = ' + str(SFColor().ARRAY_TYPE()));
print ('SFColor().TUPLE_SIZE() = ' + str(SFColor().TUPLE_SIZE()));
print ('SFColor().REGEX_XML() = ' + str(SFColor().REGEX_XML()));
print ('SFColor().TOOLTIP_URL() = ' + str(SFColor().TOOLTIP_URL()));
test = SFColor()
#test.value = (0, .5, 1, 5) # 4 elements, illegal tupleSize
#test.value = (0, .5, 5) # illegal value 5
test = SFColor((0, .5, 1)) # commas required
test.value = (0, .5, 1) # commas required
print ('SFColor test =', test)
print ('SFColor test.value =', test.value)
print ('SFColor test.XML() =', test.XML())
print ('SFColor test.VRML()=', test.VRML())
print ('SFColor test.JSON()=', test.JSON())
print ('SFColor isValidSFColor(test)=' + str(isValidSFColor(test)), flush=True)
print ('SFColor assertValidSFColor(test)'); assertValidSFColor(test)
print ('- - - - - - - - - -')
print ('MFColor().NAME() = ' + MFColor().NAME());
print ('MFColor().DEFAULT_VALUE()= ' + str(MFColor().DEFAULT_VALUE()));
print ('MFColor().ARRAY_TYPE() = ' + str(MFColor().ARRAY_TYPE()));
print ('MFColor().TUPLE_SIZE() = ' + str(MFColor().TUPLE_SIZE()));
print ('MFColor().REGEX_XML() = ' + str(MFColor().REGEX_XML()));
print ('MFColor().TOOLTIP_URL() = ' + str(MFColor().TOOLTIP_URL()));
test = MFColor()
test = MFColor([(0, .5, 1),(1, .5, 0)]) # commas required
test.value = [(0, .5, 1),(1, .5, 0)] # commas required
# test.value = (0, .5, 1, 5) # illegal value 5
# test = MFColor([0, .5, 1, 1, .5, 0]) # TODO
print ('MFColor test =', test)
print ('MFColor test.value =', test.value)
print ('MFColor test.XML() =', test.XML())
print ('MFColor test.VRML()=', test.VRML())
print ('MFColor test.JSON()=', test.JSON())
print ('MFColor isValidMFColor(test)=' + str(isValidMFColor(test)), flush=True)
print ('MFColor assertValidMFColor(test)'); assertValidMFColor(test)
print ('- - - - - - - - - -')
print ('SFColorRGBA().NAME() = ' + SFColorRGBA().NAME());
print ('SFColorRGBA().DEFAULT_VALUE()= ' + str(SFColorRGBA().DEFAULT_VALUE()));
print ('SFColorRGBA().ARRAY_TYPE() = ' + str(SFColorRGBA().ARRAY_TYPE()));
print ('SFColorRGBA().TUPLE_SIZE() = ' + str(SFColorRGBA().TUPLE_SIZE()));
print ('SFColorRGBA().REGEX_XML() = ' + str(SFColorRGBA().REGEX_XML()));
print ('SFColorRGBA().TOOLTIP_URL() = ' + str(SFColorRGBA().TOOLTIP_URL()));
test = SFColorRGBA()
test = SFColorRGBA((0, .5, 1, 0.75)) # commas required
test.value = (0, .5, 1, 0.75) # commas required
print ('SFColorRGBA test =', test)
print ('SFColorRGBA test.value =', test.value)
print ('SFColorRGBA test.XML() =', test.XML())
print ('SFColorRGBA test.VRML()=', test.VRML())
print ('SFColorRGBA test.JSON()=', test.JSON())
print ('SFColorRGBA isValidSFColorRGBA(test)=' + str(isValidSFColorRGBA(test)), flush=True)
print ('SFColorRGBA assertValidSFColorRGBA(test)'); assertValidSFColorRGBA(test)
print ('MFColorRGBA().NAME() = ' + MFColorRGBA().NAME());
print ('MFColorRGBA().DEFAULT_VALUE()= ' + str(MFColorRGBA().DEFAULT_VALUE()));
print ('MFColorRGBA().ARRAY_TYPE() = ' + str(MFColorRGBA().ARRAY_TYPE()));
print ('MFColorRGBA().TUPLE_SIZE() = ' + str(MFColorRGBA().TUPLE_SIZE()));
print ('MFColorRGBA().REGEX_XML() = ' + str(MFColorRGBA().REGEX_XML()));
print ('MFColorRGBA().TOOLTIP_URL() = ' + str(MFColorRGBA().TOOLTIP_URL()));
test = MFColorRGBA()
test = MFColorRGBA([(0, .5, 1, 0.75),(1, .5, 0, 0.75)]) # commas required
test.value = [(0, .5, 1, 0.75),(1, .5, 0, 0.75)] # commas required
# test = MFColorRGBA( 0, .5, 1, 0.75, 1, .5, 0, 0.75 ) # TODO
print ('MFColorRGBA test =', test)
print ('MFColorRGBA test.value =', test.value)
print ('MFColorRGBA test.XML() =', test.XML())
print ('MFColorRGBA test.VRML()=', test.VRML())
print ('MFColorRGBA test.JSON()=', test.JSON())
print ('MFColorRGBA isValidMFColorRGBA(test)=' + str(isValidMFColorRGBA(test)), flush=True)
print ('MFColorRGBA assertValidMFColorRGBA(test)'); assertValidMFColorRGBA(test)
print ('- - - - - - - - - -')
Results are found at
* https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/python/build.examples.log.txt
- - - - - - - - - -
SFColor().NAME() = SFColor
SFColor().DEFAULT_VALUE()= (0, 0, 0)
SFColor().ARRAY_TYPE() = False
SFColor().TUPLE_SIZE() = 3
SFColor().REGEX_XML() = (\s)*(([+]?((0(\.[0-9]*)?|\.[0-9]+)|1(\.0*)?)([Ee][+-]?[0-9]+)?)(\s)+){2}([+]?((0(\.[0-9]*)?|\.[0-9]+)|1(\.0*)?)([Ee][+-]?[0-9]+)?)(\s)*
SFColor().TOOLTIP_URL() = https://www.web3d.org/x3d/tooltips/X3dTooltips.html#SFColor
SFColor test = (0, 0.5, 1)
SFColor test.value = (0, 0.5, 1)
SFColor test.XML() = 0 0.5 1
SFColor test.VRML()= 0 0.5 1
SFColor test.JSON()= 0 0.5 1
SFColor isValidSFColor(test)=True
SFColor assertValidSFColor(test)
- - - - - - - - - -
MFColor().NAME() = MFColor
MFColor().DEFAULT_VALUE()= []
MFColor().ARRAY_TYPE() = True
MFColor().TUPLE_SIZE() = 3
MFColor().REGEX_XML() = (\s)*((([+-]?((0(\.[0-9]*)?|\.[0-9]+)|1(\.0*)?)([Ee][+-]?[0-9]+)?)(\s)+){2}([+-]?((0(\.[0-9]*)?|\.[0-9]+)|1(\.0*)?)([Ee][+-]?[0-9]+)?)\s*,?\s*)*
MFColor().TOOLTIP_URL() = https://www.web3d.org/x3d/tooltips/X3dTooltips.html#MFColor
MFColor test = [(0, 0.5, 1), (1, 0.5, 0)]
MFColor test.value = [(0, 0.5, 1), (1, 0.5, 0)]
MFColor test.XML() = 0 0.5 1 1 0.5 0
MFColor test.VRML()= [0 0.5 1 1 0.5 0]
MFColor test.JSON()= 0 0.5 1 1 0.5 0
MFColor isValidMFColor(test)=True
MFColor assertValidMFColor(test)
- - - - - - - - - -
SFColorRGBA().NAME() = SFColorRGBA
SFColorRGBA().DEFAULT_VALUE()= (0, 0, 0, 0)
SFColorRGBA().ARRAY_TYPE() = False
SFColorRGBA().TUPLE_SIZE() = 4
SFColorRGBA().REGEX_XML() = (\s)*(([+-]?((0(\.[0-9]*)?|\.[0-9]+)|1(\.0*)?)([Ee][+-]?[0-9]+)?)(\s)+){3}([+-]?((0(\.[0-9]*)?|\.[0-9]+)|1(\.0*)?)([Ee][+-]?[0-9]+)?)(\s)*
SFColorRGBA().TOOLTIP_URL() = https://www.web3d.org/x3d/tooltips/X3dTooltips.html#SFColorRGBA
SFColorRGBA test = (0, 0.5, 1, 0.75)
SFColorRGBA test.value = (0, 0.5, 1, 0.75)
SFColorRGBA test.XML() = 0 0.5 1 0.75
SFColorRGBA test.VRML()= 0 0.5 1 0.75
SFColorRGBA test.JSON()= 0 0.5 1 0.75
SFColorRGBA isValidSFColorRGBA(test)=True
SFColorRGBA assertValidSFColorRGBA(test)
MFColorRGBA().NAME() = MFColorRGBA
MFColorRGBA().DEFAULT_VALUE()= []
MFColorRGBA().ARRAY_TYPE() = True
MFColorRGBA().TUPLE_SIZE() = 4
MFColorRGBA().REGEX_XML() = (\s)*((([+-]?((0(\.[0-9]*)?|\.[0-9]+)|1(\.0*)?)([Ee][+-]?[0-9]+)?)(\s)+){3}([+-]?((0(\.[0-9]*)?|\.[0-9]+)|1(\.0*)?)([Ee][+-]?[0-9]+)?)\s*,?\s*)*
MFColorRGBA().TOOLTIP_URL() = https://www.web3d.org/x3d/tooltips/X3dTooltips.html#MFColorRGBA
MFColorRGBA test = [(0, 0.5, 1, 0.75), (1, 0.5, 0, 0.75)]
MFColorRGBA test.value = [(0, 0.5, 1, 0.75), (1, 0.5, 0, 0.75)]
MFColorRGBA test.XML() = 0 0.5 1 0.75 1 0.5 0 0.75
MFColorRGBA test.VRML()= [0 0.5 1 0.75 1 0.5 0 0.75]
MFColorRGBA test.JSON()= 0 0.5 1 0.75 1 0.5 0 0.75
MFColorRGBA isValidMFColorRGBA(test)=True
MFColorRGBA assertValidMFColorRGBA(test)
- - - - - - - - - -
all the best, Don
--
Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu
Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149
X3D graphics, virtual worlds, Navy robotics https:// faculty.nps.edu/brutzman
From: John Carlson <yottzumm at gmail.com>
Sent: Monday, January 31, 2022 1:21 PM
To: Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>; Vincent Marchetti <vmarchetti at kshell.com>; X3D Graphics public mailing list <x3d-public at web3d.org>
Subject: x3d.py users...quick question and answer.
I'm guessing I have to so something like
value=SFColor((0.9,0.9,0.9))
?? No!
I will look through examples of generated JSON from X3dToPython.xslt, found in flower2.py. I will try the following:
flowers2.py: field(name='diffuseColor',accessType='inputOutput',type='SFColor',value=(1,0.5,0)),
flowers2.py: field(name='specularColor',accessType='inputOutput',type='SFColor',value=(1,0.5,0)),
Looks like it works, for anyone confused why you can't pass 3 (actually 4) values to SFColor!
I'm approaching near completion of x3djsonld.py, except for HAnim it appears. I might call you Joe, so prepare to video (on Zoom?). I haven't looked into these issues yet, so let me do that first.
X3dToPython.xslt is still preferred, as I haven't handled children (comments) and value in Shape and Text.
Note: I am reading in JSON.
Traceback (most recent call last):
File "C:\Users\john\X3DJSONLD\src\main\python\net\coderextreme\data\ViewFrustumPrototype.py", line 17, in <module>
field(name="lineColor", accessType="inputOutput", appinfo="RGB color of ViewFrustum outline, default value 0.9 0.9 0.9", type="SFColor", value=SFColor(0.9,0.9,0.9)),
TypeError: SFColor.__init__() takes from 1 to 2 positional arguments but 4 were given
Error: ../python/net/coderextreme/data/ViewFrustumPrototype.py failed to parse
python ../python/x3djsonld.py ../data/x3dconnector.json ../python/net/coderextreme/data/x3dconnector.py
../python/net/coderextreme/data/x3dconnector.py
python ../python/x3djsonld.py ../data/x3dconnectorProto.json ../python/net/coderextreme/data/x3dconnectorProto.py
../python/net/coderextreme/data/x3dconnectorProto.py
python ../python/x3djsonld.py ../data/X3dHeaderPrototypeSyntaxExamples.json ../python/net/coderextreme/data/X3dHeaderPrototypeSyntaxExamples.py
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20220131/d4a239f2/attachment-0001.html>
More information about the x3d-public
mailing list