c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格
c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Colors;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _15表格操作
{
public class Class1
{
public struct BlockData
{
public string blockName;
public string layerName;
public string X;
public string Y;
public string Z;
public string ZS;
public string XS;
}
[CommandMethod(“TableDemo”)]
public void TableDemo()
{
Database db = HostApplicationServices.WorkingDatabase;
Table table = new Table();
table.SetSize(10, 5);
table.SetRowHeight(10);
table.SetColumnWidth(50);
table.Columns[0].Width = 20;
table.Position = new Point3d(100, 100, 0);
//table.SetTextString(0, 0, “材料统计表”);早前版本的设置方法
table.Cells[0, 0].TextString = “材料统计表”;
table.Cells[0, 0].TextHeight = 6;
Color color = Color.FromColorIndex(ColorMethod.ByAci,3);
table.Cells[0, 0].BackgroundColor = color;
color = Color.FromColorIndex(ColorMethod.ByAci, 1);
table.Cells[0, 0].ContentColor = color;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
btr.AppendEntity(table);
trans.AddNewlyCreatedDBObject(table, true);
trans.Commit();
}
}
[CommandMethod(“DataToTableDemo”)]
public void DataToTableDemo()
{
Database db = HostApplicationServices.WorkingDatabase;
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
TypedValue[] values = new TypedValue[]
{
new TypedValue((int)DxfCode.Start,“INSERT”),
new TypedValue((int)DxfCode.LayerName,“ssd”)
};
SelectionFilter filter = new SelectionFilter(values);
PromptSelectionResult psr = ed.GetSelection(filter);
if (psr.Status == PromptStatus.OK)
{
ObjectId[] ids = psr.Value.GetObjectIds();
PromptPointResult ppr = ed.GetPoint(“选择表格的插入点:”);
if (ppr.Status == PromptStatus.OK)
{
Point3d point = ppr.Value;
BlockData[] data = this.GetBlockRefData(db, ids);
this.SetDataToTable(db, data, point);
}
}
}
///
/// 将数据以表格的形式插入图形
///
///
///
///
private void SetDataToTable(Database db, BlockData[] data, Point3d position)
{
using (Transaction trans = db.TransactionManager.StartTransaction())
{
//Table table = new Table();
TableExt table = new TableExt(data.Length, 7,position,data,“块数据统计表”);
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
btr.AppendEntity(table);
trans.AddNewlyCreatedDBObject(table, true);
trans.Commit();
}
}
///
/// 获取块参照的信息
///
///
///
///
private BlockData[] GetBlockRefData(Database db, ObjectId[] ids)
{
BlockData[] data = new BlockData[ids.Length];
using (Transaction trasn = db.TransactionManager.StartTransaction())
{
for (int i = 0; i < ids.Length; i++)
{
// 块名 图层 X Y Z ZS XS
BlockReference br = (BlockReference)ids[i].GetObject(OpenMode.ForRead);
data[i].blockName = br.Name;
data[i].layerName = br.Layer;
data[i].X = br.Position.X.ToString();
data[i].Y = br.Position.Y.ToString();
data[i].Z = br.Position.Z.ToString();
foreach (ObjectId item in br.AttributeCollection)
{
AttributeReference attRef = (AttributeReference)item.GetObject(OpenMode.ForRead);
if (attRef.Tag.ToString() == “ZS”)
{
data[i].ZS = attRef.TextString;
}
else if (attRef.Tag.ToString() == “XS”)
{
data[i].XS = attRef.TextString;
}
}
}
}
return data;
}
}
}
相关文章:
c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格
c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.Colors; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Geometry; using A…...
单点登录的两种实现方式,分别有啥优缺点?
单点登录(Single Sign-On,简称SSO)是指在多个应用系统中,用户只需要登录一次,就可以访问所有已授权的系统资源的一种身份认证技术。SSO可以提升用户体验,减少用户密码管理工作量,并加强安全管理…...
opencv_c++学习(二十七)
一、单目相机模型 上图为针孔相机成像原理,蓝色坐标中的O即为镜头光心。成像原理与小孔成像相同。 单目相机映射关系如下: 将上式进行变换,就可以从三位空间映射到2维平面的公式。 相机的畸变公式如下: 二、模型投影函数 vo…...
探查chatGPT插件:Outschool,resume,webhooks
引言 在我们的日常工作和学习中,插件扮演着重要的角色。它们可以帮助我们提高效率,简化复杂的任务。在这篇文章中,我将介绍三个非常有用的插件:Outschool,resume,和webhooks,并通过具体的例子来…...
【学习笔记】Unity基础(七)【uGUI基础、利用render Texture实现小地图功能】
目录 一 Canvas1.1 三种Render Space渲染空间 screen1.2 canvas scaler画布缩放器1.3sprite1.4 sprite packer1.5 unity目录1.6 RuleTile Tilemap1.7 sprite packer1.8 sorting layer 二 rect transform2.1 pivot 中轴 中心点2.2 anchor 锚点2.3 uGUI源代码 三 EventSystem3.1 …...
yolov5配置错误记录
这里是直接没有找到数据集,说明是路径错误。经过设置yaml后, # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] path: ../autodl-tmp/datasets/neu # dataset root dir tr…...
全平台数据 (数据库) 管理工具 DataCap 1.10.0 发布
当前版本涉及几个主要更新。 DataCap 已发布 发布版本发布时间1.10.02023-05-30 General 修复服务启动默认连接 mongo修复了 sql 模板的 h2 db update_time 和 create_time改进 H2 元数据管理获取类型改进 mysql 元数据管理获取类型固定元数据管理数据页默认为 1重构数据渲染…...
使用Mybatis接口开发
文章目录 目录 前言 公司项目用到了mybatis开发接口,虽然很简单,但是mybatis不是特别熟悉,这里学习一下 一、Mybatis接口绑定的两种方式 1.接口绑定实现方式 就是在接口的方法上加上Select,updateInsertDelete等注解 select注解介绍: 简便,能快速去操作sql,它只需要在mapper…...
数据采集技术的实现原理有哪些?
数据采集技术是指通过各种手段和技术手段,从互联网、移动设备、传感器等各种数据源中获取数据,并将其存储、处理和分析,以便为业务决策和应用提供支持。本文将介绍数据采集技术的实现原理,包括数据采集的基本流程、数据采集技术的…...
2023年数学建模随机森林:基于多个决策树的集成学习方法
2023年9月数学建模国赛期间提供ABCDE题思路加Matlab代码,专栏链接(赛前一个月恢复源码199,欢迎大家订阅):http://t.csdn.cn/Um9Zd 目录 目录 1. 什么是随机森林? 2. 随机森林的优缺点 3. 随机森林的构建过程...
OpenAI发布最新研究让大模型数学推理直接达到SOTA
🦉 AI新闻 🚀 OpenAI发布最新研究:基于过程奖励的监督方法,让大模型数学推理直接达到SOTA 摘要:OpenAI最新研究基于GPT-4微调,采用过程监督和结果监督两种监督方法,奖励每个正确推理步骤的过程…...
快速检测 GlassFish 任意文件读取漏洞的 Python 脚本
部分数据来源:ChatGPT 引言 当下,互联网安全问题正愈发严重,黑客利用各种漏洞进行攻击的频率也在持续增加。在2015年10月,一位名为“路人甲”的安全研究员在乌云上公开了一个名为“应用服务器glassfish存在通用任意文件读取漏洞”的漏洞(编号:wooyun-2010-0144595),该…...
Docker镜像更新通知器DIUN
什么是 DIUN ? Docker Image Update Notifier 是一个用 Go 编写的 CLI 应用程序,可作为单个可执行文件和 Docker 映像交付,用于当 Docker 映像在 Docker registry中更新时接收通知。 和老苏之前介绍过的 watchtower 不同,DIUN 只是通知&…...
插件框架PF4J-从理论到实践
PF4J:Plugin Framework for Java 目录 是什么? 不是什么? 特点 组件 主要类 流程概述 spring-pf4j 思考 功能模块化 我对pf4j的封装和使用demo GitHub - chlInGithub/pf4jDemo: pf4j demo 是什么? 开源轻量级的插件框架。通过插件…...
怎么将pdf文件免费转为扫描件
推荐两个工具,也算是给自己记一下 1、手机:扫描全能王APP 太好使了,可以直接拍照并转换为扫描件 不开会员的话会出现水印,因为我都是自己用或者交作业就没开 支持读取相册,一次一张、多张都可以 如果不想要水印也…...
vue+nodejs校园二手物品交易市场网站_xa1i4
。为满足如今日益复杂的管理需求,各类管理系统程序也在不断改进。本课题所设计的校园二手交易市场,使用vue框架,Mysql数据库、nodejs语言进行开发,它的优点代码不能从浏览器查看,保密性非常好,比其他的管理…...
Barra模型因子的构建及应用系列六之Book-to-Price因子
一、摘要 在前期的Barra模型系列文章中,我们构建了Size因子、Beta因子、Momentum因子、Residual Volatility因子和NonLinear Size因子,并分别创建了对应的单因子策略,其中Size因子和NonLinear Siz因子具有很强的收益能力。本节文章将在该系列…...
【c语言习题】使用链表解决约瑟夫问题
创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 🔥c语言系列专栏:c语言之路重点知识整合 &#x…...
JVM之类的初始化与类加载机制
类的初始化 clinit 初始化阶段就是执行类构造器方法clinit的过程。此方法不需定义,是javac编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并而来。构造器方法中指令按语句在源文件中出现的顺序执行。clinit不同于类的构造器。(关联:…...
面试专题:java 多线程(1)----synchronized关键字相关问答
在java 多线程 面试中最多问题1.悲观锁和乐观锁;2.synchronized和lock的区别;3.可重入锁和非可重入锁的区别;4.多线程是解决什么问题的;5.线程池解决什么问题的;6.线程池原理;7.线程池使用注意事项…...
内网服务器福音:手把手教你搞定Supervisor 4.0.4离线安装(附CentOS 7.6 + Python 2.7.5环境避坑指南)
内网环境下的Supervisor 4.0.4离线部署全攻略:从依赖解析到避坑实践 在金融、政务等安全敏感领域,生产服务器往往部署在严格隔离的内网环境中。这种架构虽然保障了系统安全性,却给运维工具链的部署带来了独特挑战——无法直接通过pip install…...
简单掌握C++中的函数模板
1.函数模板的声明和模板函数的生成 1.1函数模板的声明 函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计。它的最大特点是把函数使用的数据类型作为参数。 函数模板的声明形式为: template<typenam…...
技术债的“利息”怎么算?一个让非技术领导也能理解的比喻
一、从“信用卡账单”到“技术债利息”:一个通俗的起点软件测试从业者对“技术债”这个词绝不陌生,每次面对历史代码里的“隐秘角落”,看着新功能开发时层出不穷的连锁Bug,我们都能直观感受到技术债带来的拖累。但要向非技术领导解…...
12个优质播客音乐素材网站,解决你缺BGM的烦恼
根据《2026年中国音频内容创作行业发展白皮书》数据显示,国内活跃播客创作者数量同比增长47%,超过62%的创作者表示,找到合适又合规的播客背景音乐是日常创作的核心痛点之一。很多新人创作者要么找不到风格匹配的素材,要么担心版权…...
通过 API 实时监听企业微信外部群变更事件并同步本地数据库
能力介绍 在企业微信外部群的协同管理中,群聊的名称修改、群主变更、新成员加入或老成员退群等状态变更,往往无法仅靠主动拉取来感知。该能力通过配置接收事件服务器(Callback),利用标准的 HTTP POST 请求实时接收企微…...
如何快速掌握《鸣潮》游戏模组开发:专业逆向工程与AES加密技术完整指南
如何快速掌握《鸣潮》游戏模组开发:专业逆向工程与AES加密技术完整指南 【免费下载链接】wuwa-mod Wuthering Waves pak mods 项目地址: https://gitcode.com/GitHub_Trending/wu/wuwa-mod WuWa-Mod是一个专门为热门游戏《鸣潮》(Wuthering Waves…...
如何在Mayo中使用剪辑平面和爆炸视图:复杂装配体分析利器
如何在Mayo中使用剪辑平面和爆炸视图:复杂装配体分析利器 【免费下载链接】mayo 3D CAD viewer and converter based on Qt OpenCascade 项目地址: https://gitcode.com/gh_mirrors/ma/mayo Mayo是一款功能强大的开源3D CAD查看器和转换器,基于Q…...
Android NDK/JNI开发深度指南:从基础到实战
引言 在移动应用开发领域,Android平台以其开放性和灵活性著称。然而,当应用需要处理高性能计算、图像处理、游戏引擎或重用现有C/C++库时,纯Java实现可能面临性能瓶颈。这时,Native Development Kit(NDK)和Java Native Interface(JNI)成为关键工具。NDK允许开发者使用…...
vue3+python基于Django的羽毛球场地预约服务管理系统设计与实现869373194
目录同行可拿货,招校园代理 ,本人源头供货商项目概述技术栈核心功能模块系统设计要点扩展功能部署方案项目技术支持源码获取详细视频演示 :同行可合作点击我获取源码->->进我个人主页-->获取博主联系方式同行可拿货,招校园代理 ,本人源头供货商 项目概述 …...
避开DSP28335内存管理的坑:堆、栈、CMD文件配置全解析与最佳实践
DSP28335内存管理深度优化:从堆栈原理到CMD文件实战配置 在嵌入式系统开发中,内存管理往往是决定项目成败的关键因素之一。对于基于TI C2000系列DSP28335的开发者而言,合理规划有限的内存资源不仅能提升系统性能,更能避免那些难以…...
