[CDR X5-X8] Отрисовка элемента в фигуре

  • Автор темы Автор темы Vadimsapr
  • Дата начала Дата начала
Комментарий модератора: @Vadimsapr, загуглите слово "скриншот", используйте для кодов теги [соdе]...[/соdе]
 
Код:
Sub Macro1()
    Dim p1 As Shape
    Dim p2 As Shape
    Dim N As Integer
    ActiveDocument.Unit = cdrMillimeter
    N = ActiveSelection.Shapes.Count
 
    Dim arrA() As Long
    ReDim arrA(4, N)
  
    For k = 1 To N
        arrA(1, k) = ActiveSelection.Shapes(k).LeftX
        arrA(2, k) = ActiveSelection.Shapes(k).TopY
        arrA(3, k) = ActiveSelection.Shapes(k).RightX
        arrA(4, k) = ActiveSelection.Shapes(k).BottomY
    Next k
  
    For i = 1 To N
        X1 = arrA(1, i) + 3
        Y1 = arrA(2, i)
        X2 = arrA(1, i) + 3
        Y2 = arrA(4, i)
      
        Set p1 = ActiveLayer.CreateLineSegment(X1, Y1, X2, Y2)
      
        X1 = arrA(3, i) - 3
        Y1 = arrA(2, i)
        X2 = arrA(3, i) - 3
        Y2 = arrA(4, i)
      
        Set p2 = ActiveLayer.CreateLineSegment(X1, Y1, X2, Y2)
    Next i
End Sub


Да, далеко я был ещё. Спасибо всем огромное. Дальше буду сам а то уже слишком я заморочил _MBK_.Но работы ещё много.
 
Да, далеко я был ещё. Спасибо всем огромное. Дальше буду сам а то уже слишком я заморочил _MBK_.Но работы ещё много.
Я просто с утюга пишу и на вашем мобильном фото суть ошибки не разумею. Где то вы в синтаксисе напортачили судя по всему.
 
Я просто с утюга пишу и на вашем мобильном фото суть ошибки не разумею. Где то вы в синтаксисе напортачили судя по всему.

Есть такое. Осталось сделать чтобы все кривые на один слой переходили ну и создать контуры. Мануал в помощь)).
 
Они и так у вас все на активном слое или как?
 
Четыре страницы ерундой занимаетесь
вредствами корела
Код:
Sub ringo()
  Dim s As Shape, ringofound As Boolean
  ActiveDocument.BeginCommandGroup "Ringo"
  If ActivePage.Layers.Find("ringo") Is Nothing Then ActivePage.CreateLayer ("ringo")
  For Each s In ActiveSelection.Shapes.FindShapes(, cdrRectangleShape)
    ActivePage.Layers("ringo").CreateEllipse s.LeftX, s.TopY, s.RightX, s.BottomY
  Next s
  ActiveDocument.EndCommandGroup
End Sub
 
Последнее редактирование:
Четыре страницы ерундой занимаетесь

Код:
Sub ringo()
  Dim s As Shape, ringofound As Boolean
  ActiveDocument.BeginCommandGroup "Ringo"
  ringofound = False
  For Each l In ActivePage.Layers
    If l.Name = "ringo" Then ringofound = True: Exit For
  Next l
  If ringofound = False Then ActivePage.CreateLayer ("ringo")
  For Each s In ActiveSelection.Shapes.FindShapes(, cdrRectangleShape)
    ActivePage.Layers("ringo").CreateEllipse s.LeftX, s.TopY, s.RightX, s.BottomY
  Next s
  ActiveDocument.EndCommandGroup
End Sub

Это в мануале корела пример?
 
Это я за пару минут накидал
 
Макрос нарисовал в них круг или несколько кругов
Про отступы позабыл, но это несложно впихнуть.
Прямоугольник вместо круга - имя метода поменять.
Миш, вот чего ты кучу страниц наблюдаешь, как люди каждый объект выделить программно пытаются? Выясняешь то, что и так понятно из первого же сообщения? И т.д. Ну поменяли посреди кучи бреда круги на прямоугольники и чо?
 
У меня, кстати, код из сообщения #60 отрабатывает корректно, без ошибки 'hmmm'
 
У меня, кстати, код из сообщения #60 отрабатывает корректно, без ошибки 'hmmm'
У меня тоже работает, но когда начал делать дальше обнаружил что почему то макрос не выдерживает отступы. Допустим задал 63 мм, а когда мерить на листе начинаешь оказывается с одной стороны 63,84 а с другой 63,5 плюс к этому сами прямые смеются внутри прямоугольника т.е снизу не доходят до края а сверху наоборот входят за границы.
 
Пример покажите
У меня работает правильно
upload_2017-10-31_9-48-5.png
 
Скриншот не могу сделать.
Давайте вместе поучимся делать скриншоты или как? 'hmmm'
Файл тогда пришлите, что ли?
По вашему фото не понятно ничего снова - правая линия не там где надо?
 
Замените тип Long на Double. Иначе округляется до целых.
 
Давайте вместе поучимся делать скриншоты или как? 'hmmm'
Файл тогда пришлите, что ли?
По вашему фото не понятно ничего снова - правая линия не там где надо?

На пк нет интернета. Скриншоты то умею делать.