乐筑天下

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

[编程交流] 插入块并继承层f

[复制链接]

3

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 17:09:43 | 显示全部楼层 |阅读模式
我有一个几百个街区的街区图书馆。我将其中许多块插入到我的图形中(一次一个),并捕捉到图形中已有的线条。当我插入并捕捉到这些线时,我需要块来获取我要捕捉到的线的层。我只是不知道如何做到这一点。
最近,在插入块后,我将使用“matchproperties”命令,但只需单击一下就可以了。这会节省我很多时间!!我的所有块都是在第0层上创建的,因此它们可以获取这些线的属性。我通常捕捉到最近的或端点。
我感谢你的帮助。
回复

使用道具 举报

0

主题

132

帖子

198

银币

限制会员

铜币
-21
发表于 2022-7-6 17:36:51 | 显示全部楼层
Vb还是lisp?
回复

使用道具 举报

3

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 17:42:02 | 显示全部楼层
lisp会很棒。
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 18:04:27 | 显示全部楼层
又快又脏。可以修改以满足您的需要
  1. (defun c:test (/ oldecho oldlayer ent p1 entlst layname blkname)
  2. (vl-load-com)
  3. ;======ERROR TRAP=======
  4. (setq temperr *error*            ;store *error*
  5.      *error* errortrap            ;re-assign *error*
  6.      oldecho (getvar "cmdecho")    ;store variables as needed
  7.      oldlayer (getvar "clayer")
  8.      )
  9. ;======ERROR TRAP=======
  10. (setq oldlayer (getvar "clayer")
  11.      oldecho (getvar "cmdecho")
  12.      ent (entsel "\nPick insert point on line for block: ")
  13.      p1 (vlax-curve-getclosestpointto (car ent) (cadr ent))
  14.      entlst (entget (car ent))
  15.      layname (cdr (assoc 8 entlst))
  16.      blkname (getstring "\nEnter block name: ")
  17. );setq
  18. (setvar "clayer" layname)
  19. (initdia)
  20. (command "-insert" blkname p1 "" "")
  21. ;(while (> (getvar 'CmdActive) 0) (command pause))
  22. (setvar "clayer" oldlayer)
  23. (setvar "cmdecho" oldecho)
  24. (princ)
  25. );defun
  26. ;======ERROR TRAP=======
  27. (defun errortrap (msg)                    
  28.    (setvar "cmdecho" oldecho)            ;restore variables
  29.    (setvar "clayer" oldlayer)            
  30.    (setq *error* temperr)            ;restore *error*
  31.    (prompt "\nError or break encountered...Resetting System Variables ")    ;inform user
  32.   (princ)
  33. );defun
  34. ;======ERROR TRAP=======
回复

使用道具 举报

3

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 18:21:36 | 显示全部楼层
在选择我的点并插入我的块后,层暂时更改为我捕捉到的线,但最终还是在我的当前层上结束,就像以前一样。
这是我想的更多。。。
 
1.像往常一样插入我的块,像往常一样捕捉到我的线(至少这样我可以在插入块时在光标上预览块)
 
2.运行lisp,获取“lastpoint”的层,并使其成为我的当前层或“clayer”。
 
3.运行“laymch”命令,将“last”块转换为当前层。
 
4.layerp层
 
如果这能起作用,我认为它会起作用,那么我需要上面#2的帮助。我只是不懂lisp,或者我可以自己做。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:30 , Processed in 0.351765 second(s), 62 queries .

© 2020-2025 乐筑天下

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