|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Одновременное редактирование отдельных строк текста
Регистрация: 17.05.2006
Сообщений: 11
|
||
Просмотров: 9160
|
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
http://www.autocad.ru/cgi-bin/f1/board.cgi?t=21807yD
Не автоматом, но одним кликом |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Если ACAD 2005 (насчет более ранних не помню) и выше, можно сделать полем. При редактировании текста нажать правую кнопку -> Вставить поле... -> Объект -> /выбрать объект/ -> Свойство: Содержимое. Но это долго и нудно. Лучше программно
Код:
или Код:
При изменении исходного текста после регенерации, сохранения, перед печатью и т. д. (настраивается в Настройках) автоматически будет меняться и поле. |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Цитата:
Я такими полями часто пользуюсь, удобно |
|||
![]() |
|
||||
Цитата:
![]() |
||||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Быстрый быбор - вещь хорошая! Но есть вещи лучше.
Вот живой пример использования полей для облегчения жизни. Куча однотипных схем, меняется только нижняя часть. Прибор сделан блоком, номер - атрибутом на скрытом слое, а все обозначения - поля, связанные со значенем атрибута. Маркировка приборов делается автонумом с сортировкой по X за полсекунды (я его тут где-то выкладывал). Потом сохранение или регенерация - и схема готова. Ссылки на листы - по такому же принципу (на этот случай тоже прога есть) 8) Единственное, когда полей много, они перегружают машину при обновлении, приходится сбрасывать их обратно в текст (опять же своей прогой) :roll: Когда все это отлажено - не работа, песня! Так что, если кто заинтересуется, могу выложить. [ATTACH]1167780946.dwg[/ATTACH] |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Собственно, вот оно.
LinkToSheet нужен текст или мтекст со строкой "лист ", после которой стоит номер листа, № или # и штамп (собственно, любой блок) с атрибутом (если их несколько, то работает первый). [ATTACH]1167781738.rar[/ATTACH] |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
2den001
Полностью, согласен насчет полей, но вот есть некоторые проблемки точнее одна но очень большая и состоит она в следующем: я очень общирно использую поля (проектирую КЖ), причем таким образом, что все надписи альбома КЖ, сводятся в таблицы управления, (таблички из line and dtext) с их помощью можно менять практически все текстовые надписи в альбоме, перенумеровывать позиции амирования, перенумеровывать листы альбомы, для перекомпановки и т.д. в результате НЕОБХОДИМЫМ условием нахождение всего альбома в одном файле, при моем стиле черчения приемлем файл весом до 1.5 мегабайта. Нужно развязаться с одного файла на несколько, и создвать более маленькие файлы. У тебя есть такая проблема и ты как нибудь решал ее? |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
2den001
1) в приложеном файле первый макрос на превращение текста из полей на соответствующий текст. В нем и в LinkToSheet вызывается нигде не определенная процедура ClearSelectionSets в итоге макрос по большому счету не работает, не могли бы выложить и эту процедуру, для полного счастья раз уж она нужна. |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
2Sleekka
Между файлами поля связываются из рук вон плохо. В поле (если мы говорим о значении текста) есть ссылка на т.н. ObjectID, т.е. идентификационный номер объекта в базе AutoCADа. По результатам исследований, при создании поля в другом файле при открытом исходном все нормально, поле отслеживается. Если закрыть ACAD, и открыть эти файлы в правильной последовательности, т.е. сначала исходный, где сам объект, затем тот, где поле - ссылка на исходный объект, то все опять же работает. Но если открыть второй файл без первого, то все поля летят. Поэтому я для себя определил четко - с полями работать только в пределах одного файла. Кстати, только что выложил в Download хорошую вещь, TextDuplicate, там есть и работа с полями. И FieldToText тоже. Правда пока они еще на полдороги, проходят проверку. За ClearSelectionSets очень извиняюсь, недоглядел. Всегда такая фигня, когда из модуля начинаешь процедуры выдергивать. Вот последняя версия, теперь, кстати, и с атрибутами работает. [ATTACH]1167949835.rar[/ATTACH] |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
1) Отличная программа, огромное спасибо.
2) Может в даунлоде кинуть ссылочку: типа обсуждаем здесь в этой теме? 3) Возникает такой вопрос, в рамках так сказать расширения документации помимо той, что выложена в даунлоде: Связанный файл, отличается от Другой файл, только тем что связаный не надо постоянно указвать? И все? 4) Мою проблему с табличками управления программа почти решила, я уже обрадовался, дак нет: при вызове копирования из файла в файл, в исходном наборе текстов присутствовало поле (разумеется ссылающееся на др текст в этом файле), и во второй файл скопировалось тоже полем причем ссылающееся на другой файл, результат понятен. Может разумнее сделать при копировании из файла в файл, копировать значение текста, а не формулу поля? Можно конечно сразу филд_ту_текст делать, и обойтись, еще раз спасибо и за него, тут в соседней теме пытались на лиспе соорудить field_to_text в итоге ничего законченого так и не получилось, заглохло. |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
3) Да, Другой файл отличается только тем, что его нужно каждый раз выбирать. Это сделано, чтобы не связывать каждый раз с второстепенным файлом. Вообще это правильнее было назвать не файл, а документ или чертеж, но "файл" короче
![]() 4) Вполне согласен. Просто сам не столкнулся с этим. Можно сделать так, чтобы между двумя документами копировалось не поле, а только строка. Покопаюсь, только не сейчас. Меня пару дней не будет. |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Маленько подправил FieldToText. Я по привычке сделал преобразование в текст только первого атрибута блока (TextDuplicate только с первым атрибутом работает), а сейчас подумал, а оттчего бы не сделать и остальные. Мало ли, кому пригодится. Обновление в Download.
|
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
И снова привет.
Честно говоря детально не тестировал, но есть пожелание: 1) есть задача установить поле в Mtext ссылающееся на text, для этих целей хотелось бы на основе чтобы исходный текст формировался в поле и вся эта китайская грамота отправлялась в буфер, тогда потом можно будет вставить это дело в Mtext. 2) Как текст дапликатор работает только с первым атрибутом, а я из сопроводительной документации понял, что с выбранным, а если не выбран то с первым. 3) Щас у меня работа пойдет через недельку я оттестирую как следует, замучаесся править =) |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
1) Не совсем понял. Можно же поставить "Поле", выбрать в исходном текст, в конечном мтекст - и все будет. Или, если очень нужно вставить в мтекст, можно сделать промежуточный текстовый объект полем, скопировать его в буфер, и вставлять повсюду.
2) Только с первым (который определен первым). При выборе объектов нельзя выбрать атрибут, только блок. А где там сортировать, сколько в нем атрибутов, и сколько из них нужно менять. Можно, конечно, пробежаться по всем, но у меня больше одного очень редко бывает и так было удобнее. Оно и логичнее, копируются, как правило, однотипные значения, а несколько атрибутов в блоке обозначают чаще разные вещи. 3) Да куда ж его еще править? :shock: Он и так достиг уже апогея, по-моему. Ты бы видел, с чего он начинался. Баги, конечно, повыловлю, а раздувать его уже, кажись, некуда... |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Если будешь тестировать, Number тогда уж погоняй, он там рядом лежит. Тоже вещь очень нужная. Я (да и не только я) без Number'a и TextDuplicate жизни уже не представляю. Number избыточен, конечно, маленько, но так уж исторически сложилось.
|
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
Цитата:
|
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
2den001
1) Можно ли убрать regenall после вставки поля в атрибут блока? 2) после копирования полей в виде суффикса к текстовому примитиву, в котором уже содержались поля, они превращаются в текст, как человек чуток знакомый с программированием, я понимаю что это достаточно сложно если конечно в вба не обнаружатся спецфункции, но факт есть факт, для чистоты нужно либо поправить либо сделать невозможность использования данной комбинации действий. |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Sleekka
1) Убрать-то regenall, конечно, можно, но он там неспроста. Дело в том, что если поле копируется в атрибут, то до регенерации оно отображается в виде ## 2) Тут я тебя не понял... Гонял в любых сочетаниях - все работает. :? У тебя какой ACAD ? Я там чего-то менял, попробуй еще раз качнуть. Может, получится. |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
2den001
1) Да я прекрасно понимаю что неспроста и понимаю зачем, для себя то я и сам уберу (программа ведь в исходниках, без каких либо соглашений), я просто о юзерах забочусь, НЕ ФАКТ что наличие регена 100% полезно, мне например вредно. 2) А может еще раз потестишь, в первом боксе - вкл. поле, во втором - флаг на выноска и несколько, в третьем вкл. несколько. и получается в итоге то о чем я говорил выше в предыдущем посте. |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Sleekka
Ну и в глубины же ты залез! ![]() Подправил, держи. Одна оговорка все же остается: для атрибутов все как было, не смог я из него, подлеца, вытащить формулу поля, ну нет у него свойства FieldCode, непонятно, почему., Кстати, если кто сталкиватся с такой проблемой, расскажите, очень интересно: как из атрибута программно вытащить формулу поля? [ATTACH]1171059332.rar[/ATTACH] |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
Я ламер полный поэтому просьба сильно не пинать за догадки:
вот тут написано в части таблиц http://dwg.ru/forum/viewtopic.php?p=82584#82584 я думаю что структура хранения всех филдов в dwg формате состоит в том что они хранится в каком то системном блоке а функции ВБА которые ты используешь для получения филда содержащегося в тексте и реализуют обращение к нему, а для атрибутов наверно забыли сделать, так что не знаю что с этим делать, если не накопаешь ничего просьба, отрубить сию возможность, неприятно будет потерять поле незаметив того что оно потерялось. |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Sleekka
На данный момент могу предложить три выхода: 1) Отрубить создание полей в атрибутах вообще 2) Обрубить режим Префикс/Суффикс для атрибутов 3) В режиме Префикс/Суффикс при наличие в наборе атрибутов вывешивать предупреждение, дескать, "Смотрите, дорогие, внимательно, как бы чего не вышло". Последнее мне представляестя все же более рациональным, первые два терять жалко. С полями в атрибутах, конечно, покопаюсь, но у меня дурные предчувствия. Похоже на недоделку разработчиков. Как проверить несуществующее свойство объекта, я, хоть убей, не знаю. |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
Согласен что жалко, но не думаю что ситуация безвыходная.
Открыв Полещука АСАD 2005 поле> для программиста читаю: Цитата:
Попробуй глянуть этот словарь в объектной модели, мне кажется что найдутся методы и свойства, и получится извлечь филд для атрибута. LISP с филдами тоже только через объектную модель работает, если тему подержать то может лисперы заглянут да подскажет, по-моему ето тоже самое, только на другом языке. Если не получится тогда вариан 2 идеалогически правильный. [/quote] |
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
Sleekka
Убрал Префикс/Суффикс из атрибутов. Проверь, а то я сегодня что-то в тумане, устал за неделю. В Downloade осталась прежняя версия, я только подправил ее маленько, а то вчера наламерил там сгоряча. [ATTACH]1171121244.rar[/ATTACH] |
|||
![]() |
|
||||
Проектирование м/к, конструктор Регистрация: 10.02.2007
Санкт-Петербург
Сообщений: 7
![]() |
Так это, вроде как, просто... Выделяешь тот текст, что изменить нужно, затем открываешь "Свойства", ищешь там раздел "Текст" и в строчке "Контекст" пишешь то, что нужно. Текст поменяешь везде одновременно. =)
|
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
беспечный_Ангел
Ты хоть читаешь ветку иль ты блин увидев вопрос тут же отвечаешь на него, не вникая в суть вопроса.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
Цитата:
А ваще если честно, то ето я с другого ИП с другим ником заходил чтобы теме не дать утонуть. ЗЫ: ШЮТКА!!! |
|||
![]() |
|
||||
Проектирование м/к, конструктор Регистрация: 10.02.2007
Санкт-Петербург
Сообщений: 7
![]() |
Цитата:
|
|||
![]() |
|
||||
Инженер по автоматизации (строительство) Регистрация: 05.05.2006
Люберцы
Сообщений: 241
|
беспечный_Ангел
Способ Вы предложили замечательный, но задача несколько иная ![]() |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
2 беспечный ангел
Все конечно хорошо. Но нужно внимательно! читать вопрос. Цитата:
вы это видите? вы предложили менять контент всех строк махом, раскажите мне по какому принципу, вы найдете все эти строки и выделите, как это предполагает ваш способ, если вам не понятна эта простая вещь, которую я описал, то не мешайте пожалуйста рыть носом землю. ЗЫ: если б стояла задача для чертежа в котором всего пять объектов и все dtext-ы, никто бы тему не поднял Ну ладно, вопрос непонял, ну ладно ответил, никто слова не сказал, просто поржали и все, дак надо еще доказывать, что неправильное понимание вопроса - есть правильное, мы сами не дальтоники и можем, черное отличить от белого, точно также как и можем сами решить как управлять текстом в Автокаде |
|||
![]() |