<html xmlns:v="urn:schemas-microsoft-com:vml" 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=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#606420;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"\0422\0435\043A\0441\0442 \0417\043D\0430\043A";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.a
        {mso-style-name:"\0422\0435\043A\0441\0442 \0417\043D\0430\043A";
        mso-style-priority:99;
        mso-style-link:\0422\0435\043A\0441\0442;
        font-family:"Consolas","serif";}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:navy;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:2.0cm 69.6pt 2.0cm 69.6pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=RU link=blue vlink="#606420">

<div class=Section1>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'>Hello
everyone,<o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-size:11.0pt;font-family:
"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-size:11.0pt;font-family:
"Calibri","sans-serif"'>Sorry for probable double-posting, it seems that my
previous message had not passed through because my e-mail address changed.<o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-size:11.0pt;font-family:
"Calibri","sans-serif"'>VrmlPad, a text-level VRML editor from ParallelGraphics,
exposes a powerful scripting interface, and anyone can write scripts and macros
to manipulate VRML scenes. Simply place a .vbs or .js file into the Program
Files\ParallelGraphics\VrmlPad\AddIns folder, and VrmlPad will automatically parse
it and display the list of available commands in the Tools menu.<o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'>Download
VrmlPad:<o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif";
color:blue'><a href="http://www.parallelgraphics.com/products/vrmlpad">http://www.parallelgraphics.com/products/vrmlpad</a><o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'>Read
more about VrmlPad scripting:<o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif";
color:blue'><a href="http://www.parallelgraphics.com/developer/products/vrmlpad">http://www.parallelgraphics.com/developer/products/vrmlpad</a><o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-size:11.0pt;font-family:
"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'>Attached
is an archive with two VrmlPad scripts:<o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><b><span lang=EN-US style='font-family:"Arial","sans-serif"'>eval.js<o:p></o:p></span></b></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'>This
script contains only one function that is available in the VrmlPad context
menu. Write any arithmetic expression using the JavaScript syntax, for example,
(Math.sqrt(5)+1)/2, select it, click the right mouse button and select
&quot;Evaluate selection&quot;. The script will calculate the expression result
and paste it back to VrmlPad. Very useful for quick modifications of VRML files
without having to launch a calculator.<o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><b><span lang=EN-US style='font-family:"Arial","sans-serif"'>ifsTools-eng.vbs<o:p></o:p></span></b></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'>This
script contains more functions; I used VBScript because of its customizable
MessageBoxes and the InputBox feature.<o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Arial","sans-serif"'>Collapse IndexedFaceSets<o:p></o:p></span></b></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>This function is available in the IFS
Tools submenu and in the context menu of Transforms. It applies the
transformation to all IndexedFaceSets contained in the selected Transform. It
checks node types and processes only valid IndexedFaceSets.<o:p></o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Arial","sans-serif"'>Collapse IndexedFaceSets in the whole
file<o:p></o:p></span></b></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>This function is available in the IFS
Tools submenu. It collapses IndexedFaceSets in the whole file, removing
transformations from all Transforms and applying them directly to the geometry.<o:p></o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Arial","sans-serif"'>Collapse Transforms<o:p></o:p></span></b></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>This function is available in the IFS
Tools submenu and in the context menu of Transforms. It combines nested
transforms, replacing two transformations by a single transformation. It
doesn&#8217;t modify IndexedFaceSets.<o:p></o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Arial","sans-serif"'>Collapse Transforms in the whole file<o:p></o:p></span></b></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>This function is available in the IFS
Tools submenu. It collapses all Transforms recursively, eliminating all nested
Transforms.<o:p></o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Arial","sans-serif"'>Locate in MF field<o:p></o:p></span></b></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>This function is available in the
Tools menu and in the context menu of any MF field. It displays the index of
the element under the cursor.<o:p></o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Arial","sans-serif"'>Find item in MF field<o:p></o:p></span></b></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>This function is available in the
Tools menu and in the context menu of any MF field. It selects the element with
the desired index.<o:p></o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Arial","sans-serif"'>Merge IndexedFaceSets<o:p></o:p></span></b></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>This function is available in the IFS
Tools submenu and in the context menu of Transforms, Groups and MFNode fields.
It merges all contained IndexedFaceSets into one.<o:p></o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Arial","sans-serif"'>Reverse MFValue field<o:p></o:p></span></b></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>This function is available in the
context menu of MF fields. It reverses the values in the MF field.<o:p></o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Arial","sans-serif"'>Triangulate faces randomly<o:p></o:p></span></b></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>This function is available in the IFS
Tools submenu and in the context menu of IndexedFaceSets. It converts all
polygons into triangles. For non-convex triangles the result may be incorrect.<o:p></o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Arial","sans-serif"'>Convert all IndexedFaceSets to ccw
TRUE<o:p></o:p></span></b></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>This function is available in the IFS
Tools submenu. It changes ccw to TRUE in all IndexedFaceSets, rearranging
coordIndex if needed.<o:p></o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText style='margin-left:36.0pt'><b><span lang=EN-US
style='font-family:"Arial","sans-serif"'>Round numeric values<o:p></o:p></span></b></p>

<p class=MsoPlainText style='margin-left:36.0pt'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>This function is available in the
context menu of MFFloat, MFVec and MFRotation fields. It rounds values to a
needed precision.<o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'>Feel
free to use and modify these scripts. See the VrmlPad API documentation, there
is nothing difficult. Please note that my scripts can produce strange results
if nodes are USEd multiple times in the file.<o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText align=right style='text-align:right'><span lang=EN-US
style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Sergey Bederov<o:p></o:p></span></p>

<p class=MsoPlainText><span lang=EN-US style='font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

</div>

</body>

</html>