明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1889|回复: 3

程序出错,请高手指点

[复制链接]
发表于 2005-8-27 12:54:00 | 显示全部楼层 |阅读模式

我编了一个简单的小程序,作用是选择一个物体,当物体所在层是锁上的,就打开这个层,如果这个层是打开的,就锁上它,目的是把锁和开用一个程序.这个程序在运行到倒数第二句的时候出错,意思是lay的数据类型不对,这种问题该如何解决:

(defun ToF(msg)

  (if (= msg :vlax-true)

    (setq msg :vlax-false)

    (setq msg :vlax-true)

  )
  msg

)


(defun c:aa()
  (setq hh(entsel "\nSelect an entity:"))
  (setq hh (car hh)
 hh (vlax-ename->vla-object hh)
 lay(vla-get-layer hh)
 )
 
 
(vla-put-Lock lay (ToF (vla-get-Lock Lay)))
  )

发表于 2005-8-27 14:46:00 | 显示全部楼层
lay值是字符串,(vla-get-Lock Lay)的参数要求是VAL对象。上锁层中的园元是不显示的,用“entsel ”怎能进行选择?
发表于 2005-8-27 15:57:00 | 显示全部楼层

你的对象属性搞错了,要实现你要的功能,要如下:

(defun ToF(msg)

  (if (= msg :vlax-true)

    (setq msg :vlax-false)

    (setq msg :vlax-true)

  )
  msg

)
(defun c:aa( / hh lay layers n i en)
  (setq hh(entsel "\nSelect an entity:"))
  (setq hh (car hh)
 hh (vlax-ename->vla-object hh)
 lay(vla-get-layer hh)
 )
  (setq layers(vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
  (setq n(vla-get-count layers))
  (setq i 0)
  (while (< i n)
    (setq en(vla-item layers i)
   i(1+ i))
    (if (= lay (vla-get-name en))
  (vla-put-Lock en (ToF (vla-get-Lock en)))
      )
  )
  )

 楼主| 发表于 2005-8-28 21:37:00 | 显示全部楼层
谢谢楼上的兄弟,按照你的修改完全没问题了,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-13 05:36 , Processed in 0.167826 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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