Manolo
September 3, 2014, 11:25am
1
Hi,
I’ve created a command, and I need pass parameters.
I can create a new property in PlugInClass and get this property in the command, but I don’t like do it.
I call the command so
return (Rhino.RhinoApp.RunScript(“AgutImportDXF”, true));
So… how I can pass a parameter?
I’m using c# and rhinoCommon
menno
(Menno Deij - van Rijswijk)
September 3, 2014, 12:34pm
2
Let’s say your command AgutImportDXF
has two parameters (MyParam1
and MyParam2
), one number and one toggle (Yes/No).
Then, you can script it like this:
return (Rhino.RhinoApp.RunScript("_-AgutImportDXF MyParam1=140 MyParam2=Yes _Enter", true));
Note the use of the -
(dash) in front of the command, this is to set the command to scripted mode. Secondly, note the _
(underscore) in front of the command and the Enter
command. This is to force English name of the command when Rhino is running in another language.
2 Likes
Manolo
September 3, 2014, 1:15pm
3
And…how I can get the parameters value inside the command class
in RunCommand function?
protected override Result RunCommand(RhinoDoc doc, RunMode mode)
{
try
{
_doc = doc;
if (_plugin == null)
_plugin = new AgutCAM2PlugIn();
if (ImportarDXF())
return Result.Success;
else
return Result.Cancel;
}
catch
…
You looking for:
string str = String.Empty;
RhinoGet.GetString("Custom String", true, ref str);
if str = 0
return Result.Success;
}
dont know if I typed that right but this way you can get a custom str. or integer.
I’m more into Vb.NET
1 Like
Manolo
September 3, 2014, 1:58pm
5
Ok, It works but…
I run the script so:
Rhino.RhinoApp.RunScript("_-AgutImportDXF calibrado=10 _Enter", true);
If I use inside RunCommand method:
string str = String.Empty
RhinoGet.GetString(“calibrado”, true, ref str);
the result in str is “calibrado = 10”
If I use
RhinoGet.GetInteger(string.Empty, true, ref _calibrado);
the result in _calibrado is 0 not 10
How I can use RhinoGet.GetInteger?
An integer is only a number so it cant get calibrado=.
Then you should do something like:
Ingeger int = 0
RhinoGet.GetInteger(“calibrado”, true, ref int );
Rhino.RhinoApp.RunScript("_-AgutImportDXF 10 _Enter", true);
Manolo
September 3, 2014, 2:34pm
7
It not works.
And if I want two parameters… how can I differentiate both? The first parameter in GetInteger is not referenced in RunScript
menno
(Menno Deij - van Rijswijk)
September 3, 2014, 2:36pm
8
Please see this example on how to use GetOption with multiple command line options
This guide covers how to pick some objects, select command options, return to picking more objects, all while keeping your current selection set.
1 Like
Manolo
September 3, 2014, 3:40pm
9
Thanks menno.
I had not seen that example.
I can read the parameter so:
In RunCommand function
int _calibrado = 0;
OptionInteger optionInteger = new OptionInteger(0, 0, 1000);
GetObject go = new GetObject();
go.AddOptionInteger(“calibrado”, ref optionInteger);
RhinoGet.GetInteger(“calibrado”, true, ref _calibrado);
and calling RhinoScript
Rhino.RhinoApp.RunScript("_-AgutImportDXF 10 _Enter", true)
menno
(Menno Deij - van Rijswijk)
September 3, 2014, 4:07pm
10
No, this is wrong. Don’t use RhinoGet.GetInteger, use go.Get(), just like in the example. Then you can use named parameter as I wrote earlier.
1 Like