【二次开发】CityMaker几何体——线

本文档介绍了如何在CityMaker中进行二次开发,专注于创建三维线对象的技术原理和实践方法。通过.NET和JS两种方式详细阐述了利用IGeometryFactory接口创建几何点和线,并使用IObjectManager接口创建可视化的线对象。
摘要由CSDN通过智能技术生成

**

三维中创建线对象

**

一:技术原理:

基本原理就是由点组成线,citymaker是直接给的创建线几何接口,然后通过可视化创建对象。
方法:CityMaker创建线对象,根据两个点坐标创建可视化线对象,用到的是sdk中的IGeometryFactory(几何体工厂接口)来创建几何点和几何线,然后利用IObjectManager对象管理器接口来创建可视化线对象(创建可视化点可以设置点的样式ICurveSymbol),这里主要介绍创建线段,具体线段类型详见如图:

在这里插入图片描述
在这里插入图片描述

二:创建三维线对象:

1. .NET

public void CreateRenderPolyline()
{   
        //利用几何工厂创建一个几何线,第一个参数为创建的几何对象类型详细见 

        //第二个参数为顶点属性详细见图:

        IPoint point=(IPoint)gFactory.CreateGeometry(gviGeometryType.gviGeometryPoint,gviVertexAttribute.gviVertexAttributeZ);
        polyline = (IPolyline)gFactory.CreateGeometry(gviGeometryType.gviGeometryPolyline,gviVertexAttribute.gviVertexAttributeZ);

        point.SetCoords(100, 100, 100, 0, 0);//设置第一个点坐标
        polyline.AppendPoint(point);//把第一个点加到线上
        point.SetCoords(200,200,200,0,0);//设置第二个点坐标
        polyline.AppendPoint(point);//把第二个点加到线上
        ICurveSymbol curveSymbol = new CurveSymbol();//初始化线框样式 
        curveSymbol.Color = 0xff0000ff;//设置线颜色 

        curveSymbol.Width = 5;//设置线宽
        curveSymbol.Pattern=gviDashStyle.gviDashSolid;//设置线样式,默认为实线,详见图:

        polyline.Generalize(100);//线的容差值 该方法用直线代替曲线,可减少复合线的节点数,容差是容许顶点移动的最大距离。

        var pLength=polyline.Length//获取线长度,适用平面坐标数据            
        //创建可视化线
        rPolyline = rendercontrol.ObjectManager.CreateRenderPolyline(polyline, curveSymbol, rootId);
}

2. JS

function createRenderPolyline(){
     //利用几何工厂创建一个几何线,第一个参数为创建的几何对象类型详细见 
     //第二个参数为顶点属性详细见图:

      var point =  __g.geometryFactory.createGeometry(gviGeometryType.gviGeometryPoint,gviVertexAttribute.gviVertexAttributeZ);
      var polyline =  __g.geometryFactory.createGeometry(gviGeometryType.gviGeometryPolyline,gviVertexAttribute.gviVertexAttributeZ);

      point.setCoords(100,100,100,0,0);//设置第一个点的坐标
      polyline.appendPoint(point);//把点第一个点加入到线上
      point.setCoords(200,200,200,0,0);//设置第二个点的坐标
      polyline.appendPoint(point);//把点第二个点加入到线上

      var curveSymbol = __g.new_CurveSymbol;//初始化线框样式
      curveSymbol.color = 0xff0000ff;//设置填充颜色

      curveSymbol.width = 5;//设置线宽
      curveSymbol.pattern=gviDashStyle.gviDashSolid;//设置线样式,默认为实线,详见图:

      polyline.generalize(100);//线的容差值 该方法用直线代替曲线,可减少复合线的节点数,容差是容许顶点移动的最大距离。

      var pLength=polyline.length//获取线长度,适用平面坐标数据    
      //创建可视化线对象
      var rPolyline = __g.objectManager.createRenderPolyline(polyline, curveSymbol, __rootId);
 }

三:注意事项

1、曲线线宽,默认值0(一个像素)。当取值为正数时,单位米。当取值为负数时,单位像素(最小为-5)。支持贴地。

2、polyline.length获取线长度,适用平面坐标数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值