|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как выглядит программно на VBA автозамена текста в автокаде
Регистрация: 11.01.2010
Сообщений: 41
|
||
Просмотров: 8121
|
|
||||
Регистрация: 21.02.2009
Сообщений: 825
|
Тут не так...
Смотри: AcadSelectionSet AcadText AcadMtext Ну и если нужно в атрибутах блоков и в табличках ковыряться то ещё и всё связанное с ними. Вобщем просмотри сначала объектную модель... Мне кажется в downloade есть куча всяких макросов - поковыряйся в них
__________________
Я-проектировщик бывший проектировщик! |
|||
![]() |
|
||||
если в кодописательстве не силён, то чем не устроила стандартная команда _find?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Offtop: Вот это самый мощный вопрос в разделе программирование
Это язык программирования, диалект которого встроен в автокад (самый первый и существует до сих пор - в отличие от VBA, которого уже там, но опционально загрузить еще можно).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
ага... vba, я не спец... но надеюсь разберешься... и еще... на форуме caduser.ru - целая ветка про VBA... там помогут быстрее...
код #6 я писал минут 10... с оговорками он рабочий... просто, я не понимаю, чем хуже стандартный _.find |
|||
![]() |
|
||||
Регистрация: 11.01.2010
Сообщений: 41
|
gomer спасибо попробую там тоже задать этот вопрос. А лиспом я просто вообще не пользовался, попробовал открыть редактор лисп, открыл новый файл, вставил туда твой код, а дальше как его запустить?
Вообще моя цель запустить все это из VB 2010, так что бы забивал новый текст, который необходимо исправить и он открывал все файлы по всем разделам производил автозамену, переводил в пдф, сохранял и закрывал. С вордовскими файлами у меня все работает, осталось разобраться с автокадовскими... Последний раз редактировалось staer, 01.09.2011 в 15:44. |
|||
![]() |
|
||||
Регистрация: 11.01.2010
Сообщений: 41
|
Цитата:
_$ ; ошибка: слишком много аргументов: (IF (AND (SETQ OLDSTR (GETSTRING T "111")) 4 (SETQ NEWSTR (GETSTRING T "222")) 5 (SETQ SS (SSGET (LIST (QUOTE (0 . "*TEXT"))))) 6) 7 (PROGN 8 (VLA-STARTUNDOMARK 9 (SETQ I 0 10 ADOC (VLA-GET-ACTIVEDOCUMENT (VLAX-GET-ACAD-OBJECT)) 11) 12) 13 (REPEAT (SSLENGTH SS) 14 (WHILE 15 (WCMATCH (VLA-GET-TEXTSTRING 16 (SETQ 17 EN 18 (VLAX-ENAME->VLA-OBJECT (SSNAME SS I)) 19) 20) 21 (STRCAT "*" OLDSTR "*") 22) 23 (VLA-PUT-TEXTSTRING 24 EN 25 (VL-STRING-SUBST NEWSTR OLDSTR (VLA-GET-TEXTSTRING EN)) 26) 27) 28 (SETQ I (1+ I)) 29) 30 (VLA-ENDUNDOMARK ADOC) 31) 32) _$ а на replacestr пишет что такой команды не существует... |
|||
![]() |
|
||||
Регистрация: 11.01.2010
Сообщений: 41
|
gomer, спс все заработало
![]() П.С. gomer, а ты сможешь написать программку, разумеется за деньги, что бы она делала то же самое как я описал для вордовских файлов, желательно на VB2010? |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Если во всем четреже - подразумевается во всей модели - то замени строку (setq ss (ssget (list '(0 . "*TEXT")))) на (setq ss (ssget "_a" (list '(0 . "*TEXT")))), если чтоб еще в листах, блоках и т.д. - надо "поколдовать" побольше (хотя подобные темы с реализациями уже точно были).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Регистрация: 11.01.2010
Сообщений: 41
|
Дима__ спасибо, работает. да конечно надо еще и в листах и в блоках.
Но вообще я хотел сделать это все на VBA что бы потом перенести в VB2010, откуда я смогу производить автозамену сразу в нескольких файлах. А в данном варианте пока что практической пользы нет, т.к. это всего лишь заменяет стандартную автозамену... |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
staer, попробуй так. Заменит указанный текст во всех файлах в указанной папке(только в самой папке, но не во вложенных)
Код:
__________________
cadtools |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Выравнивание текста по двум точкам. | Krieger | Готовые программы | 10 | 24.12.2011 16:02 |
Подскажите компонент поля ввода текста (для VBA) | kp+ | Программирование | 7 | 09.02.2010 22:03 |
VBA в 2010 автокаде не дожидается завершения предыдущей команды | NomadV | Программирование | 2 | 13.11.2009 22:30 |
Некорректное отображение курсора при создании однострочного текста под углом в 2009 Автокаде | Tannik | AutoCAD | 2 | 16.04.2009 11:48 |
Существуют ли стандартные коммнады в автокаде для работы внутри текста? | Composter | Программирование | 6 | 12.11.2008 12:48 |