乐筑天下

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

[编程交流] 将变量传递给AutoCAD fro

[复制链接]

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 22:17:14 | 显示全部楼层 |阅读模式
我正在做的一个项目使用VB。NET项目读取一些数据,然后启动AutoCAD,通过使用send命令,我告诉它要加载和运行哪个LISP文件。为了简化项目,我合并了几个LISP文件。问题是,当初始LISP程序运行时,它需要一些关于它将要做什么的初始信息。所以我想知道是否有一种方法可以在AutoCAD打开模板绘图并开始使用LISP程序时将变量传递给AutoCAD。
 
天啊,现在我读到了,连我自己都搞糊涂了。基本上,AutoCAD将打开一个图形模板,然后运行一个LISP程序,该程序将依次加载其他LISP程序。。。但是第一个LISP需要知道要加载和执行哪些LISP程序。我希望可以在AutoCAD环境中设置一个变量,以便LISP可以相应地对其作出反应。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:28:28 | 显示全部楼层
嘿,比尔,
 
我认为SendStringToExecute()是你想要的,但很难确定。
 
... 有关访问AutoCAD命令行的详细信息。
 
HTH公司
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:35:56 | 显示全部楼层
如果您的LISP是通过VL-ACAD-DEFUN注册的,那么您也可以调用acedInvoke()
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 22:46:50 | 显示全部楼层
谢谢这是我用来启动AutoCAD的代码。。。
 
  1. Imports AutoCAD
  2. Module LaunchAutoCAD
  3.    '**************************************************************************************************************
  4.    ' LAUNCH AUTOCAD & LISP
  5.    '**************************************************************************************************************
  6.    Sub Launch_AutoCAD(ByVal DwgName As String, ByVal LispCMD As String)
  7.        Dim vAcadApp As AcadApplication
  8.        Dim vAcadDoc As AcadDocument
  9.        Dim FrmType As String
  10.        If Left(HatchType, 1) = "A" Then
  11.            FrmType = "Angle"
  12.        Else
  13.            FrmType = "Trough"
  14.        End If
  15.        Dim DwgPath As String = "\\A_Long_Novell_Path\MyDrawings"
  16.        Dim LispPath As String = "//A_Long_Novell_Path/LISP/"
  17.        Try
  18.            If Process.GetProcessesByName("acad").Length > 0 Then
  19.                vAcadApp = GetObject(, "AutoCAD.Application.19")
  20.            Else
  21.                vAcadApp = New AcadApplication
  22.            End If
  23.            vAcadApp.Visible = True
  24.            vAcadApp.WindowState = AcWindowState.acMax
  25.            vAcadDoc = vAcadApp.Documents.Open(DwgPath & DwgName, True)
  26.           [color="blue"] vAcadDoc.SendCommand("(load """ & LispPath & LispCMD & ".lsp"" ""The load failed"") " & LispCMD & Chr(13))[/color]
  27.        Catch ex As Exception
  28.        Finally
  29.            vAcadApp = Nothing
  30.            vAcadDoc = Nothing
  31.        End Try
  32.    End Sub
  33. End Module

 
我有我的项目结构,以便LISP程序的名称和启动它的命令是相同的文本。而被调用的那个取决于通过互联网传入的请求。
 
蓝色代码行是我从VB直接与AutoCAD对话的地方。NET,就在VB之前。NET程序退出舞台左侧。我想我可以添加另一行类似的代码来设置变量,这个变量会告诉LISP程序需要加载哪些其他LISP程序。现在用这个做更多的测试。
 
我应该提到,不完全关闭AutoCAD是故意的。如果一个AutoCAD实例没有打开,这将启动一个新的AutoCAD实例,但这需要时间,而且由于来自Internet的这些请求之间的间隔可能只有几秒钟,我只需将一个实例保持24/7打开,这将大大加快速度。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:47:50 | 显示全部楼层
 
不幸的是,通过使用COM,您被降级为使用SendCommand。。。像这样简单的事情行吗?
 
伪代码:
 
  1.            vAcadDoc = vAcadApp.Documents.Open(DwgPath & DwgName, True)
  2.            [color="red"]vAcadDoc.SendCommand("(setq *YourGlobalVariable* """ & YourValueFromNet & ")")[/color]
  3.            vAcadDoc.SendCommand("(load """ & LispPath & LispCMD & ".lsp"" ""The load failed"") " & LispCMD & Chr(13))
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 23:00:25 | 显示全部楼层
是的,效果很好。现在,我可以在LISP程序启动之前将一些额外的变量传递到AutoCAD应用程序,这将有助于我的项目更加精简。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 23:03:12 | 显示全部楼层
 
总是乐于帮助朋友。
 
 
 
比尔,比尔,比尔,比尔。。。比尔,今天是星期几?
 
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 23:12:50 | 显示全部楼层
我直到星期五早上才看到这个。我喜欢那个广告。作为一个真正的办公室隔间人物,这只骆驼变得如此可信。
 
祝你和论坛上所有其他优秀的人星期五快乐。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 23:20:24 | 显示全部楼层
比尔,你说得太好了,星期五快乐。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 11:12 , Processed in 0.900246 second(s), 70 queries .

© 2020-2025 乐筑天下

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