Olhado_ 发表于 2022-7-6 15:20:43

另一个VBA到LISP的问题

我真的希望有人能在这里帮助我,因为我在这里束手无策。
 
我有一个程序,我正在工作,我试图做的只是VBA完成,这是一个失败的尝试;但是我可以在LISP中完成,所以我使用VBA到LISP技术。唯一的问题是,您只能在VBA和LISP之间传递预定义的AutoCAD变量(即USERS1、USERS2、USERS3、USERS4、USERS5)。这是正确的吗?
 
无论如何,为了回答我的问题,我需要将许多文件名(作为字符串)传递给LISP,这比5个用户字段允许的要多得多,并且由于在模块关闭后删除变量名的限制,我必须一次性将它们全部清除。
 
我认为下面的代码可以工作;但是我忘记了“Getvar”LISP命令需要引号,这会混淆VBA SendCommand。
 

   ThisDrawing.SetVariable "USERS1", ProcessList.List(0)
   ThisDrawing.SendCommand "(setq UserList (getvar "USERS1"))"
   For i = ProcessList.ListCount - 2 To step - 1
       ThisDrawing.SetVariable "USERS1", ProcessList.List(i)
       ThisDrawing.SendCommand "(setq UserList (cons (getvar "USERS1") UserList))"
       Next i


 
无论如何,这可能不是最好的方法;但就像我说的,我在这里已经不知所措了。有没有人有办法让这件事成功?
 
ProcessList=列表框
 
我希望我提供了足够的信息。
 
提前谢谢。

CALCAD 发表于 2022-7-6 15:36:45

奥尔哈多,
我没有完整的答案,但对于额外的用户变量,至少有两种方法。您可以在Windows中设置环境变量。我自己没有这样做,但我听说这是可以做到的。我不知道环境中有多少空间可供用户变量使用。也许论坛上有人可以提供详细信息。您还可以在Autolisp中打开文本文件,写入和读取任何需要的内容,然后根据需要删除或保留该文件。我已经做了很多次了,效果很好。希望这有帮助。

BIGAL 发表于 2022-7-6 15:50:06

哦,顺便说一句,记住关闭文件,否则你会出现读取错误。

ASMI 发表于 2022-7-6 16:00:16

字典是AutoLISP VBA交换的最佳方式。

todorb2000 发表于 2022-7-6 16:15:37

如何将数据放入excel

todorb2000 发表于 2022-7-6 16:23:22

如何将autocad对象中的数据放入excel。例如将文本值放入excel表格!
页: [1]
查看完整版本: 另一个VBA到LISP的问题