Spline ausrichten mit COFFEE^

Orbit

Erfahrenes Mitglied
Hey,
ich habe ein Splineobjekt und ich hab etwa 30 Objekte deren Nullpunkt punkte der spline werden sollen.
Ich kann mir die Position der Objekte besorgen, und auf die Spline zugreifen kann ich auch. Aber wie kriege ich es hin, auf einen einzelnen punkt der Spline zuzugreifen und seine Position zu versetzen?
mfg,
Orbit
 
Hi!

Habe mich mal versucht :)
Code:
//    =====================================
//    Objects2Spline
//    by mark @ tutorials.de 2008
//    =====================================

main(doc,op)
{
    //    op = das Spline-Objekt
    //    Kein Punkte-Objekt
    if (!instanceof(op, PointObject)) return FALSE;

    //    In dieser Hierarchie befinden sich die Knotenpunkte
    var knots    = doc->FindObject("knots");
    if (!knots) return false;

    //    Zähle Knotenpunkte
    var kcnt    = 0;
    var kobj    = knots->GetDown();
    while(kobj) {
        kcnt++;
        kobj        = kobj->GetNext();
    }

    //    Punkte-Anzahl der Spline
    var scnt    = op->GetPointCount();

    //    Anzahl der Knotenpunkte ungleich der Spline-Punkte
    if (kcnt != scnt) {
        var vc    = new(VariableChanged); if (!vc) return FALSE;
        //    Spline-Punkte = Knoten-Anzahl
        vc->Init(scnt, kcnt);
        op->MultiMessage(MSG_POINTS_CHANGED, vc);
    }

    //    Spline-Punkte setzen
    var pcnt    = 0;
    kobj            = knots->GetDown();
    while(kobj) {
        var kpos    = kobj->GetPosition();
        op->SetPoint(pcnt, kpos);
        pcnt++;
        kobj            = kobj->GetNext();
    }

    op->Message(MSG_UPDATE);
}
Sollte die Frage beantworten ... ? :)

Liebe Grüße,
Mark.

//edit: Zur Sicherheit: Spline-Objekt erhält Coffee-Tag mit obigem Script. Ein Null-Objekt namens "knots" hat als Unterobjekte die Knoten-Punkte der zu erzeugenden Spline ... :)
 
Super! Vielen, vielen Dank!
Loift natürlich, allerdings mochte mein Compiler dies hier nicht:
Code:
if (!knots) return false;
ich musste es mit
Code:
if (!knots) return FALSE;
ersetzen; nur falls dies hier mal noch jemand braucht...
Nochmals danke + mfg,
Orbit
 
Zurück