优化设计英语/北京seo优化wyhseo

优化设计英语,北京seo优化wyhseo,做网推的网站,聊城做网站的公司渠道以下是一个使用AutoCAD C#.NET API实现你需求的示例代码,代码实现了提示用户选择一个实体,将一些字符串变量及其对应的值组成JSON格式数据存储到实体的扩展数据(XData)中,并在弹出窗口中显示该实体的所有扩展数据信息。…

以下是一个使用AutoCAD C#.NET API实现你需求的示例代码,代码实现了提示用户选择一个实体,将一些字符串变量及其对应的值组成JSON格式数据存储到实体的扩展数据(XData)中,并在弹出窗口中显示该实体的所有扩展数据信息。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Newtonsoft.Json; // 需要引入Newtonsoft.Json库

namespace AcadXDataExample
{
    public class AcadXDataSample
    {
        [Autodesk.AutoCAD.Runtime.CommandMethod("SetAndShowXData")]
        public void SetAndShowXData()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;

            // 提示用户选择一个实体
            PromptEntityOptions promptEntityOptions = new PromptEntityOptions("\n请选择一个实体: ");
            PromptEntityResult promptEntityResult = ed.GetEntity(promptEntityOptions);
            if (promptEntityResult.Status != PromptStatus.OK)
            {
                return;
            }

            // 定义一些字符串变量和对应的值
            string key1 = "Name";
            string value1 = "SampleEntity";
            string key2 = "Description";
            string value2 = "This is a sample entity for testing XData";

            // 将键值对组成字典
            Dictionary<string, string> dataDict = new Dictionary<string, string>
            {
                { key1, value1 },
                { key2, value2 }
            };

            // 将字典转换为JSON字符串
            string jsonData = JsonConvert.SerializeObject(dataDict);

            // 将JSON字符串存储为扩展数据(XData)
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                try
                {
                    Entity entity = trans.GetObject(promptEntityResult.ObjectId, OpenMode.ForWrite) as Entity;
                    if (entity != null)
                    {
                        // 创建扩展数据的头部
                        ResultBuffer rb = new ResultBuffer(
                            new TypedValue((int)DxfCode.ExtendedDataRegAppName, "MyXDataApp"),
                            new TypedValue((int)DxfCode.Text, jsonData)
                        );
                        entity.XData = rb;
                        trans.Commit();
                    }
                }
                catch (Exception ex)
                {
                    trans.Abort();
                    MessageBox.Show($"存储扩展数据时出错: {ex.Message}");
                }
            }

            // 读取并显示实体的扩展数据
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                try
                {
                    Entity entity = trans.GetObject(promptEntityResult.ObjectId, OpenMode.ForRead) as Entity;
                    if (entity != null && entity.HasXData)
                    {
                        ResultBuffer xData = entity.XData;
                        StringBuilder sb = new StringBuilder();
                        sb.AppendLine("实体的扩展数据信息:");
                        foreach (TypedValue tv in xData)
                        {
                            sb.AppendLine($"类型码: {tv.TypeCode}, 值: {tv.Value}");
                        }
                        MessageBox.Show(sb.ToString());
                    }
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Abort();
                    MessageBox.Show($"读取扩展数据时出错: {ex.Message}");
                }
            }
        }
    }
}
上面代码修改后版本:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Newtonsoft.Json; // 需要引入Newtonsoft.Json库

namespace AcadXDataExample
{
    public class AcadXDataSample
    {
        [Autodesk.AutoCAD.Runtime.CommandMethod("SetAndShowXData")]
        public void SetAndShowXData()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;

            // 提示用户选择一个实体
            PromptEntityOptions promptEntityOptions = new PromptEntityOptions("\n请选择一个实体: ");
            PromptEntityResult promptEntityResult = ed.GetEntity(promptEntityOptions);
            if (promptEntityResult.Status != PromptStatus.OK)
            {
                return;
            }

            // 定义一些字符串变量和对应的值
            string key1 = "Name";
            string value1 = "SampleEntity";
            string key2 = "Description";
            string value2 = "This is a sample entity for testing XData";

            // 将键值对存储为扩展数据(XData)
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                try
                {
                    Entity entity = trans.GetObject(promptEntityResult.ObjectId, OpenMode.ForWrite) as Entity;
                    if (entity != null)
                    {
                        // 创建扩展数据的头部
                        ResultBuffer rb = new ResultBuffer(
                            new TypedValue((int)DxfCode.ExtendedDataRegAppName, "MyXDataApp")
                        );

                        // 为每个键值对添加一个条目
                        rb.Add(new TypedValue((int)DxfCode.Text, key1));
                        rb.Add(new TypedValue((int)DxfCode.Text, value1));
                        rb.Add(new TypedValue((int)DxfCode.Text, key2));
                        rb.Add(new TypedValue((int)DxfCode.Text, value2));

                        entity.XData = rb;
                        trans.Commit();
                    }
                }
                catch (Exception ex)
                {
                    trans.Abort();
                    MessageBox.Show($"存储扩展数据时出错: {ex.Message}");
                }
            }

            // 读取并显示实体的扩展数据
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                try
                {
                    Entity entity = trans.GetObject(promptEntityResult.ObjectId, OpenMode.ForRead) as Entity;
                    if (entity != null && entity.HasXData)
                    {
                        ResultBuffer xData = entity.XData;
                        StringBuilder sb = new StringBuilder();
                        sb.AppendLine("实体的扩展数据信息:");
                        for (int i = 0; i < xData.Count; i += 2)
                        {
                            string key = xData[i].Value.ToString();
                            string value = xData[i + 1].Value.ToString();
                            sb.AppendLine($"键: {key}, 值: {value}");
                        }
                        MessageBox.Show(sb.ToString());
                    }
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Abort();
                    MessageBox.Show($"读取扩展数据时出错: {ex.Message}");
                }
            }
        }
    }
}

原始代码特点及逻辑:

 

将键值对先组织成字典,然后通过 Newtonsoft.Json 库序列化为JSON字符串。

 

在扩展数据(XData)中存储时,只有两个 TypedValue ,一个是应用程序名称( MyXDataApp ),另一个是包含所有键值对信息的JSON字符串。

 

读取时直接遍历整个 ResultBuffer 显示类型码和值,对于JSON数据需要进一步解析才能获取具体键值对内容。

 

修改后代码特点及逻辑:

 

没有使用JSON序列化,而是直接将每个键值对分别以 TypedValue 的形式添加到 ResultBuffer 中,每个键值对占用两个 TypedValue (一个键,一个值)。

 

存储扩展数据时,先添加应用程序名称的 TypedValue ,然后依次添加各个键值对的 TypedValue 。

 

读取时,通过循环以步长为2的方式遍历 ResultBuffer ,每次取出两个 TypedValue 分别作为键和值进行显示。

 

总结:

 

- 修改后的代码不依赖 Newtonsoft.Json 库,直接以简单的键值对形式存储和读取扩展数据,逻辑相对更直接,对于简单的键值对存储和读取场景比较清晰易懂。

 

- 原始代码使用JSON格式存储,可以方便地存储更复杂的数据结构(如嵌套的对象、数组等),但在读取时如果需要解析具体内容会相对复杂一些。

 

所以,修改后的代码在功能上是正确的,实现了将键值对存储到实体扩展数据并读取显示的功能,只是与原始代码在数据处理方式上有差异,具体使用哪种方式可以根据实际需求(如是否需要处理复杂数据结构、是否方便解析等)来决定。

 

以下是一个完整的C#示例代码,展示了如何在CAD C#开发中使用JSON来表示和处理扩展数据。为了简化示例,我将不包括与特定CAD API的交互部分,因为这部分会依赖于你所使用的CAD系统和API。不过,我会展示如何解析和生成JSON数据,并假设你已经有方法从CAD对象中获取和设置扩展数据。

 

using System;
using Newtonsoft.Json;

// 定义一个类来映射JSON数据的结构
public class ExtendedData
{
    public string Name { get; set; }
    public string Description { get; set; }
    public string Creator { get; set; }
    public DateTime CreatedDate { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // 示例JSON字符串
        string jsonString = "{\"name\":\"ExampleObject\",\"description\":\"This is an example object with extended data.\",\"creator\":\"John Doe\",\"createdDate\":\"2025-03-21T17:17:08\"}";

        // 解析JSON字符串为ExtendedData对象
        ExtendedData extendedData = JsonConvert.DeserializeObject<ExtendedData>(jsonString);

        // 输出解析后的数据
        Console.WriteLine("Parsed Extended Data:");
        Console.WriteLine($"Name: {extendedData.Name}");
        Console.WriteLine($"Description: {extendedData.Description}");
        Console.WriteLine($"Creator: {extendedData.Creator}");
        Console.WriteLine($"Created Date: {extendedData.CreatedDate}");

        // 假设这里有一个方法将ExtendedData对象转换为适合CAD API的格式并添加到CAD对象中
        // AddExtendedDataToCadObject(extendedData);

        // 假设从CAD对象中获取了扩展数据的字符串表示
        // 这里我们再次使用相同的jsonString作为示例
        string extendedDataJson = jsonString; // 实际上,这应该从CAD对象中获取

        // 解析从CAD对象中获取的JSON字符串为ExtendedData对象
        ExtendedData retrievedData = JsonConvert.DeserializeObject<ExtendedData>(extendedDataJson);

        // 输出再次解析后的数据
        Console.WriteLine("\nRetrieved Extended Data:");
        Console.WriteLine($"Name: {retrievedData.Name}");
        Console.WriteLine($"Description: {retrievedData.Description}");
        Console.WriteLine($"Creator: {retrievedData.Creator}");
        Console.WriteLine($"Created Date: {retrievedData.CreatedDate}");
    }

    // 假设这里有一个方法从CAD对象中获取扩展数据的字符串表示
    // static string GetExtendedDataFromCadObject()
    // {
    //     // 实现获取扩展数据的逻辑
    //     return "{\"name\":\"ExampleObject\",\"description\":\"This is an example object with extended data.\",\"creator\":\"John Doe\",\"createdDate\":\"2025-03-21T17:17:08\"}";
    // }
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot的jak安装与配置教程

目录 Windows系统 macOS系统 Linux系统 Windows系统 下载JDK&#xff1a; 访问Oracle官网或其他JDK提供商网站&#xff0c;下载适合Windows系统的JDK版本。网站地址&#xff1a;Oracle 甲骨文中国 | 云应用和云平台点击进入下滑&#xff0c;点击进入下载根据自己的系统选择&…

基于javaweb的SpringBoot时装购物系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

B站pwn教程笔记-5

复习和回顾 首先复习一下ELF文件在内存和磁盘中的不同。内存只关注读写这权限&#xff0c;会合并一些代码段。 动态链接库只在内存中单独装在一份 因为很多软件都要用动态链接库了&#xff0c;不可能一个个单独复制一份。但是在有的调试环境下会单独显示出来各一份。 ld.so是装…

云原生网络拓扑:服务网格的量子纠缠效应

引言&#xff1a;数据平面的虫洞跃迁 谷歌服务网格每日处理5万亿请求&#xff0c;Istio 1.20版本时延降低至0.8ms。蚂蚁集团Mesh架构节省42%CPU开销&#xff0c;AWS App Mesh实现100ms跨区故障切换。LinkedIn Envoy配置规则达1200万条&#xff0c;腾讯云API网关QPS突破900万。…

爬虫——playwright获取亚马逊数据

目录 playwright简介使用playwright初窥亚马逊安装playwright打开亚马逊页面 搞数据搜索修改bug数据获取翻页优化结构 简单保存 playwright简介 playwright是微软新出的一个测试工具&#xff0c;与selenium类似&#xff0c;不过与selenium比起来还是有其自身的优势的&#xff…

Matrix-Breakout-2-Morpheus靶场通关心得:技巧与经验分享

1.安装靶机&#xff0c;并在虚拟机打开&#xff0c;确保和kali在同一个NAT网段 2.使用kali来确定该靶机的IP nmap -O 192.168.139.1/24 3.访问该IP192.168.139.171 4.访问robots.txt 5.扫描目录 gobuster dir -u http://192.168.139.171 -x php,bak,txt,html -w /usr/share/d…

机器学习扫盲系列(2)- 深入浅出“反向传播”-1

系列文章目录 机器学习扫盲系列&#xff08;1&#xff09;- 序 机器学习扫盲系列&#xff08;2&#xff09;- 深入浅出“反向传播”-1 文章目录 前言一、神经网络的本质二、线性问题解析解的不可行性梯度下降与随机梯度下降链式法则 三、非线性问题激活函数 前言 反向传播(Ba…

(一)飞行器的姿态欧拉角, 欧拉旋转, 完全数学推导(基于坐标基的变换矩阵).(偏航角,俯仰角,横滚角)

(这篇写的全是基矢变换矩阵)不是坐标变换矩阵,坐标变换矩阵的话转置一下,之后会有推导. 是通过M转置变换到P撇点.

C语言和C++到底有什么关系?

C 读作“C 加加”&#xff0c;是“C Plus Plus”的简称。 顾名思义&#xff0c;C 就是在 C 语言的基础上增加了新特性&#xff0c;玩出了新花样&#xff0c;所以才说“Plus”&#xff0c;就像 Win11 和 Win10、iPhone 15 和 iPhone 15 Pro 的关系。 C 语言是 1972 年由美国贝…

PCB画图软件PROTEL99SE学习-05画出铜箔来

sch设计的是各个器件的电连接。设计的就是各种节点的网络表关系。不管你器件怎么摆放&#xff0c;好看不好看。都不重要。最终设计电路板是把网络表中连线的网络节点都用铜箔实物相连&#xff0c;让他们导电。 网表导出后我们不用去看他&#xff0c;也不用管他的格式。 我们打开…

helm部署metricbeat

背景 在Elastic Stack 7.5版本之前&#xff0c;系统默认采用内置服务进行监控数据采集&#xff08;称为内部收集机制&#xff09;&#xff0c;这种设计存在显著局限性&#xff1a; 当ES集群崩溃时自带的节点监控也会随之崩溃&#xff0c;直到集群恢复前&#xff0c;崩溃期间的…

【菜鸟飞】AI多模态:vsCode下python访问阿里云通义文生图API

目标 有很多多模态的AI工具&#xff0c;用的少就用在线图形化的&#xff0c;需要批量&#xff0c;就尝试代码生成&#xff0c;本文尝试代码调用多模态AI&#xff0c;阿里通义有免费额度&#xff0c;作为练手应该挺好&#xff0c;如果以后选其他的&#xff0c;技术也是相通的。…

从零实现本地文生图部署(Stable Diffusion)

1. 依赖安装 文件打包下载地址&#xff08;Stable Diffusion&#xff09; # git &#xff1a; 用于下载源码 https://git-scm.com/downloads/win # Python 作为基础编译环境 https://www.python.org/downloads/ # Nvidia 驱动&#xff0c;用于编译使用GPU显卡硬件 https://ww…

缓存监控治理在游戏业务的实践和探索

作者&#xff1a;来自 vivo 互联网服务器团队- Wang Zhi 通过对 Redis 和 Caffeine 的缓存监控快速发现和定位问题降低故障的影响面。 一、缓存监控的背景 游戏业务中存在大量的高频请求尤其是对热门游戏而言&#xff0c;而应对高并发场景缓存是一个常见且有效的手段。 游戏业…

WordPress漏洞

一&#xff0c;后台修改模板拿WebShell 1&#xff0c;安装好靶场后访问 2&#xff0c;在如图所示的位置选择一个php文件写入一句话木马&#xff0c;我们这里选择在404.php中写入 3&#xff0c;访问404.php 二&#xff0c;上传主题拿WebShell 1&#xff0c;找到如图所示的页面…

【Linux系列】实时监控磁盘空间:`watch -n 1 ‘df -h‘` 命令详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

腾讯云大模型知识引擎×DeepSeek:股票分析低代码应用实践

项目背景与发展历程 在金融科技快速发展的今天&#xff0c;股票分析作为投资决策的核心环节&#xff0c;正面临数据量激增和复杂性提升的挑战。传统股票分析依赖人工处理&#xff0c;效率低下且成本高昂&#xff0c;而人工智能&#xff08;AI&#xff09;的引入为这一领域带来…

高性能边缘计算网关-高算力web组态PLC网关

高性能EG8200Pro边缘计算算力网关-超强处理能力 样机申请测试&#xff1a;免费测试超30天&#xff08;https://www.iotrouter.com/prototype/&#xff09; 产品主要特点和特色功能 设备概览与连接能力 设备型号&#xff1a;EG8200P。主要特点&#xff1a; 支持多种工业协议&am…

Web开发-JS应用原生代码前端数据加密CryptoJS库jsencrypt库代码混淆

知识点&#xff1a; 1、安全开发-原生JS-数据加密&代码混淆 2、安全开发-原生JS-数据解密安全案例 一、演示案例-WEB开发-原生JS&第三方库-数据加密 前端技术JS实现&#xff1a; 1、非加密数据大致流程&#xff1a; 客户端发送->明文数据传输-服务端接受数据->…

【Dive Into Stable Diffusion v3.5】1:开源项目正式发布——深入探索SDv3.5模型全参/LoRA/RLHF训练

目录 1 引言2 项目简介3 快速上手3.1 下载代码3.2 环境配置3.3 项目结构3.4 下载模型与数据集3.5 运行指令3.6 核心参数说明3.6.1 通用参数3.6.2 优化器/学习率3.6.3 数据相关 4 结语 1 引言 在人工智能和机器学习领域&#xff0c;生成模型的应用越来越广泛。Stable Diffusion…