q668526 发表于 2019-7-17 08:49

CAD插件LSP

大神帮忙怎么实现一个命令打到两个效果,我需要输入SS命令,单开图层并自动设置我所选择对象设置为当前图层?


;****************************************************单开图层
(DEFUN C:SS (/ ES EN EL A)
(princ "请选择对象,未被选中的对象所在的层将被关闭")
(setq ES (ssget)
        A 0
        EN ""
        EL nil
        FL nil
)
(while (/= EN nil)
    (setq EN (ssname ES A)
          EL (cons EN EL)
          A (1+ A)
    )
)
(setq EL (cdr EL)
        FL (cdr (assoc '8 (entget (car EL))))
        EL (cdr EL)
)
(repeat (- A 2)
    (setq EN (cdr (assoc '8 (entget (car EL))))
          FL (strcat EN "," FL)
          EL (cdr EL)
    )
)
(command "LAYER" "off" "*" "y" "on" (eval FL) "")
(princ)
)
;****************************************************设置当前层
(defun c:CL (/ i lyset sa len lyn)
(prompt "请选择对象设置当前图层")
(setq sa (ssget)
        len (sslength sa)
        i 0
)
(while (< i len)
    (setq lyn (cdr (assoc 8 (entget (ssname sa i))))
          i (+ i 1)
    )
    (if (null (member lyn lyset))
      (setq lyset (cons lyn lyset))
    )
)
(command "layer" (setq lyn (car lyset)
                       lyset (cdr lyset)
                   )
           (command "layer" "on" lyn "")
)
(command "layer" "s" lyn "")
)

q668526 发表于 2019-8-29 11:44

dg1989 发表于 2019-7-25 19:52
move    all回车0,0回车38100000,2000000能帮我编一个?

一次输入都要按这多多数字,可以弄一个一 ...

(defun C:move2 ()
(command "MOVE" "ALL" "" "0,0" "2000000")
)
编辑为LSP文件即可,输入命令 MOVE2   就帮帮你秒完成.命令可以自己修改

dg1989 发表于 2019-7-25 19:52

move    all回车0,0回车38100000,2000000能帮我编一个?

一次输入都要按这多多数字,可以弄一个一件按以上的程序吗

kbvsfm 发表于 2019-7-17 09:01

路过没看懂

zilong793 发表于 2019-7-17 09:02

没看懂,但是大概意思明白

L胜,庆福忘不了 发表于 2019-7-17 09:06

你把帖子描述的详细一点,我们基本都没有看懂呢

我傻瓜1991 发表于 2019-7-17 09:09

学习一下

fudashuai 发表于 2019-7-17 09:20

支持原创!楼主加油啊!

315215 发表于 2019-7-17 09:29

在前面程序插入后的程序调用就行了

q668526 发表于 2019-7-17 09:31

315215 发表于 2019-7-17 09:29
在前面程序插入后的程序调用就行了

可是我就要选择2次对象了,我想选一次达到两个效果

watertiger 发表于 2019-7-17 09:34


支持原创!楼主加油啊!

i踏梦行 发表于 2019-7-17 09:42

不明觉厉
页: [1] 2
查看完整版本: CAD插件LSP