乐筑天下

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

[编程交流] 我只想要方块而不是Xre

[复制链接]

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-6 09:08:05 | 显示全部楼层 |阅读模式
大家好,
 
我希望wblock所有块,即使没有插入,但作为命名对象存在。但是,当我使用tblsearch、tblnext时。。。函数,它们也返回外部参照。如何从上述函数返回的名称列表中区分块?
 
提前谢谢。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:13:08 | 显示全部楼层
TBL搜索
 
适用于常规块
 
  1. (< (logior 2 (cdr (assoc 70 (tblsearch "BLOCK" "XrefBlock")))) 3)
  2. (< (logior 2 (cdr (assoc 70 (tblsearch "BLOCK" "RegularBlock")))) 3)

 
TBL下一步
 
  1. (< (logior 2 (cdr(assoc 70 (tblnext "BLOCK")))) 3)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:15:25 | 显示全部楼层
这可能会奏效。
 
  1. (defun c:ExportBlks (/ blk l ss)
  2. ;; Tharwat 23. 07. 2011
  3. (while
  4.    (setq blk (tblnext "BLOCK" (null blk)))
  5.     (member (cdr (assoc 2 blk))
  6.             (setq l (cons (cdr (assoc 2 blk)) l))
  7.     )
  8. )
  9. (setq ss (ssadd))
  10. (foreach x l
  11.    (command "_.-insert" x '(0. 0. 0.) "" "" "")
  12.    (ssadd (entlast) ss)
  13. )
  14. (command "._wblock"
  15.           (strcat (getvar 'dwgprefix) "DrawingName.dwg")
  16.           ""
  17.           "_Non"
  18.           '(0.0 0.0 0.0)
  19.           ss
  20.           ""
  21. )
  22. (command "_.erase" (sssetfirst nil ss) "")
  23. (princ)
  24. )

 
塔瓦特
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:20:34 | 显示全部楼层
塔尔瓦特。。
 
 
您需要过滤列表以排除外部参照,并且通过适当的功能,您不需要在调用Wblock之前插入块。
研究WBLOCK方法
 
 
或在此处提供块名称
  1. Enter name of existing block or
  2. [= [b](block=output file)/[/b]* (whole drawing)] <define new drawing>:
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:23:54 | 显示全部楼层
我想外部参照块不能通过insert命令插入,这就是为什么我使用它来避免选择外部参照。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:25:49 | 显示全部楼层
关键是不要像“INSERT”“ERASE”那样调用不必要的行。简单的测试会告诉您它不是外部参照
 
  1. (< (logior 2 (cdr(assoc 70 (tblnext "BLOCK")))) 3)
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-6 09:30:15 | 显示全部楼层
pBe和Tharwat,谢谢你们的帮助。
我会试试的。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:32:18 | 显示全部楼层
 
如果OP希望使用ssget“_x”选择所有块并对其进行过滤以避免外部参照,那么这是正确的,并对此进行检查。
 
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:35:46 | 显示全部楼层
最好的方法是不通过选择而是从块表中创建块列表。
 
SSGET不会选择未插入的块
 
您可以只提供块名(过滤列表后),而不选择块本身。光是名字就足够了
 
因此无需调用插入和擦除
 
像这样的
  1. (while
  2. (setq blk (tblnext "BLOCK" (null blk)))
  3. (if (< (logior 2 (cdr(assoc 70 blk))) 3)
  4. (command "._wblock" (strcat "d:\\[color=blue]path[/color]\" (setq nm (cdr (assoc 2 blk)))) nm )))

 
编辑:
 
  1. (defun c:WBBlock  (/ blk ChkNme nm)
  2.      (while
  3.            (setq blk (tblnext "BLOCK" (null blk)))
  4.                 (if (< (logior 2 (cdr (assoc 70 blk))) 3)
  5.                       (progn
  6.                             (command
  7.                                   "._wblock"
  8.                                   (setq ChkNme (strcat
  9.                                                      "d:\\path\"
  10.                                                      (setq nm   (cdr  (assoc 2 blk)))
  11.                                                      ".dwg")))
  12.                             (while (> (getvar 'cmdactive) 0)
  13.                                   (if (findfile ChkNme)
  14.                                         (command "Y" nm)
  15.                                         (command nm)))
  16.                             )
  17.                       )
  18.                 )
  19.      )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:39:19 | 显示全部楼层
pBe您的例程将每个块写入一个单独的图形,该图形只包含一个块。
 
当做
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 04:56 , Processed in 0.590414 second(s), 83 queries .

© 2020-2025 乐筑天下

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