Макрос потестить

Статус
Закрыто для дальнейших ответов.

banIDit

I love this game!
Топикстартер
Сообщения
1 160
Реакции
241
собственно сабж, делал сам
там их 2 штуки, надо посмотреть второй
выполнено мягко скажем "немного поламерски", но я же только учусь.
:)
проблема в том, что когда в выделение попадают объекты с разной
толщиной обводки, макрос расчитывает размер страницы по какому-то
странному методу. Никак не могу понять по какому. :(
кое какой код взят из скрипта дистрибуции объектов Kir (за это ему спасибо -- помогло много где)
Очень нужно мнение знающего чела.
корел 12-й, переименовать с *.txt в *.gms и закинуть примерно сюда: c:\Program Files\Corel\Corel Graphics 12\Draw\GMS\TextCurve.gms
 

Вложения

  • TextCurve.txt
    24.5 КБ · Просм.: 1 069

lev

Модератор
20 лет на форуме
Сообщения
2 150
Реакции
2 073
Ответ: Макрос потестить

Твой код у меня вычисляет страницу правильно, но неправильно позиционирует объекты по центру, вот поправленный кусок, лучше было бы, конечно, все с начала переписать, но лень.
Код:
Private Sub Cmd1_Click()
Dim x As Double, y As Double, w As Double, h As Double
ActiveSelection.GetBoundingBox x, y, w, h, True 
ActivePage.SetSize w, h 
ActiveSelection.GetBoundingBox x, y, w, h, True 
'тут можно было через ReferencePoint и GetPosition
ActiveSelection.Move -x, -y
End Sub
 

banIDit

I love this game!
Топикстартер
Сообщения
1 160
Реакции
241
Ответ: Макрос потестить

Код:
Private Sub Cmd1_Click()
Dim x As Double, y As Double, w As Double, h As Double
ActiveDocument.Selection.GetBoundingBox x, y, w, h, True 
ActivePage.SetSize w, h 
ActiveSelection.Move -x, -y
Allign
End
End Sub
сделал вот у себя вот так не помогло
 

Вложения

  • bug.png
    bug.png
    5 КБ · Просм.: 829

lev

Модератор
20 лет на форуме
Сообщения
2 150
Реакции
2 073
Ответ: Макрос потестить

А что мешает воспользоваться моим кодом? Или он тоже не работает?
комментирую Ваш код:
Код:
Private Sub Cmd1_Click()
Dim x As Double, y As Double, w As Double, h As Double
ActiveDocument.Selection.GetBoundingBox x, y, w, h, True 
ActivePage.SetSize w, h 
ActiveSelection.Move -x, -y
'после изменения размера страницы меняется положение Нуля страницы и соответственно x и у, поэтому в моем коде я замеряю их еще раз
Allign
'Ваш Allign не учитывает толщину обводки, я его выкинул. Надобность в Allign пропадает после сдвига объектов в Ноль страницы
End 'В этом тоже не вижу смысла
End Sub
 

banIDit

I love this game!
Топикстартер
Сообщения
1 160
Реакции
241
Ответ: Макрос потестить

Помню пробовал, но где-то поставил ошибку и он делал все по-прежнему.
Спасибо, теперь получилось.
А End у меня закрывает форму.
Код:
' тут можно было через ReferencePoint и GetPosition
можно по подробнее, если не затруднит.
 

lev

Модератор
20 лет на форуме
Сообщения
2 150
Реакции
2 073
Ответ: Макрос потестить

вместо ActiveSelection.GetBoundingBox x, y, w, h, True
можно было написать:
ActiveDocument.ReferencePoint = cdrBottomLeft
ActiveSelection.GetPosition x, y
 

banIDit

I love this game!
Топикстартер
Сообщения
1 160
Реакции
241
Ответ: Макрос потестить

Точно, спасибо.
Я догадывался о назначении ReferencePoint, но не думал, что он применим к ActiveDocument.
 
Статус
Закрыто для дальнейших ответов.