明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6358|回复: 20

一次性建立多个层,自定义函数通不过,大家帮忙解决一下

  [复制链接]
发表于 2009-9-2 11:09 | 显示全部楼层 |阅读模式

一次性建立多个层,自定义函数通不过,大家帮忙解决一下,不知哪里出错.

(DEFUN new_lay (lay coL lt / chk_lay)
  (setq chk_lay (tblsearch "layer" lay))
  (if (= chk_lay nil)
    (command "layer" "new" lay "c" coL lay "lt" lt lay "")
  )
)

(DEFUN c:ma_lay(/hat cen hid das mcl dim run cut_line bom core_water plate_water slide_water txt ejp ejt)
(setvar "cmdecho" 0)
      (setq hat         "剖面线层")
      (setq cen         "中心线层")
      (setq hid         "短虚线层")
      (setq das         "长虚线层")
      (setq mcl         "细实线层")
      (setq dim         "尺寸线层")
      (setq run         "流道层")
      (setq cut_line    "线切割层")
      (setq bom         "气泡球层")
      (setq pha         "假想线层")
      (setq core_water  "模仁水路层")
      (setq plate_water "模板水路层")
      (setq slide_water "滑块水路层")
      (setq txt         "文字层")
      (setq ejp         "顶出板层")
      (setq ejT         "顶针平面层")

      (new_lay hat   40           "CONTINUOUS")
      (new_lay cen   1            "CENTER")
      (new_lay hid   3            "HIDDEN")
      (new_lay das   6            "DASHED")
      (new_lay MCL   2            "CONTINUOUS")
      (new_lay dim   4            "Continuous")
      (new_lay RUN   2            "CONTINUOUS")
      (new_lay CUT_LINE  2            "CONTINUOUS")
      (new_lay BOM   241          "phantom")
      (new_lay PHA   8            "phantom")
      (new_lay core_water  171          "DASHED")
      (new_lay plate_water  141          "DASHED")
      (new_lay slide_water  31           "DASHED")
      (new_lay TXT   6            "CONTINUOUS")
      (new_lay EJP   132          "HIDDEN")
      (new_lay EJT   7            "CONTINUOUS")
(PROMPT "\n 新图层已建立")
(princ)
)


发表于 2018-9-5 14:14 来自手机 | 显示全部楼层
感謝無私提供分享
发表于 2009-9-2 11:15 | 显示全部楼层

(/hat....

--->

(/ hat

少个空格

发表于 2009-9-2 12:51 | 显示全部楼层

呵呵,不用这么麻烦,来个简单的,一个命令完成,请自已更改图层名

本帖子中包含更多资源

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

x
发表于 2009-9-2 13:14 | 显示全部楼层
  1. ;;一次性建立多个层
  2. (DEFUN c:tt (/ lt lst)
  3.   (DEFUN mklacolt (lay col lt / chk_lay)
  4.     (if (= (tblsearch "layer" lay) nil)
  5.       (command "layer" "new" lay "c" col lay "lt" lt lay "")
  6.     )
  7.   )
  8.   (setvar "cmdecho" 0)
  9.   (foreach lt '("CENTER" "HIDDEN" "DASHED" "phantom")
  10.     (if (= (tblsearch "ltype" lt) nil)
  11.       (command "_linetype" "l" lt "" "")
  12.     )
  13.   )
  14.   (foreach lst '(("剖面线层" 40 "CONTINUOUS")
  15.    ("中心线层" 1 "CENTER")
  16.    ("短虚线层" 3 "HIDDEN")
  17.    ("长虚线层" 6 "DASHED")
  18.    ("细实线层" 2 "CONTINUOUS")
  19.    ("尺寸线层" 4 "Continuous")
  20.    ("流道层" 2 "CONTINUOUS")
  21.    ("线切割层" 2 "CONTINUOUS")
  22.    ("气泡球层" 241 "phantom")
  23.    ("假想线层" 8 "phantom")
  24.    ("模仁水路层" 171 "DASHED")
  25.    ("模板水路层" 141 "DASHED")
  26.    ("滑块水路层" 31 "DASHED")
  27.    ("文字层" 6 "CONTINUOUS")
  28.    ("顶出板层" 132 "HIDDEN")
  29.    ("顶针平面层" 7 "CONTINUOUS")
  30.   )
  31.     (mklacolt (car lst) (cadr lst) (caddr lst))
  32.   )
  33.   (PROMPT "\n新图层已建立")
  34.   (princ)
  35. )
 楼主| 发表于 2009-9-2 15:23 | 显示全部楼层
谢谢
 楼主| 发表于 2009-9-2 15:30 | 显示全部楼层

我开始也是用COMMAND作的图层。但现在是想用自定义函数,引用到其它程式中,由于是半路出家,有些基本东西没有搞清,

谢谢各位!

发表于 2009-9-2 16:45 | 显示全部楼层

俺也用的是最古老的方法,自定义函数也是一知半解。学习了

发表于 2009-9-3 08:26 | 显示全部楼层
4楼的程序很简洁,对表的运用不错,学习下!
发表于 2009-9-3 09:18 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2009-9-3 12:21 | 显示全部楼层
  1. ;|
  2. (NEW_LAYER '(("剖麵線層" 40 "CONTINUOUS")
  3.       ("中心線層" 1 "CENTER")
  4.       ("短虛線層" 3 "HIDDEN")
  5.       ("長虛線層" 6 "DASHED")
  6.       ("細實線層" 2 "CONTINUOUS")
  7.       ("尺寸線層" 4 "Continuous")
  8.       ("流道層" 2 "CONTINUOUS")
  9.       ("線切割層" 2 "CONTINUOUS")
  10.       ("氣泡球層" 241 "phantom")
  11.       ("假想線層" 8 "phantom")
  12.       ("模仁水路層" 171 "DASHED")
  13.       ("模板水路層" 141 "DASHED")
  14.       ("滑塊水路層" 31 "DASHED")
  15.       ("文字層" 6 "CONTINUOUS")
  16.       ("頂出板層" 132 "HIDDEN")
  17.       ("頂針平面層" 7 "CONTINUOUS")
  18.      )
  19. )
  20. |;
  21. ;;一次性建立多個層
  22. (defun NEW_LAYER (LST / X DOC)
  23.   (vl-load-com)
  24.   (setq DOC (vla-get-activedocument (vlax-get-acad-object)))
  25.   (mapcar
  26.     '(lambda (X)
  27.        (if (not (tblsearch "ltype" (nth 2 X)))
  28.   (vla-load (vla-get-linetypes DOC)
  29.      (nth 2 X)
  30.      (if (= (vlax-variant-value
  31.        (vla-getvariable DOC "measureinit")
  32.      )
  33.      0
  34.          )
  35.        "acad.lin"
  36.        "acadiso.lin"
  37.      )
  38.   )
  39.        )
  40.        (entmake
  41.   (list '(0 . "LAYER")
  42.         '(100 . "AcDbSymbolTableRecord")
  43.         '(100 . "AcDbLayerTableRecord")
  44.         (cons 2 (nth 0 X))
  45.         '(70 . 0)
  46.         (cons 62 (nth 1 X))
  47.         (cons 6 (nth 2 X))
  48.   )
  49.        )
  50.      )
  51.     LST
  52.   )
  53.   (vlax-release-object DOC)
  54.   (princ)
  55. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 17:58 , Processed in 0.215272 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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