Книга «Путь к nanoCAD»
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

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

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

AlexZh вне форума Вставить имя

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

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

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

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

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


Забей текст, потом установи ширину обратно.
__________________

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


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


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

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


Так тебе надо внести дополнительные переносы строк? Изменить высоту текста? Изменить форматирование текста?
И, кстати, кто мешает потом установить нужную высоту строки, если это уж так критично?
Offtop: В подобных случаях я обычно создаю (естественно, программно) определение анонимного блока, в который добавляю нужный мне объект - в данном случае MTEXT, который при необходимости и модифицирую как надо, подгоняю и т.п. А потом уже полученные свойства и копирую в получателя. Но, подозреваю, в данном случае подобный подход не сработает. И не сработает именно из-за особенностей поведения таблиц.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 26.02.2017, 01:38
#5
AlexZh


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


Цитата:
Сообщение от Кулик Алексей 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,467


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


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


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

надо как-то растянуть строки первой колонку. думаю, с помощью строк колонки второй.
Миниатюры
Нажмите на изображение для увеличения
Название: 2017-02-27_12-01-54.png
Просмотров: 32
Размер:	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
С.-Петербург
Сообщений: 34,260


Ну попробуй как я тебе сказал - анонимный блок, в него многострочник, обработать многострочник (поменять угол поворота, высоту текста, при необходимости добавить переносы строк и т.п.), вставить текст в ячейку, задать все параметры. В конце установить ширины столбцов и обработать высоты строк (если понадобится).
Хотя я бы подумал о том, чтобы либо делать доп.таблицу, где давать "расшифровку" сокращенных типов, либо сменить ширину первого столбца.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 27.02.2017, 12:12
#9
Profan

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


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


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


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

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

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

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

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


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

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

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


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


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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Создание поля (field), ссылающегося на текстовое значение ячейки таблицы. skkkk Готовые программы 99 10.02.2017 10:02
В ячейке одной таблицы есть текст, как сделать чтоб этот текст отображался в ячейки другой таблицы? 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

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


Размещение рекламы