caoyin 发表于 2008-5-7 13:43:00

<p>;; 我没有理解错你的意思,个人推荐第二种方法<br/>;; 现在以第二种方法示例:<br/>;; 测试:(UserPGP "ayunger.pgp")</p><p>(defun UserPGP (uPgp / apgp tmp)<br/>&nbsp; (if (and (setq uPgp (findfile uPgp))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq aPgp (findfile "acad.pgp"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq tmp (vl-filename-mktemp apgp))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-file-copy apgp tmp)&nbsp;&nbsp;&nbsp;;备份 acad.pgp 文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-file-copy uPgp apgp T)&nbsp;&nbsp;;注意:uPgp 用户pgp文件第一行一定要为空<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setvar "re-init" 16)&nbsp;&nbsp;&nbsp;;重新初始化 acad.pgp 文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (vl-file-delete apgp)&nbsp;&nbsp;&nbsp;;删除 acad.pgp 文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-file-rename tmp apgp)&nbsp;&nbsp;;恢复临时文件到 acad.pgp 文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>)</p>

无痕 发表于 2008-5-7 14:17:00

<p>比如vlx含c:atest命令</p><p>pgp就这样写(当然运行前要先加载vlx)</p><p>aaa,&nbsp; *atest</p>

sailorcwx 发表于 2008-5-7 14:41:00

<p>将你的pgp文件所在目录添加到CAD的支持路径里面,并确保它位于CAD本身的pgp文件的上方就可以了</p>

rewq 发表于 2008-5-7 18:55:00

<p>这么多热心人,真的谢谢!</p>

asen 发表于 2008-6-1 18:00:00

<p>vlax-add-cmd&nbsp; 这个函数</p><p>举例</p><p>(defun C:MYCOPY () (cmmand "COPY")) ;举例定义一个命令</p><p>(setq cmd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "N"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;快捷命令<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmdsys&nbsp;&nbsp; "C:MYCOPY"&nbsp; ;原命令<br/>)</p><p>(vlax-add-cmd cmd cmdsys)</p><p></p>

ayunger 发表于 2008-6-4 22:06:00

<p>这是本人《一个非常好用的AutoCAD工具集》中关于自动加载Ayunger.PGP文件的函数,先与大家分享!</p><p>有问题,直接: E-mail:AyungerStudio@163.com或QQ:420304230</p><p>;;********************************<br/>;;; No.3 AY工具快捷命令初始化 函数 <br/>;;;********************************<br/>(defun C:ayCMD(/ PGPFile fp i xString aList shortCMD GlobalCMD)<br/>&nbsp;(vl-load-com)<br/>&nbsp;(setq PGPFile "Ayunger.pgp");F:\\Ayungerstudio\\VLisp\\Ayunger.pgp<br/>&nbsp;(if (setq PGPFile (findfile PGPFile))<br/>&nbsp;&nbsp;(progn;then<br/>&nbsp;&nbsp;&nbsp;(setq fp (open PGPFile "r"))<br/>&nbsp;&nbsp;&nbsp;(setq i 1)<br/>&nbsp;&nbsp;&nbsp;(while (setq xString (read-line fp))<br/>&nbsp;&nbsp;&nbsp;&nbsp;(if (= (type xString) 'SYM) (setq xString (vl-symbol-name xString)));转换数据文件中无引号的字符串.<br/>&nbsp;&nbsp;&nbsp;&nbsp; (while (vl-string-search " " xstring);去掉所有的空格.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq xString(vl-string-subst "" " " xstring));空格.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq xString(vl-string-subst "" "&nbsp;" xstring));tab符.<br/>&nbsp;&nbsp;&nbsp;&nbsp;);end_while<br/>&nbsp;&nbsp;&nbsp;&nbsp;(if (and (/= (substr xString 1 1) ";") (vl-string-search "," xstring) (vl-string-search "*" xstring))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq aList (read (strcat "(" (vl-string-subst " . C:" ",*" xString) ")")))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq shortCMD (vl-string-trim " " (vl-symbol-name (car aList))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(setq GlobalCMD (cdr aList))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;(vlax-remove-cmd shortCMD);删除已定义的命令.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(vlax-add-cmd shortCMD GlobalCMD)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);end_progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;);end_if<br/>&nbsp;&nbsp;&nbsp;&nbsp;(setq i (+ i 1))<br/>&nbsp;&nbsp;&nbsp;);end_while read-line<br/>&nbsp;&nbsp;&nbsp;(close fp)<br/>&nbsp;&nbsp;);end_progn then<br/>&nbsp;&nbsp;(princ "\nAY工具简化命令定义文件 Ayunger.pgp 没找到或不存在!")<br/>&nbsp;);end_if<br/>&nbsp;(princ)<br/>);end_defun</p><p><br/>;;;┏━━━━━━━━━━━━━━━━━━┓<br/>;;;┃ AY工具快捷命令自动加载(反应器调用) ┃<br/>;;;┗━━━━━━━━━━━━━━━━━━┛<br/>(C:ayCMD);调用AY工具快捷命令自动加载函数.&nbsp; <br/>(defun ayLoadSCMDReactor();建立AutoCAD文档级反应器.<br/>&nbsp;(vl-load-com)<br/>&nbsp;(if (not #AY_LOADSCMDREACTOR)<br/>&nbsp;&nbsp;&nbsp;(setq #AY_LOADSCMDREACTOR (vlr-docmanager-reactor nil '((:vlr-documentBecameCurrent . AI:aySCMDCallBack))))<br/>&nbsp;);end_if<br/>&nbsp;(defun AI:aySCMDCallBack (aReactor bList) (C:ayCMD));;;定义反应器的回调函数.<br/>);end_defun<br/>(or #AY_LOADSCMDREACTOR (ayLoadSCMDReactor));自动加载反应器.<br/>(princ "\nAutoCAD AYunger Tools Copyright (C)2001-2008 AYunger Studio")<br/>(prin1)<br/></p>

ayunger 发表于 2008-6-7 23:52:00

直接到论坛下查找,我前几天发过一个本人ayunger.fas中调用PGP的完整函数!

www2002 发表于 2008-7-2 12:18:00

老大真是高手!谢谢啦!!

zhuquanmao 发表于 2011-5-27 00:57:59

;把别人的帖子内容改了一下,直接可以把自己定义的快捷键加到acad.pgp后了。
;XXX.PGP是自定义的快捷键文件,放在支持搜索路径中,执行repgp即可。
(defun c:repgp (/ f_txt n cctd)
(princ "\n 此命令加载自定义快捷键.")
(setq f_txt (open (findfile "XXX.pgp") "r"))
(setq cctd '()); 存放读取pgp文件的文本行
(while (setq txt_row (read-line f_txt))
    (setq cctd (cons txt_row cctd))
)
(close f_txt)
(setq cctd (reverse cctd)
        n 0
)
(setq f_txt (open (findfile "acad.pgp") "A"))
(repeat (length cctd)
    (write-line (nth n cctd) f_txt)
    (setq n (+ 1 n))
)
(close f_txt)
(setvar "RE-INIT" 16)
(princ)
)

lxg3443 发表于 2015-7-1 10:29:01

zhuquanmao 发表于 2011-5-27 00:57 static/image/common/back.gif
;把别人的帖子内容改了一下,直接可以把自己定义的快捷键加到acad.pgp后了。
;XXX.PGP是自定义的快捷键文件 ...

这个每次都会在acad.pgp后面增加自己的命令 不管是不是和上次的一样 就会越来越多啊...
能不能修改 成为如果一样的话就不替换?
页: 1 [2] 3
查看完整版本: 如何新建pgp文件,定义简化命令