magicheno 发表于 2020-8-11 17:08:25

搞定了大侠,尴尬了,又丢脸喽,最后想请教个,就是下面的这个如果想再加上个线型比例的话该如何实现呢 (command "change" ss "" "p" "la" "WP_Y" "S" "0.6" "")类似这段的
(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")
)
                (while
                        (setq en(ssname ss(setq a(1+ a))))
                        (vla-put-Layer (vlax-ename->vla-object en)"WP_G")
                )
      )
)

tryhi 发表于 2020-8-11 17:17:03

magicheno 发表于 2020-8-11 17:08
搞定了大侠,尴尬了,又丢脸喽,最后想请教个,就是下面的这个如果想再加上个线型比例的话该如何实 ...

线型比例似乎不关图层什么事,你找一下线型比例的组码,再研究一下怎么修改一个图元的组码

magicheno 发表于 2020-8-11 17:54:01

tryhi 发表于 2020-8-11 17:17
线型比例似乎不关图层什么事,你找一下线型比例的组码,再研究一下怎么修改一个图元的组码

组码是48呢,(cons 48 0.6)就是不知道该怎么把这个融合进去

magicheno 发表于 2020-8-12 00:28:55

大侠下面是我网上找的常用的框选关闭和打开所选图层的,如果用你的函数该怎么写的

;; 关闭未选
(DEFUN C:11 (/ 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:33 (/ ss c en lay)
(if (setq ss (ssget))
    (progn;;;关闭
      (setq c 0)
      (while (< c (sslength ss))
      (setq en (ssname ss c))
      (setq lay (cdr (assoc 8 (entget en))))
      (if (not (member lay laylst))
          (setq laylst (cons lay laylst))
      )
      (if (= lay (getvar "clayer"))
          (command "-layer" "off" lay "y" "")
          (command "-layer" "off" lay "")
      )
      (setq c (+ 1 c))
      )
    )
    (progn;;;开启
      (setq c 0)
      (repeat (length laylst)
      (command "-layer" "on" (nth c laylst) "")
      (setq c (1+ c))
      )
    )
)
(princ)
)

whyyshy 发表于 2020-8-12 12:38:44


支持支持,适合我们学习

水吉空 发表于 2020-8-12 16:51:07

支持楼主

llsheng_73 发表于 2020-8-13 11:10:44

暂时没得补充
(defun Makelay(lst);;lst图层名、颜色、线型、标准标记(一般只需设置0,1,2,4,后边的位新建图层不需要)、打印标志(0不打印)、线宽,可依次缺省
(entmakex(mapcar'cons'(0 100 100 2 62 6 70 290 370)(vl-list*"LAYER""AcDbSymbolTableRecord""AcDbLayerTableRecord"lst))))

电赛加油 发表于 2020-8-20 18:57:59

多谢大神分享,学习一下!

电赛加油 发表于 2020-8-21 17:12:24

多谢大神分享,学习一下!

magicheno 发表于 2020-9-10 15:21:15

大侠,我增加了图层锁定,但是对于视口图层的冻结不知道该怎么弄的
比如下面这个,如何不用command表达呢
;; 冻结排水层
(defun c:55pp()
(setvar "cmdecho" 0)
(command "_.vplayer" "F" "WP_P,WP_P_*,WP_S,WP_S_*,WP_Y,WP_Y_*,WP_YP,WP_YP_*,WP_YY,WP_YY_*,WP_YF,WP_YF_*,WP_W2,WP_W2_*,WP_YT,WP_YT_*,WP_KTN,WP_KTN_*" )
(command "" ""))

;;锁定图层
;;参数:图层名称表
(defun try-Layer-Lock (LayList)
      (setq LayList(mapcar 'strcase LayList))
      (vlax-for each *LAYS*
                (if (member (strcase (vla-get-name each)) LayList)
                        (if (vlax-write-enabled-p each)
                              (vla-put-lock each :vlax-True)
                        )
                )
                (vlax-release-object each)
      )
)


;;解锁图层
;;参数:图层名称表
(defun try-Layer-UnLock (LayList)
      (setq LayList(mapcar 'strcase LayList))
      (vlax-for each *LAYS*
                (if (member (strcase (vla-get-name each)) LayList)
                        (if (vlax-write-enabled-p each)
                              (vla-put-lock each :vlax-False)
                        )
                )
                (vlax-release-object each)
      )
)


;;锁定图层
;;参数:字符串,支持通配符
(defun try-Layer-Lock-2 (layer)
         (try-Layer-Lock(vl-remove-if-not '(lambda(x)(wcmatch x layer))(try-Layer-allname)))
)

;;解锁图层
;;参数:字符串,支持通配符
(defun try-Layer-Unlock-2 (layer)
         (try-Layer-Unlock(vl-remove-if-not '(lambda(x)(wcmatch x layer))(try-Layer-allname)))
)
(defun c:sf1()
      (try-Layer-Lock-2 "*")
      (try-Layer-Unlock-2 "WP_*,DN_*,LGBH_*,TXT_*,EV_*,W-DIM,W_DIM,WW_*,WX-*,SB,SB_*,PUB_TABLE,PUB_W-DIM,0,WX_J")
      (try-Layer-On-2 "*")
      (command "regen")
)
页: 1 2 [3] 4
查看完整版本: 常用的图层函数