SkylineGlobe 如何二次开发获取三维模型的BBOX和设置Tint属性

测试模型类型选择TerrainModel和Feature两种,测试代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>选择TerrainModel对象</title>
    <script type="text/javascript">
        function StartF() {
            try {
                var sg = CreateSGObj();
                sg.AttachEvent("OnLButtonDown", OnLButtonDown);
            }
            catch (e) {
                alert(e);
            }
        }

        function EndF() {
            var sg = CreateSGObj();
            sg.DetachEvent("OnLButtonDown", OnLButtonDown);
        }

        function OnLButtonDown(Flags, X, Y) {
            try
            {
                var sg = CreateSGObj();
                var iwp = sg.Window.PixelToWorld(X, Y, 1 + 8192);
                if (iwp != null) {
                    alert(iwp.ObjectID);
                    var oModel = sg.Creator.GetObject(iwp.ObjectID);
                    var oBBox = null;
                    if (oModel.ObjectType == 17) // TerrainModel
                    {
                        oModel.Terrain.Tint.abgrColor = 0x66FF0000;
                        oBBox = oModel.Terrain.BBox;
                    }
                    else if (oModel.ObjectType == 33) // Feature
                    {
                        oModel.Tint.abgrColor = 0x66FF0000;
                        //alert(oModel.Geometry.Wks.ExportToWKT());
                        var statisticsgPolyObj = sg.Creator.CreatePolygon(oModel.Geometry, sg.Creator.CreateColor(255, 0, 0, 255), sg.Creator.CreateColor(0, 255, 0, 26), 0, "", "temp");
                        //oBBox = oModel.BBox; // ?
                    }
                    else {

                    }
                    if (oBBox != null) {
                        var myGeometry = sg.Creator.GeometryCreator.CreateLinearRingGeometry([oBBox.MaxX, oBBox.MaxY, 0, oBBox.MaxX, oBBox.MinY, 0, oBBox.MinX, oBBox.MinY, 0, oBBox.MinX, oBBox.MaxY, 0])
                        var statisticsgPolyObj = sg.Creator.CreatePolygon(myGeometry, sg.Creator.CreateColor(255, 0, 0, 255), sg.Creator.CreateColor(0, 255, 0, 26), 0, "", "temp");
                    }
                }
            }
            catch (e)
            {
                alert(e);
            }
            return false;
        }

        //------------------------------------------------------------
        // 创建sgworld对象  赵贺 2015.06.09. TEPro6.6
        //------------------------------------------------------------
        function CreateSGObj() {
            var obj = $("sgworld");
            if (obj == null) {
                obj = document.createElement(‘object‘);
                document.body.appendChild(obj);
                obj.name = "sgworld";
                obj.id = "sgworld";
                obj.classid = "CLSID:3A4F9199-65a8-11d5-85c1-0001023952c1";
            }
            return obj;
        }
        function $(id) {
            return window.document.getElementById(id);
        }
    </script>
</head>
<body>
    <input id="Button1" type="button" value="开始" onclick="StartF()" />
    <input id="Button2" type="button" value="结束" onclick="EndF()" />
    <div id="res"></div>
    <object id="TerraExplorer3DWindow" classid="CLSID:3a4f9192-65a8-11d5-85c1-0001023952c1" style="width:500px;height:400px;"></object>
    <object id="TerraExplorerInformationWindow" classid="CLSID:3a4f9193-65a8-11d5-85c1-0001023952c1" style="width:300px;height:400px;"></object>
</body>
</html>
时间: 2024-10-29 19:12:40

SkylineGlobe 如何二次开发获取三维模型的BBOX和设置Tint属性的相关文章

NX二次开发-获取指定矩阵标识的矩阵值

函数:UF_CSYS_ask_matrix_values () 函数说明:获取指定矩阵标识的矩阵值. 用法: #include <uf.h> #include <uf_csys.h> extern DllExport void ufusr(char *param, int *returnCode, int rlen) { UF_initialize(); //获取WCS标识 tag_t tagWCS = NULL_TAG; UF_CSYS_ask_wcs(&tagWCS);

Saiku二次开发获取源代码在本地编译(五)

关于Saiku的二次开发,在本地编译然后启动自己编译好的Saiku服务 Saiku是开源的,从github上能下载源代码,本例中的saiku源码也是从github上找的,然后自己改了一些pom.xml,以及其它调整. 当前提供的saiku版本为 3.9 一.Saiku源码下载 下载saiku源码地址: https://github.com/DFX339/saiku-3.9.git     #这是我改好在本地编译通过的saiku源码 二.Saiku相关jar包下载 在本地编译时需要注意有些jar包

Qt+QGIS二次开发:自定义类实现查询矢量数据的属性字段值(图查属性)

在GIS领域,有两种重要的查询操作,图查属性和属性查图. 本文主要介绍如何在QGIS中通过从QgsMapToolIdentify中派生自定义类实现查询矢量数据的属性字段值(图查属性). 重点参考资料: 1.QGis二次开发基础 -- 属性识别工具的实现 2.QGis(三)查询矢量图层的要素属性字段值 原文地址:https://www.cnblogs.com/rainbow70626/p/10383034.html

Revit 二次开发 获取选中的对象

领导脑瓜一拍,决定结合Revit开发产品,俺可惨了,两眼一抹黑,在他拍脑袋前,俺连Revit是什么.干嘛用的都不知道,硬着头皮上吧.老了,脑瓜不好使了,学过的在这里做个笔记 1 //获取选中对象 2 3 [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)] 4 public class getSelectEle : IExternalCommand 5 { 6 7 public Result Execut

NX二次开发-获取坐标系信息UF_CSYS_ask_csys_info

1 NX9+VS2012 2 3 4 #include <uf.h> 5 #include <uf_csys.h> 6 7 8 9 UF_initialize(); 10 11 //获取WCS标识 12 tag_t WcsId = NULL_TAG; 13 UF_CSYS_ask_wcs(&WcsId); 14 15 //获取坐标系信息 16 tag_t MatrixId = NULL_TAG; 17 double CsysOrigin[3]; 18 UF_CSYS_ask

NX二次开发-获取矩阵值UF_CSYS_ask_matrix_values

1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_csys.h> 5 6 7 UF_initialize(); 8 9 //获取WCS标识 10 tag_t WcsId = NULL_TAG; 11 UF_CSYS_ask_wcs(&WcsId); 12 13 //获取坐标系信息 14 tag_t MatrixId = NULL_TAG; 15 double CsysOrigin[3]; 16 UF_CSYS_ask_csys_

SkylineGlobe 如何二次开发实现天际线分析功能

天际线效果: 示例代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>ToolTitle</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel=&qu

NX二次开发-通过3x3矩阵获取XYZ轴矢量

函数:UF_CSYS_ask_wcs() 函数说明:通过3x3矩阵获取XYZ轴矢量 用法: 1 #include <uf.h> 2 #include <uf_mtx.h> 3 extern DllExport void ufusr(char *param, int *returnCode, int rlen) 4 { 5 UF_initialize(); 6 7 double douMatrixValues[9] = {1,0,0,0,1,0,0,0,1}; 8 double dV

NX二次开发-移动WCS坐标系

说明:移动WCS坐标系 用法: #include <uf.h> #include <uf_csys.h> extern DllExport void ufusr(char *param, int *returnCode, int rlen) { UF_initialize(); //移动WCS,到点 couCsysOrigin2 double couCsysOrigin2[3] = { 10,10,10 }; //获取当前WCS标识 tag_t tagWCS = NULL_TAG;