hunszab 发表于 2022-7-6 10:35:50

菜单和宏

大家好!
 
我需要帮助。
这是我的问题:
我想写一个lisp程序,自动加载菜单文件(mns)并运行2个宏。
我还想修改支持文件搜索路径。
谁能帮帮我吗!
 
谢谢你的回答!
顺致敬意,

Tharwat 发表于 2022-7-6 10:40:23

你好
 
你想实现宏的哪些动作?
 
如果要更改支持文件,可以从第一个选项卡中的Autocad选项中进行更改。。
 
当做
 
塔瓦特

hunszab 发表于 2022-7-6 10:44:25

你好
这是我的问题:
用户将使用我的程序(我的功能和菜单),因此我必须自动执行所有操作,因为大多数用户不知道如何修改支持文件搜索路径。
这就是为什么我需要知道如何以编程方式修改支持文件路径,以及如何运行宏。因为如果用户选项是:禁用宏,宏将不会自动运行
 
当做

Tharwat 发表于 2022-7-6 10:45:33

 
对于宏,请打开CUI,然后执行新命令,并将代码张贴在宏标记中,不要忘记将此新命令添加到菜单中。
 
您想在支持文件中更改什么????
 
当做
 
塔瓦特

hunszab 发表于 2022-7-6 10:49:27

你好
 
谢谢,但我不知道如何编写运行另一个宏的宏。。。
例如:我制作了菜单,只需要命令来运行“mymacro”。
命令是什么?
^C^C(运行“mymacro”)或什么?
在哪里可以找到有关编写宏的信息?
 
谢谢
 
当做
 

The Buzzard 发表于 2022-7-6 10:52:34

 
 
请参阅Afralisp上的此链接,它将向您展示如何:http://www.afralisp.net/archive/lisp/install1.htm

Tharwat 发表于 2022-7-6 10:55:11

我以前问过你想做什么动作?
根据你所提到的,这表明你在编程方面很出名,这将使初学者有所遵循!!!!!
 
清楚而直接地写下你想要的,这对所有人都有好处,对你的目标也有好处。
 
当做
 
塔瓦特

hunszab 发表于 2022-7-6 10:59:34

好的,我试着把我的问题写清楚:
 
这是一个完全有效的程序,但用户必须做很多事情才能工作。(好的,大多数事情都是第一次,作为一种选择)
 
1) 他/她必须修改支持文件路径
(如果可能的话,我想通过编程实现,我找到了一个命令:addsupportfilepath,但不起作用)
 
2) 在AutoCad文件(.dwg)中有2个宏。它必须运行。
通常,当有人打开包含宏的dwg文件时,系统会询问用户是否要运行它。我的问题是,可能用户单击“否”,或者系统没有询问他,而他忘记了运行宏。。。
所以我必须运行这两个宏。
我已经解决了这个问题。
我写了一个函数:
(命令“-vbarun”“mymacro.whatever”)
 
我问:当我运行我的函数(在函数中)时,我能确定宏是否被找到并成功运行吗?
(当然,在命令行中我看到了,如果发生了什么事情:但用户很愚蠢,他/她没有)
 
我想制作一个菜单,用户只需点击,程序就可以制作这些东西(支持文件,运行宏)。
菜单已完成。
 
我想就这些。
我希望现在问题清楚了。
 
我等待回应!
 
当做
 

hunszab 发表于 2022-7-6 11:03:15

我忘了说:我想确定用户是否禁用了宏,如果禁用了,我想启用它。是否可以通过lisp函数实现?

Lee Mac 发表于 2022-7-6 11:05:56


(defun LM:AddSupportPaths ( lst / PreferenceFiles SupportPaths )
;; © Lee Mac~14.06.10
;; (AddSupportPaths '("C:\\Folder" "C:\\Folder\\Subfolder" ... )
(vl-load-com)

(setq SupportPaths
   (vla-get-SupportPath
   (setq PreferenceFiles
       (vla-get-files
         (vla-get-preferences
         (vlax-get-acad-object)
         )
       )
   )
   )
)

(vla-put-SupportPath PreferenceFiles
   (LM:lst->str
   (cons SupportPaths
       (vl-remove-if
         (function
         (lambda ( s )
             (vl-string-search s SupportPaths)
         )
         )
         lst
       )
   )
   ";"
   )
)
lst
)

(defun LM:RemoveSupportPaths ( lst / PreferenceFiles SupportPaths )
;; © Lee Mac~14.06.10
;; (RemoveSupportPaths '("C:\\Folder" "C:\\Folder\\Subfolder" ... )
(vl-load-com)

(setq SupportPaths
   (vla-get-SupportPath
   (setq PreferenceFiles
       (vla-get-files
         (vla-get-preferences
         (vlax-get-acad-object)
         )
       )
   )
   )
)

(vla-put-SupportPath PreferenceFiles
   (LM:lst->str
   (vl-remove-if
       (function
         (lambda ( s )
         (vl-position s lst)
         )
       )
       (LM:StringParser SupportPaths ";")
   )
   ";"
   )
)
lst
)

(defun LM:lst->str ( lst del )
;; © Lee Mac~14.06.10
(if (cdr lst)
   (strcat (car lst) del (LM:lst->str (cdr lst) del))
   (car lst)
)
)

(defun LM:StringParser ( str del )
;; © Lee Mac~14.06.10
(if (setq pos (vl-string-search del str))
   (cons (substr str 1 pos)
         (LM:StringParser (substr str (+ pos 1 (strlen del))) del))
   (list str)
)
)
页: [1] 2
查看完整版本: 菜单和宏