乐筑天下

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

[编程交流] 与非工作corr相交

[复制链接]

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 23:05:53 | 显示全部楼层
继续与主题相关。
 
http://www.cadtutor.net/forum/showthread.php?76914-与VBA工作不正常相关
回复

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 23:08:44 | 显示全部楼层
嗨,好的,
 
现在我看到了问题,它可能与修剪问题有关。我认为问题在于,在黄色多段线上有一个节点,距离两条线的交点0.039 mm。第二组坐标是节点的坐标。如果我移动这个节点,使其距离交点0.060 mm,那么代码只返回一个交点。这就好像搜索半径约为0.05 mm,该半径内的任何线段都将返回与其他多段线的交点。我不明白的是,在与1区相同的其他“区域”中,不返回2个十字路口。我复制了“原始区域”,并返回了2个相交点。我在谷歌上搜索了一下,发现了很多关于IntersectWith方法的问题,所以这很可能是VBA中的一个bug。
 
不幸的是,我认为这个问题没有解决方法。很抱歉让我们看看有没有其他人可以帮忙。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 23:14:33 | 显示全部楼层
好奇地当复制直线时,似乎“向上”返回两个交点坐标,而“向下”仅返回一个。
 
为了验证我的理论,尝试在Y轴的区域1和区域2之间复制区域1,在区域和右侧的白线之间工作,并返回两个坐标。
 
但是,如果要将区域1的结果副本在Y轴上向下移动,使其现在位于原始区域1和右侧白线底部之间,则返回一个坐标。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 23:18:54 | 显示全部楼层
我合并了你的线程,并将你的代码封装在代码标签中。
 
请阅读代码发布指南。将来,如果你在错误的论坛上发帖,请版主帮你移动。
回复

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 23:21:16 | 显示全部楼层
 
我可以证实你的话,RenderMan。但是为什么呢?这就是我不明白的。但是,如果OP仅适用于原始多段线,则问题不应出现,因为它似乎仅适用于某些复制的对象。
 
在区域1中,如果使用两条新的多段线绘制两条多段线,然后删除原始多段线,仍然会返回两个交点。这推翻了上述理论。我没有解释!
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 23:26:30 | 显示全部楼层
嗨,小家伙。
 
我不会解决这个问题。但对我来说是正确的部分。更好地检查。问题坐标系。我想。我想知道数字是否会带来财富?当问题不接近坐标0,0,0时。当远离问题和错误时。问候语。
 
  1. Sub DEDECTIPONPL()
  2.    Dim Poly1   As AcadLWPolyline
  3.    Dim Poly2   As AcadLWPolyline
  4.    Dim pts     As Variant
  5.    Dim varPick As Variant
  6.    Dim objEnt  As AcadEntity
  7.    ThisDrawing.Utility.GetEntity objEnt, varPick, "Select Poly 1: "
  8.    If objEnt.ObjectName = "AcDbPolyline" Then
  9.        Set Poly1 = objEnt
  10.    End If
  11.    ThisDrawing.Utility.GetEntity objEnt, varPick, "Select Poly 2: "
  12.    If objEnt.ObjectName = "AcDbPolyline" Then
  13.        Set Poly2 = objEnt
  14.    End If
  15.    'New . New . New . New . New
  16.    Dim pont(0 To 2) As Double
  17.    Dim kont(0 To 2) As Double
  18.    pont(0) = Poly1.Coordinates(0)
  19.    pont(1) = Poly1.Coordinates(1)
  20.    pont(2) = 0
  21.    kont(0) = 0
  22.    kont(1) = 0
  23.    kont(2) = 0
  24.    Poly1.Move pont, kont
  25.    Poly2.Move pont, kont
  26.    'New . New . New . New . New
  27.    'This Project can be dedected, 1,2 or 3 intersection point of Plines.
  28.    'This program will detect the number of point of intersection.
  29.    pts = Poly1.IntersectWith(Poly2, acExtendNone)
  30.    If UBound(pts) = 2 Then
  31.    MsgBox "1 intersection point dedected." & vbCr & _
  32.    "X= " & pts(0) & ", " & "Y= " & pts(1) & vbCr, _
  33.    vbInformation, "Intersection Point Dedector"
  34.    ElseIf UBound(pts) = 5 Then
  35.    MsgBox "2 intersection point dedected." & vbCr & _
  36.    "X= " & pts(0) & ", " & "Y= " & pts(1) & vbCr & _
  37.    "X= " & pts(3) & ", " & "Y= " & pts(4), _
  38.    vbInformation, "Intersection Point Dedector"
  39.    ElseIf UBound(pts) = 8 Then
  40.    MsgBox "3 intersection point dedected." & vbCr & _
  41.    "X= " & pts(0) & ", " & "Y= " & pts(1) & vbCr & _
  42.    "X= " & pts(3) & ", " & "Y= " & pts(4) & vbCr & _
  43.    "X= " & pts(6) & ", " & "Y= " & pts(7), _
  44.    vbInformation, "Intersection Point Dedector"
  45.    Else
  46.    MsgBox "intersection point number > 3" & vbCr & "Program Limits Exceed"
  47.    End If
  48.    'New . New . New . New . New
  49.    Poly1.Move kont, pont
  50.    Poly2.Move kont, pont
  51.    'New . New . New . New . New
  52. End Sub
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 11:24 , Processed in 0.709819 second(s), 73 queries .

© 2020-2025 乐筑天下

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