citymaker connect 8 插件式开发之从Pro 7到connect 8遇到的坑

1、
(FieldInfoCollection)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("E504B735-A3AF-4D21-AF4C-38C0A6F9B82D")))

必须这样写了:
new FieldInfoCollection();

2、COMException类 变为 Gvitech.CityMaker.FdeCore.FdeException
3、终于有了IEnumResName,以前只有类,没有接口。
4、事件的变化
以前的事件处理方法的参数是这样:object sender, System.EventArgs e
现在参数更清楚了:
private void axRenderControl1_RcObjectEditing(IGeometry geometry)
{
。。。。
}
RcObjectEditing的参数可以查询开发帮助文档。
RenderControlServices.Instance().AxRenderControl.RcObjectEditing += new Gvitech.CityMaker.Controls._IRenderControlEvents_RcObjectEditingEventHandler(this.axRenderControl1_RcObjectEditing);

转换是注意查文档:

“object sender, _IRenderControlEvents_RcKeyDownEvent e”查 “RcKeyDown”得到:

bool _IRenderControlEvents.RcKeyDown  ( uint  Flags,  
  uint  Char  
 )  
参数就是:
uint  Flags,  
uint  Char

5、Color的变化
以前是uint类型,现在直接支持System.Drawing.Color类了,更方便了。

6、内存的释放的方式
现在的更明确了,有Dispose()方法的才需要释放,没有的就不用释放了。

7、插件调试的滞后:注意插件一定要先编译,后调试。

8、注意:引用了Gvitech.CityMaker.Common.v8.0后,一定要设置 copy属性为false,并且必须清出同目录下所有的相关的dll,特别注意,其他AddIn或者toolbox目录下也需要清理!否则出现“找不到方法.....”


9、需要重引的程序集包括:

1)builder或connect相关:

CityMakerBuilder.AddIn.Core

CityMakerConnect.AddIn.WinForm

2)8.0:

Gvitech.CityMaker.Common.v8.0

Gvitech.CityMaker.FdeUndoRedo.v8.0

10、RenderControlServices.Instance().AxRenderControl.GetOcx() as IInternalLicenseKey不需要了,直接:

RenderControlServices.Instance().AxRenderControl.SetLicenseKey


11、IUIWindowEventArgs的UIWindow变为:UIEventWindow


12、记得用Ctrl+shift+H

(object sender, _IRenderControlEvents_RcObjectEditingEvent e) 替换为 (IGeometry  Geometry ) 


(object sender, _IRenderControlEvents_RcMouseClickSelectEvent e)替换为(uint Flags,int X,int Y) 

(IPickResult  PickResult, IPoint  IntersectPoint, gviModKeyMask  Mask, gviMouseSelectMode  EventSender) 

(object sender, _IRenderControlEvents_RcPictureExportEndEvent e)替换为(double  Time, bool IsAborted) 

(object sender, _IRenderControlEvents_RcVideoExportEndEvent e)替换为(double  Time, bool IsAborted) 

(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEvent e)

替换为

(IPickResult  PickResult, IPoint  IntersectPoint,gviModKeyMask  Mask, gviMouseSelectMode  EventSender) 

(object sender, _IRenderControlEvents_RcMouseMoveEvent e)替换为(uint Flags,int X,int Y) 

(object sender, _IRenderControlEvents_RcPictureExportBeginEvent e)替换为(int NumberOfWidth,int NumberOfHeight)  


13、IGeometry geo = rowBuffer.GetValue(geoIndex);不可以这样用了,

必须:IGeometry geo = rowBuffer.GetValue(geoIndex) as IGeometry;


14、SimplifyModel 的 ref 参数没有了。而是直接返回处理后的新的IModel


15、IAttachmentCollection[index]不能用了,只能是:attachmentCollection.get()


16、IUIRect改了的定位机制的表达!


17、RenderControlServices.Instance().AxRenderControl.GetOcx() as IHTMLWindow;

可以直接RenderControlServices.Instance().AxRenderControl as IHTMLWindow;


18、htmlwindow.CreateWindowParam()取消了,直接new WindowParam();


19、RenderControlServices.Instance().AxRenderControl.SetRenderParam(Gvitech.CityMaker.RenderControl.gviRenderControlParameters.gviRenderParamFlyAroundTime, 8f);

注意了,参数必须准确~,不能是8,而是8f。


欢迎批评指正,转载请注明出处和作者QQ:3133952829

猜你喜欢

转载自blog.csdn.net/bdbox/article/details/79899072
今日推荐