乐筑天下

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

请meflying答复(ssget "_p")问题

[复制链接]

19

主题

79

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2004-6-16 10:12:00 | 显示全部楼层 |阅读模式
飞哥好:
如附图所示,选中所有图元,explode三次,图元个数分别为15,292,496
而我用lisp代码如下:请指正
(command "undo" "be")
(setq ss1 (ssget))
(SETQ N1 (SSLENGTH SS1))
(command "explode" ss1 "")
(setq ss1 (ssget "_p"))
(SETQ N1 (SSLENGTH SS1))
(command "explode" ss1 "")
(setq ss1 (ssget "_p"))
(SETQ N1 (SSLENGTH SS1))
(command "explode" ss1 "")
(setq ss1 (ssget "_p"))
(SETQ N1 (SSLENGTH SS1))
(command "undo" "e")

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

19

主题

79

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2004-6-16 10:14:00 | 显示全部楼层
执行后显示错误,而且explode后图元个数也不对,请高手指点,谢谢!
回复

使用道具 举报

19

主题

79

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2004-6-16 13:57:00 | 显示全部楼层
问题解决了,但循环次数太多,有没有更高效的办法?在图形界面explode 3次就能解决问题,走程序要300次,问题到底处在哪? 请指教!谢谢!
(command "undo" "be")
(setq ss1 (ssget))
(setq ptl(ssnamex ss1 0))
(setq pt1 (cadr(car(cdr(assoc -1 ptl )))))
(setq pt2 (cadr(caddr(cdr(assoc -1 ptl )))))
(SETQ N1 (SSLENGTH SS1))
(repeat        300
         (command "_explode" ss1 "")
         (setq ss1 (ssget "_c" pt1 pt2))
(SETQ N1 (SSLENGTH SS1))
)
(command "undo" "e")
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-6-16 22:43:00 | 显示全部楼层
用程序炸开多个不是已经解决了么?
怎么久不久又来搞一个?
回复

使用道具 举报

19

主题

79

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2004-6-17 11:55:00 | 显示全部楼层
请飞哥试一下我上传的dwg图,用您的程序执行一次后图元个数为77个,在图形界面explode一次后图元个数为77个,问题还是没解决,是否存在他问题,请指教!
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-6-17 13:59:00 | 显示全部楼层
你的要求并不是炸开所有的块。。。而是能炸的东西都炸开(如:MTEXT可以炸为TEXT,PLINE可以炸为LINE)。。。
(setvar "qaflags" 1)
(repeat 3 (command "_.explode" "all" ""))
即可
回复

使用道具 举报

19

主题

79

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2004-6-17 15:55:00 | 显示全部楼层
谢谢您!问题解决了。
这次学到了不少东西,感谢您的无私帮助!
        (setvar "qaflags" 1)
(setq ss1 (ssget))
(setq ptl (ssnamex ss1 0))
(setq pt1 (cadr (car (cdr (assoc -1 ptl)))))
(setq pt2 (cadr (caddr (cdr (assoc -1 ptl)))))
(setq n1 (sslength ss1))
(repeat 3
(command "_.explode" ss1 "")
(setq ss1 (ssget "_c" pt1 pt2))
         (setq n1 (sslength ss1))
)
您帮看一下有没有更简洁的办法?
回复

使用道具 举报

19

主题

79

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2004-6-17 16:02:00 | 显示全部楼层
(setvar "qaflags" 1)
(setq ss(ssget))
(repeat 3
(command "_.explode" ss "")
(setq ss (ssget "p"))
)
更简单,谢谢!
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-6-17 20:08:00 | 显示全部楼层
  1. (defun c:test (/ ss)
  2.    (while (setq ss (ssget "x" '((0 . "Mtext,Dimension,insert,*polyline,3d*,region"))))
  3.        (command ".explode" ss "")
  4.    )
  5. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-18 07:28 , Processed in 0.632899 second(s), 76 queries .

© 2020-2025 乐筑天下

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