乐筑天下

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

[编程交流] 从lisp运行VBA程序

[复制链接]

15

主题

23

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-6 17:18:32 | 显示全部楼层 |阅读模式
我有一个lisp例程,需要调用VBA程序并传递参数。这就是我所拥有的。
  1. (vl-vbarun (strcat "Gptoolbox.BlnEdit(" gron:lastent ")"))

它不会出错,但也不会做任何事情。思想?
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 17:36:00 | 显示全部楼层
Visual LISP和VBA具有不兼容的数据类型,不能使用LISP参数调用VBA函数。您可以通过自定义词典来组织数据交换,因此这是一种漫长而困难的方法。可以使用一种编程语言Visual LISP或VBA吗?
回复

使用道具 举报

2

主题

11

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 18:00:48 | 显示全部楼层
 
如果发送VBA例程所需的数据量相对较小,则有一种快速解决方法,即使用USERS1到USERS5系统变量。这些是由AutoCAD定义的字符串变量,可通过LISP或VBA使用。
 
在LISP中,您可以执行以下操作:
 
(setvar“USERS1”sometext1)
(setvar“USERS2”sometext2)
(命令“-vbaload”“项目”)
(命令“-vbarun”“BlnEdit”)
(命令“vbaunload”“Project”)
 
然后在VBA中执行以下操作:
 
Dim var1,var2作为字符串
var1=此图纸。GetVariable(“USERS1”)
var2=此图纸。GetVariable(“USERS2”)
 
通过对数据类型的一些操作,您将惊讶于可以来回发送多少信息。希望这有帮助。
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 18:04:30 | 显示全部楼层
>swestbrook60
 
这家伙似乎想从这个ViasualLISP代码中调用VBA程序:http://www.cadtutor.net/forum/showthread.php?t=27872 . 但是没有必要,因为他可以在VBA中实现同样的功能。
 
P、 USERXN变量的使用是不好的,因为它对任何未经授权的更改都是开放的。字典是数据传输的最佳方式。
回复

使用道具 举报

2

主题

11

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 18:29:20 | 显示全部楼层
 
你在这两个方面都是正确的,但是只要将用户变量视为一个整体,那么用户变量中的数据被破坏的风险是非常小的。它们是由AutoDesk出于这个特殊原因提供的,如果您将数据放在那里,然后立即使用该数据,您将是安全的。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:18 , Processed in 0.317846 second(s), 62 queries .

© 2020-2025 乐筑天下

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