乐筑天下

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

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

[复制链接]

7

主题

46

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

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

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

使用道具 举报

0

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
8
发表于 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);。
}。

回复

使用道具 举报

0

主题

7

帖子

5

银币

初来乍到

Rank: 1

铜币
11
发表于 2015-8-12 13:14:35 | 显示全部楼层
这是我反复检查过的。它似乎不在AutoCAD的启动或我传递给它的send命令中。在执行lisp时,AutoCAD会停止绘制。“停止”是指在我单击鼠标之前,它不会在模型空间窗口上生成更多的线。然后它又恢复了。我已经用其他LISP测试了这个设置,效果很好。这个问题有点让我难堪,因为我无法确定LISP代码中的哪些内容只有在涉及到.NET时才会停止。但为了以防万一,下面是如何从C#中的类调用AutoCAD。我的第一个想法是SendCommand中有一个额外的空间,但我已经仔细检查过了。我认为在LISP代码中一定有一个额外的“”,但如果是这样的话,它隐藏得非常隐蔽。
  1.     class LaunchAutoCAD
  2.     {
  3.         private static IAcadApplication vAcadApp = null;
  4.         private static IAcadDocument vAcadDoc = null;        
  5.         private static string vAcadID = "AutoCAD.Application.20";
  6.         public static void StartAutoCAD()
  7.         {
  8.             try
  9.             {
  10.                 // Check for instance of AutoCAD
  11.                 vAcadApp = (IAcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject(vAcadID);
  12.             }
  13.             catch (Exception) // None found so start a new instance of AutoCAD
  14.             {
  15.                 Type AcadProg = Type.GetTypeFromProgID(vAcadID);
  16.                 vAcadApp = (IAcadApplication)System.Activator.CreateInstance(AcadProg);
  17.             }
  18.             if (vAcadApp != null)
  19.             {
  20.                 vAcadApp.Visible = true;
  21.                 vAcadDoc = vAcadApp.Documents.Open(myDrawingTemplate.dwg", true);
  22.                 vAcadDoc.SendCommand("(load "" + LispPath + "myLisp.lsp" "The load failed") ");
  23.                 vAcadDoc.SendCommand(LISPVariables.PrepareAcadCmd() + " ");
  24.                 vAcadDoc.SendCommand("(setq svPath "" + (ReadDefaults.vsSaveAutoDwgPath).Replace("\", "/") + "") ");
  25.                 vAcadDoc.SendCommand("(setq *erp 1) ");
  26.                 vAcadDoc.SendCommand("startLisp ");
  27.             }
  28.             else
  29.             {
  30.                 Console.WriteLine("ERROR: The drawing file is missing.");
  31.             }
  32.         }
  33.     }
  34. }
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 00:49 , Processed in 0.151635 second(s), 58 queries .

© 2020-2025 乐筑天下

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