乐筑天下

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

[编程交流] osmode正在更改

[复制链接]

18

主题

81

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:06:05 | 显示全部楼层 |阅读模式
所以我有一个特定的设置方式,我有一个lisp例程,我可以键入一个命令,将它们全部设置回特定的方式。但由于某些原因,当我在命令中时,它会工作,然后当我退出命令或按ESC键时,在完成命令之前,我的所有设置都会运行!例如,我的osnap设置关闭,我的极轴设置从我设置的(15度)开始,然后它将其更改2.5度。东正教有时会关闭或打开。
 
无论我完成命令还是按ESC键,都会发生这种情况。我对lisp做了一些修改,试图让它对我有用,但我似乎无法让它工作。
 
有人知道这个问题的解决方法吗?还是更好的解决方案?几乎每次我运行任何命令时都会发生这种情况。
 
 
 
谢谢大家
 
  1. (defun c:K ()
  2. (setvar "POLARMODE" 1)
  3. (setvar "osmode" 551)
  4. (setvar "POLARANG" (angtof "15.0"))
  5. )
  6. ;;when you type K, it resets your osnaps to your custom setting
  7. ;;Custom Routines
  8. (defun c:c0 () (command "_copybase" "0,0") )
  9. (defun c:v0 () (command "_pasteclip" "0,0") )
  10. (defun c:ZZ () (command "layfrz") )
  11. (load "_RC-CLOUDS")
  12. (defun c:KL () (load "_KL") (C:KL))
  13. ;;DRAW BACKWARDS 3-POINT LEADER
  14. (defun c:T2MT () (load "T2MT-MT2T") (C:T2MT))
  15. ;;TEXT TO MTEXT
  16. (defun c:VB () (load "_VB") (C:VB))
  17. ;;VIEWPORT BOX IN MODELSPACE
  18. (defun c:XRR () (load "XRR") (C:XRR))
  19. ;;XREF RELOAD
  20. (defun c:XRV () (load "XRV") (C:XRV))
  21. ;;XREF RELOAD WITH VISRETAIN
  22. (defun c:XRU () (load "XRU") (C:XRU))
  23. ;;XREF DETACH
  24. (defun c:explodable () (load "explodable") (C:explodable))
  25. ;;explodable
  26. (defun c:cleanbase () (load "cleanbase") (C:cleanbase))
  27. ;;Clean base drawing
  28. (defun c:cleantitle () (load "cleantitle") (C:cleantitle))
  29. ;;Clean title drawing
  30. (Defun c:ERD () (load "_ERD") (c:ERD))
  31. (Defun c:ERH () (load "_ERD") (c:ERH))
  32. (Defun c:ERT () (load "_ERD") (c:ERT))
  33. (Defun C:QS () (command ".qsave") (princ))
  34. (defun c:read ()
  35. (defun c:qs () (alert "NO! NO! NO! NO! NO! NO!"))
  36. )
  37. (defun c:Dave()
  38. (load "_0Dave.lsp")
  39. (alert "Dave - list of commands \nK - Your ACAD Defaults \nQS - Quick Save \nERH Erase Hatch \nMA Match Properties\nREAD - removes Quick Save command \nKL - Draw backwards three point leader \nCleantitle - Clean title drawing \nCleanBase - Clean base drawing\nRCC - Rev Cloud Sketch \nRCB - Rev Cloud Block")
  40. )
  41. (print "Dave Lisp Loaded Successfully!")
  42. (princ)
  43. (defun c:MA () (COMMAND "MATCHPROP") )
  44. ;;XREF DETACH

 
 
这是我原来帖子的链接。
 
  1. http://www.cadtutor.net/forum/showthread.php?104632-osmode-is-always-changing&p=704537#post704537
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 15:14:29 | 显示全部楼层
 
您是说,在运行AutoCAD命令后,还是在从加载的lisp例程之一运行自定义命令后,所有系统变量设置都会变为wakko?
 
如果在从加载的lisp例程之一运行自定义命令后发布它,以便我们可以查看它,我可以假设您发布了acaddoc吗。lsp文件?
回复

使用道具 举报

18

主题

81

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:17:22 | 显示全部楼层
 
这不仅仅是通过一个自定义的lisp例程来实现的。甚至当我画一条简单的线,做匹配属性(在lisp上面我把它设置为MA),镜像或者其他任何事情的时候。
 
我对整个lisp程序还是比较陌生,所以如果这听起来不好,我很抱歉。但是acadoc。lsp?如果这让你发笑,请继续,哈哈
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 15:22:13 | 显示全部楼层
阿卡多克。每次打开图形时,lsp都会加载,因此其中定义的任何lisp在任何打开的图形acad中始终可用。lsp仅在打开AutoCAD时加载。
这些文件是用户定义的,不随AutoCAD一起安装。
 
我猜是上面代码中加载的lisp例程之一导致了这个问题。因为你没有使用过阿卡多克。lsp您必须已使用Appload添加了上述代码。尝试从中删除代码,然后查看重新启动AutoCAD是否可以解决此问题。
 
然后从命令行一次一个地加载这些例程,测试每个例程,看看哪个例程使系统变量设置变为wakko。发布使您的系统变量设置变为wakko的例程,我们将能够为您修复它。
回复

使用道具 举报

18

主题

81

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:27:30 | 显示全部楼层
 
 
我认为我发现了一个可能的问题。在同一个文件夹中有两个lisp例程(但对其中一个稍作修改)会导致这个问题吗?我还使用了lee mac的autoloader。但在自动加载器中,它只有其中一个文件。
 
这是我的自动加载器文件(****是我屏蔽的个人信息。因为我在工作电脑上。)
 
  1. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/AlignTextV1-4.lsp" '("AT"))
  2. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/BreakObjects22.LSP" '("BREAKALL" "BREAKOBJECT" "BREAKWOBJECT" "BREAKWLAYER" "BREAKWITH" "BREAKTOUCHING" "BREAKWITHTOUCHING" "BREAKSELECTED" "BREAKREMOVE" "MYBREAK"))
  3. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/BREAL ALL (BRKALL).lsp" '("BRKALL"))
  4. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/BubbleOff.lsp" '("BOFF"))
  5. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/CHANGE TEXT STYLE (CTS).lsp" '("CTS"))
  6. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/creater.lsp" '("CREATE"))
  7. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/del-layer.lsp" '("DEL-LAYER" "MDEL-LAYER"))
  8. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/DynamicTextAlignV1.0.lsp" '("DTA"))
  9. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/EXISTING TO REMAIN TEXT(ENT).LSP" '("ENT"))
  10. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/FLIP IT.lsp" '("FLIP"))
  11. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/GTTR.lsp" '("GTTR" "BTI" "GTTI"))
  12. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/JTEXT V1.0.LSP" '("JTEXT"))
  13. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/JTEXT V2.0.LSP" '("JTEXT"))
  14. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/justify.lsp" '("JL" "JR"))
  15. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/layer color change (LC).lsp" '("LC"))
  16. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/Layer No Plot (LNP).LSP" '("LNP"))
  17. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/Layer plot (LP).LSP" '("LP"))
  18. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/NO SPACES.LSP" '("NOSPACE"))
  19. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/pipe-calc.lsp" '("INVERT"))
  20. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/PLOT NO PLOT.LSP" '("LNP" "LP"))
  21. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/Scale All Tags(SX).lsp" '("SX"))
  22. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/Scale Text Height(TH).lsp" '("TH"))
  23. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/Spin Block(SPB).lsp" '("SPB"))
  24. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/t2m.lsp" '("T2M"))
  25. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/TEXT TO LEADER (TXL).LSP" '("TXL" "TEXTLEADER"))
  26. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/TRIM BETWEEN LINES(TB2).lsp" '("TB2"))
  27. (autoload "C:/Users/dave********/Desktop/LISP ROUTINES/XrefBind.LSP" '("XB"))

 
以下是一个lisp的代码:
  1.   ;; ENTER COMMAND OF (SX) SELECT ANY TAGS THAT YOU WANT TO CHANGE THE SCALE ON/
  2. ;; 48 = 1/4" SCALE  96 = 1/8" SCALE.
  3. ;; YOU CAN SELECT MULTI TAGS AT ONCE. AFTER YOU HAVE YOUR NEW SCALE ALL THAT YOU WILL NEED TO DO IS
  4. ;; REARRANGE BUT THIS ELMINATES YOU HAVING TO SELECT WHAT YOU WANT, GO TO PROPERTIES AND CHANGE EACH
  5. ;; VALUE OF THE X, Y AND Z AXIS (THIS COMMAND WILL ALSO REMEMBER THE LAST SCALE FACTOR USED).
  6. (defun c:SX (/ i s)
  7. (or (setq i (getenv "ScaleIt")) (setq i "48."))
  8. (if (and (not (initget 2))
  9.    (setq i (cond ((getreal (strcat "\nEnter block scale[<" i ">]: ")))
  10.                  ((read i))
  11.            )
  12.    )
  13.    (setq s (ssget ":L" '((0 . "insert"))))
  14.    (setenv "ScaleIt" (vl-princ-to-string i))
  15.      )
  16.    (foreach b (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))))
  17.      (foreach c '("X" "Y" "Z")
  18. (vl-catch-all-apply 'vlax-put (list b (read (strcat c "ScaleFactor")) i))
  19.      )
  20.    )
  21. )
  22. (princ)
  23. )
  24. (vl-load-com)

 
这是相同的代码,只是顶部的措辞略有变化
  1.   ;; TAG SCALE - 11.28.2017
  2. ;; ENTER COMMAND OF (SX) SELECT ANY TAGS THAT YOU WANT TO CHANGE THE SCALE ON/
  3. ;; 48 = 1/4" SCALE  96 = 1/8" SCALE.
  4. ;; YOU CAN SELECT MULTI TAGS AT ONCE. AFTER YOU HAVE YOUR NEW SCALE ALL THAT YOU WILL NEED TO DO IS
  5. ;; REARRANGE BUT THIS ELMINATES YOU HAVING TO SELECT WHAT YOU WANT, GO TO PROPERTIES AND CHANGE EACH
  6. ;; VALUE OF THE X, Y AND Z AXIS (THIS COMMAND WILL ALSO REMEMBER THE LAST SCALE FACTOR USED).
  7. (defun c:SX (/ i s)
  8. (or (setq i (getenv "ScaleIt")) (setq i "48."))
  9. (if (and (not (initget 2))
  10.    (setq i (cond ((getreal (strcat "\nEnter block scale[<" i ">]: ")))
  11.                  ((read i))
  12.            )
  13.    )
  14.    (setq s (ssget ":L" '((0 . "insert"))))
  15.    (setenv "ScaleIt" (vl-princ-to-string i))
  16.      )
  17.    (foreach b (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))))
  18.      (foreach c '("X" "Y" "Z")
  19. (vl-catch-all-apply 'vlax-put (list b (read (strcat c "ScaleFactor")) i))
  20.      )
  21.    )
  22. )
  23. (princ)
  24. )
  25. (vl-load-com)

 
我仍将卸载所有这些文件,然后尝试查找导致问题的文件。我还注意到,我在自动加载器中有一些我不经常使用的东西,所以是时候修剪脂肪了。
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 15:29:14 | 显示全部楼层
使用自动加载器的最大优点是,在第一次运行命令之前不会加载完整的lisp。所以在你使用它们之前,这些都不会引起问题。
另一方面,由于您在第一篇文章中似乎以某种方式加载了代码,因此可能会导致问题。
回复

使用道具 举报

18

主题

81

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:33:41 | 显示全部楼层
 
所以在删除了我在appload下启动的所有内容之后。我发现其中两个Lisp程序是问题的根源。但我也注意到,当我打开极轴追踪并将其设置为15度时,如果我画一条不在15度的线,那么绘制的下一段线就会被弄乱并偏离2-5度。
 
但这是我注意到的两个Lisp程序
 
  1. ;; THIS WILL ALLOW YOU TO BE ABLE TO CHOOSE IF YOU WANT TO HAVE THIS AT THE BEGINNING OR THE END OF TEXT
  2. ;; AFTER SELECTING P OR S YOU CAN PLACE WHAT EVER TEXT YOU WANT.
  3. ;; THIS WILL ADD TO THE BEGINNING RO THE END OF EACH SELECTED TEXT GROUP.
  4. ;;
  5. ;;
  6. (defun c:ENT (/ PreSuf Str ent Cstr)
  7. (vl-load-com)
  8. (initget "P S")
  9. (setq PreSuf (getkword "\nChoose [Prefix/Suffix]  <Prefix>: "))
  10. (if (not PreSuf)
  11.    (setq PreSuf "S")
  12. )
  13. (while (not str)
  14.    (setq str (getstring T "\nEnter String: "))
  15.    (cond ((and (eq str "")
  16. (princ "Null Input Try again")
  17. (setq str nil)
  18.    )
  19.   )
  20.    )
  21. )
  22. (while (and (setq ent (car (nentsel "\nSelect Text/Attribute: ")))
  23.       (member (cdr (assoc 0 (entget ent)))
  24.        '("TEXT" "MTEXT" "ATTRIB")
  25.       )
  26. )
  27.    (setq ent  (vlax-ename->vla-object ent)
  28.   Cstr (vla-get-textstring ent)
  29.    )
  30.    (vla-put-textstring
  31.      ent
  32.      (if (eq PreSuf "S")
  33. (strcat Cstr "" str)
  34. (strcat str "" Cstr)
  35.      )
  36.    )
  37. )(princ)
  38. )

 
  1. (defun C:FLIP ( / L f )
  2. (and
  3.    (setq L
  4.      (CycleInputs
  5.        '(
  6.          (SS (progn (princ "\n>>Select objects to mirror: ") (ssget "_:L")))
  7.          (p1 (progn (initget "Exit") (apply 'getpoint (append (if p2 (list p2)) '("First Point [Exit]: ")))) )
  8.          (p2 (progn (initget "Exit") (apply 'getpoint (append (if p1 (list p1)) '("Second Point [Exit]: ")))) )
  9.        )
  10.        (lambda (s v) (= "Exit" v) )
  11.      ); CycleInputs
  12.    ); setq L
  13.    (= 3 (length L)) (setq f (lambda (x) (cdr (assoc x L))))
  14.    (progn
  15.      (setvar 'cmdecho 0)
  16.      (command "_.MIRROR" (f 'SS) "" "_non" (f 'p1) "_non" (f 'p2) "Y")
  17.      (setvar 'cmdecho 1)
  18.    )
  19. )
  20. (princ)
  21. ); defun C:flip
  22. (defun CycleInputs ( inpL exitf / tmp )
  23. (cond  ; (87 114 105 116 116 101 110 32 98 121 32 71 114 114 114)
  24.    ( (not inpL) inpL)
  25.    ( (setq tmp (vl-catch-all-apply (function (lambda (a b) (set a (eval b)))) (car inpL)))
  26.      (cond
  27.        ( (vl-catch-all-error-p tmp) (prompt (vl-catch-all-error-message tmp)) )
  28.        ( (and exitf (vl-catch-all-apply (function exitf) (list (caar inpL) tmp))) (set (caar inpL) nil) )
  29.        (
  30.          (mapcar (function (lambda (tmp) (set (car tmp) nil) tmp))
  31.            (cons (cons (caar inpL) tmp) (CycleInputs (cdr inpL) exitf))
  32.          )
  33.        )
  34.      )
  35.    )
  36.    ( (CycleInputs (reverse (cons (car inpL) (reverse (cdr inpL)))) exitf) )
  37. )
  38. )

 
再次感谢您的帮助/
回复

使用道具 举报

18

主题

81

帖子

63

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:37:41 | 显示全部楼层
我想知道的是,如果您要将错误处理程序lisp例程保存在所有lisp例程所在的同一个文件中,并且您运行的每个lisp例程在使用自定义lisp时都会调用错误处理程序?这是可能的吗?
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 15:41:48 | 显示全部楼层
ENT被定义为函数名和局部变量。我会修改函数名,因为ENT是最常用的lisp变量之一,因为它用于实体。仅供参考:Cadalyst tip 1527A DDAPTXT。LSP追加到文本©1999年6月,Scott A.Matthews有一个很好的对话框例程,用于向文本添加前缀和后缀。
 
FLIP的全局变量可能与加载到图形中的其他代码冲突。
改变
  1. 8

通常用于选择集的SS可能是最常用的lisp变量。
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 15:47:42 | 显示全部楼层
 
通常,我会将*ERROR*添加为局部变量,并在主函数中定义一个*ERROR*函数,以便在需要时重置所有内容,而不修改默认的*ERROR*函数。
任何允许用户输入或运行足够长时间以使某人按Esc键的功能都需要说明有人响应不正确。只有在例程顺利完成时,才能在例程结束时重置系统变量。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 07:21 , Processed in 2.705268 second(s), 72 queries .

© 2020-2025 乐筑天下

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