C# cass10 面积计算

运行环境Visual Studio 2022 c# cad2016 cass10

通过面积计算得到扩展数据,宗地面积 ,房屋占地面积,房屋使用面积

一、主要步骤

  1. 获取当前AutoCAD应用中的活动文档、数据库和编辑器对象。
  2. 创建一个选择过滤器,限制用户只能选择"宗地"图层上的LWPOLYLINE对象作为外部边界。
  3. 提示用户根据上述规则进行实体选择,并获取选择结果。
  4. 遍历所有被选中的外部多段线,确保所选多段线是闭合的且至少有一个顶点。
  5. 创建并填充一个表示外部多段线边界坐标的点集合。
  6. 使用多边形窗口选择方式让用户选择位于外部多段线内的实体。
  7. 遍历用户在内部区域所选的所有闭合多段线,计算房屋面积和附属面积。
  8. 计算宗地面积和输出结果。

二、完整代码

internal class zdfwmj
{
    public static List<string> filelist1 = new List<string>();
    public static List<string> filelist2 = new List<string>();
    public void fwzymj()
    {
        // 获取当前AutoCAD应用中的活动文档、数据库和编辑器对象
        Document doc = Application.DocumentManager.MdiActiveDocument;
        Database db = doc.Database;
        Editor ed = doc.Editor;
        string SelectedLayerName = CreatePalette.SelectedLayerName;
        NumberContainer numberContainer = new NumberContainer();


        //ed.WriteMessage("选择的图层:" + SelectedLayerName + "\n");


        // 创建一个选择过滤器,限制用户只能选择"宗地"图层上的LWPOLYLINE对象作为外部边界
        SelectionFilter outerFilter = new SelectionFilter(new TypedValue[] {
            new TypedValue((int)DxfCode.Start, "LWPOLYLINE"),
            new TypedValue((int)DxfCode.LayerName, SelectedLayerName)
        });
        // 提示用户根据上述规则进行实体选择,并获取选择结果
        PromptSelectionResult outerSelRes = ed.GetSelection(outerFilter);
        // 检查用户是否成功选择了实体
        if (outerSelRes.Status == PromptStatus.OK)
        {
            using (Transaction tr = db.TransactionManager.StartTransaction())// 开始事务处理以确保数据一致性
            {
                foreach (ObjectId outerId in outerSelRes.Value.GetObjectIds())// 遍历所有被选中的外部多段线
                {
                    using (Polyline outerPolyline = (Polyline)tr.GetObject(outerId, OpenMode.ForRead))// 读取所选多段线
                    {
                        // 确保所选多段线是闭合的且至少有一个顶点
                        double totalArea = 0; // 总面积
                        double totalAreaZdmj = 0; // 总面积
                        double totalAreaSYmj = 0; // 总面积
                        if (outerPolyline.Closed && outerPolyline.NumberOfVertices > 0)
                        {

                            // 创建并填充一个表示外部多段线边界坐标的点集合
                            Point3dCollection outerPoints = new Point3dCollection();
                            for (int i = 0; i < outerPolyline.NumberOfVertices; i++)
                            {
                                Point3d point = outerPolyline.GetPoint3dAt(i);
                                // 获取多边形的中心点
                                Point3d center = GetCenterOfPolyline(outerPolyline);
                                // 定义你的扩展因子,比如 1.5 表示扩大1.5倍
                                double scaleFactor = 1.2;

                                // 将顶点向中心点平移,然后按比例缩放
                                Point3d scaledPoint = new Point3d(
                                    (point.X - center.X) * scaleFactor + center.X,
                                    (point.Y - center.Y) * scaleFactor + center.Y,
                                    (point.Z - center.Z) * scaleFactor + center.Z
                                );

                                // 创建并设置文本对象
                                DBText text = new DBText();
                                text.TextString = i.ToString();
                                //text.Height = 1; // 文字高度设为1个单位
                                text.Position = scaledPoint;

                                 将文本添加到模型空间
                                //using (Transaction transaction = db.TransactionManager.StartTransaction())
                                //{
                                //    BlockTable bt = transaction.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                                //    BlockTableRecord ms = transaction.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                                //    ms.AppendEntity(text);
                                //    transaction.AddNewlyCreatedDBObject(text, true);
                                //    transaction.Commit();
                                //}
                                outerPoints.Add(scaledPoint);
                            }

                            // 创建一个窗口选择过滤器,用于选择位于外部多段线内的所有实体
                            SelectionFilter innerFilter = new SelectionFilter(new TypedValue[] {
                    new TypedValue((int)DxfCode.Start, "LWPOLYLINE"),
                    new TypedValue((int)DxfCode.LayerName, "JMD")
                });
                            // 使用多边形窗口选择方式让用户选择位于外部多段线内的实体
                            PromptSelectionResult innerSelRes = ed.SelectWindowPolygon(outerPoints, innerFilter);

                            // 检查用户是否成功在内部区域进行了实体选择
                            if (innerSelRes.Status == PromptStatus.OK)
                            {
                                SelectionSet innerSelectionSet = innerSelRes.Value;
                                // 遍历用户在内部区域所选的所有闭合多段线

                               
                                foreach (ObjectId id2 in innerSelectionSet.GetObjectIds())
                                {
                                    using (Polyline polyline2 = (Polyline)tr.GetObject(id2, OpenMode.ForRead))
                                    {
                                        if (polyline2.Closed && polyline2.NumberOfVertices > 0)
                                        {
                                            Entity ent2 = (Entity)tr.GetObject(id2, OpenMode.ForWrite);
                                            //ent2.Color = Color.FromColorIndex(ColorMethod.ByAci, 3); // 示例:将颜色设为黄色
                                            //ed.UpdateScreen(); // 确保颜色更改即时生效
                                            filelist1.Clear();
                                            filelist2.Clear();
                                            int filelist1ii = 0;
                                            if (ent2 != null && ent2.XData != null)
                                            {
                                                List<int> numbers01 = new List<int> { 141161, 141121, 141151 };//房屋编码
                                                List<int> numbers02 = new List<int> { 141800, 140001, 143130, 143111, 143112 };//房屋附属编码

                                                ResultBuffer rb = ent2.GetXDataForApplication("SOUTH");
                                                string xdata = rb.ToString();

                                                foreach (TypedValue tv in rb)
                                                {
                                                    filelist1.Add(tv.TypeCode.ToString());//码
                                                    filelist2.Add(tv.Value.ToString());//值


                                                }
                                                filelist1ii = filelist1.Count();

                                                //房屋面积
                                                if (filelist1ii == 3)
                                                {
                                                    if (numbers01.Contains(Convert.ToInt32(filelist2[1])))
                                                    {
                                                        string fwjg = numberContainer.GetDescription(Convert.ToInt32(filelist2[1]));

                                                        int fileValue;
                                                        if (int.TryParse(filelist2[2], out fileValue))
                                                        {
                                                            double calculatedUsageArea = polyline2.Area * fileValue;
                                                            //ed.WriteMessage($"\n房屋面积信息:{fwjg}{fileValue} 占地面积:{polyline2.Area:N2} 使用面积:{calculatedUsageArea:N2}\n");
                                                            totalAreaZdmj += polyline2.Area;
                                                            totalAreaSYmj += calculatedUsageArea;
                                                            using (Transaction transaction = db.TransactionManager.StartTransaction())
                                                            {
                                                                RegAppTable table02 = (RegAppTable)transaction.GetObject(doc.Database.RegAppTableId, OpenMode.ForWrite, false);
                                                                ResultBuffer rb02 = new ResultBuffer();
                                                                string appName02 = "扩展数据";
                                                                if (!table02.Has(appName02))
                                                                {
                                                                    RegAppTableRecord regAppRec = new RegAppTableRecord();
                                                                    regAppRec.Name = appName02;
                                                                    table02.Add(regAppRec);
                                                                    transaction.AddNewlyCreatedDBObject(regAppRec, true);
                                                                }
                                                                rb02.Add(new TypedValue((int)DxfCode.ExtendedDataRegAppName, appName02));
                                                                rb02.Add(new TypedValue((int)DxfCode.ExtendedDataReal, polyline2.Area));
                                                                rb02.Add(new TypedValue((int)DxfCode.ExtendedDataReal, calculatedUsageArea));
                                                                ent2.XData = rb02;
                                                                transaction.Commit();
                                                            }
                                                        }
                                                        else
                                                        {
                                                            //ed.WriteMessage("\n无法将文件列表中的值转换为整数以计算使用面积!");
                                                        }
                                                    }


                                                }
                                                if (filelist1ii == 2)
                                                {
                                                   ed.WriteMessage("\n附属编码:" + filelist2[1]);
                                                    if (numbers02.Contains(Convert.ToInt32(filelist2[1])))
                                                    {
                                                        string fwjg = numberContainer.GetDescription(Convert.ToInt32(filelist2[1]));
                                                        //double fsmj = FwmjArea(polyline2, db, ed, tr);
                                                        TypedValue[] tvs = new TypedValue[]
                                                        {
                                                             new TypedValue((int)DxfCode.Operator, "<and"),
                                                             new TypedValue((int)DxfCode.Start, "TEXT"),
                                                             new TypedValue((int)DxfCode.LayerName, "房屋附属1"),
                                                             new TypedValue((int)DxfCode.Operator, "and>")
                                                        };

                                                        SelectionFilter sf = new SelectionFilter(tvs);
                                                        PromptSelectionResult psr = ed.SelectAll(sf);
                                                        SelectionSet ss = psr.Value;
                                                        foreach (SelectedObject so in ss)
                                                        {
                                                            DBText text = tr.GetObject(so.ObjectId, OpenMode.ForRead) as DBText;
                                                            if (IsPointInside(polyline2, text.Position))
                                                            {
                                                                string input = text.TextString;
                                                                //文字分解
                                                                string[] parts = input.Split(' ');

                                                                foreach (string part in parts)
                                                                {
                                                                    // 按中文逗号分割键值对
                                                                    string[] keyValue = part.Split(','); // 注意:这里的逗号是中文逗号,不是英文逗号

                                                                    if (keyValue.Length == 2)
                                                                    {
                                                                        string key = keyValue[0];
                                                                        string value = keyValue[1];

                                                                        //ed.WriteMessage("键: " + key + ", 值: " + value+ "\n");
                                                                        bool result = key.Contains("Q");
                                                                        if (result)
                                                                        {
                                                                            totalArea += polyline2.Area;
                                                                            //ed.WriteMessage($"全:{key}{value} 附属面积:{polyline2.Area:N2}\n");
                                                                        }
                                                                        result = key.Contains("B");
                                                                        if (result)
                                                                        {
                                                                            totalArea += polyline2.Area / 2;
                                                                            //ed.WriteMessage($"半:{key}{value} 附属面积:{polyline2.Area:N2}\n");
                                                                        }
                                                                    }
                                                                    else
                                                                    {
                                                                        //ed.WriteMessage("未能分割出键值对:" + part);
                                                                    }
                                                                }
                                                                using (Transaction transaction = db.TransactionManager.StartTransaction())
                                                                {
                                                                    RegAppTable table02 = (RegAppTable)transaction.GetObject(doc.Database.RegAppTableId, OpenMode.ForWrite, false);
                                                                    ResultBuffer rb02 = new ResultBuffer();
                                                                    string appName02 = "扩展数据";
                                                                    if (!table02.Has(appName02))
                                                                    {
                                                                        RegAppTableRecord regAppRec = new RegAppTableRecord();
                                                                        regAppRec.Name = appName02;
                                                                        table02.Add(regAppRec);
                                                                        transaction.AddNewlyCreatedDBObject(regAppRec, true);
                                                                    }
                                                                    rb02.Add(new TypedValue((int)DxfCode.ExtendedDataRegAppName, appName02));
                                                                    rb02.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, input));
                                                                    rb02.Add(new TypedValue((int)DxfCode.ExtendedDataReal, totalArea));
                                                                    ent2.XData = rb02;
                                                                    transaction.Commit();
                                                                }
                                                                //ed.WriteMessage($"房屋附属:{input} 附属面积:{totalArea:N2}\n");

                                                            }
                                                            
                                                        }   
                                                        
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            Entity ent01 = tr.GetObject(outerId, OpenMode.ForWrite) as Entity;
                            RegAppTable table = (RegAppTable)tr.GetObject(doc.Database.RegAppTableId, OpenMode.ForWrite, false);
                            ResultBuffer rb01 = new ResultBuffer();
                            string appName = "扩展数据";
                            if (!table.Has(appName))
                            {
                                RegAppTableRecord regAppRec = new RegAppTableRecord();
                                regAppRec.Name = appName;
                                table.Add(regAppRec);
                                tr.AddNewlyCreatedDBObject(regAppRec, true);
                            }
                            rb01.Add(new TypedValue((int)DxfCode.ExtendedDataRegAppName, appName));
                            rb01.Add(new TypedValue((int)DxfCode.ExtendedDataReal, outerPolyline.Area));
                            rb01.Add(new TypedValue((int)DxfCode.ExtendedDataReal, totalAreaZdmj));
                            rb01.Add(new TypedValue((int)DxfCode.ExtendedDataReal, (totalAreaSYmj + totalArea)));
                            ent01.XData = rb01;

                        }

                        //ed.WriteMessage($"\n宗地面积:{outerPolyline.Area:N2} \n\n房屋占地面积:{totalAreaZdmj:N2}\n房屋使用面积:{(totalAreaSYmj + totalArea):N2}\n");

                    }
                }
                tr.Commit();
            }
        }
    }

    /// <summary>FwmjArea
    public double FwmjArea(Polyline polyline, Database db, Editor ed, Transaction tr)
    {

        Point3dCollection outerPoints = new Point3dCollection(); // 创建并填充一个表示外部多段线边界坐标的点集合
        double areaFWFS = 0;//房屋附属面积
        for (int i = 0; i < polyline.NumberOfVertices; i++)
        {
            Point3d point = polyline.GetPoint3dAt(i);
            outerPoints.Add(point);
        }


        // 创建一个窗口选择过滤器,用于选择位于外部多段线内的所有实体
        SelectionFilter innerFilter = new SelectionFilter(new TypedValue[] {
                     new TypedValue((int)DxfCode.Operator, "<and"),
                     new TypedValue((int)DxfCode.Start, "TEXT"),
                     new TypedValue((int)DxfCode.LayerName, "房屋附属1"),
                     new TypedValue((int)DxfCode.Operator, "and>")
        });
        // 使用多边形窗口选择方式让用户选择位于外部多段线内的实体
        PromptSelectionResult innerSelRes = ed.SelectAll(innerFilter);
        if (innerSelRes.Status == PromptStatus.OK)
        {
            SelectionSet innerSelectionSet = innerSelRes.Value;
            foreach (SelectedObject so in innerSelectionSet)
            {
                DBText text = tr.GetObject(so.ObjectId, OpenMode.ForRead) as DBText;
                if (IsPointInside(polyline, text.Position))
                {
                    string input = text.TextString;
                    //ed.WriteMessage("\n房屋附属文字2:", input.ToString());
                    //ed.WriteMessage("\n房屋附属文字2:", polyline.Area);
                }

            }

        }



        return areaFWFS;
    }
    /// </summary>
    /// <param name="polyline"></param>
    /// <param name="point"></param>
    /// <returns></returns>
    // 定义一个方法,输入参数为一个多段线对象和一个三维点,返回值为布尔类型,表示该点是否在多段线内部
    public bool IsPointInside(Polyline polyline, Point3d point)
    {
        // 初始化交叉次数变量为0,用于记录点与多段线各线段相交的次数
        int crossings = 0;

        // 遍历多段线的所有顶点,从第一个顶点开始到最后一个顶点
        for (int i = 0; i < polyline.NumberOfVertices; i++)
        {
            // 获取当前线段的起点坐标
            Point3d start = polyline.GetPoint3dAt(i);

            // 计算下一个顶点的索引,并使用取模运算确保最后一个顶点后回到第一个顶点形成闭合循环
            int nextIndex = (i + 1) % polyline.NumberOfVertices;
            Point3d end = polyline.GetPoint3dAt(nextIndex);

            // 如果线段两端点都在检测点Y轴上方或下方,则此线段与过检测点的水平线不相交,跳过此次循环
            if (start.Y > point.Y && end.Y > point.Y)
                continue;
            if (start.Y <= point.Y && end.Y <= point.Y)
                continue;

            // 如果检测点X坐标小于线段起点和终点的X坐标最小值,则此线段位于检测点左侧,跳过此次循环
            if (point.X < Math.Min(start.X, end.X))
                continue;

            // 计算线段的斜率,并根据直线方程计算线段与过检测点Y坐标水平线的交点横坐标
            double slope = (end.Y - start.Y) / (end.X - start.X);
            double intersectX = start.X + (point.Y - start.Y) / slope;

            // 如果检测点X坐标大于等于交点横坐标,则表示检测点在线段的一侧,增加交叉次数
            if (point.X >= intersectX)
                crossings++;
        }

        // 根据奇偶性判断:若交叉次数为奇数,则认为点在多段线内;否则点在多段线外
        return (crossings % 2) == 1;
    }
    //包含字符 出现次数
    public static int CountCharacterOccurrences(string str, string substring)
    {
        if (string.IsNullOrEmpty(str) || string.IsNullOrEmpty(substring))
            return 0;

        int index = 0, count = 0;
        while ((index = str.IndexOf(substring, index)) != -1)
        {
            count++;
            index += substring.Length; // 移动到下一个可能的位置
        }
        return count;
    }
    // GetCenterOfPolyline 是一个假设存在的方法,用于计算多边形的中心点
    private Point3d GetCenterOfPolyline(Polyline polyline)
    {
        double xSum = 0, ySum = 0, zSum = 0;
        for (int i = 0; i < polyline.NumberOfVertices; i++)
        {
            Point3d vertex = polyline.GetPoint3dAt(i);
            xSum += vertex.X;
            ySum += vertex.Y;
            zSum += vertex.Z;
        }
        return new Point3d(xSum / polyline.NumberOfVertices, ySum / polyline.NumberOfVertices, zSum / polyline.NumberOfVertices);
    }
}

 //有需要cad二次开发可以私信进行联系
//感谢大家的点赞,收藏,转发,关注

   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/402691.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Commonjs 和 Es Module详解

一 前言 今天我们来深度分析一下 Commonjs 和 Es Module&#xff0c;希望通过本文的学习&#xff0c;能够让大家彻底明白 Commonjs 和 Es Module 原理&#xff0c;能够一次性搞定面试中遇到的大部分有关 Commonjs 和 Es Module 的问题。 带上疑问开始今天的分析&#xff1a; …

贷齐乐系统最新版SQL注入(无需登录绕过WAF可union select跨表查询)

一、环境 已上传资源&#xff08;daiqile&#xff09; 二、代码解释 1.1Request 不管get请求还是post请求都可以接收到 1.2过滤的还挺多 1.3第二个WAF把数据分为两个了一个Key一个value&#xff0c;全是explode的功劳 1.4submit是if进入的前提 很明显走进来了 1.5那我们在这…

springboot206基于SpringBoot的农商对接系统的设计与实现

基于Spring Boot的农商对接系统的设计与实现 Design and implementation of agricultural business docking system based on Spring Boot 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离…

day05-进程通信

1> 将互斥机制的代码实现重新敲一遍 代码&#xff1a; #include<myhead.h>int num520;//临界资源//1.创建互斥锁 pthread_mutex_t fastmutex;//定义任务函数 void *task1(void *arg){printf("1111111\n");//3.临界区上面获取锁资源&#xff08;上锁&#…

开发个IDEA插件

开发IDEA一个插件&#xff0c;但是这个插件的功能是个大杂烩吧&#xff0c; 主要完成以下几个功能&#xff0c;方便组内开发人员提高效率。 1 网关会传过来登录人员的 一些核心字段&#xff0c;公司编码/用户编号/主岗。 因为存在多租户&#xff0c;所以经常要切换任务&…

【ACM出版】第五届计算机信息和大数据应用国际学术会议(CIBDA 2024)

第五届计算机信息和大数据应用国际学术会议&#xff08;CIBDA 2024&#xff09; 2024 5th International Conference on Computer Information and Big Data Applications 重要信息 大会官网&#xff1a;www.ic-cibda.org 大会时间&#xff1a;2024年3月22-24日 大会地点&#…

LeetCode 0106.从中序与后序遍历序列构造二叉树:分治(递归)——五彩斑斓的题解(若不是彩色的可以点击原文链接查看)

【LetMeFly】106.从中序与后序遍历序列构造二叉树&#xff1a;分治&#xff08;递归&#xff09;——五彩斑斓的题解&#xff08;若不是彩色的可以点击原文链接查看&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/construct-binary-tree-from-inorder-an…

开发Chrome插件,background.js中log打印未出现在控制台

不同于内容脚本&#xff08;通常命名content.js&#xff09;&#xff0c;在后台脚本&#xff08;通常命名background.js或service-worker.js&#xff09;中console.log并不会在控制台中直接显示。 要查看后台脚本上下文的正确控制台&#xff0c;执行如下步骤&#xff1a; 访问…

leetcode hot100单词拆分

在本题中&#xff0c;我们是要把一个字符串&#xff0c;判断是否能用给的字符串数组中的单词进行拆分&#xff0c;如果可以则返回true&#xff0c;不能的话则返回false。这个题一开始看无法与背包问题联系在一起。但仔细考虑&#xff0c;就是用物品&#xff08;给的字符串数组中…

在Mac上搭建MongoDB环境

最近工作中需要装MongoDB环境&#xff0c;搭建过程中遇到了一些问题&#xff0c;在这里记录一下安装MongoDB环境的方法以及问题的解决方法。有两种安装MongoDB的方法&#xff1a;brew安装和手动安装。 目录 使用Homebrew安装MongoDB 手动安装MongoDB&#xff08;不使用Homebr…

WordPres Bricks Builder 前台RCE漏洞复现(CVE-2024-25600)

0x01 产品简介 Bricks Builder是一款用于WordPress的开发主题,提供直观的拖放界面,用于设计和构建WordPress网站。它使用户能够轻松创建自定义的网页布局和设计,无需编写或了解复杂的代码。Bricks Builder具有用户友好的界面和强大的功能,使用户可以通过简单的拖放操作添加…

Vue图片浏览组件v-viewer,支持旋转、缩放、翻转等操作

Vue图片浏览组件v-viewer&#xff0c;支持旋转、缩放、翻转等操作 之前用过viewer.js&#xff0c;算是市场上用过最全面的图片预览。v-viewer&#xff0c;是基于viewer.js的一个图片浏览的Vue组件&#xff0c;支持旋转、缩放、翻转等操作。 基本使用 安装&#xff1a;npm安装…

浅谈TCP协议的可靠含义和三次握手

这里不过多阐述计算机网络的体系结构&#xff0c;本文主要是想阐述三次握手和可靠连接之间的联系。TCP协议全称传输控制协议&#xff08;Transmission Cotrol Protocol&#xff09;。 1、TCP协议运行在哪一层 TCP运行在运输层。 2、TCP协议的可靠是什么意思 步入主题&…

MLflow【部署 01】MLflow官网Quick Start实操(一篇学会部署使用MLflow)

一篇学会部署使用MLflow 1.版本及环境2.官方步骤Step-1 Get MLflowStep-2 Start a Tracking ServerStep 3 - Train a model and prepare metadata for loggingStep 4 - Log the model and its metadata to MLflowStep 5 - Load the model as a Python Function (pyfunc) and us…

Hackme 1

信息收集 Nmap部分 存活扫描&#xff1a; └─# nmap -sn 192.168.10.1/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-02-20 15:00 CST Nmap scan report for 192.168.10.1 (192.168.10.1) Host is up (0.00012s latency). MAC Address: 00:50:56:C0:00:08 (VMwar…

matlab代码--基于matlabLDPC-和积译码系统

LDPC编码 一个码长为n、信息位个数为k的线性分组码&#xff08;n,k&#xff09;可以由一个生成矩阵 来定义&#xff0c;信息序列 通过G被映射到码字XS.G。线性分组码也可以由一个校验矩阵 来描述。所以码字均满足 。校验矩阵的每一行表示一个校验约束 &#xff0c;其中所有的非…

C++入门学习(三十二)二维数组定义方式

一维数组类似于一条“线”&#xff0c;而二维数组类似于一个“面”&#xff0c;二维数组也更像一个表格&#xff0c;由我们在“表格”中查询数据。 1、先定义数组&#xff0c;后赋值 int arr[2][3]; #include <iostream> using namespace std;int main() { int arr…

分类预测 | Matlab实现CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的分类预测

分类预测 | Matlab实现CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的分类预测 目录 分类预测 | Matlab实现CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab…

day6 2/22

1> 将互斥机制的代码实现重新敲一遍 #include<myhead.h> int num520; pthread_mutex_t mutex;//创建互斥锁 void*task1(void*arg) {pthread_mutex_lock(&mutex);sleep(3);num;printf("%d\n",num);pthread_mutex_unlock(&mutex);pthread_exit(NULL)…

2024/2/22

P8680 [蓝桥杯 2019 省 B] 特别数的和 题目描述 小明对数位中含有 2、0、1、9 的数字很感兴趣&#xff08;不包括前导 00&#xff09;&#xff0c;在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40&#xff0c;共28 个&#xff0c;他们的和是574。 请问&#xff0c;在…