Смысл не найти другой вариант построения, а узнать, есть ли приблуда позволяющая просто указать три размера сторон и получить готовый треугольник. Нужно много треугольников строить, и только это может спасти гиганта мысли))Тьфу, блин, нет, так не годится!
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