前两天项目开发中,忽然一个Imagelabel的参数不会调了,但是前段时间可是很熟悉的。好吧,好记性不如烂笔头!

1. 模型弹出窗调试

这里的模型弹出框指涉及到模型操作的,比如监听模型选定事件、根据窗口数据定位模型等,或者说是需要关联模型对象的窗口。

<object id="sgworld" classid="clsid:3a4f9199-65a8-11d5-85c1-0001023952c1" style="visibility: hidden; height: 0"></object>

由于使用Te插件API弹出的窗口,无法直接通过浏览器F12进行调试,因此我们通常使用下面两种方式。

  • 浏览器 + Te Pro

桌面Te打开对应的模型FLY文件,浏览器直接访问弹出窗口,这样弹出窗口直接获取到桌面Te的模型对象,就可以实现通过浏览器F12窗口对弹出窗口的调试。

  • 浏览器 + Visual Studio

另外一种方式,在Javascript代码中添加debugger预设断点。执行到断点处,程序提示选用Visual Studio进行弹出窗口内代码调试。

缓存清理:Te插件中的弹出窗口,如果发现普通的清理缓存方法无效时,需要清理浏览器缓存文件

3. FLY更新

如果同名FLY更新发布的服务器后,发现加载的还是以前的FLY文件,同样需要使用上面提到的缓存清理办法。不管是桌面TE打开FLY还是浏览器页面加载FLY,上面的缓存清理办法同样有效。

4. ImageLabel缩放比例

ImageLabel标签可以通过设置Scale控制图片显示比例,达到最好的显示效果,避免出现很远就看到标签或者很近时标签很大的情况。

5. 透明窗体

通过TE插件的弹出窗口APIWindow.ShowPopup无法直接弹出具有透明背景的弹出框:

  • TE插件的弹出窗口APIWindow.ShowPopup弹出普通HTML窗口:无法实现,IPopupMessage701无接口支持
  • 在Te插件<object>所在html页面,增加iframe,普通div会被插件遮盖。这种方式虽然可以在模型上方覆盖html窗口,但是无法设置背景透明。网上提供的

Iframe设置allowtransparency="true"

src链接页面body设置background="transparent"

均无效。

<div id="tool" style="width: 100%; background-color: transparent;">
<iframe id="toolbar" name="toolbar"
style="position: absolute; visibility: inherit; top: 0px; left: 6px; height: 30px; width: 100%; z-Index: 9999;background-color:transparent;"
allowtransparency="true"
src="toolbartest.html"></iframe>
</div> <object id="TerraExplorer3DWindowEx" classid="CLSID:3a4f9196-65a8-11d5-85c1-0001023952c1"
style="position:absolute;left: 0px; top: 0px; right: 0px; bottom: 0px;width:100%;height:100%"></object>
  • 透明窗体插件

使用泰瑞提供的另外一个网页透明窗体插件可以实现透明窗体。

透明插件下载

6. Feature渲染

Feature渲染是经常用到的一个操作,比如鼠标悬浮、选定等事件,一般都是通过修改Feature颜色实现。但是Feature的获取依赖于FLY中添加图层,分为3dml和shp,不同图层feature获取方法如下:

function getFeature(sgworld, layerId, featureId) {
try {
var layer = sgworld.ProjectTree.GetObject(layerId);
var feature = null;
//shp图层
if (layer.ObjectType === 36) {
feature = layer.FeatureGroups.Item(0).ExecuteGetDataSourceFeatureIdQuery(featureId);
}
//3dml mesh feature图层
else if (layer.ObjectType === 39) {
feature = layer.ExecuteGetDataSourceFeatureIdQuery(featureId);
}
//3dml mesh 图层
else if (layer.ObjectType === 38) {
feature = layer.FeatureLayers.Item(0).ExecuteGetDataSourceFeatureIdQuery(featureId);
}
return feature;
} catch (e) {
return null;
}
}

7. 视频插件不兼容

海康视频可以通过单窗口url功能,通过模型的接口IWindow701.ShowPopup直接弹出视频画面。但是由于Te6.6插件是32位版本,Te7.0.1只支持64位。因此可以在Te6.6版本正常使用,Te7.0.1无法正常弹出。

无法直接接入,需要使用EasyDarwin等视频服务器进行转发,然后通过JS插件进行播放。项目中使用过ckplayerJS插件,存在的问题是支持H.264视频格式,不支持H.265视频格式。

最后还使用过EasyDarwin+VLC插件的方案,但是VLC插件易卡死的问题也没有解决。

目前方案:Te7.0.1 + 海康单窗口URL + 弹出浏览器Tab页

8. TePro操作分类

其实不管在二维地图中还是三维模型中,我们抛开业务后,操作逻辑也就那么几种。所以,我们刚做三维时,使用的基础平台不成熟,有很多厂家来推销平台。我们在选择平台的标准,平台是否支持三种基本的操作逻辑:

;根据数据查模型,要求平台提供根据标识信息查询、操作对应模型对象的能力;空间查询,平台支持根据空间点位信息查询区域内设备。这是我们在三维平台中要求支持三种基本操作。

  • 根据模型查数据

要求平台能够支持单个模型对象的选择,并能够在事件响应中获取模型对象的ID等标识信息。当然这里的对象ID最好是建模人员建模时生成的,这样可以保证关联信息的稳定性。如果使用平台自动生成的ID,则每次更新发布模型,ID都会发生变化,关联信息的维护将会耗费很大精力。

  • 根据数据查模型

要求平台提供API支持根据模型的标识ID等信息,进行模型的操作,比如显示隐藏和修改色彩、大小、位置等,这样便于实现二三维联动功能、数据驱动模型渲染的功能。

  • 区域查询

区域查询,在二维地图中我们是画一个面查询面内的兴趣点,在空间中我们可以根据业务需要,画一个面查询投影到该面内的模型对象,或者画一个立体图形查询根据该空间相关的模型对象。

9. ObjectID,LayerID,FeatureID,BimID,GroupPath

  • ObjectID:图层添加到FLY文件时,自动生成的模型对象ID,每次重新添加图层都会发生变化,Te插件接口ITerraExplorerObject701.ID。
  • LayerID:图层添加到FLY文件时,自动生成的图层对象ID,每次重新添加图层都会发生变化,Te插件接口IFeatureLayer701.ID或I3DMLFeatureLayer701.ID。
  • FeatureID:建模人员导出模型时,自动生成的模型对象序号(0-n),同一模型文件内唯一,建模软件中增加、删除模型后导出时会发生变化,非增删类修改或者重新导出不会发生变化,Te插件接口IFeature701.DataSourceFeatureID。
  • BimID:建模人员建模时,自动生成的模型对象唯一标识,后续修改、导出不会发生变化,Te插件无直接对应的接口,一般可以通过IFeature701.FeatureAttributes.GetFeatureAttribute("FileName").Value,其中包含BimID。

Skyline Te Pro二次开发技能总结的更多相关文章

  1. Skyline 7 版本TerraExplorer Pro二次开发快速入门

    年底了,给大家整理了一下Skyline 7版本的二次开发学习初级入门教程,献给那些喜欢学习的年轻朋友. 我这整理的是Web控件版本的开发示例,里面页面代码保存成html,都可以直接运行的. 测试使用的 ...

  2. ArcGIS Pro 二次开发

    本文基于 Windows7 + VS2019 + .NET Framework 4.8 + ArcGIS Pro 2.5.22081 开发和撰写. 目录 开发环境配置 获取ArcGIS Pro 安装V ...

  3. [地图SkyLine二次开发]框架(1)

    项目介绍: 项目是三维地理信息系统的开发,框架MVC4.0 + EF5.0 + Extjs4.2 + SkyLine + Arcgis,是对SkyLine的二次开发. 项目快结束了,先给大家看一眼效果 ...

  4. 23 Pro/E二次开发中的问题记录

    0 引言 由于项目中涉及到Pro/E的二次开发技术,因此在边用边学的情况下,解决了不少问题,也积攒了不少问题.其中有些问题可能不是调个函数就能搞定的,得了解CAD底层的东西. 1 问题描述 (1)CA ...

  5. 解析大型.NET ERP系统 窗体、查询、报表二次开发

    详细介绍Enterprise Solution 二次开发的流程步骤,主要包括数据输入窗体(Entry Form),查询(Query/Enquiry),报表(Report)三个重要的二次开发项目. 数据 ...

  6. Skyline TerraExplorer Pro(等ActiveX控件)在Google Chrome浏览器的运行方法

    首先感谢ActiveX for Chrome 网银助手(np-activex)这个项目(https://code.google.com/p/np-activex/),解决了我们困惑很久的问题——在Ch ...

  7. Qt4.8.6+mingw+Qgis2.4.0基于QGis的二次开发

    关于QGis的二次开发,大致看了一下,基本都是在VC+QT的环境下做环境部署,并且QGis的版本号很老.在mingw下直接开发搭建好开发环境的样例少之又少.基于最新的Qgis2.4.0版本号做了对应的 ...

  8. JBuss--为所有JFinal开发者提供二次开发的后台管理系统

    百度搜索:JBuss 或jfinal.com官网https://www.jfinal.com/share/1704 JBuss背景: 2018年6月1日,作者“为道日损”从上海一家xxx公司离职,那时 ...

  9. GISer如何突破二次开发瓶颈

    年初时写的<一个GISer的使命>那篇文章中,提出了GISer的技术提升路径可以分为四个大的阶段: 阶段一,能使用商业GIS软件去解决问题. 阶段二,能使用开源GIS软件去解决问题. 阶段 ...

随机推荐

  1. 你真的理解 Spring Boot 项目中的 parent 吗?

    前面和大伙聊了 Spring Boot 项目的三种创建方式,这三种创建方式,无论是哪一种,创建成功后,pom.xml 坐标文件中都有如下一段引用: <parent> <groupId ...

  2. Python调用ansible API系列(四)动态生成hosts文件

    方法一:通过最原始的操作文件的方式 #!/usr/bin/env python # -*- coding: utf-8 -*- """ 通过操作文件形式动态生成ansib ...

  3. Java3y文章目录导航

    由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航. 想要获取最新原创的技术文章欢迎关注我的公众号:Java3y 文章目录导航:https://github.com/Z ...

  4. MySQL在删除表时I/O错误原因分析

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯数据库技术 发表于云+社区专栏 问题现象 最近使用sysbench测试MySQL,由于测试时间较长,写了一个脚本按prepare- ...

  5. 第4章 令牌端点(Token Endpoint) - IdentityModel 中文文档(v1.0.0)

    令牌端点的客户端库(OAuth 2.0和OpenID Connect)作为HttpClient一组扩展方法提供.这允许HttpClient以您喜欢的方式创建和管理生命周期- 例如静态或通过像Micro ...

  6. 将个人博客从GitHub迁移至阿里云服务器过程总结

    让我们先回顾下前两篇博客: 程序员如何从0到1搭建自己的技术博客 在个人博客中优雅的使用Gitalk评论插件 通过前两篇博客,我们了解了如何快速的从0到1搭建一个个人博客并使用了Gitalk评论插件, ...

  7. css3 之炫酷的loading效果

    css3 之炫酷的loading效果 今天实现了一个炫酷的loading效果,基本全用css来实现,主要练习一下css3的熟练运用 js需要引入jquery 只用到了一点点js 先看效果图 html: ...

  8. 教你如何一键反编译获取任何微信小程序源代码(图形化界面,傻瓜式操作)

    一键获取微信小程序源代码 Tips: 一键获取微信小程序源码, 使用了C#加nodejs制作 直接解压在D盘根目录下后就可以使用 将小程序文件放到 wxapkg目录下3 这个目录下有一些demo 可以 ...

  9. Android App渗透测试工具drozer,Qark,Androguard

    一. drozer简介 drozer(以前称为Mercury)是一款Android安全测试框架. drozer允许您通过承担应用程序的角色并与Dalvik VM,其他应用程序的IPC端点和底层操作系统 ...

  10. arcgis api 3.x for js 入门开发系列二十二地图模态层(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...