Hallo,
ich habe eine, (wahrscheinlich ziemlich Noobig Frage)
Ich will in Rhino Script eine Command ausführen
z.B. _move
Allerdings würde ich gerne die Auswahl an Elementen, die ich zuvor schon einmal abgefragt hatte dafür benutzen. (Also vollautomatisch)
Hier kurz mein Stand:
'**********************
sub test
dim arrSelectedObjects
arrSelectedObjects = Rhino.getObjects ("get Objects please")
Rhino.UnselectAllObjects
Rhino.Command("_Move")
'hier muss noch irgendwie der Inhalt von "arrSelected Objects übergeben werden und danach die Punkte noch angegeben werden. Quasi eine komplette verschiebung:-)
end sub
test
'**********************
Mir geht es nicht um dieses Script, sondern um eine generelle Antwort auf das Problem. (Also nicht :"Dann schmeiß einfach das UnselectAllObjects raus") Wie kann ich alle Eingaben durch Variablen ersetzen?
Nochmal meine Frage in Kurzform:
"Wie kann ich einen Rhino-Command-Befehl komplett parametrisch gestalten, ohne dass ein User etwas eingeben muss und nur zuvor abgefragte Werte dafür verwendet werden???"
Würde mich über ein Antwort sehr Freuen.
MFG
Martin
Hallo Martin,
vielen Dank für Deine Nachricht. Hast Du Dir schon das folgende Manusskript zu Skript-Programmierung angesehen?
Rhino Script Programming von David Rutten 2004 (http://www.reconstructivism.net/PDF/Scripting_Handout.pdf)
Gruß,
Michael
Ja habe ich gelesen.
Vielleicht hatte ich die Frage etwas falsch gestellt.
Ich habe gestern noch etwas an dem Script gefeilt und dafür auch eine Lösung gefunden. Allerdings ist diese nicht allgemein gültig.
Ich habe also quasi immernoch das selbe problem mit Split.
Wie übergebe ich einem Command befehl direkt eine Selection
Hier mein Versuch .Diesmal für den Befehl _Split.
Allerdings muss man am Ende immnoch auf ENTER drücken. Es muss da noch irgendeine andere Lösung geben. (Im Manual steht das nicht explizit drin.)
'******************************************
SetLocale ("en-us")
sub SplitCommand
dim arrFirstSelectedObjects, arrSecondSelectedObjects
dim strCommand
dim i
arrFirstSelectedObjects = Rhino.getObjects ("get objects you want to split")
arrSecondSelectedObjects = Rhino.getObjects ("get objects you want to split with")
Rhino.UnselectAllObjects
Rhino.SelectObjects (arrFirstSelectedObjects)
strCommand = ""
For i=0 to Ubound(arrSecondSelectedObjects)
strCommand = strCommand & " _selid " & arrSecondSelectedObjects(i)
Next
'msgbox "strCommand = '"&strCommand&"'"
strCommand = "_Split "&strCommand&" "
Rhino.Command(strCommand)
end sub
'******************************************
Und hier noch die Lösung vom _Move befehl. Der Vollständigkeit halber:
'******************************************
SetLocale ("en-us")
sub MoveCommand
dim arrSelectedObjects
dim arrSelectedFirstPoint, arrSelectedSecondPoint
dim strCommand
dim i
dim xFirstPt, yFirstPt, zFirstPt
dim xSecondPt, ySecondPt, zSecondPt
arrSelectedObjects = Rhino.getObjects ("get objects you wanna move :-)")
arrSelectedFirstPoint = Rhino.getPoint("get the base point of the movement")
arrSelectedSecondPoint = Rhino.getPoint ("Get the target point of the movement")
for i = 0 to Ubound(arrSelectedFirstPoint)
xFirstPt = arrSelectedFirstPoint(0)
yFirstPt = arrSelectedFirstPoint(1)
zFirstPt = arrSelectedFirstPoint(2)
Next
for i = 0 to Ubound(arrSelectedSecondPoint)
xSecondPt = arrSelectedSecondPoint(0)
ySecondPt = arrSelectedSecondPoint(1)
zSecondPt = arrSelectedSecondPoint(2)
Next
strCommand = "_Move "&xFirstPt&","&yFirstPt&","&zFirstPt&" "&xSecondPt&","&ySecondPt&","&zSecondPt
Rhino.UnselectAllObjects
Rhino.SelectObjects (arrSelectedObjects)
Rhino.Command(strCommand)
end sub
'******************************************
SOOO
Nach langem Suchen und Rumfriemeln habe ich endlich gefunden, was ich wollte.
& " _Enter"
Dieser kleine Befehl hat mir gefehlt.
Einfach hinten an den String ansetzen und schon klappts.
also:
strCommand = "_Split "&strCommand&" _Enter"
Gruss
Martin