THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 26/03/2008 at 05:38, xxxxxxxx wrote:
Thanks everyone! very helpful
I'll paste it below if you guys are curious. 1) Make a spline 2)Select some points 3) Open plug and click GetPoints 4) Move nulls
const var PLUGIN_ID = 910042;
const var cB1 = "MOVE POINTS";
const var cB2 = "GET POINTS";
enum {eGetActPoints,eMovePoints}
var pDoc,pObj,pSels,pPoints,i,j,selPoints,spPoints,nullname,nu,vals,cPt;
var nObj,pName,nName,nnName,sName,len,lSplines,q,x,spObj,inde,iObj,m,o;
var sels,nunames;
class PointTonull
{
public:
GetActPoints();
MovePoints();
}
PointTonull::GetActPoints()
{
pDoc = GetActiveDocument();
pObj = pDoc->GetActiveObject();
pName=pObj->GetName();
lSplines[q]=pName;
q++;
spPoints=pObj->GetPointCount();
pSels = pObj->GetPointSelection();
selPoints=pSels->GetCount();
//var sels=new(array,selPoints);
println(pSels->GetCount());
for(i=0;i<spPoints;i++)
{
if(pSels->IsSelected(i))
{
//sels[j]=i;
println(pObj->GetPoint(i)," ",i," ",j);
cPt=pObj->GetPoint(i);
println(pObj->GetMg()->GetMulP(cPt),pObj->GetMg()->GetV1());
nullname=pName+tostring(j)+tostring(i);
println(nullname);
nu=AllocObject(Onull);
nu->SetName(nullname);
nunames[q-1][j]=nullname;
pDoc->StartUndo();
pDoc->AddUndo(UNDO_OBJECT_NEW,nu);
pDoc->EndUndo();
//vals=cPt->GetPosition();
//vals->SetV0(vector(2,2,2));//pObj->GetPoint(i));
nu->SetPosition(pObj->GetMg()->GetMulP(cPt));
j++;
pDoc->InsertObject(nu,NULL,NULL);
EventAdd();
}
}
return;
}
PointTonull::MovePoints()
{
pDoc=GetActiveDocument();
while(nunames[m][o]!=NULL)
{
while(nunames[m][o]!=NULL)
{
nObj=pDoc->FindObject(nunames[m][o]);
spObj=pDoc->FindObject(lSplines[m]);
nName=nObj->GetName();
len=sizeof(nName);
println(nName);
inde=strmid(nName,len-1,len-1);
iObj=spObj->GetMg();
iObj->Invert();
spObj->SetPoint(evaluate(inde),iObj->GetMulP(nObj->GetPosition()));
spObj->Message(MSG_UPDATE);
o++;
}
m++;
}
m=0;
o=0;
//EventAdd();
x=0;
}
class MyDialog : GeDialog
{
public:
MyDialog();
Init();
CreateLayout();
Command(pID,pMSG);
CoreMessage(id,msg);
}
MyDialog::MyDialog() { super(PLUGIN_ID); }
MyDialog::Init()
{
}
MyDialog::CreateLayout()
{
SetTitle("Create Path and Nulls");
AddGroupBorderSpace(20,20,20,20);
//AddButton (eMovePoints,0,150,0,cB1);
AddButton (eGetActPoints,0,150,0,cB2);
return TRUE;
}
MyDialog::Command(pID,pMSG)
{
switch (pID)
{
case eMovePoints:
pPoints->MovePoints();
break;
case eGetActPoints:
pPoints=new(PointTonull);
pPoints->GetActPoints();
break;
}
}
MyDialog::CoreMessage(id,msg)
{
switch (id)
{
case DOCUMENT_CHANGED:
{
println("ACT OBJECTIVELY");
pPoints->MovePoints();
break;
}
}
}
class MyMenuPlugin : MenuPlugin
{
public:
MyMenuPlugin();
GetID();
GetName();
GetHelp();
Execute(doc);
RestoreLayout(secret,subid);
}
MyMenuPlugin::MyMenuPlugin() { super(); }
MyMenuPlugin::GetID() { return PLUGIN_ID; }
MyMenuPlugin::GetName() { return "Place and Move Nulls"; }
MyMenuPlugin::GetHelp() { return "Paces nulls on spline points"; }
var d;
MyMenuPlugin::Execute(doc)
{
d->Open(TRUE,-1,-1);
}
MyMenuPlugin::RestoreLayout(secret,subid)
{
if (!d) d = new(MyDialog);
d->RestoreLayout(secret);
}
main()
{
d = new(MyDialog);
j=0;
q=0;
x=0;
m=0;
o=0;
lSplines=new(array,20);
nunames=new(array,20,20);
Register(MyMenuPlugin);
}