乐筑天下

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

[编程交流] acad。lsp和阿卡多克。lsp带

[复制链接]

6

主题

36

帖子

30

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 08:17:34 | 显示全部楼层 |阅读模式
我正在使用acad吗。lsp和阿卡多克。lsp差?
 
我正在使用defun-q并附加S::STARTUP(根据帮助文件)。总的来说,这很管用。
 
唯一的问题是他们是否有局部变量。在autocad启动时,acad。lsp被添加到S::STARTUP。然后是阿卡多克。lsp被添加到S::STARTUP。为了便于论证,让我们假设acad。lsp是S::启动中的第一件事(之前什么都没有)。在这种情况下,acad。lsp函数将正常加载,然后S::启动将取消,因为它从acaddoc读取(/局部变量)行。lsp现在处于S::启动的中间位置,不再定义为局部变量。当然,误差是一个数字零,因为它将其视为除法。
 
我希望这一切都有意义。你们有什么建议或其他方法可以尝试吗?谢谢你的帮助。
 
p、 阿卡多克。启动后,当acad时,lsp在任何后续打开的图形上都可以正常加载。lsp未加载。。。所以我很肯定,是S::启动中间显示的局部变量导致了错误。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:31:35 | 显示全部楼层
我觉得ACAD有问题。lsp,而不是S::Startup。。。除非你发代码,否则我不能确定。
 
也就是说,我也觉得你误解了如何正确使用ACAD。lsp,阿卡多克。lsp和S::启动。如果你同时控制两个ACAD,我不确定你为什么需要S::启动。lsp和阿卡多克。lsp文件。
 
很快,这里有一个总结:
 
ACAD。lsp-默认情况下,每个会话加载一次的用户定义的LISP文件(取决于ACADLSPASDOC系统变量的状态)。
 
阿卡多克。lsp-用户定义的LISP文件,每次打开图形时加载一次。
 
SS:启动-启动过程中的一个步骤
 
启动顺序:
 
来源
HTH公司
回复

使用道具 举报

6

主题

36

帖子

30

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 08:49:41 | 显示全部楼层
感谢您的回复和序列信息。我正在使用acad。lsp和阿卡多克。lsp,以防我们想要包括任何(命令…)电话。如我所知,如果我们添加其中任何一项,它需要在初始化之后运行。在任何情况下,这两个例程都有效。。。。。。如果我们包括局部变量,就不是这样了。我想我可以去掉局部变量,生成更长的代码行。。。。或者我可以在不附加S::STARTUP的情况下同时运行这两个命令,但我需要避免(命令…)代码中的行。
 
以下是acad。lsp和阿卡多克。我现在正在测试的lsp文件。在程序启动时,S::startup将从acad运行代码。lsp,然后在acaddoc的(/*error*loginlsp)处停止。lsp。如果我然后开始一个新的绘图,代码在阿卡多克。lsp加载良好,因为(/*error*loginlsp)现在位于S::STARTUP的顶部。有什么意见/想法吗?谢谢
 
  1. ;;acad.lsp
  2. (defun-q acadSTART ( / *error* )
  3. (defun *error* (msg)
  4. (setvar "cmdecho" 1)
  5. (princ (strcat "\n " msg))
  6. (princ)
  7. )
  8. (setvar "cmdecho" 0)
  9. (load "I:\\lja-std\\ACAD\\Lisp\\Check-Paths.lsp" "Check-Paths not loaded")
  10. (prompt "\n acad.lsp loaded")
  11. (setvar "cmdecho" 1)
  12. (princ)
  13. );end defun-q acadStart
  14. (setq S::STARTUP (append S::STARTUP acadSTART)

 
  1. ;;acaddoc.lsp
  2. (defun-q acaddocSTARTUP ( / *error* loginlsp )
  3. ;;error handler
  4. (defun *error* (msg)
  5. (setvar "cmdecho" 1)
  6. (princ (strcat "\n " msg))
  7. (princ)
  8. )
  9. (setvar "cmdecho" 0)
  10. ;;load commonly used standard lisp routines
  11. (load "I:\\lja-std\\ACAD\\Lisp\\LID.lsp" "LID not loaded")
  12. (load "I:\\lja-std\\ACAD\\Lisp\\RVIEW.lsp" "RVIEW not loaded")
  13. (load "I:\\lja-std\\ACAD\\Lisp\\RVIEW2.lsp" "RVIEW2 not loaded")
  14. (load "I:\\lja-std\\ACAD\\Lisp\\DVIEW2.lsp" "DVIEW2 not loaded")
  15. ;;User startup routine (user routine should be located in the User_Customizations
  16. ;;folder and named "userlogin".lsp - example rharenberg.lsp)
  17. (setq loginlsp (strcat (getvar "loginname") ".lsp"))
  18. (if
  19. (not
  20. (=
  21.   (findfile
  22. (strcat "I:\\ljastd\\ACAD\\User_Customizations\"(getvar"loginname")"[url="file://\"loginlsp"]\"loginlsp[/url])) nil
  23. )
  24. )
  25. (load (strcat "I:\\lja-std\\ACAD\\User_Customizations\"(getvar "loginname")"[url="file://\"loginlsp"]\"loginlsp[/url]) "user lisp not loaded")
  26. )
  27. (prompt "\n acaddoc.lsp loaded")
  28. (setvar "cmdecho" 1)
  29. (princ)
  30. );;end defun-q acaddocSTARTUP
  31. (setq S::STARTUP (append S::STARTUP acaddocSTARTUP))
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:58:40 | 显示全部楼层
我不确定你从哪里得到“在ACAD期间不要使用命令调用”。lsp/阿卡多克。lsp加载位。。。在定义自定义函数(使用DEFUN)或在绘图打开时自动老化一系列步骤方面,我从来没有遇到过任何问题。
 
如果出于某种原因,您遇到特定命令调用的问题,请尝试在此处记录哪些命令,以便我们可以更好地帮助您推断问题。可能您调用的命令尚未初始化,因为关键MNL文件尚未加载?不太确定。你能提供的信息越多,获得解决方案的可能性就越大。
 
另外,如果需要在加载/初始化所有其他文件后调用命令,请考虑使用/B启动开关调用脚本文件。
回复

使用道具 举报

6

主题

36

帖子

30

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 09:10:05 | 显示全部楼层
我从帮助文件中获得了这些信息:
启动LISP文件(acad.lsp、acaddoc.lsp和MNL)在图形完全初始化之前都加载到内存中。通常,这不会造成问题,除非您想使用命令功能,该功能在图形初始化之前不能保证工作
在任何情况下,由于您没有或听说过仅使用defun的任何问题,我将遵循这条路线。我已经更改了例程,不再使用S::Startup-到目前为止没有问题。如果命令调用有任何问题,我会重新发布(很可能是我在阅读上面的帮助文件部分时担心未知的问题)。
再次感谢您的帮助。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:18:00 | 显示全部楼层
别担心;我将尝试深入了解初始化,但这意味着什么(根据我的经验)与您编写的实际代码无关,代表了我在通过ACADDOC调用例程时遇到的一个问题。从图纸集管理器(SSM)而不是使用标准的“打开文件”对话框打开lsp时。
 
在这种情况下,我可以通过在绘图区域内单击鼠标成功地初始化绘图,然后触发例程按需运行。希望这是有道理的。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 07:39 , Processed in 0.648519 second(s), 64 queries .

© 2020-2025 乐筑天下

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