Добрый день!
Столкнулся с проблемой неверного расчёта высоты таблицы, хотел бы разобраться, в чём причина такого поведения функции vla-get-height.
Имеется тестовая таблица:
(defun table_test ()
(vl-load-com)
(setq acad_application (vlax-get-acad-object))
(setq actdoc (vla-get-ActiveDocument acad_application))
(setq model_space (vla-get-ModelSpace actdoc))
(setq table_vla (vla-AddTable model_space (vlax-3d-point (getpoint)) 1 3 8 50))
(vla-put-regeneratetablesuppressed table_vla :vlax-true)
(vla-UnmergeCells table_vla 0 0 1 3)
(vla-SetTextHeight table_vla 7 5)
(vla-SetRowHeight table_vla 0 12)
(vla-put-RowHeight table_vla 12)
(vla-SetText table_vla 0 0 "Первая колонка")
(vla-SetText table_vla 0 1 "Вторая колонка")
(vla-SetText table_vla 0 2 "Третья колонка")
(setq j 0); номер вставляемой строки
(setq test_list '(("1" "1" "1") ("2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2" "2" "2") ("3" "3" "3")))
(foreach i-row test_list
(setq j (1+ j)); номер вставляемой строки
(vla-InsertRows table_vla j 12 1); вставка новой строки
(vla-SetText table_vla j 0 (nth 0 i-row))
(vla-SetText table_vla j 1 (nth 1 i-row))
(vla-SetText table_vla j 2 (nth 2 i-row))
(setq table_height (vla-get-height table_vla)); ! ! ! ! ! ! ! ! ! ! ! ЗДЕСЬ ставим точку останова ! ! ! ! ! ! ! ! ! ! !
);foreach
(vla-put-HorzCellMargin table_vla 2)
(vla-put-VertCellMargin table_vla 2)
(vla-put-regeneratetablesuppressed table_vla :vlax-false)
(vla-recomputetableblock table_vla :vlax-true)
);defun
Из-за того, что текст "2 2 2..." получается многострочным, высота ячейки (а также строки и таблицы) увеличивается, но функция
vla-get-height в точке останова неизменно показывает увеличение высоты на 12 мм. Примерно также ведёт себя и
vla-GetRowHeight.
После завершения построения эти значения становятся корректными. Пробовал эксперименты с
vla-put-regeneratetablesuppressed — не принесло результата.
Подскажите, пожалуйста, в чём может быть ошибка? Как найти корректную высоту таблицы в процессе её построения?