乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 50|回复: 0

枚举 AcSmSheet 列表时的 CTD

[复制链接]

2

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
10
发表于 2021-1-13 10:40:42 | 显示全部楼层 |阅读模式
大家好。正如主题所述,我在枚举已构建的AcSmSheet列表时遇到了崩溃到桌面(AutoCad)的情况。通过CTD,我的意思是它甚至跳过了致命错误对话框。我试图理解这种行为,因为它对我来说很奇怪,几个月来我一直试图确定问题的根源,但无济于事。如果我的解释很长,我很抱歉,但我希望更多的信息能帮助我们解决问题。
我有一个表单,允许用户选择所需的图纸集文件并管理要在图纸上运行的任务。它循环访问并收集 AcSmSheets、IAcSmSheets2,并提取文件路径、修订数据、文件名、布局名称,并将它们全部存储在自己的列表中。我可以在表单中枚举AcSmSheets列表,并使用
  1. foreach (AcSmSheet sh in SheetSet.smSheets)
  2. {
  3.      string path = sh.GetLayout().GetFileName();
  4.      if (!string.IsNullOrEmpty(path))
  5.      {
  6.           label1.Text += path + "\n";
  7.           checkedListBox1.Items.Add((object)path, true);
  8.           //OpenDoc(path); //alternatively, run these methods
  9.           //Task(mode);
  10.           //CloseDoc(path);
  11.      }
  12. }

列出所有文件路径,这按预期工作,并且它正确返回文件路径。伟大。现在我被引导(错误地)相信我的代码应该正常工作。
在另一个类中,我想获取相同的数据并对其进行迭代,从文件路径中打开每个dwg以运行某些任务并保存并关闭。
我将在窗体之外使用相同的代码,并且它不起作用。它将进入 foreach 循环,获取第一个路径,打开,执行任务,保存并关闭,移动到下一个枚举,并在“字符串路径 = sh.GetLayout().GetFileName();“ 行.在一个实例中,它正确地获取所有文件路径。在另一个实例中,它只得到第一个。
我的理解是,当autocad尝试评估空值时,它将进行CTD。我想知道在第一个.dwg打开后,数据是否被丢弃了,但事实并非如此。我正在使用CommandFlags.Session,并且已经找到了一种使代码工作的替代方法,但它并不理想。如果我使用相同的代码,但使用
  1. foreach (string path in SheetSet.pathList)
  2. {...}

,它的工作原理,但这只允许我枚举路径,当我想处理的不仅仅是路径(修订数据,布局信息)时。
因此,在打开文档时不会清除数据。是什么让 AcSmSheet 变为 null(如果是的话)?
提前感谢任何回复。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 00:04 , Processed in 0.150037 second(s), 54 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表