Bryco 发表于 2010-1-15 14:54:51

选择外圆DWGeditor帮助

我有一个矩形阵列的点,我想修改 我想擦除位于圆形区域之外的点 如果要手动执行,我只需使用erase命令并选择外圈选项,但无法理解如何在VBA中执行此操作 我假设需要使用类型为vicSelectionSetOutsideCircle的选择方法创建一个要删除的点的选择集,但我没有'我不理解如何调用该类型 有人能给我解释一下它的语法吗?

伤心俱乐部 发表于 2010-1-16 20:36:01

 如果该点距离圆心的距离大于半径,则将其删除,
,欢迎使用

河南人 发表于 2010-1-17 07:12:40


正如布莱科所说:
Option Explicit
Sub DelOutSide()
    Dim oSSet As AcadSelectionSet
    Dim delSet As AcadSelectionSet
    Dim oEnt As AcadEntity
    Dim oCircle As AcadCircle
    Dim oPoint As AcadPoint
    Dim cp As Variant
    Dim varp As Variant
    Dim rad As Double
    Dim ftype(0) As Integer
    Dim fdata(0) As Variant
    Dim dxfCode, dxfValue
    Dim name As String
    Dim count As Integer
    On Error GoTo Err_Control
    With ThisDrawing.SelectionSets
      While .count > 0
            .Item(0).Delete
      Wend
      Set oSSet = .Add("$Points$")
      Set delSet = .Add("$Delete$")
    End With
    ftype(0) = 0: fdata(0) = "POINT"
    dxfCode = ftype: dxfValue = fdata
    ThisDrawing.Utility.GetEntity oEnt, varp, vbLf & "Select circle:"
    If Not TypeOf oEnt Is AcadCircle Then
      Exit Sub
    End If
    Set oCircle = oEnt
    cp = oCircle.Center
    rad = oCircle.Radius
    oSSet.SelectOnScreen dxfCode, dxfValue
    For Each oEnt In oSSet
      Set oPoint = oEnt
      varp = oPoint.Coordinates
      If Distance(varp, cp) > rad Then
            Dim varobj(0) As AcadEntity
            Set varobj(0) = oEnt
            delSet.AddItems (varobj)
      End If
    Next
    MsgBox delSet.count
    delSet.Erase
Exit_Here:
    Exit Sub
Err_Control:
    If Err.Number0 Then
      MsgBox Err.Description
      Err.Clear
    End If
    Resume Exit_Here
End Sub
'' by Frank Oquendo
Public Function Distance(fPoint As Variant, sPoint As Variant) As Double
    Dim x1 As Double, x2 As Double
    Dim y1 As Double, y2 As Double
    Dim z1 As Double, z2 As Double
    Dim cDist As Double
    x1 = fPoint(0): y1 = fPoint(1): z1 = fPoint(2)
    x2 = sPoint(0): y2 = sPoint(1): z2 = sPoint(2)
    cDist = Sqr(((x2 - x1) ^ 2) + ((y2 - y1) ^ 2) + ((z2 - z1) ^ 2))
    Distance = cDist
End Function

~&039;J#039~

笔友 发表于 2010-1-18 10:16:25

谢谢你的帮助 

魔兽ㄇ 发表于 2010-1-18 17:39:52

很高兴帮助大家,干杯;J#039~
页: [1]
查看完整版本: 选择外圆DWGeditor帮助