本帖最后由 dcl1214 于 2024-11-29 13:00 编辑

既能创建图层,还能修改图层
  1. (defun $chuang-jian-tu-ceng$ (LayName    LayColor    LType
  2.             LWidth    LDesc        IsPrn
  3.             IsFreze    IsCur    lst    /
  4.             acaddocument        acadlays
  5.             acadlinetypes        acadobject
  6.             clay    mspace      osm
  7.             slayname
  8.            )
  9.   ;;图层创建,创建图层
  10.   ;;命令($chuang-jian-tu-ceng$ "1.图层名" "2.颜色" "3.线型" "4.线宽" "5.注释说明" "6.是否打印y/n" "7.是否冻结y/n" "8.是否当前图层y/n" nil)
  11.   (setq  AcadObject    (vlax-get-acad-object)
  12.   AcadDocument  (vla-get-ActiveDocument Acadobject)
  13.   ;;取得激活的文件
  14.   mSpace        (vla-get-ModelSpace Acaddocument)
  15.   ;;在图纸与模型之间切换
  16.   AcadLays      (vla-get-Layers AcadDocument)
  17.   ;;取得文件图层集
  18.   AcadLineTypes (vla-get-linetypes Acaddocument)
  19.           ;;取得线型
  20.   )
  21.   (setq slayname (vl-catch-all-apply 'vla-add (LIST AcadLays LayName)))
  22.   (if (vl-catch-all-error-p slayname)
  23.     (setq
  24.       slayname
  25.        (vl-catch-all-apply
  26.    'vla-item
  27.    (list (vl-catch-all-apply 'vla-get-Layers (list AcadLays))
  28.          LayName
  29.    )
  30.        )
  31.     )
  32.   )
  33.   (if (vl-catch-all-error-p slayname)
  34.     (setq slayname nil)
  35.   )
  36.   (if (= "" LayColor)
  37.     (vl-catch-all-apply 'vla-put-Color (LIST slayname 7))
  38.     (vl-catch-all-apply
  39.       'vla-put-Color
  40.       (LIST slayname (vl-catch-all-apply 'atoi (LIST LayColor)))
  41.     )
  42.   )
  43.   ;;设定:2.颜色

  44.   (if (= "" LType)
  45.     (vl-catch-all-apply
  46.       'vla-put-linetype
  47.       (LIST slayname "Continuous")
  48.     )
  49.     (if  (not (vl-catch-all-error-p
  50.          (vl-catch-all-apply 'tblobjname (list "LTYPE" LType))
  51.        )
  52.   )
  53.       (vl-catch-all-apply 'vla-put-linetype (LIST slayname LType))
  54.           ;下面的if整段代码在机械版cad会报错,不知道咋回事
  55.       (if (or (vl-catch-all-apply
  56.     'vla-load
  57.     (list AcadLineTypes LType "acadiso.lin")
  58.         )
  59.         ;;在线形文件acadiso.lin中判断是否有指定线型并加载
  60.         (vl-catch-all-apply
  61.     'vla-load
  62.     (list AcadLineTypes LType "acad.lin")
  63.         )
  64.         ;;在线形文件acad.lin中判断是否有指定线型并加载
  65.     )
  66.   (vl-catch-all-apply 'vla-put-linetype (LIST slayname LType))
  67.   (vl-catch-all-apply
  68.     'vla-put-linetype
  69.     (LIST slayname "Continuous")
  70.   )
  71.       )
  72.     )
  73.   )
  74.   ;;设定:3.线型

  75.   (if (= "" LWidth)
  76.     (vl-catch-all-apply 'vla-put-lineweight (LIST slayname -3))
  77.     (vl-catch-all-apply
  78.       'vla-put-lineweight
  79.       (LIST slayname
  80.       (vl-catch-all-apply
  81.         '*
  82.         (LIST (vl-catch-all-apply 'atof (LIST LWidth)) 100)
  83.       )
  84.       )
  85.     )
  86.   )
  87.   ;;设定:4.线宽
  88.   (vl-catch-all-apply
  89.     'vla-put-Description
  90.     (LIST slayname LDesc)
  91.   )
  92.   ;;设定:5.线型注释说明

  93.   (if (or (= "" IsPrn) (= "y" IsPrn) (= "Y" IsPrn))
  94.     (vl-catch-all-apply
  95.       'vla-put-Plottable
  96.       (LIST slayname :vlax-true)
  97.     )
  98.     (vl-catch-all-apply
  99.       'vla-put-Plottable
  100.       (LIST slayname :vlax-false)
  101.     )
  102.   )
  103.   ;;设定:6.是否可打印

  104.   (if (or (= "y" IsFreze) (= "Y" IsFreze))
  105.     (vl-catch-all-apply
  106.       'vla-put-Freeze
  107.       (LIST slayname :vlax-true)
  108.     )
  109.     (vl-catch-all-apply
  110.       'vla-put-Freeze
  111.       (LIST slayname :vlax-false)
  112.     )
  113.   )
  114.   ;;设定:7.是否冻结      
  115.   (if (or (= "y" IsCur) (= "Y" IsCur))
  116.     (VL-CATCH-ALL-APPLY 'SETVAR (LIST "clayer" LayName))
  117.   )
  118.   ;;设定:8.是否当前图层
  119.   (VL-CATCH-ALL-APPLY 'TBLSEARCH (LIST "LAYER" LayName))
  120. )



网友答: 一行command "layer" "_new" ...能干的事,搞出100多行代码。

网友答: dear sir,
nice thanks for sharing
can possible add FLITER group function ...??

网友答: 有点复杂...

网友答: 学习下,谢谢

网友答: 好像没有透明度设置

网友答:
谢谢分享,存起来备用,谢过啦

网友答:
kozmosovia 发表于 2024-11-29 16:35
一行command "layer" "_new" ...能干的事,搞出100多行代码。

扎心了,老铁

网友答: 现在图纸都用PDF打印,图纸开始向彩色过度,新建图层的颜色能支持真彩色就更好
  • 上一篇:(vlax-invoke obj 'intersectwith obj acextendnone)返回结果各
  • 下一篇:没有了