skyline二次开发system.runtime异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了skyline二次开发system.runtime异常相关的知识,希望对你有一定的参考价值。
参考技术A 您好,以上问题多半是因为“fly文件没有加载完成就开始加载动态对象” ,所以遇到这种情况,我们只需要等待fly加载完成再创建动态对象。下面是一些关于skyline二次开发的知识补充。js调用skyline的api的事件的方法有以下两种:1,初始化时绑定事件:ITerraExplorer.AttachEvent("OnLButtonDblClk", OnLButtonDblClk);这样当3dwindow窗口双击左键时,可出发OnLButtonDblClk方法。2.利用 函数调用事件function TE::OnLButtonDown (Flags, X, Y, bHandled)undefined
alert("左键点击!!!");
这样当左键点击时,触发alert("左键点击!!!")语句。其中“TE”这个代码是ID号码,如果 <object >< /object >的ID变成“TEa”,则事件调用也变成:TEa::OnLButtonDown (Flags, X, Y, bHandled)。
Skyline开发2-第一个程序
来试试Skyline的Hello World。使用的工具是VS2017+Skyline6.5
加载组件
在工具箱右键新建skyline选项卡,在skyline选项卡上右键选择项,在弹出的"选择工具箱项"上选择com组件(Skyline是基于COM组件写的,可以COM组件所支持的语言进行二次开发),点击 下方的浏览,选择TerraExplorer Pro安装目录的"TerraExplorerX.dll".
即可看到相关的组件(不同TerraExplorer版本略有不同),点击确定。
TE3DWindow:用来承载三维要素的组件。在一个程序中,只能有一个TE3DWindow,如果有多个将会报错"TE_E_MULTIPLE_TEX" 。
TE3DWindowEx:用来扩展承载三维要素的TE3DWindow组件。现实需求中,可能用到多个 TE3DWindow,如双球联动,这个组件即可"解决程序中只能有一个TE3DWindow组件"的问题。
TEInformationWindow: 用来以信息树形式显示TE3DWindow窗口里面的对象,也是唯一的,性质有类似于TE3DWindow。
TEInformationWindowEx:性质类似于TE3DWindowEx(7.0版本后新增的组件)
TENavigationMap: 鹰眼地图。可创建多个(7.0版本后取消了此组件)
第一个程序
创建SGWorld实例,加载fly工程文件。SGWorld、AxTE3DWindow、AxTEInformationWindow三者不必建立绑定连接关系,它们自动会关联,即SGWorld加载的fly文件承载到AxTE3DWindow控件中,AxTE3DWindow的目录信息显示到AxTEInformationWindow工程树。
控件相关的引用AxTerraExplorerX、接口相关的引用TerraExplorerX;对应输出目录的AxInterop.TerraExplorerX.dll、Interop.TerraExplorerX.dll
以上是关于skyline二次开发system.runtime异常的主要内容,如果未能解决你的问题,请参考以下文章
arcgis二次开发遇到System.Runtime.InteropServices.COMException (0x80040228) :异常来自HRESULT:0x80040228