AutoCad 二次开发 .net 之相同块的自动编号







using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Geometry; namespace MulitySortNum
{
public class SortNum
{
private Document doc = Application.DocumentManager.MdiActiveDocument;
private Database db = Application.DocumentManager.MdiActiveDocument.Database;
private Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; private string str = "LL";
public int index = ; [CommandMethod("NumSort1")]
public void NumSort1()
{
index = ; var propEnt = new PromptEntityOptions("请选择要编号的一个块\n"); var propRes = ed.GetEntity(propEnt); if (propRes.Status != PromptStatus.OK)
{
return;
} var oId = propRes.ObjectId; ObjectIdCollection objIds = null;
List<DBText> listDBText = new List<DBText>(); using (Transaction trans = db.TransactionManager.StartTransaction())
{
var blkRef = trans.GetObject(oId, OpenMode.ForRead) as BlockReference; if (blkRef == null)
{
Application.ShowAlertDialog("请选择块定义");
return;
} var recId = blkRef.BlockTableRecord; var blkTblRec = trans.GetObject(recId, OpenMode.ForRead) as BlockTableRecord; objIds = blkTblRec.GetBlockReferenceIds(true, false); var txtStlTbl = trans.GetObject(db.TextStyleTableId, OpenMode.ForRead) as TextStyleTable; var txtstyleId = txtStlTbl["Standard"]; List<BlockReference> listBr = new List<BlockReference>(); foreach (ObjectId objectId in objIds)
{
var blkTempRef = trans.GetObject(objectId, OpenMode.ForRead) as BlockReference; listBr.Add(blkTempRef); } listBr.OrderByDescending(b => b.Position.Y).ToList().ForEach(blkTempRef =>
{ DBText dbText = new DBText();
dbText.TextString = str + "_" + index++;
dbText.TextStyleId = txtstyleId; var pointMin = blkTempRef.Bounds.Value.MinPoint;
var pointMax = blkTempRef.Bounds.Value.MaxPoint;
dbText.HorizontalMode = TextHorizontalMode.TextMid;
dbText.AlignmentPoint = pointMin + Vector3d.YAxis * + Vector3d.XAxis * Math.Abs(pointMax.X - pointMin.X) / ; listDBText.Add(dbText); }); trans.Commit();
} listDBText.ToSpace(); }
}
}
AutoCad 二次开发 .net 之相同块的自动编号的更多相关文章
- AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层
AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层 AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层我理解的图层的作用大概是把 ...
- AutoCad 二次开发 文字镜像
AutoCad 二次开发 文字镜像 参考:https://adndevblog.typepad.com/autocad/2013/10/mirroring-a-dbtext-entity.html 在 ...
- AutoCAD二次开发——AutoCAD.NET API开发环境搭建
AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(CO ...
- 1,下载和部署开发环境--AutoCAD二次开发
环境需求为: AutoCAD 2020版 ObjectARX SDK 下载地址:https://www.autodesk.com/developer-network/platform-technolo ...
- AutoCad 二次开发 jig操作之标注跟随线移动
AutoCad 二次开发 jig操作之标注跟随线移动 在autocad当中,我认为的jig操作的意思就是即时绘图的意思,它能够实时的显示出当前的操作,以便我们直观的感受到当前的绘图操作是什么样子会有什 ...
- AutoCAD二次开发-使用ObjectARX向导创建应用程序(HelloWorld例子)
AutoCAD2007+vs2005 首先自己去网上搜索下载AutoCAD2007的ARX开发包. 解压后如下 打开后如下 classmap文件夹为C++类和.net类的框架图,是一个DWG文件. d ...
- 我的AutoCAD二次开发之路 (一)
原帖地址 http://379910987.blog.163.com/blog/static/33523797201011184552167/ 今天在改代码的时候,遇到了AddVertexAt方法的用 ...
- Autocad中使用命令来调用python对Autocad二次开发打包后的exe程序
在Autocad中直接调用Python二次开发程序是有必要的,下面介绍一种方法来实现这个功能: 其基本思路是:先将二次开发的程序打包为可执行程序exe,然后编写lsp文件,该文件写入调用exe程序的语 ...
- 承接 AutoCAD 二次开发 项目
本人有多年的CAD开发经验,独立完成多个CAD二次开发项目.熟悉.net及Asp.net开发技术,和Lisp开发技术. 现在成立了工作室,独立承接CAD二次开发项目.结项后提供源码及开发文档,有需要的 ...
随机推荐
- for循环用腻了,试试列表生成式。
在编写程序或者查看别人的程序时,经常会遇到列表生成式,这个使用起来并不复杂,但是非常有用,使我们的代码更加简洁灵活.很多python使用者并不太会使用它.今天,就给大家详细讲解列表生成式和生成器表达式 ...
- FFmpeg(七)音频的播放
一.Open SL ES播放声音流程 简单说明 Open SL ES是android内部的接口,本身可以解码音频,但是我们用FFmpeg,,也可以来录音 . SL引擎:上下文 混音器:两路声音的混合 ...
- 死磕 java线程系列之线程池深入解析——体系结构
(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本. 简介 Java的线程池是块硬骨头,对线程池的源码做深入研究不仅能提高对Java整个并发编程的理解,也能提高自己 ...
- 可能是国内第一篇全面解读 Java 现状及趋势的文章
作者 | 张晓楠 Dragonwell JDK 最新版本 8.1.1-GA 发布,包括全新特性和更新! 导读:InfoQ 发布<2019 中国 Java 发展趋势报告>,反映 Java 在 ...
- HDU 1428漫步校园
漫步校园 Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于长时间坐在电脑边,缺乏运动.他决定充分利用每次从寝室到机房的时间,在校园里散散步.整个HDU校 ...
- 第3章(2) Linux下C编程风格
Linux内核编码风格在内核源代码的Documentation/CodingStyle目录下(新版本内核在Documentation/process/coding-style.rst). 变量命名采用 ...
- 详解AJAX工作原理以及实例讲解(通俗易懂)
什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味 ...
- TensorFlow2.0(9):TensorBoard可视化
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- 还在重复写空指针检查代码?考虑使用 Optional 吧!
一.前言 如果要给 Java 所有异常弄个榜单,我会选择将 NullPointerException 放在榜首.这个异常潜伏在代码中,就像个遥控炸弹,不知道什么时候这个按钮会被突然按下(传入 null ...
- 从C++到C++/CLI
本文转载于:https://www.cnblogs.com/feisky/archive/2009/11/22/1607999.html 刘未鹏(pongba) /文 看起来只是在C++后面多写了一个 ...