Автоматическая нумерация

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

А к чему Вы нам сообщаете что Вам бейсик неинтересен?
Раз сами не хотите ничего искать, вот Вам на блюдечке с картинками.
http://design4free.narod.ru/articles/gp_17.html

Первая ссылка в Яндексе по словам, которые были мной написаны в первом же ответе несколько дней назад!

Ещё - мало букв - много картинок http://www.itshop.ru/Uroki-CorelDraw-Numeratsiya-biletov-vizitok-i-td-Izuchaem-Print-Merge/l9i22972

А вот чуть ниже, совсем для ленивых http://www.youtube.com/watch?v=7sjHuVqp-ik

Достаточно?
 
Ответ: Автоматическая нумерация

Realalex

Да, да. Это всё очень и очень интересно, и я обязательно буду учиться, преодолевать в себе косность и дремучесть, но вообще-то я просил описать поэтапно про 170-кратное ускорение (да хотя бы 2-кратное).
 
Ответ: Автоматическая нумерация

"Ну, задача легко решается простейшим скриптом (макросом). Однако, предположим, скриптинг по какой-то причине недоступен. Я бы тогда сделал так:
1. В MS Excel (Oo Calc) забиваем номер xxx_001, тянем вниз до нужной цифры, к примеру xxx_350 не надо
2. Копируем в блокнот, потом в корел в заготовленный параграф-текст. не надо
3. Потом создаем пустой текстовой блок под размер номера и копируем его 350 раз (+ на цифровой клаве) не надо ни 1 раз ни 350
4. Потом выделяем верхний пустой блок и ближайший элипс С > E (ровняем блок по центру элипса)
5. Повторяем пункт 4 — 349 раз. В среднем на пункт 4 уходит по 2-3 секунды (350*3/60 = 17 мин.) ну Вы поняли :)
6. В object manager выделяем все текстовые объекты и сдвигаем их скопом вверх/низ зачем?
7. К выделенным пустым текстовым объектам добавляем переполненный первый текстовой объект и линкуем всё > Text > Paragraph > Link.
не надо

Итого: 350 номерков за 20 минут.
Чего-то долго как-то, может за 19 получится?

А надо вот что:
 

Вложения

  • 22972_38800084.jpg
    22972_38800084.jpg
    206.9 КБ · Просм.: 946
Ответ: Автоматическая нумерация

Realalex

Вы можете просто описать свое решение или нет? Вы адекватны вообще? (я честно теряюсь).
 
Ответ: Автоматическая нумерация

Да ладно уж, чего терятся. Завтра надиктую на диктофон, раз читать по ссылкам Вам в лом.

Но картинку всё ж гляньте. Адекватная?
 
Ответ: Автоматическая нумерация

Диктуйте. Я подожду чёткого решения поставленной автором темы задачи. Мне не надо комментировать моё решение и давать бесполезные ссылки. Я просто хочу "решение от Realalex". А пока в игнор...
 
Ответ: Автоматическая нумерация

Да пожалуйста. А автор темы пусть с утречка почитает или посмотрит "бесполезные" ссылки.
Сэкономит 19 минут. А вот раставлять придется ручками, но это я уже повторяюсь. Все спокойной ночи.
 
Ответ: Автоматическая нумерация

В моём решении 17 мин уходит на то чтобы расставить ручками пустые блоки. Сами номерки (350 штук) можно получить в экселе за 30 секунд включая запуск экселя и набор первого номера.
пункт 6 в моём сообщении (подписан вами "зачем?") выходит из пункта 4 (ровняем блок по центру эллипса).
Жду вашего ускорения от принтмёрджа.
 
Ответ: Автоматическая нумерация

Код:
Sub eeeeeeeeeeeee()
Dim s As Shape
Dim x As Double, y As Double
Dim rx As Double, ry As Double
i = 0
 
For Each s In ActivePage.Shapes
 If s.Type = cdrEllipseShape Then
  With s.Ellipse
  .GetCenterPosition x, y
  .GetRadius rx, ry
 End With
 Set ggggg = ActiveLayer.CreateArtisticText(x - rx, y + ry + 0.1, i, , , "Arial", 10)

Call ggggg.AlignToShape(cdrAlignHCenter, s)

 End If
 i = i + 1
Next s
End Sub

Эта макросина нумерует все элипсы на страничке. А если посидеть чутка, то можно и нумеровать в нужном порядке. А если совсем посидеть, то можно и крутой макрос написать...
А! Забыл уточнить... нумерует в обратном порядке. То есть последний созданный эллипс - будет под цифрой ноль =)


Не по теме:
Sanchos, =) я вижу, что ты видишь
 
Ответ: Автоматическая нумерация


Не по теме:
Для Вашего самообразования

Код:
Sub eeeeeeeeeeeee()
  Dim s As Shape
  i = 0
  ActiveDocument.ReferencePoint = cdrTopMiddle 'Избавимся от будущей центровки, сразу получая координаты "центроверха"
  For Each s In ActivePage.Shapes.FindShapes(, cdrEllipseShape) 'Можно не проверять тип объекта, а сразу отобрать эллипсы
    ActiveLayer.CreateArtisticText s.PositionX, s.PositionY + 0.1, i, , , "Arial", 10, , , , cdrCenterAlignment 'И текст отцентрируем при создании
    i = i + 1
  Next s
End Sub
Еще было бы корректнее прописать единицы измерения, в которых задаётся смещение 0.1, но и так сойдёт
 
Ответ: Автоматическая нумерация

Ну, я как бы прошептал, что если посидеть, можно и в космос улететь... мне сидеть некогда =) И, потом, я в кореле о-о-о-о-о-о-чень редко "макросю". Но, lev, твой код, конечно же прекрасен.

Но пока я не видел этого, накалякал другой, ближе к теме. Короче. Рисуем эти овальчики,
потом просто выделяем всё и запускаем макрос. Макрос - нумерует с A57_001 и т. д. Нумерует как создавались овалы. То есть овал созданный первым - будет под номером 1 =).
Код:
Sub aaaaaaaaaaaaaaaaaaaaa()
Dim s As Shape
Dim x As Double, y As Double
Dim rx As Double, ry As Double
i = 1
 
ActiveSelection.OrderReverse
 
For Each s In ActiveSelection.Shapes
 If s.Type = cdrEllipseShape Then
 'hh = s.Count
  With s.Ellipse
  .GetCenterPosition x, y
  .GetRadius rx, ry
 End With
 If i < 10 Then
  j = "00"
 ElseIf i >= 10 And i < 100 Then
  j = "0"
 Else: j = ""
  End If
 Set ggggg = ActiveLayer.CreateArtisticText(x - rx, y + ry + 0.1, "A57_" & j & i, , , "Arial", 10)

Call ggggg.AlignToShape(cdrAlignHCenter, s)


 End If
 i = i + 1
Next s
End Sub

Ну, и, конечно же, все это неполноценная, кривая версия, которую подогнать под свои потребности, имхо, особого ума не составит (я имею ввиду, можно сделать красиво как у Льва, ну и выставить текст около эллипсов на том расстоянии, на котором нужно + размер текста и прочее.)
Короче. Если эллипсы разбросаны по листу от фонаря, то нумерация превращается.., превращается нумерация.., в зевание и моргание в экран.
 
Ответ: Автоматическая нумерация

Я всё равно за красоту :)
Код:
Set ggggg = ActiveLayer.CreateArtisticText(x - rx, y + ry + 0.1, Format(i, "A57_000"), , , "Arial", 10)
 
Ответ: Автоматическая нумерация

'))'
 
Ответ: Автоматическая нумерация

qsedftghk, lev

Этак любой может '))' а без макросов?
Вот, например, недавно в ai-шной ветке была тема:
http://forum.rudtp.ru/showthread.php?t=45702
Вот там решение было просто супер.
 
Ответ: Автоматическая нумерация

В моём решении 17 мин уходит на то чтобы расставить ручками пустые блоки. Жду вашего ускорения от принтмёрджа.

Прошу прощения, не разобрался, что это с расстановкой блоков. Но всё равно "не надо" не утратило силы :)
И Эксель ни к чему. Я бы применил комбинацию ПринтМерж с Импозером.
Напечатал бы на PDF принтер - вставил бы в корел, а уж потом ровнял прилипанием к объекту каждое число
Ещё через принт мерж удобнее тем, что если есть повторяющаяся последовательность символов (например в начале номера) переменная инфо просто автоматом добавляется в нужном месте.

А уж копировать "350 раз на цифровой клаве" точно не понадобится. А если номеров в 10 раз больше?
 
Ответ: Автоматическая нумерация

Значит весь сыр-бор из-за недоразумения? А я думал вы издеваетесь '))'

И, кстати, я не предлагал 350 раз жать +. Можно сначала девять раз, потом выделить еще 4 и т.п. Впрочем это неважно как накопировать. Способов много, а в x5 стало еще больше.


Не по теме:
Lev, может вы почистите тему?
 
Ответ: Автоматическая нумерация

...Этак любой может...
Если бы так было, то и тем бы таких не создавали =). И потом, ручками не всегда интересно... А как же посидеть поболтать с соседкой приятной наружности, пока макрос пыжится? =)
 
Ответ: Автоматическая нумерация

Большое спасибо всем за помощь. Про Print Merge тоже изучил (точнее изучаю). Скрипты не порезаны, у меня полный функционал доступен, а дальше надо передавать уже готовый документ, так что как я решаю проблему - это "мои проблемы". Но при этом эллипсы должны остаться эллипсами, а текст быть фигурным - это важный момент. Дело в том, что в отличии от уважаемых участников форума я с корелом работаю совсем недавно, он в моей работе не главный инструмент (не я выбирал, так построен процесс, в котором я лишь участник), поэтому осваиваю по мере появления вопросов. До меня такими вопросами вообще не задавались и фигачили всё вручную, но мне, в силу природной лени, стало интересно как можно ускорить процесс, поэтому и курю форумы.
Темы на тему (простите за тавтологию) нумерации прочитал ещё до создания вопроса (кстати благодаря этому форуму и макросам Lev и wOxxOm уже упростил многие вещи), но нужного мне не нашёл.

Ещё раз благодарю участников форума, сегодня вечером постараюсь проверить скрипты.
 
Ответ: Автоматическая нумерация

В нашей ветке скриптами называются программки на языке Corel SCRIPT, js, vbs. А то, что Вам дали - макросы VBA.
 
Статус
Закрыто для дальнейших ответов.