#################################################################################################### # # Invoking X3D model self-test: # # $ python ManualXYZBalanceBlockPrototype.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='3.0', head=head( children=[ meta(content='ManualXYZBalanceBlockPrototype.x3d',name='title'), meta(content='Prototype for one of two types of balance blocks on the MSADS Assembly',name='description'), meta(content='Ron Hatt',name='creator'), meta(content='14 September 2006',name='created'), meta(content='28 November 2019',name='modified'), meta(content='https://savage.nps.edu/Savage/Space/SatelliteLab/ManualXYZBalanceBlockPrototype.x3d',name='identifier'), meta(content='Wings3D, VizX3D',name='generator'), meta(content='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit',name='generator'), meta(content='../../license.html',name='license')]), Scene=Scene( children=[ WorldInfo(title='ManualXYZBalanceBlockPrototype.x3d'), ProtoDeclare(appinfo='Manual Balance Block for XYZ stability',name='ManualXYZBalanceBlock', ProtoBody=ProtoBody( children=[ Group(DEF='ManualXYZBalanceBlock', children=[ Shape(DEF='ControlBlock', appearance=Appearance( material=Material(ambientIntensity=0.4,diffuseColor=(1.0,0.77,0.31),shininess=0.16,specularColor=(0.71,0.70,0.56))), geometry=IndexedFaceSet(coordIndex=[0,1,2,-1,0,3,1,-1,0,4,3,-1,0,5,6,-1,0,2,5,-1,0,6,4,-1,1,3,2,-1,3,4,6,-1,3,7,2,-1,3,6,7,-1,5,2,6,-1,2,7,6,-1],creaseAngle=0.000, coord=Coordinate(point=[(-.675,-.35,.35),(-.675,.35,.35),(-.675,.35,-.35),(.675,.35,.35),(.675,-.35,.35),(-.675,-.35,-.35),(.675,-.35,-.35),(.675,.35,-.35)]))), Shape(DEF='LowerSpindle', appearance=Appearance( material=Material(DEF='SpindleColor',diffuseColor=(0.6,0.6,0.6))), geometry=IndexedFaceSet(coordIndex=[0,1,2,-1,0,3,1,-1,0,4,5,-1,0,2,4,-1,0,5,3,-1,1,6,2,-1,1,3,6,-1,6,7,8,-1,6,9,7,-1,6,3,9,-1,6,10,2,-1,6,8,10,-1,7,11,8,-1,7,12,11,-1,7,9,12,-1,11,13,14,-1,11,15,13,-1,11,12,15,-1,11,16,8,-1,11,14,16,-1,13,17,14,-1,13,18,17,-1,13,15,18,-1,17,19,20,-1,17,21,19,-1,17,18,21,-1,17,22,14,-1,17,20,22,-1,19,23,20,-1,19,24,23,-1,19,21,24,-1,23,25,26,-1,23,27,25,-1,23,24,27,-1,23,28,20,-1,23,26,28,-1,25,29,26,-1,25,30,29,-1,25,27,30,-1,29,31,32,-1,29,33,31,-1,29,30,33,-1,29,34,26,-1,29,32,34,-1,31,35,32,-1,31,36,35,-1,31,33,36,-1,35,37,38,-1,35,39,37,-1,35,36,39,-1,35,40,32,-1,35,38,40,-1,37,41,38,-1,37,42,41,-1,37,39,42,-1,41,43,44,-1,41,45,43,-1,41,42,45,-1,41,46,38,-1,41,44,46,-1,43,47,44,-1,43,48,47,-1,43,45,48,-1,47,48,49,-1,47,50,44,-1,47,49,50,-1,48,45,49,-1,45,42,51,-1,45,52,49,-1,45,51,52,-1,42,39,51,-1,39,36,53,-1,39,54,51,-1,39,53,54,-1,36,33,53,-1,33,30,55,-1,33,56,53,-1,33,55,56,-1,30,27,55,-1,27,24,57,-1,27,58,55,-1,27,57,58,-1,24,21,57,-1,21,18,59,-1,21,60,57,-1,21,59,60,-1,18,15,59,-1,15,12,61,-1,15,62,59,-1,15,61,62,-1,12,9,61,-1,9,3,5,-1,9,63,61,-1,9,5,63,-1,4,2,5,-1,2,10,63,-1,2,63,5,-1,10,8,61,-1,10,61,63,-1,8,16,62,-1,8,62,61,-1,16,14,59,-1,16,59,62,-1,14,22,60,-1,14,60,59,-1,22,20,57,-1,22,57,60,-1,20,28,58,-1,20,58,57,-1,28,26,55,-1,28,55,58,-1,26,34,56,-1,26,56,55,-1,34,32,53,-1,34,53,56,-1,32,40,54,-1,32,54,53,-1,40,38,51,-1,40,51,54,-1,38,46,52,-1,38,52,51,-1,46,44,49,-1,46,49,52,-1,44,50,49,-1],creaseAngle=0.524, coord=Coordinate(point=[(.1,-.35,0),(.098,-.35,.02),(.098,-1.65,.02),(.098,-.35,-.02),(.1,-1.65,0),(.098,-1.65,-.02),(.092,-.35,.038),(.083,-.35,.056),(.083,-1.65,.056),(.092,-.35,-.038),(.092,-1.65,.038),(.071,-.35,.071),(.083,-.35,-.056),(.056,-.35,.083),(.056,-1.65,.083),(.071,-.35,-.071),(.071,-1.65,.071),(.038,-.35,.092),(.056,-.35,-.083),(.02,-.35,.098),(.02,-1.65,.098),(.038,-.35,-.092),(.038,-1.65,.092),(0,-.35,.1),(.02,-.35,-.098),(-.02,-.35,.098),(-.02,-1.65,.098),(0,-.35,-.1),(0,-1.65,.1),(-.038,-.35,.092),(-.02,-.35,-.098),(-.056,-.35,.083),(-.056,-1.65,.083),(-.038,-.35,-.092),(-.038,-1.65,.092),(-.071,-.35,.071),(-.056,-.35,-.083),(-.083,-.35,.056),(-.083,-1.65,.056),(-.071,-.35,-.071),(-.071,-1.65,.071),(-.092,-.35,.038),(-.083,-.35,-.056),(-.098,-.35,.02),(-.098,-1.65,.02),(-.092,-.35,-.038),(-.092,-1.65,.038),(-.1,-.35,0),(-.098,-.35,-.02),(-.098,-1.65,-.02),(-.1,-1.65,0),(-.083,-1.65,-.056),(-.092,-1.65,-.038),(-.056,-1.65,-.083),(-.071,-1.65,-.071),(-.02,-1.65,-.098),(-.038,-1.65,-.092),(.02,-1.65,-.098),(0,-1.65,-.1),(.056,-1.65,-.083),(.038,-1.65,-.092),(.083,-1.65,-.056),(.071,-1.65,-.071),(.092,-1.65,-.038)]))), Shape(DEF='UpperSpindle', appearance=Appearance( material=Material(USE='SpindleColor')), geometry=IndexedFaceSet(coordIndex=[0,1,2,-1,0,3,1,-1,0,4,3,-1,0,5,4,-1,0,6,7,-1,0,2,6,-1,0,7,5,-1,1,8,2,-1,1,9,8,-1,1,3,9,-1,8,10,11,-1,8,12,10,-1,8,9,12,-1,8,13,2,-1,8,11,13,-1,10,14,11,-1,10,15,14,-1,10,12,15,-1,14,16,17,-1,14,18,16,-1,14,15,18,-1,14,19,11,-1,14,17,19,-1,16,20,17,-1,16,21,20,-1,16,18,21,-1,20,22,23,-1,20,24,22,-1,20,21,24,-1,20,25,17,-1,20,23,25,-1,22,26,23,-1,22,27,26,-1,22,24,27,-1,26,27,28,-1,26,29,23,-1,26,28,29,-1,27,24,28,-1,24,21,30,-1,24,31,28,-1,24,30,31,-1,21,18,30,-1,18,15,32,-1,18,33,30,-1,18,32,33,-1,15,12,32,-1,12,9,34,-1,12,35,32,-1,12,34,35,-1,9,3,34,-1,3,4,36,-1,3,37,34,-1,3,36,37,-1,4,38,36,-1,4,5,38,-1,38,39,40,-1,38,41,39,-1,38,5,41,-1,38,42,36,-1,38,40,42,-1,39,43,40,-1,39,44,43,-1,39,41,44,-1,43,45,46,-1,43,47,45,-1,43,44,47,-1,43,48,40,-1,43,46,48,-1,45,49,46,-1,45,50,49,-1,45,47,50,-1,49,51,52,-1,49,53,51,-1,49,50,53,-1,49,54,46,-1,49,52,54,-1,51,55,52,-1,51,56,55,-1,51,53,56,-1,55,56,57,-1,55,58,52,-1,55,57,58,-1,56,53,57,-1,53,50,59,-1,53,60,57,-1,53,59,60,-1,50,47,59,-1,47,44,61,-1,47,62,59,-1,47,61,62,-1,44,41,61,-1,41,5,7,-1,41,63,61,-1,41,7,63,-1,6,2,34,-1,6,34,37,-1,6,37,7,-1,2,13,35,-1,2,35,34,-1,13,11,32,-1,13,32,35,-1,11,19,33,-1,11,33,32,-1,19,17,30,-1,19,30,33,-1,17,25,31,-1,17,31,30,-1,25,23,28,-1,25,28,31,-1,23,29,28,-1,37,36,7,-1,36,42,63,-1,36,63,7,-1,42,40,61,-1,42,61,63,-1,40,48,62,-1,40,62,61,-1,48,46,59,-1,48,59,62,-1,46,54,60,-1,46,60,59,-1,54,52,57,-1,54,57,60,-1,52,58,57,-1],creaseAngle=0.524, coord=Coordinate(point=[(.1,0,2.001),(.098,-.02,2.001),(.098,-.02,.351),(-.1,0,2.001),(-.098,.02,2.001),(.098,.02,2.001),(.1,0,.351),(.098,.02,.351),(.092,-.038,2.001),(-.098,-.02,2.001),(.083,-.056,2.001),(.083,-.056,.351),(-.092,-.038,2.001),(.092,-.038,.351),(.071,-.071,2.001),(-.083,-.056,2.001),(.056,-.083,2.001),(.056,-.083,.351),(-.071,-.071,2.001),(.071,-.071,.351),(.038,-.092,2.001),(-.056,-.083,2.001),(.02,-.098,2.001),(.02,-.098,.351),(-.038,-.092,2.001),(.038,-.092,.351),(0,-.1,2.001),(-.02,-.098,2.001),(-.02,-.098,.351),(0,-.1,.351),(-.056,-.083,.351),(-.038,-.092,.351),(-.083,-.056,.351),(-.071,-.071,.351),(-.098,-.02,.351),(-.092,-.038,.351),(-.098,.02,.351),(-.1,0,.351),(-.092,.038,2.001),(-.083,.056,2.001),(-.083,.056,.351),(.092,.038,2.001),(-.092,.038,.351),(-.071,.071,2.001),(.083,.056,2.001),(-.056,.083,2.001),(-.056,.083,.351),(.071,.071,2.001),(-.071,.071,.351),(-.038,.092,2.001),(.056,.083,2.001),(-.02,.098,2.001),(-.02,.098,.351),(.038,.092,2.001),(-.038,.092,.351),(0,.1,2.001),(.02,.098,2.001),(.02,.098,.351),(0,.1,.351),(.056,.083,.351),(.038,.092,.351),(.083,.056,.351),(.071,.071,.351),(.092,.038,.351)]))), Transform(DEF='MovableTwoAxisBalanceWeight', children=[ Shape(DEF='TwoAxisBalanceWeight', appearance=Appearance( material=Material(DEF='WeightColor',diffuseColor=(0.2,0.2,0.2))), geometry=IndexedFaceSet(coordIndex=[0,1,2,-1,0,3,1,-1,0,4,3,-1,0,5,4,-1,0,6,7,-1,0,2,6,-1,0,7,5,-1,1,8,2,-1,1,9,8,-1,1,3,9,-1,8,10,11,-1,8,12,10,-1,8,9,12,-1,8,13,2,-1,8,11,13,-1,10,14,11,-1,10,15,14,-1,10,12,15,-1,14,16,17,-1,14,18,16,-1,14,15,18,-1,14,19,11,-1,14,17,19,-1,16,20,17,-1,16,21,20,-1,16,18,21,-1,20,22,23,-1,20,24,22,-1,20,21,24,-1,20,25,17,-1,20,23,25,-1,22,26,23,-1,22,27,26,-1,22,24,27,-1,26,27,28,-1,26,29,23,-1,26,28,29,-1,27,24,28,-1,24,21,30,-1,24,31,28,-1,24,30,31,-1,21,18,30,-1,18,15,32,-1,18,33,30,-1,18,32,33,-1,15,12,32,-1,12,9,34,-1,12,35,32,-1,12,34,35,-1,9,3,34,-1,3,4,36,-1,3,37,34,-1,3,36,37,-1,4,38,36,-1,4,5,38,-1,38,39,40,-1,38,41,39,-1,38,5,41,-1,38,42,36,-1,38,40,42,-1,39,43,40,-1,39,44,43,-1,39,41,44,-1,43,45,46,-1,43,47,45,-1,43,44,47,-1,43,48,40,-1,43,46,48,-1,45,49,46,-1,45,50,49,-1,45,47,50,-1,49,51,52,-1,49,53,51,-1,49,50,53,-1,49,54,46,-1,49,52,54,-1,51,55,52,-1,51,56,55,-1,51,53,56,-1,55,56,57,-1,55,58,52,-1,55,57,58,-1,56,53,57,-1,53,50,59,-1,53,60,57,-1,53,59,60,-1,50,47,59,-1,47,44,61,-1,47,62,59,-1,47,61,62,-1,44,41,61,-1,41,5,7,-1,41,63,61,-1,41,7,63,-1,6,2,34,-1,6,34,37,-1,6,37,7,-1,2,13,35,-1,2,35,34,-1,13,11,32,-1,13,32,35,-1,11,19,33,-1,11,33,32,-1,19,17,30,-1,19,30,33,-1,17,25,31,-1,17,31,30,-1,25,23,28,-1,25,28,31,-1,23,29,28,-1,37,36,7,-1,36,42,63,-1,36,63,7,-1,42,40,61,-1,42,61,63,-1,40,48,62,-1,40,62,61,-1,48,46,59,-1,48,59,62,-1,46,54,60,-1,46,60,59,-1,54,52,57,-1,54,57,60,-1,52,58,57,-1],creaseAngle=0.524, coord=Coordinate(point=[(.3,0,1.7),(.294,-.059,1.7),(.294,-.059,.85),(-.3,0,1.7),(-.294,.059,1.7),(.294,.059,1.7),(.3,0,.85),(.294,.059,.85),(.277,-.115,1.7),(-.294,-.059,1.7),(.249,-.167,1.7),(.249,-.167,.85),(-.277,-.115,1.7),(.277,-.115,.85),(.212,-.212,1.7),(-.249,-.167,1.7),(.167,-.249,1.7),(.167,-.249,.85),(-.212,-.212,1.7),(.212,-.212,.85),(.115,-.277,1.7),(-.167,-.249,1.7),(.059,-.294,1.7),(.059,-.294,.85),(-.115,-.277,1.7),(.115,-.277,.85),(0,-.3,1.7),(-.059,-.294,1.7),(-.059,-.294,.85),(0,-.3,.85),(-.167,-.249,.85),(-.115,-.277,.85),(-.249,-.167,.85),(-.212,-.212,.85),(-.294,-.059,.85),(-.277,-.115,.85),(-.294,.059,.85),(-.3,0,.85),(-.277,.115,1.7),(-.249,.167,1.7),(-.249,.167,.85),(.277,.115,1.7),(-.277,.115,.85),(-.212,.212,1.7),(.249,.167,1.7),(-.167,.249,1.7),(-.167,.249,.85),(.212,.212,1.7),(-.212,.212,.85),(-.115,.277,1.7),(.167,.249,1.7),(-.059,.294,1.7),(-.059,.294,.85),(.115,.277,1.7),(-.115,.277,.85),(0,.3,1.7),(.059,.294,1.7),(.059,.294,.85),(0,.3,.85),(.167,.249,.85),(.115,.277,.85),(.249,.167,.85),(.212,.212,.85),(.277,.115,.85)]))), TouchSensor(DEF='MoveXZWeightBack',description='Click to move XZ weight')]), Transform(DEF='MovableYAxisBalanceWeight', children=[ Shape(DEF='YAxisBalanceWeight', appearance=Appearance( material=Material(USE='WeightColor')), geometry=IndexedFaceSet(coordIndex=[0,1,2,-1,0,3,1,-1,0,4,5,-1,0,2,4,-1,0,5,3,-1,1,6,2,-1,1,3,6,-1,6,7,8,-1,6,9,7,-1,6,3,9,-1,6,10,2,-1,6,8,10,-1,7,11,8,-1,7,12,11,-1,7,9,12,-1,11,13,14,-1,11,15,13,-1,11,12,15,-1,11,16,8,-1,11,14,16,-1,13,17,14,-1,13,18,17,-1,13,15,18,-1,17,19,20,-1,17,21,19,-1,17,18,21,-1,17,22,14,-1,17,20,22,-1,19,23,20,-1,19,24,23,-1,19,21,24,-1,23,25,26,-1,23,27,25,-1,23,24,27,-1,23,28,20,-1,23,26,28,-1,25,29,26,-1,25,30,29,-1,25,27,30,-1,29,31,32,-1,29,33,31,-1,29,30,33,-1,29,34,26,-1,29,32,34,-1,31,35,32,-1,31,36,35,-1,31,33,36,-1,35,37,38,-1,35,39,37,-1,35,36,39,-1,35,40,32,-1,35,38,40,-1,37,41,38,-1,37,42,41,-1,37,39,42,-1,41,43,44,-1,41,45,43,-1,41,42,45,-1,41,46,38,-1,41,44,46,-1,43,47,44,-1,43,48,47,-1,43,45,48,-1,47,48,49,-1,47,50,44,-1,47,49,50,-1,48,45,49,-1,45,42,51,-1,45,52,49,-1,45,51,52,-1,42,39,51,-1,39,36,53,-1,39,54,51,-1,39,53,54,-1,36,33,53,-1,33,30,55,-1,33,56,53,-1,33,55,56,-1,30,27,55,-1,27,24,57,-1,27,58,55,-1,27,57,58,-1,24,21,57,-1,21,18,59,-1,21,60,57,-1,21,59,60,-1,18,15,59,-1,15,12,61,-1,15,62,59,-1,15,61,62,-1,12,9,61,-1,9,3,5,-1,9,63,61,-1,9,5,63,-1,4,2,5,-1,2,10,63,-1,2,63,5,-1,10,8,61,-1,10,61,63,-1,8,16,62,-1,8,62,61,-1,16,14,59,-1,16,59,62,-1,14,22,60,-1,14,60,59,-1,22,20,57,-1,22,57,60,-1,20,28,58,-1,20,58,57,-1,28,26,55,-1,28,55,58,-1,26,34,56,-1,26,56,55,-1,34,32,53,-1,34,53,56,-1,32,40,54,-1,32,54,53,-1,40,38,51,-1,40,51,54,-1,38,46,52,-1,38,52,51,-1,46,44,49,-1,46,49,52,-1,44,50,49,-1],creaseAngle=0.524, coord=Coordinate(point=[(.3,-.7,0),(.294,-.7,.059),(.294,-1.1,.059),(.294,-.7,-.059),(.3,-1.1,0),(.294,-1.1,-.059),(.277,-.7,.115),(.249,-.7,.167),(.249,-1.1,.167),(.277,-.7,-.115),(.277,-1.1,.115),(.212,-.7,.212),(.249,-.7,-.167),(.167,-.7,.249),(.167,-1.1,.249),(.212,-.7,-.212),(.212,-1.1,.212),(.115,-.7,.277),(.167,-.7,-.249),(.059,-.7,.294),(.059,-1.1,.294),(.115,-.7,-.277),(.115,-1.1,.277),(0,-.7,.3),(.059,-.7,-.294),(-.059,-.7,.294),(-.059,-1.1,.294),(0,-.7,-.3),(0,-1.1,.3),(-.115,-.7,.277),(-.059,-.7,-.294),(-.167,-.7,.249),(-.167,-1.1,.249),(-.115,-.7,-.277),(-.115,-1.1,.277),(-.212,-.7,.212),(-.167,-.7,-.249),(-.249,-.7,.167),(-.249,-1.1,.167),(-.212,-.7,-.212),(-.212,-1.1,.212),(-.277,-.7,.115),(-.249,-.7,-.167),(-.294,-.7,.059),(-.294,-1.1,.059),(-.277,-.7,-.115),(-.277,-1.1,.115),(-.3,-.7,0),(-.294,-.7,-.059),(-.294,-1.1,-.059),(-.3,-1.1,0),(-.249,-1.1,-.167),(-.277,-1.1,-.115),(-.167,-1.1,-.249),(-.212,-1.1,-.212),(-.059,-1.1,-.294),(-.115,-1.1,-.277),(.059,-1.1,-.294),(0,-1.1,-.3),(.167,-1.1,-.249),(.115,-1.1,-.277),(.249,-1.1,-.167),(.212,-1.1,-.212),(.277,-1.1,-.115)]))), TouchSensor(DEF='MoveYWeightBack',description='Click to move Y weight')]), Group(DEF='TouchableHandle', children=[ Shape(DEF='Handle', appearance=Appearance( material=Material(diffuseColor=(1.0,1.0,0.0))), geometry=IndexedFaceSet(coordIndex=[0,1,2,-1,0,2,3,-1,0,4,1,-1,0,3,4,-1,1,5,6,-1,1,7,2,-1,1,6,7,-1,1,4,5,-1,5,8,6,-1,5,4,8,-1,8,9,10,-1,8,11,6,-1,8,10,11,-1,8,4,9,-1,9,12,10,-1,9,4,12,-1,12,13,14,-1,12,15,10,-1,12,14,15,-1,12,4,13,-1,13,16,14,-1,13,4,16,-1,16,17,18,-1,16,19,14,-1,16,18,19,-1,16,4,17,-1,17,20,18,-1,17,4,20,-1,20,21,22,-1,20,23,18,-1,20,22,23,-1,20,4,21,-1,21,24,22,-1,21,4,24,-1,24,25,26,-1,24,27,22,-1,24,26,27,-1,24,4,25,-1,25,28,26,-1,25,4,28,-1,28,29,30,-1,28,31,26,-1,28,30,31,-1,28,4,29,-1,29,32,30,-1,29,4,32,-1,32,33,34,-1,32,35,30,-1,32,34,35,-1,32,4,33,-1,33,4,36,-1,33,36,34,-1,2,7,37,-1,2,38,39,-1,2,37,38,-1,2,40,3,-1,2,39,40,-1,7,6,37,-1,6,11,41,-1,6,42,37,-1,6,41,42,-1,11,10,41,-1,10,15,43,-1,10,44,41,-1,10,43,44,-1,15,14,43,-1,14,19,45,-1,14,46,43,-1,14,45,46,-1,19,18,45,-1,18,23,47,-1,18,48,45,-1,18,47,48,-1,23,22,47,-1,22,27,49,-1,22,50,47,-1,22,49,50,-1,27,26,49,-1,26,31,51,-1,26,52,49,-1,26,51,52,-1,31,30,51,-1,30,35,53,-1,30,54,51,-1,30,53,54,-1,35,34,53,-1,34,55,53,-1,34,56,55,-1,34,57,56,-1,34,36,57,-1,38,37,58,-1,38,58,39,-1,37,42,59,-1,37,60,58,-1,37,59,60,-1,42,41,59,-1,41,44,61,-1,41,62,59,-1,41,61,62,-1,44,43,61,-1,43,46,63,-1,43,64,61,-1,43,63,64,-1,46,45,63,-1,45,48,65,-1,45,66,63,-1,45,65,66,-1,48,47,65,-1,47,50,67,-1,47,68,65,-1,47,67,68,-1,50,49,67,-1,49,52,69,-1,49,70,67,-1,49,69,70,-1,52,51,69,-1,51,54,71,-1,51,72,69,-1,51,71,72,-1,54,53,71,-1,53,55,73,-1,53,74,71,-1,53,73,74,-1,55,56,73,-1,58,60,75,-1,58,76,77,-1,58,75,76,-1,58,78,39,-1,58,77,78,-1,60,59,75,-1,59,62,79,-1,59,80,75,-1,59,79,80,-1,62,61,79,-1,61,64,81,-1,61,82,79,-1,61,81,82,-1,64,63,81,-1,63,66,83,-1,63,84,81,-1,63,83,84,-1,66,65,83,-1,65,68,85,-1,65,86,83,-1,65,85,86,-1,68,67,85,-1,67,70,87,-1,67,88,85,-1,67,87,88,-1,70,69,87,-1,69,72,89,-1,69,90,87,-1,69,89,90,-1,72,71,89,-1,71,74,91,-1,71,92,89,-1,71,91,92,-1,74,73,91,-1,73,93,91,-1,73,94,93,-1,73,95,94,-1,73,56,95,-1,76,75,96,-1,76,96,77,-1,75,80,97,-1,75,98,96,-1,75,97,98,-1,80,79,97,-1,79,82,99,-1,79,100,97,-1,79,99,100,-1,82,81,99,-1,81,84,101,-1,81,102,99,-1,81,101,102,-1,84,83,101,-1,83,86,103,-1,83,104,101,-1,83,103,104,-1,86,85,103,-1,85,88,105,-1,85,106,103,-1,85,105,106,-1,88,87,105,-1,87,90,107,-1,87,108,105,-1,87,107,108,-1,90,89,107,-1,89,92,109,-1,89,110,107,-1,89,109,110,-1,92,91,109,-1,91,93,111,-1,91,112,109,-1,91,111,112,-1,93,94,111,-1,96,98,113,-1,96,114,115,-1,96,113,114,-1,96,116,77,-1,96,115,116,-1,98,97,113,-1,97,100,117,-1,97,118,113,-1,97,117,118,-1,100,99,117,-1,99,102,119,-1,99,120,117,-1,99,119,120,-1,102,101,119,-1,101,104,121,-1,101,122,119,-1,101,121,122,-1,104,103,121,-1,103,106,123,-1,103,124,121,-1,103,123,124,-1,106,105,123,-1,105,108,125,-1,105,126,123,-1,105,125,126,-1,108,107,125,-1,107,110,127,-1,107,128,125,-1,107,127,128,-1,110,109,127,-1,109,112,129,-1,109,130,127,-1,109,129,130,-1,112,111,129,-1,111,131,129,-1,111,132,131,-1,111,133,132,-1,111,94,133,-1,114,113,134,-1,114,134,115,-1,113,118,135,-1,113,136,134,-1,113,135,136,-1,118,117,135,-1,117,120,137,-1,117,138,135,-1,117,137,138,-1,120,119,137,-1,119,122,139,-1,119,140,137,-1,119,139,140,-1,122,121,139,-1,121,124,141,-1,121,142,139,-1,121,141,142,-1,124,123,141,-1,123,126,143,-1,123,144,141,-1,123,143,144,-1,126,125,143,-1,125,128,145,-1,125,146,143,-1,125,145,146,-1,128,127,145,-1,127,130,147,-1,127,148,145,-1,127,147,148,-1,130,129,147,-1,129,131,149,-1,129,150,147,-1,129,149,150,-1,131,132,149,-1,134,136,151,-1,134,152,153,-1,134,151,152,-1,134,154,115,-1,134,153,154,-1,136,135,151,-1,135,138,155,-1,135,156,151,-1,135,155,156,-1,138,137,155,-1,137,140,157,-1,137,158,155,-1,137,157,158,-1,140,139,157,-1,139,142,159,-1,139,160,157,-1,139,159,160,-1,142,141,159,-1,141,144,161,-1,141,162,159,-1,141,161,162,-1,144,143,161,-1,143,146,163,-1,143,164,161,-1,143,163,164,-1,146,145,163,-1,145,148,165,-1,145,166,163,-1,145,165,166,-1,148,147,165,-1,147,150,167,-1,147,168,165,-1,147,167,168,-1,150,149,167,-1,149,169,167,-1,149,170,169,-1,149,171,170,-1,149,132,171,-1,152,151,172,-1,152,172,153,-1,151,156,173,-1,151,174,172,-1,151,173,174,-1,156,155,173,-1,155,158,175,-1,155,176,173,-1,155,175,176,-1,158,157,175,-1,157,160,177,-1,157,178,175,-1,157,177,178,-1,160,159,177,-1,159,162,179,-1,159,180,177,-1,159,179,180,-1,162,161,179,-1,161,164,181,-1,161,182,179,-1,161,181,182,-1,164,163,181,-1,163,166,183,-1,163,184,181,-1,163,183,184,-1,166,165,183,-1,165,168,185,-1,165,186,183,-1,165,185,186,-1,168,167,185,-1,167,169,187,-1,167,188,185,-1,167,187,188,-1,169,170,187,-1,172,174,189,-1,172,190,191,-1,172,189,190,-1,172,192,153,-1,172,191,192,-1,174,173,189,-1,173,176,193,-1,173,194,189,-1,173,193,194,-1,176,175,193,-1,175,178,195,-1,175,196,193,-1,175,195,196,-1,178,177,195,-1,177,180,197,-1,177,198,195,-1,177,197,198,-1,180,179,197,-1,179,182,199,-1,179,200,197,-1,179,199,200,-1,182,181,199,-1,181,184,201,-1,181,202,199,-1,181,201,202,-1,184,183,201,-1,183,186,203,-1,183,204,201,-1,183,203,204,-1,186,185,203,-1,185,188,205,-1,185,206,203,-1,185,205,206,-1,188,187,205,-1,187,207,205,-1,187,208,207,-1,187,209,208,-1,187,170,209,-1,190,189,210,-1,190,210,191,-1,189,194,211,-1,189,212,210,-1,189,211,212,-1,194,193,211,-1,193,196,213,-1,193,214,211,-1,193,213,214,-1,196,195,213,-1,195,198,215,-1,195,216,213,-1,195,215,216,-1,198,197,215,-1,197,200,217,-1,197,218,215,-1,197,217,218,-1,200,199,217,-1,199,202,219,-1,199,220,217,-1,199,219,220,-1,202,201,219,-1,201,204,221,-1,201,222,219,-1,201,221,222,-1,204,203,221,-1,203,206,223,-1,203,224,221,-1,203,223,224,-1,206,205,223,-1,205,207,225,-1,205,226,223,-1,205,225,226,-1,207,208,225,-1,210,212,227,-1,210,228,229,-1,210,227,228,-1,210,230,191,-1,210,229,230,-1,212,211,227,-1,211,214,231,-1,211,232,227,-1,211,231,232,-1,214,213,231,-1,213,216,233,-1,213,234,231,-1,213,233,234,-1,216,215,233,-1,215,218,235,-1,215,236,233,-1,215,235,236,-1,218,217,235,-1,217,220,237,-1,217,238,235,-1,217,237,238,-1,220,219,237,-1,219,222,239,-1,219,240,237,-1,219,239,240,-1,222,221,239,-1,221,224,241,-1,221,242,239,-1,221,241,242,-1,224,223,241,-1,223,226,243,-1,223,244,241,-1,223,243,244,-1,226,225,243,-1,225,245,243,-1,225,246,245,-1,225,247,246,-1,225,208,247,-1,228,227,248,-1,228,248,229,-1,227,232,249,-1,227,250,248,-1,227,249,250,-1,232,231,249,-1,231,234,251,-1,231,252,249,-1,231,251,252,-1,234,233,251,-1,233,236,253,-1,233,254,251,-1,233,253,254,-1,236,235,253,-1,235,238,255,-1,235,256,253,-1,235,255,256,-1,238,237,255,-1,237,240,257,-1,237,258,255,-1,237,257,258,-1,240,239,257,-1,239,242,259,-1,239,260,257,-1,239,259,260,-1,242,241,259,-1,241,244,261,-1,241,262,259,-1,241,261,262,-1,244,243,261,-1,243,245,263,-1,243,264,261,-1,243,263,264,-1,245,246,263,-1,248,250,265,-1,248,266,267,-1,248,265,266,-1,248,268,229,-1,248,267,268,-1,250,249,265,-1,249,252,269,-1,249,270,265,-1,249,269,270,-1,252,251,269,-1,251,254,271,-1,251,272,269,-1,251,271,272,-1,254,253,271,-1,253,256,273,-1,253,274,271,-1,253,273,274,-1,256,255,273,-1,255,258,275,-1,255,276,273,-1,255,275,276,-1,258,257,275,-1,257,260,277,-1,257,278,275,-1,257,277,278,-1,260,259,277,-1,259,262,279,-1,259,280,277,-1,259,279,280,-1,262,261,279,-1,261,264,281,-1,261,282,279,-1,261,281,282,-1,264,263,281,-1,263,283,281,-1,263,284,283,-1,263,285,284,-1,263,246,285,-1,266,265,286,-1,266,286,267,-1,265,270,286,-1,270,269,286,-1,269,272,286,-1,272,271,286,-1,271,274,286,-1,274,273,286,-1,273,276,286,-1,276,275,286,-1,275,278,286,-1,278,277,286,-1,277,280,286,-1,280,279,286,-1,279,282,286,-1,282,281,286,-1,281,283,286,-1,283,284,286,-1,4,287,36,-1,4,3,287,-1,286,288,267,-1,286,284,288,-1,287,3,36,-1,3,40,57,-1,3,57,36,-1,40,39,56,-1,40,56,57,-1,39,78,95,-1,39,95,56,-1,78,77,94,-1,78,94,95,-1,77,116,133,-1,77,133,94,-1,116,115,132,-1,116,132,133,-1,115,154,171,-1,115,171,132,-1,154,153,170,-1,154,170,171,-1,153,192,209,-1,153,209,170,-1,192,191,208,-1,192,208,209,-1,191,230,247,-1,191,247,208,-1,230,229,246,-1,230,246,247,-1,229,268,285,-1,229,285,246,-1,268,267,284,-1,268,284,285,-1,267,288,284,-1],creaseAngle=0.524, coord=Coordinate(point=[(.068,.343,2.2),(.067,.343,2.213),(.134,.323,2.2),(.068,.343,2),(0,.35,2.2),(.063,.343,2.226),(.124,.323,2.251),(.131,.323,2.226),(.057,.343,2.238),(.048,.343,2.248),(.095,.323,2.295),(.111,.323,2.274),(.038,.343,2.257),(.026,.343,2.263),(.051,.323,2.324),(.074,.323,2.311),(.013,.343,2.267),(0,.343,2.268),(0,.323,2.334),(.026,.323,2.331),(-.013,.343,2.267),(-.026,.343,2.263),(-.051,.323,2.324),(-.026,.323,2.331),(-.038,.343,2.257),(-.048,.343,2.248),(-.095,.323,2.295),(-.074,.323,2.311),(-.057,.343,2.238),(-.063,.343,2.226),(-.124,.323,2.251),(-.111,.323,2.274),(-.067,.343,2.213),(-.068,.343,2.2),(-.134,.323,2.2),(-.131,.323,2.226),(-.068,.343,2),(.191,.291,2.238),(.194,.291,2.2),(.194,.291,2),(.134,.323,2),(.162,.291,2.308),(.18,.291,2.274),(.108,.291,2.362),(.137,.291,2.338),(.038,.291,2.391),(.074,.291,2.38),(-.038,.291,2.391),(0,.291,2.394),(-.108,.291,2.362),(-.074,.291,2.38),(-.162,.291,2.308),(-.137,.291,2.338),(-.191,.291,2.238),(-.18,.291,2.274),(-.194,.291,2.2),(-.194,.291,2),(-.134,.323,2),(.247,.247,2.2),(.229,.247,2.295),(.243,.247,2.248),(.175,.247,2.375),(.206,.247,2.338),(.095,.247,2.429),(.137,.247,2.406),(0,.247,2.447),(.048,.247,2.443),(-.095,.247,2.429),(-.048,.247,2.443),(-.175,.247,2.375),(-.137,.247,2.406),(-.229,.247,2.295),(-.206,.247,2.338),(-.247,.247,2.2),(-.243,.247,2.248),(.285,.194,2.257),(.291,.194,2.2),(.291,.194,2),(.247,.247,2),(.242,.194,2.362),(.269,.194,2.311),(.162,.194,2.442),(.206,.194,2.406),(.057,.194,2.485),(.111,.194,2.469),(-.057,.194,2.485),(0,.194,2.491),(-.162,.194,2.442),(-.111,.194,2.469),(-.242,.194,2.362),(-.206,.194,2.406),(-.285,.194,2.257),(-.269,.194,2.311),(-.291,.194,2.2),(-.291,.194,2),(-.247,.247,2),(.323,.134,2.2),(.299,.134,2.324),(.317,.134,2.263),(.229,.134,2.429),(.269,.134,2.38),(.124,.134,2.499),(.18,.134,2.469),(0,.134,2.523),(.063,.134,2.517),(-.124,.134,2.499),(-.063,.134,2.517),(-.229,.134,2.429),(-.18,.134,2.469),(-.299,.134,2.324),(-.269,.134,2.38),(-.323,.134,2.2),(-.317,.134,2.263),(.337,.068,2.267),(.343,.068,2.2),(.343,.068,2),(.323,.134,2),(.285,.068,2.391),(.317,.068,2.331),(.191,.068,2.485),(.243,.068,2.443),(.067,.068,2.537),(.131,.068,2.517),(-.067,.068,2.537),(0,.068,2.543),(-.191,.068,2.485),(-.131,.068,2.517),(-.285,.068,2.391),(-.243,.068,2.443),(-.337,.068,2.267),(-.317,.068,2.331),(-.343,.068,2.2),(-.343,.068,2),(-.323,.134,2),(.35,0,2.2),(.323,0,2.334),(.343,0,2.268),(.247,0,2.447),(.291,0,2.394),(.134,0,2.523),(.194,0,2.491),(0,0,2.55),(.068,0,2.543),(-.134,0,2.523),(-.068,0,2.543),(-.247,0,2.447),(-.194,0,2.491),(-.323,0,2.334),(-.291,0,2.394),(-.35,0,2.2),(-.343,0,2.268),(.337,-.068,2.267),(.343,-.068,2.2),(.343,-.068,2),(.35,0,2),(.285,-.068,2.391),(.317,-.068,2.331),(.191,-.068,2.485),(.243,-.068,2.443),(.067,-.068,2.537),(.131,-.068,2.517),(-.067,-.068,2.537),(0,-.068,2.543),(-.191,-.068,2.485),(-.131,-.068,2.517),(-.285,-.068,2.391),(-.243,-.068,2.443),(-.337,-.068,2.267),(-.317,-.068,2.331),(-.343,-.068,2.2),(-.343,-.068,2),(-.35,0,2),(.323,-.134,2.2),(.299,-.134,2.324),(.317,-.134,2.263),(.229,-.134,2.429),(.269,-.134,2.38),(.124,-.134,2.499),(.18,-.134,2.469),(0,-.134,2.523),(.063,-.134,2.517),(-.124,-.134,2.499),(-.063,-.134,2.517),(-.229,-.134,2.429),(-.18,-.134,2.469),(-.299,-.134,2.324),(-.269,-.134,2.38),(-.323,-.134,2.2),(-.317,-.134,2.263),(.285,-.194,2.257),(.291,-.194,2.2),(.291,-.194,2),(.323,-.134,2),(.242,-.194,2.362),(.269,-.194,2.311),(.162,-.194,2.442),(.206,-.194,2.406),(.057,-.194,2.485),(.111,-.194,2.469),(-.057,-.194,2.485),(0,-.194,2.491),(-.162,-.194,2.442),(-.111,-.194,2.469),(-.242,-.194,2.362),(-.206,-.194,2.406),(-.285,-.194,2.257),(-.269,-.194,2.311),(-.291,-.194,2.2),(-.291,-.194,2),(-.323,-.134,2),(.247,-.247,2.2),(.229,-.247,2.295),(.243,-.247,2.248),(.175,-.247,2.375),(.206,-.247,2.338),(.095,-.247,2.429),(.137,-.247,2.406),(0,-.247,2.447),(.048,-.247,2.443),(-.095,-.247,2.429),(-.048,-.247,2.443),(-.175,-.247,2.375),(-.137,-.247,2.406),(-.229,-.247,2.295),(-.206,-.247,2.338),(-.247,-.247,2.2),(-.243,-.247,2.248),(.191,-.291,2.238),(.194,-.291,2.2),(.194,-.291,2),(.247,-.247,2),(.162,-.291,2.308),(.18,-.291,2.274),(.108,-.291,2.362),(.137,-.291,2.338),(.038,-.291,2.391),(.074,-.291,2.38),(-.038,-.291,2.391),(0,-.291,2.394),(-.108,-.291,2.362),(-.074,-.291,2.38),(-.162,-.291,2.308),(-.137,-.291,2.338),(-.191,-.291,2.238),(-.18,-.291,2.274),(-.194,-.291,2.2),(-.194,-.291,2),(-.247,-.247,2),(.134,-.323,2.2),(.124,-.323,2.251),(.131,-.323,2.226),(.095,-.323,2.295),(.111,-.323,2.274),(.051,-.323,2.324),(.074,-.323,2.311),(0,-.323,2.334),(.026,-.323,2.331),(-.051,-.323,2.324),(-.026,-.323,2.331),(-.095,-.323,2.295),(-.074,-.323,2.311),(-.124,-.323,2.251),(-.111,-.323,2.274),(-.134,-.323,2.2),(-.131,-.323,2.226),(.067,-.343,2.213),(.068,-.343,2.2),(.068,-.343,2),(.134,-.323,2),(.057,-.343,2.238),(.063,-.343,2.226),(.038,-.343,2.257),(.048,-.343,2.248),(.013,-.343,2.267),(.026,-.343,2.263),(-.013,-.343,2.267),(0,-.343,2.268),(-.038,-.343,2.257),(-.026,-.343,2.263),(-.057,-.343,2.238),(-.048,-.343,2.248),(-.067,-.343,2.213),(-.063,-.343,2.226),(-.068,-.343,2.2),(-.068,-.343,2),(-.134,-.323,2),(0,-.35,2.2),(0,.35,2),(0,-.35,2)])))])]), Group(DEF='WeightMotion', children=[ TimeSensor(DEF='XZWeightMotionClock',cycleInterval=4), TimeSensor(DEF='YWeightMotionClock',cycleInterval=4), PositionInterpolator(DEF='XZDirector',key=[0,0.5,1.0],keyValue=[(0,0,0),(0,0,-0.1),(0,0,-0.2)]), ROUTE(fromField='fraction_changed',fromNode='XZWeightMotionClock',toField='set_fraction',toNode='XZDirector'), ROUTE(fromField='value_changed',fromNode='XZDirector',toField='set_translation',toNode='MovableTwoAxisBalanceWeight'), ROUTE(fromField='touchTime',fromNode='MoveXZWeightBack',toField='set_startTime',toNode='XZWeightMotionClock'), PositionInterpolator(DEF='YDirector',key=[0,0.5,1.0],keyValue=[(0,0,0),(0,0.1,0),(0,0.2,0)]), ROUTE(fromField='fraction_changed',fromNode='YWeightMotionClock',toField='set_fraction',toNode='YDirector'), ROUTE(fromField='value_changed',fromNode='YDirector',toField='set_translation',toNode='MovableYAxisBalanceWeight'), ROUTE(fromField='touchTime',fromNode='MoveYWeightBack',toField='set_startTime',toNode='YWeightMotionClock')])]))]) ) # X3D model complete #################################################################################################### # Self-test diagnostics #################################################################################################### print('Self-test diagnostics for ManualXYZBalanceBlockPrototype.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 ManualXYZBalanceBlockPrototype.py load and self-test diagnostics complete.")