我有一批图纸,很多张,里面字体样式要求改成另一种统一的大字体。
能否采用.net编程写个程序,将这些图纸选择后,在不启动运行AutoCAD的情况下将这些图纸批量修改所有的字体为特定的新字体样式?
如果不能后台修改的话,能做到逐一打开再修改字体样式也行。
我刚开始试着用.net做这些,还没理出好的头绪,麻烦给我点帮助好吗?
网友答: 2种方式都能
网友答: 后台打开文档:
Database db = new Database(false, true);
db.ReadDwgFile(dwgFilePath, System.IO.FileShare.ReadWrite, true, "");网友答: 楼上正解,LZ可以看看kean2005年左右的blog有一篇叫做部分打开cad的database网友答: 楼主,后面解决了吗,我遇到了和你一样的问题,求指点。网友答:
以下內容轉自驚驚博客,他博客內容太多了,有點難翻出具體在哪一篇博客里,你自己去翻翻找找哦!
// 後臺處理文件的代碼的邏輯大致如下

网友答: 替換文字的碼去這個鏈接里扒下來
http://www.mjtd.com/forum.php?mo ... 3D1&page=1&
GOOD Luck!
能否采用.net编程写个程序,将这些图纸选择后,在不启动运行AutoCAD的情况下将这些图纸批量修改所有的字体为特定的新字体样式?
如果不能后台修改的话,能做到逐一打开再修改字体样式也行。
我刚开始试着用.net做这些,还没理出好的头绪,麻烦给我点帮助好吗?
网友答: 2种方式都能
网友答: 后台打开文档:
Database db = new Database(false, true);
db.ReadDwgFile(dwgFilePath, System.IO.FileShare.ReadWrite, true, "");网友答: 楼上正解,LZ可以看看kean2005年左右的blog有一篇叫做部分打开cad的database网友答: 楼主,后面解决了吗,我遇到了和你一样的问题,求指点。网友答:
以下內容轉自驚驚博客,他博客內容太多了,有點難翻出具體在哪一篇博客里,你自己去翻翻找找哦!
// 後臺處理文件的代碼的邏輯大致如下

- using Database sdb =
- HostApplicationServices.WorkingDatabase
- ?? throw new ArgumentNullException($"必须要存在一个前台文档!");
- try
- {
- using var db = new Database(false, true);
- db.ReadDwgFile(fileFullPath, FileShare.Read, false, "");
- db.CloseInput(true);
- HostApplicationServices.WorkingDatabase = db;
- // 開始你的內務處理邏輯,example 批量修改文字樣式中的文字字體!
- using DBTrans tr = new(db);
- // 依次执行所有委托
- foreach (var act in actions)
- act(printLines);
- // 一旦用了布局管理器切换布局,始终在提交事务时候出错
- // AutoCAD错误中断
- // 致命错误: Unhandled Access Violation Reading 0x0010 Exception at CFASC28h
- // 怀疑是全局变量不能保留后台的引用
- // 我是想象成当它保存关闭后,全局变量此时显示一个已经不存在的引用了
- // 但是为什么是事务提交时候检查,而不是保存时候检查呢?我并不知道
- // 所以顶替回来居然好了...真是邪门玩意
- // 这样还说明了必须要存在一个前台文档,否则切换不回来。(可以set null吗)
- HostApplicationServices.WorkingDatabase = sdb;
- db.SaveAs(fileFullPath, true, DwgVersion.Current, db.SecurityParameters);
- }
- catch (Exception ex)
- {
- throw new ArgumentException($"发生错误文件:{fileFullPath}\n错误类型:{ex.Message}");
- }
- finally
- {
- HostApplicationServices.WorkingDatabase = sdb;
- }
网友答: 替換文字的碼去這個鏈接里扒下來
http://www.mjtd.com/forum.php?mo ... 3D1&page=1&
GOOD Luck!