明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: ORCHI

cad图纸批量处理程序(附源码)

  [复制链接]
发表于 2014-10-22 17:17 | 显示全部楼层
看看~~~~~~~~~~~~~~
发表于 2014-10-25 10:50 | 显示全部楼层
顶一个,谢谢楼主无私奉献
发表于 2014-10-25 15:04 | 显示全部楼层
我也在做和楼主类似的程序!现在遇到的最大的问题就是打开CAD经常遇到‘拒绝呼叫’!实际操作过程中出错的概率非常大!
发表于 2015-1-15 19:27 | 显示全部楼层
为什么批处理时,同一个文件连续打开两次?
 楼主| 发表于 2015-2-22 16:17 | 显示全部楼层
bluesun-simon 发表于 2015-1-15 19:27
为什么批处理时,同一个文件连续打开两次?

我没有这个问题。你试试只处理一张或两张图纸也会出现这个问题?
 楼主| 发表于 2015-2-22 16:18 | 显示全部楼层
偶尔做做怪 发表于 2014-10-25 15:04
我也在做和楼主类似的程序!现在遇到的最大的问题就是打开CAD经常遇到‘拒绝呼叫’!实际操作过程中出错的概 ...

你点击按钮“启动CAD”能运行吗?如果这个可以应该不会有问题。
发表于 2015-3-3 10:21 | 显示全部楼层
CAD可以运行,拒绝呼叫的问题 不定时出现,我有时候要连续处理200多张图纸,可能打开到10张的时候就出现问题了,有时候处理到50张的时候会出现,如果只处理10张图可能没有问题。我用VB.NET或者C#写就会出现上面的问题,如果用VB6写就不会出现上面的问题。
发表于 2015-3-3 10:42 | 显示全部楼层
  public static void OpenCAD2012(string path,string cmd,bool closed)
        {
            const string progID = "AutoCAD.Application.18.2";
            const string exePath = @"C:\Program Files\Autodesk\AutoCAD 2012 - Simplified Chinese\acad.exe";
            AcadApplication acApp = null;
            AcadDocument doc=null;
            // Let's first check we don't have AutoCAD already running
            try
            {
                acApp = (AcadApplication)Marshal.GetActiveObject(progID);
            }
            catch { }
            if (acApp != null)
            {
               // MessageBox.Show("An instance of AutoCAD is already running.");
            }
            else
            {
                try
                {
                    Process pr = Process.Start(exePath);
                    pr.WaitForInputIdle();

                    while (acApp == null)
                    {
                        try
                        {
                            acApp = (AcadApplication)Marshal.GetActiveObject(progID);
                        }
                        catch
                        {
                            Application.DoEvents();
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Cannot create or attach to AutoCAD object: " + ex.Message);
                }
            }
            if (acApp != null)
            {
                acApp.Visible = true;
                acApp.Documents.Open(path, false, null);
                doc = acApp.ActiveDocument;
                doc.SendCommand(cmd);
                if (closed)
                doc.Close(true);
            }
        }

    }
这是我程序里打开CAD文档 并发出 命令的代码 ,打开几张图形时不会出现问题,图形一旦多了很有可能出现拒绝呼叫的问题!请高手指点!!!


我看到楼主实例里有个Interop.VBIDE.dll  ,不知道楼主是用什么方式操作CAD的  ,希望能得到您详细指点!谢谢


 楼主| 发表于 2015-3-3 19:58 | 显示全部楼层
偶尔做做怪 发表于 2015-3-3 10:42
public static void OpenCAD2012(string path,string cmd,bool closed)
        {
            const s ...

这个程序太久之前做的,我基本都忘了。有时间我看看吧。另外我觉得可能你CAD或电脑环境有问题吧,周围人用的都没遇到过你说的这个问题。
发表于 2015-3-4 11:00 | 显示全部楼层


楼主你的程序在我电脑上用也出现这个问题了!不一定每次出现,间隙性发作!

苦恼!现在我不得不把程序改成VB6的代码!网上也找了好多方法!都说.net用COM方式打开CAD或者office都有可能出现崩溃情况!谁能告我诉我真正的情况啊?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

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

GMT+8, 2024-4-25 21:19 , Processed in 0.338402 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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