明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3958|回复: 30

[讨论] 恢复被打碎的块

[复制链接]
发表于 2015-12-18 20:30 | 显示全部楼层 |阅读模式
本帖最后由 jack093 于 2015-12-23 08:51 编辑

来往工作图中,经常有许多的块被打碎,文件变大而且变得很难使用,恢复这些块比打碎可难多了。
如果文件中这些块定义还在,可以遍历图中的块定义,匹配文件中的所有图元,将那些被打碎的块恢复。
如果快定义不在了,只能手动选择再匹配恢复。
这几天整蛊了一个,但是旋转和变比过的块匹配不了,几个计算位置点的函数算法有问题,另外非直线图元没有测试,也有问题,晒出了,希望矩阵高人出手。
(defun c:unex(/ ss1 chkss ssret pt blk blks s sec st n ss2 ang sc flag_scale fuzz pas p3 ang2 sc2 ss3)
    ;;   
    (setvar "cmdecho" 0)
    (command "_.UNDO" "_GROUP")
    (prompt "\n恢复许多被打碎的块。\n选择一组modal对象做块: ")
    (if (setq ss1 (ssget))
        (progn
            (chkss ss1 nil)
            (setq ssret (ssadd))
            (setq pt (getpoint "\nbase point<anywhere>:\n"))
            (if (null pt)
                (setq pt (cdr (assoc 10 (entget (ssname ss1 0))))))
            (setq blk (getstring "\nblock name<return to random>: "))
                    (setq s (getvar "DATE"))
                    (setq sec (* 86400.0 (- s (fix s))))
            (setq blks 1)
            (if(= blk "")
                    (setq blk (strcat "$_"(itoa (fix sec))))
                )
            (if (tblsearch "block" blk)
                (progn
                    (setq st blk n 0)
                    (while (tblsearch "block" (strcat st (itoa n)))
                        (setq n (1+ n)))
                    (setq blk (strcat st (itoa n)))
                ))
            (prompt "\n选择全部被打碎的块: ")
            (if (setq ss2 (ssget))
                (progn
                    (setq ang 0 sc 1)
                    (initget "1 2 3")
                    (setq flag_scale (getkword "1:固定比例,不旋转; 2:固定比例,可旋转; 3:可旋转可变比<1 固定比例,不旋转>:"))
                    (if (= flag_scale "2")
                        (setq ang nil sc 1)
                        (if (= flag_scale "3")
                            (setq ang nil sc nil)
                        ))


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

破镜重圆,还真不是件容易的事情!  发表于 2015-12-21 10:17

评分

参与人数 3明经币 +4 金钱 +5 收起 理由
树櫴希德 + 1 + 5 赞一个!
USER2128 + 1 赞一个!
xyp1964 + 2 再来个演示就更好了

查看全部评分

发表于 2020-9-27 02:38 | 显示全部楼层
老师:加载一楼的插件,使用时提示no function definition: SS_ADD-DEL,怎么解决?
发表于 2021-7-17 23:15 | 显示全部楼层
支持楼主原创,也是首先在论坛提出这个创意的。
发表于 2019-4-18 10:37 | 显示全部楼层
想不到还可以,破镜重圆,点赞
 楼主| 发表于 2015-12-18 20:33 | 显示全部楼层
本帖最后由 jack093 于 2015-12-23 08:47 编辑

(defun find_eq_ent

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2015-12-18 20:39 | 显示全部楼层
本帖最后由 jack093 于 2015-12-18 20:44 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2015-12-19 10:31 | 显示全部楼层
这个功能不错,顶一下
发表于 2015-12-19 12:28 | 显示全部楼层
路过学习下
发表于 2015-12-19 12:53 | 显示全部楼层
不错。。。
 楼主| 发表于 2015-12-19 23:10 | 显示全部楼层
没有人感兴趣吗?
代码还有许多bug,正在调试中
defun triangle_2_mrs(p1 p2 p3 p1a p2a /  an sc x1 y1 x1a y1a x3 y3 x1s y1s ang13 d1s3 x3s y3s)
    (setq an (- (angle p1a p2a)(angle p1 p2)))
    (setq sc (/ (distance p1a p2a)(distance p1 p2)))

评分

参与人数 1明经币 +1 金钱 +10 收起 理由
lucas_3333 + 1 + 10 不错的主题! 望持续更新!

查看全部评分

发表于 2015-12-20 18:14 | 显示全部楼层
这个想法不错,支持楼主
发表于 2015-12-21 09:05 | 显示全部楼层
这个还是论坛中的第一贴
发表于 2015-12-21 09:51 | 显示全部楼层
支持楼主,好东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 01:36 , Processed in 0.302702 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表