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

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

Автоматическое именование вставленных фотографий

Ответ
Поиск в этой теме
Непрочитано 10.07.2024, 14:30 #1
Автоматическое именование вставленных фотографий
Dimchiko
 
Руководитель проектов в строительстве
 
Москва
Регистрация: 17.02.2005
Сообщений: 88

Камрады! Аймвериглэдтусиё!

Можно ли по аналогии с Солид Ворксом именовать вставленные фотографии, указывая их название?
Что имею ввиду?
В солиде, при создании чертежа из сборки можно вставлять примечания (инструмент "вставка позиции"), указывая курсором на какую-либо деталь в сборке и солид сам понимает, что это деталь N и указывает в выноске "деталь N". И так далее, кликая на новую деталь - на чертеж добавляется примечание, что это - деталь M. и так далее - все детали.

В автокаде у меня много вставленных фото. У каждого - дурацкое название. Название не поменять, т.к. оно имеет "сакральный смысл". Короче - не поменять.
882401-8_3-1_03
882401-4_3-2_11
882401-8_3-1_01
882401-8_3-1_07
882401-8_3-1_08
882401-8_3-1_05
882401-8_3-1_06
882401-4_3-2_10
882401-8_3-1_05
882401-3_5-1_06
882401-4_3-2_08
882401-4_3-2_12
882401-4_3-2_05
882401-4_3-2_07
882401-4_3-1_12
882401-4_3-2_04
882401-8_3-2_08
882401-8_3-2_09
882401-8_3-2_06
882401-8_3-2_07
882401-8_3-2_12
882401-4_3-2_09
882401-8_3-2_10
882401-8_3-2_11
882401-8_3-2_05
882401-8_3-1_11
882401-8_3-1_12
882401-8_3-1_09
882401-8_3-1_10
882401-8_3-2_03
882401-8_3-2_04
882401-8_3-2_01
882401-8_3-2_02

Пока что - картинки именуем вручную, но это долго, т.к. путаемся. Задача - постоянная, не разовая. Новый проект, новый участок работ - новые фотографии.
Можно ли как-то ускорить процесс?
ЗЫ: нашел вариант именования картинок через вставку поля, но это неудобно и не быстрее по факту. Хотя ошибки практически исключены.
__________________
С уважением

Последний раз редактировалось Dimchiko, 10.07.2024 в 22:44.
Просмотров: 2039
 
Непрочитано 10.07.2024, 15:36
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Я такое делал
trir вне форума  
 
Автор темы   Непрочитано 10.07.2024, 21:57
#3
Dimchiko

Руководитель проектов в строительстве
 
Регистрация: 17.02.2005
Москва
Сообщений: 88
Отправить сообщение для Dimchiko с помощью Skype™


Цитата:
Сообщение от trir Посмотреть сообщение
Я такое делал
немного непонятно....КАК?)
__________________
С уважением
Dimchiko вне форума  
 
Непрочитано 11.07.2024, 07:06
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Цитата:
КАК?)
c#
trir вне форума  
 
Непрочитано 11.07.2024, 07:47
#5
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от Dimchiko Посмотреть сообщение
ЗЫ: нашел вариант именования картинок через вставку поля, но это неудобно и не быстрее по факту. Хотя ошибки практически исключены.
"Вставку поля" - это как, куда?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 11.07.2024, 09:34
#6
name02


 
Регистрация: 10.01.2020
Сообщений: 415


Полазив по интернету нашел что-то похожее и произвел на свет вот такую штуку:
Код:
[Выделить все]
 ;;Программа для переименования внешних ссылок растровых изображений в документе
;;|Для работы нужен файл .CSV следующего содержания:
 - в первом столбце название файла без расширения
 - во втором - новое название изображения в документе
 
 Для запуска программы набрать 
	RENAMEIMAGES_FROMLIST

Выбираешь в диалоговом окне нужный файл соответствия имени файла и изображения
После выполнения программы, для обновления имен в диспетчере внешних ссылок, перезагрузить файл чертежа автокада
 
|;
(defun c:RENAMEIMAGES_FROMLIST (/ init_folder file_name txt_list)

  ;;Имя папки с которой начинать выбор файла (можно поменять)
  (setq	init_folder
	 "C:\\"
  ) ;_ END_OF setq

  ;;Открываем окно для выбора файла с именами файлов и соответствующими именами картинок
  (if (setq file_name (getfiled "Выбор файла..." init_folder "csv" 0))
    (progn (setq txt_list
		  (mapcar '(lambda (x)
			     (cons (car x) (cadr x))
			   ) ;_ END_OF lambda
			  (PutFileToList file_name 1 ";")
		  ) ;_ END_OF mapcar
	   ) ;_ END_OF setq

	   (renameallimages)
    ) ;_ END_OF progn

  ) ;_ END_OF if

  (princ)

) ;_ END_OF defun


;;;-------------------------------------------------------------------------------
;;;	Запись содержимого файла в список. Содержимое файла считывается построчно
;;;-------------------------------------------------------------------------------
;;; strfrom 	- [STR] - строка с именем файла
;;; start-str - [INT] - номер строки, с которой начинается чтение файла
;;; dividers	- [STR] - строка, содержащая знаки, воспринимаемые в качестве разделителей
;;;
;;; Возвращает список [LST] из списков [LST]


;;;	Результат - [LST]:	(("A0" "840" "1188") ("A0x2" "1680" "1188") ("A0x3" "2520" "1188"))
;;;--------------------------------------

(defun PutFileToList (strfrom start-str dividers / f fk a aa)

  ;; проверка существования файла
  (setq f (findfile strfrom))

  ;; если существует
  (if (/= f nil)

    (progn
      ;; открытие существующего файла
      (setq fk (open strfrom "r")
	    ;;файл для чтения
	    a  ""
	    ;;строка файла
	    a1 (list)
	       ;;разделенная строка
      ) ;_ END_OF setq


      (repeat start-str
	(setq a (read-line fk))
      ) ;_ END_OF repeat


      ;; цикл с проверкой конца файла
      (while (/= a nil)
	(setq a1 (str-str-lst a dividers))

	(setq a1
	       (mapcar '(lambda	(x / b)
			  (setq b x)
			  ;;если первый знак в строке кавычки - берем остаток строки
			  (setq	b
				 (cond
				   ((not (= b ""))
				    ;;Убираем кавычки в начале строки
				    (setq b (if	(= (substr b 1 1) "\"")
					      (substr b 2)
					      b
					    ) ;_ END_OF if
				    ) ;_ END_OF setq
				    ;;если последний знак " - берем строку до него
				    (setq b (if	(= (substr b (strlen b) 1) "\"")
					      (substr b 1 (- (strlen b) 1))
					      b
					    ) ;_ END_OF if
				    ) ;_ END_OF setq
				    ;;Убираем двойные кавычки
				    (setq b (dwgru-string-replace b "\"\"" "\""))
				    ;;Убираем переносы строк (если нужно)
				   )
				   (T b)
				 ) ;_ END_OF cond
			  ) ;_ END_OF setq

			) ;_ END_OF lambda
		       a1
	       ) ;_ END_OF mapcar
	) ;_ END_OF setq

	;; добавление элемента в список
	(setq aa (append aa (list a1)))
	;; чтение следующего
	(setq a (read-line fk))
      ) ;_ END_OF while


      ;; закрытие файла
      (close fk)

    ) ;_ END_OF progn
  ) ;_ END_OF if

;;; возвращение данных в основную программу
  aa
) ;_ END_OF defun

;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2007  DWGru Programmers Group
;;; *
;;; * dwgru-string-replace
;;; *
;;; * 03/12/2007 Версия 0001.  Сергей Зуев   (ShaggyDoc)
;;; ************************************************************************

(defun dwgru-string-replace (string old_substr new_substr / pos)
;;;    Функция замены вхождений подстроки (old_substr) в исходную строку (string) на новые (new_substr).
;;;    Регистрозависимо
;;;    Параметры вызова:
;;;	string		исходная строка
;;;	ols_substr	старая подстрока
;;;	new_substr	новая подстрока  
;;; Возврат:
;;;   строку (String)

;;;* Формат вызова:
;;;* (dwgru-string-replace "ИСХОДНАЯ СТРОКА" "СТАРАЯ ПОДСТРОКА" "НОВАЯ ПОДСТРОКА")
;;;* Принимает три аргумента типа 'STR передача аргументов другого типа приводит к ошибке.
;;;* Возвращает строку с заменой всех вхождений старой подстроки в исходной строке на новую.
;;;* Чувствительна к регистру символов. Проверка корректности аргументов не проводится.
;;;* Пример:
  ;|  
 (dwgru-string-replace "Здесь были ВаВася и ВаВаВаня. Вася" "Ва" "Бу") ;_Результат   "Здесь были БуБуся и БуБуБуня. Буся"
 (dwgru-string-replace "1  2       3" "  " " ") ;_Результат  "1 2 3"
|;
  (while (setq pos (vl-string-search old_substr string))
    (setq string
	   (strcat
	     (substr string 1 pos)
	     new_substr
	     (dwgru-string-replace
	       (substr string (+ (strlen old_substr) pos 1))
	       old_substr
	       new_substr
	     ) ;_ end of ru-string-replace
	   ) ;_ end of strcat
    ) ;_ end of setq
  ) ;_ end of while
  string
) ;_ end of defun



;|
* Ф-ция str-str-lst
* Сервисная ф-ция извлечения из строки данных, разделенных
* каким либо символом или строкой символов
* Возвращает список строк
* Аргументы [Type]:
  str - строка для разбора [STRING]
  pat - разделитель [STRING]
*  Пример запуска
  (setq str "мы;изучаем;рекурсии" pat ";")
  (setq str "мы — изучаем — рекурсии" pat " — ")
  (str-str-lst str pat)
* Читать подробнее http://elpanov.com/index.php?id=14 и здесь http://www.caduser.ru/cgi-bin/f1/board.cgi?t=25113OT
|;
(defun str-str-lst (str pat / i)
  (cond	((= str "") nil)
	((setq i (vl-string-search pat str))
	 (cons (substr str 1 i)
	       (str-str-lst (substr str (+ (strlen pat) 1 i)) pat)
	 ) ;_  cons
	)
	(t (list str))
  ) ;_  cond
) ;_  defun

(defun rename_raster_image (AcDbRasterImage NewImageName)
  (if (vlax-property-available-p AcDbRasterImage 'name t)
    (if	(not
	  (vl-catch-all-error-p
	    (vl-catch-all-apply
	      '(lambda ()
		 (vlax-put-property AcDbRasterImage 'Name NewImageName)
	       ) ;_ END_OF lambda
	    ) ;_ END_OF vl-catch-all-apply
	  ) ;_ END_OF vl-catch-all-error-p
	) ;_ END_OF not
      t
    ) ;_ END_OF if
  ) ;_ END_OF if
) ;_ END_OF defun


;;;Переименование ВСТВАВКИ изображений 
(defun renameallimages (/ dic img itm lst img_name)

  (if (setq lst	(dictsearch (namedobjdict) "acad_image_dict")
	    dic	(cdr (assoc -1 lst))
      ) ;_ END_OF setq

    ;;Проходим по всем изображениям документа
    (while (setq lst (member (assoc 3 lst) lst))
      (setq ;; вставленное изображение
	    itm	(cdr (assoc 3 lst))
	    ;; имя файла с изображением (без расширения)
	    img	(vl-filename-base
		  (cdr (assoc 1 (entget (cdr (assoc 350 lst)))))
		) ;_ END_OF vl-filename-base
	    lst	(cdr lst)
      ) ;_ END_OF setq



      ;;Если в списке имен рисунков есть имя изображения из документа
      ;;переименовываем по данным из файла имен
      (if (setq img_name (assoc img txt_list))
	(progn
	  (dictrename dic itm (cdr img_name))

	) ;_ END_OF progn
      ) ;_ END_OF if
    ) ;_ END_OF while

  ) ;_ END_OF if

  (princ)

) ;_ END_OF defun
RENAMEIMAGES_FROMLIST.lsp
name02 вне форума  
 
Непрочитано 11.07.2024, 10:29
#7
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,915


Я не понял задачу.
engngr вне форума  
 
Непрочитано 11.07.2024, 10:47
| 1 #8
name02


 
Регистрация: 10.01.2020
Сообщений: 415


Не знаю какую задачу имел в виду автор, а я понял так (и сделал программу под это):
1 Есть файлы с фотографиями.
2 Имена файлов менять нельзя
3 Файлы с фотографиями вставлены в чертеж
4 Т.к. имена файлов неинформативны (видимо для проектировщика по таким именам файлов трудно ориентироваться), то их надо переименовать - файлов много и это тяжело сделать. А сделать надо, т.к. по названию вставленной картинки будет браться какая-то информация откуда-то.

Что имел в виду автор - вообще не понятно. Но отдельное спасибо за исчерпывающий список имен файлов...
name02 вне форума  
 
Автор темы   Непрочитано 11.07.2024, 22:50
#9
Dimchiko

Руководитель проектов в строительстве
 
Регистрация: 17.02.2005
Москва
Сообщений: 88
Отправить сообщение для Dimchiko с помощью Skype™


Цитата:
Сообщение от name02 Посмотреть сообщение
Не знаю какую задачу имел в виду автор, а я понял так (и сделал программу под это):
1 Есть файлы с фотографиями.
2 Имена файлов менять нельзя
3 Файлы с фотографиями вставлены в чертеж
4 Т.к. имена файлов неинформативны (видимо для проектировщика по таким именам файлов трудно ориентироваться), то их надо переименовать - файлов много и это тяжело сделать. А сделать надо, т.к. по названию вставленной картинки будет браться какая-то информация откуда-то.

Что имел в виду автор - вообще не понятно. Но отдельное спасибо за исчерпывающий список имен файлов...

Автор имел ввиду....то, что написал. Нужно промаркировать каждую фотографию своим именем. Могу дать лишнюю информацию, объяснить зачем это нужно и куда, но это не поможет решению.

ФайлОВ с фотографиями нет. Есть автокадовский ФайЛ со вставленными в него фотками. Фотографий может быть 100, может быть и более. На каждую фотку в автокаде нужно поставить метку соответствующую названию фотографии.
Дело не в названии картинок. Они могут быть любые, хоть набором символов. Могут быть простыми, могут быть сложными для восприятия. Проблема в том, что их МНОГО и на каждую вставленную картинку НЕОБХОДИМО нанести ее имя. А далее лишь способ выполнения этой задачи и время на ее выполнение играют роль.



----- добавлено через ~10 мин. -----
Цитата:
Сообщение от name02 Посмотреть сообщение
Полазив по интернету нашел что-то похожее и произвел на свет вот такую штуку:
Программа для переименования внешних ссылок растровых изображений в документе
;;|Для работы нужен файл .CSV следующего содержания:
- в первом столбце название файла без расширения
- во втором - новое название изображения в документе
Это не то. Переименовывания картинок нет (хотя это и не запрещено).
Но большое спасибо за помощь!

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
"Вставку поля" - это как, куда?
Вставка-поле-объект-растровое изображение-имя
__________________
С уважением

Последний раз редактировалось Dimchiko, 11.07.2024 в 23:08.
Dimchiko вне форума  
 
Непрочитано 12.07.2024, 04:22
#10
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от Dimchiko Посмотреть сообщение
Вставка-поле-объект-растровое изображение-имя
Понял - не команды, действия из меню.
Offtop: Эх! В Map/Civil 3D надписи названий или пр. для всех изображений создаются на раз через стили. Но Вы же не будете себе его ставить, хоть он доступен так же, как базовый AutoCAD...
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 12.07.2024, 07:45
| 1 #11
name02


 
Регистрация: 10.01.2020
Сообщений: 415


Цитата:
Сообщение от Dimchiko Посмотреть сообщение
ФайлОВ с фотографиями нет. Есть автокадовский ФайЛ со вставленными в него фотками.
Изображения в автокад можно вставить двумя способами:
1 Внешней ссылкой
2 Внедренным объектом - OLE-объект

У изображения-внешней ссылки есть такое свойство как "Имя":
Нажмите на изображение для увеличения
Название: ВН ссылка.png
Просмотров: 32
Размер:	20.7 Кб
ID:	263771
Это имя, которое указано в диспетчере внешних ссылок:
Нажмите на изображение для увеличения
Название: Диспетчер ВН ссылок.png
Просмотров: 35
Размер:	10.4 Кб
ID:	263773

А у OLE-объекта такого поля нет:
Нажмите на изображение для увеличения
Название: OLE.png
Просмотров: 33
Размер:	19.9 Кб
ID:	263772
Поле "Имя объекта" здесь показывает только тип объекта - он будет у всех картинок всегда одинаковый

У тебя какой случай?
name02 вне форума  
 
Непрочитано 13.07.2024, 00:56
| 1 #12
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,915


Итить колотить.
Вставить текст с именем растра это называется, а не именовать картинки.
Цитата:
Сообщение от Dimchiko Посмотреть сообщение
ФайлОВ с фотографиями нет. Есть автокадовский ФайЛ со вставленными в него фотками. Фотографий может быть 100
Это вообще шедеврально.

Если не можешь нормально словами описать задачу, так хоть пример прикладывай.
engngr вне форума  
 
Непрочитано 13.07.2024, 20:06
#13
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,401


Файл со вставленными 100 фотками - это ж какой размер этого файла? Как вообще с ним работать?
AlexCondor вне форума  
 
Непрочитано 13.07.2024, 20:23
#14
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


может, люди отчеты в акаде делают вместо текстовых редакторов...
Сергей812 вне форума  
 
Автор темы   Непрочитано 11.09.2024, 12:00
#15
Dimchiko

Руководитель проектов в строительстве
 
Регистрация: 17.02.2005
Москва
Сообщений: 88
Отправить сообщение для Dimchiko с помощью Skype™


Цитата:
Сообщение от name02 Посмотреть сообщение
Изображения в автокад можно вставить двумя способами:
1 Внешней ссылкой
2 Внедренным объектом - OLE-объект

У изображения-внешней ссылки есть такое свойство как "Имя":
Вложение 263771
Это имя, которое указано в диспетчере внешних ссылок:
Вложение 263773

А у OLE-объекта такого поля нет:
Вложение 263772
Поле "Имя объекта" здесь показывает только тип объекта - он будет у всех картинок всегда одинаковый

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

----- добавлено через ~6 мин. -----
Цитата:
Сообщение от engngr Посмотреть сообщение
Итить колотить.
Вставить текст с именем растра это называется, а не именовать картинки.

Это вообще шедеврально.

Если не можешь нормально словами описать задачу, так хоть пример прикладывай.
Приношу свои глубочайшие за свое косноязычие)

Пример тут особо не нужен.

Откройте новый файл, вставьте в него растровое изображение (пусть будет "картинка 1"). Как на картинке теперь написать ее имя ("картинка 1")?
Можно просто ручками, можно через вставку поля. Но что делать если таких картинок 100-200 штук? Что если просто 10 файлов, в каждом из которых по 50 разных картинок?

Можно ручками, можно через вставку поля, но это не комильфо.

----- добавлено через ~8 мин. -----
Цитата:
Сообщение от AlexCondor Посмотреть сообщение
Файл со вставленными 100 фотками - это ж какой размер этого файла? Как вообще с ним работать?
Просто мощный комп. Нормально работаю. Сейчас я работаю с 64 фотками, но добавляю их постепенно. Файл весит 1,6 МБ. Тормозов нет.
__________________
С уважением
Dimchiko вне форума  
 
Непрочитано 11.09.2024, 13:31
#16
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 2,103


А я такую программу сочинил себе на Питоне: есть много картинок, разложенных по папкам, у некоторых имя не имеет значение (оно начинается с числа в этом случае), у некторых осмысленное название. Программа пробегает все папки и подпаки, названия папок стновятся заголовками и подзаголовками, картинки вставляются на листы А4 по две штуки на лист, если имя файла осмысленное - оно пишется снизу пояснением к фото, всё сохраняется в один pdf.
SetQ вне форума  
 
Непрочитано 12.09.2024, 09:01
1 | #17
name02


 
Регистрация: 10.01.2020
Сообщений: 415


Сделал как хочет автор поста - выделяешь нужные изображения-внешние ссылки и рядом с ними создаются тексты с именами этих изображений
Код:
[Выделить все]
 (defun c:INSIMNAME (/ ss i a image_name ins_pt text_pos text_just define_pt create_mtext)

  ;;точка вставки текста (TC - сверху по центру относительно рисунка; BC - снизу по центру)
  (setq text_pos "BC")

  ;;выравнивание текста (TC - сверху по центру ; BC - снизу по центру; BL - снизу слева)
  (setq text_just "TC")

  (setq ss (ssget '((0 . "IMAGE"))))


  ;;Определение координат по габаритным точкам
  (defun define_pt (LL_pt UR_pt pos /)

    (cond
      ;;верх по центру
      ((= pos "TC")
       (list
         (/ (+ (car ll_pt) (car ur_pt)) 2)
         (cadr ur_pt)
         (caddr ur_pt)
         ) ;_ _endcons
       )
      ;;низ по центру
      ((= pos "BC")
       (list
         (/ (+ (car ll_pt) (car ur_pt)) 2)
         (cadr ll_pt)
         (caddr ur_pt)
         ) ;_ end cons
       )
      ) ;_ end cond


    ) ;_ end defun

  ;;Создание мультитекста
  (defun create_mtext (ins_pt txt_string mt_justify / e h p s b)

    ;;имя текстового стиля
    (setq s "My_Style")
    ;;высота текста
    (setq h (* 2 (getvar 'dimscale)))

    (setq b
           (cond
             ((= mt_justify "TC") 2)
             ((= mt_justify "BC") 8)
             ((= mt_justify "BL") 7)
             ) ;_ end cond
          ) ;_ end setq  

    (if (setq p ins_pt)
      (setq e
             (entmakex
               (list
                 '(000 . "MTEXT")
                 '(100 . "AcDbEntity")
                 '(100 . "AcDbMText")
                 (cons 010 (trans p 1 0))
                 (cons 011 (getvar 'ucsxdir))
                 (cons 040 h)
                 (cons 007
                       (if (tblsearch "style" s)
                         s
                         "Standard"
                         ) ;_ _endif
                       ) ;_ _endcons
                 (cons 210 (trans '(0 0 1) 1 0 t))
                 (cons 1 txt_string)
                 (cons 71 b)
                 ) ;_ _endlist
               ) ;_ _endentmakex
            ) ;_ _endsetq
      ) ;_ _endif
    (princ)
    ) ;_ _enddefun


  (repeat (setq i (sslength ss))
    (setq a (ssname ss (setq i (1- i))))

    (setq image_name (vlax-get-property (vlax-ename->vla-object a) 'Name))

    (vla-getboundingbox (vlax-ename->vla-object a) 'mi 'ma)

    (setq ins_pt (define_pt (vlax-safearray->list mi)
                            (vlax-safearray->list ma)
                            text_pos
                            ) ;_ end define_pt
          ) ;_ end setq

    (create_mtext ins_pt image_name text_just)
    ) ;_ end repeat

  (princ)

  ) ;_ end defun
INSIMNA.lsp
name02 вне форума  
 
Непрочитано 12.09.2024, 09:42
#18
tiara


 
Регистрация: 21.08.2023
Москва
Сообщений: 87


Цитата:
Сообщение от SetQ Посмотреть сообщение
А я такую программу сочинил себе на Питоне: есть много картинок, разложенных по папкам, у некоторых имя не имеет значение (оно начинается с числа в этом случае), у некторых осмысленное название. Программа пробегает все папки и подпаки, названия папок стновятся заголовками и подзаголовками, картинки вставляются на листы А4 по две штуки на лист, если имя файла осмысленное - оно пишется снизу пояснением к фото, всё сохраняется в один pdf.
А поделиться с нами не хотите?
tiara вне форума  
 
Непрочитано 12.09.2024, 10:58
#19
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 2,103


Цитата:
Сообщение от tiara Посмотреть сообщение
А поделиться с нами не хотите?
Лучше каждому свою написать, но можно и мою переделать, для этого надо:
  1. Поставить Python 3 версии;
  2. Добавить модуль fpdf2;
  3. Программа вставляет в начале Содержание, где нужен моноширный шрифт, у меня это DejaVuSansMono.ttf, тоже надо уставить;
  4. В переменной PAGES задать число страниц, которое займёт Содержание, определяется опытным путём;
  5. В переменной MAX_J - максимальное количество картинок для вставки, можно здать например 10 на время отладки;
  6. В строке os.chdir(... указать, где всё лежит;
  7. В строке img = r'.\images' - папка, где лежат картинки, находится в папке из os.chdir(... Дальше в папке images лежат папки и подпаки с картинками, которые станут именами заголовков;
  8. в строке out = r'.\pdf\Result.pdf' - итоговый pdf, тоже, pdf - папка внутри os.chdir(...;

Ещё программа немного верстает и местами подправляет имена заголовков. У меня картинки - снимки из Лиры, сделаны на ноутбуке, т.е. пропорции - вытянутые по горизонтали, для картинок других пропорций что-то будет по-другому. Если имя файла с картинкой начинаяется не с цифры, то это имя будет подпиьсю к картинке, иначе рисунок без подписи.

Ещё у меня папки именовы по системе JD, т.е. первый уровень - имя папки начинается на 10, 20, 30..., второй уровень - имя папки начинается на 11, 12, 21..., третий (глубже - нет) - имя папки начинается с буквы, если иначе, то надо сделать иначе.
Вложения
Тип файла: rar img2pdf.rar (174.9 Кб, 7 просмотров)
SetQ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Автоматическое именование вставленных фотографий



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить в проект много фотографий? apelsinsochi AutoCAD 3 06.01.2014 05:00
Как поменять цвет атрибутов уже вставленных в чертёж блоков? МишаИнженер Программирование 5 09.10.2012 20:55
Как программно установить "Units to scale inserted content"/"Единицы для изменения вставленных элементов"? Ax3 Программирование 2 11.05.2011 15:20
Согласно СП 5.13130.2009 Приложение А1 для выставочного двухэтажного павильона требуется автоматическое пожаротушение. В реконструируемом од ВОЛНА Прочее. Архитектура и строительство 2 02.12.2010 14:48
Нужно ли автоматическое пожаротушение в хранилище оружия? Евгений Фальковский Инженерные сети 7 04.11.2009 16:27