BillZndl 发表于 2015-8-12 11:30:10

LISP运行良好,除非它被调用。网

我正试图追踪这只虫子,我想问问船员们是否有人见过这种东西。我有一个LISP程序,可以创建图形。多年来一直运转良好。我最近添加了一个C#。NET项目,该项目启动AutoCAD,然后加载并运行此LISP。这似乎很有效,但今天早上我遇到了一个问题。图形开始创建,但突然停止。如果我单击鼠标,它会再次拾取。但这不好,因为这应该是一个完全自动化的过程,不允许用户输入
因此,我打开AutoCAD,设置所需的变量,并观察LISP的运行。它一直运行得很完美。然后我在上面尝试C#程序,它再次在同一点暂停。我在LISP代码中找到了它暂停的地方,但我没有看到任何类似于在过去导致类似问题的额外的“”。
**** Hidden Message *****

监利人 发表于 2015-8-12 11:40:10

不知道我是否会有所帮助,但是我已经用一个点击按钮的非模态表单加载和启动了大量的lisp文件一段时间了,没有遇到任何问题。    public static void make directory()。
{。
Document doc = AcadApp,document manager . MdiActiveDocument;。
数据库db = doc,数据库;。
doc,SendStringToExecute("(load \ " make _ D2 \ ")(make _ D2)",true,false,true);。
}。

沈城 发表于 2015-8-12 13:14:35

这是我反复检查过的。它似乎不在AutoCAD的启动或我传递给它的send命令中。在执行lisp时,AutoCAD会停止绘制。“停止”是指在我单击鼠标之前,它不会在模型空间窗口上生成更多的线。然后它又恢复了。我已经用其他LISP测试了这个设置,效果很好。这个问题有点让我难堪,因为我无法确定LISP代码中的哪些内容只有在涉及到.NET时才会停止。但为了以防万一,下面是如何从C#中的类调用AutoCAD。我的第一个想法是SendCommand中有一个额外的空间,但我已经仔细检查过了。我认为在LISP代码中一定有一个额外的“”,但如果是这样的话,它隐藏得非常隐蔽。
    class LaunchAutoCAD
    {
      private static IAcadApplication vAcadApp = null;
      private static IAcadDocument vAcadDoc = null;      
      private static string vAcadID = "AutoCAD.Application.20";
      public static void StartAutoCAD()
      {
            try
            {
                // Check for instance of AutoCAD
                vAcadApp = (IAcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject(vAcadID);
            }
            catch (Exception) // None found so start a new instance of AutoCAD
            {
                Type AcadProg = Type.GetTypeFromProgID(vAcadID);
                vAcadApp = (IAcadApplication)System.Activator.CreateInstance(AcadProg);
            }
            if (vAcadApp != null)
            {
                vAcadApp.Visible = true;
                vAcadDoc = vAcadApp.Documents.Open(myDrawingTemplate.dwg", true);
                vAcadDoc.SendCommand("(load \"" + LispPath + "myLisp.lsp\" \"The load failed\") ");
                vAcadDoc.SendCommand(LISPVariables.PrepareAcadCmd() + " ");
                vAcadDoc.SendCommand("(setq svPath \"" + (ReadDefaults.vsSaveAutoDwgPath).Replace("\\", "/") + "\") ");
                vAcadDoc.SendCommand("(setq *erp 1) ");
                vAcadDoc.SendCommand("startLisp ");
            }
            else
            {
                Console.WriteLine("ERROR: The drawing file is missing.");
            }
      }
    }
}
页: [1]
查看完整版本: LISP运行良好,除非它被调用。网