明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6372|回复: 18

[已解答] 请教关于用entmake批量创建图层的问题

    [复制链接]
发表于 2014-8-30 17:30:18 | 显示全部楼层 |阅读模式
;用entmake创建图层

(defun jianceng()

(if (= xianxing nil) (setq xianxing "Continuous"))
(if (= xiankuan nil) (setq xiankuan 13))
(if (= dayin nil) (setq  dayin 1))

;自动加载线型 Gu_xl 2013-5-29 http://bbs.mjtd.com/forum.php?mo ... mp;page=2#pid588571
(or (TBLSEARCH "LTYPE" xianxing);线型
(vl-catch-all-apply
'vla-load
(list (vla-get-Linetypes
(vla-get-ActiveDocument (vlax-get-acad-object)))
xianxing ;线型
(findfile "acad.lin"))))

(entmake (list '(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
'(70 . 0)
(cons 2 cengming)        ;层名
(cons 62 yanse)                ;颜色
(cons 6 xianxing)        ;线型
(cons 370 xiankuan)        ;线宽,100=1
(cons 290 dayin)        ;0不打印,1打印
))
(princ))

(defun c:`q(); 层名         颜色               线型              线宽        打印
(setq cengming "A" yanse 1 xianxing "center" xiankuan 100 dayin 0)(jianceng)
(setq cengming "B" yanse 2 )                                      (jianceng)
(setq cengming "C" yanse 3 )                                      (jianceng)
(setq cengming "D" yanse 4 )                                      (jianceng)
(setq cengming "E" yanse 5 )                                      (jianceng)
(setq cengming "F" yanse 6 )                                      (jianceng)
(setq cengming "G" yanse 7 )                                      (jianceng)
(setq cengming "H" yanse 8 )                                      (jianceng)
(setq cengming "I" yanse 9 )                                      (jianceng)

(princ))


哪位大师方便帮看看哪里写得不对,图层建了,但线宽、线型、打印状态都全部一样了,要怎么改呢?线谢谢了
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-8-30 18:07:15 | 显示全部楼层
本帖最后由 edata 于 2014-9-1 09:32 编辑

  1. ;用entmake创建图层
  2. ;(jianceng cengming yanse xianxing xiankuan dayin flag)
  3. ;(jianceng 层名 颜色 线型 线宽 打印 同名是否强制更新)
  4. (defun jianceng        (cengming yanse xianxing xiankuan dayin flag)
  5.   (or xianxing (setq xianxing "Continuous"))
  6.   (or xiankuan (setq xiankuan 13))
  7.   (or dayin (setq dayin 1))
  8.   (or yanse (setq yanse 7))
  9.   ;自动加载线型 Gu_xl 2013-5-29 http://bbs.mjtd.com/forum.php?mo ... mp;page=2#pid588571
  10.   (and xianxing
  11.        (or (TBLSEARCH "LTYPE" xianxing)        ;线型
  12.            (vl-catch-all-apply
  13.              'vla-load
  14.              (list (vla-get-Linetypes
  15.                      (vla-get-ActiveDocument (vlax-get-acad-object))
  16.                    )
  17.                    xianxing                ;线型
  18.                    (findfile "acad.lin")
  19.              )
  20.            )
  21.        )
  22.   )
  23.   (and
  24.     cengming
  25.     (if        (and (setq en (tblobjname "layer" cengming)) flag)
  26.       (progn
  27.         ;强制更新
  28.         (setq elist (entget en))
  29.         (and yanse (setq elist (subst (cons 62 yanse) (assoc 62 elist) elist)))
  30.         (and xianxing (setq elist (subst (cons 6 xianxing) (assoc 6 elist) elist)))
  31.         (and xiankuan (setq elist (subst (cons 370 xiankuan) (assoc 370 elist) elist)))
  32.         (and dayin (setq elist (subst (cons 290 dayin) (assoc 290 elist) elist)))
  33.         (entmod elist)
  34.       )
  35.       (entmake (list '(0 . "LAYER")
  36.                      '(100 . "AcDbSymbolTableRecord")
  37.                      '(100 . "AcDbLayerTableRecord")
  38.                      '(70 . 0)
  39.                      (cons 2 cengming)        ;层名
  40.                      (cons 62 yanse)        ;颜色
  41.                      (cons 6 xianxing)        ;线型
  42.                      (cons 370 xiankuan) ;线宽,100=1
  43.                      (cons 290 dayin)        ;0不打印,1打印
  44.                )
  45.       )
  46.     )
  47.   )
  48.   (princ)
  49. )
  50. (defun c:`q(); 层名         颜色               线型              线宽        打印
  51.   ;(jianceng cengming yanse xianxing xiankuan dayin flag)
  52.   ;(jianceng 层名 颜色 线型 线宽 打印 同名是否强制更新)
  53.   (jianceng "A" 1 "center" 100 0 t)
  54.   (jianceng "B" 2 nil nil nil t)
  55.   (jianceng "C" 3 nil nil nil t)
  56.   (jianceng "D" 4 nil nil nil t)
  57.   (princ)
  58.   )

点评

E大好热心!请问后面那个 t 是怎么个回事呢?  发表于 2014-8-30 18:56

评分

参与人数 3明经币 +3 金钱 +10 收起 理由
tigcat + 1 + 10 很给力!
lucas_3333 + 1 乐于助人!
669423907 + 1 很给力!很乐于助人!

查看全部评分

回复 支持 3 反对 0

使用道具 举报

发表于 2024-6-2 22:47:52 | 显示全部楼层
  (or xiankuan (setq xiankuan 13))    请问线宽改成“默认”,怎么改?
发表于 2020-6-27 09:30:14 | 显示全部楼层
有没有人知道这个最原始创建图层的帖子在哪啊,好像找不到了
发表于 2014-8-30 19:56:11 | 显示全部楼层
是否强制更新 t 是 nil 否
遇到图层名已经存在,如果是t,则更新设置的属性 颜色等等。如果是nil则保持原状。

点评

实在是太感谢您了  发表于 2014-8-30 20:07

评分

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

查看全部评分

发表于 2014-8-31 14:55:14 | 显示全部楼层
edata 发表于 2014-8-30 19:56
是否强制更新 t 是 nil 否
遇到图层名已经存在,如果是t,则更新设置的属性 颜色等等。如果是nil则保持原状 ...

好像有处错误,
(or yanse (setq dayin 7))

点评

是的,是错误的。应该是 (or yanse (setq yanse 7))  发表于 2014-9-1 09:31

评分

参与人数 1明经币 +1 收起 理由
edata + 1 赞一个!

查看全部评分

发表于 2015-6-13 19:43:12 | 显示全部楼层
学习了
发表于 2016-5-5 23:04:10 | 显示全部楼层
好东西,学习了
发表于 2018-5-14 16:10:04 | 显示全部楼层
学习了,entmake确实要快点
发表于 2022-7-19 08:42:01 | 显示全部楼层
是否可以强制线型比例  为 1
发表于 2022-7-19 09:06:39 | 显示全部楼层
很好,很受用 学习了!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 05:33 , Processed in 0.180580 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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