Тема: Как программно нарисовать луч (ray), и потом уже в тексте программы к нему обратиться как к объекту без его повторного выбора GetEntity

Как программно нарисовать луч (ray), и потом уже в тексте программы  к нему обратиться как к объекту без его повторного выбора GetEntity

Re: Как программно нарисовать луч (ray), и потом уже в тексте программы к нему обратиться как к объекту без его повторного выбора GetEntity

Sub Example_AddRay()
    ' This example creates a ray in model space.
    
    Dim rayObj As AcadRay
    Dim basePoint(0 To 2) As Double
    Dim SecondPoint(0 To 2) As Double
    
    ' Define the ray
    basePoint(0) = 3#: basePoint(1) = 3#: basePoint(2) = 0#
    SecondPoint(0) = 4#: SecondPoint(1) = 4#: SecondPoint(2) = 0#
    
    ' Creates a Ray object in model space
    Set rayObj = ThisDrawing.ModelSpace.AddRay(basePoint, SecondPoint)
    ZoomAll
    
End Sub

Обратится надо к rayObj.

Re: Как программно нарисовать луч (ray), и потом уже в тексте программы к нему обратиться как к объекту без его повторного выбора GetEntity

Я наверное не совсем корректно задал вопрос. Имелось ввиду нарисовать не по заданным точкам, а интерактивно (то есть мышкой), но чтобы сразу на экране его было видно

Re: Как программно нарисовать луч (ray), и потом уже в тексте программы к нему обратиться как к объекту без его повторного выбора GetEntity

Можно использовать метод Getpoint (вариант с базовой точкой, на экране будет "резиновая нить")
В примере замени построение линии на луч.

Sub Example_GetPoint()
    ' This example returns a point entered by the user.
    
    Dim returnPnt As Variant
    
    ' Return a point using a prompt
    returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
    MsgBox "The WCS of the point is: " & returnPnt(0) & ", " & returnPnt(1) & ", " & returnPnt(2) & vbCrLf & _
            "(Enter the next value without prompting.)", , "GetPoint Example"
    
    ' Return a point, no prompt
    returnPnt = ThisDrawing.Utility.GetPoint
    MsgBox "The WCS of the point is: " & returnPnt(0) & ", " & returnPnt(1) & ", " & returnPnt(2), , "GetPoint Example"
    
    ' Return a point using a base point and a prompt
    Dim basePnt(0 To 2) As Double
    basePnt(0) = 2#: basePnt(1) = 2#: basePnt(2) = 0#
    returnPnt = ThisDrawing.Utility.GetPoint(basePnt, "Enter a point: ")
    MsgBox "The WCS of the point is: " & returnPnt(0) & ", " & returnPnt(1) & ", " & returnPnt(2)
    
    ' Create a line from the base point and the last point entered
    Dim lineObj As AcadLine
    Set lineObj = ThisDrawing.ModelSpace.AddLine(basePnt, returnPnt)
    ZoomAll
    
End Sub