[CDR 2017-2021] Переименование обьекта

Kramatorii

Участник
Топикстартер
Сообщения
4
Реакции
0
Всем привет! кто может помочь сделать макрос на переименование обьектов в рандомные числа, только что бы при выборе нескольких обьектов число присваивалось каждому обьекту отдельно. Программировать не умею получилось вроде на все обьекты сразу ран.число кинуть, а вот каждому отдельно в выборе не как. Спасибо
 

DukereD

макрософил
Сообщения
462
Реакции
114
Код:
For Each S In ActiveSelection.Shapes
    n = ActiveSelection.Shapes.Count
    S.Name = Int(n * Rnd)
Next S


другой вопрос для каких целей интересуетесь зачем именно имена объектов рандомно задавать?
 

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
В CorelDRAW каждый объект уже имеет свой уникальный номер - StaticID

StaticID возвращает целое число, представляющее уникальный идентификационный номер, присвоенный каждому объекту. Это число не меняется, поэтому его можно использовать в течение всего срока существования объекта.

соответственно каждый объект = Shape имеет свой name

можно перебрать все объекты, прочесть их StaticID ( что-то сделать с этим номером) и записать номер в имя - повторений не будет
1619013327402.png
1619013358087.png
 
  • Спасибо
Реакции: DukereD

Kramatorii

Участник
Топикстартер
Сообщения
4
Реакции
0
другой вопрос для каких целей интересуетесь зачем именно имена объектов рандомно задавать?
Работаю в сфере проектирования вен.фасадов и часто при раскрое больших обьектов материала становиться очень много, и понять к примеру где находиться кассета из композита на фасаде и в раскрое занимает достаточно много времени, так было придумано просто искать в обычном поиске по имени, но сейчас благодаря ув.Dastin как я понял есть уникальный ID каждого обьекта в кореле что значительно упрощает задачу в разы. и прозьба слегка изменить макрос.
For Each S In ActiveSelection.Shapes
n = ActiveSelection.Shapes.Count
S.Name = Int(n * Rnd)
Next S
что бы не рандом был , а каждому обьекту пристаивался просто в имя его уникальный id. Спасибо
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 185
Реакции
10 844
Ну так там по ссылке пример же был кода
Код:
For Each s In ActiveSelection.Shapes
     s.Name = s.StaticID 
    
  Next s
 
  • Спасибо
Реакции: DukereD