lohas1118 发表于 2011-10-26 08:59:08

请大家看看这两个程序什么地方有问题,每次使用时必须重复选择。请多多赐教!

请大家看看这两个程序什么地方有问题,每次使用时必须重复选择。请多多赐教!
;;;;;;;琐层
(defun c:xs()
(setvar "cmdecho" 0)
(while t
(prin1 "请选择要上琐层的实体")
(setq ss0 (ssget))
(setq ln (sslength ss0))
(setq n 0)
(repeat ln
(setq na (ssname ss0 n))
   (setq ent (entget na))
   (setq cen (assoc 8 ent))
   (setq cenn (cdr cen))
   (command "layer" "lock" cenn "")
   (setq n (+ n 1))
   
);repeat
   )
)


;;;;;;;解琐层
(defun c:js()
(setvar "cmdecho" 0)
(while t

(prin1 "请选择要解琐层的实体")
(setq ss0 (ssget))
(setq ln (sslength ss0))
(setq n 0)
(repeat ln
(setq na (ssname ss0 n))
   (setq ent (entget na))
   (setq cen (assoc 8 ent))
   (setq cenn (cdr cen))
   (command "layer" "unlock" cenn "")
   (setq n (+ n 1))
   
);repeat
   )
)

lincctw_ccl 发表于 2011-10-26 09:19:31

很正常呀!!
每次使用时必须重复选择<---不太明白意思
是否是要 锁定图层可选择 而解锁是不用选择 全部解锁???

lohas1118 发表于 2011-10-26 09:32:22

本帖最后由 lohas1118 于 2011-10-26 09:32 编辑

lincctw_ccl 发表于 2011-10-26 09:19 http://bbs.mjtd.com/static/image/common/back.gif
很正常呀!!
每次使用时必须重复选择

不好意思,是我没说清楚。加载后使用命令,选择需锁的图层,选择对像后又重复的出现选择对像,没完没了。

lincctw_ccl 发表于 2011-10-26 09:36:29

例:
可能是ss0 没设成变量吧!!
(defun c:js(/ ss0)

byghbcx 发表于 2011-10-26 09:50:33

while T,T永远是真了

lohas1118 发表于 2011-10-26 11:37:21

byghbcx 发表于 2011-10-26 09:50 static/image/common/back.gif
while T,T永远是真了

请问该如何修改呢,万分感谢。

ZZXXQQ 发表于 2011-10-26 12:21:45


;;;;;;;琐层
(defun c:xs ()
(setvar "cmdecho" 0)
(if (and
      (prin1 "请选择要上琐层的实体")
      (setq ss0 (ssget))
   ) (progn
(setq n 0)
(repeat (sslength ss0)
   (setq cenn (cdr (assoc 8 (entget (ssname ss0 n)))))
   (command "layer" "lock" cenn "")
   (setq n (1+ n))
);repeat
))
(princ)
)
;;;;;;;解琐层
(defun c:js ()
(setvar "cmdecho" 0)
(if (and
      (prin1 "请选择要解琐层的实体")
      (setq ss0 (ssget))
   ) (progn
(setq n 0)
(repeat (sslength ss0)
   (setq cenn (cdr (assoc 8 (entget (ssname ss0 n)))))
   (command "layer" "unlock" cenn "")
   (setq n (1+ n))
);repeat
))
(princ)
)

byghbcx 发表于 2011-10-26 14:08:12

(defun c:xs()
(setvar "cmdecho" 0)
(while (setq ss0 (ssget))
(princ "请选择要上琐层的实体<空选结束>:")
(setq ln (sslength ss0))
(setq n 0)
(repeat ln
(setq na (ssname ss0 n))
   (setq ent (entget na))
   (setq cen (assoc 8 ent))
   (setq cenn (cdr cen))
   (command "layer" "lock" cenn "")
   (setq n (+ n 1))
);repeat
   )
)

lohas1118 发表于 2011-10-26 14:40:16

ZZXXQQ 发表于 2011-10-26 12:21 static/image/common/back.gif


感谢版主大架光临为小生解决问题!

lohas1118 发表于 2011-10-26 14:44:55

byghbcx 发表于 2011-10-26 14:08 static/image/common/back.gif
(defun c:xs()
(setvar "cmdecho" 0)
(while (setq ss0 (ssget))


非常感谢大家指导,已OK。万分感谢!
页: [1] 2
查看完整版本: 请大家看看这两个程序什么地方有问题,每次使用时必须重复选择。请多多赐教!