Построение треугольника.

  • Автор темы Автор темы yuracom
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

yuracom

Участник
Топикстартер
Сообщения
10
Реакции
0
Раз уж я попал в рай, то спрошу о насущном. Построение треугольника по трём известным сторонам сразу. Возможно ли это, или только при помощи радиусов?
 
Если без использования макросов, то, на первый взгляд, быстрее всего так:
upload_2015-5-6_16-12-21.png
 

Не по теме:
один радиус таки пострадал, Миш)))
 
Ты можешь чтото более простое предложить? 'hmmm'
 
Тьфу, блин, нет, так не годится!
Skew не сохраняет вторую сторону, а только высоту *(
Короче говоря, вариант такой - посчитать по формуле угол между сторонами, нарисовать одну, сдублировать, отмасштабировать, повернуть на этот угол, скомбинировать и замкнуть. Или нарисовать готовый треугольник, отмасштабировать на вычисленную высоту и сдвинуть на вычисленный сдвиг - быстрее, но считать дольше.
 
Тьфу, блин, нет, так не годится!
Skew не сохраняет вторую сторону, а только высоту *(
Короче говоря, вариант такой - посчитать по формуле угол между сторонами, нарисовать одну, сдублировать, отмасштабировать, повернуть на этот угол, скомбинировать и замкнуть. Или нарисовать готовый треугольник, отмасштабировать на вычисленную высоту и сдвинуть на вычисленный сдвиг - быстрее, но считать дольше.
Смысл не найти другой вариант построения, а узнать, есть ли приблуда позволяющая просто указать три размера сторон и получить готовый треугольник. Нужно много треугольников строить, и только это может спасти гиганта мысли))
 
Код:
Sub Macro1()
    ActiveDocument.BeginCommandGroup "Triangle"
    ActiveDocument.Unit = cdrMillimeter
    Dim s1 As Shape
    a = 10
    b = 20
    c = 25
    p = (a + b + c) / 2
    h = Sqr(p * (p - a) * (p - b) * (p - c)) / c * 2
    x = Sqr(a * a - h * h)
  
    Set s1 = ActiveLayer.CreateLineSegment(0, 0, x, h)
    Dim crv As Curve
    Set crv = ActiveDocument.CreateCurve()
    With crv.CreateSubPath(0, 0)
        .AppendLineSegment x, h
        .AppendLineSegment c, 0
        .AppendLineSegment 0, 0
        .Closed = True
    End With
    s1.Curve.CopyAssign crv
    s1.Fill.ApplyNoFill
    s1.Outline.SetProperties 0.003, OutlineStyles(0), CreateCMYKColor(0, 0, 0, 100), ArrowHeads(0), ArrowHeads(0), False, False, cdrOutlineButtLineCaps, cdrOutlineMiterLineJoin, 0#, 100, , , 5#
    ActiveDocument.EndCommandGroup
End Sub
 
в смысле я чайник(( мне бы пошагово
 
Можно попробовать сделать через докер Координаты объекта.
 
Статус
Закрыто для дальнейших ответов.