Форум программистов, компьютерный форум, киберфорум
AutoLISP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.74/27: Рейтинг темы: голосов - 27, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 31.01.2022
Сообщений: 11

Автоматизировать НАЙТИ И ЗАМЕНИТЬ текст

31.01.2022, 17:52. Показов 7448. Ответов 20

Студворк — интернет-сервис помощи студентам
Здравствуйте!

У меня есть

1. чертёж Автокад (с текстами на нём)...

2. файл Эксель, в котором 2 столбца:

Столбец 1:
текст, который, возможно, есть в чертеже (старый, который нужно заменить)
Столбец 2:
текст новый, который нужно подставить в чертёж вместо старого

(то есть, в строках файла - пара текстов: новый рядом со старым, в соседних ячейках)...

Я могу делать замену "вручную", запуская НАЙТИ и проставляя вручную эти тексты в поля диалогового окна,
но ситуация такая, что
хотелось бы что-то сделать для автоматизации рутинного процесса: или скрипт (сценарий), или ЛИСП-программу.
...
Я потратил пару дней, чтобы найти что-то полезное для решения этой задачи в инете,
но не нашёл,
то есть, например,
для написания скрипта/сценария нужно отключить диалоговое окно, да?
а как?
а в ЛИСПе как это делается?

Вот, обращаюсь к общественности:
хотя бы где искать инфу, нужную для решения этой задачи?
имхо, такая программа была бы полезна многим пользователям, не мне одному.

Непонятно, почему она не лежит в инете на видном месте?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.01.2022, 17:52
Ответы с готовыми решениями:

Дан текст. Найти самое короткое слово, заменить его словом «вот!». В остальных словах текста заменить
его словом «вот!». В остальных словах текста заменить первые символы на «вот!», оставшиеся символы – не изменять. Решите пожалуйста задачку.

Найти/заменить текст
Использую FindDialog и ReplaceDialog. Для замены через ReplaceDialog такой код: procedure TForm1.ReplaceDialog1Replace(Sender:...

Найти и заменить текст в картинке
Всем добрый день. Подскажите, пожалуйста, метод или какую-нибудь библиотеку в питоне, с помощью которой можно найти по регексам...

20
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
06.10.2024, 22:09
Студворк — интернет-сервис помощи студентам
Мне не нравится работать с Excel напрямую из AutoCAD, поэтому я использую XML, который затем открывается в Excel.
Ради эксперимента можно попробовать.
Странно что вы не находите, в поисковике всё ищется прям отлично.

1. Создадим файл Excel для тестирования.
2. Заполним две первые колонки значениями, скажем на 20 строк.
Суть в том чтобы заменить содержимое первой колонки на вторую.
3. Закрываем файл и приложение Excel.

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
;; Обернём код для удобства.
((lambda  (/ fPath excelApp workbook sheet cell cellValue data) 
 
  ;; Построчный ввод начинаем отсюда.
  (vl-load-com)
 
  ;; "xls", "xlsx"
  (setq fPath (getfiled "Выберите файл Excel" (getvar "dwgprefix") "" 16))
 
  ;; Создание объекта Excel
  (setq excelApp (vlax-get-or-create-object "Excel.Application"))
  (vlax-put-property excelApp 'Visible :vlax-false)
  (setq workbook (vlax-invoke-method (vlax-get-property excelApp 'Workbooks) 'Open fPath))
 
  ;; Получение первого листа
  (setq sheet (vlax-get-property (vlax-get-property workbook 'Sheets) 'Item 1))
 
  (vlax-invoke-method sheet 'Activate)  ; не обязательно
 
" 4. Подготовили документ, теперь поработаем с ним. "
 
  ;; Чтение данных из одной конкретной ячейки.
  ;; Здесь проблем возникнуть не должно, нужно только следить за типом возвращаемых значений.
  (setq cell (vlax-get-property sheet 'Range "A1"))
  (setq cellValue (vlax-get-property cell 'Value))
  (setq data (vlax-variant-value cellValue))
 
" 5. Если всё получится с одной ячейкой, то работаем с диапазоном. "
 
;; Просмотр диапазона ячеек, в колонке A. Например первые 20 ячеек в диапазоне A1:A20
((lambda (/ i cell-number cell cellValue data)
  (setq i 0)
  (repeat 20
    (setq i (1+ i))
    (setq cell-number (strcat "A" (itoa i)))
    (setq cell (vlax-get-property sheet 'Range cell-number))
    (setq cellValue (vlax-get-property cell 'Value))
    (setq data (vlax-variant-value cellValue))
    (prompt (strcat "\nСодержимое ячейки " cell-number ": " (vl-princ-to-string data)))
  )))
 
" 6. А вот с добавлением данных в ячейку могут быть сложности.
     Я поиграл с несколькими методами добавления, у меня сработал такой: "
 
;; Использование Range
(vl-catch-all-apply 'vlax-put-property 
  (list (vlax-get-property sheet 'Range "A1") 'Value2 "Новое значение 1"))
 
" 7. Возможно ещё придётся следить за форматом ячеек и типами данных в них.
     Теперь заменим первую колонку из 20 ячеек на вторую. 
     У меня формат ячеек не изменился, а вот значения в них да. "
 
;; Замена диапазона ячеек.
((lambda (/ i cell-number cell cellValue data)
  (setq i 0)
  (repeat 20
    (setq i (1+ i))
    (setq cell-number (strcat "B" (itoa i)))
    (setq cell (vlax-get-property sheet 'Range cell-number))
    (setq cellValue (vlax-get-property cell 'Value))
    (setq data (vlax-variant-value cellValue))
  
" 8. TODO: здесь обозначить критерий замены значений ячеек для конкретного случая. "
    (vlax-put-property 
      (vlax-get-property sheet 'Range (strcat "A" (itoa i)))
      'Value2
      data)
  )))
 
  ;; Закрытие книги с сохранением изменений
  (vlax-invoke-method workbook 'Save)  ; явное сохранение
  (vlax-invoke-method workbook 'Close :vlax-true)
  ;; Закрытие приложения Excel
  (vlax-invoke-method excelApp 'Quit)
 
  ;; Освобождение объектов
  (vlax-release-object sheet)
  (vlax-release-object workbook)
  (vlax-release-object excelApp)
 
  (gc)
  (princ)
)) ;_end of function
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2024, 22:09

Найти и заменить текст в Word из Excel
Есть файл шаблон формата .dot и екселевский файл с макросом. Подскажите что там необходимо добавить, изменить, чтобы он пробегался по 2...

Найти и заменить текст между тегами
Добрый день, подскажите плиииз куда копать. <div> ЗАМЕНИ <div> НЕ ТРОГАТЬ </div> ЗАМЕНИ </div> надо: 1) найти "...

Word 2007: найти текст и заменить
Здравствуйте, помогите с макросом, найти текст допустим (собака, лось, волк, лиса и т. д.) и заменить на слово "зверь". Слов...

Найти и заменить текст (целый абзац)
Нужна помощь в написании батника. Задача такова есть море текста, но в нём надо заменить из другого файла абзац,не взирая на содержимое....

Найти файлы по маске и добавить в них указанный текст или заменить в них один указанный текст другим
Добрый день. Прошу помощи. Нужен универсальный батник для поиска файлов (текстовых) по маске и добавления в них указанного текста, без/с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru