citymaker 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。

 

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

---------------------------------------------------------------------------

承接CityMaker各类二次开发、数据生产、数据加工处理等服务。

有意者请联系QQ:[email protected]

你可能感兴趣的:(citymaker,GIS,3dgis,citymaker,connect,builder,gis)