Программировать Фигуры?

Автор Tigrik, 4 февраля 2020, 22:41

0 Пользователи и 1 гость просматривают эту тему.

Tigrik

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

LibreOffice Calc (Версия: 6.4.0.3 (x64)), OS-Xp7.

Пытаюсь найти возможность менять любые параметры (размеры, положение, цвет и т.д.) любых фигур (треугольники, окружности и другие) через значения на листе.
Если есть такая возможность (т.е. не используя макрос), то набор этих фигур, скорее всего, будет одинаковый (несколько треугольников, окружностей, пара квадратов) и они уже будут рядом на одном листе.
На листе будет меняться одно значение, по которому в другие ячейки будут записываться, рассчитанные по формулам, значения. Вот эти значения и хотелось бы присваивать параметрам (атрибутам, или как это называется правильно?) фигур.

Можно ли, в уже нарисованные фигуры, занести необходимые формулы (или хотя бы ссылку на необходимую ячейку со значением) в поля параметров фигур? Не нашел, как это можно сделать!

Возможно, это удобнее сделать через макросы (или только через макросы?), но я только начал осваивать макросы в ЛО Калк и, пока, совсем не разобрался.

Решил записать макрос, но получился непонятный макрос, который ничего не делает (или, иногда, что-то делает, но не совсем то, что нужно). Небольшие изменения, убрал комменты и получился такой код:


sub Macros_Proba_Triangle_01
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(7) as new com.sun.star.beans.PropertyValue
args1(0).Name = "BasicShapes"
args1(0).Value = "isosceles-triangle"
args1(1).Name = "TransformPosX"
args1(1).Value = 10000
args1(2).Name = "TransformPosY"
args1(2).Value = 5000
args1(3).Name = "TransformWidth"
args1(3).Value = 12200
args1(4).Name = "TransformHeight"
args1(4).Value = 7000
args1(5).Name = "TransformRotationAngle"
args1(5).Value = 18000
args1(6).Name = "TransformRotationX"
args1(6).Value = 19737
args1(7).Name = "TransformRotationY"
args1(7).Value = 8843
dispatcher.executeDispatch(document, ".uno:BasicShapes", "", 0, args1())
end sub


Что нужно изменить в коде, что бы нарисовать, допустим, равнобедренный треугольник (будут задаваться: размеры, положение и, иногда, перевернуть относительно горизонтали, линии (стиль, толщина, цвет), стиль/заливка области (иногда, нужно будет ставить "нет", т.е. без цвета), цвет заливки, процент прозрачности области)?

Помогите, пожалуйста!

Tigrik

Здравствуйте!
Как-то без ответов остался вопрос - либо вопрос слишком сложный, либо слишком простой, либо... ещё что-то. Возможно, потому что вопрос был задан не в том разделе (Calc).
Поэтому решил переспросить в другом разделе, где, надеюсь, будет развитие этой темы:
https://forumooo.ru/index.php/topic,8023.0.html