Тема: GetPoint

Подскажите пожалуйста как этот код реализовать через GetPoint ???
    Private Sub CommandButton2_Click()
Unload Me
If CheckBox1.Value = True Then
    Dim swidth As String
    Dim old_ortho, old_snap, old_osnap As Integer
        swidth = "0.6"
    With ThisDrawing
    old_ortho = .GetVariable("ORTHOMODE")
    old_snap = .GetVariable("SNAPMODE")
    old_osnap = .GetVariable("OSMODE")
    .SetVariable "ORTHOMODE", 0
    .SetVariable "SNAPMODE", 0
    .SetVariable "OSMODE", 0
    .SendCommand ("_.-LAYER" & vbCr & "_M" & vbCr & _
        "Format" & vbCr & vbCr)
    .SendCommand ("_.PLINE" & vbCr & "0,55" & vbCr & _
        "_W" & vbCr & swidth & vbCr & swidth & vbCr & "-185,55" & _
        vbCr & "-185,0" & vbCr & vbCr)
    .SendCommand ("_.PLINE" & vbCr & "-185,30" & vbCr & _
         "-0,30" & vbCr & vbCr)
     .SendCommand ("_.PLINE" & vbCr & "-185,35" & vbCr & _
        "-120,35" & vbCr & vbCr)
     .SendCommand ("_.PLINE" & vbCr & "-175,30" & vbCr & _
         "-175,55" & vbCr & vbCr)
    .SendCommand ("_.PLINE" & vbCr & "-165,0" & vbCr & _
        "-165,55" & vbCr & vbCr)
     .SendCommand ("_.PLINE" & vbCr & "-155,30" & vbCr & _
        "-155,55" & vbCr & vbCr)
     .SendCommand ("_.PLINE" & vbCr & "-145,0" & vbCr & _
        "-145,55" & vbCr & vbCr)
    .SendCommand ("_.PLINE" & vbCr & "-130,0" & vbCr & _
        "-130,55" & vbCr & vbCr)
    .SendCommand ("_.PLINE" & vbCr & "-120,0" & vbCr & _
        "-120,55" & vbCr & vbCr)
    .SendCommand ("_.PLINE" & vbCr & "-50,0" & vbCr & _
        "-50,30" & vbCr & vbCr)
    .SendCommand ("_.PLINE" & vbCr & "-35,15" & vbCr & _
        "-35,30" & vbCr & vbCr)
     .SendCommand ("_.PLINE" & vbCr & "-20,15" & vbCr & _
     "-20,30" & vbCr & vbCr)
    .SendCommand ("_.PLINE" & vbCr & "-120,15" & vbCr & _
        "0,15" & vbCr & vbCr)
      .SendCommand ("_.PLINE" & vbCr & "0,45" & vbCr & _
        "-120,45" & vbCr & vbCr)
    .SendCommand ("_.PLINE" & vbCr & "0,25" & vbCr & _
        "-50,25" & vbCr & vbCr)
        .SendCommand ("_.LINE" & vbCr & "-185,5" & vbCr & _
        "-120,5" & vbCr & vbCr)
    .SendCommand ("_.LINE" & vbCr & "-185,10" & vbCr & _
        "-120,10" & vbCr & vbCr)
    .SendCommand ("_.LINE" & vbCr & "-185,15" & vbCr & _
     "-120,15" & vbCr & vbCr)
    .SendCommand ("_.LINE" & vbCr & "-185,20" & vbCr & _
        "-120,20" & vbCr & vbCr)
    .SendCommand ("_.LINE" & vbCr & "-185,25" & vbCr & _
        "-120,25" & vbCr & vbCr)
    .SendCommand ("_.LINE" & vbCr & "-185,40" & vbCr & _
        "-120,40" & vbCr & vbCr)
    .SendCommand ("_.LINE" & vbCr & "-185,50" & vbCr & _
        "-120,50" & vbCr & vbCr)
        .SendCommand ("_.LINE" & vbCr & "-185,45" & vbCr & _
        "-120,45" & vbCr & vbCr)
            .SendCommand ("_.PLINE" & vbCr & "0,0" & vbCr & _
         "-816,0" & vbCr & vbCr)
        .SendCommand ("_.PLINE" & vbCr & "-816,0" & vbCr & _
        "-816,584" & vbCr & vbCr)
        .SendCommand ("_.PLINE" & vbCr & "0,0" & vbCr & _
        "0,584" & vbCr & vbCr)
        .SendCommand ("_.PLINE" & vbCr & "0,584" & vbCr & _
        "-816,584" & vbCr & vbCr)
            .SendCommand ("_.LINE" & vbCr & "5,-5" & vbCr & _
        "-836,-5" & vbCr & vbCr)
        .SendCommand ("_.LINE" & vbCr & "-836,-5" & vbCr & _
         "-836,589" & vbCr & vbCr)
         .SendCommand ("_.LINE" & vbCr & "5,-5" & vbCr & _
         "5,589" & vbCr & vbCr)
         .SendCommand ("_.LINE" & vbCr & "5,589" & vbCr & _
         "-836,589" & vbCr & vbCr)
        .SendCommand ("_.PLINE" & vbCr & "-816,0" & vbCr & _
         "-828,0" & vbCr & vbCr)
        .SendCommand ("_.PLINE" & vbCr & "-816,26" & vbCr & _
        "-828,26" & vbCr & vbCr)
        .SendCommand ("_.PLINE" & vbCr & "-816,61" & vbCr & _
        "-828,61" & vbCr & vbCr)
        .SendCommand ("_.PLINE" & vbCr & "-816,90" & vbCr & _
        "-828,90" & vbCr & vbCr)
        .SendCommand ("_.PLINE" & vbCr & "-823.1753,0" & vbCr & _
        "-823.1753,90" & vbCr & vbCr)
        .SendCommand ("_.PLINE" & vbCr & "-828,0" & vbCr & _
        "-828,90" & vbCr & vbCr)
    .SetVariable "ORTHOMODE", old_ortho
     .SetVariable "SNAPMODE", old_snap
     .SetVariable "OSMODE", old_osnap
    End With
UserForm1.Show
End If
End Sub

Re: 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

Re: GetPoint

> Boxa
Все конечно хорошо в этом примере
' 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
Но в этом примере программа работает так: есть базовая точка, а вторую указывает пользователь.
А мне необходимо чтобы программа работала так:
я указываю точку, а вторая и последующие точки отталкиваются от указанной точки. Т.е. первая точка = GetPoint.....
вторая точка = GetPoint + 55
и т.д

Re: GetPoint

Люди, кто-нибудь знает как это сделать???
Чтобы остальные точки отталкивались от указанной???

Re: GetPoint

Boxa пишет:

Дарья, мне кажеться что взяв из справки по Автокаду примеры по добавлению линии и получению координат точки...

Справку читайте! Например

ThisDrawing.Utility.PolarPoint

Re: GetPoint

А Вы не могли бы для особо тугих объяснить что это такое :)
У меня справка на англицком и я ей пользоваться не умею
Ну простите уж что я ничего не смыслю в этом и строго не судите!!!

Re: GetPoint

????

Re: GetPoint

> bender
Я почитала справку. Попробовала сделать пример. Не получается. В чем загвоздка???
Sub Example_GetPoint()
    ' Этот пример возвращает точку, введенную пользователем.
    Dim returnPnt As Variant
    Dim polarPnt As Variant
    Dim angle As Double
    Dim distance As Double
    ' Возвратите точку, используя подсказку
    returnPnt = ThisDrawing.Utility.GetPoint(, "Введите точку: ")
    'Этот пример находит координату точки, которая является данным
    'расстоянием и углом от базовой точки.
    angle = 45   ' 45 degrees
    distance = 100000
    polarPnt = ThisDrawing.Utility.PolarPoint(returnPnt, angle, distance)
    ZoomAll
End Sub

Re: GetPoint

Объясните пожалуйста как отталкиваться от указанной точки.
Я рисую рамку формата А1 со штампом. Хочу чтобы можно было указать на экране точку и вырисовалась бы и рамка и штамп.

Re: GetPoint

ААААУУУУ,Люди!!!!
Есть кто живой????

Re: GetPoint

А что за фишка с углом ???
angle = 45 ' 45 degrees
Как к примеру выставить угол в 90 градусов??

Re: GetPoint

Что  никто не знает???
:)

Re: GetPoint

> Дарья
Вы на меня не обижайтесь, но Я вижу что Вам мало указанных направлений для поиска, Вы хотите сразу готовую программу...

> bender
Извините, а про PolarPoint это к чему?
У Дарьи указаны точные координаты (или приращения) по осям XY, зачем тут PolarPoint?

Re: GetPoint

> Boxa
Ну почему же готовую??? Я не говорю что мне нужна готовая программа, наоборот я хочу понять как это сделать. Хочу понять принцип. Пыталась логически методом научного тыка - не получается. В справке копалась. В готовых примерах копалась. Ну не получается и все.
Пробовала с Вашим примером из справки что-нибудь сотворить, но там базовые точки.
Подскажите принцип пожалуйста на примере 2 линий. Не надо все линии прописывать. Сама потыкаюсь и пропишу. Только принцип!!!

Re: GetPoint

Boxa пишет:

Извините, а про PolarPoint это к чему?

Ну если с массивами проблемы (то бишь с основами языка), то пусть хоть так попробует.

Re: GetPoint

Принцип.
1. Запрашиваем точку у пользователя
2. Говорим что эта точка  начало линии
3. К координатам введенной точки добавляем нужное нам приращение и говорим что это конечная точка линии
4. Рисуем линию по полученным координатам

Sub Example_GetPoint()
    Dim gPoint As Variant
    Dim sPoint(0 To 2) As Double
    Dim ePoint(0 To 2) As Double
    ' Получение координат точки
    gPoint = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
    'Стартовая точка линии
    sPoint(0) = gPoint(0)
    sPoint(1) = gPoint(1)
    sPoint(2) = gPoint(2)
    'Конечная точка линии
    ePoint(0) = gPoint(0) + 10
    ePoint(1) = gPoint(1) + 5
    ePoint(2) = gPoint(2)
  'Создание линии по двум точкам
    Dim lineObj As AcadLine
    Set lineObj = ThisDrawing.ModelSpace.AddLine(sPoint, ePoint)
    ZoomAll
End Sub

PS. Дарья, зачем Вам программировать? Может не стоит?

Re: GetPoint

> Boxa
Мне это интересно и я хочу научиться.
Спасибо за помощь.
Все оказывается не так сложно.

Re: GetPoint

А как параллельно линию нарисовать если начальная точка этой линии находится не в указываемой точке, а на расстоянии 5 мм???

Re: GetPoint

> bender
Ну попробовала и что???
Для общего развития конечно помогло, не спорю, а для решения проблемы - нет!!!
А еще я прикола не поняла с углом в этой PolarPoint ???

Re: GetPoint

> Дарья
Начальная и конечная точка в примере задаются относительно введеной

   'Стартовая точка линии
    sPoint(0) = gPoint(0)+2 'Координата по оси Х
    sPoint(1) = gPoint(1)+2 'Координата по оси Y
    sPoint(2) = gPoint(2) 'Координаты по оси Z
    'Конечная точка линии
    ePoint(0) = gPoint(0) + 10+2
    ePoint(1) = gPoint(1) + 5+2
    ePoint(2) = gPoint(2)

Добавив смещение в 2 единицы начальной и конечной точке получим параллельную линию.
PS/Мой Вам совет, не надо программировать, от этого одни проблемы на работе.

Re: GetPoint

> Boxa
Я понимаю вы все такие умные, а меня ламером считаете. Но вспомните вы же тоже когда-то давно с чего-то начинали :)
Для вас это все семечки - а для меня достаточно проблематично.
Иногда почему-то с таким принебрежением ко мне  я получаю ответы.
Я вообще училась на экономиста-строителя, работаю энергетиком (проектирую ЛЭП), изучаю самостоятельно программирование. Видите какой разброс тематический!!!!
Мало ли жизнь преподнесет сюрпризов!!
А без программирования работа превращается в сущий кошмар!!! Страшная рутина!!!

Re: GetPoint

> Дарья
Все вопросы которые Вы задаете решаются чтением хелпа и проявлением небольшой фантазии.
Вы не хотите читать хелп и проявить немного фантазии
Именно по этому ответы в таком не доброжелательном тоне.
Прежде чем задавать вопрос, постарайтесь хотябы подумать, поэксперементировать и поискать решение самостоятельно.

PS/ ИМХО Это чей то БОТ.