乐筑天下

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

[编程交流] 我想改变a层

[复制链接]

6

主题

13

帖子

7

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 07:10:34 | 显示全部楼层 |阅读模式
我已经为我工作的公司创建了一个lisp,它创建了我们的自定义领导,并将添加文本。它工作得很好,我只需要它改变层,线被绘制到某个层,不管当前层是什么,当然文本也在不同的层上。谢谢,我的学校教育在lisping部分没有涵盖这一点。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:17:56 | 显示全部楼层
这很容易,所以试着自己做吧。
 
-创建对象的选择集
-迭代选择集中的每个对象
-使用以下行更改当前图形中存在的图层名称,如下所示。
*(entmod(subst(cons 8“LayerName”)(assoc 8(setq elist(entget)))elist))
回复

使用道具 举报

6

主题

13

帖子

7

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 07:24:56 | 显示全部楼层
好的,我为对象创建了选择集,但我在迭代选择集中的每个对象时都迷失了方向。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:30:13 | 显示全部楼层
 
  1. (repeat (setq qty (sslength Selectionset))
  2. (setq ssn (ssname Selectionset (setq qty (1- qty))))
  3. ;;; and so on ......
  4. ;;; ......
  5. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:33:24 | 显示全部楼层
你一定对编写代码不感兴趣,无论如何,看看这个。
 
  1. (defun c:obj2Layer (/ l ss qty e)
  2. (if
  3.    (and (or (/= "" (setq l (getstring t "\n Enter name of layer :")))
  4.             (/= l nil)
  5.         )
  6.         (if (not (tblsearch "LAYER" l))
  7.           (progn
  8.             (alert "Layer name is not existed !!")
  9.             nil
  10.           )
  11.           t
  12.         )
  13.         (progn
  14.           (prompt "\n Select objects to change their layer name ")
  15.           (setq ss (ssget "_:L"))
  16.         )
  17.    )
  18.     (repeat (setq qty (sslength ss))
  19.       (setq e (entget (ssname ss (setq qty (1- qty)))))
  20.       (entmod (subst (cons 8 l) (assoc 8 e) e))
  21.     )
  22. )
  23. (princ)
  24. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 07:39:51 | 显示全部楼层
存在最简单的层
 
  1. (setq oldlay (getvar "clayer"))
  2. (setvar "clayer" mylayer)
  3. .do stuff
  4. (setvar "clayer" oldlay)

 
不确定引线是否可以有一行一层文字?我来看看
回复

使用道具 举报

55

主题

325

帖子

274

银币

后起之秀

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

铜币
280
发表于 2022-7-6 07:47:30 | 显示全部楼层
难道你不能用一个属性创建一个块,这个属性已经在你想要文本所在的层上了吗。然后可以使用该块创建多重引线样式。完成后,可以将此多重引线样式放在工具选项板中。从那里可以控制引线插入的图层。只是一个想法。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:52:11 | 显示全部楼层
 
就像比格尔建议的那样,在“创建”行和“文本”之前,将所需层设置为当前层,只需记住在代码中包含一个错误函数。
 

 
使用tharwat的方法在最后创建的实体上强制执行entmod。这种方法的一个优点是,您不必担心目标层是否存在。
entmod将在实体上指定层,无论该层是否存在。
 
  1. (defun c:demo  ()
  2.      (command "_line" pause pause "")
  3.      (entmod (subst '(8 . "banana")
  4.                     (assoc 8 (setq l (entget (entlast))))
  5.                     l))
  6.      (princ))
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:55:44 | 显示全部楼层
 
我是否误读了OP的请求,或者其他人是否偏离了这一点?
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:03:43 | 显示全部楼层
 
OP希望确保通过lisp代码(由OP)创建的实体落入特定层(me认为)
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 09:51 , Processed in 0.607067 second(s), 83 queries .

© 2020-2025 乐筑天下

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