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。

 

歡迎批評指正,轉載請註明出處和作者QQ:3133952829

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章