请选择 进入手机版 | 继续访问电脑版

[讨论] 关于自己写的C#command插件的按钮问题【2楼提供教学 By Jorin】

[复制链接]
22464 Zzzz 发表于 2014-9-12 01:42:17 楼主
本帖最后由 simonchen 于 2014-9-12 19:27 编辑

QQ截图20140912013734.jpg 终于可以自己在论坛上说话了。。。请教大神!!!!如图,我自己在vs里做了个插件,但是只支持命令输入。。如果我要做成按钮该怎么弄???不是在rhino里手动设置按钮,而是在C#里创建,,我在rhinocommon里找了好久没找到方法。。。。求大神赐教。。。
关于大陆地区Rhino原厂培训中心
Jorin 发表于 2014-9-12 13:25:58
推荐
本帖最后由 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]);
}


效果如下:
button.jpg
选择以后
button2.png


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

J大真是快啊。。。可能是我没讲清楚。。我现在用C#做了个小插件,但是只能通过command来运行,,我想直接把他做成工具栏上的button QQ截图20140912133012.jpg 想这样,就在是说插件安装后就回出现对应command的button。。。所有的东西都是自己摸索的,,,在common库里找了好就找不到一点线索,只能硬着头皮来求大神了。。。。
Jorin 发表于 2014-9-12 17:57:23
4
本帖最后由 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文件。

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

命名为“Jorin.rui”
icon.png
然后按照传统方法制作好图标和工具列,例如下面这样:
button3.png
做完以后,一定要记得在“选项”\“工具列”里找到你的工具列文件保存一下:
save.jpg
为了测试,我们把刚刚建立好的这个工具列文件关掉,然后把Rhino也关了。
close.png
然后在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初始化插件的时候,就会自动载入我们做好的工具列了。

评分

参与人数 1技术 +2 坛币 +4 收起 理由
simonchen + 2 + 4 很给力的教学!

查看全部评分

 楼主| Zzzz 发表于 2014-9-12 18:43:16
5
Jorin 发表于 2014-9-12 17:57
这些按钮不是用C#直接生成的,RhinoCommon中只有读取rui文件的函数,也就是说要先制作好rui文件,然后在你 ...

明白了。。。谢谢J大
您需要登录后才可以回帖 登录 | 注册成为会员

本版积分规则