[CDR 2017-2021] Поиск и замена, или удаление пути после операции *разобрать* художественное оформление

Tinatsu

Участник
Топикстартер
Сообщения
148
Реакции
4
При работе с пером художественного оформления всегда приходится *разбирать обьект чтобы получить полноценный шейп b остается линия внутри шейпа
- возможно ли разобрать без этой линии (в Иллюстраторе есть такая функция, но в кореле не разобралась как это настроить)?
- возможно ли каким либо образом поиском найти все эти линии и удалить вместе?
 

Вложения

  • test_shape.jpg
    test_shape.jpg
    90.4 КБ · Просм.: 653
Последнее редактирование модератором:

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
возможно вам это поможет разобраться .
1. После разборки образуется два объекта - как вы говорите - шейп и кривая мастер.
Эта линия мастер, взависимости от инструмента (Brush или Expression) может иметь или не иметь заливку, иметь или не иметь контур и наверное по этому признаку не годится для фильтрации. Сам шейп заливку имеет всегда
2. Мастер линия, с заливкой или без, остается всегда разомкнута
По этому признаку её можно вычислить и изничтожить ( перевести в noFill и nonOutline)
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 211
Реакции
10 848
возможно вам это поможет разобраться .
1. После разборки образуется два объекта - как вы говорите - шейп и кривая мастер.
Эта линия мастер, взависимости от инструмента (Brush или Expression) может иметь или не иметь заливку, иметь или не иметь контур и наверное по этому признаку не годится для фильтрации. Сам шейп заливку имеет всегда
2. Мастер линия, с заливкой или без, остается всегда разомкнута
По этому признаку её можно вычислить и изничтожить ( перевести в noFill и nonOutline)
Ты не совсем прав. Если речь идет о макросе, то линия может детектироваться до "разборки" , после которой автоматически удпляться
 

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
хм... до разборки, да, мастер линия может быть выделена,
но удаление мастер линии приводит к удалению всего бутерброда
а её обесцвечивание приводит к обесцвечиванию всей ArtisticMediaGroup
upload_2018-6-11_17-40-19.png
 

Tinatsu

Участник
Топикстартер
Сообщения
148
Реакции
4
возможно вам это поможет разобраться .
1. После разборки образуется два объекта - как вы говорите - шейп и кривая мастер.
Эта линия мастер, взависимости от инструмента (Brush или Expression) может иметь или не иметь заливку, иметь или не иметь контур и наверное по этому признаку не годится для фильтрации. Сам шейп заливку имеет всегда
2. Мастер линия, с заливкой или без, остается всегда разомкнута
По этому признаку её можно вычислить и изничтожить ( перевести в noFill и nonOutline)
по первому признаку - не проходит, она фактически считывается как залитая и с обводкой, почему так програмеры решили не ясно, но поиск ее обнаруживает вместе с шейпами по этим признакам
2 - можно немного развернутее)? скорее всего так и есть признак этот будет отличным, но каковы условия поиска (не так часто и эффективно юзаю замену, буду рада быстрой подсказке)
 

Tinatsu

Участник
Топикстартер
Сообщения
148
Реакции
4
хм... до разборки, да, мастер линия может быть выделена,
но удаление мастер линии приводит к удалению всего бутерброда
а её обесцвечивание приводит к обесцвечиванию всей ArtisticMediaGroup
Посмотреть вложение 107877
на мой взгляд *до разборки ничего предпринять нереально.. работать нужно уже после разбивки.
 

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
но каковы условия поиска
каковы,каковы ... найти незамкнутые кривые
напрямую этого нет ... но,
совершенно по случаю, есть в наших арсеналах набор макросов zOsman3
и в составе этого набора - то что вам сможет пригодиться

upload_2018-6-11_18-32-1.png


не обращайте внимания, что название макроса немного не совпадает
- вам важен пункт - SelectOpenCurves - выделить незамкнутые кривые
поиск в макросе организован по активной странице
такие кривые будут выделены - дальше делайте с ними всё, что ... даже то, что нельзя :)
 
  • Спасибо
Реакции: Tinatsu

Tinatsu

Участник
Топикстартер
Сообщения
148
Реакции
4
вот как..отлично, спасибо. Я как обычно ожидала, что где-то недосмотрела мат.часть)
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 211
Реакции
10 848
хм... до разборки, да, мастер линия может быть выделена,
но удаление мастер линии приводит к удалению всего бутерброда
а её обесцвечивание приводит к обесцвечиванию всей ArtisticMediaGroup
Посмотреть вложение 107877
Ну чисто пофантазировать если - допустим, макрос присваивает данной линии некий уникальный признак до разборки, разбирает, затем по этому признаку находит линию и удаляет
 

Tinatsu

Участник
Топикстартер
Сообщения
148
Реакции
4
Ну чисто пофантазировать если - допустим, макрос присваивает данной линии некий уникальный признак до разборки, разбирает, затем по этому признаку находит линию и удаляет
но художественное оформление это свойство данного обьекта. как его отделить *до разборки. уйдет и весь обьект. (даже если допустим мы как-то сможем отделить линию от ее оформления логически идентифицировав по какому-то неведомому признаку/признакам) манипулировать не выйдет пока она едина с оформлением
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 211
Реакции
10 848
Чисто в порядке бреда - контрольная сумма координат узлов к примеру
 

Tinatsu

Участник
Топикстартер
Сообщения
148
Реакции
4
Чисто в порядке бреда - контрольная сумма координат узлов к примеру
весь алгоритм звучит сомнительно, если все равно разбирать, то не проще ли найти худ. оформление/разобрать/удалить незамкнутые контуры. зачем высчитывать координаты? если даже идти таким путем и высчитать, то зачем не совсем пойму, ведь это точно те же обьекты что и *худ. оформление
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 211
Реакции
10 848
Наоборот, предположение что обязательно искомый контур разомкнут и только он один - весьма шатко. А так однозначно идентифицируется. Впрочем это первое что в голову пришло, наверняка проще и красивее пометить можно
 
  • Спасибо
Реакции: Tinatsu

Tinatsu

Участник
Топикстартер
Сообщения
148
Реакции
4
Наоборот, предположение что обязательно искомый контур разомкнут и только он один - весьма шатко.
может и так. в любом случае пока это самое удобное существующее решение.
в идеале, конечно вопрос к разработчикам - зачем они оставляли путь, не могу придумать ни одного применения этим остаткам..нехватает диалогового окна оставлять/не оставлять..
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 211
Реакции
10 848
Скажем - самое простое. Но не самое кошерное ;)
 

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
наверняка проще и красивее пометить можно
... :) пометить ... кадастровая палата
можно StaticID читать/запоминать

Sub Macro1()
Dim s1 As Shape
Set s1 = ActiveDocument.ActiveShape
MsgBox s1.StaticID, vbOKOnly
End Sub
upload_2018-6-11_23-44-0.png
 
  • Спасибо
Реакции: Tinatsu и _MBK_

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 211
Реакции
10 848
А он точно сохраняется после того как кисть в тыкву превратится?
 

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
в лабораторной работе пострадали 4 тыквы ...
но метка, чОткая, держится
порядок назначения неясен - первый шейп из 4х получил сразу нумер 5, а затем (Select All - Delete) вновь нарисованная тыква вдруг получила то, что на скрине - 33952
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 211
Реакции
10 848
Ну вот значит вот он какой - кошерный олень!
 

lev

Модератор
20 лет на форуме
Сообщения
2 145
Реакции
2 071
Я так делаю:
Код:
Sub DeArtBrush()
  ActiveDocument.BeginCommandGroup "DeArtBrush"
  On Error Resume Next
  Dim sr As ShapeRange, s As Shape, sr1 As ShapeRange
  Set sr = ActiveSelection.Shapes.FindShapes
  For Each s In sr
    If s.Type = cdrArtisticMediaGroupShape Then
      Set sr1 = s.GetLinkedShapes(cdrLinkAllConnections)
      s.Separate
      sr1(1).Delete
    End If
  Next s
  ActiveDocument.EndCommandGroup
End Sub
 
  • Спасибо
Реакции: dastin, _MBK_ и Tinatsu