Übergeben von Variablen an Commands

Begonnen von Martindude, 02 Aug 2006, 14:01

Vorheriges Thema - Nächstes Thema

Martindude

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  

Michael Meyer

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

Gruß,

Michael

Martindude

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
'******************************************

Martindude

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