####################################################################################################
#
# Invoking X3D model self-test:
#
#   $ python l_nasal.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.
#
# Project home page:    # X3D Python Scene Access Interface Library (X3DPSAIL)
#                       # https://www.web3d.org/x3d/stylesheets/python/python.html
# Conversion generator: # https://www.web3d.org/x3d/stylesheets/X3dToPython.xslt
#
####################################################################################################

from x3d import *

newModel=X3D(profile='Interactive',version='4.0',
  head=head(
    children=[
    meta(content='l_nasal.x3d',name='title'),
    meta(content='two small oblong bones, varying in size and form in different individuals, side by side to form bridge of upper third of nose, LOA-5 part of skull LOA-1',name='description'),
    meta(content='Don Brutzman, Joe Williams, John Carlson, Damon Hernandez',name='creator'),
    meta(content='Don Brutzman',name='translator'),
    meta(content='5 December 2013',name='created'),
    meta(content='5 March 2026',name='translated'),
    meta(content='23 April 2026',name='modified'),
    meta(content='originals/nasall.x3d',name='reference'),
    meta(content='https://en.wikipedia.org/wiki/Nasal_bone',name='reference'),
    meta(content='https://en.wikipedia.org/wiki/List_of_bones_of_the_human_skeleton',name='reference'),
    meta(content='usage examples https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Medical',name='reference'),
    meta(content='X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit',name='generator'),
    meta(content='X3D Tidy, https://www.web3d.org/x3d/stylesheets/X3dTidy.html',name='generator'),
    meta(content='https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Bones/l_nasal.x3d',name='identifier'),
    meta(content='../license.html',name='license')]),
  Scene=Scene(
    children=[
    WorldInfo(title='l_nasal.x3d'),
    Background(skyColor=[(0.858824,1,0.94902)]),
    Comment('user hover lights bone and reveals description, user selection/deselection temporarily binds/unbinds close-up hidden viewpoint'),
    TouchSensor(DEF='UserTouchSensor',description='bone l_nasal LOA-5 part of skull LOA-1'),
    Transform(DEF='l_nasal',translation=(0.0018,1.6609,0.0903),
      children=[
      BooleanToggle(DEF='UserTouchState'),
      ROUTE(fromField='isActive',fromNode='UserTouchSensor',toField='set_boolean',toNode='UserTouchState'),
      Viewpoint(DEF='HiddenViewpoint',nearDistance=0.001,position=(0,0,0.2),retainUserOffsets=True,
        navigationInfo=NavigationInfo(transitionType=["ANIMATE"],type=["EXAMINE"])),
      ROUTE(fromField='toggle',fromNode='UserTouchState',toField='set_bind',toNode='HiddenViewpoint'),
      DirectionalLight(DEF='HiddenLight',ambientIntensity=1,color=(0.1,0.1,1),on=False),
      ROUTE(fromField='toggle',fromNode='UserTouchState',toField='on',toNode='HiddenLight'),
      Transform(DEF='CenterOfRotationForJoint',visible=False,
        children=[
        Comment('insert computations for joint center of rotation here'),
        Inline(DEF='AxesDisplay',description='RGB display axes showing XYZ direction in local coordinate system',url=["AxesDisplay.x3d"],visible=False)]),
      ROUTE(fromField='toggle',fromNode='UserTouchState',toField='visible',toNode='CenterOfRotationForJoint'),
      Shape(
        appearance=Appearance(
          material=Material(DEF='BoneMaterial',ambientIntensity=0.965,diffuseColor=(1,0.9765,0.8667),shininess=0.05,specularColor=(0.349,0.349,0.349))),
        geometry=IndexedFaceSet(DEF='l_nasal_geometry',coordIndex=[0,1,2,-1,3,4,5,-1,6,7,8,-1,1,9,10,-1,11,12,13,-1,14,15,16,-1,17,18,19,-1,20,21,22,-1,23,24,25,-1,26,22,15,-1,27,28,29,-1,30,31,21,-1,32,33,8,-1,34,35,36,-1,37,38,39,-1,40,41,42,-1,43,44,45,-1,42,46,47,-1,48,49,50,-1,51,52,53,-1,54,55,56,-1,57,35,37,-1,58,59,60,-1,17,19,61,-1,62,19,63,-1,64,62,58,-1,65,66,67,-1,68,69,65,-1,62,70,19,-1,67,18,65,-1,71,72,73,-1,74,75,73,-1,76,77,78,-1,79,80,81,-1,82,83,10,-1,84,85,86,-1,87,88,89,-1,89,90,87,-1,91,92,93,-1,94,95,44,-1,96,97,98,-1,99,100,101,-1,95,102,103,-1,104,105,106,-1,59,107,108,-1,109,110,111,-1,112,113,114,-1,115,116,117,-1,110,118,111,-1,119,120,121,-1,122,123,124,-1,125,126,127,-1,128,129,130,-1,131,132,133,-1,71,134,135,-1,136,137,122,-1,138,139,140,-1,141,142,143,-1,144,145,146,-1,115,78,116,-1,73,147,148,-1,149,150,81,-1,151,38,152,-1,153,154,155,-1,156,157,158,-1,83,4,10,-1,80,159,123,-1,160,135,161,-1,110,109,162,-1,122,137,163,-1,164,112,165,-1,166,167,2,-1,122,168,123,-1,169,170,171,-1,112,114,172,-1,173,174,175,-1,162,109,176,-1,177,133,147,-1,178,179,148,-1,106,85,180,-1,181,182,140,-1,172,114,183,-1,153,184,185,-1,182,181,184,-1,143,186,130,-1,186,75,130,-1,187,123,188,-1,188,13,189,-1,190,142,141,-1,158,128,156,-1,191,82,192,-1,59,108,126,-1,193,136,124,-1,144,194,145,-1,195,132,131,-1,195,178,132,-1,33,196,191,-1,197,198,199,-1,200,127,126,-1,201,168,202,-1,188,11,13,-1,203,204,205,-1,175,201,202,-1,135,134,153,-1,206,103,97,-1,102,95,207,-1,97,208,98,-1,99,101,209,-1,100,96,210,-1,206,91,44,-1,2,180,84,-1,146,160,144,-1,160,72,71,-1,211,67,55,-1,212,213,47,-1,214,66,69,-1,63,211,54,-1,19,70,61,-1,211,63,19,-1,215,39,38,-1,55,214,77,-1,90,89,216,-1,217,218,48,-1,219,220,221,-1,91,45,44,-1,212,46,219,-1,41,46,42,-1,222,223,224,-1,84,36,213,-1,225,166,84,-1,6,8,192,-1,226,227,125,-1,58,228,107,-1,31,60,229,-1,18,29,65,-1,22,21,31,-1,198,29,14,-1,20,26,28,-1,60,126,229,-1,77,56,55,-1,150,149,230,-1,3,10,4,-1,192,9,1,-1,2,1,3,-1,167,7,6,-1,0,167,6,-1,3,180,2,-1,166,7,167,-1,1,0,192,-1,231,150,230,-1,170,114,171,-1,200,232,127,-1,20,28,233,-1,16,198,14,-1,31,227,22,-1,229,126,125,-1,234,235,236,-1,29,198,65,-1,31,30,60,-1,107,59,58,-1,8,191,192,-1,84,213,225,-1,84,86,36,-1,212,219,221,-1,212,47,46,-1,90,237,93,-1,219,48,220,-1,216,237,90,-1,54,211,55,-1,214,53,77,-1,38,140,215,-1,238,68,239,-1,65,69,66,-1,58,63,54,-1,214,69,51,-1,212,225,213,-1,27,18,240,-1,146,72,160,-1,201,172,183,-1,180,85,84,-1,82,9,192,-1,206,44,95,-1,210,241,100,-1,209,102,99,-1,97,103,208,-1,102,207,99,-1,97,92,206,-1,152,37,34,-1,165,172,242,-1,179,153,134,-1,243,203,205,-1,107,162,108,-1,171,114,113,-1,126,176,200,-1,198,16,199,-1,33,244,196,-1,144,161,194,-1,187,193,124,-1,126,60,59,-1,191,196,82,-1,129,245,154,-1,133,132,178,-1,187,188,189,-1,193,118,110,-1,129,143,130,-1,182,184,157,-1,83,80,79,-1,185,246,153,-1,114,149,183,-1,181,140,38,-1,5,106,180,-1,37,152,38,-1,178,195,179,-1,147,190,177,-1,109,12,176,-1,173,205,174,-1,112,172,165,-1,171,120,169,-1,168,201,123,-1,2,84,166,-1,222,41,40,-1,247,164,165,-1,163,168,122,-1,110,162,107,-1,144,160,161,-1,201,80,123,-1,83,79,4,-1,155,184,153,-1,151,181,38,-1,81,183,149,-1,140,156,138,-1,115,163,78,-1,195,131,177,-1,154,245,155,-1,138,223,139,-1,124,136,122,-1,71,135,160,-1,131,133,177,-1,128,245,129,-1,127,226,125,-1,172,174,242,-1,119,169,120,-1,117,173,115,-1,187,124,123,-1,161,246,194,-1,248,222,145,-1,249,104,106,-1,103,206,95,-1,100,241,101,-1,98,210,96,-1,94,207,95,-1,91,206,92,-1,250,76,137,-1,82,10,9,-1,146,74,72,-1,74,73,72,-1,73,148,71,-1,251,147,73,-1,67,19,18,-1,69,216,51,-1,69,238,216,-1,19,67,211,-1,68,238,69,-1,62,63,58,-1,32,8,252,-1,253,32,252,-1,60,64,58,-1,35,34,37,-1,214,51,53,-1,48,50,217,-1,220,48,218,-1,254,216,89,-1,39,57,37,-1,36,86,34,-1,33,191,8,-1,21,23,30,-1,18,27,29,-1,26,15,14,-1,24,255,25,-1,22,26,20,-1,17,240,18,-1,233,28,27,-1,226,127,232,-1,1,10,3,-1,6,192,0,-1,5,180,3,-1,2,167,0,-1,231,4,150,-1,5,4,231,-1,26,29,28,-1,29,26,14,-1,125,31,229,-1,125,227,31,-1,228,54,56,-1,58,54,228,-1,244,32,256,-1,244,33,32,-1,222,139,223,-1,40,139,222,-1,70,25,61,-1,70,257,25,-1,221,7,166,-1,220,7,221,-1,238,237,216,-1,238,239,237,-1,220,8,7,-1,220,218,8,-1,258,210,259,-1,258,241,210,-1,98,260,261,-1,260,98,208,-1,224,138,262,-1,223,138,224,-1,203,43,263,-1,94,43,203,-1,44,43,94,-1,96,92,97,-1,96,87,92,-1,182,156,140,-1,182,157,156,-1,262,128,130,-1,262,156,128,-1,138,156,262,-1,244,199,196,-1,244,197,199,-1,145,121,248,-1,145,194,121,-1,247,242,204,-1,242,247,165,-1,189,111,118,-1,13,111,189,-1,228,250,264,-1,228,56,250,-1,82,199,265,-1,196,199,82,-1,187,118,193,-1,187,189,118,-1,266,222,248,-1,266,41,222,-1,183,80,201,-1,80,183,81,-1,175,172,201,-1,174,172,175,-1,249,5,231,-1,249,106,5,-1,171,266,120,-1,171,267,266,-1,117,254,243,-1,254,117,52,-1,153,161,135,-1,153,246,161,-1,12,200,176,-1,11,200,12,-1,53,78,77,-1,116,78,53,-1,248,120,266,-1,248,121,120,-1,157,155,158,-1,184,155,157,-1,185,119,246,-1,119,185,268,-1,249,230,269,-1,231,230,249,-1,179,177,153,-1,179,195,177,-1,173,243,205,-1,173,117,243,-1,193,264,136,-1,193,110,264,-1,115,168,163,-1,168,115,202,-1,112,270,113,-1,112,164,270,-1,158,245,128,-1,158,155,245,-1,224,145,222,-1,224,146,145,-1,271,164,272,-1,271,270,164,-1,104,269,268,-1,269,104,249,-1,87,100,88,-1,100,87,96,-1,93,87,90,-1,93,92,87,-1,77,250,56,-1,77,76,250,-1,200,159,232,-1,200,11,159,-1,243,94,203,-1,254,94,243,-1,254,89,94,-1,137,78,163,-1,78,137,76,-1,73,186,251,-1,186,73,75,-1,273,208,209,-1,273,260,208,-1,261,210,98,-1,261,259,210,-1,253,256,32,-1,256,253,274,-1,27,235,234,-1,27,240,235,-1,239,45,237,-1,239,274,45,-1,212,166,225,-1,221,166,212,-1,17,25,255,-1,61,25,17,-1,52,216,254,-1,52,51,216,-1,30,64,60,-1,257,64,30,-1,23,20,24,-1,21,20,23,-1,236,27,234,-1,236,233,27,-1,240,255,235,-1,255,240,17,-1,23,257,30,-1,25,257,23,-1,65,197,68,-1,198,197,65,-1,275,40,42,-1,40,276,139,-1,275,276,40,-1,50,43,45,-1,50,49,43,-1,213,42,47,-1,36,42,213,-1,218,252,8,-1,217,252,218,-1,68,274,239,-1,256,274,68,-1,70,64,257,-1,62,64,70,-1,50,274,253,-1,274,50,45,-1,277,241,258,-1,277,101,241,-1,277,260,273,-1,258,260,277,-1,258,261,260,-1,259,261,258,-1,130,74,262,-1,130,75,74,-1,146,262,74,-1,224,262,146,-1,48,272,49,-1,271,272,48,-1,82,80,83,-1,80,82,265,-1,88,94,89,-1,88,207,94,-1,106,86,85,-1,106,105,86,-1,204,263,247,-1,204,203,263,-1,15,232,16,-1,226,232,15,-1,190,251,142,-1,190,147,251,-1,148,134,71,-1,148,179,134,-1,242,205,204,-1,174,205,242,-1,13,109,111,-1,12,109,13,-1,264,107,228,-1,110,107,264,-1,41,267,278,-1,266,267,41,-1,177,141,153,-1,190,141,177,-1,181,185,184,-1,151,185,181,-1,269,170,169,-1,170,269,230,-1,46,278,219,-1,41,278,46,-1,49,263,43,-1,272,263,49,-1,246,121,194,-1,246,119,121,-1,141,154,153,-1,141,129,154,-1,141,143,129,-1,34,105,152,-1,105,34,86,-1,150,79,81,-1,150,4,79,-1,151,105,104,-1,151,152,105,-1,151,268,185,-1,151,104,268,-1,147,178,148,-1,147,133,178,-1,247,272,164,-1,247,263,272,-1,11,123,159,-1,188,123,11,-1,108,176,126,-1,108,162,176,-1,136,250,137,-1,136,264,250,-1,173,202,115,-1,202,173,175,-1,113,267,171,-1,113,270,267,-1,186,142,251,-1,142,186,143,-1,265,16,232,-1,199,16,265,-1,278,270,271,-1,278,267,270,-1,169,268,269,-1,169,119,268,-1,100,207,88,-1,99,207,100,-1,209,103,102,-1,103,209,208,-1,80,232,159,-1,232,80,265,-1,116,52,117,-1,53,52,116,-1,219,271,48,-1,219,278,271,-1,101,273,209,-1,277,273,101,-1,35,276,275,-1,35,57,276,-1,67,214,55,-1,67,66,214,-1,253,217,50,-1,253,252,217,-1,36,275,42,-1,35,275,36,-1,57,215,276,-1,39,215,57,-1,93,45,91,-1,93,237,45,-1,139,215,140,-1,139,276,215,-1,256,197,244,-1,256,68,197,-1,22,226,15,-1,226,22,227,-1,24,233,236,-1,24,20,233,-1,235,24,236,-1,24,235,255,-1,230,114,170,-1,230,149,114,-1],creaseAngle=1.571,
          coord=Coordinate(DEF='l_nasal_coordinate',point=[(-0.0009,0.0001,-0.0004),(-0.0003,-0.0001,-0.0001),(0.0000,-0.0002,0.0010),(0.0005,-0.0003,-0.0000),(0.0013,-0.0003,-0.0000),(0.0010,-0.0010,0.0010),(-0.0011,0.0002,-0.0005),(-0.0009,-0.0001,0.0013),(-0.0015,0.0007,0.0000),(-0.0004,0.0000,-0.0010),(0.0003,-0.0001,-0.0004),(0.0008,0.0084,-0.0063),(0.0015,0.0092,-0.0066),(0.0018,0.0089,-0.0063),(-0.0022,0.0079,-0.0073),(-0.0018,0.0080,-0.0071),(-0.0024,0.0053,-0.0058),(-0.0018,0.0100,-0.0074),(-0.0029,0.0079,-0.0073),(-0.0011,0.0087,-0.0068),(-0.0019,0.0103,-0.0073),(-0.0015,0.0102,-0.0072),(-0.0015,0.0101,-0.0076),(-0.0015,0.0103,-0.0071),(-0.0020,0.0103,-0.0071),(-0.0015,0.0102,-0.0071),(-0.0021,0.0101,-0.0076),(-0.0037,0.0108,-0.0076),(-0.0034,0.0107,-0.0077),(-0.0029,0.0079,-0.0073),(-0.0013,0.0106,-0.0071),(-0.0011,0.0105,-0.0074),(-0.0023,-0.0008,-0.0024),(-0.0020,-0.0008,-0.0024),(0.0003,-0.0038,0.0052),(0.0000,-0.0038,0.0050),(0.0001,-0.0033,0.0044),(0.0000,-0.0043,0.0058),(0.0000,-0.0052,0.0063),(-0.0006,-0.0048,0.0067),(0.0010,-0.0032,0.0045),(0.0015,-0.0022,0.0029),(0.0005,-0.0026,0.0048),(0.0000,0.0027,-0.0013),(-0.0001,0.0030,-0.0015),(-0.0023,0.0035,-0.0019),(0.0003,-0.0017,0.0033),(-0.0003,-0.0020,0.0045),(0.0003,0.0003,0.0009),(0.0001,0.0013,-0.0000),(-0.0019,0.0021,-0.0005),(-0.0016,0.0056,-0.0032),(0.0000,0.0048,-0.0026),(0.0001,0.0054,-0.0029),(-0.0005,0.0092,-0.0055),(-0.0016,0.0075,-0.0040),(0.0003,0.0087,-0.0034),(-0.0005,-0.0043,0.0062),(-0.0001,0.0096,-0.0057),(0.0003,0.0109,-0.0072),(0.0001,0.0108,-0.0076),(-0.0014,0.0100,-0.0074),(-0.0003,0.0097,-0.0063),(0.0000,0.0095,-0.0060),(-0.0004,0.0097,-0.0060),(-0.0029,0.0051,-0.0062),(-0.0018,0.0061,-0.0043),(-0.0015,0.0071,-0.0049),(-0.0034,0.0031,-0.0053),(-0.0015,0.0055,-0.0039),(-0.0011,0.0104,-0.0074),(0.0029,-0.0088,0.0059),(0.0024,-0.0076,0.0064),(0.0022,-0.0082,0.0071),(0.0022,-0.0073,0.0067),(0.0020,-0.0079,0.0071),(0.0018,0.0063,-0.0034),(0.0003,0.0066,-0.0030),(0.0016,0.0052,-0.0032),(0.0010,0.0021,-0.0035),(0.0006,0.0031,-0.0040),(0.0011,0.0022,-0.0034),(-0.0009,0.0029,-0.0037),(0.0005,0.0024,-0.0034),(-0.0001,-0.0015,0.0019),(0.0003,-0.0016,0.0019),(0.0005,-0.0035,0.0044),(-0.0001,0.0035,-0.0019),(-0.0001,0.0035,-0.0019),(-0.0001,0.0036,-0.0020),(-0.0003,0.0036,-0.0019),(-0.0003,0.0032,-0.0016),(-0.0003,0.0034,-0.0019),(-0.0003,0.0034,-0.0018),(0.0003,0.0031,-0.0019),(-0.0001,0.0031,-0.0016),(-0.0001,0.0034,-0.0019),(-0.0003,0.0033,-0.0019),(-0.0003,0.0034,-0.0023),(0.0001,0.0031,-0.0019),(-0.0001,0.0034,-0.0020),(-0.0001,0.0033,-0.0023),(-0.0001,0.0031,-0.0018),(-0.0001,0.0032,-0.0018),(0.0010,-0.0036,0.0042),(0.0008,-0.0036,0.0043),(0.0006,-0.0019,0.0019),(0.0005,0.0090,-0.0040),(0.0006,0.0105,-0.0064),(0.0020,0.0092,-0.0062),(0.0022,0.0084,-0.0044),(0.0023,0.0088,-0.0058),(0.0027,-0.0006,-0.0010),(0.0027,-0.0012,-0.0005),(0.0015,-0.0004,-0.0001),(0.0024,0.0037,-0.0034),(0.0015,0.0045,-0.0029),(0.0015,0.0039,-0.0028),(0.0029,0.0085,-0.0059),(0.0013,-0.0040,0.0039),(0.0024,-0.0029,0.0018),(0.0024,-0.0045,0.0032),(0.0030,0.0066,-0.0049),(0.0015,0.0065,-0.0052),(0.0030,0.0070,-0.0049),(0.0001,0.0105,-0.0077),(0.0005,0.0103,-0.0069),(-0.0004,0.0082,-0.0063),(0.0008,-0.0069,0.0071),(0.0008,-0.0072,0.0068),(0.0011,-0.0073,0.0073),(0.0018,-0.0109,0.0072),(0.0018,-0.0109,0.0072),(0.0020,-0.0105,0.0073),(0.0024,-0.0089,0.0054),(0.0024,-0.0086,0.0053),(0.0039,0.0069,-0.0042),(0.0036,0.0063,-0.0038),(0.0010,-0.0061,0.0067),(0.0003,-0.0047,0.0064),(0.0003,-0.0056,0.0068),(0.0011,-0.0085,0.0068),(0.0013,-0.0089,0.0069),(0.0011,-0.0085,0.0068),(0.0029,-0.0059,0.0049),(0.0027,-0.0056,0.0049),(0.0027,-0.0058,0.0052),(0.0020,-0.0091,0.0077),(0.0027,-0.0091,0.0062),(0.0015,-0.0003,-0.0000),(0.0013,-0.0002,0.0000),(0.0010,-0.0042,0.0050),(0.0006,-0.0041,0.0050),(0.0008,-0.0065,0.0062),(0.0008,-0.0067,0.0064),(0.0006,-0.0066,0.0066),(0.0008,-0.0066,0.0071),(0.0005,-0.0064,0.0068),(0.0008,-0.0067,0.0069),(0.0006,0.0060,-0.0053),(0.0029,-0.0085,0.0058),(0.0026,-0.0060,0.0042),(0.0010,0.0104,-0.0064),(0.0026,0.0040,-0.0034),(0.0030,-0.0005,-0.0001),(0.0026,0.0011,-0.0026),(-0.0001,-0.0008,0.0018),(-0.0005,-0.0003,0.0010),(0.0023,0.0039,-0.0045),(0.0011,-0.0021,0.0018),(0.0013,-0.0011,0.0009),(0.0026,-0.0018,0.0004),(0.0013,0.0021,-0.0035),(0.0024,0.0032,-0.0029),(0.0022,0.0022,-0.0034),(0.0022,0.0031,-0.0039),(0.0010,0.0102,-0.0068),(0.0016,-0.0106,0.0072),(0.0020,-0.0105,0.0069),(0.0023,-0.0091,0.0057),(0.0005,-0.0009,0.0010),(0.0003,-0.0057,0.0063),(0.0003,-0.0059,0.0067),(0.0013,0.0022,-0.0034),(0.0005,-0.0064,0.0066),(0.0011,-0.0044,0.0049),(0.0018,-0.0084,0.0076),(0.0029,0.0073,-0.0053),(0.0018,0.0085,-0.0062),(0.0024,0.0085,-0.0064),(0.0013,-0.0092,0.0069),(-0.0015,-0.0006,-0.0020),(-0.0009,-0.0002,-0.0014),(0.0034,0.0073,-0.0047),(0.0024,-0.0057,0.0040),(0.0018,-0.0106,0.0069),(-0.0021,0.0027,-0.0044),(-0.0032,0.0031,-0.0053),(-0.0027,0.0051,-0.0062),(-0.0022,0.0032,-0.0050),(0.0000,0.0083,-0.0063),(0.0015,0.0034,-0.0043),(0.0023,0.0035,-0.0044),(0.0015,0.0025,-0.0021),(0.0027,0.0018,-0.0025),(0.0024,0.0023,-0.0028),(-0.0001,0.0032,-0.0018),(0.0001,0.0032,-0.0019),(-0.0003,0.0033,-0.0023),(-0.0001,0.0032,-0.0024),(-0.0001,0.0035,-0.0023),(-0.0001,0.0092,-0.0058),(-0.0006,-0.0005,0.0026),(-0.0005,-0.0027,0.0044),(-0.0020,0.0064,-0.0032),(-0.0006,-0.0047,0.0076),(-0.0018,0.0048,-0.0028),(-0.0015,0.0016,0.0000),(-0.0014,0.0009,0.0009),(0.0003,-0.0006,0.0019),(-0.0009,0.0003,0.0018),(-0.0003,-0.0003,0.0023),(0.0015,-0.0036,0.0043),(0.0013,-0.0054,0.0060),(0.0013,-0.0055,0.0059),(-0.0006,-0.0010,0.0023),(-0.0008,0.0083,-0.0068),(-0.0011,0.0102,-0.0076),(0.0005,0.0090,-0.0035),(0.0001,0.0107,-0.0076),(0.0013,-0.0010,0.0010),(0.0011,-0.0009,0.0010),(-0.0006,0.0054,-0.0052),(-0.0036,0.0109,-0.0076),(-0.0039,0.0109,-0.0073),(-0.0029,0.0105,-0.0072),(-0.0037,0.0109,-0.0073),(-0.0022,0.0042,-0.0024),(-0.0019,0.0047,-0.0034),(-0.0023,0.0041,-0.0032),(-0.0027,0.0104,-0.0076),(-0.0001,0.0034,-0.0023),(0.0024,0.0017,-0.0030),(0.0015,0.0031,-0.0024),(-0.0029,0.0025,-0.0047),(0.0008,-0.0068,0.0067),(0.0013,-0.0048,0.0047),(0.0029,0.0012,-0.0020),(0.0026,-0.0043,0.0039),(0.0008,-0.0018,0.0019),(0.0020,0.0081,-0.0039),(0.0020,-0.0088,0.0077),(-0.0015,0.0015,-0.0010),(-0.0020,0.0020,-0.0014),(0.0000,0.0040,-0.0024),(-0.0019,0.0102,-0.0071),(-0.0034,0.0025,-0.0047),(-0.0013,0.0105,-0.0071),(-0.0001,0.0035,-0.0024),(-0.0001,0.0035,-0.0024),(-0.0003,0.0033,-0.0025),(-0.0003,0.0035,-0.0024),(0.0013,-0.0063,0.0067),(0.0015,0.0019,-0.0015),(0.0023,0.0084,-0.0039),(-0.0008,0.0035,-0.0044),(0.0026,-0.0026,0.0024),(0.0027,-0.0017,0.0013),(0.0013,-0.0037,0.0040),(0.0010,-0.0020,0.0019),(0.0027,-0.0011,0.0005),(0.0015,-0.0004,0.0008),(0.0015,0.0005,-0.0001),(-0.0001,0.0033,-0.0025),(-0.0024,0.0034,-0.0026),(0.0001,-0.0032,0.0054),(-0.0004,-0.0040,0.0069),(-0.0001,0.0033,-0.0024),(0.0015,-0.0012,0.0015)])))])])
)

### X3D model conversion complete ###

####################################################################################################
# Self-test diagnostics
####################################################################################################

print('Self-test diagnostics for l_nasal.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 l_nasal.py load and self-test diagnostics complete.")
