乐筑天下

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

[编程交流] 交叉线列表

[复制链接]

2

主题

7

帖子

5

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 21:49:23 | 显示全部楼层 |阅读模式
你好
 
我知道ı能够通过这个命令“object1.IntersectWith(IntersectObjects,ExtendOption)”找到两条线相交的点
 
 
将主线变暗为AcadLine
将line1、line2、line3标注为AcadLine
 
我有主线信息。ı想要找到与主线相交的其他线。
 
例如,line1、line2和line3与主线相交,ı想要找到这些线。
 
 
224927vaqagsqfzzpteigg.jpg
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 21:56:01 | 显示全部楼层
这里有一个简单的例子:
  1. (vl-load-com)
  2. (defun c:foo (/ e)
  3. (and (setq e (car (entsel "\Pick your line: ")))
  4.       (= "LINE" (cdr (assoc 0 (entget e))))
  5.       (sssetfirst
  6. nil
  7. (ssget "_F" (list (vlax-curve-getstartpoint e) (vlax-curve-getendpoint e)) '((0 . "line")))
  8.       )
  9. )
  10. (princ)
  11. )
回复

使用道具 举报

2

主题

261

帖子

20

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 21:59:18 | 显示全部楼层
样品
  1. Public Sub TEST_SelectByIntersection()
  2. Dim objSS As AcadSelectionSet
  3. Dim objToCheck As AcadEntity
  4. Dim varPnt As Variant
  5. Dim objThatIntersects As AcadEntity
  6. ThisDrawing.Utility.GetEntity objToCheck, varPnt, "Select an object: "
  7. Set objSS = SelectByIntersection(objToCheck)
  8. For Each objThatIntersects In objSS
  9.    objThatIntersects.Highlight True
  10. Next
  11. If MsgBox("Object " & CStr(objSS.Count) & _
  12.            " Object." & vbCrLf & "Delete?", _
  13.            vbQuestion + vbYesNo, "TEST_SelectByIntersection") = vbYes Then
  14.    For Each objThatIntersects In objSS
  15.      objThatIntersects.Delete
  16.    Next
  17. Else
  18.      For Each objThatIntersects In objSS
  19.        objThatIntersects.Highlight False
  20.      Next
  21. End If
  22. End Sub
  23. Public Function SelectByIntersection(objEnt As AcadEntity) As AcadSelectionSet
  24. On Error Resume Next
  25. Dim objGen As AcadEntity
  26. Dim objSelSet As AcadSelectionSet
  27. Dim objSelCol As AcadSelectionSets
  28. Dim objArray() As Object
  29. Dim strName As String
  30. Dim varMin As Variant
  31. Dim varMax As Variant
  32. Dim varIntPnt As Variant
  33. Dim intcnt As Integer
  34. objEnt.GetBoundingBox varMin, varMax
  35. strName = "vbdintersect"
  36. Set objSelCol = ThisDrawing.SelectionSets
  37.    For Each objSelSet In objSelCol
  38.      If objSelSet.Name = strName Then
  39.        ThisDrawing.SelectionSets.Item(strName).Delete
  40.        Exit For
  41.      End If
  42.    Next
  43. Set objSelSet = ThisDrawing.SelectionSets.Add(strName)
  44. objSelSet.Select acSelectionSetCrossing, varMin, varMax
  45. For Each objGen In objSelSet
  46.    varIntPnt = objEnt.IntersectWith(objGen, acExtendNone)
  47.    
  48.    MsgBox "1 intersection point dedected." & vbCr & _
  49.    "X= " & varIntPnt(0) & ", " & "Y= " & varIntPnt(1) & vbCr, _
  50.    vbInformation, "Intersection Point Dedector"
  51.    
  52.    
  53.    If UBound(varIntPnt) = -1 Then
  54.      ReDim Preserve objArray(intcnt)
  55.      Set objArray(intcnt) = objGen
  56.      intcnt = intcnt + 1
  57.    End If
  58.    varIntPnt = Empty
  59. Next
  60. If IsEmpty(objArray) Then
  61.    Set SelectByIntersection = objSelSet
  62. Else
  63.    objSelSet.RemoveItems objArray
  64.    Set SelectByIntersection = objSelSet
  65. End If
  66. Exit_Here:
  67. Exit Function
  68. MsgBox Err.Description
  69. Resume Exit_Here
  70. End Function
回复

使用道具 举报

2

主题

7

帖子

5

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:04:47 | 显示全部楼层
这段代码运行得很好。但我不懂autolisp。如何在vb中编写此代码。net/vba或C#。网
回复

使用道具 举报

2

主题

7

帖子

5

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:07:59 | 显示全部楼层
 
这段代码运行得很好。但我不懂autolisp。如何在vb中编写此代码。net/vba或C#。网
回复

使用道具 举报

2

主题

261

帖子

20

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 22:13:14 | 显示全部楼层
抬起你的眼睛
回复

使用道具 举报

2

主题

7

帖子

5

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:15:28 | 显示全部楼层
 
我为什么说错了?
回复

使用道具 举报

2

主题

261

帖子

20

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 22:23:35 | 显示全部楼层
我为你写了一个VBA的例子
但是你没有看到我的例子吗?
回复

使用道具 举报

2

主题

7

帖子

5

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 22:26:29 | 显示全部楼层
 
我看到了你的例子。但是当这些线有不同的角度时,它们并不能找到所有的线。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-6 22:30:18 | 显示全部楼层
很抱歉我不懂那些语言。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-5-26 01:08 , Processed in 2.005897 second(s), 76 queries .

© 2020-2025 乐筑天下

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