Страницы: Пред. 1 2 3 След.
RSS
Как убрать замыкание ломаной линии
 
Еще в #5
Цитата
БМВ написал:
Вы взяли Макрос, которые рассчитан на замкнутый контур. По этому и результат получается замкнуты, при этом искажается длина краевых отрезков.
Для расчета недостаточно просто ограничить количество отрезков, но и учесть , что точки конечных, ищутся не на пересечении линий полученных, то есть применяется иной алгоритм. За 4 дня обсуждения можно было заново переписать, даже используя функции из того что есть в предложенном макросе.
По вопросам из тем форума, личку не читаю.
 
Цитата
SkyGreen написал:
Нет, вопрос именно о замыкании.
SkyGreen, Вы считаете, что варианты Параллельная линия рисуется неточно и Параллельная линия рисуется с замыканием идентичны и между ними нет никакой разницы?
 
Цитата
Юрий М написал:
Параллельная линия рисуется с замыканием
Вот это загнул!!!  :D . Реинкарнация Лобачевского в кота.  :D  
Цитата
И быть тебе за это рыбой, мерзкой и скользкой! — Да, но обещали котом! — Недостоин!
По вопросам из тем форума, личку не читаю.
 
)) Это я к утверждению автора, что вопрос именно про замыкание, хотя, в названии темы ни слова про это самое замыкание.
P.S. Обещали котом - котом и стал )
 
Я в самом первом сообщении - написал про замыкание.
 
Цитата
Юрий М написал:
в названии темы ни слова про это самое замыкание.
Нужно или менять название, или заканчивать обсуждение: если линия рисуется точно по заданным координатам, то она рисуется точно.
 
Юрий М,что вы прицепились к названию ?

В сообщении же четко написан вопрос.
Вы модератор (сам я не могу поменять название темы). Замените как модератор название темы - на "Как убрать замыкание ломаной линии".
Изменено: SkyGreen - 29.09.2019 14:00:26
 
Цитата
SkyGreen написал:
что вы прицепились к названию ?
Я не прицепился, а сделал замечание: вопросы в теме должны соответствовать названию.
 
Помогите, форумчане.
 
Цитата
SkyGreen написал:
Помогите, форумчане.
В пункте #27 была представлена исходная полилиния и результат выполнения алгоритма со смещениями 20, 30, 50. Представьте пример правильного результата отображения незамкнутого результата с логическим объяснением почему должно быть нарисовано именно так. Без этого действия с вашей стороны что-то делать бессмысленно, об этом вам уже писал Игорь.
 
Цитата
Андрей VG написал: Представьте пример правильного результата отображения незамкнутого результата с логическим объяснением почему должно быть нарисовано именно так.
Понятно. Вот пример правильного результата:

Видите - тут контур не замкнутый, а у вас получается замкнутый. Вот незамкнутый-то контур и нужен.

Насчет логического объяснения - почему должно быть нарисовано именно так:
Хороший вопрос. Потому что я спрашивал именно об этом в первом сообщении. Потому что фигура получается не точной концентрической, а какой-то другой, с одним лишним отрезком.

Может этот последний отрезок - как-то отдельно макросом удалить ? (там ведь есть кажется такая функция "удалить узел" или "удалить сегмент")
 
Цитата
SkyGreen написал:
Вот пример правильного результата:
А вот я в этом сомневаюсь. Почему самая верхняя точка имеет такую координату?
Цитата
SkyGreen написал:
Может этот последний отрезок - как-то отдельно макросом удалить ?
это не приведет к изменению краевых точек.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Почему самая верхняя точка имеет такую координату?
Ну так - макрос так рисует.
Цитата
БМВ написал:
это не приведет к изменению краевых точек.
И бог с ними с точками - мне только этот последний отрезок надо макросом удалить.
 
SkyGreen, так результат на рисунке в # 41 правильный или нет?
 
Результат - правильный. Но это же не макрос нарисовал, а я сам - своими руками.
 
Я понял. Именно это и просил Андрей - показать нужный (правильный) результат. А то я засомневался, когда Вы про "лишний" отрезок начали говорить.
 
Цитата
SkyGreen написал:
Вот пример правильного результата:
Каков критерий отступа вы использовали? И почему не использовали представленные примеры отступов?
 
Цитата
Андрей VG написал:
Каков критерий отступа вы использовали?
Я ничего не использовал, а руками нарисовал - потому что меня спросили как должен выглядеть результат.
А макрос - предлагает сделать отступ =10.
 
Код
Sub PolylineСontour(ByVal shp As Shape, ByVal d As Double, ByVal leftHand As Boolean)
    Dim polyPoints() As GeomPoint, polyPoints2() As Single
    Dim ls() As GeomLine, l As GeomLine
    Dim i As Long, n As Long
    GetPolylinePoints shp, n, polyPoints
    ReDim ls(1 To n)
    For i = 1 To n
        GetLine polyPoints(i), polyPoints(i Mod n + 1), l
        GetParallelLine2 l, d, leftHand, ls(i)
    Next
    '     ReDim polyPoints2(1 To n + 1, 1 To 2) As Single
    ReDim polyPoints2(0 To n, 1 To 2) As Single
    For i = 1 To n
        GetIntersectionPoint ls(i), ls(i Mod n + 1), polyPoints(i)
        polyPoints2(i, 1) = polyPoints(i).x
        polyPoints2(i, 2) = polyPoints(i).y
    Next
    polyPoints2(0, 1) = polyPoints2(UBound(polyPoints2), 1)
    polyPoints2(0, 2) = polyPoints2(UBound(polyPoints2), 2)
    With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, polyPoints2(0, 1), polyPoints2(0, 2))
        For i = 0 To UBound(polyPoints2) - 1
            .AddNodes msoSegmentLine, msoEditingAuto, polyPoints2(i, 1), polyPoints2(i, 2)
        Next
        .ConvertToShape.Select
    End With
    '
    '    Set shp = shp.Parent.Shapes.AddPolyline(polyPoints2)
    '    Dim nds
    '    Set nds = shp.Nodes
    '    n = nds.Count
    '    shp.Fill.Visible = msoFalse
    '    shp.Line.ForeColor.RGB = 0
    '    shp.Line.DashStyle = msoLineDash
End Sub
 
Цитата
SkyGreen написал: Ну так - макрос так рисует... Но это же не макрос нарисовал, а я сам - своими руками.
Правильно ли я понимаю, что оба утверждения относятся к одной и той же точке (самая верхняя) на эскизе #41?

SkyGreen, Обратите внимание на то, что "левую границу" сплошной и пунктирной линии Вы обрезали отрезком, перпендикулярным к ним обеим; в то же время "правую границу" обеих линий (ту самую верхнюю точку!) Вы обрезали вертикальным отрезком. Так как правильно?
 
IKor, я не вымерял перпендикуляры.
Просто макрос нарисовал контур, а я выделил последний сегмент внутри ломаной линии - и выбрал опцию "Удалить сегмент".
 
RAN,  спасибо за ответ.
Вот смотрите - я использую ваш макрос на полилинии квадратной формы.
Полилиния - не замкнута.

Но последний сегмент - все равно удаляется
 
Цитата
SkyGreen написал: И кроме того - Начало и конец рисуемой линии - более удлинены, по сравнению с оригиналом. Отрезки должны быть - одинаковыми по длине...
Цитата
я не вымерял перпендикуляры.
Правильно ли я понимаю, что первое процитированное утверждение более неактуально?
 
RAN, как сделать так, чтобы этот незамкнутый прямоугольник не терял последний сегмент ?
 
Что же делать ?
Помогите.
 
Создать тему в платной ветке.
 
SkyGreen, Предлжение vikttur, не такое и нерациональное. Править чужой код, который вроде и написан нормально, но  заточен под замкнутый контур - мало у кого есть желание. Писать свой - ну так это не 2 минуты и если желающих за все это время нет, то их нужно купить.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
то их нужно купить.
Продадутся ли, если постановка задачи отсутствует по существу? Нацарапал, уж коль взялся. As Is
Изменено: Андрей VG - 30.09.2019 14:46:50
 
Андрей VG,  спасибо большое.
Пытаюсь запустить этот макрос.

Выделяю фигуру, затем запускаю макрос - и он вместо контура - рисует две очень длинные параллельные линии по всему листу.
 
Off
Цитата
SkyGreen написал:
рисует две очень длинные параллельные линии по всему листу.
и они никогда не пересекутся  :D
По вопросам из тем форума, личку не читаю.
Страницы: Пред. 1 2 3 След.
Наверх