乐筑天下

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

除了readdwgfile还有没有其他办法读取指定路径文档内容

[复制链接]

156

主题

506

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1130
发表于 2018-12-17 21:22:00 | 显示全部楼层 |阅读模式
try
                    {
                        db.ReadDwgFile(lj + "\\模板\\宗地图.dwg", FileShare.ReadWrite, true, null);
                    }
                    catch (System.Exception ex)
                    {
                        Application.ShowAlertDialog(ex.Message);
                        return;
                    }
总是出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的致命错误,确定lj + "\\模板\\宗地图.dwg"这个文件是存在的。估计是cad2006的bug。决定放弃readdwgfile这种方法,但还有没有其他替代方法呢?比如com啊,dbx啊,或者引用arx函数之类的,研究了好长时间都搞不定,希望高手们帮帮忙啊!
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2018-12-18 09:04:00 | 显示全部楼层
为什么还要用AutoCAD 2006版呀?那时的objectARX.Net刚出来,功能少问题多;
你打开文件是要干什么呀?
一定要用AutoCAD 2006的话建议用COM方式吧;也可以用C#编码;
回复

使用道具 举报

156

主题

506

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1130
发表于 2018-12-18 09:29:00 | 显示全部楼层

你好。因为我们这个行业绝大部分就用的2006,所以没办法啊。我想请问下,com方式怎么实现readdwgfile的功能呢?
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2018-12-18 09:37:00 | 显示全部楼层
你去  VBA/VB/ActiveX/API 编程技术 这个板块找帮助或搜索吧;
我也记不清了,大概是DocumentCollection.Open这样的函数;
COM的帮助样例应该还是很多的;
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2018-12-18 09:48:00 | 显示全部楼层
///
    /// DWG文件作为图块插入
    ///
    ///
    static public void InsertFileAsBlock_DBX(string filename)
    {   //ae.WriteMessage("FileName : " + filename);         
      PromptPointOptions ppopt = new PromptPointOptions("\n Insert Point :");
      ppopt.AllowNone = true;
      PromptPointResult ppres = ac.ed.GetPoint(ppopt);
      if (ppres.Status == PromptStatus.OK)
      {
        Point3d tP1 = ppres.Value + ac.db.Ucsorg.GetAsVector();
        double[] p1 = new double[3];
        p1[0] = tP1.X; p1[1] = tP1.Y; p1[2] = tP1.Z;
        csp.CurSpace.InsertBlock(p1, filename, 1, 1, 1, 0, "");
      }
    }
  public class csp
  {   
    public static AcadModelSpace CurSpace = null;
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2018-12-18 09:48:00 | 显示全部楼层
///
    /// 以DBX方式插入dwg文件里面的一个图块
    ///
    ///
    ///
    ///
    static public bool InsertBlock_DBX(string fileName, string blockName)
    {
      //ae.WriteMessage("DBX_InsertBlock start " );
      AxDbDocument dbx = new AxDbDocument();
      try
      {
        dbx.Open(fileName, "");
        AcadBlock[] blk1 = new AcadBlock[1];
        for (int i = 0; i < dbx.Blocks.Count; i++)
        {
          if (dbx.Blocks.Item(i).Name == blockName)
          {
            blk1[0] = (AcadBlock)dbx.Blocks.Item(i);
            Object missing = Type.Missing;
            dbx.CopyObjects(blk1, csp.CurSpace, ref missing);
            an.OutSideInsert(blockName, null, true);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(dbx);
            return true;
          }
        }
        ae.WriteMessage("\nCann't find block : " + blockName, 1);
        return false;
      }
      catch (System.Exception ex)
      {
        ae.WriteMessage(ex);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(dbx);
        return false;
      }
    }
回复

使用道具 举报

156

主题

506

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1130
发表于 2018-12-18 13:25:00 | 显示全部楼层

谢谢,我研究下
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 02:51 , Processed in 0.706440 second(s), 77 queries .

© 2020-2025 乐筑天下

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