明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2891|回复: 6

如果批量选择多张图纸,不打开图纸后台修改字体样式

[复制链接]
发表于 2011-9-23 15:41:19 | 显示全部楼层 |阅读模式
我有一批图纸,很多张,里面字体样式要求改成另一种统一的大字体。
能否采用.net编程写个程序,将这些图纸选择后,在不启动运行AutoCAD的情况下将这些图纸批量修改所有的字体为特定的新字体样式?
如果不能后台修改的话,能做到逐一打开再修改字体样式也行。
我刚开始试着用.net做这些,还没理出好的头绪,麻烦给我点帮助好吗?


发表于 2011-9-23 19:22:53 | 显示全部楼层
2种方式都能
发表于 2011-9-23 21:03:29 | 显示全部楼层
后台打开文档:
Database db = new Database(false, true);
db.ReadDwgFile(dwgFilePath, System.IO.FileShare.ReadWrite, true, "");
发表于 2011-9-26 20:02:48 | 显示全部楼层
楼上正解,LZ可以看看kean2005年左右的blog有一篇叫做部分打开cad的database
发表于 2025-11-12 16:11:55 | 显示全部楼层
楼主,后面解决了吗,我遇到了和你一样的问题,求指点。
回复 支持 反对

使用道具 举报

发表于 2025-11-15 03:34:50 | 显示全部楼层

以下內容轉自驚驚博客,他博客內容太多了,有點難翻出具體在哪一篇博客里,你自己去翻翻找找哦!

// 後臺處理文件的代碼的邏輯大致如下
  1.   using Database sdb =
  2.                     HostApplicationServices.WorkingDatabase
  3.                     ?? throw new ArgumentNullException($"必须要存在一个前台文档!");

  4.                 try
  5.                 {
  6.                     using var db = new Database(false, true);
  7.                     db.ReadDwgFile(fileFullPath, FileShare.Read, false, "");
  8.                     db.CloseInput(true);
  9.                     HostApplicationServices.WorkingDatabase = db;

  10.                     // 開始你的內務處理邏輯,example 批量修改文字樣式中的文字字體!
  11.                     using DBTrans tr = new(db);
  12.                     // 依次执行所有委托
  13.                     foreach (var act in actions)
  14.                         act(printLines);

  15.                     // 一旦用了布局管理器切换布局,始终在提交事务时候出错
  16.                     // AutoCAD错误中断
  17.                     // 致命错误: Unhandled Access Violation Reading 0x0010 Exception at CFASC28h
  18.                     // 怀疑是全局变量不能保留后台的引用
  19.                     // 我是想象成当它保存关闭后,全局变量此时显示一个已经不存在的引用了
  20.                     // 但是为什么是事务提交时候检查,而不是保存时候检查呢?我并不知道
  21.                     // 所以顶替回来居然好了...真是邪门玩意
  22.                     // 这样还说明了必须要存在一个前台文档,否则切换不回来。(可以set null吗)
  23.                     HostApplicationServices.WorkingDatabase = sdb;
  24.                     db.SaveAs(fileFullPath, true, DwgVersion.Current, db.SecurityParameters);
  25.                 }
  26.                 catch (Exception ex)
  27.                 {
  28.                     throw new ArgumentException($"发生错误文件:{fileFullPath}\n错误类型:{ex.Message}");
  29.                 }
  30.                 finally
  31.                 {
  32.                     HostApplicationServices.WorkingDatabase = sdb;
  33.                 }

回复 支持 反对

使用道具 举报

发表于 2025-11-15 03:41:30 | 显示全部楼层
替換文字的碼去這個鏈接里扒下來

http://www.mjtd.com/forum.php?mo ... 3D1&page=1&

GOOD Luck!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-12-6 07:31 , Processed in 0.153418 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表