乐筑天下

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

[编程交流] 选择外部参照lisp

[复制链接]

6

主题

18

帖子

12

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 10:20:31 | 显示全部楼层 |阅读模式
谁能告诉我如何选择图形中的所有外部参照并将其移动到特定图层(440\u XREF)?
 
我已经尝试了与此主题相关的所有其他帖子,但不幸的是,我对编码的知识没有扩展到:
 
(setq sel1(ssget“x”'((0。“插入”)))
这将选择所有块,包括外部参照,但我不知道如何过滤它们。
 
谢谢
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:35:07 | 显示全部楼层
  1. [b][color=BLACK]([/color][/b]defun c:xreflist [b][color=FUCHSIA]([/color][/b]/ tdef xl[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq tdef [b][color=MAROON]([/color][/b]tblnext [color=#2f4f4f]"BLOCK"[/color] [b][color=GREEN]([/color][/b]not tdef[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  3.         [b][color=NAVY]([/color][/b]if [b][color=MAROON]([/color][/b]= [b][color=GREEN]([/color][/b]logand [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 70 tdef[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 4[b][color=GREEN])[/color][/b] 4[b][color=MAROON])[/color][/b]
  4.             [b][color=MAROON]([/color][/b]setq xl [b][color=GREEN]([/color][/b]cons [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 2 tdef[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] xl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  5. xl[b][color=BLACK])[/color][/b]

 
 
您必须检查每个块表定义,以确定该块是否为外部参照
 
使用(tblnext)逐步完成块表定义
如果设置了块标志(组70)4位,
然后将块名(组2)添加到列表“xl”中
 
xl是包含找到的外部参照名称的列表
 
问题在于,其中一些块可能嵌套在其他外部参照中,因此CHPROP无法操作图层。
 
或者可以简单到:
  1. [b][color=BLACK]([/color][/b]foreach b xl
  2. [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"INSERT"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 2 b[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  3.      [b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.CHPROP"[/color] ss [color=#2f4f4f]""[/color] [color=#2f4f4f]"_LA"[/color] [color=#2f4f4f]"440_XREF"[/color] [color=#2f4f4f]""[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
HTH-David
回复

使用道具 举报

6

主题

18

帖子

12

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 10:50:15 | 显示全部楼层
谢谢David,
 
它起作用了
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:55:50 | 显示全部楼层
你也可以这样做
 
  1. (setq xr_dwg (vla-get-activedocument (vlax-get-acad-object))
  2. xr_blk (vla-get-blocks xr_dwg))
  3. (vlax-for blk xr_blk
  4.   (if (= (vla-get-IsXRef blk) :vlax-true)
  5.     (setq xl (cons (vla-get-name blk) xl))
  6.   )
  7. )

 
并使用了daivds的第二部分
回复

使用道具 举报

55

主题

293

帖子

239

银币

后起之秀

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

铜币
275
发表于 2022-7-6 11:01:30 | 显示全部楼层
 
pBe做得很好。
 
请问如何获取外部参照图纸的完整路径?
 
非常感谢
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 11:11:51 | 显示全部楼层
  1. (setq xr_dwg (vla-get-activedocument (vlax-get-acad-object))
  2. xr_blk (vla-get-blocks xr_dwg))
  3. (vlax-for blk xr_blk
  4.   (if (= (vla-get-IsXRef blk) :vlax-true)(progn
  5.     (setq xl (cons (vla-get-name blk) xl))
  6.   (print (vla-get-path blk))(princ))        
  7.   )
  8. )

 
只需添加(vla get path.)
给你
 
谢谢michaels
回复

使用道具 举报

55

主题

293

帖子

239

银币

后起之秀

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

铜币
275
发表于 2022-7-6 11:21:27 | 显示全部楼层
精彩的pBe。
 
非常感谢您的时间和快速回复。
 
非常感谢。
 
迈克尔。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-6 07:39 , Processed in 1.123303 second(s), 66 queries .

© 2020-2025 乐筑天下

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