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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Объединение таблиц

Объединение таблиц

Ответ
Поиск в этой теме
Непрочитано 11.08.2016, 11:45
Объединение таблиц
ElectricSib
 
Регистрация: 03.11.2015
Сообщений: 37

В dwg файле есть много однотипных автокадовских таблиц кабельного журнала. Т.е. скажем 20 таблиц, состоящих из 5 колонок, количество строк и их содержимое различаются.

Есть ли в природе скрипт, позволяющий объединить их вертикально в одну? Т.е. чтобы получилась одна большая таблица из этих 5 колонок.

Конечно, можно попробовать руками или возиться с объединением через экспорт в Excel, но хочется автоматизировать этот процесс.

Последний раз редактировалось ElectricSib, 12.08.2016 в 07:22.
Просмотров: 17580
 
Непрочитано 16.08.2016, 18:29
#21
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Profan Посмотреть сообщение
Если сохранить файл и заново открыть, то таблица редактируется.
Значит это еще одно подтверждение
Цитата:
Сообщение от VVA Посмотреть сообщение
Замечал, что если править с помощью activeX (например имена приаттаченных файлов), то они корректно отражаются после сохранения и повторного открытия файла
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 02.08.2018, 09:44 Лисп не работает
#22
Nickey


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Был косяк. Исправил см. #9


У меня вставляются. Проверял на Автокад 2009. Озвучь версию Автокада и приложи пример с таблицами для теста


Добрый день! Попробовал в Каде2014. В первую таблицу добавляются строки, но текст не добавляется, приложил, что получается

Чертеж2.dwg
Нажмите на изображение для увеличения
Название: Autodesk AutoCAD 2014 - [Чертеж2.dwg].png
Просмотров: 96
Размер:	52.1 Кб
ID:	205005
Nickey вне форума  
 
Непрочитано 07.08.2018, 15:15
#23
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Nickey, В твоем примере все строки выполнены стилем строк "Заголовок". Стили нужны, чтобы определить, что является заголовком, а что данными. MTB3 это проверяет и переносит только строки с типом строк "Данные".
Меняй стиль строк на "Данные" и используй MTB3 или ниже команда MTB4, которая переносит все подряд (Заголовки, данные, название)
Код:
[Выделить все]
 
(defun C:MTB4  (/ col cols1 cols2 lastrow response rows1
	       rows2 ss start tblobj1 tblobj2 x)
  (vl-load-com)
  (princ "\n*** Select First table ***")
  (if (setq ss (ssget "_:S:E:L" '((0 . "ACAD_TABLE"))))
      (setq tblobj1 (vlax-ename->vla-object (ssname ss 0)))
    )
 (if (and
          tblobj1
          (princ "\n*** Select other tables ***")
          (setq ss nil ss (ssget "_:L" '((0 . "ACAD_TABLE"))))
          (or (ssdel (vlax-vla-object->ename tblobj1) ss) t)
          (> (sslength ss) 0)
	   )
      (progn
       (foreach tblobj2  (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
         (setq
           rows1 (vla-get-rows tblobj1)
           tblobj2 (vlax-ename->vla-object tblobj2)
           rows2	(vla-get-rows tblobj2)
           lastrow	rows2
           cols1 (vla-get-columns tblobj1)
           cols2 (vla-get-columns tblobj2)
           )
         (if (not (equal cols1 cols2))
           (progn
             (alert "There is not equivalent number of rows found. Error...")
             (exit)
             (princ)
             )
           )
  (vla-put-RegenerateTableSuppressed tblobj1 :vlax-false)
  (vla-insertrows
    tblobj1
    rows1
    (vla-getrowheight tblobj1 (1- rows1))
    lastrow)
(setq start 0)         
  (repeat lastrow
    (setq col 0)
    (repeat cols1
      (cond
	((eq (vla-GetCellType tblobj2 start col) acBlockCell)
	 (vla-SetCellType tblobj1 rows1 col acBlockCell)
 	 (vla-setcellalignment tblobj1 rows1 col (vla-getcellalignment tblobj2 start col))
	 (vla-setblockscale tblobj1 rows1 col (vla-getblockscale tblobj2 start col))
	 (if
	   (and
	     (wcmatch (getenv "PROCESSOR_ARCHITECTURE") "*64*")
	     (vlax-method-applicable-p tblobj1 'getblocktablerecordid32)
	     )
	 (vla-setblocktablerecordid32
	   tblobj1
	   rows1
	   col
	   (vla-getblocktablerecordid32 tblobj2 start col)
	   :vlax-false
	   )
	   (vla-setblocktablerecordid
	   tblobj1
	   rows1
	   col
	   (vla-getblocktablerecordid tblobj2 start col)
	   :vlax-false
	   )
	   )
	 )
        (t
         (vla-setcellalignment tblobj1 rows1 col (vla-getcellalignment tblobj2 start col))
	 (vla-SetCellTextHeight tblobj1 rows1 col (vla-GetCellTextHeight tblobj2 start col))
         (vl-catch-all-apply '(lambda()(vla-SetCellTextStyle tblobj1 rows1 col (vla-GetCellTextStyle tblobj2 start col))))
	 (vla-settext
	tblobj1
	rows1
	col
	(vla-gettext tblobj2 start col)
        )
	 )
	)
      (setq col (1+ col))
      )
    (setq start (1+ start))
    (setq rows1 (1+ rows1)))
  (vla-put-RegenerateTableSuppressed tblobj1 :vlax-true)
         )
  (initget 1 "Yes No")
  (setq	response (getkword
		   "\nAre you want to delete the tables [Yes/No] <Yes>: "))
  (if (eq "Yes" response)
    (mapcar 'vla-delete (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
    )
;;;  (mapcar (function (lambda (x)
;;;		      (vl-catch-all-apply
;;;			(function (lambda ()
;;;				    (vlax-release-object x))))))
;;;	  (list tblobj2 tblobj1)
;;;	  )
)
  (alert
	"nothing selected or selected less than 2 tables. Error...")
  )
  (princ)
  )
(princ "\n	>> Start command with MTB4 to merge tables")
(princ)
Миниатюры
Нажмите на изображение для увеличения
Название: zagl.png
Просмотров: 68
Размер:	75.5 Кб
ID:	205125  
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.08.2018, 17:10
#24
Nickey


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


Сработало!! Спасибо огромное!!

Последний раз редактировалось Nickey, 07.08.2018 в 17:59.
Nickey вне форума  
 
Непрочитано 26.05.2019, 23:45
#25
posetitel


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


какой долгий лисп, первые две таблицы объединяет сравнительно быстро, а вот чем дальше, тем больше думает
после трех-четырех таблиц комп подвисает на 5 минут.
можно ли как-нибудь ускорить процесс объединения таблиц?
posetitel вне форума  
 
Непрочитано 27.05.2019, 06:40
#26
trir


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


Цитата:
можно ли как-нибудь ускорить процесс объединения таблиц?
можно
trir вне форума  
 
Непрочитано 27.05.2019, 09:51
#27
Сергей812


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


Цитата:
Сообщение от trir Посмотреть сообщение
можно
и причем тут БД?) Здесь проблема системная - использование графического редактора для составления текстовых документов достаточно больших объемов.
Сергей812 вне форума  
 
Непрочитано 27.05.2019, 10:14
#28
trir


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


о том и речь, СУБД - самый удобный способ для объеденения таблиц
trir вне форума  
 
Непрочитано 31.05.2019, 11:41
1 | #29
valerik88


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


Чёт мне кажется в том коде команды
Код:
[Выделить все]
 (vla-put-RegenerateTableSuppressed vla :vlax-false)
и
Код:
[Выделить все]
 (vla-put-RegenerateTableSuppressed vla :vlax-true)
местами перепутаны
А ещё я писал свою программку объединения таблиц
https://forum.dwg.ru/showthread.php?t=150453
valerik88 вне форума  
 
Непрочитано 21.09.2019, 08:42
#30
Gore14


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


Работает! Круто! а можно ли таким же образом сделать объединение таблиц по столбцам?
Gore14 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Объединение таблиц

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос VBA Excel для извлечения таблиц из линий, полилиний, текста из DWG файлов в Excel с помощью NanoCAD/AutoCAD JZY Готовые программы 8 14.07.2016 06:31
VBA. Очень медленная обработка таблиц автокада. art_rrc Программирование 8 02.10.2014 19:57
Объединение ячеек таблиц игорёк Программирование 3 20.08.2008 13:47