Тема: Помогите разобраться с кодом

Имеется вот такой код, координаты точек задаются указанием мыши, а как задать в этом коде уже известные координаты точки? Спасибо.
Public Sub TestAddLine()
End Sub
Dim varStart As Variant
Dim varEnd As Variant
Dim objEnt As AcadLine
On Error Resume Next
With ThisDrawing.Utility
varStart = .GetPoint(, vbCr & "Pick the start point: ")
varEnd = .GetPoint(varStart, vbCr & "Pick the end point: ")
End With
If ThisDrawing.ActiveSpace = acModelSpace Then
Set objEnt = ThisDrawing.ModelSpace.AddLine(varStart, varEnd)
Else
Set objEnt = ThisDrawing.PaperSpace.AddLine(varStart, varEnd)
End If
objEnt.Update
End Sub

Re: Помогите разобраться с кодом

это?

Sub Example_AddLine()
    ' This example adds a line in model space
    Dim lineObj As AcadLine
    Dim startPoint(0 To 2) As Double
    Dim endPoint(0 To 2) As Double
    ' Define the start and end points for the line
    startPoint(0) = 1#: startPoint(1) = 1#: startPoint(2) = 0#
    endPoint(0) = 5#: endPoint(1) = 5#: endPoint(2) = 0#
    ' Create the line in model space
    Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
    ZoomAll
End Sub

...из хелпа примерчик...

Re: Помогите разобраться с кодом

Оно самое, только в хелпе я его не нашел, а если нужно провести несколько линий, как быть тогда, дабавлением новых точек, это не помогло

startPoint(0) = 0#: startPoint(1) = 0#: startPoint(2) = 0#
    endPoint(0) = 5#: endPoint(1) = 5#: endPoint(2) = 0#
startPoint(3) = 5#: startPoint(4) = 5#: startPoint(5) = 0#
    endPoint(3) = 10#: endPoint(4) = 10#: endPoint(5) = 0#

Re: Помогите разобраться с кодом

> Саша
Отрезок имеет только две точки (начало и конец). Для проведения двух линий нужно добавить два отрезка или воспользоваться полилинией.

Re: Помогите разобраться с кодом

Это значит  будет выглядить так ?

startPoint(0) = 0#: startPoint(1) = 0#: startPoint(2) = 0#
    endPoint(0) = 5#: endPoint(1) = 5#: endPoint(2) = 0#
    Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
startPoint(0) = 5#: startPoint(1) = 5#: startPoint(2) = 0#
    endPoint(0) = 10#: endPoint(1) = 10#: endPoint(2) = 0#
    Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)

Re: Помогите разобраться с кодом

> Саша
Именно.

Re: Помогите разобраться с кодом

> Саша
Желательно завести еще одну переменную типа AcadLine, а не пользоваться той же. Например,

Dim LineObj2 As AcadLine

Re: Помогите разобраться с кодом

Н.Н.Полещук пишет:

Желательно завести еще одну переменную типа AcadLine, а не пользоваться той же.

А почему, собственно?

Re: Помогите разобраться с кодом

> Q
Иначе теряется ссылка на первый объект (если она, конечно, нужна дальше в программе).

Re: Помогите разобраться с кодом

Спасибо. С этим разобрался,подправил немного код
, теперь примитивы добавляются в блок, и почему то постоянно накапливаются, если запускать несколько раз код или меняю его, почему это происходить, и как от этого избавиться?

Public Sub TestAddLine()
Dim blockObj As AcadBlock
Dim varStart As Variant
Dim varEnd As Variant
Dim objEnt As AcadLine
Dim insertionPoint(0 To 2) As Double
Dim blockRefObj As AcadBlockReference
    insertionPoint(0) = 0
    insertionPoint(1) = 0
    insertionPoint(2) = 0
    Set blockObj = ThisDrawing.Blocks.Add _
                     (insertionPoint, "Линия")
varStart = ThisDrawing.Utility.GetPoint(, vbCr & "Pick the start point: ")
varEnd = ThisDrawing.Utility.GetPoint(varStart, vbCr & "Pick the end point: ")
Set objEnt = blockObj.AddLine(varStart, varEnd)
objEnt.Update
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
               (insertionPoint, "Линия", 1#, 1#, 1#, 0)
blockRefObj.Update
End Sub

Re: Помогите разобраться с кодом

> Саша
Так ты же все время в один и тот же блок добавляешь линию:

Set objEnt = blockObj.AddLine(varStart, varEnd)

Тут возможны варианты:
1) Если блок с таким именем уже есть - создавать блок с другим именем.
2) Если блок с таким именем уже есть - очищать его (удалять все примитивы входящие в него) а затем уже добавлять линию.
3) Если блок с таким именем уже есть - сообщать об этом и вообще ничего не делать.
4) ...

Re: Помогите разобраться с кодом

Не подскажите как очистить блок?

Re: Помогите разобраться с кодом

Метод Delete для кажого из Item блока.

Re: Помогите разобраться с кодом

> Александр Ривилис
А как это будет выглядеть?