【说明】
- 本专栏的 Part 6 主要介绍作者在学习和实践中所遇到的一些程序运行问题的解决方案,如有差错或更优解,欢迎指正
- 您如果碰到有关 GH 二开的任何问题,欢迎在本专栏的任意一篇博文下留言交流
【推荐阅读】
- 查文档:(1) RhinoCommon SDK (2) Grasshopper API
- CSDN专栏地址:专栏:Rhino (Grasshopper) 二次开发 (C#)
【参考资料】
6.1
, 6.1 Grasshopper breakpoint. The supplied data could not be converted
1 Error
Grasshopper breakpoint: The supplied data could not be converted,如图
2 Solvement
这种报错产生的原因在于,输入或输出数据的声明类型与实际类型不匹配,如下
DA.SetData("Geometry", gb);
若 gb 的数据类型为 List,那么该行语句将会报错,改为
DA.SetDataList("Geometry", gb);
后便可正常运行
6.2
缺少编译器要求的成员“Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Creat”
1 Error
var func_info1 = Rhino.NodeInCode.Components.FindComponent("Rectangle3Pt");
var func1 = func_info1.Delegate as dynamic;
var result1 = func1(leftDown, leftUp, rightMid);
这是一段可能报错的代码,其功能主要是引用 Grasshopper 中 “Rectangle3Pt” 电池的功能 可能的报错会出现在第三行的 func1()
,报错提示:
缺少编译器要求的成员“Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Creat”
如图
2 Solvement
在代码文件开头声明 using Microsoft.CSharp;
如果没有安装过,点击 引用 - 管理 NuGet 程序包,在打开的截面中搜索 Microsoft.CSharp,然后下载安装即可
6.3
Component ID conflict
1 Error
Solvement
这样类似的有关 Component ID 报错,基本都是因为 .cs
文件中 ComponentGuid
函数设置错误所导致的
例如在自定义新的电池模块时,往往会直接复制一个之前写过的电池作为模板。此时如果没有更换新的 ID (如下图黄框),或更改格式错误,就会出现报错 只要重新更换一个 Guid 即可
Document Information
- Author: Zeka Lee
- Link: https://zhekaili.github.io/0003/01/06/C-Errors/
- Copyright: 自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)