乐筑天下

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

[编程交流] 删除三维多段线的顶点

[复制链接]

63

主题

242

帖子

181

银币

后起之秀

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

铜币
319
发表于 2022-7-5 16:08:15 | 显示全部楼层 |阅读模式
你好
如果水平距离小于先前顶点的0.05(例如),编写lisp的任何帮助都可以删除三维多段线选择的顶点
非常感谢。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 16:21:15 | 显示全部楼层
它可能看起来像这样:
 
[列表]
  • 根据需要编辑测试函数。
  • 非常危险,因此使用风险自负。
  • 保留第一个顶点,而不是以下顶点
  • 不适用于闭合或花键连接的柱脚
    [/列表]
     
    1. [b][color=BLACK]([/color][/b]defun c:3dp-rvtx [b][color=FUCHSIA]([/color][/b]/ ss i en ed vn vd vl v1 v2[b][color=FUCHSIA])[/color][/b]
    2. [b][color=FUCHSIA]([/color][/b]defun test [b][color=NAVY]([/color][/b]v1 v2[b][color=NAVY])[/color][/b]
    3.    [b][color=NAVY]([/color][/b]> [b][color=MAROON]([/color][/b]abs [b][color=GREEN]([/color][/b]- [b][color=BLUE]([/color][/b]car v2[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]car v1[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] 0.5[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
    4. [b][color=FUCHSIA]([/color][/b]setq ss nil[b][color=FUCHSIA])[/color][/b]
    5. [b][color=FUCHSIA]([/color][/b]princ [color=#2f4f4f]"\nSelect 3DPOLYlines....   "[/color][b][color=FUCHSIA])[/color][/b]
    6. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not ss[b][color=NAVY])[/color][/b]
    7.         [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"POLYLINE"[/color][b][color=BLUE])[/color][/b]
    8.                               [b][color=BLUE]([/color][/b]cons -4 [color=#2f4f4f]"="[/color][b][color=BLUE])[/color][/b]
    9.                                 [b][color=BLUE]([/color][/b]cons 70 8[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
    10. [b][color=FUCHSIA]([/color][/b]setq i 0[b][color=FUCHSIA])[/color][/b]
    11. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq en [b][color=MAROON]([/color][/b]ssname ss i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
    12.         [b][color=NAVY]([/color][/b]setq ed [b][color=MAROON]([/color][/b]entget en[b][color=MAROON])[/color][/b]
    13.               vn [b][color=MAROON]([/color][/b]entnext en[b][color=MAROON])[/color][/b]
    14.               vd [b][color=MAROON]([/color][/b]entget vn[b][color=MAROON])[/color][/b]
    15.               vl nil[b][color=NAVY])[/color][/b]
    16.         [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]= [color=#2f4f4f]"VERTEX"[/color] [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 0 vd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
    17.                [b][color=MAROON]([/color][/b]setq v1 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 vd[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
    18.                [b][color=MAROON]([/color][/b]cond [b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]= [color=#2f4f4f]"SEQEND"[/color] [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 0 [b][color=TEAL]([/color][/b]entget [b][color=OLIVE]([/color][/b]entnext vn[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
    19.                       [b][color=BLUE]([/color][/b]setq vl [b][color=RED]([/color][/b]cons v1 vl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
    20.                      [b][color=GREEN]([/color][/b]T
    21.                       [b][color=BLUE]([/color][/b]and [b][color=RED]([/color][/b]setq v2 [b][color=PURPLE]([/color][/b]cdr [b][color=TEAL]([/color][/b]assoc 10 [b][color=OLIVE]([/color][/b]entget [b][color=GRAY]([/color][/b]entnext vn[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
    22.                            [b][color=RED]([/color][/b]test v1 v2[b][color=RED])[/color][/b]
    23.                            [b][color=RED]([/color][/b]setq vl [b][color=PURPLE]([/color][/b]cons v1 vl[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
    24.                [b][color=MAROON]([/color][/b]setq vn [b][color=GREEN]([/color][/b]entnext vn[b][color=GREEN])[/color][/b]
    25.                      vd [b][color=GREEN]([/color][/b]entget vn[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
    26.         [b][color=NAVY]([/color][/b]and vl
    27.             [b][color=MAROON]([/color][/b]entdel en[b][color=MAROON])[/color][/b]
    28.             [b][color=MAROON]([/color][/b]entmake ed[b][color=MAROON])[/color][/b]
    29.             [b][color=MAROON]([/color][/b]foreach v [b][color=GREEN]([/color][/b]reverse vl[b][color=GREEN])[/color][/b]
    30.               [b][color=GREEN]([/color][/b]entmake [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"VERTEX"[/color][b][color=RED])[/color][/b][b][color=RED]([/color][/b]cons 10 v[b][color=RED])[/color][/b][b][color=RED]([/color][/b]cons 70 32[b][color=RED])[/color][/b]
    31.                              [b][color=RED]([/color][/b]assoc 8 ed[b][color=RED])[/color][/b]
    32.                              [b][color=RED]([/color][/b]cons 62 [b][color=PURPLE]([/color][/b]if [b][color=TEAL]([/color][/b]assoc 62 ed[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]cdr [b][color=OLIVE]([/color][/b]assoc 62 ed[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] 256[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
    33.                              [b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
    34.             [b][color=MAROON]([/color][/b]entmake vd[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
    35.         [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]1+ i[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
    36. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

     
     
    -大卫
  • 回复

    使用道具 举报

    63

    主题

    242

    帖子

    181

    银币

    后起之秀

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

    铜币
    319
    发表于 2022-7-5 16:24:19 | 显示全部楼层
    谢谢大卫先生的回复
    Lisp程序对我来说很棒
    你能让它删除沿着远处的顶点吗
    非常感谢。
    回复

    使用道具 举报

    26

    主题

    1495

    帖子

    20

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    118
    发表于 2022-7-5 16:34:32 | 显示全部楼层
    对不起,我不理解你的要求-大卫
    回复

    使用道具 举报

    63

    主题

    242

    帖子

    181

    银币

    后起之秀

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

    铜币
    319
    发表于 2022-7-5 16:40:35 | 显示全部楼层
    请检查要删除的顶点数(n+1)的图像
    在lisp中,删除顶点数(n)
    170821qaabsrrt2okssxv2.jpg
    回复

    使用道具 举报

    26

    主题

    1495

    帖子

    20

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    118
    发表于 2022-7-5 16:46:58 | 显示全部楼层
    正如我所说,保留第一个顶点,而不是下面的-David
    回复

    使用道具 举报

    0

    主题

    375

    帖子

    385

    银币

    限制会员

    铜币
    -7
    发表于 2022-7-5 16:49:11 | 显示全部楼层
    是0.5还是0.05?
    这是一个适用于任何距离的版本。
    1. (defun c:delvert ( / *error* msg ss d i e q a b l p)
    2. (vl-load-com)
    3. ;;;  (setq *error* (err))
    4. (if
    5.    (and
    6.      (setq msg "\nNothing selected.")
    7.      (setq ss (ssget "_:L" '((0 . "POLYLINE") (-4 . "&=") (70 .  (-4 . "<NOT") (-4 . "&=") (70 . 4) (-4 . "NOT>"))))
    8.      (setq msg "\nDistance required.")
    9.      (progn
    10.        (initget 6)
    11.        (setq d (getdist "\nSpecify distance: "))
    12.      )
    13.    )
    14.    (repeat (setq i (sslength ss))
    15.      (setq e (vlax-ename->vla-object (ssname ss (setq i (1- i))))
    16.            q (vlax-curve-isclosed e)
    17.            a (vlax-curve-getstartparam e)
    18.            b (vlax-curve-getendparam e)
    19.            l (list (vlax-curve-getstartpoint e))
    20.            )
    21.      (while (<= (setq a (1+ a)) b)
    22.        (setq p (vlax-curve-getpointatparam e a))
    23.        (if
    24.          (> (distance p (car l)) d)
    25.          (setq l (cons p l))
    26.        )
    27.      )
    28.      (vlax-put e 'coordinates (apply 'append (reverse (if q (cdr l) l))))
    29.    )
    30.    (princ msg)
    31. )
    32. ;;;  (*error* nil)
    33. (princ)
    34. )
    回复

    使用道具 举报

    26

    主题

    1495

    帖子

    20

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    118
    发表于 2022-7-5 16:59:13 | 显示全部楼层
    什么决定了PLINE的方向?
     
    我可以说最大的WCS X轴值是要保持的吗?
    回复

    使用道具 举报

    0

    主题

    375

    帖子

    385

    银币

    限制会员

    铜币
    -7
    发表于 2022-7-5 17:03:16 | 显示全部楼层
    在我的lisp中,多段线从头到尾迭代。如果到最后一个保留点的距离(3d距离)小于指定距离,则释放点。
    回复

    使用道具 举报

    63

    主题

    242

    帖子

    181

    银币

    后起之秀

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

    铜币
    319
    发表于 2022-7-5 17:09:43 | 显示全部楼层
    谢谢大家
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-13 20:02 , Processed in 0.565998 second(s), 74 queries .

    © 2020-2025 乐筑天下

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