Изменяемые фигуры
Материал из Forumooo wiki
В LibreOffice/OpenOffice можно создавать фигуры с изменяемыми характеристиками. У таких фигур есть жёлтые маркеры, за которые можно тянуть и менять характеристики фигуры. Для того чтобы сделать такую фигуру, нужно редактировать файл content.xml в текстовом редакторе. Можно посмотреть видео (4 мин) с простейшим примером того как можно создавать такие фигруры: YouTube - Изменяемые фигуры.
Ошибка создания миниатюры: convert: unable to open image `/home/web/wiki.forumooo.ru/www/images/f/fa/Итог.png': No such file or directory @ error/blob.c/OpenBlob/2641. convert: no images defined `/home/web/wiki.forumooo.ru/www/images/thumb/f/fa/Итог.png/100px-Итог.png' @ error/convert.c/ConvertImageCommand/3049. |
Итак.
- 1. создайте пустой документ Draw, нарисуйте в нём любую готовую фигуру с желтым маркером (например, квадрат со скругленными углами), сохраните его;
- 2. переименуйте расширение файла odg в zip и распакуйте файл;
- 3. оттуда в текстовом редакторе откройте файл content.xml и найдите в нём секцию
draw:custom-shape
; - 4. теперь нам нужно нарисовать свою фигуру (заготовку) и экспортировать её в svg – для этого откройте другой пустой документ Draw, и нарисуйте там фигуру. Например, рассмотрим фигуру "Волны".
Ошибка создания миниатюры: convert: unable to open image `/home/web/wiki.forumooo.ru/www/images/3/3e/CustomShapes-заготовка_для_волны.png': No such file or directory @ error/blob.c/OpenBlob/2641.
convert: no images defined `/home/web/wiki.forumooo.ru/www/images/thumb/3/3e/CustomShapes-заготовка_для_волны.png/100px-CustomShapes-заготовка_для_волны.png' @ error/convert.c/ConvertImageCommand/3049.
![]() | Желательно чтобы размеры страницы были равны размеру фигуры, иначе не все координаты будут использоваться |
- 5. из файла svg нам нужна секция path и rect – откройте svg в текстовом редакторе и замените все запятые на пробелы; скопируйте строку path и вставьте её в файл content.xml из пункта 3, после
draw:enhanced-path="
, а значения секции rect вставьте вsvg:viewBox=""
между кавычками.
- 6. о том как работать с формулами более подробно описано в pdf файле (а примеры есть в файле zip). Вы также можете анализируя готовую фигуру из пункта 1, отредактировать формулу.
В примере с волной, путь из файла svg выглядит так:
M 286 1029 C 560 755 869 0 1257 0 1646 0 1840 1029 2229 1029 2617 1029 2811 0 3200 0 3589 0 3783 1029 4171 1029 4560 1029 4754 0 5143 0 5531 0 5726 1029 6114 1029 6503 1029 6697 0 7086 0 7474 0 7669 1029 8057 1029 8446 1029 8640 0 9029 0 9417 0 9611 1029 10000 1029 10389 1029 10583 0 10971 0 11360 0 11554 1029 11943 1029 12331 1029 12526 0 12914 0 13303 0 13497 1029 13886 1029 14274 1029 14469 0 14857 0 15246 0 15440 1029 15829 1029 16217 1029 16411 0 16800 0 17189 0 17383 1029 17771 1029 18160 1029 18354 0 18743 0 19131 0 19440 755 19714 1029 19989 1303 20000 2382 20000 3030 L 0 3030 C 0 2382 11 1303 286 1029
После редактирования вся фигура в текстовом редакторе выглядит так:
<draw:custom-shape draw:style-name="gr2" draw:text-style-name="P1" draw:layer="layout" svg:width="20cm" svg:height="5cm" svg:x="0cm" svg:y="0cm"> <text:p/> <draw:enhanced-geometry svg:viewBox="0 0 20000 5000" draw:modifiers="388 1029 0 5000" draw:enhanced-path="M 0 ?ht C ?sh01 ?ht ?sh11 0 1257 0 ?sh12 0 ?sh21 ?ht 2229 ?ht ?sh22 ?ht ?sh31 0 3200 0 ?sh32 0 ?sh41 ?ht 4171 ?ht ?sh42 ?ht ?sh51 0 5143 0 ?sh52 0 ?sh61 ?ht 6114 ?ht ?sh62 ?ht ?sh71 0 7086 0 ?sh72 0 ?sh81 ?ht 8057 ?ht ?sh82 ?ht ?sh91 0 9029 0 ?sh92 0 ?sh101 ?ht 10000 ?ht ?sh102 ?ht ?sh111 0 10971 0 ?sh112 0 ?sh121 ?ht 11943 ?ht ?sh122 ?ht ?sh131 0 12914 0 ?sh132 0 ?sh141 ?ht 13886 ?ht ?sh142 ?ht ?sh151 0 14857 0 ?sh152 0 ?sh161 ?ht 15829 ?ht ?sh162 ?ht ?sh171 0 16800 0 ?sh172 0 ?sh181 ?ht 17771 ?ht ?sh182 ?ht ?sh191 0 18743 0 ?sh192 0 ?sh201 ?ht 20000 ?ht L 20000 ?dh 0 ?dh 0 ?ht"> <!-- calculations --> <draw:equation draw:name="sh01" draw:formula="?wd+286+$0"/> <draw:equation draw:name="sh11" draw:formula="?wd+1257-$0"/> <draw:equation draw:name="sh12" draw:formula="?wd+1257+$0"/> <draw:equation draw:name="sh21" draw:formula="?wd+2229-$0"/> <draw:equation draw:name="sh22" draw:formula="?wd+2229+$0"/> <draw:equation draw:name="sh31" draw:formula="?wd+3200-$0"/> <draw:equation draw:name="sh32" draw:formula="?wd+3200+$0"/> <draw:equation draw:name="sh41" draw:formula="?wd+4171-$0"/> <draw:equation draw:name="sh42" draw:formula="?wd+4171+$0"/> <draw:equation draw:name="sh51" draw:formula="?wd+5143-$0"/> <draw:equation draw:name="sh52" draw:formula="?wd+5143+$0"/> <draw:equation draw:name="sh61" draw:formula="?wd+6114-$0"/> <draw:equation draw:name="sh62" draw:formula="?wd+6114+$0"/> <draw:equation draw:name="sh71" draw:formula="?wd+7086-$0"/> <draw:equation draw:name="sh72" draw:formula="?wd+7086+$0"/> <draw:equation draw:name="sh81" draw:formula="?wd+8057-$0"/> <draw:equation draw:name="sh82" draw:formula="?wd+8057+$0"/> <draw:equation draw:name="sh91" draw:formula="?wd+9029-$0"/> <draw:equation draw:name="sh92" draw:formula="?wd+9029+$0"/> <draw:equation draw:name="sh101" draw:formula="?wd+10000-$0"/> <draw:equation draw:name="sh102" draw:formula="?wd+10000+$0"/> <draw:equation draw:name="sh111" draw:formula="?wd+10971-$0"/> <draw:equation draw:name="sh112" draw:formula="?wd+10971+$0"/> <draw:equation draw:name="sh121" draw:formula="?wd+11943-$0"/> <draw:equation draw:name="sh122" draw:formula="?wd+11943+$0"/> <draw:equation draw:name="sh131" draw:formula="?wd+12914-$0"/> <draw:equation draw:name="sh132" draw:formula="?wd+12914+$0"/> <draw:equation draw:name="sh141" draw:formula="?wd+13886-$0"/> <draw:equation draw:name="sh142" draw:formula="?wd+13886+$0"/> <draw:equation draw:name="sh151" draw:formula="?wd+14857-$0"/> <draw:equation draw:name="sh152" draw:formula="?wd+14857+$0"/> <draw:equation draw:name="sh161" draw:formula="?wd+15829-$0"/> <draw:equation draw:name="sh162" draw:formula="?wd+15829+$0"/> <draw:equation draw:name="sh171" draw:formula="?wd+16800-$0"/> <draw:equation draw:name="sh172" draw:formula="?wd+16800+$0"/> <draw:equation draw:name="sh181" draw:formula="?wd+17771-$0"/> <draw:equation draw:name="sh182" draw:formula="?wd+17771+$0"/> <draw:equation draw:name="sh191" draw:formula="?wd+18743-$0"/> <draw:equation draw:name="sh192" draw:formula="?wd+18743+$0"/> <draw:equation draw:name="sh201" draw:formula="?wd+19714-$0"/> <draw:equation draw:name="ht" draw:formula="$1"/> <draw:equation draw:name="wd" draw:formula="$2"/> <draw:equation draw:name="dh" draw:formula="$3"/> <!-- handle for smooth,height --> <draw:handle draw:handle-position="$0 $1" draw:handle-range-x-minimum="0" draw:handle-range-x-maximum="2000" draw:handle-range-y-minimum="0" draw:handle-range-y-maximum="5000"/> <!-- handle for depth --> <draw:handle draw:handle-position="$2 $3" draw:handle-range-x-minimum="0" draw:handle-range-x-maximum="3000" draw:handle-range-y-minimum="0" draw:handle-range-y-maximum="5000"/> </draw:enhanced-geometry> </draw:custom-shape>
- 7. теперь нам нужно сохранить content.xml, запаковать файлы обратно в zip, и переименовать обратно в odg.
Пример итогового файла с волнами: Файл:CustomShape-Waves.odg