LScript (Modeler) to offset the position of selected point based on a the position of a second selected point.
Compatible with Newtek LightWave 9.6 and above.
// LScript Modeler - www.StephenCulley.co.uk
//
// web address: http://www.stephenculley.co.uk
// email address: email@stephenculley.co.uk
/*
LScript Modeler - Offset
Modeler_Offset.ls
*/
@version 2.2
@warnings
@script modeler
@name *Offset
// Title
sTitle = "*Offset";
// Version
sVersion = "v1.0";
bDone = false; // Done
nX,nY,nZ;
vOffset;
ctrl_c0,ctrl_c1,ctrl_c2;
ctrl_res0;
main
{
// Selection - Point (DIRECT)
selmode(DIRECT);
iPointCount = pointcount();
if(iPointCount < 2) error("Select two points.");
editbegin();
vOffset = pointinfo(points[1]) - pointinfo(points[2]);
editend();
nX = vOffset.x;
nY = vOffset.y;
nZ = vOffset.z;
process(); // Process
reqbegin(sTitle + " " + sVersion);
// Reset
ctrl_res0 = ctlbutton("Reset",50,"button_reset"); // Button Reset
ctlsep();
// Control
ctrl_c0 = ctldistance("X",nX);
ctrl_c1 = ctldistance("Y",nY);
ctrl_c2 = ctldistance("Z",nZ);
// Developer
ctlsep();
ctrl_dev0 = ctltext("","developer: Stephen Culley","http://www.stephenculley.co.uk");
// Refresh
ctlrefresh(ctrl_c0,"refresh");
ctlrefresh(ctrl_c1,"refresh");
ctlrefresh(ctrl_c2,"refresh");
if (!reqpost())
{
// Cancel
if(bDone){undo();} // Undo
return;
}
else
{
// Ok
if(!bDone || bChange) // Process
{
values(); // Values
process(); // Process
}
}
reqend();
}
refresh:value
{
bChange = true; // Change
values(); // Values
process(); // Process
}
values
{
nX = getvalue(ctrl_c0); // X
nY = getvalue(ctrl_c1); // Y
nZ = getvalue(ctrl_c2); // Z
}
button_reset
{
setvalue(ctrl_c0,vOffset.x); // X
setvalue(ctrl_c1,vOffset.y); // Y
setvalue(ctrl_c2,vOffset.z); // Z
}
process
{
// Undo
if(bDone){undo();}
undogroupbegin();
// Process
// Selection - Point (DIRECT)
selmode(DIRECT);
iPointCount = pointcount();
if(iPointCount < 2) error("Select two points.");
editbegin();
vPosition = pointinfo(points[2]);
pointmove(points[1],vPosition + ); // Move point
editend();
// Undo
undogroupend();
bChange = false; // Change
// Done
bDone = true;
}
All scripts available at my
Google Drive at
https://drive.google.com/open?id=1cR_q2GVUAJHumic1-A3eXV16acQnVTWs