Rhino(犀牛)中国技术支持与推广中心

标题: 关于自己写的C#command插件的按钮问题【2楼提供教学 By Jorin】 [打印本页]

作者: Zzzz    时间: 2014-9-12 01:42
标题: 关于自己写的C#command插件的按钮问题【2楼提供教学 By Jorin】
本帖最后由 simonchen 于 2014-9-12 19:27 编辑

终于可以自己在论坛上说话了。。。请教大神!!!!如图,我自己在vs里做了个插件,但是只支持命令输入。。如果我要做成按钮该怎么弄???不是在rhino里手动设置按钮,而是在C#里创建,,我在rhinocommon里找了好久没找到方法。。。。求大神赐教。。。

作者: Jorin    时间: 2014-9-12 13:25
本帖最后由 Jorin 于 2016-3-22 15:30 编辑

Rhino.UI.Dialogs类下面有一些制作对话框相关的函数,楼主可以参考。但是如果想完全自己设计按钮对话框的话,需要的是windows Framework .net的form和button类,其实Rhino的对话框也是基于windows framework的。但这样的话自己要做的工作比较多,可以参考一下VS里面给普通windows窗体添加按钮的方法

如果只是用按钮做选择菜单的话,建议用Rhino.UI.Dialogs.ShowContextMenu
举个最简单的例子,让用户从菜单中选择一项,然后弹出对话框显示用户选择的哪一项:
List<String> s=new List<string>();
s.Add("Button 1");
s.Add("Button 2");
System.Drawing.Point screenpoint=System.Windows.Forms.Cursor.Position;
int result=Rhino.UI.Dialogs.ShowContextMenu(s, screenpoint, null);
if (result >= 0)
{
System.Windows.Forms.MessageBox.Show("你选择的是"+s[result]);
}


效果如下:

选择以后




作者: Zzzz    时间: 2014-9-12 13:34
本帖最后由 Zzzz 于 2014-9-12 13:39 编辑
Jorin 发表于 2014-9-12 13:25
Rhino.UI.Dialogs类下面有一些制作对话框相关的函数,楼主可以参考。但是如果想完全自己设计按钮对话框的话 ...

J大真是快啊。。。可能是我没讲清楚。。我现在用C#做了个小插件,但是只能通过command来运行,,我想直接把他做成工具栏上的button 想这样,就在是说插件安装后就回出现对应command的button。。。所有的东西都是自己摸索的,,,在common库里找了好就找不到一点线索,只能硬着头皮来求大神了。。。。

作者: Jorin    时间: 2014-9-12 17:57
本帖最后由 Jorin 于 2014-9-12 17:58 编辑
Zzzz 发表于 2014-9-12 13:34
J大真是快啊。。。可能是我没讲清楚。。我现在用C#做了个小插件,但是只能通过command来运行,,我想直接 ...

这些按钮不是用C#直接生成的,RhinoCommon中只有读取rui文件的函数,也就是说要先制作好rui文件,然后在你制作插件安装程序的时候,通过安装程序将rui文件放到%appdata%\McNeel\Rhinoceros\5.0\UI文件夹中。在调用你的插件的时候,可以用Rhino.RhinoApp.ToolbarFiles下的Open函数打开提前制作好的rui文件。

举个例子,假如我的插件做好了,我现在要做专用的按钮和图标,那么我先新建一个工具列文件。


命名为“Jorin.rui”

然后按照传统方法制作好图标和工具列,例如下面这样:

做完以后,一定要记得在“选项”\“工具列”里找到你的工具列文件保存一下:

为了测试,我们把刚刚建立好的这个工具列文件关掉,然后把Rhino也关了。

然后在Visual Studio 中,打开你的插件项目,在构造函数里添加两句代码,以便在Rhino中调用插件的时候,能够载入我们编辑好的工具列文件(*.rui文件)
[mw_shl_code=csharp,true]String appdata = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
Rhino.UI.ToolbarFile tbfile = Rhino.RhinoApp.ToolbarFiles.Open(appdata + "\\McNeel\\Rhinoceros\\5.0\\UI\\Jorin.rui");[/mw_shl_code]
上面两句,第一句是获取用户应用程序特定数据的共享数据文件夹,McNeel\Rhinoceros\5.0\UI\文件夹也是在这个文件夹里面。

第二句是用完整的路径和文件名打开之前设定好的rui文件。
有了上面两句,Rhino在载入并初始化插件的时候,就可以打开储存在Jorin.rui文件的工具列了。以上语句,在实际使用过程中可能还需要根据具体情况调整。

当然,接下来制作安装程序的时候,就要指定Jorin.rui的安装位置为%appdata%\McNeel\Rhinoceros\5.0\UI
制作安装程序请楼主查阅相关资料,这里就不细说了。

安装好插件,打开Rhino,当Rhino初始化插件的时候,就会自动载入我们做好的工具列了。
作者: Zzzz    时间: 2014-9-12 18:43
Jorin 发表于 2014-9-12 17:57
这些按钮不是用C#直接生成的,RhinoCommon中只有读取rui文件的函数,也就是说要先制作好rui文件,然后在你 ...

明白了。。。谢谢J大




欢迎光临 Rhino(犀牛)中国技术支持与推广中心 (http://bbs.rhino3d.asia/) Powered by Discuz! X3.2