明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 410|回复: 4

[经验] 创建图层

[复制链接]
发表于 前天 12:59 | 显示全部楼层 |阅读模式
本帖最后由 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. )

评分

参与人数 2明经币 +2 收起 理由
zhoupeng220 + 1 很给力!
cghdy + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 前天 21:06 | 显示全部楼层
dear sir,
nice thanks for sharing
can possible add FLITER group function ...??
回复 支持 1 反对 0

使用道具 举报

发表于 前天 15:55 | 显示全部楼层
学习下,谢谢
回复 支持 反对

使用道具 举报

发表于 前天 16:35 | 显示全部楼层
一行command "layer" "_new" ...能干的事,搞出100多行代码。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-1 12:09 , Processed in 0.180941 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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