乐筑天下

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

[编程交流] 比较两条多段线

[复制链接]

12

主题

26

帖子

15

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
59
发表于 2022-7-6 12:01:30 | 显示全部楼层 |阅读模式
我需要比较两条多段线,看看它们的尺寸是否相同。
这两条多段线位于不同的坐标中。
 
VBA中是否有执行此操作的“命令”?
 
我的猜测是提取长度、角度和凸起,然后进行比较,但必须是一种更简单的方法。。。
 
如果有人能帮我,我将不胜感激!
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:15:41 | 显示全部楼层
 
在不使用任何编码的情况下,能否复制一条多段线并将其放置在另一条多段线的顶部,然后进行目视检查?
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:21:37 | 显示全部楼层
这应该适用于2条重多段线:
 
  1. [b][color=BLACK]([/color][/b]defun c:arepleq [b][color=FUCHSIA]([/color][/b]/ ss pl1 pl2 vn1 vn2 vd1 vd2
  2.                       vl1 vl2 bl1 bl2 delta[b][color=FUCHSIA])[/color][/b]
  3. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]or [b][color=MAROON]([/color][/b]not ss[b][color=MAROON])[/color][/b]
  4.             [b][color=MAROON]([/color][/b]/= [b][color=GREEN]([/color][/b]sslength ss[b][color=GREEN])[/color][/b] 2[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  5.         [b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\nSelect 2 Polylines To Compare:   "[/color][b][color=NAVY])[/color][/b]
  6.         [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"POLYLINE"[/color][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]
  7. [b][color=FUCHSIA]([/color][/b]setq pl1 [b][color=NAVY]([/color][/b]ssname ss 0[b][color=NAVY])[/color][/b]
  8.        pl2 [b][color=NAVY]([/color][/b]ssname ss 1[b][color=NAVY])[/color][/b]
  9.        vn1 [b][color=NAVY]([/color][/b]entnext pl1[b][color=NAVY])[/color][/b]
  10.        vn2 [b][color=NAVY]([/color][/b]entnext pl2[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  11. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]/= [color=#2f4f4f]"SEQEND"[/color] [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 0 [b][color=BLUE]([/color][/b]entget vn1[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  12.         [b][color=NAVY]([/color][/b]setq vd1 [b][color=MAROON]([/color][/b]entget vn1[b][color=MAROON])[/color][/b]
  13.               vl1 [b][color=MAROON]([/color][/b]cons [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 vd1[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] vl1[b][color=MAROON])[/color][/b]
  14.               bl1 [b][color=MAROON]([/color][/b]cons [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 42 vd1[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] bl1[b][color=MAROON])[/color][/b]
  15.               vn1 [b][color=MAROON]([/color][/b]entnext vn1[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  16. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]/= [color=#2f4f4f]"SEQEND"[/color] [b][color=MAROON]([/color][/b]cdr [b][color=GREEN]([/color][/b]assoc 0 [b][color=BLUE]([/color][/b]entget vn2[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  17.         [b][color=NAVY]([/color][/b]setq vd2 [b][color=MAROON]([/color][/b]entget vn2[b][color=MAROON])[/color][/b]
  18.               vl2 [b][color=MAROON]([/color][/b]cons [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 vd2[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] vl2[b][color=MAROON])[/color][/b]
  19.               bl2 [b][color=MAROON]([/color][/b]cons [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 42 vd2[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] bl2[b][color=MAROON])[/color][/b]
  20.               vn2 [b][color=MAROON]([/color][/b]entnext vn2[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  21. [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]= [b][color=MAROON]([/color][/b]length bl1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]length bl2[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  22.      [b][color=NAVY]([/color][/b]progn
  23.         [b][color=MAROON]([/color][/b]setq delta [b][color=GREEN]([/color][/b]mapcar '- [b][color=BLUE]([/color][/b]car vl1[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]car vl2[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  24.         [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]and vl1 vl2 delta[b][color=GREEN])[/color][/b]
  25.                [b][color=GREEN]([/color][/b]cond [b][color=BLUE]([/color][/b][b][color=RED]([/color][/b]equal delta [b][color=PURPLE]([/color][/b]mapcar '- [b][color=TEAL]([/color][/b]car vl1[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]car vl2[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] 1e-8[b][color=RED])[/color][/b]
  26.                       [b][color=RED]([/color][/b]setq vl1 [b][color=PURPLE]([/color][/b]cdr vl1[b][color=PURPLE])[/color][/b]
  27.                             vl2 [b][color=PURPLE]([/color][/b]cdr vl2[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  28.                      [b][color=BLUE]([/color][/b]T [b][color=RED]([/color][/b]setq delta nil[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  29.         [b][color=MAROON]([/color][/b]foreach p bl1
  30.            [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]not [b][color=RED]([/color][/b]equal [b][color=PURPLE]([/color][/b]car bl1[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]car bl2[b][color=PURPLE])[/color][/b] 1e-8[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  31.                [b][color=BLUE]([/color][/b]setq delta nil[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  32.            [b][color=GREEN]([/color][/b]setq bl1 [b][color=BLUE]([/color][/b]cdr bl1[b][color=BLUE])[/color][/b]
  33.                  bl2 [b][color=BLUE]([/color][/b]cdr bl2[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]
  34. [b][color=FUCHSIA]([/color][/b]if delta
  35.     [b][color=NAVY]([/color][/b]alert [color=#2f4f4f]"Polylines vertices and bulges are offsets"[/color][b][color=NAVY])[/color][/b]
  36.     [b][color=NAVY]([/color][/b]alert [color=#2f4f4f]"Polylines vertices and bulges are not offsets"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  37. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

-大卫
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:28:07 | 显示全部楼层
好代码David
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:33:29 | 显示全部楼层
 
 
谢谢它可能需要在ssget调用中进行更多过滤,并处理LWpolyline,但我今天有点懒,必须去看牙医-大卫
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:45:51 | 显示全部楼层
 
而不是你而不是我!:眨眼:
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2022-7-6 12:51:16 | 显示全部楼层
你好
 
我的2个字母表示多段线。
 
  1. (defun comparepline (pl1 pl2 / el1 el2 pt1 pt2 sw1 sw2 ew1 ew2 bu1 bu2 vec)
  2. (mapcar
  3.    '(lambda (pl el pt sw ew bu)
  4.       (set el (entget pl))
  5.       (foreach p (eval el)
  6.         (cond
  7.           ((= 10 (car p)) (set pt (cons (cdr p) (eval pt))))
  8.           ((= 40 (car p)) (set sw (cons (cdr p) (eval sw))))
  9.           ((= 41 (car p)) (set ew (cons (cdr p) (eval ew))))
  10.           ((= 42 (car p)) (set bu (cons (cdr p) (eval bu))))
  11.         )
  12.       )
  13.     )
  14.    (list pl1 pl2)
  15.    '(el1 el2)
  16.    '(pt1 pt2)
  17.    '(sw1 sw2)
  18.    '(ew1 ew2)
  19.    '(bu1 bu2)
  20. )
  21. (setq vec (mapcar '- (car pt1) (car pt2)))
  22. (and
  23.    (equal sw1 sw2)
  24.    (equal ew1 ew2)
  25.    (equal bu1 bu2)
  26.    (equal pt1 (mapcar '(lambda (p) (mapcar '+ p vec)) pt2))
  27. )
  28. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:57:07 | 显示全部楼层
吉尔,
 
我喜欢你获取凸起/点等列表的方法——非常新颖!
回复

使用道具 举报

12

主题

26

帖子

15

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
59
发表于 2022-7-6 13:04:24 | 显示全部楼层
效果很好!
谢谢David&Gile
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:37 , Processed in 0.451515 second(s), 70 queries .

© 2020-2025 乐筑天下

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