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

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

31.01.2022, 17:52. Показов 6359. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru