乐筑天下

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

[编程交流] 多段线曲线设置为零ra

[复制链接]

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:02:20 | 显示全部楼层
也许您可以手动完成,但需要使用另一种技术。
 
首先分解多段线。然后删除所有弧段。然后使用Pedit和适当的模糊距离,重新连接所有直线段以形成多段线。
232641tthu0cshhvu37uhb.png
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-5 23:04:57 | 显示全部楼层
  1. (defun c:test (/ ss r i)
  2. (if
  3.    (setq ss (ssget ":L" '((0 . "LWPOLYLINE"))))
  4.     (progn
  5.       (if
  6.         (setq r (getdist (strcat "\nFillet radius <" (rtos (getvar 'filletrad)) ">: ")))
  7.          (setvar 'filletrad (abs r))
  8.       )
  9.       (repeat (setq i (sslength ss))
  10.         (command "fillet" "p" (ssname ss (setq i (1- i))))
  11.       )
  12.     )
  13. )
  14. (princ)
  15. )
回复

使用道具 举报

8

主题

34

帖子

26

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 23:06:31 | 显示全部楼层
你好
 
这是我写的,但我想修剪重叠在白线上的红线,只显示延伸到曲线外的红线。
 
  1. (defun c:pol ()
  2. (if (not (tblsearch "LAYER" "C-ROAD_CURV_TAN"))
  3.    (entmake '((0 . "LAYER")
  4.         (100 . "AcDbSymbolTableRecord")
  5.         (100 . "AcDbLayerTableRecord")
  6.         (2 . "C-ROAD_CURV_TAN")
  7.         (70 . 0)
  8.         (62 . 10)
  9.         (370 . -3)
  10.         (6 . "Continuous")
  11.        )
  12.    )
  13. )
  14. (setq poly (ssget '((0 . "LWPOLYLINE"))))
  15. (command "copy" poly  "" "0,0" "0,0" "")
  16. (setq poly2 (entlast))
  17. (command "CHANGE" poly2 "" "P" "la" "C-ROAD_CURV_TAN" "")
  18. (setvar "FILLETRAD" 0.0)
  19. (command "fillet" "p" poly2 "")
  20. (princ)
  21. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:11:28 | 显示全部楼层
还有一种方法:
  1. ([color=BLUE]defun[/color] c:decurve ( [color=BLUE]/[/color] vertexdata b c e i l p q r s x )
  2.    ([color=BLUE]defun[/color] vertexdata ( e )
  3.        ([color=BLUE]if[/color] ([color=BLUE]setq[/color] e ([color=BLUE]member[/color] ([color=BLUE]assoc[/color] 10 e) e))
  4.            ([color=BLUE]cons[/color] ([color=BLUE]list[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 10 e)) ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 42 e))) (vertexdata ([color=BLUE]cdr[/color] e)))
  5.        )
  6.    )
  7.    ([color=BLUE]if[/color] ([color=BLUE]setq[/color] s ([color=BLUE]ssget[/color] [color=MAROON]"_:L"[/color] '((0 . [color=MAROON]"LWPOLYLINE"[/color]) (-4 . [color=MAROON]"<>"[/color]) (42 . 0.0))))
  8.        ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] i ([color=BLUE]sslength[/color] s))
  9.            ([color=BLUE]setq[/color] e ([color=BLUE]entget[/color] ([color=BLUE]ssname[/color] s ([color=BLUE]setq[/color] i ([color=BLUE]1-[/color] i))))
  10.                  l (vertexdata e)
  11.                  r [color=BLUE]nil[/color]
  12.            )
  13.            ([color=BLUE]if[/color] ([color=BLUE]setq[/color] c ([color=BLUE]=[/color] 1 ([color=BLUE]logand[/color] 1 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 70 e)))))
  14.                ([color=BLUE]setq[/color] l ([color=BLUE]append[/color] l ([color=BLUE]list[/color] ([color=BLUE]car[/color] l))))
  15.            )
  16.            ([color=BLUE]while[/color] ([color=BLUE]cadr[/color] l)
  17.                ([color=BLUE]if[/color]
  18.                    ([color=BLUE]and[/color] ([color=BLUE]/=[/color] 0.0 ([color=BLUE]setq[/color] b ([color=BLUE]cadar[/color] l)))                        
  19.                        ([color=BLUE]setq[/color] p
  20.                            ([color=BLUE]polar[/color] ([color=BLUE]caar[/color] l)
  21.                                ([color=BLUE]+[/color] ([color=BLUE]angle[/color] ([color=BLUE]caar[/color] l) ([color=BLUE]caadr[/color] l)) ([color=BLUE]-[/color] ([color=BLUE]/[/color] [color=BLUE]pi[/color] 2) ([color=BLUE]*[/color] 2 ([color=BLUE]atan[/color] b))))
  22.                                ([color=BLUE]/[/color] ([color=BLUE]*[/color] ([color=BLUE]distance[/color] ([color=BLUE]caar[/color] l) ([color=BLUE]caadr[/color] l)) ([color=BLUE]1+[/color] ([color=BLUE]*[/color] b b))) 4 b)
  23.                            )
  24.                        )
  25.                        ([color=BLUE]setq[/color] q
  26.                            ([color=BLUE]inters[/color]
  27.                                ([color=BLUE]caar[/color]  l) ([color=BLUE]polar[/color] ([color=BLUE]caar[/color]  l) ([color=BLUE]+[/color] ([color=BLUE]angle[/color] p ([color=BLUE]caar[/color]  l)) ([color=BLUE]/[/color] [color=BLUE]pi[/color] 2.0)) 1.0)
  28.                                ([color=BLUE]caadr[/color] l) ([color=BLUE]polar[/color] ([color=BLUE]caadr[/color] l) ([color=BLUE]+[/color] ([color=BLUE]angle[/color] p ([color=BLUE]caadr[/color] l)) ([color=BLUE]/[/color] [color=BLUE]pi[/color] 2.0)) 1.0)
  29.                                [color=BLUE]nil[/color]
  30.                            )
  31.                        )
  32.                    )
  33.                    ([color=BLUE]setq[/color] r ([color=BLUE]vl-list*[/color] q ([color=BLUE]caar[/color] l) r))
  34.                    ([color=BLUE]setq[/color] r ([color=BLUE]cons[/color] ([color=BLUE]caar[/color] l) r))
  35.                )
  36.                ([color=BLUE]setq[/color] l ([color=BLUE]cdr[/color] l))
  37.            )
  38.            ([color=BLUE]if[/color] ([color=BLUE]not[/color] c) ([color=BLUE]setq[/color] r ([color=BLUE]cons[/color] ([color=BLUE]caar[/color] l) r)))
  39.            ([color=BLUE]entmake[/color]
  40.                ([color=BLUE]append[/color]
  41.                    ([color=BLUE]subst[/color]
  42.                        ([color=BLUE]cons[/color]  90 ([color=BLUE]length[/color] r))
  43.                        ([color=BLUE]assoc[/color] 90 e)
  44.                        ([color=BLUE]reverse[/color] ([color=BLUE]member[/color] ([color=BLUE]assoc[/color] 39 e) ([color=BLUE]reverse[/color] e)))
  45.                    )
  46.                    ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( x ) ([color=BLUE]cons[/color] 10 x)) ([color=BLUE]reverse[/color] r))
  47.                    ([color=BLUE]list[/color] ([color=BLUE]assoc[/color] 210 e))
  48.                )
  49.            )
  50.        )
  51.    )
  52.    ([color=BLUE]princ[/color])
  53. )
  54. ([color=BLUE]princ[/color])
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-5 23:15:45 | 显示全部楼层
 
 
..... .....
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:18:21 | 显示全部楼层
..........
回复

使用道具 举报

8

主题

34

帖子

26

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 23:23:02 | 显示全部楼层
 
嗨,李
 
你的版本比我的快得多。
是否可以仅绘制弧外的线或删除重叠在原始多段线上的线?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:23:49 | 显示全部楼层
 
太好了,谢谢
 
 
该程序将在删除所有圆弧段并替换为直线段的情况下重新创建多段线,因此,如果需要,可以删除原始多段线(或者可以轻松地将此删除添加到代码中)。
 
回复

使用道具 举报

8

主题

34

帖子

26

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 23:28:52 | 显示全部楼层
嗨,李
 
我只想删除与原始多段线重叠的直线
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:32 , Processed in 0.747987 second(s), 71 queries .

© 2020-2025 乐筑天下

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