THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/06/2003 at 00:20, xxxxxxxx wrote:
Hi Michael,
Here is one of the programs which I used in my plug-in. Like this i have many programs. Pls guide me...
include "asciitochar.coh" // to covert ascii character into alphabet.
// Plug-ID definition
var PLUGIN_ID = 911118;
var vPilecapName, vHeight, vWidth, vDepth;
// Plug-in DialogBox Creation
class dlgPilecap : GeDialog
{
public:
dlgPilecap();
Init();
CreateLayout();
Command(id,msg);
}
dlgPilecap::dlgPilecap()
{
super(PLUGIN_ID);
}
dlgPilecap::Init()
{
SetString(1002, "Pilecap"); // Name of the Pilecap
SetFloat(1005, 200, 0, 1000, 1); // Width
SetFloat(1008, 100, 0, 1000, 1); // Height
SetFloat(1011, 200, 0, 1000, 1); // Depth
SetFloat(1016, 0, 0, 1000, 1); // Width
SetFloat(1019, 0, 0, 1000, 1); // Height
SetFloat(1022, 0, 0, 1000, 1); // Depth
SetFloat(1027, 0, -1000, 1000, 1); // X
SetFloat(1030, 0, -1000, 1000, 1); // Y
SetFloat(1033, 0, -1000, 1000, 1); // Z
}
dlgPilecap::CreateLayout()
{
SetTitle("Square Pilecap...");
AddGroupBeginH(1000,0,1,"",0);
AddStaticText(1001,0,0,0,"Name ",0);
AddEditText(1002,0,200,0);
AddGroupEnd();
AddGroupBeginH(1003,0,1,"",0);
AddStaticText(1004,0,0,0,"Width ",0);
AddEditNumber(1005,0,200,0);
AddGroupEnd();
AddGroupBeginH(1006,0,1,"",0);
AddStaticText(1007,0,0,0,"Height ",0);
AddEditNumber(1008,0,200,0);
AddGroupEnd();
AddGroupBeginH(1009,0,1,"",0);
AddStaticText(1010,0,0,0,"Depth ",0);
AddEditNumber(1011,0,200,0);
AddGroupEnd();
AddGroupBeginH(1012,0,1,"",0);
AddStaticText(1013,0,0,0,"Rotation ",0);
AddGroupEnd();
AddGroupBeginH(1014,0,1,"",0);
AddStaticText(1015,0,0,0,"H ",0);
AddEditNumber(1016,0,200,0);
AddGroupEnd();
AddGroupBeginH(1017,0,1,"",0);
AddStaticText(1018,0,0,0,"P ",0);
AddEditNumber(1019,0,200,0);
AddGroupEnd();
AddGroupBeginH(1020,0,1,"",0);
AddStaticText(1021,0,0,0,"B ",0);
AddEditNumber(1022,0,200,0);
AddGroupEnd();
AddGroupBeginH(1023,0,1,"",0);
AddStaticText(1024,0,0,0,"Position ",0);
AddGroupEnd();
AddGroupBeginH(1025,0,1,"",0);
AddStaticText(1026,0,0,0,"X ",0);
AddEditNumber(1027,0,200,0);
AddGroupEnd();
AddGroupBeginH(1028,0,1,"",0);
AddStaticText(1029,0,0,0,"Y ",0);
AddEditNumber(1030,0,200,0);
AddGroupEnd();
AddGroupBeginH(1031,0,1,"",0);
AddStaticText(1032,0,0,0,"Z ",0);
AddEditNumber(1033,0,200,0);
AddGroupEnd();
AddGroupBeginH(1034,0,1,"",0);
AddButton(1035,0,0,0,"Insert");
AddGroupEnd();
return TRUE;
}
dlgPilecap::Command(id,msg)
{
var obj, cnt, i, j=0, cubarr, bs, ObjPilecap, conPilecap;
var pt, doc, pos, activeobj_con, len;
var Obj1, Obj2, mat1, mat2, vec1, vec2, PilecapPos, mid;
var objFile, ptrFile;
var Rot_H, Rot_P, Rot_B;
var posX, posY, posZ;
var vFound, temp, ObName, vStr;
switch(id)
{
case 1035:
vPilecapName = GetString(1002);
vHeight = GetFloat(1008);
vWidth = GetFloat(1005);
vDepth = GetFloat(1011);
Rot_H = GetFloat(1016);
Rot_P = GetFloat(1019);
Rot_B = GetFloat(1022);
posX = GetFloat(1027);
posY = GetFloat(1030);
posZ = GetFloat(1033);
doc = GetActiveDocument();
obj = GetActiveObject(doc);
cnt = obj->GetPointCount();
bs = obj->GetPointSelection();
for(i=0; i<=cnt; i++)
{
if(bs->IsSelected(i))
{
pos = obj->GetPoint(i);
pos.y = pos.y + vHeight/2;
break;
}
}
if(doc->FindObject(vPilecapName))
{
TextDialog("Object Name already exists!", DLG_ICONSTOP + DLG_OK);
break;
}
// To create a Pilecap - Cube of size 200x200x200
ObjPilecap = new(PrimitiveObject);
ObjPilecap->SetPrimitiveType(PRIMITIVE_CUBE);
conPilecap = ObjPilecap->GetContainer();
conPilecap->SetData(PRIM_CUBE_LEN, vector(vWidth,vHeight,vDepth));
ObjPilecap->SetContainer(conPilecap);
ObjPilecap->SetName(vPilecapName);
doc->InsertObject(ObjPilecap,NULL,NULL);
ObjPilecap->SetRotation(vector(Rot_H, Rot_P, Rot_B));
SendModelingCommand(MCOMMAND_MAKEEDITABLE, doc, ObjPilecap, conPilecap, MODIFY_ALL);
ObjPilecap=doc->FindObject(vPilecapName);
pos.x = pos.x + posX;
pos.y = pos.y + posY;
pos.z = pos.z + posZ;
ObjPilecap->SetPosition(pos);
GeEventAdd(REDRAW_ALL);
//CHECKING PILECAP.TXT BEFORE INSERTING THE NAME
objFile = GeGetRootFilename();
objFile->RemoveLast();
objFile->AddLast("Pilecap.txt");
ptrFile = new(BaseFile);
ptrFile->Open(objFile, GE_READ, FILE_NODIALOG);
vStr = ptrFile->ReadString(ptrFile->GetLength());
if(!vStr)
vStr=" ";
ptrFile->Close();
if(strstr(vStr, vPilecapName)<0) //Object already there in text file
{
if(ptrFile->Open(objFile, GE_APPEND))
{
vPilecapName = stradd(vPilecapName, "!");
ptrFile->WriteString(vPilecapName);
ptrFile->Close();
}
}
}
}
// Plug-in Menu Creation
class mnuPilecap : MenuPlugin
{
public:
mnuPilecap();
GetID();
GetName();
GetHelp();
Execute(doc);
}
mnuPilecap::mnuPilecap()
{
super();
}
mnuPilecap::GetID()
{
return PLUGIN_ID;
}
mnuPilecap::GetName()
{
return "Square Pilecap...";
}
mnuPilecap::GetHelp()
{
return "Creates a Square Pilecap on top of the active object...";
}
mnuPilecap::Execute(doc)
{
//When plugin is selected, pop-up dialog box.
var d = new(dlgPilecap);
d->Open(TRUE,-1,-1);
}
main()
{
Register(mnuPilecap);
}