zoukankan      html  css  js  c++  java
  • cad.net GeometricExtents出错了 调试看不到文字

     飞诗:
    难道块不能取GeometricExtents
     
    GeometryExtentsBestFit 用这个解决 
     
    GeometryExtentsBestFit 对动态块也不准
     
    com方式也出错; 错误: Automation 错误。 范围无效 
     
     
    福萝卜:
     进到块里面去,一个一个获取范围 
     块里面如果有不能显示的对象,比如缺字体,也会获取不到
     
    其实是飞诗的cad调试时候无法看到字体,所以要用以下的链接:
      
    下面是机器翻译:
    使用Visual Studio 2013调试AutoCAD
    
    有很多理由希望使用最新发布的Visual Studio 2013来开发和调试用于AutoCAD的.NET模块。其中一个主要的是期待已久的对64位应用程序的“编辑并继续”支持的添加。
    不幸的是,在本文中,我们将看到为什么在AutoCAD中调试64位.NET模块时,尽管等待,E
    &C还是不能工作。 从VS2013调试器运行AutoCAD时的主要问题表现为字体加载问题。如果从vs2013启动autocad以调试64位类库(即使没有实际加载模块),
    则当运行诸如style(尝试在对话框中显示字体信息)等命令时,autocad将崩溃。这对于我测试过的所有版本的AutoCAD都是正确的;可以追溯到AutoCAD
    2013,但对于之前的版本,这可能也是正确的。 感谢Samir Bittar让我注意到这个问题。这个问题似乎也在论坛上进行了详细讨论。在AutoCAD工程团队中,
    我们上海办事处的工程师丁亚瑟(Arthur Ding)对这个问题进行了非常深入的研究。
    在调试.NET模块时,Arthur发现了VS2013与VS2012的工作方式不同,并使在AutoCAD中所做的核心假设失效。 当VS2013启动AutoCAD(至少通过启用“编辑并继续”的调试代码路径)时,会创建一个附加线程,用于在退出前将基本模块(如acdb
    *.dll)加载到进程中。
    对于VS2012,情况并非如此:它是AutoCAD的主线程加载基本模块,就像在调试器外部运行时一样。
    我们的ACDB模块自然希望由AutoCAD的主线程加载,因此缓存加载线程的ID以供以后使用。 当前遇到的主要问题是访问某些字体时:加载这些字体失败,因为加载尝试是从ACDB不识别为主线程的线程进行的(为了安全起见,这是ACDB不允许的–它不是线程安全的,因此阻止了从ARbit访问数据库操作线程)。
    然后访问字体时(例如,在样式对话框或多行文字编辑器中),这会导致(最多)错误或(最多)崩溃。 好消息是,使用VS2013有两种简单的方法可以避免此问题,这两种方法都可以防止AutoCAD崩溃(无论如何,由于这个特定的问题)。 通过工具–
    >选项–>调试打开“使用托管兼容性模式”。 从项目–>属性–>调试中打开“启用本机代码调试”。
    后者会带来性能损失,因为它显然需要更多的工作来关注autocad中的非托管代码和底层操作系统(其中相当一部分)。
    坏消息是这两个选项都禁用了64位应用程序的“编辑并继续”。因此,虽然可以利用VS2013使用上述方法之一调试64位.NET模块,但在这样做时,您将无法使用VS2013最期待的新功能之一。 [似乎在使用VS2013调试REVIT时也存在问题。有关更多信息,请参阅杰里米博客上的这篇文章。]
  • 相关阅读:
    SSIS Error:Package Validation Error. SSIS Error Code DTS_E_OLEDBERROR. .Error code: 0x80040E37. An OLE DB record is available. Hresult: 0x80040E37
    MDS
    oracle11g rac静默安装+racADG部署搭建
    oracle 19c 单机ADG部署
    对索引组织表以及簇表的一些理解
    对表的连接的总结
    全局临时表
    对分区表的一些总结
    对临时表空间的一些常用查询
    linux 常用命令总结
  • 原文地址:https://www.cnblogs.com/JJBox/p/10794686.html
Copyright © 2011-2022 走看看