乐筑天下

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

[编程交流] 交叉检查

[复制链接]

55

主题

325

帖子

274

银币

后起之秀

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

铜币
280
发表于 2022-7-6 10:58:47 | 显示全部楼层 |阅读模式
就像我在这里的最后几篇帖子中提到的,我对整个lisp都是新手。我仍在努力弄清楚它在做什么和/或意味着什么。所以我想知道是否有人可以看一下我拼凑的Lisp程序程序。这绝对不是我一个人写的。此lisp是我们从其他承包商处收到的图纸的清理程序。这似乎是正确的工作,但你们可能会有一些好的建议,像我这样的新手。
 
  1. (defun c:scrubdwg (/ *error* uFlag)
  2.     (vl-load-com)
  3.     (defun *error* (msg)
  4.     (and uFlag (vla-EndUndoMark *doc))
  5.     (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  6.     (princ (strcat "\n** Error: " msg " **")))
  7.     (princ))
  8.     (setq *doc (cond (*doc)((vla-get-ActiveDocument
  9.     (vlax-get-acad-object)))))
  10. ;;; Set UCS to world
  11.     (command "setvar" "cmdecho" 0)(command "ucsfollow" "1")
  12.     (command "setvar" "cmdecho" 0)(command "ucs" "w")
  13.     (command "setvar" "cmdecho" 0)(command "ucsfollow" "0")
  14. ;;; Detach all xrefs
  15.     (command "setvar" "cmdecho" 0)(command "-xref" "D" "*")
  16. ;;; Delete all layout tabs
  17.     (vlax-for lay  (vla-get-layouts *doc)
  18.     (if (not (eq "MODEL" (strcase (vla-get-Name lay))))
  19.     (vla-delete lay)))
  20. ;;; Changes all layers to thaw, on, unlock, and .25mm lineweight. Set current layer to 0.
  21.     (command "setvar" "cmdecho" 0)(command "-layer" "t" "*" "on" "*" "u" "*" "s" "0" "lw" "0.25" "*" "")
  22. ;;; Delete all layer filters
  23.     (vl-catch-all-apply
  24.     '(lambda ()
  25.     (vla-remove
  26.     (vla-getextensiondictionary
  27.     (vla-get-layers
  28.     (vla-get-activedocument (vlax-get-acad-object))
  29.      ) ;_ end of vla-Get-Layers
  30.      ) ;_ end of vla-GetExtensionDictionary
  31.     "AcLyDictionary"
  32.      ) ;_ end of vla-Remove
  33.      ) ;_ end of lambda
  34.      ) ;_ end of vl-Catch-All-Apply
  35. ;;; Delete all layer states
  36.     (if (setq states (layerstate-getnames t t))
  37.     (mapcar (function layerstate-delete) states))
  38. ;;; Delete all named views
  39.     (command "setvar" "cmdecho" 0)(command "-view" "s" "junk")(command "-view" "d" "*")
  40. ;;; Set insertion basepoint to 0,0,0
  41.     (command "setvar" "cmdecho" 0)(command "insbase" "0,0,0")
  42. ;;; Set overall, modelspace, and paperspace linetype scales to 1
  43.     (command "setvar" "cmdecho" 0)(command "ltscale" 1)(command "msltscale" 1)(command "psltscale" 1)
  44. ;;; Set annotation scale to 1/4" = 1'-0"
  45.     (command "setvar" "cmdecho" 0)(command "_CANNOSCALE" "1/4\042 = 1'-0\042")
  46. ;;; Delete unused scales
  47.     (command "setvar" "cmdecho" 0)(command "-SCALELISTEDIT" "d" "*" "e")
  48. ;;; Erase x data
  49.     (command "setvar" "cmdecho" 0)(command "erase" (ssget"x") "r")(princ))
  50. ;---------------------------------------------------------------------------------------------------------
  51. (defun c:scrubdwg2 ()
  52. ;;; Set all object colors to bylayer
  53.     (command "setvar" "cmdecho" 0)(command "setbylayermode" "1")
  54.     (command "setvar" "cmdecho" 0)(command "setbylayer" "all" "" "y" "y")
  55. ;;; Delete all regapps
  56.     (command "setvar" "cmdecho" 0)(command "-purge" "r" "" "n")
  57. ;;; Run an audit on the drawing file
  58.     (command "setvar" "cmdecho" 0)(command "audit" "y")
  59. ;;; Purge all unused items
  60.     (command "setvar" "cmdecho" 0)(command "-purge" "a" "*" "n")
  61. ;;; Zoom extents
  62.     (command "setvar" "cmdecho" 0)(command "zoom" "e")(princ))
回复

使用道具 举报

55

主题

325

帖子

274

银币

后起之秀

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

铜币
280
发表于 2022-7-6 11:06:44 | 显示全部楼层
有人愿意把我的Lisp程序扫过去吗?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:12:55 | 显示全部楼层
首先,只需将cmdecho变量设置为0一次。
回复

使用道具 举报

55

主题

325

帖子

274

银币

后起之秀

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

铜币
280
发表于 2022-7-6 11:21:33 | 显示全部楼层
这是对整个lisp执行一次还是对每个命令执行一次?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:31:10 | 显示全部楼层
整个LISP
回复

使用道具 举报

55

主题

325

帖子

274

银币

后起之秀

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

铜币
280
发表于 2022-7-6 11:35:10 | 显示全部楼层
谢谢你的建议。我假设因为在这个lisp中我有两个函数,所以我必须为每个函数(不是命令)正确设置一次。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:42:26 | 显示全部楼层
如。
 
  1. (defun c:Test (/ p1 p2 cmd)
  2. (if (and (setq p1 (getpoint "\nSpecify first point: "))
  3.           (setq p2 (getpoint p1 "\nSpecify end point: "))
  4.      )
  5.    (progn
  6.      (setq cmd (getvar 'cmdecho))
  7.      (setvar 'cmdecho 0)
  8.      (command "_.line" "_non" p1 "_non" p2 "")
  9.      (setvar 'cmdecho cmd)
  10.    )
  11. )
  12. (princ)
  13. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:49:30 | 显示全部楼层
开始时设置,结束时重置。。。
 
例(2)。。。
 
  1. (defun c:Test (/ _fnc p1 p2 cmd)
  2. (defun _fnc (/) (alert "Hey look, I'm a separate function!"))
  3. (if (and (setq p1 (getpoint "\nSpecify first point: "))
  4.           (setq p2 (getpoint p1 "\nSpecify end point: "))
  5.      )
  6.    (progn
  7.      (setq cmd (getvar 'cmdecho))
  8.      (setvar 'cmdecho 0)
  9.      (_fnc)
  10.      (command "_.line" "_non" p1 "_non" p2 "")
  11.      (_fnc)
  12.      (setvar 'cmdecho cmd)
  13.    )
  14. )
  15. (princ)
  16. )
回复

使用道具 举报

55

主题

325

帖子

274

银币

后起之秀

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

铜币
280
发表于 2022-7-6 11:58:16 | 显示全部楼层
我会的。再次感谢。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 12:01:59 | 显示全部楼层
不客气。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 11:30 , Processed in 0.388812 second(s), 83 queries .

© 2020-2025 乐筑天下

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