Skyline(c#)怎麼顯示三維管線

        /// <summary>
        /// 創建管線(不考慮高程)
        /// </summary>
        /// <param name="x1">起點經度</param>
        /// <param name="y1">起點緯度</param>
        /// <param name="z1">起點高程</param>
        /// <param name="x2">終點經度</param>
        /// <param name="y2">終點緯度</param>
        /// <param name="z2">終點高程</param>
        /// <param name="pipeCaiZhi">管線材質</param>
        /// <param name="pipeGuanJing">管半徑</param>
        /// <param name=""></param>
        private void CreatPipe(double x1, double y1, double z1, double x2, double y2, double z2, string pipeCaiZhi, double pipeGuanJing )
        {
            try
            {
                //獲取兩點間距離
                double pipeLength = SkyLineView.SgWorld.CoordServices.GetDistance(x1, y1, x2, y2);
                //圓柱面數 越大越圓滑但渲染的也就越慢
                int numOfSegments = 20;
                IPosition66 origionPosition = SkyLineView.SgWorld.Creator.CreatePosition(x1, y1, 10);
                IPosition66 tagerPosition = SkyLineView.SgWorld.Creator.CreatePosition(x2, y2, 10);
                IPosition66 pipePosition = SkyLineView.SgWorld.CoordServices.GetAimingAngles(origionPosition, tagerPosition);
                var thisPipe = SkyLineView.SgWorld.Creator.CreateCylinder(origionPosition, pipeGuanJing, pipeLength, NumOfSegments: numOfSegments, LineColor: 33023);
                //因爲線是水平的必須旋轉90°
                thisPipe.Position.Pitch = 90 - pipePosition.Pitch;
                thisPipe.Position.Yaw = pipePosition.Yaw;
                thisPipe.Position.Roll = pipePosition.Roll;
            }
            catch (Exception CC)
            {

            }
           
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章