明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2549|回复: 10

[求助] 有个疑问[图层变换],不知如何修改,还望高手解决

[复制链接]
发表于 2011-10-17 18:22:01 | 显示全部楼层 |阅读模式
本帖最后由 429014673 于 2011-10-17 18:38 编辑

我同事给我一个更改图层程序,但一直有个疑问,不知如何修改,还望高手解决,感激不尽呀,,,,就是我在有些图纸更改图层未能如愿,如我先选择图元后,再按命令00,在有些图纸上图元会变为00层,但有些图纸上不会变为00层,,提示说:

命令:  00
*无效选择*
需要点或
窗口(W)/上一个(L)/窗交(C)/框(BOX)/全部(ALL)/栏选(F)/圈围(WP)/圈交(CP)/编组(G)/类
(CL)
; 错误: 函数被取消

选择对象:  指定修改点或 [特性(P)]:  未选择可修改的对象


(DEFUN LAYERCH(MYLSP / LAYCH)
(if (setq LAYCH (ssget "i"))         
  (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
   (command "_layer" "m" mylsp  "")   
)

   (princ)
)
(DEFUN C:00() (LAYERCH "00"))

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-10-17 19:10:14 | 显示全部楼层
(DEFUN LAYERCH()
(if (setq LAYCH (ssget))
  
  (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" "00" "")
     
)
   (princ)
)
(DEFUN C:00()
  (command "_layer" "m" "00"  "")
  (LAYERCH)
)



先输入命令“00”再选择。一样的
发表于 2011-10-17 19:10:47 | 显示全部楼层
(DEFUN LAYERCH(MYLSP / LAYCH)
   (command "_layer" "m" mylsp  "")
   (if (setq LAYCH (ssget))         
     (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
  )
)


(DEFUN C:00() (LAYERCH "00"))

评分

参与人数 1明经币 +1 收起 理由
429014673 + 1 赞一个!

查看全部评分

 楼主| 发表于 2011-10-18 20:28:41 | 显示全部楼层
本帖最后由 429014673 于 2011-10-18 20:31 编辑
caoyin 发表于 2011-10-17 19:10
(DEFUN LAYERCH(MYLSP / LAYCH)
   (command "_layer" "m" mylsp  "")
   (if (setq LAYCH (ssget))      ...


谢谢,,,,版主老大,,,
 楼主| 发表于 2011-10-19 07:17:48 来自手机 | 显示全部楼层
caoyin 发表于 2011-10-17 19:10  (DEFUN LAYERCH(MYLSP / LAYCH)  (command"_layer""m" mylsp"")  (if (setq LAYCH (ssget)) ...

老大,这个可以增加先选图元后输命令方式吗?因我在画图时已习惯了先图元后命令和先命令后图元这两个方式同时存在,没有上面那个方式一时习惯不了。谢谢
发表于 2011-10-19 08:07:29 | 显示全部楼层
...这两个方式同时存在...
(or (setq ss (ssget "i")) (setq ss (ssget)))
 楼主| 发表于 2011-10-19 08:14:57 | 显示全部楼层
Andyhon 发表于 2011-10-19 08:07
...这两个方式同时存在...
(or (setq ss (ssget "i")) (setq ss (ssget)))

请问怎么在程序里加入去呢????
发表于 2011-10-19 08:31:24 | 显示全部楼层
(if (setq LAYCH (ssget))         
     (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
  )
===>
(if (or (setq ss (ssget "i")) (setq ss (ssget)))
    (command "_.change" ss "" "_p" "_LT" "BYLAYER" "_C" "BYLAYER" "_la" mylsp "")
)
 楼主| 发表于 2011-10-20 08:42:18 | 显示全部楼层
Andyhon 发表于 2011-10-19 08:31
(if (setq LAYCH (ssget))         
     (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLA ...

先选择图形再输入命令则将选择的图形转换到指定的层,
不选择图形直接输入命令则将指定的层转换为当前层.


老大,我想实现是上面的功能,,...
发表于 2011-10-20 14:14:08 | 显示全部楼层
本帖最后由 brige2009 于 2011-10-21 10:58 编辑

按照楼主的要求:
先选择图形再输入命令则将选择的图形转换到指定的层(如01层),
不选择图形直接输入命令然后回车确定则将指定的层(如01层)转换为当前层。

编写了下面小程序,希望对楼主有所帮助!

此程序要求:01层必须存在,如果01层不存在,可在程序中加入代码
;************************************************************************8
  (if (not (tblsearch "layer" "01"))
       (command "_.layer" "make" "01" "_color" "210" "01" "_ltype" "CONTINUOUS" "01" "")
;************************************************************************************8
创建01层,创建的同时设置01层的线型和颜色等参数
  1. ;*************************************************************
  2. ;
  3. ;程序编制:brige      日期:2011.10.20
  4. ;
  5. ;************************************************************
  6. (defun c:OO ()

  7. (setvar "pickadd" 1)
  8. (setq oldlayer (GETVAR "clayer"))
  9. (setq ss (ssget))   ;先选择对象

  10. (if ss          ;如果选择对象或图形            
  11.     (progn
  12.     (command "chprop" ss "" "la" "01" "")   ; 将选择的对象或图形切换到01层
  13.     (setvar "clayer" oldlayer)   ;;;如果不选择对象,则将01层转换为当前层
  14.    (command "regen")  
  15.     )
  16.    (progn
  17.    (prompt(strcat "\n切换到粗实线层"))    ;; 状态栏提示“切换到粗实线层01
  18.    (setvar "clayer" "01")
  19.     )
  20.   )
  21. )
  22. ;**************************************************

评分

参与人数 1明经币 +1 收起 理由
429014673 + 1 很给力!

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-25 10:54 , Processed in 0.209157 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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