明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4562|回复: 7

[提问] 选择图元,则该图元所在的图层置为当前层

[复制链接]
发表于 2014-3-24 14:17 | 显示全部楼层 |阅读模式
5明经币
选择图中图元,则该图元所在的图层置为当前层

点评

你还真是个拿来主义的人啊,求了这么久的程序了,拿去学了没有  发表于 2014-3-25 08:17
发表于 2014-3-24 14:17 | 显示全部楼层
  1. ;;----------------------
  2. ;;将所选实体层置为当前层
  3. ;;----------------------
  4. (defun c:dqc (/ ent ent_data clay)
  5.   (setq ent (car (entsel (strcat "\n选择物体:"))))
  6.   (if (/= nil ent)
  7.     (progn
  8.       (setq ent_data (entget ent))
  9.       (setq clay (cdr (assoc 8 ent_data)))
  10.       (setvar "clayer" clay)
  11.       (setvar "Cecolor" "ByLayer")
  12.       (prompt (strcat "\n成功将图层设为<" clay ">:"))
  13.     )
  14.   )
  15.   (princ)
  16. )
回复

使用道具 举报

发表于 2014-3-24 14:19 | 显示全部楼层
楼主求了这么多程序。。。。这些都没学会??

点评

有的人是求而不学,有的是学而不求,哎  发表于 2014-4-12 23:19
回复

使用道具 举报

发表于 2014-3-24 14:36 | 显示全部楼层
CAD08版上自带的命令:  ai_molc
回复

使用道具 举报

发表于 2014-3-24 15:18 | 显示全部楼层
(setvar "clayer" (cdr (assoc 8(entget (car (entsel))))))
回复

使用道具 举报

发表于 2014-3-24 15:57 | 显示全部楼层
a  dou(读第三声)
回复

使用道具 举报

发表于 2014-3-24 17:15 | 显示全部楼层
我是为了5个明经币来的,现学现卖
  1. (defun c:ccc ()
  2.   (command "_.undo" "be")
  3.   (if (setq e (car (entsel "\n选择需要置为当前层的对象:")))
  4.     (progn
  5.       (setq obj (vlax-ename->vla-object e))
  6.       (setq layer (vlax-get-property obj 'Layer))
  7.       (vla-put-ActiveLayer
  8.         (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  9.         (vla-item (vla-get-layers doc) layer)
  10.       )
  11.     )
  12.   )
  13.   (command "_.undo" "e")
  14.   (princ)
  15. )

评分

参与人数 1明经币 +1 收起 理由
品茗新秀 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-3-24 20:49 | 显示全部楼层
;; 命 令     功 能
;;  nn      将所选图元图层至为当前层
;;    ad            只显示所选图元且仅只有一个,其余冻结
;;    fa            将当前文档所有冻结图层打开
;;    qw            选择不要冻结的图元,可多选
;;    mm            将所选图元,移动到指定图元图层
;;    cf            将所选图元,复制到指定图元图层


;;**********************************************************************
(vl-load-com)
(Defun *Collection* ()
  (setq        *AcadObject* (vlax-get-acad-object)
        *DwgObject*  (vla-get-activedocument *AcadObject*)
        *ModelSpace* (vla-get-modelspace *DwgObject*)
        *Layers*     (vla-get-layers *DwgObject*)
        *Blocks*     (vla-get-blocks *DwgObject*)
        *LineTypes*  (vla-get-linetypes *DwgObject*)
  )
)
(if(not(tblsearch "ltype" "CENTER"));;中心线加载
  (progn
    (*Collection*)
    (vlax-invoke-method *LineTypes* 'Load  "CENTER" "acadiso.lin")
    )
  )
(if(not(tblsearch "ltype" "DASHED"));;虚线加载
  (progn
    (*Collection*)
    (vlax-invoke-method *LineTypes* 'Load  "DASHED" "acadiso.lin")
    )
  )
;;将所选图元图层至为当前层**********************************************
(defun c:nn (/ EntityName VlaName CurrentlyLayer Layer *Layers* *DwgObject* *Blocks* *ModelSpace* *AcadObject* *LineTypes*)
  (*Collection*)
  (if (setq EntityName (Car (Entsel "\n请选择要置为当前层的图元:")))
    (progn
      (setq VlaName           (vlax-ename->vla-object EntityName)
            CurrentlyLayer (vla-get-Layer VlaName)
      )
      (Vlax-For        Layer *Layers*
        (IF (= (Vla-Get-Name Layer) CurrentlyLayer)
          (vla-put-ActiveLayer *DwgObject* Layer)
        )
      )
    )
  )
  (prin1)
)
;;只显示所选图元且仅只有一个,其余冻结*************************************
(Defun c:ad (/ EntityName VlaName CurrentlyLayer Layer *Layers* *DwgObject* *Blocks* *ModelSpace* *AcadObject* *LineTypes*)
  (*Collection*)
  (if (setq EntityName (Car (Entsel "\n选择不冻结的图元<仅一个>:")))
    (progn
      (setq VlaName           (vlax-ename->vla-object EntityName)
            CurrentlyLayer (vla-get-Layer VlaName)
      )
      (VLAX-FOR        Layer *Layers*
        (if (= (vla-get-name Layer) CurrentlyLayer)
          (vla-put-ActiveLayer *DwgObject* Layer)
        )
      )
      (VLAX-FOR        Layer *Layers*
        (if (/= (vla-get-name Layer) CurrentlyLayer)
          (vla-put-Freeze Layer -1)
        )
      )
    )
  )
  (prin1)
)
;;将当前文档所有冻结图层打开**********************************************
(Defun c:fa (/ Layer *Layers* *DwgObject* *Blocks* *ModelSpace* *AcadObject* *LineTypes*)
  (*Collection*)
  (VLAX-FOR Layer *Layers*
    (if        (/= (vla-get-Freeze Layer) :vlax-false)
      (progn
        (vla-put-Freeze Layer 0)
        (vla-put-LayerOn Layer -1)
        (vla-put-lock Layer 0)
      )
    )
  )
  (vlax-invoke-method *DwgObject* 'regen acactiveviewport)
  (prin1)
)
;;选择不要冻结的图元,可多选*********************************************
(Defun c:qw(/  *Layers* *DwgObject* *Blocks* *ModelSpace* *AcadObject*
              selectcollection VlaObjectList index LayerNameList Layer VlaObject)
  (*Collection*)
  (if (setq selectcollection (ssget))
    (progn
      (setq index 0 VlaObjectList nil LayerNameList nil)
      (repeat (sslength selectcollection)
        (setq VlaObjectList
               (append VlaObjectList
                       (list(vlax-ename->vla-object (ssname selectcollection index))))
              )
        (setq index (1+ index))
      )
      (foreach VlaObject  VlaObjectList
        (setq LayerNameList(append LayerNameList(list (vla-get-layer VlaObject))))
        )
      (VLAX-FOR        Layer  *Layers*
        (if
          (not (= (vla-get-name layer)(vla-get-name (vla-get-activelayer *DwgObject*))))
           (if (= (vla-get-name layer) (nth 0 LayerNameList))
             (vla-put-activelayer *DwgObject* Layer))
          )
        )
      (VLAX-FOR        Layer  *Layers*
        (if (not (vl-position(vla-get-name Layer)LayerNameList))
          (vla-put-freeze Layer -1)
          )                  ;endif
        )
      )        ;end progn
    );endif
  (prin1)
)
;;将所选图元,移动到指定图元图层
(Defun c:mm(/  *Layers* *DwgObject* *Blocks* *ModelSpace* *AcadObject* *LineTypes*
            EntityCollection TargetObject index VlaObjectList TargetVlaObject
            TargetLayerName VlaObject)
  (*Collection*)
  (if(setq EntityCollection(ssget))
     (if(setq TargetObject(car(entsel "\n 选择目标图层的图元:")));Target 目标
        (progn
          (setq index 0 VlaObjectList nil)
          (repeat (sslength EntityCollection)
            (setq VlaObjectList(append VlaObjectList(list(vlax-ename->vla-object(ssname EntityCollection index)))))
            (setq index(1+ index))
          )
          (setq TargetVlaObject(vlax-ename->vla-object TargetObject))
          (setq TargetLayerName(vla-get-layer TargetVlaObject))
          (foreach VlaObject VlaObjectList
            (vla-put-layer VlaObject TargetLayerName)
          )
        )
      )
    )
  (prin1)
)
;;将所选图元,复制到指定图元图层
(Defun c:cf(/ EntityCollection TargetObject index VlaObjectList TargetVlaObject TargetLayerName VlaObject)
  (if(setq EntityCollection(ssget))
    (if(setq TargetObject(car(entsel "\n指定复制图元的目标图层:")))
      (progn
          (setq index 0 VlaObjectList nil)
          (repeat (sslength EntityCollection)
            (setq VlaObjectList(append VlaObjectList(list(vlax-ename->vla-object(ssname EntityCollection index)))))
            (setq index(1+ index))
          )
          (setq TargetVlaObject(vlax-ename->vla-object TargetObject))
          (setq TargetLayerName(vla-get-layer TargetVlaObject))
        (foreach VlaObject VlaObjectList
          (vla-put-layer (vlax-invoke-method VlaObject 'Copy) TargetLayerName)
          )
        )
      )
    )
  (prin1)
)

评分

参与人数 2明经币 +1 金钱 +20 收起 理由
清山小石 + 20 很给力!
品茗新秀 + 1 很给力!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 21:59 , Processed in 0.328270 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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