1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

for Arkady

Тема в разделе "CorelDraw", создана пользователем -, 28 янв 2004.

Модераторы: Артер
  1. Guest

    так понял, что ты в этом больше разбираешься--как перенести вершину кривой по направляющей на заданную величину
     
  2. Guest

    направляющая — это тангента к кривой в заданной точке?
     
  3. Guest

    извини, не понял термина, возможно,.э.. попробую популярно--из этой точки выходит луч и по этому лучу нужно сделать смещение,
    указать сразу угол этого луча не могу, на прикладном уровня могу создать guidlines под нужным мне углом и посмотреть потом какой получился угол, но мне честно говоря он и не нужен может это нужно для процедуры???
     
  4. Guest

    >> из этой точки выходит луч и по этому лучу нужно сделать смещение…
    луч может выходить в любом направлении. Тангента (касательная в точке, см. илл. http://aew.com.ru:8100/editorial/e027/ed_elastic.phtml ) — только в двух.
    Направления тангент можно получить [в начальной и конечной точках сегмента] у соотвествующего сегмента (объект segment) — свойства EndingControlPointAngle и StartingControlPointAngle.
    Осталось только, пользуясь синусами и косинусами, рассчитать необходимое смещение — св-ва PositionX и PositionY соотвествующих вершин (объект Node; применительно к сегменту — его св-ва StartNode и EndNode).

    А вот теперь новость похуже — в CorelVBA нет возможности определить выбранный (selected) узел или сегмент. Т.е. ср-вами VBA задача может быть решена несколько, кхе-кхе… ректальным путем, т.е. через ж…пу.
     
  5. Guest

    Вот примерчик, для первого узла кривой:

    Sub main()
    Dim s As Shape
    Set s = ActiveShape
    If s.Type = cdrCurveShape Then
    MsgBox (Str$(s.Curve.Segments.Item(1).StartingControlPointAngle))
    End If
    End Sub

    В ответе будет угол тангенты этого узла.

    Нижеследующий фрагмент смещает тот же узел на 46 мм в направлении тангенты этого узла (аргумент для тригнометрич. функций — в радианах!):

    Sub main()
    Dim s As Shape
    Dim a, dx, dy, dL, x, y As Double
    ActiveDocument.Unit = cdrMillimeter
    Set s = ActiveShape
    If s.Type = cdrCurveShape Then
    a = s.Curve.Segments.Item(1).StartingControlPointAngle * 1.74532925199433E-02
    End If

    dL = 46
    dx = dL * Cos(a)
    dy = dL * Sin(a)

    s.Curve.Segments.Item(1).StartNode.PositionX = dx + s.Curve.Segments.Item(1).StartNode.PositionX
    s.Curve.Segments.Item(1).StartNode.PositionY = dy + s.Curve.Segments.Item(1).StartNode.PositionY


    End Sub
     
  6. Guest

    а как же действует макос, который позволяет смещать точку в нужном аправлении по иксу и игреку? http://www.clifton89.freeserve.co.uk/progs/NodeShuffler2.zip
     
  7. Guest

    Не знаю, как MacOS, а тот макрос действует через .Curve.Selection , который [метод] возвращает nodeRange ВЫДЕЛЕННЫХ ШЕЙПЕРОМ вершин.
     
  8. Guest

    Задача.VBA.Даны два однотипных вектора.Получить их скалярное произведение. ПОЖАЛУЙСТА...РЕШИТЬ НАДО...БУДУ ЧЕНЬ БЛАГОДАРНА.......
     
Модераторы: Артер

Поделиться этой страницей