明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 455|回复: 1

[提问] 冻结选取层外的其他图层时出现错误,求帮助!

  [复制链接]
发表于 2019-10-9 16:07:57 | 显示全部楼层 |阅读模式
下面是代码(defun c:djqtc()
  (acad-activex-base)   ;djqtc=冻结其他层
  (defun acad-activex-base ()
    (vl-load-com)
    (setq acadobj (vlax-get-acad-object))
    (setq dwgobj (vla-get-ActiveDocument acadobj))
    (setq mspace (vla-get-ModelSpace dwgobj))
  )
  (setq layersobj (vla-get-layers dwgobj))
  (princ "\n选择对象")
  (setq ss (ssget))
  (setq i 0 enlaylist nil)
  (repeat (sslength ss)
    (setq en (ssname ss i))
    (setq xobj (vlax-ename->vla-object en))
    (setq lay (vla-get-layer xobj))
    (if (not (member lay enlaylist))
      (setq enlaylist (cons lay enlaylist))
      )
    (setq i (1+ i))
    )
  (vlax-for sobj layersobj
    (vla-put-Freeze sobj 0)
    )
  (foreach layr enlaylist
    (vlax-for sobj layersobj
      (setq layn (vla-get-name sobj))
      (if (= layn layr)
        (vla-put-Freeze sobj 0)
        )
      )
    )
  (acad-activex-exit)
  (defun acad-activex-exit () (vlax-release-object acadobj))
  (princ)
  )
然后出现错误提示:错误!Automation 错误。 图层无效 想了半天了 一直解不出来,求大佬帮忙解决一下!谢谢


"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2019-10-9 16:50:15 | 显示全部楼层
好吧 我自己解决了   
  1. (vlax-for sobj layersobj
  2.     (if (/= (vla-get-name sobj) "0")
  3.       (vla-put-Freeze sobj -1)
  4.       )
  5.     )
复制代码

这里这样改就能运行了 如果各位大佬看到我程序的缺点,请提出来。谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-29 05:19 , Processed in 0.152982 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表