Форум программистов, компьютерный форум, киберфорум
CorelDRAW
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
3 / 2 / 1
Регистрация: 02.11.2016
Сообщений: 110
1

Компоновка объектов

05.03.2019, 16:03. Просмотров 2938. Ответов 6
Метки vba (Все метки)

Всем привет!, хочу попробовать написать макрос, который будет автоматически делать компоновку объектов, например букв(картинку прикрепил)
Но не знаю от чего отталкиваться, в параметрах объекта есть SizeHeight и SizeWidth, по сути это BoundingBox объекта, это не то
Вот хотел спросить, какие параметры можно для этой задачи использовать, ну и если есть уже готовый в сети, прошу поделиться.
Спасибо!
0
Миниатюры
Компоновка объектов  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2019, 16:03
Ответы с готовыми решениями:

Компоновка прямоугольных объектов в CorelDraw
Здравствуйте. Только недавно начал осваивать CorelDraw, и тут же возникла проблема: есть множество...

Компоновка (расстановка) элементов на странице
Есть рабочее поле (страница) заданного размера. Есть определенное количество векторных элементов...

Компоновка графических объектов
На вход идут данные из файла: {фигура: (количество экземпляров, (длины сторон/радиус))} и так же...

Компоновка объектов Java Swing
Как мне сделать, если, например, нужно в одной строке разместить 2 компонента, затем, перейти на...

6
168 / 94 / 24
Регистрация: 26.01.2019
Сообщений: 323
05.03.2019, 22:09 2
Цитата Сообщение от Dimson_ Посмотреть сообщение
какие параметры можно для этой задачи использовать
Мне кажется, ориентироваться на "голые" текстовые символы не получится. Не представляю как можно оценить и получить характеристику занимаемого текстовым символом пространства.
Думаю, для решения такой задачи нужно разбивать символы на элементарные геометрические фигуры от которых можно отталкиваться, при этом визуально сохранять видимость букв. Но это так, размышления вслух =)
Цитата Сообщение от Dimson_ Посмотреть сообщение
если есть уже готовый в сети, прошу поделиться
Здесь сделан неплохой обзор макросов для Corel от Oberon, среди которых для вашей темы близки: Object Transform, Object Reposition, Object Spacing Control. Лучше начать с их изучения
1
178 / 177 / 30
Регистрация: 11.10.2016
Сообщений: 567
05.03.2019, 23:46 3
Цитата Сообщение от Dimson_ Посмотреть сообщение
Всем привет!, хочу попробовать написать макрос, который будет автоматически делать компоновку объектов, например букв(картинку прикрепил)
идея хорошая, но сложно реализуемая. Как вариант, можно накладывать объект на объект и вызывать стандартную функцию пересечения. Если объекты пересекаются, тогда изменяем положение объектов относительно друг друга, контролируя, чтобы их общий BoundingBox при этом уменьшался. Если найдено взаимное положение объектов, при котором получаются наименьшие габариты и отсутствуют пересечения, тогда можно считать фигуры скомпонованными
2
168 / 94 / 24
Регистрация: 26.01.2019
Сообщений: 323
05.03.2019, 23:53 4
Цитата Сообщение от _shark Посмотреть сообщение
Если объекты пересекаются, тогда изменяем положение объектов относительно друг друга, контролируя, чтобы их общий BoundingBox при этом уменьшался
Получается надо запустить процесс изменения положения объекта по трем параметрам (X, Y и поворот)?
Действительно
Цитата Сообщение от _shark Посмотреть сообщение
идея хорошая, но сложно реализуемая
0
3 / 2 / 1
Регистрация: 02.11.2016
Сообщений: 110
06.03.2019, 10:29  [ТС] 5
_shark, GeoCod, спасибо!, буду пробовать
0
3 / 2 / 1
Регистрация: 02.11.2016
Сообщений: 110
19.03.2019, 06:33  [ТС] 6
Начал с того, что бы определить "пустоты" в букве, через небольшой макрос, который добавляет в шейп рендж области как бы между Bbox-ом и контуром буквы, дальше если замерить площадь или контур по очереди, то можно определиться с самой большой "пустотой", что бы в нее начинать ставить след. букву, но такие буквы как G(Arial), не корректно обрабатывается

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
ActiveDocument.Unit = cdrMillimeter
    
    Dim s As Shape
    Dim s1 As Shape
    Dim s2 As Shape
    Dim s3 As Shape
    Dim s4 As Shape
    Dim sr3 As New ShapeRange
    Dim sr As New ShapeRange
    Dim brk As ShapeRange
    Dim cont As Integer
    cont = 10
    
    Dim x As Double, y As Double, w As Double, h As Double
    
    Set s = ActiveSelection
    s.GetBoundingBox x, y, w, h
    sr.Add s
    
    Set s1 = ActiveLayer.CreateRectangle(x + cont, y + h - cont, x + w - cont, y + cont)
    s1.ConvertToCurves
    sr.Add s1
    
    Set s3 = sr(1).Duplicate
    Set sr3 = s3.BreakApartEx
    
 
    
    If sr3.count > 1 Then
        For i = 2 To 2
            Set s4 = sr3(i - 1).Weld(sr3(i), True, True)
        Next
        sr3.Delete
        Set s2 = s4.Trim(sr(2), True, False)
        s4.Delete
        Set brk = s2.BreakApartEx
    End If
    
    
    If sr3.count = 1 Then
        Set s2 = s3.Trim(sr(2), True, False)
        sr3.Delete
        Set brk = s2.BreakApartEx
    End If
0
178 / 177 / 30
Регистрация: 11.10.2016
Сообщений: 567
19.03.2019, 13:05 7
попробуйте начать с простых взаимодополняемых букв, типа: A и V, или M и W, которые можно расположить вплотную. Сложную "G" лучше оставить на потом
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2019, 13:05

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

C++ Компоновка
Как сделать так что бы мои exe открывались на других кампуктерах? А то там что то требует, мне...

Компоновка
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class PierwszyProgram...

Компоновка
Я недавно начал изучать язык по книге Дейтелов, и у меня есть вопрос по компоновке программы, а...

Компоновка КА
Здравствуйте! Задача заключается в следующем: Имеется цилиндр(радиус цилиндра и его высота 2500мм)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.