работа с кривыми
San / 12.02.2011, 19:48/00:41
Форум:
Доброго всем времени суток! Есть изображение, нужно найти в нём все кривые короче 2 см. вручную проверять каждую кривую очень долго, подскажите пожалуйста, может есть что нибудь такое, что может это сделать???
Написать цикл по объектам, внутри цикл по путям кривой, а в нём цикл по сегментам. Готового макроса я не видел.
это как?
ну вот так :)
Возможно кто то, у кого есть время и знание VBA, поможет. А мне некогда...
Sub minusType() ' ubrat' vse objekty odnogo tipa
Dim i As Long, iE As Long
ActiveDocument.Unit = cdrMillimeter
iE = ActiveLayer.Shapes.Count
For i = iE To 1 Step -1
If ActiveLayer.Shapes(i).Type < 20 Then
ActiveLayer.Shapes(i).Delete
End If
Next i
End Sub
ekali, сами то поняли что написали? Человек просил как удалить кривые короче 2см. К тому же код удаляет объекты не одного типа как написано в комментарии, а все у которых тип меньше 20, а это считай почти 90% объектов.
П.С. и насколько я помню, в кореле обратную последовательность в цикле можно в таких случаях не использовать, к тому же удобнее пользоваться циклом for each.
А, вылетел кусок при правке-вставке. Вот так надо
Вместо: ActiveLayer.Shapes(i).Type < 20 Then
Надо: If ActiveLayer.Shapes(i).Type = 3 Then
If ActiveLayer.Shapes(i).Curve.Length < 20 Then
в кореле обратную последовательность в цикле можно в таких случаях не использовать
- Почему? Я массивы на выкидыш всегда только в обратном порядке перебираю. С корелом пока мало знакома, но успела заметить, что порядковые номера при удалении / создании объектов меняются очень даже.
ekali, открою секрет — здесь, как и на большинстве других форумов, нужно пользоваться специальными тегами для кода и цитат. :) только внутри кода не делайте пустых абзацев!