乐筑天下

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

[编程交流] AutoCAD 2007的图层状态

[复制链接]

9

主题

37

帖子

28

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 10:47:05 | 显示全部楼层 |阅读模式
我发现图层状态非常有用。然而,来自ACAD帮助的信息非常有限。要访问层状态,我总是需要传递通常的层属性。。然后单击一些图标。是否可以使用LISP或快捷方式来轻松调用/恢复特定的保存图层状态?比如说一个命令,比如RL1(恢复名为1的层状态),等等。。或类似场景。
 
谢谢!
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:54:23 | 显示全部楼层
你是说打开还是关闭图层?如果是这样
 
http://www.cadtutor.net/forum/showthread.php?t=45943
 
或者看看:
 
http://www.theswamp.org/index.php?topic=33764.msg391362#msg391362
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:58:55 | 显示全部楼层
我不使用LayerState,但:
 
  1. (defun c:rl1 nil
  2. (vl-load-com)
  3. (layerstate-restore "1" nil nil)
  4. (princ)
  5. )

 
阅读layerstate函数的帮助文件,我相信你会有所收获。
回复

使用道具 举报

9

主题

37

帖子

28

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 11:06:13 | 显示全部楼层
谢谢你们的回复和代码,给你们更多的力量!
@李:谢谢,但我认为我的CAD有一个问题-错误消息“没有功能定义”(见附件)。我用的是2007版。你怎么认为?

                               
登录/注册后可看大图

 
与ImageShack一起上载。我们
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:09:44 | 显示全部楼层
谢谢,不客气
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:12:31 | 显示全部楼层
我认为LayerState函数直到2009年才引入。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:18:58 | 显示全部楼层
我在想我的档案文件夹里有一些这样的功能。。。
 
 
  1. ;;; Alan J. Thompson
  2. ;;; LayerStateSave Values
  3. ;;; Combine numeric values to use more than one (ie: 32+2+64)
  4. ;;; CONSTANT    LAYER PROPERTY        NUMERIC VALUE
  5. ;;; -----------------------------------------------------
  6. ;;; acLsAll        All            65535
  7. ;;; acLsColor        Color            32
  8. ;;; acLsFrozen        Frozen or thawed    2
  9. ;;; acLsLineType    Linetype        64
  10. ;;; acLsLineWeight    Lineweight        128
  11. ;;; acLsLocked        Locked or unlocked    4
  12. ;;; acLsNewViewport    New viewport layers     16
  13. ;;;             frozen or thawed
  14. ;;; acLsNone        None            0
  15. ;;; acLsOn        On or off        1
  16. ;;; acLsPlot        Plotting on or off    8
  17. ;;; acLsPlotStyle    Plot style        256
  18. ;;; LayerStateList
  19. (defun LayerStateList (/ #List)
  20. (vlax-for x
  21.            (vla-item (vla-getextensiondictionary
  22.                        (vla-get-layers
  23.                          (vla-get-activedocument (vlax-get-acad-object))
  24.                        ) ;_ vla-get-layers
  25.                      ) ;_ vla-getextensiondictionary
  26.                      "ACAD_LAYERSTATES"
  27.            ) ;_ vla-item
  28.    (setq #List (cons (vla-get-name x) #List))
  29. ) ;_ vlax-for
  30. (reverse #List)
  31. ) ;_ defun
  32. ;;; LayerStateManager
  33. (defun LayerStateManager (/)
  34. (or *LayerStateManager*
  35.      (setq *LayerStateManager*
  36.             (vla-getinterfaceobject
  37.               (vlax-get-acad-object)
  38.               (strcat
  39.                 "AutoCAD.AcadLayerStateManager."
  40.                 (itoa (fix (atof (getvar "acadver"))))
  41.               ) ;_ strcat
  42.             ) ;_ vla-getinterfaceobject
  43.      ) ;_ setq
  44. ) ;_ or
  45. (vla-setdatabase
  46.    *LayerStateManager*
  47.    (vla-get-database
  48.      (vla-get-activedocument (vlax-get-acad-object))
  49.    ) ;_ vla-get-database
  50. ) ;_ vla-setdatabase
  51. ) ;_ defun
  52. ;;; LayerStateRelease
  53. (defun LayerStateRelease (/)
  54. (not (vl-catch-all-error-p
  55.         (vl-catch-all-apply
  56.           'vlax-release-object
  57.           (list *LayerStateManager*)
  58.         ) ;_ vl-catch-all-apply
  59.       ) ;_ vl-catch-all-error-p
  60. ) ;_ not
  61. ) ;_ defun
  62. ;;; LayerStateSave
  63. (defun LayerStateSave (#Name #Prop)
  64. (LayerStateManager)
  65. (if
  66.    (not
  67.      (vl-catch-all-error-p
  68.        (vl-catch-all-apply
  69.          '(lambda ()
  70.             (vlax-invoke-method *LayerStateManager* 'Save #Name #Prop)
  71.           ) ;_ lambda
  72.        ) ;_ vl-catch-all-apply
  73.      ) ;_ vl-catch-all-error-p
  74.    ) ;_ not
  75.     #Name
  76. ) ;_ if
  77. ) ;_ defun
  78. ;;; LayerStateRestore
  79. (defun LayerStateRestore (#Name)
  80. (LayerStateManager)
  81. (if (not
  82.        (vl-catch-all-error-p
  83.          (vl-catch-all-apply
  84.            '(lambda ()
  85.               (vlax-invoke-method *LayerStateManager* 'Restore #Name)
  86.             ) ;_ lambda
  87.          ) ;_ vl-catch-all-apply
  88.        ) ;_ vl-catch-all-error-p
  89.      ) ;_ not
  90.    #Name
  91. ) ;_ if
  92. ) ;_ defun
  93. ;;; LayerStateDelete
  94. (defun LayerStateDelete (#Name)
  95. (LayerStateManager)
  96. (if (not
  97.        (vl-catch-all-error-p
  98.          (vl-catch-all-apply
  99.            '(lambda ()
  100.               (vlax-invoke-method *LayerStateManager* 'Delete #Name)
  101.             ) ;_ lambda
  102.          ) ;_ vl-catch-all-apply
  103.        ) ;_ vl-catch-all-error-p
  104.      ) ;_ not
  105.    #Name
  106. ) ;_ if
  107. ) ;_ defun
回复

使用道具 举报

9

主题

37

帖子

28

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 11:26:02 | 显示全部楼层
我明白了,也许这就是为什么我现在的版本不起作用的原因。谢谢
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:31:04 | 显示全部楼层
不客气。尝试上述例程。我在运行旧版本的Acad时将它们放在一起。
回复

使用道具 举报

9

主题

37

帖子

28

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 11:36:06 | 显示全部楼层
 
谢谢Alan,很抱歉我是个新手,但我将如何使用它,我的意思是我应该在命令行键入什么?“defun”后面的单词是指命令吗?谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 16:57 , Processed in 0.595802 second(s), 75 queries .

© 2020-2025 乐筑天下

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