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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как закрепить ширину ячейки таблицы.

Как закрепить ширину ячейки таблицы.

Ответ
Поиск в этой теме
Непрочитано 25.02.2017, 15:38 #1
Как закрепить ширину ячейки таблицы.
AlexZh
 
Регистрация: 23.09.2015
Сообщений: 146

Здравствуйте!

При вставке программным методом текста в таблицу, ячейка расползается по тексту. Как закрепить ширину, чтоб ячейка расширялась в высоту?

Добавлено: или делать постепенное увеличение высоты с проверкой ширины?)

Последний раз редактировалось AlexZh, 25.02.2017 в 16:58.
Просмотров: 3608
 
Непрочитано 26.02.2017, 00:26
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Забей текст, потом установи ширину обратно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.02.2017, 01:00
#3
AlexZh


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Забей текст, потом установи ширину обратно.
Не получается. съезжает вся таблица
AlexZh вне форума  
 
Непрочитано 26.02.2017, 01:23
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Так тебе надо внести дополнительные переносы строк? Изменить высоту текста? Изменить форматирование текста?
И, кстати, кто мешает потом установить нужную высоту строки, если это уж так критично?
Offtop: В подобных случаях я обычно создаю (естественно, программно) определение анонимного блока, в который добавляю нужный мне объект - в данном случае MTEXT, который при необходимости и модифицирую как надо, подгоняю и т.п. А потом уже полученные свойства и копирую в получателя. Но, подозреваю, в данном случае подобный подход не сработает. И не сработает именно из-за особенностей поведения таблиц.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.02.2017, 01:38
#5
AlexZh


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
ак тебе надо внести дополнительные переносы строк? Изменить высоту текста? Изменить форматирование текста?
И, кстати, кто мешает потом установить нужную высоту строки, если это уж так критично?
Заношу в таблицу данные из атрибутов, как-то так

Код:
[Выделить все]
 
;;; построение
;;; таблицы-----------------------------------------------------
      (setq col (length (mip_makeuniquemembersoflist bl_atts_list)))
			      ; _
			      ; конец
			      ; setq
      (setq modelspace (vla-get-modelspace doc))
      (setq pt (getpoint "\nУкажите точку вставки таблицы: ")) ; _
			      ; конец
			      ; vlax-3d-point
      (setq mytable (vla-addtable
		      modelspace
		      (vlax-3d-point pt)
		      (1+ col)
		      9
		      8
		      20
		    )	      ; _
			      ; конец
			      ; vla-Addtable
      ) ;_ конец setq
      (vla-put-layer mytable "1Z_Оформление")
      (vla-deleterows mytable 0 1)
      (vla-setcolumnwidth mytable 0 10)
      (vla-setcolumnwidth mytable 1 10)
      (vla-setcolumnwidth mytable 2 10)
      (vla-setcolumnwidth mytable 3 15)
      (vla-setcolumnwidth mytable 4 45)
      (vla-setcolumnwidth mytable 5 40)
      (vla-setcolumnwidth mytable 6 10)
      (vla-setcolumnwidth mytable 7 15)
      (vla-setcolumnwidth mytable 8 30)
      (vla-settextrotation mytable 0 0 acdegrees090)
      (vla-setcellalignment mytable 0 0 acmiddlecenter)
      (vla-settextrotation mytable 0 1 acdegrees090)
      
      (vla-scaleentity
	mytable
	(vlax-3d-point pt)
	(/ 1 (getvar "CANNOSCALEVALUE"))
      ) ;_ конец vla-scaleentity
      (vla-settextheight
	mytable
	(+ acdatarow actitlerow acheaderrow)
	(* 1.8 (/ 1 (getvar "CANNOSCALEVALUE")))
      ) ;_ конец vla-SetTextHeight
      (vla-settextstyle
	mytable
	(+ acdatarow actitlerow acheaderrow)
	"Gost_0.0"
      ) ;_ конец vla-SetTextStyle
      (vla-put-enablebreak mytable :vlax-true)
      (vla-put-breakspacing
	mytable
	(* 25 (/ 1 (getvar "CANNOSCALEVALUE")))
      ) ;_ конец vla-put-BreakSpacing
      (vla-put-tablebreakheight
	mytable
	(* 200 (/ 1 (getvar "CANNOSCALEVALUE")))
      ) ;_ конец vla-put-TableBreakHeight
      (vla-put-regeneratetablesuppressed mytable :vlax-true)
;;; ----------------------------------------------------------------------
      (setq bl_atts_list      ;lst - исходный список
	     (mapcar
	       '(lambda (x) (nth x bl_atts_list))
	       (adv-strings-sort-strings-with-numbers-i
		 (mapcar '(lambda (x) (strcat (cdr (nth 0 x)) (cdr (nth 1 x))))
			 bl_atts_list
		 ) ;_ конец mapcar
		 t
	       )	      ; _ конец
			      ; adv-strings-sort-strings-with-numbers-i
	     ) ;_ конец vl-sort
      ) ;_ конец setq
      (setq i 0)
      (setq i_t 1)
      (while bl_atts_list
	(setq bl   (car bl_atts_list)
	      col0 (cdr (nth 1 bl))
	      col1 (cdr (nth 0 bl))
	      col2 (cdr (nth 3 bl))
	      col3 (cdr (nth 4 bl))
	      col4 (cdr (nth 5 bl))
	      col5 (cdr (nth 6 bl))
	      col6 (cdr (nth 7 bl))
	      col7 (cdr (nth 8 bl))
	) ;_ конец setq
	(setq col0t (cdr (nth 1 bl))
	      col1t (cdr (nth 0 bl))
	      col3t (cdr (nth 4 bl))
	      col4t (cdr (nth 5 bl))
	) ;_ конец setq
	(setq bl_atts_list (cdr bl_atts_list))
	(vla-settext mytable i 0 col0)
	(vla-settextrotation mytable i 0 acdegrees090)
	(vla-setcellalignment mytable i 0 acmiddlecenter)
	(vla-settext mytable i 1 col1)
	(vla-settextrotation mytable i 1 acdegrees090)
	(vla-setcellalignment mytable i 1 acmiddlecenter)
	(vla-SetAutoScale mytable i 1 :vlax-true)
	(vla-settext mytable i 2 col2)
	(vla-settext mytable i 3 col3)
	(vla-settext mytable i 4 col4)
	(vla-settext mytable i 5 col5)
	(vla-settext mytable i 6 col6)
	(vla-settext mytable i 7 col7)
	(setq i (1+ i))
      ) ;_ конец while
      (setq k 0) ;_ конец setq
(while (< k i)
  (setq n 0)
  (setq mark 1)
  (while (< n 7)
     (if
      (and 
	(or mark (= n 3))
	(not (zerop (strlen (vla-gettext mytable k n))))
	(not (zerop (strlen (vla-gettext mytable (1+ k) n))))
	(equal (vla-gettext mytable k n) (vla-gettext mytable (1+ k) n))
      ) ;_ конец and
       (progn
	 (vla-mergecells mytable k (1+ k) n n)
	 (setq mark 1))
      (setq mark nil)
    ) ;_ конец while
 ;_ конец while
    (vla-setcellalignment mytable 0 1 acmiddlecenter)
    (vla-setcellalignment mytable k n acmiddlecenter)
    (setq n (1+ n))
  ) ;_ конец while
  (setq k (1+ k))
) ;_ конец while

     
      (vla-put-regeneratetablesuppressed mytable :vlax-false)
     
      

Последний раз редактировалось AlexZh, 27.02.2017 в 09:41.
AlexZh вне форума  
 
Непрочитано 26.02.2017, 17:32
#6
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


А разве такое выражение не помогает?:
Код:
[Выделить все]
(vla-SetColumnWidth tbl 4 7000)
4 - номер колонки, 7000 - фиксированная ширина.
AlexZh так и делает.
Profan вне форума  
 
Автор темы   Непрочитано 27.02.2017, 12:03
#7
AlexZh


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


Получается вот так.

надо как-то растянуть строки первой колонку. думаю, с помощью строк колонки второй.
Миниатюры
Нажмите на изображение для увеличения
Название: 2017-02-27_12-01-54.png
Просмотров: 123
Размер:	50.0 Кб
ID:	184267  
AlexZh вне форума  
 
Непрочитано 27.02.2017, 12:07
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Ну попробуй как я тебе сказал - анонимный блок, в него многострочник, обработать многострочник (поменять угол поворота, высоту текста, при необходимости добавить переносы строк и т.п.), вставить текст в ячейку, задать все параметры. В конце установить ширины столбцов и обработать высоты строк (если понадобится).
Хотя я бы подумал о том, чтобы либо делать доп.таблицу, где давать "расшифровку" сокращенных типов, либо сменить ширину первого столбца.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.02.2017, 12:12
#9
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Ты бы привел пример неизуродованной таблицы, что ли...
Profan вне форума  
 
Автор темы   Непрочитано 27.02.2017, 12:25
#10
AlexZh


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


Цитата:
Сообщение от Profan Посмотреть сообщение
Ты бы привел пример неизуродованной таблицы, что ли...

Здесь также видны объединенные ячейки.

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ну попробуй как я тебе сказал - анонимный блок, в него многострочник, обработать многострочник (поменять угол поворота, высоту текста, при необходимости добавить переносы строк и т.п.), вставить текст в ячейку, задать все параметры. В конце установить ширины столбцов и обработать высоты строк (если понадобится).
Хотя я бы подумал о том, чтобы либо делать доп.таблицу, где давать "расшифровку" сокращенных типов, либо сменить ширину первого столбца.
Тут дело-то, как я понимаю, не в тексте, а в самой таблице.

Пробовал устанавливать ширину строк в конце - тоже разъезжается.

По поводу доп. таблицы не понял.


Или может как-то можно ограничить, чтоб можно было ограничить высоту (ширину) ячейки тремя строками текста

Получится должно вот так.
Миниатюры
Нажмите на изображение для увеличения
Название: 2017-02-27_12-22-43.png
Просмотров: 99
Размер:	17.2 Кб
ID:	184272  
AlexZh вне форума  
 
Непрочитано 27.02.2017, 16:44
#11
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Не картинку, блин, а реальную таблицу, файл. А вообще, первая и вторая графы нелепые. Отсюда вся таблица нелепая.
Profan вне форума  
 
Автор темы   Непрочитано 27.02.2017, 22:17
#12
AlexZh


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


Цитата:
Сообщение от Profan Посмотреть сообщение
Не картинку, блин, а реальную таблицу, файл. А вообще, первая и вторая графы нелепые. Отсюда вся таблица нелепая.
ок!) понял!)
Вложения
Тип файла: dwg
DWG 2013
Таблицы.dwg (325.2 Кб, 38 просмотров)
AlexZh вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как закрепить ширину ячейки таблицы.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Создание поля (field), ссылающегося на текстовое значение ячейки таблицы. skkkk Готовые программы 141 24.11.2023 15:49
В ячейке одной таблицы есть текст, как сделать чтоб этот текст отображался в ячейки другой таблицы? Basily AutoCAD 2 05.02.2017 16:46
Считывание значение ячейки таблицы в виде Field в AutoLISP tokhot LISP 9 08.01.2017 17:54
Возможно ли зафиксировать (заблокировать) ширину таблицы в AutoCAD? LcH AutoCAD 1 25.03.2014 07:44
Блокирование высоты ячейки таблицы Autocad casaatik AutoCAD 3 15.09.2011 15:40