乐筑天下

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

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

[复制链接]

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:23:05 | 显示全部楼层 |阅读模式
嗨,我是Acad 2010用户。随附的文件,似乎有问题。我在折线上遇到了问题,你改变了物体的位置。当我移动到区域1时。区域1内的多段线修剪长度正确。但是当我移动到区域2内的区域2多段线时,修剪的长度不正确。保留一小段洋红色多段线。
 
是UCS值​​比格是怎么回事?
 
但是,当您进行查询时。Acad在区域2中发现2个交点,不正确。Acad在区域1中找到一个交点,正确。
 
我不理解这个问题。谢谢你的帮助。
 
(所有Z值​​归零。所有对象都是多段线)
修剪图纸
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:29:26 | 显示全部楼层
您的问题与您所在的图形区域无关,而是与使用Trim命令的方法有关。
 
如果通过选择刀刃进行修剪,则会在区域1中得到结果。
 
如果通过让AutoCAD选择切割边缘进行修剪,则会在区域2中得到结果。多段线不是曲线拟合的,由一系列直线组成。发生的情况是,AutoCAD选择了真实交点右侧的多段线线段,并使用该线(图片中的黑色虚线)的假想延伸进行修剪。这就是你的不同之处。
232308kop7bmdbi8r77zmv.jpg
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:33:55 | 显示全部楼层
很抱歉,我不明白完整的解决方案。我的英语有点差。有很多折线图。我都做了。我该怎么办。我需要的多段线长度。我应该在哪里设置?你能一步一步地告诉我吗。我很抱歉。非常感谢。
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:38:43 | 显示全部楼层
使用Trim命令时,请继续查看命令行,该命令行告诉您要做什么。
 
首先,它告诉你“选择切割边缘”,然后“选择对象”。如果此时按return键,则允许AutoCAD选择剪切边。
所以你必须选择你的切割边缘,在这里是黄色的多段线。选择完切割边后,按Return键让AutoCAD知道您已经选择完切割边。
然后命令行显示“选择要修剪的对象……”然后你选择你的洋红线。
 
如果您仍然不理解,那么您应该查看帮助文件,这些文件应该是您自己的语言。
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:41:21 | 显示全部楼层
Hi eldon谢谢你的帮助。
 
但有一个问题。我到达了十字路口。用VBA指向读取。非常重要。但它显示了一个不正确的结果。我不确定这是不是VBA论坛的地方?VBA不工作为什么?你有认识的吗?提前谢谢。同样的两点。但结果与2不同。非常卡住。我需要找到。
 
/////////
  1. Sub IPNT()
  2. Dim objSS As AcadSelectionSet
  3. Dim objSS2 As AcadSelectionSet
  4. Dim Poly1 As AcadLWPolyline
  5. Dim Poly2 As AcadLWPolyline
  6. On Error Resume Next
  7. ThisDrawing.SelectionSets("TempSSet1").Delete
  8. On Error Resume Next
  9. Set objSS = ThisDrawing.SelectionSets.Add("TempSSet1")
  10. If Err Then Exit Sub
  11. MsgBox "Select Poly 1"
  12. objSS.SelectOnScreen
  13. For Each Poly1 In objSS
  14. Exit For: Next
  15. On Error Resume Next
  16. ThisDrawing.SelectionSets("TempSSet2").Delete
  17. On Error Resume Next
  18. Set objSS2 = ThisDrawing.SelectionSets.Add("TempSSet2")
  19. If Err Then Exit Sub
  20. MsgBox "Select Poly 2"
  21. objSS2.SelectOnScreen
  22. For Each Poly2 In objSS2
  23. Exit For: Next
  24. pts = Poly1.IntersectWith(Poly2, acExtendNone)
  25. MsgBox "X= " & pts(0) & vbCr & "Y= " & pts(1), vbInformation, "Intersection Point"
  26. End Sub

/////////
 
在同一代码区域1中给出不同的结果。区域2也给出了不同的结果。
 
谢谢你的帮助。
trim2.dwg
232309c24wyw8ush64tzgu.jpg
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:43:51 | 显示全部楼层
我到达了两条多段线的交点。该过程将重复多次。然而,根据VBA代码尝试不同的UCS坐标。区域1中的代码工作正常。在错误的区域2工作。
 
同样,还有修剪问题。你可以看到下面的链接。
 
http://www.cadtutor.net/forum/showthread.php?76891-修剪多段线长度错误
 
 
/////////
  1. Sub IPNT()
  2. Dim objSS As AcadSelectionSet
  3. Dim objSS2 As AcadSelectionSet
  4. Dim Poly1 As AcadLWPolyline
  5. Dim Poly2 As AcadLWPolyline
  6. On Error Resume Next
  7. ThisDrawing.SelectionSets("TempSSet1").Delete
  8. On Error Resume Next
  9. Set objSS = ThisDrawing.SelectionSets.Add("TempSSet1")
  10. If Err Then Exit Sub
  11. MsgBox "Select Poly 1"
  12. objSS.SelectOnScreen
  13. For Each Poly1 In objSS
  14. Exit For: Next
  15. On Error Resume Next
  16. ThisDrawing.SelectionSets("TempSSet2").Delete
  17. On Error Resume Next
  18. Set objSS2 = ThisDrawing.SelectionSets.Add("TempSSet2")
  19. If Err Then Exit Sub
  20. MsgBox "Select Poly 2"
  21. objSS2.SelectOnScreen
  22. For Each Poly2 In objSS2
  23. Exit For: Next
  24. pts = Poly1.IntersectWith(Poly2, acExtendNone)
  25. MsgBox "X= " & pts(0) & vbCr & "Y= " & pts(1), vbInformation, "Intersection Point"
  26. End Sub

/////////
 
 
谢谢你的帮助。
232311t1pkp5ke4fvmynyj.jpg
trim2.dwg
回复

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 22:48:51 | 显示全部楼层
我看不出选择集保存单个实体的意义,你已经有了两个多段线的变量,然后将它们与GETENTITY一起使用。你可以用相应的代码、两个循环和第一个消息框省略选择集。您也没有声明变量“pts”。
 
请尝试以下代码:
 
  1. Sub IPNT()
  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.    
  8.    ThisDrawing.Utility.GetEntity objEnt, varPick, "Select Poly 1: "
  9.    If objEnt.ObjectNAme = "AcDbPolyline" then
  10.        Set Poly1 = objEnt
  11.    End If
  12.    
  13.    ThisDrawing.Utility.GetEntity objEnt, varPick, "Select Poly 1: "
  14.    If objEnt.ObjectNAme = "AcDbPolyline" then
  15.        Set Poly1 = objEnt
  16.    End If
  17.    
  18.    pts = Poly1.IntersectWith(Poly2, acExtendNone)
  19.    
  20.    MsgBox "X= " & pts(0) & vbCr & "Y= " & pts(1), vbInformation, "Intersection Point"
  21.    
  22. End Sub
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:53:57 | 显示全部楼层
问题不是你键入了Tyke。交叉口的工作不正常。感谢您的关注。
回复

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 22:57:16 | 显示全部楼层
你能更具体地描述你的问题吗,我不明白它是什么。你说的到底是什么意思
? 什么工作不正常? 
描述你采取的步骤以及哪些结果是错误的。在绘图中检查两条多段线的物理交点坐标,这些坐标是否与您的程序提供的一致?
回复

使用道具 举报

2

主题

9

帖子

7

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 23:02:22 | 显示全部楼层
嗨,小家伙。我用了一种更具描述性的方式。正在等待帮助。提前谢谢。
 
当我移动到区域2时,对象会出错。欺骗我。(UCS)坐标使问题成为?
 
  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.    'This Project can be dedected, 1,2 or 3 intersection point of Plines.
  16.    'This program will detect the number of point of intersection.
  17.    pts = Poly1.IntersectWith(Poly2, acExtendNone)
  18.    If UBound(pts) = 2 Then
  19.    MsgBox "1 intersection point dedected." & vbCr & _
  20.    "X= " & pts(0) & ", " & "Y= " & pts(1) & vbCr, _
  21.    vbInformation, "Intersection Point Dedector"
  22.    ElseIf UBound(pts) = 5 Then
  23.    MsgBox "2 intersection point dedected." & vbCr & _
  24.    "X= " & pts(0) & ", " & "Y= " & pts(1) & vbCr & _
  25.    "X= " & pts(3) & ", " & "Y= " & pts(4), _
  26.    vbInformation, "Intersection Point Dedector"
  27.    ElseIf UBound(pts) = 8 Then
  28.    MsgBox "3 intersection point dedected." & vbCr & _
  29.    "X= " & pts(0) & ", " & "Y= " & pts(1) & vbCr & _
  30.    "X= " & pts(3) & ", " & "Y= " & pts(4) & vbCr & _
  31.    "X= " & pts(6) & ", " & "Y= " & pts(7), _
  32.    vbInformation, "Intersection Point Dedector"
  33.    Else
  34.    MsgBox "intersection point number > 3" & vbCr & "Program Limits Exceed"
  35.    End If
  36. End Sub

trim3.dwg
232313dtygxz3331ck1cxo.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 11:25 , Processed in 1.452594 second(s), 74 queries .

© 2020-2025 乐筑天下

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