Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Одновременное редактирование отдельных строк текста

Одновременное редактирование отдельных строк текста

Ответ
Поиск в этой теме
Непрочитано 27.12.2006, 21:21 #1
Одновременное редактирование отдельных строк текста
Karales
 
Регистрация: 17.05.2006
Сообщений: 11

Суть в следующем: На чертеже (в модели) есть несколько одинаковых строк текста с названием оборудования. Возможно ли сделать так, чтобы при изменении названия оборудования в одной из этих строк название менялось и во всех остальных строках.
Можно конечно сделать динамический блок и затем его редактировать,но это не очень удобно.
Просмотров: 9067
 
Непрочитано 28.12.2006, 02:35
#2
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


http://www.autocad.ru/cgi-bin/f1/board.cgi?t=21807yD
Не автоматом, но одним кликом
Vova вне форума  
 
Непрочитано 28.12.2006, 03:28
#3
PL


 
Регистрация: 23.11.2006
California
Сообщений: 4,750


команда find будет удобней в этом случае
PL вне форума  
 
Непрочитано 28.12.2006, 03:46
#4
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Если ACAD 2005 (насчет более ранних не помню) и выше, можно сделать полем. При редактировании текста нажать правую кнопку -> Вставить поле... -> Объект -> /выбрать объект/ -> Свойство: Содержимое. Но это долго и нудно. Лучше программно

Код:
[Выделить все]
Sub TextField()
    Dim tobj1 As AcadText, tobj2 As AcadText
    On Error Resume Next
    Do
        Err.Clear
        ThisDrawing.Utility.GetEntity tobj1, p1
        tobj1.Highlight True
        If Err.Number = -2147352567 Or Err.Number = 13 Then Exit Do
        FldStr = "%<\AcObjProp Object(%<\_ObjId " & tobj1.ObjectID & ">%).TextString>%"
        ThisDrawing.Utility.GetEntity tobj2, p1
        tobj1.Highlight False
        tobj2.TextString = FldStr
    Loop Until Err.Number = -2147352567 Or Err.Number = 13
End Sub
Тыкнуть исходный текст, потом целевой

или

Код:
[Выделить все]
Sub TextFieldMulty()
    Dim tobj1 As AcadText, tobj2 As AcadText, Sset As AcadSelectionSet, Entry As AcadEntity
    Dim ft(0) As Integer, fd(0) As Variant
    ThisDrawing.Utility.GetEntity tobj1, p1
    tobj1.Highlight True
    FldStr = "%<\AcObjProp Object(%<\_ObjId " & tobj1.ObjectID & ">%).TextString>%"
    For Each Sset In ThisDrawing.SelectionSets
        If Sset.Name = "TxtFld" Then Sset.Delete: Exit For
    Next
    Set Sset = ThisDrawing.SelectionSets.Add("TxtFld")
    ft(0) = 0: fd(0) = "Text"
    Sset.SelectOnScreen ft, fd
    tobj1.Highlight False
    For Each Entry In Sset
        Set tobj2 = Entry
        tobj2.TextString = FldStr
    Next
End Sub
Один текст сразу на несколько других текстовых объектов.

При изменении исходного текста после регенерации, сохранения, перед печатью и т. д. (настраивается в Настройках) автоматически будет меняться и поле.
den001 вне форума  
 
Непрочитано 28.12.2006, 04:07
#5
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Ну что вы человеку даете код на VBA вы думаете он так сразу и разберется с этим.
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 28.12.2006, 06:22
#6
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Если строки должны быть абсолютно одинаковые, то можно из одной строки создать обычный блок и скопировать его нужное число раз. При редактировании текста в редакторе блоков текст меняется сразу во всех блоках.
Profan вне форума  
 
Непрочитано 03.01.2007, 00:07
#7
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Цитата:
Сообщение от DEM
Ну что вы человеку даете код на VBA вы думаете он так сразу и разберется с этим.
Ну, если идея с полем понравится - спросит, расскажем, покажем. Там все просто. :wink:
Я такими полями часто пользуюсь, удобно
den001 вне форума  
 
Непрочитано 03.01.2007, 02:07
#8
Dym


 
Регистрация: 27.09.2005
Двинскъ
Сообщений: 586
Отправить сообщение для Dym с помощью Skype™


Цитата:
так вроде недавно об том же писали - можно делать БЫСТРЫЙ ВЫБОР по СОДЕРЖИМОМУ и в свойствах прописать нужное. от FIND ловчее контролем. ну я так думаю. как чайник.
пардон, эт меня на ЛТ подклинивает, я в ней обычно группой из простых текстов пользуюсь
Dym вне форума  
 
Непрочитано 03.01.2007, 02:35
#9
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Быстрый быбор - вещь хорошая! Но есть вещи лучше.
Вот живой пример использования полей для облегчения жизни. Куча однотипных схем, меняется только нижняя часть. Прибор сделан блоком, номер - атрибутом на скрытом слое, а все обозначения - поля, связанные со значенем атрибута. Маркировка приборов делается автонумом с сортировкой по X за полсекунды (я его тут где-то выкладывал). Потом сохранение или регенерация - и схема готова. Ссылки на листы - по такому же принципу (на этот случай тоже прога есть) 8) Единственное, когда полей много, они перегружают машину при обновлении, приходится сбрасывать их обратно в текст (опять же своей прогой) :roll: Когда все это отлажено - не работа, песня! Так что, если кто заинтересуется, могу выложить.
[ATTACH]1167780946.dwg[/ATTACH]
den001 вне форума  
 
Непрочитано 03.01.2007, 02:48
#10
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Собственно, вот оно.
LinkToSheet нужен текст или мтекст со строкой "лист ", после которой стоит номер листа, № или # и штамп (собственно, любой блок) с атрибутом (если их несколько, то работает первый).
[ATTACH]1167781738.rar[/ATTACH]
den001 вне форума  
 
Непрочитано 03.01.2007, 22:13
#11
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


2den001
Полностью, согласен насчет полей, но вот есть некоторые проблемки точнее одна но очень большая
и состоит она в следующем: я очень общирно использую поля (проектирую КЖ), причем таким образом, что все надписи альбома КЖ, сводятся в таблицы управления, (таблички из line and dtext) с их помощью можно менять практически все текстовые надписи в альбоме, перенумеровывать позиции амирования, перенумеровывать листы альбомы, для перекомпановки и т.д. в результате НЕОБХОДИМЫМ условием нахождение всего альбома в одном файле, при моем стиле черчения приемлем файл весом до 1.5 мегабайта. Нужно развязаться с одного файла на несколько, и создвать более маленькие файлы.
У тебя есть такая проблема и ты как нибудь решал ее?
Sleekka вне форума  
 
Непрочитано 04.01.2007, 19:35
#12
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


2den001
1) в приложеном файле первый макрос на превращение текста из полей на соответствующий текст.
В нем и в LinkToSheet вызывается нигде не определенная процедура
ClearSelectionSets
в итоге макрос по большому счету не работает, не могли бы выложить и эту процедуру, для полного счастья раз уж она нужна.
Sleekka вне форума  
 
Непрочитано 05.01.2007, 01:30
#13
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


2Sleekka
Между файлами поля связываются из рук вон плохо. В поле (если мы говорим о значении текста) есть ссылка на т.н. ObjectID, т.е. идентификационный номер объекта в базе AutoCADа. По результатам исследований, при создании поля в другом файле при открытом исходном все нормально, поле отслеживается. Если закрыть ACAD, и открыть эти файлы в правильной последовательности, т.е. сначала исходный, где сам объект, затем тот, где поле - ссылка на исходный объект, то все опять же работает. Но если открыть второй файл без первого, то все поля летят. Поэтому я для себя определил четко - с полями работать только в пределах одного файла. Кстати, только что выложил в Download хорошую вещь, TextDuplicate, там есть и работа с полями. И FieldToText тоже. Правда пока они еще на полдороги, проходят проверку.

За ClearSelectionSets очень извиняюсь, недоглядел. Всегда такая фигня, когда из модуля начинаешь процедуры выдергивать. Вот последняя версия, теперь, кстати, и с атрибутами работает.
[ATTACH]1167949835.rar[/ATTACH]
den001 вне форума  
 
Непрочитано 05.01.2007, 02:14
#14
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


TextDuplicate ("Довольно мощный копировщик...") и FieldToText доступны в Download. Прошу.
Будут замечания - пишите.
den001 вне форума  
 
Непрочитано 06.01.2007, 01:56
#15
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


1) Отличная программа, огромное спасибо.
2) Может в даунлоде кинуть ссылочку: типа обсуждаем здесь в этой теме?
3) Возникает такой вопрос, в рамках так сказать расширения документации помимо той, что выложена в даунлоде: Связанный файл, отличается от Другой файл, только тем что связаный не надо постоянно указвать? И все?
4) Мою проблему с табличками управления программа почти решила, я уже обрадовался, дак нет: при вызове копирования из файла в файл, в исходном наборе текстов присутствовало поле (разумеется ссылающееся на др текст в этом файле), и во второй файл скопировалось тоже полем причем ссылающееся на другой файл, результат понятен. Может разумнее сделать при копировании из файла в файл, копировать значение текста, а не формулу поля? Можно конечно сразу филд_ту_текст делать, и обойтись, еще раз спасибо и за него, тут в соседней теме пытались на лиспе соорудить field_to_text в итоге ничего законченого так и не получилось, заглохло.
Sleekka вне форума  
 
Непрочитано 06.01.2007, 08:03
#16
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


3) Да, Другой файл отличается только тем, что его нужно каждый раз выбирать. Это сделано, чтобы не связывать каждый раз с второстепенным файлом. Вообще это правильнее было назвать не файл, а документ или чертеж, но "файл" короче
4) Вполне согласен. Просто сам не столкнулся с этим. Можно сделать так, чтобы между двумя документами копировалось не поле, а только строка. Покопаюсь, только не сейчас. Меня пару дней не будет.
den001 вне форума  
 
Непрочитано 07.01.2007, 22:11
#17
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Сделал, чтобы между двумя документами копировалось не поле, а только текст. Спасибо за замечание. Обновление в Download.
Пользуйтесь. Если что не так, пишите.
den001 вне форума  
 
Непрочитано 07.01.2007, 22:54
#18
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Тебе спасибо.
Sleekka вне форума  
 
Непрочитано 07.01.2007, 23:18
#19
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Маленько подправил FieldToText. Я по привычке сделал преобразование в текст только первого атрибута блока (TextDuplicate только с первым атрибутом работает), а сейчас подумал, а оттчего бы не сделать и остальные. Мало ли, кому пригодится. Обновление в Download.
den001 вне форума  
 
Непрочитано 10.01.2007, 22:56
#20
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


И снова привет.
Честно говоря детально не тестировал, но есть пожелание:
1) есть задача установить поле в Mtext ссылающееся на text, для этих целей хотелось бы на основе чтобы исходный текст формировался в поле и вся эта китайская грамота отправлялась в буфер, тогда потом можно будет вставить это дело в Mtext.
2) Как текст дапликатор работает только с первым атрибутом, а я из сопроводительной документации понял, что с выбранным, а если не выбран то с первым.
3) Щас у меня работа пойдет через недельку я оттестирую как следует, замучаесся править =)
Sleekka вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Одновременное редактирование отдельных строк текста

Размещение рекламы