批量输出dwg文件中的文本
公司来了一批图纸,里面有一部分内容需要复制到excel中,几百张来图每一张都
手工复制,烦死了。编写一个CAD插件,自动导出文本,简单记录在下面。
想法是:
1.输入命令,选择所有dwg文件
2.挨个处理dwg文件,生成同名的txt文件保存文本
基本思路是用Database.ReadDwgFile 读取dwg文件,因为这样可以不用显示文档,可以提高速度;
[CommandMethod("GetText")]
public void GetTextCST()
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "dwg files (*.dwg)|*.dwg|All files (*.*)|*.*";
ofd.FilterIndex = 1;
ofd.RestoreDirectory = true;
ofd.Multiselect = true;
if(ofd.ShowDialog()== DialogResult.OK)
foreach (string fn in ofd.FileNames)
try
{
DoDwg2Csv(fn);
}
catch
{
File.AppendAllText("D:\\dwg2csv.txt", DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + fn + "\n");
}
}
private void DoDwg2Csv(string fn)
{
string csvname = fn + ".csv";
using (Database db = new Database(false, true))
{
db.ReadDwgFile(fn, FileOpenMode.OpenForReadAndAllShare, false, "");
db.CloseInput(true); using (Transaction tr = db.TransactionManager.StartTransaction())
{
// 模型空间
BlockTable blkTbl = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
BlockTableRecord modelSpace = tr.GetObject(
blkTbl[BlockTableRecord.ModelSpace],
OpenMode.ForRead)
as BlockTableRecord; // 遍历模型空间,提取文字
List<DBText> txts = new List<DBText>();
foreach (ObjectId oid in modelSpace)
{
DBObject dbobj = tr.GetObject(oid, OpenMode.ForRead);
if (dbobj is Entity)
{
Entity entity = dbobj as Entity;
string enttype = entity.GetRXClass().Name;
if (enttype == "AcDbText")
{
DBText acText = entity as DBText;
if (acText.Position.X < 587 || acText.Position.Y < 115)//指定范围
continue;
txts.Add( acText );
}
}//if (dbobj is Entity)
}//foreach (ObjectId oid in modelSpace) txts.Sort((t1, t2) => t1.Position.X >= t2.Position.X ? 1 : -1); for (int i = 0; i < txts.Count;i++)
File.AppendAllText(csvname, txts[i].TextString+"\r\n", Encoding.Default);
}//using
}//using
}
批量输出dwg文件中的文本的更多相关文章
- 【转】【整理】将Linux脚本中的正常输出,警告,错误等信息输出到文件中
本文来自:http://blog.csdn.net/woshinia/article/details/18040063 很早以前 编译的时候 就在用 2>&1,但是一直没有生成一 ...
- Linux命令行批量替换多文件中的字符串【转】
Linux命令行批量替换多文件中的字符串[转自百度文库] 一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串. ...
- 将Linux下编译的warning警告信息输出到文件中[整理笔记]
Linux中,脚本语言环境中,即你用make xxx即其他一些普通linux命令,比如ls,find等,不同的数字,代表不同的含义: 数字 含义 标准叫法0 标准输入 stdin = standar ...
- 【转载】 C#往文件中追加文本内容信息
在C#的文件相关操作中,往已有的文件中追加相关内容信息也是常有的操作,例如我们在写网站日志文件的时候,很多时候是1天的日志存放在一个txt文件中,此时就涉及到往原有文件中追加写入文本内容信息,追加文本 ...
- Java的实验程序之输出单个文件中的前 N 个最常出现的英语单词
日期:2018.10.11 星期四 博客期:016 题目:输出单个文件中的前 N 个最常出现的英语单词,并输出到文本文件中 在程序运行之前,我试着先写了字符的字母的总结,加载代码如下: //如下是第一 ...
- shell编程学习笔记(七):Shell中将指定内容输出到文件中
我们这里把echo要打印的内容输出到文件中 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script06.sh 开始编写script ...
- 将windows控制台内容输出到文件中
将windows控制台内容输出到文件中 dir>c:/file.txt 2>&1 对应的java class >c:/file.txt 2>&1 ...
- fprintf输出到文件中,sprintf输出到字符串中. 如: fprintf(fp,"%s",name); fp为文件指针 sprintf(buff,"%s",name); buff为字符数组
fprintf输出到文件中,sprintf输出到字符串中. 如: fprintf(fp,"%s",name); fp为文件指针 sprintf(buff,"%s" ...
- 怎样批量删除PDF文件中的注释
日常我们在阅读一些PDF文章时候,我们会发现有些PDF文章带有非常多的注释,显得非常不美观,影响了阅读体验.那么PDF文章里的批注应该怎么进行删除呢?怎样批量删除PDF文件中的注释? 操作教程: ...
随机推荐
- C高级第二次PTA作业
6-7 删除字符串中数字字符 1.设计思路: (1)算法: 第一步:定义一个字符数组item,输入一个字符串赋给字符数组item.调用函数delnum, 第二步:在函数delnum中定义循环变量i=0 ...
- [LeetCode&Python] Problem 896. Monotonic Array
An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ...
- golang channel 总结
1.未初始化的channel读,阻塞 package main import ( "fmt" "time" ) func main() { var ch cha ...
- day03用户交互、基本数据类型、运算符
用户交互 在实际应用中,我们经常需要用户输入相应信息,根据用户输入信息进行反馈,此时我们需要input/output信息 python中提供了便捷的输入方法input()和print() 在pytho ...
- java list 的遍历
import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.I ...
- lesson4-图像分类-小象cv
CNN网络进化:AlexNet->VGG->GoogleNet->ResNet,深度8->19->22->152GoogleNet:Lsplit->trans ...
- Java之从头开始编写简单课程信息管理系统
编写简单的课程管理系统对于新手并不友好,想要出色的完成并不容易以下是我的一些经验和方法 详情可参考以下链接: https://www.cnblogs.com/dream0-0/p/10090828.h ...
- java学习之动手实验
一, 1,JAVA的基本运行单位是类 2,类的成员:成员变量,构造方法,普通方法和内部类 3,成员变量种类:字符类型:char 布尔类型:boolean 数值类型:byte, ...
- 用户密码管理和 su 命令
1.passwd root 用户给自己改 密码,直接 输入 passwd 就可以了 若是给其它用户修改密码,就需要 passwd user_name 用户锁定和解锁 passwd -l user_ ...
- JavaSE笔记
this关键字 哪个对象调用方法,方法定义中的this即为该对象的引用! static关键字 使用static声名的成员变量为静态成员变量,在第一次使用的时候被初始化,static成员变量只有一份 使 ...