Поместить объект в Powerclip

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

BASMACH

Топикстартер
10 лет на форуме
Сообщения
52
Реакции
8
ДОБРОГО ВРЕМЕНИ СУТОК ! СТОЛКНУЛСЯ С НЕБОЛЬШОЙ ПРОБЛЕМОЙ ПРИ НАПИСАНИИ МАКРОСА. ПРОБЛЕМА ЗАКЛЮЧАЕТСЯ В СЛЕДУЮЩЕМ - НЕ ПОЛУЧАЕТСЯ ПОМЕСТИТЬ ИМПОРТИРУЕМЫЙ ОБЪЕКТ В POWERCLIP .
Dim s1 As Shape
Set s1 = ActiveShape
ActiveLayer.Shapes(1).Move 0, 0
ActiveShape.Shapes(0).Shapes(1).AddToPowerClip ActiveLayer.Shapes(2), cdrFalse
ИСПОЛЬЗОВАЛ ДАННЫЙ КОД, ПОДСКАЖИТЕ ГДЕ ОШИБКА ИЛИ ВООБЩЕ ПО ДРУГОМУ ЭТО РЕАЛИЗУЕТСЯ?
БЛАГОДАРЮ
 
Комментарий модератора: 1. Писать капслоком здесь категорически не приветствуется и за это даются штрафные баллы.
2. Для выделения участков кода используется специальный тэг [code].
 
Я так понимаю, данный макрос получен автозаписью?
Соответственно Shapes(0), Shapes(1), Shapes(2) - это некие конкретные объекты, которые в макете, на котором макрос записывался, присутствовали, но вовсе не факт, что на всех макетах будут присутствовать тоже, причем иметь те же индексы.
Короче говоря, обращение к шейпам по индексу массива - порочная практика, делать так нельзя, придумайте какой нибудь другой способ их идентификации.
 
Комментарий модератора: 1. Писать капслоком здесь категорически не приветствуется и за это даются штрафные баллы.
2. Для выделения участков кода используется специальный тэг [code].
Виноват, исправлюсь.
 
Последнее редактирование модератором:
Я так понимаю, данный макрос получен автозаписью?
Соответственно Shapes(0), Shapes(1), Shapes(2) - это некие конкретные объекты, которые в макете, на котором макрос записывался, присутствовали, но вовсе не факт, что на всех макетах будут присутствовать тоже, причем иметь те же индексы.
Короче говоря, обращение к шейпам по индексу массива - порочная практика, делать так нельзя, придумайте какой нибудь другой способ их идентификации.
Да верно получен авто записью. Насколько я понял индекс допустим (1) указывает на объект который в данном слое лежит по верх всех остальных . И я пробовал таким способам трансформировать(выравнивать) объекты всё прекрасно получалось а вот с контейнером засада.
 
Насколько я понял индекс допустим (1) указывает на объект который в данном слое лежит по верх всех остальных . И я пробовал таким способам трансформировать(выравнивать) объекты всё прекрасно получалось а вот с контейнером засада.
Немного не так. Индексы в массиве Shapes - это внутренний кореловский порядок шейпов внутри определенного объекта. Обычно он связан с порядком создания объектов, но это вовсе не обязательно. И уж тем более смутная связь с порядком залегания объектов - к примеру можно создать объект последним и отправить его на задний план.
В вашем же конкретном случае ситуация вообще феерическая - берется нулевой шейп активного объекта и у него первый дочерний подшейп - это все планируется загнать во второй шейп активного слоя 'fp'
 
Да так авто запись показала, вот по этому я и завис , но я уже нашёл выход
Код:
ActiveSelection.AddToPowerClip ActiveLayer.Shapes(2), cdrFalse

первоначальный шаблон с объектами куда необходимо будет закинуть импортируемые файлы буду делать я по этому порядок залегания будет известен , надеюсь всё получиться
 
Уже лучше
Ваш макрос, во всяком случае, весь селекшн засовывает во второй шейп.
Но от второго шейпа надо избавляться - повторяю, порядок объектов внутри файла непредсказуем и неисповедим.
По уму надо бы как то идентифицировать контейнер по более определенным признакам (цвет, размер, положение, количество узлов и т д) в противном случае периодически лажать может.
 
Код:
Sub poverklip_po_poslednemy()
    Dim doc As Document
    Set doc = ActiveDocument
    doc.Unit = cdrMillimeter
   
    Dim perv As Shape
    Dim vtoroi As Shape
    'ActiveDocument.ReferencePoint = cdrTopLeft
    'Set perv = ActiveSelection.Shapes(1)
    'Set vtoroi = ActiveSelection.Shapes(2)
    ActiveSelection.Shapes(2).AddToPowerClip ActiveSelection.Shapes(1)
   
    'ActiveShape.Shapes(0).Shapes(1).AddToPowerClip ActiveLayer.Shapes(1)
    'ell.AddToPowerClip rect
   
End Sub
 
Vaal, вы, вероятно, мои верхние посты не читаете совсем?
А зачем читать, если этот код работает без нареканий? Выделил объект, шифтом выделил объект куда вставлять, нажал кнопку и всё.;)
 
А зачем читать, если этот код работает без нареканий? Выделил объект, шифтом выделил объект куда вставлять, нажал кнопку и всё.
Хоть это и кажется очевидным, но меня нет серьезной уверенности, что выделяемый с шифтом объект обязательно будет под индексом 2 'hmmm'
 
Статус
Закрыто для дальнейших ответов.