明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2584|回复: 53

【S】填充拉伸_v8.2——支持记忆拉伸

    [复制链接]
发表于 2024-2-24 12:16 | 显示全部楼层 |阅读模式
本帖最后由 kucha007 于 2024-3-23 21:38 编辑

旧贴在这里:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=186418&page=1&extra=#pid928863

一直想再改写这个程序,但之前对复杂表的处理总是不得要点。前段时间梳理了填充生成边界,这加强了我对表的理解。

所以这回是在重新理解了ssnamex的基础上,几乎是推到重来了。本程序和之前的版本不同的点主要有这些:
1-增强原拉伸命令,记录位移量。空格使用上一次位移量进行拉伸
(位移量是相对于UCS原点)
(记忆拉伸增加反向拉伸的操作)
2-增加对其它选择方式的兼容,收集包含点选和栏选产生的对象。使其更接近原生的拉伸命令
(这里收集的对象,拉伸时表现为移动)

已知可能出错的情况:
在位编辑的设置中,可以锁定不在工作集中的所有对象
当这个选项被勾选且正在编辑参照时,如果仅选择不在工作集中的对象,且这部分对象包含填充HATCH,则会因为无法生成填充轮廓而造成错误。
lisp不知道怎么判断对象不在工作集中(有大佬知道可以分享一下),目前只能是尽量增加判断来避免出现这种情况了

不过这个选项默认是锁定的,非锁时就没问题了。一般也不会在编辑参照的时候仅去拉伸不在工作集中的对象吧?



可能会误认为出错的情况:
该程序的原理是生成填充的轮廓并且关联,然后再重新框选进行拉伸。
所以第一步就要解除填充与旧边界的关联,从而使得新生成的边界可以和填充关联,以便关联拉伸
拉伸后新的填充边界被删除,填充也就不再和任何边界关联。
也就是说原来关联的填充拉伸后将不再关联,看起来就像出错了一样。
但是,这不是错误!!! 这不是错误!!! 这不是错误!!!

况且这个程序是带填充拉伸,所以填充是否关联也不重要了吧?









本帖子中包含更多资源

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

x

点评

当填充范围有标注或文字就容易出错,出错后就没法正常使用。  发表于 2024-3-9 12:23

评分

参与人数 6明经币 +6 收起 理由
zhoupeng220 + 1 很给力!
ssyfeng + 1 赞一个!
yanchao316 + 1 很给力!
love1030312 + 1 很给力!
lxl217114 + 1 赞一个!
tigcat + 1 很给力!

查看全部评分

 楼主| 发表于 2024-2-24 14:01 | 显示全部楼层
本帖最后由 kucha007 于 2024-3-16 00:53 编辑

20240316_v8.2
1-修复了多次选择,后选的对象不会拉伸而是变为移动的bug
2-改写了获取块在位编辑时,是否锁定外部对象的选项值。以便判断是否重构选择集
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=189614&fromuid=7329538



20240204——此版本不再更新,可能有bug
尝试过滤掉关联填充,只生成非关联填充的边界,使得拉伸前关联的填充,拉伸后仍然保持关联。
但是可能会出错,例如删除了关联的边界却仍然保持关联的填充将无法拉伸。
这时可以先原位移动一下这部分填充再用拉伸命令,我个人还是喜欢v8.1的只要是填充就生成边界

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
zhoupeng220 + 1

查看全部评分

回复 支持 2 反对 0

使用道具 举报

发表于 2024-2-29 12:07 | 显示全部楼层
本帖最后由 yanchao316 于 2024-2-29 12:15 编辑

请问如果想取消拉伸时的预览效果,好不好改,应该改哪个地方?一直在用个没预览的记忆拉伸,开始还希望有自带的拉伸预览效果,用久了反而觉得没预览的比较适合我(拉伸有标注尺寸的图,预览的标注尺寸会遮挡原图,影响视觉,口算尺寸),像如下这个效果
;;
(defun c:s (/ ANG DIS SS P1 P2)
  (mapcar 'set '(ANG DIS) **STRETCH_DAT**)
  (or ANG (setq ANG 0))
  (or DIS (setq DIS 50))
  (if (and (setq SS (ssget))
           (if (and (setq P1 (getpoint (strcat "\n指定基点 <" (rtos DIS) ">: ")))
                    (or (setq P2 (getpoint P1 "\n指定第二个点: "))
                        (setq P2 T)
                    )
               )
             (if (= P2 T)
               (setq P2 nil)
               (setq **STRETCH_DAT** (list (angle P1 P2) (distance P1 P2)))
             )
             (setq P1 '(0 0 0) P2 (polar P1 ANG DIS))
           )
           P2
      )
    (command "_.STRETCH" SS "" "_non" P1 "_non" P2)
  )
  (princ))
发表于 2024-2-24 14:45 | 显示全部楼层
顶一个,好东西就要马上使用
发表于 2024-2-24 18:03 | 显示全部楼层
这个挺好用的,支持一下
发表于 2024-2-24 22:10 | 显示全部楼层
感谢楼主不断更新,不断优化
发表于 2024-2-24 23:45 | 显示全部楼层
感谢大佬分享
发表于 2024-2-25 08:16 | 显示全部楼层
那个好用啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 14:33 , Processed in 0.308583 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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