找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 535|回复: 3

[每日一码] 拷贝选择的对象到新的图层

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-5-24 19:03:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 Lisphk 于 2018-5-24 19:05 编辑

[JavaScript] 纯文本查看 复制代码
(defun c:c2lay ( / inc lay lst obj sel )
    (if (setq sel (ssget "_:L"))
        (progn
            (while (setq lay (tblnext "layer" (not lay)))
                (if (zerop (logand 52 (cdr (assoc 70 lay))))
                    (setq lst (cons (cdr (assoc 2 lay)) lst))
                )
            )
            (if (setq lst (LM:listbox "Select Layers to Copy to" (acad_strlsort lst) t))
                (repeat (setq inc (sslength sel))
                    (setq obj (vlax-ename->vla-object (ssname sel (setq inc (1- inc)))))
                    (foreach lay lst
                        (vla-put-layer (vla-copy obj) lay)
                    )
                )
                (princ "\n*Cancel*")
            )
        )
    )
    (princ)
)
(defun LM:listbox ( msg lst bit / dch des tmp rtn )
    (cond
        (   (not
                (and
                    (setq tmp (vl-filename-mktemp nil nil ".dcl"))
                    (setq des (open tmp "w"))
                    (write-line
                        (strcat "listbox:dialog{label=\"" msg "\";spacer;:list_box{key=\"list\";multiple_select="
                            (if (= 1 (logand 1 bit)) "true" "false") ";width=50;height=15;}spacer;ok_cancel;}"
                        )
                        des
                    )
                    (not (close des))
                    (< 0 (setq dch (load_dialog tmp)))
                    (new_dialog "listbox" dch)
                )
            )
            (prompt "\nError Loading List Box Dialog.")
        )
        (   t     
            (start_list "list")
            (foreach itm lst (add_list itm))
            (end_list)
            (setq rtn (set_tile "list" "0"))
            (action_tile "list" "(setq rtn $value)")
            (setq rtn
                (if (= 1 (start_dialog))
                    (if (= 2 (logand 2 bit))
                        (read (strcat "(" rtn ")"))
                        (mapcar '(lambda ( x ) (nth x lst)) (read (strcat "(" rtn ")")))
                    )
                )
            )
        )
    )
    (if (< 0 dch)
        (unload_dialog dch)
    )
    (if (and tmp (setq tmp (findfile tmp)))
        (vl-file-delete tmp)
    )
    rtn
)
(vl-load-com) (princ)

另外一个:

  1. (defun c:tt (/ *error* showdcl on lst ss i sn vl)
  2. ;;;--- Tharwat 25. May. 2013 ---;;;
  3.   (or doc
  4.       (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  5.   )
  6.   (defun *error* (x)
  7.     (if        doc
  8.       (vla-endundomark doc)
  9.     )
  10.     (if        f
  11.       (progn (close f) (vl-file-delete fn))
  12.     )
  13.     (princ "\n*Cancel*")
  14.   )
  15.   (defun ShowDcl (/ sn f str dcl_id l lays pos)
  16.     (setq fn (vl-filename-mktemp "dcl.dcl"))
  17.     (setq f (open fn "w"))
  18.     (foreach str
  19.              (list
  20.                "Layers : dialog { label = \"Layer List\"; fixed_width = true;"
  21.                ": list_box { label = \"Select Layer\"; key = \"layer\"; width = 32; multiple_select = true;}"
  22.                ": boxed_row { label = \"Action\";" ": row {"
  23.                ": button { label = \"Accept\"; key = \"accept\"; is_default = true;  }"
  24.                ": button { label = \"Cancel\"; key = \"cancel\"; is_cancel = true; }}}}")
  25.       (write-line str f)
  26.     )
  27.     (close f)
  28.     (setq dcl_id (load_dialog fn))
  29.     (if        (not (new_dialog "Layers" dcl_id))
  30.       (exit)
  31.     )
  32.     (while (setq l (tblnext "LAYER" (not l)))
  33.       (setq lays (cons (cdr (assoc 2 l)) lays))
  34.     )
  35.     (setq lays (reverse lays))
  36.     (start_list "layer")
  37.     (mapcar 'add_list lays)
  38.     (end_list)
  39.     (action_tile
  40.       "accept"
  41.       "(setq pos (get_tile \"layer\"))(done_dialog)"
  42.     )
  43.     (action_tile "cancel" "(done_dialog)")
  44.     (start_dialog)
  45.     (unload_dialog dcl_id)
  46.     (if        pos
  47.       (foreach n (read (strcat "(" pos ")"))
  48.         (setq lst (cons (nth n lays) lst))
  49.       )
  50.     )
  51.   )
  52.   (if (and (progn (princ "\n Select Polyline ...")
  53.                   (setq ss (ssget "_:L" '((0 . "*POLYLINE"))))
  54.            )
  55.            (setq on (ShowDcl))
  56.       )
  57.     (progn
  58.       (vl-file-delete fn)
  59.       (vla-StartUndomark doc)
  60.       (repeat (setq i (sslength ss))
  61.         (setq sn (ssname ss (setq i (1- i))))
  62.         (foreach x lst
  63.           (vla-copy (setq vl (vlax-ename->vla-object sn)))
  64.           (vla-put-layer vl x)
  65.         )
  66.       )
  67.       (vla-endundomark doc)
  68.     )
  69.   )
  70.   (princ "\n Written By Tharwat Al Shoufi")
  71.   (princ)
  72. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1336个

财富等级: 财源广进

发表于 2018-5-25 08:59:49 | 显示全部楼层
沙发 .谢谢分享。可能用处不太大,可以学习下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

发表于 2018-5-25 09:07:50 | 显示全部楼层
谢谢分享。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 812个

财富等级: 财运亨通

发表于 2018-5-25 09:11:16 | 显示全部楼层
感谢大师分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-26 01:23 , Processed in 0.350161 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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