2016-06-26 6 views
0

Ich möchte ein polyhedron in OpenSCAD erstellen, indem Sie programmgesteuert seinen Punkt vector s generieren. Um jedoch einen Wert zu einer Matrix zuweisen ...Erzeugen eines Punktes (Vektor/Matrix) in OpenSCAD?

p = [1,0,0]; 
r = [[], [], [], [], [], [] ]; 

for(i=[0:5]) 
{ 
    echo("i=",i); 
    r[i] = [0,1]; 
} 

... erzeugt einen Syntaxfehler:

ERROR: Parser error in line 7: syntax error 
ERROR: Compilation failed! 

Bin ich einen Fehler zu machen (die) oder diese Typen sind wirklich nur schreibgeschützt (keine Zuordnung nach Index)?

+0

Beantwortet [hier] (http://stackoverflow.com/a/30272219/1619432) – handle

Antwort

1

Es ist nicht möglich, r zu ändern, nachdem es zugewiesen wurde.

Siehe https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/List_Comprehensions für Ausdrücke, die Listen generieren können.

Beispiel:

points = [ for (a = [0 : 5 : 359]) [ 20 * sin(a), 10 * cos(a) ] ]; 
polygon(points); 
+0

Ich glaube nicht, Ihre Aussage ist ganz richtig; Siehe die Antwort, die in meinem Kommentar zu der Frage verlinkt ist: 'Standardvariablen werden zur Kompilierzeit in OpenSCAD gesetzt, nicht zur Laufzeit '. Ich werde das Listenverständnis jedoch versuchen. – handle

+0

Welcher Teil ist nicht wahr? Sie können 'r' nicht ändern. Es ist möglich, mehrere Zuweisungen zu schreiben, aber nur die letzte wird tatsächlich verwendet (die Neuzuweisung sollte idealerweise als Fehler gekennzeichnet werden, aber das ist aufgrund der Abwärtskompatibilität nicht möglich). Beachten Sie auch, dass die Einschränkung in dieser verknüpften Antwort nicht mehr vorhanden ist. Dieser Code funktioniert ordnungsgemäß, solange die Würfeldimensionierung nicht negativ ist. –

+0

Ich dachte, es könnte ein statischer Wert zugewiesen werden, aber das funktioniert auch nicht. – handle

Verwandte Themen