乐筑天下

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

[编程交流] 块外部参照差异(&X)

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:23:42 | 显示全部楼层 |阅读模式
大家好,
 
希望你们都喜欢这个新年
 
这只是一个简短的问题,但在使用entsel函数检索此类实体时,如何区分外部参照和块之间的差异?
 
两者都显示为“插入”实体。。。。
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-6 15:29:41 | 显示全部楼层
检查块定义(不是插入图元)的group 70 dxf标志。
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 15:35:38 | 显示全部楼层
还有一种方法,只有外部参照有路径,
 
  1. (defun c:test (/ blk s)
  2.   (setq blk (tblnext "BLOCK" t))
  3.   (while blk
  4.      (if (assoc 1 blk)            ;Check if XRef Path Exists
  5.     (setq blk_list (strcat blk_list (cdr (assoc 1 blk)) "\n"))
  6.      ) ;_ end_if
  7.      (setq blk (tblnext "BLOCK"))
  8.   ) ;_ end_while
  9.   (alert blk_list)
  10.   (princ)
  11. ) ;_ end_defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:40:27 | 显示全部楼层
非常好-感谢您的回复,非常感谢。
 
Wizman,我喜欢你的方法,但tblnext定义不包含dxf组1,因此字符串返回nil。。。也可能是因为strcat试图将零的东西串在一起。
 
rkmcswain—当查看表定义的组70 dxf时—如果它不是零,那么它是一个外部参照就足够了吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:48:42 | 显示全部楼层
rkmcswain,这样行吗?
 
  1. (defun c:test (/ blk xlist)
  2.    (setq blk (tblnext "BLOCK" T))
  3.    (setq xlist "XREFS: \n")
  4.    (while blk
  5.    (if (/= (cdr (assoc 70 blk)) nil)
  6.        (setq xlist (strcat xlist (cdr (assoc 2 blk)) "\n"))
  7.    ) ;_  end if
  8.    (setq blk (tblnext "BLOCK"))
  9.    ) ;_  end while
  10.    (alert xlist)
  11.    (princ)
  12. ) ;_  end defun
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-6 15:53:21 | 显示全部楼层
 
否。组70是位编码值。检查该组中的位代码4。
 
例子:
 
  1. (defun is-xref (name)
  2. (if (eq 4 (logand 4 (cdr (assoc 70 (tblsearch "block" name)))))
  3.    t
  4.    nil
  5. )
  6. )
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:59:11 | 显示全部楼层
李,
 
如果要使用ENAME进行测试:
 
  1. [b][color=BLACK]([/color][/b]defun is_ent_xref [b][color=FUCHSIA]([/color][/b]e[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]= [b][color=MAROON]([/color][/b]type e[b][color=MAROON])[/color][/b] 'ENAME[b][color=NAVY])[/color][/b]
  3.       [b][color=NAVY]([/color][/b]= [color=#2f4f4f]"INSERT"[/color] [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 0 [b][color=BLUE]([/color][/b]entget e[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  4.       [b][color=NAVY]([/color][/b]=
  5.         [b][color=MAROON]([/color][/b]logand
  6.           [b][color=GREEN]([/color][/b]cdr
  7.             [b][color=BLUE]([/color][/b]assoc 70
  8.               [b][color=RED]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color]
  9.                 [b][color=PURPLE]([/color][/b]cdr
  10.                   [b][color=TEAL]([/color][/b]assoc 2
  11.                     [b][color=OLIVE]([/color][/b]entget e[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  12.                       4[b][color=MAROON])[/color][/b]
  13.                        4[b][color=NAVY])[/color][/b]
  14.                          [b][color=FUCHSIA])[/color][/b]
  15.                           [b][color=BLACK])[/color][/b]

 
 
返回T/nil
 
-大卫
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:02:36 | 显示全部楼层
谢谢你提供的信息,我只是不太明白
 
“logand”(组70的cdr)4
 
我已经阅读了ACAD关于“logand”的帮助,但仍然不明白它的意思是什么?
 
你是在比较70组代码和4组代码?但是如何比较呢?
 
再次感谢各位。
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-6 16:08:56 | 显示全部楼层
 
大体上如果查找组70中的块,您将看到:
0=未设置标志
1=表示匿名块
2=块具有非常量属性定义
4=块是外部参照
8=块是外部参照覆盖
...等等
 
注意那里的模式。。。1、2、4、8、16、32、64等。
 
如果设置了“4”位(表示这是外部参照),则组70的值将是4加上任何其他设置值的总和。
 
因此,如果这是一个普通块,则组70的值可能为0。
如果块具有属性,则组70的值可能为2
如果这是外部参照覆盖,则组70的值可能为12(4+)。
 
LOGAND做什么?为什么它会工作?看看这个,特别是第三个帖子。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:14:03 | 显示全部楼层
麦克斯温,你是一个传奇!
 
谢谢你的解释-我想在阅读ACAD帮助后我永远都不会理解它-但是这个链接对于解释事情来说太棒了!
 
谢谢你们的回复,谢谢你们抽出时间来帮助我,非常感谢
 
干杯
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 18:27 , Processed in 0.902116 second(s), 83 queries .

© 2020-2025 乐筑天下

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