429014673 发表于 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"))

nxchenjk 发表于 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”再选择。一样的

caoyin 发表于 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"))

429014673 发表于 2011-10-18 20:28:41

本帖最后由 429014673 于 2011-10-18 20:31 编辑

caoyin 发表于 2011-10-17 19:10 http://bbs.mjtd.com/static/image/common/back.gif
(DEFUN LAYERCH(MYLSP / LAYCH)
   (command "_layer" "m" mylsp"")
   (if (setq LAYCH (ssget))      ...

谢谢,,,,版主老大,,,

429014673 发表于 2011-10-19 07:17:48

caoyin 发表于 2011-10-17 19:10(DEFUN LAYERCH(MYLSP / LAYCH)(command"_layer""m" mylsp"")(if (setq LAYCH (ssget)) ...

老大,这个可以增加先选图元后输命令方式吗?因我在画图时已习惯了先图元后命令和先命令后图元这两个方式同时存在,没有上面那个方式一时习惯不了。谢谢

Andyhon 发表于 2011-10-19 08:07:29

...这两个方式同时存在...
(or (setq ss (ssget "i")) (setq ss (ssget)))

429014673 发表于 2011-10-19 08:14:57

Andyhon 发表于 2011-10-19 08:07 static/image/common/back.gif
...这两个方式同时存在...
(or (setq ss (ssget "i")) (setq ss (ssget)))

请问怎么在程序里加入去呢????

Andyhon 发表于 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 "")
)

429014673 发表于 2011-10-20 08:42:18

Andyhon 发表于 2011-10-19 08:31 static/image/common/back.gif
(if (setq LAYCH (ssget))         
   (command "_.change" LAYCH "" "_p" "_LT" "BYLAYER" "_C" "BYLA ...

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


老大,我想实现是上面的功能,,...

brige2009 发表于 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层的线型和颜色等参数 ;*************************************************************
;
;程序编制:brige      日期:2011.10.20
;
;************************************************************
(defun c:OO ()

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

(if ss          ;如果选择对象或图形            
    (progn
    (command "chprop" ss "" "la" "01" "")   ; 将选择的对象或图形切换到01层
    (setvar "clayer" oldlayer)   ;;;如果不选择对象,则将01层转换为当前层
   (command "regen")
    )
   (progn
   (prompt(strcat "\n切换到粗实线层"))    ;; 状态栏提示“切换到粗实线层01
   (setvar "clayer" "01")
    )
)
)
;**************************************************
页: [1] 2
查看完整版本: [求助] 有个疑问[图层变换],不知如何修改,还望高手解决