C# 割木板 铺地砖 拼面积 问题

地毯尺寸固定(此处例子为1.88*0.76米),房屋面积假设为正方形,计算需要多少块地毯,边角位置需要切割,计算出每种尺寸的地毯各要多少块。

        private void button2_Click(object sender, EventArgs e)
        {
            double,;
            if (double.Parse(textBox2.Text) > double.Parse(textBox3.Text))
            {= double.Parse(textBox2.Text);= double.Parse(textBox3.Text);
            }
            else
            {= double.Parse(textBox2.Text);= double.Parse(textBox3.Text);
            }
            textBox1.Text = 铺满(,);
        }

        private string 铺满(double,double)
        {
            int 长边除长边整数 = int.Parse(Math.Floor(/ 1.88).ToString());
            double 长边除长边余数 = Math.Round(% 1.88, 2);
            int 短边除短边整数 = int.Parse(Math.Floor(/ 0.76).ToString());
            double 短边除短边余数 = Math.Round(% 0.76, 2);
            string 整块板="", 补长边="", 补短边="", 边角="",结果="";
            if (长边除长边整数>0 && 短边除短边整数>0)
            {
                整块板 = "1.88x0.76x" + (长边除长边整数 * 短边除短边整数).ToString();
                结果 = 整块板;
            }
            if (长边除长边余数 > 0 && 短边除短边整数 > 0)
            {
                补长边 = "0.76x"+长边除长边余数.ToString() + "x"+ 短边除短边整数.ToString();
                结果 = 结果 + ";" + 补长边;
            }
            if (短边除短边余数 > 0 && 长边除长边整数 > 0)
            {
                补短边 = "1.88x" + 短边除短边余数.ToString() + "x" + 长边除长边整数.ToString();
                结果 = 结果 + ";" + 补短边;
            }
            if (长边除长边余数 > 0 && 短边除短边余数 > 0)
            {
                边角 = 长边除长边余数.ToString() + "x" + 短边除短边余数.ToString() + "x" + "1";
                结果 = 结果 + ";" + 边角;
            }
            return 结果;
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤来利用C#和SuperMap Object计算栅格面积: 1. 引用SuperMap Object的COM组件,并创建一个SuperMap对象。 ```c# using SuperMap.Data; using SuperMap.Mapping; using SuperMap.UI; using SuperMap.Data.Conversion; using SuperMap.Realspace; using SuperMap.Analyst.SpatialAnalyst; using SuperMap.Analyst.SpatialAnalyst.RasterAnalysis; using SuperMap.Analyst.SpatialAnalyst.SurfaceAnalysis; using SuperMap.Analyst.SpatialAnalyst.TerrainAnalysis; using SuperMap.Data.Topology; using SuperMap.Data.Resources; using SuperMap.Data.GoDBResources; using SuperMap.Data.Workspace; using SuperMap.Data.Catalog; using SuperMap.Data.Realspace; using SuperMap.Data.ThirdPart; using SuperMap.Data.Utility; // 创建一个SuperMap对象 SuperMap iSuperMap = new SuperMap(); ``` 2. 打开栅格数据集并获取栅格图层对象。 ```c# // 打开栅格数据集 Workspace iWorkspace = iSuperMap.Workspaces.Open("栅格数据集路径"); Datasource iDatasource = iWorkspace.Datasources[0]; Dataset iDataset = iDatasource.Datasets["栅格数据集名称"]; // 获取栅格图层对象 Layer3D iLayer3D = new Layer3D(); iLayer3D.DatasetName = iDataset.Name; iLayer3D.Dataset = iDataset; ``` 3. 构造一个栅格面积统计对象,设置统计区域范围和统计类型。 ```c# // 构造栅格面积统计对象 GridStatistics3D iGridStatistics3D = new GridStatistics3D(); iGridStatistics3D.Layer3D = iLayer3D; iGridStatistics3D.OutValueFieldName = "GridArea"; iGridStatistics3D.StatisticsType = GridStatisticsType.GST_Area; iGridStatistics3D.StatisticsRegion = new GeoRegion3D(new Point3Ds(new Point3D[] { new Point3D(左下角X, 左下角Y), new Point3D(左上角X, 左上角Y), new Point3D(右上角X, 右上角Y), new Point3D(右下角X, 右下角Y) })); ``` 4. 运行统计计算,并获取栅格面积结果。 ```c# // 运行统计计算 iGridStatistics3D.Compute(); // 获取栅格面积结果 double dGridArea = iGridStatistics3D.OutStatisticsResult[0].Value; ``` 5. 关闭栅格数据集和SuperMap对象。 ```c# // 关闭栅格数据集 iDataset.Close(); iDatasource.Close(); iWorkspace.Close(); // 关闭SuperMap对象 System.Runtime.InteropServices.Marshal.ReleaseComObject(iSuperMap); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值