前两天项目开发中,忽然一个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.IDI3DMLFeatureLayer701.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. 基于 websocket 实现的 im 实时通讯案例

    分享利用 redis 订阅与发布特性,巧妙的现实高性能im系统.为表诚意,先贴源码地址:https://github.com/2881099/im 下载源码后的运行方法: 运行环境:.NETCore ...

  2. Caffe源码理解2:SyncedMemory CPU和GPU间的数据同步

    目录 写在前面 成员变量的含义及作用 构造与析构 内存同步管理 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 在Caffe源码理解1中介绍了Blob类,其中的数据成 ...

  3. SAP MM Storage Location Missing in MD04 Result?

    SAP MM Storage Location Missing in MD04 Result? Today I received a ticket from business team, a user ...

  4. Oracle数据库升级注意事项

    1 备份配置参数 数据库升级前的配置参数要备份,如PGA大小 这样数据库升级后还可以升级前的配置,而不至于使用安装升级时的默认配置 2 检查版本兼容 确认数据库升级后是否对生产环境上的代码有影响,如果 ...

  5. 编程心法 之 敏捷开发(新架构)Agile Team Organization Squads, Chapters, Tribes and Guilds

    Agile Team 参考 一般情况下,一个小组有以下功能分布: Squads 每个主要的功能的开发属于一个Squad,比如说QQ这个应用,可以分为QQ空间小组.QQ会员小组等等, 每一个Squad有 ...

  6. sql server replace的替换字符,replace的使用

    sql server replace的替换字符,replace的使用 select REPLACE(name,'张','') * from entity_5c7a578c05c7042958d9148 ...

  7. July 01st. 2018, Week 27th. Sunday

    Empty your cup so that it may be filled. 清空杯子,方能再次装满. From Bruce Lee. We can't learn anything new if ...

  8. .NET Core 给使用.NET的公司所带来的机遇

    今晚在余晟的微信公众号看到了一篇文章< 从.NET/C#开发的“后继无人”说起: https://mp.weixin.qq.com/s/rO2d0xZ58Z2syqT7AaNT3w>. 这 ...

  9. 统一修改表单参数(表单提交的空字符串统一转null)

    统一修改表单参数(表单提交的空字符串统一转null) 1.介绍: 我们业务中有时会遇到提交的表单中某个参数为空字符串,导致后台接受的为空字符串("")而不是我们理想中的null,会 ...

  10. [Inside HotSpot] 模板解释器

    0. 简介 众所周知,hotspot默认使用解释+编译混合(-Xmixed)的方式执行代码.它首先使用模板解释器对字节码进行解释,当发现一段代码是热点的时候,就使用C1/C2 JIT进行优化编译再执行 ...