明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: tryhi

[函数] 常用的图层函数

  [复制链接]
发表于 2020-8-9 14:58:29 | 显示全部楼层
;补充一个
;返回所有图层的名称(字符串表)
  1. (defun Get-layerlist (/ DOC LAY-L layer)
  2.   (setq doc (vla-get-activedocument (vlax-get-Acad-Object)))
  3.   (setq layer (vla-get-Layers  doc))
  4.   (vlax-for item layer
  5.     (SETQ LAY-L (APPEND LAY-L (LIST (vla-get-Name item))))
  6.   )
  7. )

点评

似乎跟try-Layer-allname重复  发表于 2020-8-10 00:24

评分

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

查看全部评分

发表于 2020-8-9 15:29:09 | 显示全部楼层
静静地看着楼主,抱走收藏,不客气了
发表于 2020-8-10 06:13:43 | 显示全部楼层
好东东,虽然还不知道怎么用,收藏压箱底,以备后用!
发表于 2020-8-10 21:54:50 | 显示全部楼层
谢谢楼主分享
发表于 2020-8-11 02:18:16 | 显示全部楼层
大侠,想到一点跟图层相关的,有没有把框选所选对象到设定的图层里的函数呢,例如下面的功能的
(defun c:TT5 (/ ss oldlay)
  (setq ss (ssget))
  (if (and ss (> (sslength ss) 0))
    (progn
      (setq oldlay (getvar "clayer"))
      (command "layer" "m" "WP_G" "c" "3" "" "")
      (command "change" ss "" "p" "la" "WP_G" "")
      (command "clayer" oldlay)
    )
  )
)
 楼主| 发表于 2020-8-11 09:59:57 | 显示全部楼层
magicheno 发表于 2020-8-11 02:18
大侠,想到一点跟图层相关的,有没有把框选所选对象到设定的图层里的函数呢,例如下面的功能的
(defun c:T ...

(defun c:tt ()
        (setq ss (ssget))
        (try-layer-make "WP_G" 3 nil nil)
        (setq a -1)
        (if ss
                (while
                        (setq en(ssname ss(setq a(1+ a))))
                        (vla-put-Layer (vlax-ename->vla-object en)"WP_G")
                )
        )
)
发表于 2020-8-11 12:44:35 | 显示全部楼层
本帖最后由 magicheno 于 2020-8-11 13:00 编辑
tryhi 发表于 2020-8-11 09:59
(defun c:tt ()
        (setq ss (ssget))
        (try-layer-make "WP_G" 3 nil nil)

非常赞,感谢大侠,不过应该是try-make-layer哈,写反了哈,还是说函数那边写反了,你的习惯应该是layer放后面的吧仔细对了下,原来是我那个帖子里写的try-make-layer,你的帖子写的是try-layer-make
发表于 2020-8-11 15:13:19 | 显示全部楼层
(defun try-Layer-get (layer)
        (setq ss (ssget))
        (setq a -1)
        (if ss
                (while
                        (setq en(ssname ss(setq a(1+ a))))
                        (vla-put-Layer (vlax-ename->vla-object en)layer)
                )
        )
)

(defun c:tt5 ()
        (try-layer-make"WP_G" 3 nil nil)
        (try-Layer-get "WP_G")
)

大侠,按你写的这样类似先定义一个函数,再去命令实行应该没问题吧

点评

通用子函数一般不用交互函数,专用子函数随意  发表于 2020-8-11 16:39
发表于 2020-8-11 16:13:52 | 显示全部楼层
发现个问题就是通过try-layer-make生成的图层的线型貌似出不来的,通过下面的command 命令是可以直接形成的
(defun c:TT5 ()
        (try-layer-make"WP_Y" 6 PHANTOM2 nil)
        (try-layer-get "WP_Y")
)
(defun c:TT6 (/ ss oldlay)
  (setq ss (ssget))
  (if (and ss (> (sslength ss) 0))
    (progn
      (setq oldlay (getvar "clayer"))
      (command "layer" "m" "WP_Y" "c" "6" "" "l" "PHANTOM2" "" "")
      (command "change" ss "" "p" "la" "WP_Y" "S" "0.6" "")
      (command "clayer" oldlay)
    )
  )
)

点评

双引号都没有,这种问题多自身检查几遍  发表于 2020-8-11 16:38
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 01:40 , Processed in 0.149200 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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