乐筑天下

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

[编程交流] 从C++代码运行Lisp

[复制链接]

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 07:02:16 | 显示全部楼层
我试图运行这段代码,并得到“错误绑定到方法”我正在运行AutoCAD Architecture 2014。
 
  1.        <CommandMethod("SMB", CommandFlags.Session)> _
  2.        Public Sub SMB(ByVal DwgName As String)
  3.            ' LAUNCH AUTOCAD & LISP
  4.            'Sub Launch_AutoCAD(ByVal DwgName As String)
  5.            Dim vAcadApp As AcadApplication
  6.            Dim vAcadDoc As AcadDocument
  7.            Dim DwgPath As String = "\\\.....
  8.            Dim LispPath As String = ".....
  9.            Dim My_Lisp As String = "SMBTEST"
  10.            Dim Cmd_To_Start_LISP_Program As String = "SMBRUN"
  11.            Try
  12.                If Process.GetProcessesByName("acad").Length > 0 Then
  13.                    vAcadApp = GetObject(, "AutoCAD.Application")
  14.                Else
  15.                    'vAcadApp = CreateObject("AutoCAD.Application.20")
  16.                    vAcadApp = New AcadApplication
  17.                End If
  18.                vAcadApp.Visible = True
  19.                vAcadApp.WindowState = AcWindowState.acMax
  20.                vAcadDoc = vAcadApp.Documents.Open(DwgPath & DwgName, True)
  21.                vAcadDoc.SendCommand("(load """ & LispPath & My_Lisp & ".lsp"" ""The load failed"") " & Cmd_To_Start_LISP_Program & Chr(13))
  22.            Catch ex As System.Exception
  23.            Finally
  24.                vAcadApp = Nothing
  25.                vAcadDoc = Nothing
  26.            End Try
  27.        End Sub
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:03:25 | 显示全部楼层
 
您已经编写了一个CommandMethod方法(一个插件),该方法试图从流程中访问应用程序对象(通常通过COM从独立应用程序中完成),而您可以只从Autodesk获取应用程序对象。AutoCAD。应用程序服务。应用
 
HTH公司
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 07:09:51 | 显示全部楼层
是的,黑盒子说的。。。。但对于我们这些新手和新手来说,理解这些行话和流行语通常很难。基本上,他说的是我提供给你的代码是作为一个独立的程序运行的,或者叫做COM方法。
 
代码中的第一行是从另一端接近它的,也就是说,您正在尝试编写要在AutoCAD环境本身内部运行的代码。也许在座的其他更有经验的人可以为我们详细阐述这一点。我通常使用COM方法编程,但其他人更喜欢应用程序方法。如果您试图在AutoCAD已经运行打开的图形时运行此功能,则需要查看与我提供的不同的内容。我发布的方法基本上适用于闲置的机器,或者只打开AutoCAD而没有加载图形文件。编译的exe程序在AutoCAD不知道的情况下运行,直到从编译的exe调用它。我所做的自动编码不适合应用程序方法,因此我从AutoCAD之外运行所有内容。
 
我希望我没有把那里的水弄得太浑。我决不能声称自己是这方面的专家。
回复

使用道具 举报

0

主题

2

帖子

2

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 07:12:16 | 显示全部楼层
不过,我通过大量试验得出了这个结论。我现在已经通过COM创建了一个独立的应用程序。我可以启动AutoCAD,但当我发送命令时,我得到“加载失败”
你能指出我的代码有什么问题吗?
 
  1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.        Const progID As String = "AutoCAD.Application.19.1"
  3.        Dim acApp As AcadApplication = Nothing
  4.        Dim LispPath As String = "..."
  5.        Dim My_Lisp As String = "SMBTEST"
  6.        Dim Cmd_To_Start_LISP_Program As String = "SMBRUN"
  7.        Try
  8.            acApp = DirectCast(Marshal.GetActiveObject(progID), AcadApplication)
  9.        Catch
  10.            Try
  11.                Dim acType As Type = Type.GetTypeFromProgID(progID)
  12.                acApp = DirectCast(Activator.CreateInstance(acType, True), AcadApplication)
  13.            Catch
  14.                MessageBox.Show("Cannot create object of type """ + progID + """")
  15.            End Try
  16.        End Try
  17.        If acApp IsNot Nothing Then
  18.            acApp.Visible = True
  19.            acApp.ActiveDocument.SendCommand("(load """ & LispPath & My_Lisp & ".lsp"" ""The load failed"") " & Cmd_To_Start_LISP_Program & Chr(13))
  20.        End If
  21.    End Sub
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:17:21 | 显示全部楼层
我不确定我可以用什么行话或流行语。。。我说的很直接。如果其他成员不知道两者之间的区别。NET和COM接口;这很好,但我自己从来没有编写过COM应用程序(除非你计算Visual LISP,我没有),我宁愿认为自己是这方面的初学者。NET API。
 
我知道的很少,我可能知道得很清楚,但这很难表明我是一名专家(我不是)。。。信不信由你,我其实是想帮上忙。
 
干杯
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:20 , Processed in 0.418677 second(s), 60 queries .

© 2020-2025 乐筑天下

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