ciao a tutti,
allora, aggiungo un po' di informazioni prima di continuare, così, nel caso, il quadro è più chiaro.
lo script di cui sopra serve a ripulire in fretta degli assemblati meccanici esportati tramite VRML2.0 da ThinkDesign.
l'esportazione genera:
- quattro camere e due luci infinite [da buttare];
- un oggetto nullo "Model";
- i figli di "Model" che, a loro volta, raggruppano per mesh separate le features che definiscono il pezzo con i relativi Tags associati.
ora, al netto di tutto, il file di partenza è omologo a quello di esempio [esempio_001.c4d]
ad adesso il codice arriva a qui:
- pulisce gli oggetti inutili;
- rende ogni oggetto una mesh unica e ottimizza;
- cancella tutti i tag.
Codice: Seleziona tutto
main(doc,op)
{
var obj = doc->GetFirstObject();
var i;
for (i = 1; i <= 6; i++)
{
//TextDialog("Hello World!", GEMB_OK);
//doc->SetActiveObject(obj);
var next = obj->GetNext();
obj->Remove();
//CallCommand(100004787); // Delete
obj = next;
}
doc->SetActiveObject(obj);
CallCommand(1019951); // Delete Without Children
var obj = doc->GetFirstObject();
while(obj)
{
doc->SetActiveObject(obj);
var next = obj->GetNext();
CallCommand(100004768); // Select Children
CallCommand(12236); //make editable
//obj->DelBit(BIT_AOBJ); // Uncomment if you want to keep the Nulls
CallCommand(16768); // connect and delete
CallCommand(14039); // optimize
obj = next;
}
//---------------------------------------------------
obj = doc->GetFirstObject();
while(obj)
{
var next = obj->GetNext();
//TextDialog("while sugli OBJ", GEMB_OK);
var tag_d = obj->GetFirstTag();
while(tag_d)
{
//TextDialog("while sui TAG", GEMB_OK);
tag_d->Remove();
tag_d = obj->GetFirstTag();
}
obj = next;
}
}
le cose che servirebbero adesso sono associare un nuovo Tag Phong ad ogni oggetto con angolo limite 80°.
adesso sto leggendo l'SDK ma non sono riuscito a tirare fuori nulla di buono usando
Codice: Seleziona tutto
obj = doc->GetFirstObject();
while(obj)
{
var next = obj->GetNext();
//TextDialog("while sugli OBJ", GEMB_OK);
var tag_d = obj->GetFirstTag();
while(tag_d)
{
//TextDialog("while sui TAG", GEMB_OK);
tag_d->Remove();
tag_d = obj->GetFirstTag();
}
obj = next;
}
grazie ancora a tutti!
FOLLOW US