乐筑天下

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

[编程交流] 自动加载和CUI问题

[复制链接]

8

主题

24

帖子

16

银币

初来乍到

Rank: 1

铜币
41
发表于 2022-7-5 18:24:03 | 显示全部楼层 |阅读模式
大家好
 
我有一个局部CUI菜单,其中有一个补充MNL文件。MNL文件包含一系列“自动加载”功能,例如:。
(自动加载“AddObjectsToBlockV1-1”(“ADD2BLOCK”“REMOVE”))
 
启动AutoCAD 2013及更早版本后,自动加载工作正常。
 
但在AutoCAD 2014中使用此功能时,有一个小问题,这让我感到困扰。
 
加载CUI后,命令行上会出现错误。此错误为-
; 错误:无函数定义:自动加载
 
我已经为此寻找了一个解决方案,但没有找到一个可以继续使用MNL文件的答案。
我发现的是使用阿卡多克。lsp/ACAD。lsp文件。
我还发现ACAD2014doc可能存在问题。lsp是否包含自动加载功能?
 
上述操作不会影响功能的加载,并且在从CUI的功能区激活命令时,这些功能都会起作用。
 
除此之外,我的MNL中还有大约80个自动加载功能。
如果这对AutoCAD性能有影响,有人能告诉我吗。是否推荐?我似乎没有注意到任何问题,但我的一位同事说,他的AutoCAD 2014和使用CUI/MNL存在性能问题。
 
此外,如果我将MNL文件中的所有自动加载函数复制并粘贴到命令行中,则不会出现上述错误。
 
感谢您的帮助。
 
当做
Shoey鞋
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:34:54 | 显示全部楼层
嗨Shoey,
 
随附的是我的AutoLISP自动加载函数版本(该函数的本机版本在acad20##doc.lsp的第178行定义)。
 
我的版本使用与内置函数完全相同的语法(因此您不需要更改现有的自动加载表达式),但与内置自动加载函数相比有几个优点:
 
[列表]
  • 我的版本处理正斜杠和双反斜杠文件路径分隔符。
    (内置函数只能使用正斜杠分隔符)。
    [/列表]
     
    [列表]
  • 如果给定的应用程序文件中未定义命令列表参数中列出的命令,则我的版本不会导致无限递归循环(当达到堆栈限制时返回硬错误)。
    [/列表]
    自阿卡多克以来。lsp在任何MNL文件之前加载,在acad20##doc之后加载。lsp已加载,我建议从acaddoc加载附加功能。lsp,或将代码直接复制到您的acaddoc中。lsp。
     
    我希望这有帮助;欢迎提出意见/建议。
    自动加载。lsp
  • 回复

    使用道具 举报

    8

    主题

    24

    帖子

    16

    银币

    初来乍到

    Rank: 1

    铜币
    41
    发表于 2022-7-5 18:37:51 | 显示全部楼层
    嗨,李
     
    感谢您的回复、建议和代码。
     
    我不知道如何将我现有的自动加载代码应用到您的代码中。
    我是否放置此代码(自动加载“AddObjectsToBlockV1-1”(“ADD2BLOCK”“REMOVE”))
    进入你的??
     
    我要废除MNL吗?
     
    一如既往,我们感谢您的帮助。
     
    Shoey鞋
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-5 18:44:58 | 显示全部楼层
    嗨Shoey,
     
    我的代码旨在作为标准自动加载功能的替换定义,因此不需要以任何方式更改MNL文件中包含的现有代码。
     
    因为所有MNL文件都是在阿卡多克之后加载的。lsp已加载,您可以保留现有MNL文件,并保持其包含的所有自动加载表达式不变。
     
    只需执行以下操作:
     
    [列表]
  • 将上述附加文件(autoload.lsp)保存到AutoCAD支持路径。
    [/列表]
     
    [列表]
  • 在AutoCAD命令行中,键入:
    1. (findfile "acaddoc.lsp")
    如果以上返回有效的文件路径,请导航到此文件路径,并在接下来的操作中修改现有的acaddoc。lsp文件。
    [/列表]
     
    [列表]
  • 如果上述表达式返回nil,请打开记事本并将文件另存为acaddoc。到AutoCAD支持路径的lsp
    (确保将“另存为类型”设置为“所有文件”,就像处理任何其他LISP文件一样)。
    [/列表]
     
    [列表]
  • 在新的/现有的acaddoc中。lsp,键入以下内容:
    1. (load "autoload.lsp" "Unable to load autoload.lsp")
    并保存文件。
    [/列表]
     
    [列表]
  • 重新启动AutoCAD。
    [/列表]
  • 回复

    使用道具 举报

    8

    主题

    24

    帖子

    16

    银币

    初来乍到

    Rank: 1

    铜币
    41
    发表于 2022-7-5 18:53:25 | 显示全部楼层
    嗨,李
     
    我已按照您的指示进行操作,但仍会显示错误消息。
    我已将ACAD2014DOC重命名。lsp,使其不加载,并使用您的替换自动加载。lsp
     
    如前所述,这不是一个问题,因为MNL中的程序确实加载和运行。
    这只是一条令人讨厌的错误消息!
     
    干杯,朋友。
     
    Shoey鞋
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-5 18:59:33 | 显示全部楼层
     
    我明白了-从您的报告中,似乎acad2014doc中未定义(或错误定义)标准自动加载功能。lsp,或启动时(在MNL文件之后)的后续代码加载正在覆盖或使自动加载定义无效。
     
    我不建议重命名acad2014doc。lsp,因为该文件将包含AutoCAD所需的其他功能的定义。
     
    但是,您有几个选择:
     
    如果acad2014doc中未定义自动加载功能,则为真。lsp文件,你可以加载我的自动加载。acad中的lsp文件。lsp(如果该文件不存在,则创建该文件),因为它在acad20##文档之前加载。启动加载顺序中的lsp。但是,您还需要确保ACADLSPASDOC系统变量设置为1,以确保acad。为每个图形加载lsp文件。
     
    或者,您可以将以下内容添加到acad2014doc中。lsp,定义标准自动加载功能后
    (我相信在313号线上):
    这将确保自动加载功能可用。
     
    但是,对于阅读此线程的其他人,我要声明,不建议修改acad20。lsp或acad20##doc。lsp,因为任何修改都可以在Autodesk更新后覆盖。
    回复

    使用道具 举报

    8

    主题

    24

    帖子

    16

    银币

    初来乍到

    Rank: 1

    铜币
    41
    发表于 2022-7-5 19:01:32 | 显示全部楼层
    我意识到不触摸或重命名任何定义的acad*的重要性。lsp功能。我重新命名了acad21014doc。lsp只是为了测试你的代码,我在测试时立即重新命名了它!
     
    李,我向你道歉,因为你不得不花时间强调不重命名任何内置acad*的重要性。lsp启动文件发送给阅读此线程的其他用户。
    我应该仔细考虑并重新阅读我的回复,以后的帖子也会这样做。
     
    我会试试你的其他选择。
     
    助教
    Shoey鞋
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-5 19:07:44 | 显示全部楼层
    一点问题都没有!
    回复

    使用道具 举报

    8

    主题

    24

    帖子

    16

    银币

    初来乍到

    Rank: 1

    铜币
    41
    发表于 2022-7-5 19:15:54 | 显示全部楼层
    大家好
     
     
    已离开,因此回复迟。
    多亏了一位同事,最终解决了这个问题。
    我们将自动加载函数附加到S::STARTUP函数中。
     
    代码通常如下所示。。
     
     
    (defun-q s::启动()
    (自动加载“命令”(“CMD1”“CMD2”))
    (普林斯)
    )
     
     
    错误消息-;错误:没有函数定义:自动加载现已消失!
     
     
    助教
    Shoey鞋
     
     
    Ps-很抱歉没有按照论坛协议将代码放在上面的代码标签中。我似乎无法让他们工作时张贴。
    回复

    使用道具 举报

    24

    主题

    1265

    帖子

    1028

    银币

    后起之秀

    Rank: 20Rank: 20Rank: 20Rank: 20

    铜币
    362
    发表于 2022-7-5 19:19:54 | 显示全部楼层
     
    李,你好!
     
    我可以建议在您的网页上添加上述警告吗?
     
    谢谢
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-12 20:13 , Processed in 0.587920 second(s), 72 queries .

    © 2020-2025 乐筑天下

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