####################################################################################################
#
# Invoking X3D model self-test:
#
# $ python Asa.py
#
# Python package x3d.py package is available on PyPI for import.
# This approach simplifies Python X3D deployment and use.
# https://pypi.org/project/x3d
#
# Installation:
# pip install x3d
# or
# python -m pip install x3d
#
# Developer options for loading x3d package in other Python programs:
#
# from x3d import * # preferred approach, terser source that avoids x3d.* class prefixes
#
# or
# import x3d # traditional way to subclass x3d package, all classes require x3d.* prefix,
# # but python source is very verbose, for example x3d.Material x3d.Shape etc.
# # X3dToPython.xslt stylesheet insertPackagePrefix=true supports this option.
#
####################################################################################################
from x3d import *
newModel=X3D(profile='Immersive',version='4.0',
head=head(
children=[
meta(content='Asa.x3d',name='title'),
meta(content='Rio de Janeiro',name='description'),
meta(content='Luciano Soares',name='creator'),
meta(content='2 Outubro 2003',name='translated'),
meta(content='30 July 2023',name='modified'),
meta(content="Luciano P. Soares, Leonardo Nomura, Marcio C. Cabral, Mario Nagamura, Roseli D. Lopes, and Marcelo K. Zuffo. 2005. Virtual hang-gliding over Rio de Janeiro. In ACM SIGGRAPH 2005 Emerging technologies (SIGGRAPH '05). Association for Computing Machinery, New York, NY, USA, 29–es.",name='reference'),
meta(content='https://doi.org/10.1145/1187297.1187327',name='reference'),
meta(content='Asa Wing',name='subject'),
meta(content='Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html',name='generator'),
meta(content='X3D-Edit 4.0, https://savage.nps.edu/X3D-Edit',name='generator'),
meta(content='https://savage.nps.edu/Savage/Locations/RioDeJaneiro/Asa.x3d',name='identifier'),
meta(content='../../license.html',name='license'),
meta(content='add metadata for media rights',name='TODO'),
meta(content='recover lost sound file: sound/drumloop.wav',name='TODO')]),
Scene=Scene(
#
children=[
WorldInfo(title='Asa.x3d'),
Sound(intensity=0.01,
source=AudioClip(DEF='MYSOUND3',description='joas',loop=True,url=["joas.mp3","https://savage.nps.edu/Savage/Locations/RioDeJaneiro/joas.mp3"])),
DirectionalLight(direction=(0.2,-1,-0.2)),
DirectionalLight(direction=(0,1,0)),
PointLight(location=(1000,0,-1000)),
PointLight(location=(-1000,0,1000)),
Switch(whichChoice=-1,
children=[
Shape(
appearance=Appearance(
material=Material(DEF='Asa_Delta_0',diffuseColor=(0.16,0.486293,0.8),shininess=0.0))),
Shape(
appearance=Appearance(
material=Material(DEF='Asa_Delta1_1',shininess=0.0))),
Shape(
geometry=IndexedFaceSet(DEF='pCylinder38_0Geo',convex=False,coordIndex=[1,2,9,8,-1,3,4,11,10,-1,4,5,12,11,-1,6,0,7,13,-1,8,9,16,15,-1,10,11,18,17,-1,11,12,19,18,-1,13,7,14,20,-1,1,0,21,-1,2,1,21,-1,3,2,21,-1,4,3,21,-1,5,4,21,-1,6,5,21,-1,0,6,21,-1,14,15,22,-1,15,16,22,-1,16,17,22,-1,17,18,22,-1,18,19,22,-1,19,20,22,-1,20,14,22,-1],normalIndex=[4,5,6,7,-1,12,13,14,15,-1,16,17,18,19,-1,24,25,26,27,-1,7,6,30,31,-1,15,14,34,35,-1,19,18,36,37,-1,27,26,40,41,-1,42,43,44,-1,45,42,44,-1,46,45,44,-1,47,46,44,-1,48,47,44,-1,49,48,44,-1,43,49,44,-1,50,51,52,-1,51,53,52,-1,53,54,52,-1,54,55,52,-1,55,56,52,-1,56,57,52,-1,57,50,52,-1],solid=False,
normal=Normal(vector=[(0.577,0.182,-0.796),(0.577,0.182,-0.796),(-0.0,0.223,-0.975),(-0.0,0.223,-0.975),(0.493,-0.543,-0.68),(0.493,-0.543,-0.68),(0.0,-0.623,-0.782),(0.0,-0.623,-0.782),(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(-0.472,-0.569,0.673),(-0.472,-0.569,0.673),(0.0,-0.645,0.764),(0.0,-0.645,0.764),(-0.469,0.59,0.658),(-0.469,0.59,0.658),(0.0,0.668,0.744),(0.0,0.668,0.744),(-0.3,0.86,0.414),(-0.3,0.86,0.414),(0.0,0.901,0.434),(0.0,0.901,0.434),(0.3,0.86,-0.414),(0.3,0.86,-0.414),(0.0,0.901,-0.434),(0.0,0.901,-0.434),(-0.577,0.182,-0.796),(-0.577,0.182,-0.796),(-0.493,-0.543,-0.68),(-0.493,-0.543,-0.68),(-0.0,-1.0,-0.0),(-0.0,-1.0,-0.0),(0.472,-0.569,0.673),(0.472,-0.569,0.673),(0.469,0.59,0.658),(0.469,0.59,0.658),(0.3,0.86,0.414),(0.3,0.86,0.414),(-0.3,0.86,-0.414),(-0.3,0.86,-0.414),(1.0,-0.0,0.0),(1.0,-0.0,0.0),(1.0,-0.0,0.0),(1.0,0.0,0.0),(1.0,-0.0,0.0),(1.0,0.0,0.0),(1.0,0.0,0.0),(1.0,-0.0,0.0),(-1.0,-0.0,0.0),(-1.0,0.0,0.0),(-1.0,-0.0,0.0),(-1.0,0.0,0.0),(-1.0,0.0,0.0),(-1.0,0.0,0.0),(-1.0,-0.0,0.0),(-1.0,-0.0,0.0)]),
coord=Coordinate(DEF='pCylinder38GeoPoints',point=[(18.442,2.134,5.846),(18.442,1.816,5.773),(18.442,1.562,5.976),(18.442,1.562,6.302),(18.442,1.816,6.505),(18.442,2.134,6.432),(18.442,2.275,6.139),(0.0,2.134,-7.509),(-0.0,1.816,-7.581),(-0.0,1.562,-7.378),(-0.0,1.562,-6.652),(-0.0,1.816,-6.425),(0.0,2.134,-6.922),(0.0,2.275,-7.216),(-18.442,2.134,5.846),(-18.442,1.816,5.773),(-18.442,1.562,5.976),(-18.442,1.562,6.302),(-18.442,1.816,6.505),(-18.442,2.134,6.432),(-18.442,2.275,6.139),(18.442,1.9,6.139),(-18.442,1.9,6.139)]))),
Shape(
geometry=IndexedFaceSet(DEF='pCylinder38_1Geo',convex=False,coordIndex=[0,1,8,7,-1,2,3,10,9,-1,5,6,13,12,-1,7,8,15,14,-1,9,10,17,16,-1,12,13,20,19,-1],normalIndex=[0,1,2,3,-1,8,9,10,11,-1,20,21,22,23,-1,3,2,28,29,-1,11,10,32,33,-1,23,22,38,39,-1],solid=False,
normal=Normal(vector=[(0.577,0.182,-0.796),(0.577,0.182,-0.796),(-0.0,0.223,-0.975),(-0.0,0.223,-0.975),(0.493,-0.543,-0.68),(0.493,-0.543,-0.68),(0.0,-0.623,-0.782),(0.0,-0.623,-0.782),(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(-0.472,-0.569,0.673),(-0.472,-0.569,0.673),(0.0,-0.645,0.764),(0.0,-0.645,0.764),(-0.469,0.59,0.658),(-0.469,0.59,0.658),(0.0,0.668,0.744),(0.0,0.668,0.744),(-0.3,0.86,0.414),(-0.3,0.86,0.414),(0.0,0.901,0.434),(0.0,0.901,0.434),(0.3,0.86,-0.414),(0.3,0.86,-0.414),(0.0,0.901,-0.434),(0.0,0.901,-0.434),(-0.577,0.182,-0.796),(-0.577,0.182,-0.796),(-0.493,-0.543,-0.68),(-0.493,-0.543,-0.68),(-0.0,-1.0,-0.0),(-0.0,-1.0,-0.0),(0.472,-0.569,0.673),(0.472,-0.569,0.673),(0.469,0.59,0.658),(0.469,0.59,0.658),(0.3,0.86,0.414),(0.3,0.86,0.414),(-0.3,0.86,-0.414),(-0.3,0.86,-0.414),(1.0,-0.0,0.0),(1.0,-0.0,0.0),(1.0,-0.0,0.0),(1.0,0.0,0.0),(1.0,-0.0,0.0),(1.0,0.0,0.0),(1.0,0.0,0.0),(1.0,-0.0,0.0),(-1.0,-0.0,0.0),(-1.0,0.0,0.0),(-1.0,-0.0,0.0),(-1.0,0.0,0.0),(-1.0,0.0,0.0),(-1.0,0.0,0.0),(-1.0,-0.0,0.0),(-1.0,-0.0,0.0)]),
coord=Coordinate(USE='pCylinder38GeoPoints'))),
Shape(
geometry=IndexedFaceSet(DEF='pPlane71_0Geo',convex=False,coordIndex=[0,1,8,7,-1,1,2,9,8,-1,4,5,12,11,-1,5,6,13,12,-1],normalIndex=[0,1,2,3,-1,1,4,5,2,-1,8,10,11,9,-1,10,12,13,11,-1],solid=False,
normal=Normal(vector=[(0.0,1.0,0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,0.0),(0.0,1.0,0.0)]),
coord=Coordinate(DEF='pPlane71GeoPoints',point=[(-16.342,2.086,7.815),(-11.084,2.086,5.759),(-5.565,2.086,4.533),(-0.008,2.086,4.088),(5.55,2.086,4.533),(11.069,2.086,5.759),(16.327,2.086,7.815),(-18.262,2.086,6.287),(-11.123,2.086,0.927),(-5.565,2.086,-2.951),(-0.008,2.086,-6.884),(5.55,2.086,-2.951),(11.108,2.086,0.927),(18.247,2.086,6.287)]))),
Shape(
geometry=IndexedFaceSet(DEF='pPlane71_1Geo',convex=False,coordIndex=[2,3,10,9,-1,3,4,11,10,-1],normalIndex=[4,6,7,5,-1,6,8,9,7,-1],solid=False,
normal=Normal(vector=[(0.0,1.0,0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,-0.0),(0.0,1.0,0.0),(0.0,1.0,0.0)]),
coord=Coordinate(USE='pPlane71GeoPoints'))),
Shape(
geometry=IndexedFaceSet(DEF='pTorus4_0Geo',convex=False,coordIndex=[2,1,7,8,-1,4,3,9,10,-1,0,5,11,6,-1,8,7,13,14,-1,10,9,15,16,-1,6,11,17,12,-1,14,13,19,20,-1,16,15,21,22,-1,12,17,23,18,-1,20,19,25,26,-1,22,21,27,28,-1,18,23,29,24,-1,26,25,31,32,-1,28,27,33,34,-1,24,29,35,30,-1,32,31,37,38,-1,34,33,39,40,-1,30,35,41,36,-1,38,37,1,2,-1,40,39,3,4,-1,36,41,5,0,-1],normalIndex=[4,5,6,7,-1,12,13,14,15,-1,20,21,22,23,-1,28,29,30,31,-1,36,37,38,39,-1,44,45,46,47,-1,52,53,54,55,-1,60,61,62,63,-1,68,69,70,71,-1,76,77,78,79,-1,84,85,86,87,-1,92,93,94,95,-1,100,101,102,103,-1,108,109,110,111,-1,116,117,118,119,-1,124,125,126,127,-1,132,133,134,135,-1,140,141,142,143,-1,148,149,150,151,-1,156,157,158,159,-1,164,165,166,167,-1],solid=False,
normal=Normal(vector=[(-0.069,-0.941,0.331),(-0.069,-0.941,0.331),(-0.069,-0.941,0.331),(-0.069,-0.941,0.331),(0.832,-0.413,0.371),(0.832,-0.413,0.371),(0.832,-0.413,0.371),(0.832,-0.413,0.371),(0.767,0.514,0.384),(0.767,0.514,0.384),(0.767,0.514,0.384),(0.767,0.514,0.384),(0.0,0.923,0.385),(0.0,0.923,0.385),(0.0,0.923,0.385),(0.0,0.923,0.385),(-0.793,0.472,0.385),(-0.793,0.472,0.385),(-0.793,0.472,0.385),(-0.793,0.472,0.385),(-0.826,-0.425,0.371),(-0.826,-0.425,0.371),(-0.826,-0.425,0.371),(-0.826,-0.425,0.371),(-0.008,-0.306,0.952),(-0.008,-0.306,0.952),(-0.008,-0.306,0.952),(-0.008,-0.306,0.952),(0.239,-0.119,0.964),(0.239,-0.119,0.964),(0.239,-0.119,0.964),(0.239,-0.119,0.964),(0.214,0.139,0.967),(0.214,0.139,0.967),(0.214,0.139,0.967),(0.214,0.139,0.967),(0.0,0.255,0.967),(0.0,0.255,0.967),(0.0,0.255,0.967),(0.0,0.255,0.967),(-0.219,0.13,0.967),(-0.219,0.13,0.967),(-0.219,0.13,0.967),(-0.219,0.13,0.967),(-0.237,-0.123,0.964),(-0.237,-0.123,0.964),(-0.237,-0.123,0.964),(-0.237,-0.123,0.964),(0.0,0.787,0.617),(0.0,0.787,0.617),(0.0,0.787,0.617),(0.0,0.787,0.617),(-0.629,0.317,0.71),(-0.629,0.317,0.71),(-0.629,0.317,0.71),(-0.629,0.317,0.71),(-0.572,-0.363,0.735),(-0.572,-0.363,0.735),(-0.572,-0.363,0.735),(-0.572,-0.363,0.735),(-0.0,-0.677,0.736),(-0.0,-0.677,0.736),(-0.0,-0.677,0.736),(-0.0,-0.677,0.736),(0.584,-0.344,0.736),(0.584,-0.344,0.736),(0.584,-0.344,0.736),(0.584,-0.344,0.736),(0.626,0.326,0.709),(0.626,0.326,0.709),(0.626,0.326,0.709),(0.626,0.326,0.709),(-0.015,0.989,-0.15),(-0.015,0.989,-0.15),(-0.015,0.989,-0.15),(-0.015,0.989,-0.15),(-0.891,0.451,-0.039),(-0.891,0.451,-0.039),(-0.891,0.451,-0.039),(-0.891,0.451,-0.039),(-0.846,-0.533,0.0),(-0.846,-0.533,0.0),(-0.846,-0.533,0.0),(-0.846,-0.533,0.0),(-0.0,-1.0,-0.0),(-0.0,-1.0,-0.0),(-0.0,-1.0,-0.0),(-0.0,-1.0,-0.0),(0.862,-0.507,-0.0),(0.862,-0.507,-0.0),(0.862,-0.507,-0.0),(0.862,-0.507,-0.0),(0.885,0.464,-0.041),(0.885,0.464,-0.041),(0.885,0.464,-0.041),(0.885,0.464,-0.041),(-0.018,0.647,-0.762),(-0.018,0.647,-0.762),(-0.018,0.647,-0.762),(-0.018,0.647,-0.762),(-0.597,0.303,-0.742),(-0.597,0.303,-0.742),(-0.597,0.303,-0.742),(-0.597,0.303,-0.742),(-0.572,-0.363,-0.735),(-0.572,-0.363,-0.735),(-0.572,-0.363,-0.735),(-0.572,-0.363,-0.735),(-0.0,-0.677,-0.736),(-0.0,-0.677,-0.736),(-0.0,-0.677,-0.736),(-0.0,-0.677,-0.736),(0.584,-0.344,-0.736),(0.584,-0.344,-0.736),(0.584,-0.344,-0.736),(0.584,-0.344,-0.736),(0.592,0.312,-0.743),(0.592,0.312,-0.743),(0.592,0.312,-0.743),(0.592,0.312,-0.743),(0.012,-0.272,-0.962),(0.012,-0.272,-0.962),(0.012,-0.272,-0.962),(0.012,-0.272,-0.962),(0.232,-0.117,-0.966),(0.232,-0.117,-0.966),(0.232,-0.117,-0.966),(0.232,-0.117,-0.966),(0.214,0.139,-0.967),(0.214,0.139,-0.967),(0.214,0.139,-0.967),(0.214,0.139,-0.967),(0.0,0.255,-0.967),(0.0,0.255,-0.967),(0.0,0.255,-0.967),(0.0,0.255,-0.967),(-0.219,0.13,-0.967),(-0.219,0.13,-0.967),(-0.219,0.13,-0.967),(-0.219,0.13,-0.967),(-0.23,-0.121,-0.966),(-0.23,-0.121,-0.966),(-0.23,-0.121,-0.966),(-0.23,-0.121,-0.966),(-0.008,-0.982,0.19),(-0.008,-0.982,0.19),(-0.008,-0.982,0.19),(-0.008,-0.982,0.19),(0.865,-0.432,-0.254),(0.865,-0.432,-0.254),(0.865,-0.432,-0.254),(0.865,-0.432,-0.254),(0.767,0.514,-0.384),(0.767,0.514,-0.384),(0.767,0.514,-0.384),(0.767,0.514,-0.384),(0.0,0.923,-0.385),(0.0,0.923,-0.385),(0.0,0.923,-0.385),(0.0,0.923,-0.385),(-0.793,0.472,-0.385),(-0.793,0.472,-0.385),(-0.793,0.472,-0.385),(-0.793,0.472,-0.385),(-0.86,-0.447,-0.246),(-0.86,-0.447,-0.246),(-0.86,-0.447,-0.246),(-0.86,-0.447,-0.246)]),
coord=Coordinate(DEF='pTorus4GeoPoints',point=[(0.03,1.779,-1.623),(-0.04,1.786,-1.623),(-1.81,-1.788,-1.623),(-1.674,-1.988,-1.623),(1.718,-1.988,-1.623),(1.852,-1.764,-1.623),(0.051,1.811,-1.534),(-0.062,1.817,-1.534),(-1.853,-1.788,-1.534),(-1.696,-2.025,-1.534),(1.74,-2.025,-1.534),(1.895,-1.764,-1.534),(0.097,1.881,-1.512),(-0.11,1.883,-1.512),(-1.949,-1.788,-1.512),(-1.744,-2.109,-1.512),(1.788,-2.109,-1.512),(1.991,-1.764,-1.512),(0.133,1.931,-1.573),(-0.148,1.929,-1.573),(-2.026,-1.788,-1.573),(-1.782,-2.176,-1.573),(1.826,-2.176,-1.573),(2.068,-1.764,-1.573),(0.13,1.918,-1.672),(-0.148,1.912,-1.672),(-2.026,-1.788,-1.672),(-1.782,-2.176,-1.672),(1.826,-2.176,-1.672),(2.068,-1.764,-1.672),(0.091,1.846,-1.733),(-0.11,1.839,-1.733),(-1.949,-1.788,-1.733),(-1.744,-2.109,-1.733),(1.788,-2.109,-1.733),(1.991,-1.764,-1.733),(0.044,1.768,-1.711),(-0.062,1.762,-1.711),(-1.853,-1.788,-1.711),(-1.696,-2.025,-1.711),(1.74,-2.025,-1.711),(1.895,-1.764,-1.711)]))),
Shape(
geometry=IndexedFaceSet(DEF='pTorus4_1Geo',convex=False,coordIndex=[1,0,6,7,-1,3,2,8,9,-1,5,4,10,11,-1,7,6,12,13,-1,9,8,14,15,-1,11,10,16,17,-1,13,12,18,19,-1,15,14,20,21,-1,17,16,22,23,-1,19,18,24,25,-1,21,20,26,27,-1,23,22,28,29,-1,25,24,30,31,-1,27,26,32,33,-1,29,28,34,35,-1,31,30,36,37,-1,33,32,38,39,-1,35,34,40,41,-1,37,36,0,1,-1,39,38,2,3,-1,41,40,4,5,-1],normalIndex=[0,1,2,3,-1,8,9,10,11,-1,16,17,18,19,-1,24,25,26,27,-1,32,33,34,35,-1,40,41,42,43,-1,48,49,50,51,-1,56,57,58,59,-1,64,65,66,67,-1,72,73,74,75,-1,80,81,82,83,-1,88,89,90,91,-1,96,97,98,99,-1,104,105,106,107,-1,112,113,114,115,-1,120,121,122,123,-1,128,129,130,131,-1,136,137,138,139,-1,144,145,146,147,-1,152,153,154,155,-1,160,161,162,163,-1],solid=False,
normal=Normal(vector=[(-0.069,-0.941,0.331),(-0.069,-0.941,0.331),(-0.069,-0.941,0.331),(-0.069,-0.941,0.331),(0.832,-0.413,0.371),(0.832,-0.413,0.371),(0.832,-0.413,0.371),(0.832,-0.413,0.371),(0.767,0.514,0.384),(0.767,0.514,0.384),(0.767,0.514,0.384),(0.767,0.514,0.384),(0.0,0.923,0.385),(0.0,0.923,0.385),(0.0,0.923,0.385),(0.0,0.923,0.385),(-0.793,0.472,0.385),(-0.793,0.472,0.385),(-0.793,0.472,0.385),(-0.793,0.472,0.385),(-0.826,-0.425,0.371),(-0.826,-0.425,0.371),(-0.826,-0.425,0.371),(-0.826,-0.425,0.371),(-0.008,-0.306,0.952),(-0.008,-0.306,0.952),(-0.008,-0.306,0.952),(-0.008,-0.306,0.952),(0.239,-0.119,0.964),(0.239,-0.119,0.964),(0.239,-0.119,0.964),(0.239,-0.119,0.964),(0.214,0.139,0.967),(0.214,0.139,0.967),(0.214,0.139,0.967),(0.214,0.139,0.967),(0.0,0.255,0.967),(0.0,0.255,0.967),(0.0,0.255,0.967),(0.0,0.255,0.967),(-0.219,0.13,0.967),(-0.219,0.13,0.967),(-0.219,0.13,0.967),(-0.219,0.13,0.967),(-0.237,-0.123,0.964),(-0.237,-0.123,0.964),(-0.237,-0.123,0.964),(-0.237,-0.123,0.964),(0.0,0.787,0.617),(0.0,0.787,0.617),(0.0,0.787,0.617),(0.0,0.787,0.617),(-0.629,0.317,0.71),(-0.629,0.317,0.71),(-0.629,0.317,0.71),(-0.629,0.317,0.71),(-0.572,-0.363,0.735),(-0.572,-0.363,0.735),(-0.572,-0.363,0.735),(-0.572,-0.363,0.735),(-0.0,-0.677,0.736),(-0.0,-0.677,0.736),(-0.0,-0.677,0.736),(-0.0,-0.677,0.736),(0.584,-0.344,0.736),(0.584,-0.344,0.736),(0.584,-0.344,0.736),(0.584,-0.344,0.736),(0.626,0.326,0.709),(0.626,0.326,0.709),(0.626,0.326,0.709),(0.626,0.326,0.709),(-0.015,0.989,-0.15),(-0.015,0.989,-0.15),(-0.015,0.989,-0.15),(-0.015,0.989,-0.15),(-0.891,0.451,-0.039),(-0.891,0.451,-0.039),(-0.891,0.451,-0.039),(-0.891,0.451,-0.039),(-0.846,-0.533,0.0),(-0.846,-0.533,0.0),(-0.846,-0.533,0.0),(-0.846,-0.533,0.0),(-0.0,-1.0,-0.0),(-0.0,-1.0,-0.0),(-0.0,-1.0,-0.0),(-0.0,-1.0,-0.0),(0.862,-0.507,-0.0),(0.862,-0.507,-0.0),(0.862,-0.507,-0.0),(0.862,-0.507,-0.0),(0.885,0.464,-0.041),(0.885,0.464,-0.041),(0.885,0.464,-0.041),(0.885,0.464,-0.041),(-0.018,0.647,-0.762),(-0.018,0.647,-0.762),(-0.018,0.647,-0.762),(-0.018,0.647,-0.762),(-0.597,0.303,-0.742),(-0.597,0.303,-0.742),(-0.597,0.303,-0.742),(-0.597,0.303,-0.742),(-0.572,-0.363,-0.735),(-0.572,-0.363,-0.735),(-0.572,-0.363,-0.735),(-0.572,-0.363,-0.735),(-0.0,-0.677,-0.736),(-0.0,-0.677,-0.736),(-0.0,-0.677,-0.736),(-0.0,-0.677,-0.736),(0.584,-0.344,-0.736),(0.584,-0.344,-0.736),(0.584,-0.344,-0.736),(0.584,-0.344,-0.736),(0.592,0.312,-0.743),(0.592,0.312,-0.743),(0.592,0.312,-0.743),(0.592,0.312,-0.743),(0.012,-0.272,-0.962),(0.012,-0.272,-0.962),(0.012,-0.272,-0.962),(0.012,-0.272,-0.962),(0.232,-0.117,-0.966),(0.232,-0.117,-0.966),(0.232,-0.117,-0.966),(0.232,-0.117,-0.966),(0.214,0.139,-0.967),(0.214,0.139,-0.967),(0.214,0.139,-0.967),(0.214,0.139,-0.967),(0.0,0.255,-0.967),(0.0,0.255,-0.967),(0.0,0.255,-0.967),(0.0,0.255,-0.967),(-0.219,0.13,-0.967),(-0.219,0.13,-0.967),(-0.219,0.13,-0.967),(-0.219,0.13,-0.967),(-0.23,-0.121,-0.966),(-0.23,-0.121,-0.966),(-0.23,-0.121,-0.966),(-0.23,-0.121,-0.966),(-0.008,-0.982,0.19),(-0.008,-0.982,0.19),(-0.008,-0.982,0.19),(-0.008,-0.982,0.19),(0.865,-0.432,-0.254),(0.865,-0.432,-0.254),(0.865,-0.432,-0.254),(0.865,-0.432,-0.254),(0.767,0.514,-0.384),(0.767,0.514,-0.384),(0.767,0.514,-0.384),(0.767,0.514,-0.384),(0.0,0.923,-0.385),(0.0,0.923,-0.385),(0.0,0.923,-0.385),(0.0,0.923,-0.385),(-0.793,0.472,-0.385),(-0.793,0.472,-0.385),(-0.793,0.472,-0.385),(-0.793,0.472,-0.385),(-0.86,-0.447,-0.246),(-0.86,-0.447,-0.246),(-0.86,-0.447,-0.246),(-0.86,-0.447,-0.246)]),
coord=Coordinate(USE='pTorus4GeoPoints'))),
Shape(
geometry=IndexedFaceSet(DEF='pCylinder39_0Geo',convex=False,coordIndex=[10,11,12,13,-1,0,3,8,7,-1,6,7,11,10,-1,7,8,12,11,-1,8,9,13,12,-1,9,6,10,13,-1],normalIndex=[8,9,10,11,-1,16,17,18,19,-1,24,25,26,27,-1,28,29,10,9,-1,30,31,32,33,-1,22,15,8,11,-1],solid=False,
normal=Normal(vector=[(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(-0.0,0.432,0.902),(-0.0,0.432,0.902),(-0.0,0.432,0.902),(-0.0,0.432,0.902),(-0.0,0.843,-0.538),(0.0,-0.528,-0.849),(0.0,-0.528,-0.849),(-0.0,0.843,-0.538),(-0.0,0.221,-0.975),(-0.0,0.432,-0.902),(-0.0,0.432,-0.902),(-0.0,0.599,-0.801),(0.0,0.0,1.0),(0.0,0.0,1.0),(0.0,0.0,1.0),(0.0,0.0,1.0),(0.0,0.432,-0.902),(0.0,0.221,-0.975),(-0.0,0.599,-0.801),(0.0,0.432,-0.902),(1.0,-0.009,-0.001),(1.0,-0.009,-0.001),(1.0,-0.009,-0.001),(1.0,-0.009,-0.001),(0.0,-1.0,-0.011),(0.0,-1.0,-0.011),(-1.0,-0.009,-0.001),(-1.0,-0.009,-0.001),(-1.0,-0.009,-0.001),(-1.0,-0.009,-0.001)]),
coord=Coordinate(DEF='pCylinder39GeoPoints',point=[(7.224,1.761,-1.755),(7.847,1.761,-1.48),(7.549,2.049,-1.618),(-7.257,1.761,-1.755),(-7.881,1.761,-1.48),(-7.582,2.049,-1.618),(0.038,2.049,-1.618),(0.036,1.761,-1.755),(-0.069,1.761,-1.755),(-0.072,2.049,-1.618),(0.034,1.992,-6.679),(0.032,1.819,-6.761),(-0.065,1.819,-6.761),(-0.068,1.992,-6.679)]))),
Shape(
geometry=IndexedFaceSet(DEF='pCylinder39_1Geo',convex=False,coordIndex=[0,1,4,3,-1,1,2,5,4,-1,2,0,7,6,-1,3,5,9,8,-1,5,2,6,9,-1],normalIndex=[0,1,2,3,-1,4,5,6,7,-1,12,13,14,15,-1,20,21,22,23,-1,21,12,15,22,-1],solid=False,
normal=Normal(vector=[(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(0.0,-1.0,-0.0),(-0.0,0.432,0.902),(-0.0,0.432,0.902),(-0.0,0.432,0.902),(-0.0,0.432,0.902),(-0.0,0.843,-0.538),(0.0,-0.528,-0.849),(0.0,-0.528,-0.849),(-0.0,0.843,-0.538),(-0.0,0.221,-0.975),(-0.0,0.432,-0.902),(-0.0,0.432,-0.902),(-0.0,0.599,-0.801),(0.0,0.0,1.0),(0.0,0.0,1.0),(0.0,0.0,1.0),(0.0,0.0,1.0),(0.0,0.432,-0.902),(0.0,0.221,-0.975),(-0.0,0.599,-0.801),(0.0,0.432,-0.902),(1.0,-0.009,-0.001),(1.0,-0.009,-0.001),(1.0,-0.009,-0.001),(1.0,-0.009,-0.001),(0.0,-1.0,-0.011),(0.0,-1.0,-0.011),(-1.0,-0.009,-0.001),(-1.0,-0.009,-0.001),(-1.0,-0.009,-0.001),(-1.0,-0.009,-0.001)]),
coord=Coordinate(USE='pCylinder39GeoPoints')))])]
#
)
) # X3D model complete
####################################################################################################
# Self-test diagnostics
####################################################################################################
print('Self-test diagnostics for Asa.py:')
if metaDiagnostics(newModel): # built-in utility method in X3D class
print(metaDiagnostics(newModel)) # display meta info, hint, warning, error, TODO values in this model
# print('check newModel.XML() serialization...')
newModelXML= newModel.XML() # test export method XML() for exceptions during export
newModel.XMLvalidate()
# print(newModelXML) # diagnostic
try:
# print('check newModel.VRML() serialization...')
newModelVRML=newModel.VRML() # test export method VRML() for exceptions during export
# print(prependLineNumbers(newModelVRML)) # debug
print("Python-to-VRML export of VRML output successful", flush=True)
except Exception as err: # usually BaseException
# https://stackoverflow.com/questions/18176602/how-to-get-the-name-of-an-exception-that-was-caught-in-python
print("*** Python-to-VRML export of VRML output failed:", type(err).__name__, err)
if newModelVRML: # may have failed to generate
print(prependLineNumbers(newModelVRML, err.lineno))
try:
# print('check newModel.JSON() serialization...')
newModelJSON=newModel.JSON() # test export method JSON() for exceptions during export
# print(prependLineNumbers(newModelJSON)) # debug
print("Python-to-JSON export of JSON output successful (under development)")
except Exception as err: # usually SyntaxError
print("*** Python-to-JSON export of JSON output failed:", type(err).__name__, err)
if newModelJSON: # may have failed to generate
print(prependLineNumbers(newModelJSON,err.lineno))
print("python Asa.py load and self-test diagnostics complete.")