明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 25480|回复: 76

[源码] (07.07再更新)改进Lee-Mac李麦克大神的outline轮廓边界线程序

    [复制链接]
发表于 2021-6-26 21:18:13 | 显示全部楼层 |阅读模式
本帖最后由 yjtdkj 于 2021-7-7 12:26 编辑

先上Lee-Mac李麦克大神的原版程序,和G版的函数
我的程序在2楼

本帖子中包含更多资源

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

x
"觉得好,就打赏"
    共1人打赏
 楼主| 发表于 2021-6-26 21:23:55 | 显示全部楼层
本帖最后由 yjtdkj 于 2021-7-7 10:10 编辑

我的改进是可以消除内部多余的轮廓,
不过现在还只做到了生成的边界是多段线的情况,如果生成的边界是面域,这种情况还没有考虑。
我有空试试把面域转成多段线。
---------------------------------------------------------
2021.06.28更新
面域也转成多段线了,大家再试试。
---------------------------------------------------------
2021.07.02更新
优化代码,加快速度,通用函数整合在一起了
---------------------------------------------------------
2021.07.07更新
修复了一bug,就是当内部轮廓与外部轮廓局部重合时,无法消除这个内部轮廓
增加了一个向外偏移的函数,向外偏移0.01,再wp窗选,再过滤掉本体,通过这个办法就可以消除BUG




本帖子中包含更多资源

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

x

评分

参与人数 3明经币 +2 金钱 +5 收起 理由
lxl217114 + 5 很给力!
USER2128 + 1 很给力!
tigcat + 1 很给力!

查看全部评分

回复 支持 2 反对 0

使用道具 举报

发表于 2021-6-27 08:38:56 | 显示全部楼层
好大一坨啊,几kb变成10几kb了。
回复 支持 0 反对 1

使用道具 举报

发表于 2025-5-17 21:41:54 | 显示全部楼层
yjtdkj 发表于 2021-6-26 21:23
我的改进是可以消除内部多余的轮廓,
不过现在还只做到了生成的边界是多段线的情况,如果生成的边界是面域 ...

谢谢大佬,很好用。修改了下直接变遮罩
(defun c:outline ( / *error* idx sel )
    (defun *error* ( msg )
        (LM:endundo (LM:acdoc))
        (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
            (princ (strcat "\nError: " msg))
        )
        (princ)
    )
    (if        (setq sel (ssget))
      (progn
        (setq #t0# (getvar "cdate"))
        (LM:startundo (LM:acdoc))
;;;        (LM:outline sel)
        (foreach x (LM:outline sel);;;图元列表
          (if (< (cdr (assoc 90 (entget x))) 3)
            (entdel x)
            (progn
              (vl-cmdf "WIPEOUT" "p" x "y")
              (vl-cmdf "draworder" (entlast) "" "f")
            )
          )
        )
        (princ
          (strcat "\n耗时:"
                  (rtos (* 1000000 (- (getvar "cdate") #t0#) 2 3))
                  "秒"
          )
        )       
;;;        (initget "Yes No")
;;;        (if (/=        "No"
;;;                (getkword
;;;                  "\nErase original objects? [Yes/No] <Yes>: "
;;;                )
;;;            )
;;;          (repeat (setq idx (sslength sel))
;;;            (entdel (ssname sel (setq idx (1- idx))))
;;;          )
;;;        )
        (LM:endundo (LM:acdoc))
      )
    )
    (princ)
)

点评

显示 Error: no function definition: LM:OUTLINE  发表于 2025-5-22 17:25
回复 支持 反对

使用道具 举报

发表于 2021-6-26 21:50:35 | 显示全部楼层
只保留外轮廓吗
发表于 2021-6-26 22:08:14 | 显示全部楼层
Error: no function definition: YJ_UN-REPEAT-LIST
什么情况
发表于 2021-6-26 22:10:02 | 显示全部楼层
Error: no function definition: YJ_UN-REPEAT-LIST
什么情况
 楼主| 发表于 2021-6-27 06:21:00 | 显示全部楼层
oistre 发表于 2021-6-26 22:08
Error: no function definition: YJ_UN-REPEAT-LIST
什么情况

不好意思,通用函数少了一个函数,现在加上了,请重新下载“通用函数.lsp”
 楼主| 发表于 2021-6-27 06:22:48 | 显示全部楼层

是的,没错的
发表于 2021-6-27 08:48:02 | 显示全部楼层
怎么调用通用函数?
 楼主| 发表于 2021-6-27 11:29:44 | 显示全部楼层
xiangganglv 发表于 2021-6-27 08:38
好大一坨啊,几kb变成10几kb了。

因为我把李麦克和G版函数合并到一起了呀,再加上我自己的,你以为消除内部多余线条这么容易呢?
you can you up!

评分

参与人数 1明经币 +1 收起 理由
pxt2001 + 1 赞一个!

查看全部评分

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

本版积分规则

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

GMT+8, 2025-8-12 04:28 , Processed in 0.199254 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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