乐筑天下

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

[编程交流] 清除Lisp

[复制链接]

31

主题

107

帖子

76

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-6 15:12:10 | 显示全部楼层 |阅读模式
我有这个:
 
  1. (defun c:ax:purge-layers (doc except)
  2. (vlax-for item (vla-get-layers doc)
  3.    (setq ln (vla-get-name item))
  4.    (if (not (member (strcase ln) except))
  5.      (purge-layer ln)
  6.    )
  7. )
  8. )
  9. (defun c:DeleteLayerFilters ()
  10. (vl-Catch-All-Apply
  11.    '(lambda ()
  12.       (vla-Remove
  13. (vla-GetExtensionDictionary
  14.    (vla-Get-Layers
  15.      (vla-Get-ActiveDocument (vlax-Get-Acad-Object))
  16.    )
  17. )
  18. "ACAD_LAYERFILTERS"
  19.       )
  20.     )
  21. )
  22. (princ)
  23. )
  24. (defun c:DeleteLayerFilters2 ()
  25. (vl-Catch-All-Apply
  26.    '(lambda ()
  27.       (vla-Remove
  28. (vla-GetExtensionDictionary
  29.    (vla-Get-Layers
  30.      (vla-Get-ActiveDocument (vlax-Get-Acad-Object))
  31.    )
  32. )
  33. "AcLyDictionary"
  34.       )
  35.     )
  36. )
  37. (princ)
  38. )
  39. (defun c:test ()
  40. (command "_layer" "On" "0" "t" "0" "s" "0" "")
  41. (command "_purge" "a" "*" "n")
  42. (command "-purge" "r" "*" "n")
  43. (C:DeleteLayerFilters)
  44. (C:DeleteLayerFilters2)
  45. (c:ax:purge-layers)
  46. (if (= (getvar "tilemode") 1)
  47.    (prompt "\nModel is purged.")
  48.    (prompt "\nLayout is purged.")
  49. )
  50. (princ)
  51. )

 
它正在工作,但没有提示,我得到的错误是:
命令:“参数太少”
 
谢谢你的帮助!
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 15:27:34 | 显示全部楼层
1.c:ax:purge layers不能是命令!这是一个函数(它有2个参数)
2.在本页中,我没有找到功能清除层
试试看(稍作改动)
  1. ;;; Purge named layer
  2. ;;; Example: (ax:purge-layer (vla-get-activedocument (vlax-get-acad-object)) "testlayer")
  3. ;;; Argument: doc {document}
  4. ;;;           name {a layer name}
  5. ;;; Return values: T if successful, nil if not successful
  6. (defun ax:purge-layer (doc name)
  7. (if (vl-catch-all-error-p
  8.        (vl-catch-all-apply
  9.          'vla-delete
  10.          (list (vl-catch-all-apply
  11.                  'vla-item
  12.                  (list (vla-get-layers doc) name)
  13.                )
  14.          )
  15.        )
  16.      )
  17.    nil ; name cannot be purged or doesn't exist
  18.    T ; name purged
  19. )
  20. )
  21. ;;; Purge all layers
  22. ;;; Example: (ax:purge-all-layers (vla-get-activedocument (vlax-get-acad-object
  23. ;;; Argument: doc {document}
  24. (defun ax:purge-all-layers (doc)
  25. (vlax-for item (vla-get-layers doc)
  26.    (ax:purge-layer doc (vla-get-name item))
  27. )
  28. )
  29. (defun DeleteLayerFilters ()
  30. (vl-Catch-All-Apply
  31.    '(lambda ()
  32.       (vla-Remove
  33. (vla-GetExtensionDictionary
  34.    (vla-Get-Layers
  35.      (vla-Get-ActiveDocument (vlax-Get-Acad-Object))
  36.    )
  37. )
  38. "ACAD_LAYERFILTERS"
  39.       )
  40.     )
  41. )
  42. (princ)
  43. )
  44. (defun DeleteLayerFilters2 ()
  45. (vl-Catch-All-Apply
  46.    '(lambda ()
  47.       (vla-Remove
  48. (vla-GetExtensionDictionary
  49.    (vla-Get-Layers
  50.      (vla-Get-ActiveDocument (vlax-Get-Acad-Object))
  51.    )
  52. )
  53. "AcLyDictionary"
  54.       )
  55.     )
  56. )
  57. (princ)
  58. )
  59. (defun c:test ()
  60. (vl-load-com)
  61. (command "_layer" "_On" "0" "_t" "0" "_s" "0" "")
  62. ;;;(command "_-purge" "_a" "*" "_n")
  63. (repeat 3 (vla-purgeall (vla-get-activedocument (vlax-get-acad-object))))
  64. (command "_-purge" "_r" "*" "_n")
  65. (DeleteLayerFilters)
  66. (DeleteLayerFilters2)
  67. (ax:purge-all-layers (vla-get-activedocument (vlax-get-acad-object)))
  68. (if (= (getvar "tilemode") 1)
  69.    (alert "Model is purged.")
  70.    (alert "Layout is purged.")
  71. )
  72. (princ)
  73. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:41:05 | 显示全部楼层
函数
 
  1. (defun c:ax:purge-layers (doc except)

 
需要两个参数,即“doc”和“except”。
 
调用函数时需要指定这些参数。
 
如果像上面这样的函数要在另一个函数中调用,而不是单独调用,为什么不将它们指定为局部函数呢
 

 
(defun ax:清除图层。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:51:55 | 显示全部楼层
哦,VVA,在那里比我快几分钟
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 16:11:09 | 显示全部楼层
为什么很少?只有一个:眨眼:
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:22:44 | 显示全部楼层
 
 
好吧,那么只有一个——我没有仔细看《泰晤士报》。。。我最诚挚的歉意:哎呀::哎呀::哎呀:
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 19:36 , Processed in 0.735791 second(s), 64 queries .

© 2020-2025 乐筑天下

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