riki
10-19-2003, 08:50 AM
Anyone idea's what's wrong with this script. It works if you run it externally, but if you load and map it to a button it gives the following error message.
"Line 30, unable to locate function reference addcontrol"
----------------- Here's the script
// Choose polygons by their direction. By James G. Jones (jgjones@home.com)
// 5/3/96, 7/31/97, 8/21/00
@script modeler
main
{
var Vt; // temporary vector
var polyInfo[6]; // for results of polycount()
var axis = 1; // recall("axis",1); // saved values from requester
var name = "New"; // recall("name","New");
var rename = 2; // recall("rename", 1); // make new surface, or not
var buttons[6]; // buttons strings for requester
buttons[1] = "+X";
buttons[2] = "-X";
buttons[3] = "+Y";
buttons[4] = "-Y";
buttons[5] = "+Z";
buttons[6] = "-Z";
var renamebuttons[2];
renamebuttons[1] = "New Surface";
renamebuttons[2] = "Select Only";
var c1, c2, c3; // to hold control handle returned by addcontrol()
var i; // for loops
// Put up the requester...
reqbegin("Directional Select");
c1 = ctlchoice("Direction:", axis, buttons);
c3 = ctlchoice("Options:", rename, renamebuttons);
c2 = ctlstring("New Surface Name:",name);
if(reqpost())
{
axis = getvalue(c1); // see what the user input
name = getvalue(c2);
rename = getvalue(c3);
// store("axis",axis); // keep values for subsequent runs...
// store("name",name);
// store("rename",rename);
}
else return;
reqend();
selmode(USER); // for rest of script
selpolygon(CLEAR,NVGT,0); // clear any existing selection
editbegin();
polyInfo = polycount();
switch(axis)
{
case 1: // +X axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.x >= abs(Vt.y) && Vt.x >= abs(Vt.z)) polysurface(polygons[i],name);
}
break;
case 2: // -X axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.x <= -abs(Vt.y) && Vt.x <= -abs(Vt.z)) polysurface(polygons[i],name);
}
break;
case 3: // +Y axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.y >= abs(Vt.x) && Vt.y >= abs(Vt.z)) polysurface(polygons[i],name);
}
break;
case 4: // -Y axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.y <= -abs(Vt.x) && Vt.y <= -abs(Vt.z)) polysurface(polygons[i],name);
}
break;
case 5: // +Z axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.z >= abs(Vt.x) && Vt.z >= abs(Vt.y)) polysurface(polygons[i],name);
}
break;
case 6: // -Z axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.z <= -abs(Vt.x) && Vt.z <= -abs(Vt.y)) polysurface(polygons[i],name);
}
break;
}
editend();
// info("Name = ", name);
selpolygon(SET, SURFACE, name);
if(rename != 1) undo(); // 1 = new surface name, 2 = select only.
}
"Line 30, unable to locate function reference addcontrol"
----------------- Here's the script
// Choose polygons by their direction. By James G. Jones (jgjones@home.com)
// 5/3/96, 7/31/97, 8/21/00
@script modeler
main
{
var Vt; // temporary vector
var polyInfo[6]; // for results of polycount()
var axis = 1; // recall("axis",1); // saved values from requester
var name = "New"; // recall("name","New");
var rename = 2; // recall("rename", 1); // make new surface, or not
var buttons[6]; // buttons strings for requester
buttons[1] = "+X";
buttons[2] = "-X";
buttons[3] = "+Y";
buttons[4] = "-Y";
buttons[5] = "+Z";
buttons[6] = "-Z";
var renamebuttons[2];
renamebuttons[1] = "New Surface";
renamebuttons[2] = "Select Only";
var c1, c2, c3; // to hold control handle returned by addcontrol()
var i; // for loops
// Put up the requester...
reqbegin("Directional Select");
c1 = ctlchoice("Direction:", axis, buttons);
c3 = ctlchoice("Options:", rename, renamebuttons);
c2 = ctlstring("New Surface Name:",name);
if(reqpost())
{
axis = getvalue(c1); // see what the user input
name = getvalue(c2);
rename = getvalue(c3);
// store("axis",axis); // keep values for subsequent runs...
// store("name",name);
// store("rename",rename);
}
else return;
reqend();
selmode(USER); // for rest of script
selpolygon(CLEAR,NVGT,0); // clear any existing selection
editbegin();
polyInfo = polycount();
switch(axis)
{
case 1: // +X axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.x >= abs(Vt.y) && Vt.x >= abs(Vt.z)) polysurface(polygons[i],name);
}
break;
case 2: // -X axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.x <= -abs(Vt.y) && Vt.x <= -abs(Vt.z)) polysurface(polygons[i],name);
}
break;
case 3: // +Y axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.y >= abs(Vt.x) && Vt.y >= abs(Vt.z)) polysurface(polygons[i],name);
}
break;
case 4: // -Y axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.y <= -abs(Vt.x) && Vt.y <= -abs(Vt.z)) polysurface(polygons[i],name);
}
break;
case 5: // +Z axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.z >= abs(Vt.x) && Vt.z >= abs(Vt.y)) polysurface(polygons[i],name);
}
break;
case 6: // -Z axis
for(i=1; i<polyInfo[1]+1; i++) // scan each polygon
{
Vt = polynormal(polygons[i]); // get normal vector
if(Vt.z <= -abs(Vt.x) && Vt.z <= -abs(Vt.y)) polysurface(polygons[i],name);
}
break;
}
editend();
// info("Name = ", name);
selpolygon(SET, SURFACE, name);
if(rename != 1) undo(); // 1 = new surface name, 2 = select only.
}