Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
АлексЮстасу
Зарегистрирован: 22.06.2012 Сообщения: 104 Откуда: Москва
|
Добавлено: Пн Авг 11, 2014 3:04 pm Заголовок сообщения: замена cell'ов |
|
|
Не заменяются селлы с помощью Replaced Cells.
Селлы из автокадовских файлов.
Правильно понимаю, что причина не замены в том, что это shared cell, а не просто cell?
Если я делаю Drop Element--Shared Cells--To Normal Cell, то тоже не заменяются. От того, что нет таких cell в библиотеке? |
|
Вернуться к началу |
|
|
Leonid давно здесь сидим
Зарегистрирован: 28.01.2006 Сообщения: 598 Откуда: С.-Петербург
|
Добавлено: Вт Авг 12, 2014 7:46 am Заголовок сообщения: |
|
|
В таком вопросе легче понять проблему если посмотреть сам файл... |
|
Вернуться к началу |
|
|
АлексЮстасу
Зарегистрирован: 22.06.2012 Сообщения: 104 Откуда: Москва
|
Добавлено: Вт Авг 12, 2014 12:49 pm Заголовок сообщения: |
|
|
могу выложить, но как? |
|
Вернуться к началу |
|
|
Leonid давно здесь сидим
Зарегистрирован: 28.01.2006 Сообщения: 598 Откуда: С.-Петербург
|
Добавлено: Ср Авг 13, 2014 7:46 am Заголовок сообщения: |
|
|
например - яндекс-диск |
|
Вернуться к началу |
|
|
АлексЮстасу
Зарегистрирован: 22.06.2012 Сообщения: 104 Откуда: Москва
|
Добавлено: Ср Авг 13, 2014 2:29 pm Заголовок сообщения: |
|
|
https://yadi.sk/d/HolJdYgRZYxvk
Например, заменить блоки стрелок заполненных (115-5) на блок стрелок не залитых (ЛЭП_НИЗ_НАПР__СТРЕЛКА_НА_2).
Я понимаю, что это автокадовский dwg-файл. Но переводить в dgn не желательно.
И в реальном файле описаны десятки блоков. |
|
Вернуться к началу |
|
|
Leonid давно здесь сидим
Зарегистрирован: 28.01.2006 Сообщения: 598 Откуда: С.-Петербург
|
Добавлено: Пн Авг 18, 2014 9:38 am Заголовок сообщения: |
|
|
Похоже только так
Код: |
Sub repshcell()
Dim ee As ElementEnumerator
Dim esc As ElementScanCriteria
Set esc = New ElementScanCriteria
esc.ExcludeAllTypes
esc.IncludeType msdElementTypeSharedCell
Dim sc1 As SharedCellElement
Dim sc2 As SharedCellElement
Set ee = ActiveModelReference.Scan(esc)
Do While ee.MoveNext
Set sc1 = ee.Current.AsSharedCellElement
If sc1.Name = "115-5" Then
Set sc2 = CreateSharedCellElement2("ЛЭП_НИЗ_НАПР__СТРЕЛКА_НА_2", sc1.Origin, sc1.Scale, True, sc1.Rotation)
ActiveModelReference.ReplaceElement sc1, sc2
End If
Loop
End Sub
|
|
|
Вернуться к началу |
|
|
АлексЮстасу
Зарегистрирован: 22.06.2012 Сообщения: 104 Откуда: Москва
|
Добавлено: Пн Авг 18, 2014 3:20 pm Заголовок сообщения: |
|
|
Круто! Спасибо!
Хотя, сам я не умею еще этим воспользоваться
Это пойдет на 8 и на 8i? |
|
Вернуться к началу |
|
|
Leonid давно здесь сидим
Зарегистрирован: 28.01.2006 Сообщения: 598 Откуда: С.-Петербург
|
Добавлено: Вт Авг 19, 2014 3:59 pm Заголовок сообщения: |
|
|
это VBA
работает со всеми восьмыми версиями |
|
Вернуться к началу |
|
|
АлексЮстасу
Зарегистрирован: 22.06.2012 Сообщения: 104 Откуда: Москва
|
Добавлено: Чт Авг 21, 2014 4:35 pm Заголовок сообщения: |
|
|
Ээээ... Долго чесал репу, да еще активно отвлекали.
Потом зашел в Utilities--Macro--Visual Basic Editor, вставил в окно этот код, нажал Run, и конкретно shared cell "ЛЭП_НИЗ_НАПР__СТРЕЛКА_НА_2" заменились на конкретно shared cell "115-5".
Т.е. непосредственно для этих селлов сработало.
Еще раз спасибо!
Может быть сделать на форуме "ответ на часто задаваемый вопрос" - "Как воспользоваться кодом на VBA "?
Например, на dwg.ru есть такое - "Как воспользоваться кодом на лиспе", где пошагово описано, как непссвещенным превратить код в вызываемую команду.
Или с VBA и в Microstation такое не получится? |
|
Вернуться к началу |
|
|
|