乐筑天下

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

块中有多个块,如何彻底分解?

[复制链接]
wdb

25

主题

123

帖子

6

银币

后起之秀

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

铜币
223
发表于 2003-12-6 13:21:00 | 显示全部楼层 |阅读模式
块中有多个块,如何在用vlisp插入块时使块彻底分解?关键是不知道如何求得块分解后块中对象的选择集。
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-5-1 17:56:00 | 显示全部楼层

不用递归也能写的很简单
  1. (defun c:xex ()
  2.    (princ "\n炸开嵌套块.--------------by 无痕.2004.4")
  3.    (setvar "qaflags" 1)
  4.    (setq ss (ssget '((0 . "INSERT"))))
  5.    (while (setq ss (ssget "P" '((0 . "INSERT"))))
  6.        (command ".explode" ss "")
  7.    )(princ)
  8. )
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-12-6 14:39:00 | 显示全部楼层
(ssget "p")
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-12-6 14:53:00 | 显示全部楼层
分解嵌套块程序
;ent可以是对象名,也可以是选择集。。。
  1. (defun explodex(ents / ss i )
  2.   (command "_.explode" ents)
  3.   (setq ss (ssget "P"))
  4.   (setq i 0)
  5.   (repeat (sslength ss)
  6.     (setq ent (ssname ss i))
  7.     (if (= "INSERT" (cdr (assoc 0 (entget ent))))
  8.       (explodex ent)
  9.     )
  10.     (setq i (1+ i))
  11.   )
  12. )
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2003-12-7 02:55:00 | 显示全部楼层
试试改变这个系统变量 qaflags
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-12-7 08:16:00 | 显示全部楼层
我也編了個.供大家指點和參考, 呵呵. 可以根據需要進行修改SSGET的選擇方式.
(defun explode-all(/ all sl n sd);(explode-all)
  (setvar "cmdecho" 0)
  (repeat 2
  (setq all(ssget "x")        sl (sslength all) n 0)
  (repeat sl
    (setq sd (cdr (assoc 0 (entget (ssname all n)))))
    (if (= sd "INSERT")
      (command ".explode" (ssname all n)))
    (setq n (1+ n))))
  (setvar "cmdecho" 1)
  (princ))
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-12-7 11:02:00 | 显示全部楼层

这个变量是控制什么的?为什么帮助文件中搜索不到这个变量?
to:BDYCAD,你的程序不是炸开嵌套块的,你只炸了一层,如果块中有块,你还是无法完全炸开
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-12-7 13:48:00 | 显示全部楼层
to meflying:
http://www.mjtd.com/a2/list.asp?id=459
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2003-12-7 14:38:00 | 显示全部楼层
奇怪,为何帮助中没有说明?
看来这个参数是解决BDY的程序的,嵌套的块还得用我那个程序来解决
回复

使用道具 举报

wdb

25

主题

123

帖子

6

银币

后起之秀

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

铜币
223
发表于 2003-12-8 10:08:00 | 显示全部楼层
QAFLAGS acceps a value between 0 and 32767
bit 0 (1) : ^C in menu macro cancels grips (acts like keyboard ).
bit 1 (2) : no pause during text screen listings.
bit 2 (4) : no "alert" dialogs (text display instead).
bit 7 (128) : accepts "screen picks" (point lists) via (command) function.(看不懂)
Normally QAFLAGS should be set to 0. Because it might be set to other values it is a good idea to put (setvar "QAFLAGS" 0) in acaddoc.lsp or any other of your lisp files that you use for startup.
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-16 04:26 , Processed in 1.813277 second(s), 73 queries .

© 2020-2025 乐筑天下

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