乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 17|回复: 13

[编程交流] 我可以通过entm创建新层吗

[复制链接]
ssg

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 12:55:11 | 显示全部楼层 |阅读模式
我通常通过命令功能创建新层。例子:
(命令“Layer”“N”MyLayer“L”MyLtype MyLayer“C”MyColor MyLayer“T”MyLayer“”)
我想用entmake函数来做。有人能帮我吗?
提前感谢!
回复

使用道具 举报

9

主题

383

帖子

82

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
355
发表于 2022-7-5 13:02:27 | 显示全部楼层
  1. (entmake (list (cons 0 "LAYER")
  2.        (cons 100 "AcDbSymbolTableRecord")
  3.        (cons 100 "AcDbLayerTableRecord")
  4.        (cons 2 MyLayer)
  5.        (cons 6 MyLtype)
  6.        (cons 62 MyColor)
  7. )
  8. )

阅读DXF参考了解更多组码
回复

使用道具 举报

ssg

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 13:05:54 | 显示全部楼层
谢谢!
你的Lisp程序很专业!
回复

使用道具 举报

10

主题

253

帖子

75

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
223
发表于 2022-7-5 13:11:48 | 显示全部楼层
如果dwg中存在图层MyLayer,则会收到错误。您最好这样使用smth:
  1. (defun create-my-layer (name ltype color / res)
  2.                       ;|
  3. *    Creates a new layer in current dwg.
  4. * If layer exist, returns an ename-pointer to it (no changes). If not, layer
  5. * has been tried to create with settings.
  6. *    Call parameters:
  7. name        Name of layer
  8. ltype        Name of linetype setted to created layer. If it doesn't exist
  9.         the linetype "Continuous" will be used
  10. color        ICA-color for creating layer
  11. |;
  12. (cond
  13.    ((tblobjname "layer" "name"))
  14.    (t
  15.     (setq res (entmakex (list (cons 0 "LAYER")
  16.                               (cons 100 "AcDbSymbolTableRecord")
  17.                               (cons 100 "AcDbLayerTableRecord")
  18.                               (cons 2 name)
  19.                               (cons 6
  20.                                     (cond ((tblobjname "ltype" ltype))
  21.                                           (t "Continuous")
  22.                                           ) ;_ end of cond
  23.                                     ) ;_ end of cons
  24.                               (cons 62 color)
  25.                               ) ;_ end of list
  26.                         ) ;_ end of entmakex
  27.           ) ;_ end of setq
  28.     )
  29.    ) ;_ end of cond
  30. ) ;_ end of defun
回复

使用道具 举报

18

主题

434

帖子

422

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
94
发表于 2022-7-5 13:16:56 | 显示全部楼层
Ssg公司
你需要一层来放置一些东西,对吗?
为什么不在需要的图层上创建所需的对象;如果层存在-将使用它,如果不存在-将创建它。
回复

使用道具 举报

ssg

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 13:19:31 | 显示全部楼层
@kpblc:谢谢!我知道如何使用条件函数:if,cond…。我将在特定情况下添加它们。
 
@fuccaro:是的,但有时我需要创建没有任何对象的新层(使用自定义标准创建模板图形时)。
 
谢谢大家!你的想法对我很有用。但还有一个问题:
当我创建普通实体(直线、圆、圆弧…)时,我不需要DXF代码100。
例子:
(entmake(列表(cons 0“行”)(cons 10’(100 100))(cons 11’(150 200)))
 
AutoCAD应用程序将自动将它们添加到实体数据库中:AcDbEntity、AcDbLine、AcDbArc、AcDbCircle。
 
但为什么我必须声明DXF代码100与层(可能与表组中的所有对象)?例子:
(entmake(列表(cons 0“层”)
(cons 100“AcDbSymbolTableRecord”)
(cons 100“AcDbLayerTableRecord”)
(cons 2“MyLayer”)
(cons 70 0)
)
 
如果其中一个丢失,则不会创建新层。
谁能解释?
回复

使用道具 举报

0

主题

3

帖子

3

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 13:24:02 | 显示全部楼层
  1. (defun create-my-layer (name ltype color / res)
  2.                       ;|
  3. *    Creates a new layer in current dwg.
  4. * If layer exist, returns an ename-pointer to it (no changes). If not, layer
  5. * has been tried to create with settings.
  6. *    Call parameters:
  7. name        Name of layer
  8. ltype        Name of linetype setted to created layer. If it doesn't exist
  9.         the linetype "Continuous" will be used
  10. color        ICA-color for creating layer
  11. |;
  12. (cond
  13. ((tblobjname "layer" name))
  14. (t
  15.   (setq res (entmake (list (cons 0 "LAYER")
  16.                                      (cons 100 "AcDbSymbolTableRecord")
  17.                                      (cons 100 "AcDbLayerTableRecord")
  18.                                      (cons 2 name)
  19.                                      (cons 70 0)
  20.                                      (cons 62 color)
  21.                                      (cons 6
  22.                                            (cond ((tblobjname "ltype" ltype) ltype)
  23.                                                     (t "Continuous")
  24.                                       ) ;_ end of cond
  25.                                      ) ;_ end of cons
  26.                        ) ;_ end of list
  27.             ) ;_ end of entmake
  28.    ) ;_ end of setq
  29. )
  30. ) ;_ end of cond
  31. ) ;_end of defun
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 13:27:40 | 显示全部楼层
这里还有一个可以让你添加图层描述的。。。哎呀。。才意识到这条线已经有10年了
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-5 13:35:24 | 显示全部楼层
僵尸警报
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 13:37:46 | 显示全部楼层
*>>*
135513wxvsedvzfbdbvs5m.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 00:44 , Processed in 2.181429 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表