Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| lxplan [2024/04/30 15:30] – created ssm2017 | lxplan [2026/01/27 12:47] (current) – [js version] ssm2017 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== lxplan ===== | ===== lxplan ===== | ||
| ==== library ==== | ==== library ==== | ||
| - | === kind === | + | ==== fields ==== |
| - | * cmymvr | + | === graphic fields === |
| - | * ers | + | ^ Key ^ Human Key ^ |
| - | * fl | + | | loc_x | Location X | |
| - | * focus | + | | loc_y | Location Y | |
| - | | + | | loc_z | Location Z | |
| - | * led7 | + | | size_w | Width | |
| - | * led7s | + | | size_h | Height | |
| - | | + | | start_x | Start X | |
| - | | + | | start_y | Start Y | |
| - | | + | | end_x | End X | |
| - | * par | + | | end_y | End Y | |
| - | | + | | len | Length | |
| - | | + | | dir | Direction | |
| - | * strip | + | | ctl1_x | Control One X | |
| - | * zers | + | | ctl1_y | Control One Y | |
| + | | ctl2_x | Control Two X | | ||
| + | | ctl2_y | Control Two Y | | ||
| + | | scale_w | Width % | | ||
| + | | scale_h | Height % | | ||
| + | | draw_fl | Draw Fill | | ||
| + | | dr_st | Draw Stroke | | ||
| + | | fl_color | Fill Color | | ||
| + | | st_color | Stroke Color | | ||
| + | | st_w | Stroke Width | | ||
| + | | ln_style | Line Style | | ||
| + | | ch_font | Change Font | | ||
| + | | font | Font | | ||
| + | | rotate | Rotation | | ||
| + | | id | Key ID | | ||
| + | | loc_l | Left | | ||
| + | | loc_r | Right | | ||
| + | | loc_t | Top | | ||
| + | | loc_b | Bottom | | ||
| + | | start_z | Start Z | | ||
| + | | end_z | End Z | | ||
| + | | n_sides | Sides | | ||
| + | | crop_l | Crop Left | | ||
| + | | crop_r | Crop Right | | ||
| + | | crop_t | Crop Top | | ||
| + | | crop_b | Crop Bottom | | ||
| + | | 3dtype | Type | | ||
| + | === report fields === | ||
| + | ^ Key ^ Human Key ^ | ||
| + | | space | Space | | ||
| + | | color+frame | Color/Frame | | ||
| + | | color+type | Color/Type | | ||
| + | | pdist | Location | | ||
| + | | foc_pt | Focus Pt. | | ||
| + | | bnc_pt | Bounce Pt. | | ||
| + | | INPUT | Input | | ||
| + | | sheets | Sheets | | ||
| + | | full_cname | Full Color Name | | ||
| + | | patch | Patch | | ||
| + | | uuid | UUID | | ||
| + | | keep | Keep | | ||
| + | === key fields === | ||
| + | ^ Key ^ Human Key ^ RPT ^ | ||
| + | | name | Type | | | ||
| + | | fname | Full Name | | | ||
| + | | id | ID | n | | ||
| + | | sid | Symbol ID | | | ||
| + | | have | Inventory | | | ||
| + | | balance | Balance | | | ||
| + | | lamp | Lamp | | | ||
| + | | watts | Watts | | | ||
| + | | frame | Color Frame | | | ||
| + | | beam | Field Angle | n | | ||
| + | | bm_x | Field X | n | | ||
| + | | bm_y | Field Y | n | | ||
| + | | bm_w | Field Wide | n | | ||
| + | | bm_t | Field Tight | n | | ||
| + | | cd | Candela | n | | ||
| + | | cd_w | Candela Wide | n | | ||
| + | | cd_t | Candela Tight | n | | ||
| + | | abm | Beam Angle | n | | ||
| + | | abm_x | Beam X | n | | ||
| + | | abm_y | Beam Y | n | | ||
| + | | abm_w | Beam Wide | n | | ||
| + | | abm_t | Beam Tight | n | | ||
| + | | wt | Weight | | | ||
| + | | cpf | Sections Per Fixture | n | | ||
| + | | lpc | Lamps Per Circuit | n | | ||
| + | | dbl | Distance Between Lamps | n | | ||
| + | | note | More Info | | | ||
| + | | scroll | Device Params | n | | ||
| + | | dmode | Mode | n | | ||
| + | | mixtype | Mix Type | n | | ||
| + | | d_mk | Default Mark | n | | ||
| + | | acc_loc | Placement | n | | ||
| + | | d_adj_x | Default X Offset | n | | ||
| + | | d_adj_y | Default Y Offset | n | | ||
| + | | d_adj_z | Default Z Offset | n | | ||
| + | === kinds === | ||
| + | ^ Key ^ Human Key ^ Keyfields ^ Infofields ^ | ||
| + | | ers | Leko / ERS | name, fname, id, sid, have, lamp, watts, frame, beam, cd, abm, wt, note, d_mk, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, gobo, use, grp, mk, note, user1, user2, user3, userF1, userF2, userF3, foc_x, foc_y, foc_z, glr, adj_x, adj_y, adj_z | | ||
| + | | zers | Zoom Leko / ERS | name, fname, id, sid, have, lamp, watts, frame, bm_w, bm_t, cd_w, cd_t, abm_w, abm_t, wt, note, d_mk, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, gobo, use, grp, mk, note, user1, user2, user3, userF1, userF2, userF3, foc_x, foc_y, foc_z, glr, vbeam, vcd, adj_x, adj_y, adj_z | | ||
| + | | fres | Fresnel / PC | name, fname, id, sid, have, lamp, watts, frame, bm_w, bm_t, cd_w, cd_t, abm_w, abm_t, wt, note, d_mk, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, use, grp, mk, note, user1, user2, user3, userF1, userF2, userF3, foc_x, foc_y, foc_z, glr, vbeam, vcd, adj_x, adj_y, adj_z | | ||
| + | | par | PAR | name, fname, id, sid, have, lamp, watts, frame, bm_x, bm_y, cd, abm_x, abm_y, wt, note, d_mk, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, use, grp, mk, note, user1, user2, user3, userF1, userF2, userF3, foc_x, foc_y, foc_z, glr, foc_a, adj_x, adj_y, adj_z | | ||
| + | | fl | Flood | name, fname, id, sid, have, lamp, watts, frame, beam, cd, abm, wt, note, d_mk, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, use, grp, mk, note, user1, user2, user3, userF1, userF2, userF3, foc_x, foc_y, foc_z, glr, adj_x, adj_y, adj_z | | ||
| + | | strip | Striplight | name, fname, id, sid, have, lamp, watts, frame, bm_x, bm_y, cd, abm_x, abm_y, wt, cpf, lpc, dbl, note, d_mk, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, use, grp, mk, note, user1, user2, user3, foc_x, foc_y, foc_z, glr, foc_a, adj_x, adj_y, adj_z | | ||
| + | | scroll | DMX Device | name, fname, id, sid, have, note, scroll, dmode, d_mk, acc_loc | chan, chpt, cir, dim, grp, mk, user1, user2, user3, owner, dtable | | ||
| + | | mirror | ||
| + | | focus | Focus Point | name, fname, id, sid | use, foc_x, foc_y, foc_z | | ||
| + | | misc | Other | name, fname, id, sid, have, acc_loc | | | ||
| + | | mover | Automated Fixture | name, fname, id, sid, have, lamp, watts, frame, bm_w, bm_t, cd_w, cd_t, abm_w, abm_t, wt, note, scroll, dmode, d_mk, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, gobo, use, grp, mk, note, user1, user2, user3, foc_x, foc_y, foc_z, glr, vbeam, vcd, chans, dtable, mpan, mtilt, fpan, ftilt, vbm_per, adj_x, adj_y, adj_z | | ||
| + | | cmymvr | Color Mixing Automated Fixture | name, fname, id, sid, have, lamp, watts, frame, bm_w, bm_t, cd_w, cd_t, abm_w, abm_t, wt, note, scroll, dmode, mixtype, d_mk, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, gobo, use, grp, mk, note, user1, user2, user3, foc_x, foc_y, foc_z, glr, vbeam, vcd, chans, dtable, mpan, mtilt, fpan, ftilt, vbm_per, adj_x, adj_y, adj_z | | ||
| + | | rgb | Color Mixing Rectangular Beam (obsolete rgb) | name, fname, id, sid, have, lamp, watts, frame, bm_x, bm_y, cd, abm_x, abm_y, wt, note, scroll, dmode, mixtype, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, use, grp, mk, note, user1, user2, user3, userF1, userF2, userF3, foc_x, foc_y, foc_z, glr, dtable, adj_x, adj_y, adj_z | | ||
| + | | rgba | Color Mixing Rectangular Beam (obsolete rgba) | name, fname, id, sid, have, lamp, watts, frame, bm_x, bm_y, cd, abm_x, abm_y, wt, note, scroll, dmode, mixtype, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, use, grp, mk, note, user1, user2, user3, userF1, userF2, userF3, foc_x, foc_y, foc_z, glr, dtable, adj_x, adj_y, adj_z | | ||
| + | | led7 | Color Mixing Rectangular Beam | name, fname, id, sid, have, lamp, watts, frame, bm_x, bm_y, cd, abm_x, abm_y, wt, note, scroll, dmode, mixtype, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, use, grp, mk, note, user1, user2, user3, userF1, userF2, userF3, foc_x, foc_y, foc_z, glr, foc_a, dtable, adj_x, adj_y, adj_z | | ||
| + | | led7s | Color Mixing Striplight | name, fname, id, sid, have, lamp, watts, frame, bm_x, bm_y, cd, abm_x, abm_y, wt, cpf, lpc, dbl, note, scroll, dmode, mixtype, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, use, grp, mk, note, user1, user2, user3, foc_x, foc_y, foc_z, glr, dtable, adj_x, adj_y, adj_z | | ||
| + | | cmers | Color Mixing Leko / ERS | name, fname, id, sid, have, lamp, watts, frame, beam, cd, abm, wt, note, scroll, dmode, mixtype, d_mk, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, gobo, use, grp, mk, note, user1, user2, user3, userF1, userF2, userF3, foc_x, foc_y, foc_z, glr, dtable, adj_x, adj_y, adj_z | | ||
| + | | cmzers | Color Mixing Zoom ERS | name, fname, id, sid, have, lamp, watts, frame, bm_w, bm_t, cd_w, cd_t, abm_w, abm_t, wt, note, scroll, dmode, mixtype, d_mk, d_adj_x, d_adj_y, d_adj_z | hang, num, color, color2, chan, chpt, cir, dim, gobo, use, grp, mk, note, user1, user2, user3, userF1, userF2, userF3, foc_x, foc_y, foc_z, glr, vbeam, vcd, dtable, adj_x, adj_y, adj_z | | ||
| + | | cmscroll | Color Mixing DMX Device | name, fname, id, sid, have, note, scroll, dmode, mixtype, d_mk | chan, chpt, cir, dim, grp, mk, user1, user2, user3, owner, dtable | | ||
| + | | netnode | Network Device | name, fname, id, sid, have, note, dmode | note, user1, user2, user3, ipaddr, mode, univ | | ||
| + | === categories === | ||
| + | < | ||
| + | Hide | ||
| + | Position | ||
| + | Light | ||
| + | More | ||
| + | Focus | ||
| + | Device | ||
| + | 3D | ||
| + | </ | ||
| + | === sub indices === | ||
| + | ^ Key ^ Human Key ^ Subindex ^ Abbr ^ GDTF ^ | ||
| + | | shutter | Shutter | 101 | sht | Shutter1 | | ||
| + | | strobe | Strobe | 102 | St | StrobeRate, | ||
| + | | wh1 | Gobo Wheel | 130 | gW | Gobo1 | | ||
| + | | wh1rot | Gobo Rotation | 131 | gWr | Gobo1PosRotate | | ||
| + | | wh1fun | Gobo Function | 132 | gWf | | | ||
| + | | wh2rot | Gobo 2 Rotation | 134 | gW2r | Gobo2PosRotate | | ||
| + | | wh2fun | Gobo 2 Function | 135 | gW2f | | | ||
| + | | shut1a | Shutter 1 | 151 | sh1 | Blade1A | | ||
| + | | shut1b | Shutter 1b | 152 | sh1b | Blade1B, | ||
| + | | shut2a | Shutter 2 | 153 | sh2 | Blade2A | | ||
| + | | shut2b | Shutter 2b | 154 | sh2b | Blade2B, | ||
| + | | shut3a | Shutter 3 | 155 | sh3 | Blade3A | | ||
| + | | shut3b | Shutter 3b | 156 | sh3b | Blade3B, | ||
| + | | shut4a | Shutter 4 | 157 | sh4 | Blade4A | | ||
| + | | shut4b | Shutter 4b | 158 | sh4b | Blade4B, | ||
| + | | shutrot | Shutter Rotation | 160 | shr | ShaperRot | | ||
| + | | spd_c | Color Speed | 171 | clrspd | ColorMixMSpeed | | ||
| + | | spd_pt | Pan/Tilt Speed | 172 | p/tspd | PositionMSpeed | | ||
| + | | spd_b | Beam Speed | 174 | bmspd | IrisMSpeed, | ||
| + | | spd_e | Edge Speed | 175 | edgspd | FocusMSpeed | | ||
| + | | spd_fn | Fan Speed | 177 | fnspd | | | ||
| + | | fx | FX | 180 | FX | | | ||
| + | | fx1rot | Wheel 1 Rotation | 183 | wh1r | | | ||
| + | | prism | Prism | 189 | pri | Prism1 | | ||
| + | | cntl | Control | 190 | cntl | Control1 | | ||
| + | | mac | Macros | 191 | mac | | | ||
| + | | mac_c | Color Macros | 192 | Cmac | ColorMacro1 | | ||
| + | | reset | Reset | 199 | Rst | FixtureCalibrationReset | | ||
| + | | Mode | Mode | 200 | mode | Mode | | ||
| + | === lt info fields === | ||
| + | ^ Key ^ Human Key ^ Inner ^ Single ^ Numeric ^ Angle ^ Dist ^ Category ^ Subindex ^ Abbr ^ GDTF ^ Control ^ Font Name ^ Font Size ^ RPT ^ | ||
| + | | hang | Position | | | | 0.0 | 0.0 | 2 | | | | | Helvetica | 10 | | | ||
| + | | num | # | y | | y | 0.0 | 0.0 | 2 | | | | | Helvetica | 6 | | | ||
| + | | color | Color | | | | 0.0 | 7.0 | 2 | 2 | frame | Color1 | y | Times-Italic | 9 | | | ||
| + | | color2 | Frost | | | | 0.0 | 14.0 | 3 | 9 | | Frost1 | y | Times-Roman | 9 | | | ||
| + | | chan | Channel | | | y | 180.0 | 8.0 | 2 | | | | | Helvetica-Bold | 9 | | | ||
| + | | chpt | Channel Part | | | y | 0.0 | 0.0 | 0 | | | | | Helvetica | 12 | | | ||
| + | | cir | Circuit | | | y | 180.0 | 20.0 | 3 | | | | | Helvetica | 10 | | | ||
| + | | dim | Address | | | y | 180.0 | 20.0 | 2 | | | | | Helvetica | 10 | | | ||
| + | | gobo | Template | | | | 0.0 | 20.0 | 2 | 10 | gobo | Gobo1 | y | Helvetica | 10 | | | ||
| + | | use | Use | | | | 0.0 | 20.0 | 2 | | | | | Helvetica | 10 | | | ||
| + | | grp | Group | | | | 0.0 | 0.0 | 2 | | | | | Helvetica | 10 | | | ||
| + | | mk | Mark | y | | | 0.0 | 6.0 | 3 | | | | | Helvetica | 6 | | | ||
| + | | note | Note | | | | 0.0 | 0.0 | 3 | | | | | Helvetica | 10 | | | ||
| + | | user1 | User Data | | | | 0.0 | 0.0 | 0 | | | | | Helvetica | 12 | | | ||
| + | | user2 | User Data 2 | | | | 0.0 | 0.0 | 0 | | | | | Helvetica | 12 | | | ||
| + | | user3 | User Data 3 | | | | 0.0 | 0.0 | 0 | | | | | Helvetica | 12 | | | ||
| + | | userF1 | Focus Center | | | | 0.0 | 0.0 | 0 | | | | | Helvetica | 12 | | | ||
| + | | userF2 | Focus Beam | | | | 0.0 | 0.0 | 0 | | | | | Helvetica | 12 | | | ||
| + | | userF3 | Focus Cuts | | | | 0.0 | 0.0 | 0 | | | | | Helvetica | 12 | | | ||
| + | | foc_x | Focus X | | | | 0.0 | 0.0 | 4 | | | | | Helvetica | 10 | | | ||
| + | | foc_y | Focus Y | | | | 0.0 | 0.0 | 4 | | | | | Helvetica | 10 | | | ||
| + | | foc_z | Focus Height | | | | 0.0 | 0.0 | 4 | | | | | Helvetica | 10 | n | | ||
| + | | glr | Rendering | | | | 0.0 | 0.0 | 6 | | | | | Helvetica | 12 | n | | ||
| + | | edge | Edge | | | | 0.0 | 0.0 | 4 | 13 | edge | Focus1 | y | Helvetica | 12 | n | | ||
| + | | vbeam | Spot/Flood | | | | 0.0 | 0.0 | 4 | 8 | zoom | Zoom | y | Helvetica | 10 | n | | ||
| + | | vcd | Cd@Spot/ | ||
| + | | foc_a | Beam Axis | | | | 0.0 | 0.0 | 4 | 12 | Bma | ShaperRot | y | Helvetica | 10 | | | ||
| + | | chans | Channels | | | | 0.0 | 0.0 | 0 | | | | | Helvetica | 12 | | | ||
| + | | owner | Owner ID | | | | 0.0 | 0.0 | 5 | | | | | Helvetica | 10 | | | ||
| + | | dtable | Parameters | | | | 0.0 | 0.0 | 5 | | | | | Helvetica | 12 | | | ||
| + | | mpan | Pan | | | | 0.0 | 0.0 | 5 | 3 | pan | Pan | y | Helvetica | 12 | n | | ||
| + | | mtilt | Tilt | | | | 0.0 | 0.0 | 5 | 5 | tilt | Tilt | y | Helvetica | 12 | n | | ||
| + | | vbm_per | Iris% | | y | | 0.0 | 0.0 | 5 | 7 | iris | Iris | y | Helvetica | 12 | n | | ||
| + | | intensity | Intensity | | | | 0.0 | 0.0 | 5 | 1 | int% | Dimmer | y | Helvetica | 12 | n | | ||
| + | | mixHue | Hue | | | | 0.0 | 0.0 | 5 | 19 | hue | HSB_Hue | y | Helvetica | 12 | n | | ||
| + | | mixSat | Saturation | | | | 0.0 | 0.0 | 5 | 20 | sat. | HSB_Saturation | y | Helvetica | 12 | n | | ||
| + | | mixCy | Cyan | | | | 0.0 | 0.0 | 5 | 21 | Cy | ColorSub_C, | ||
| + | | mixCIEx | Color X | | | | 0.0 | 0.0 | 5 | 17 | cX | CIE_X | y | Helvetica | 12 | n | | ||
| + | | mixCIEy | Color Y | | | | 0.0 | 0.0 | 5 | 18 | cY | CIE_Y | y | Helvetica | 12 | n | | ||
| + | | mixMg | Magenta | | | | 0.0 | 0.0 | 5 | 22 | Mg | ColorSub_M, | ||
| + | | mixYl | Yellow | | | | 0.0 | 0.0 | 5 | 23 | Yl | ColorSub_Y, | ||
| + | | mixRd | Red | | | | 0.0 | 0.0 | 5 | 24 | Rd | ColorAdd_R, | ||
| + | | mixGn | Green | | | | 0.0 | 0.0 | 5 | 25 | Gn | ColorAdd_G, | ||
| + | | mixBl | Blue | | | | 0.0 | 0.0 | 5 | 26 | Bl | ColorAdd_B, | ||
| + | | mixRo | Red-Orange | | | | 0.0 | 0.0 | 5 | 27 | Ro | | y | Helvetica | 12 | n | | ||
| + | | mixAm | Amber | | | | 0.0 | 0.0 | 5 | 28 | Am | ColorAdd_RY, | ||
| + | | mixIn | Indigo | | | | 0.0 | 0.0 | 5 | 29 | Ig | ColorAdd_BM | y | Helvetica | 12 | n | | ||
| + | | mixWh | White | | | | 0.0 | 0.0 | 5 | 30 | Wh | ColorAdd_W | y | Helvetica | 12 | n | | ||
| + | | mixWW | Warm White | | | | 0.0 | 0.0 | 5 | 31 | wW | ColorAdd_WW | y | Helvetica | 12 | n | | ||
| + | | mixCW | Cool White | | | | 0.0 | 0.0 | 5 | 32 | cW | ColorAdd_CW | y | Helvetica | 12 | n | | ||
| + | | mixLm | Lime | | | | 0.0 | 0.0 | 5 | 33 | Lm | ColorAdd_GY, | ||
| + | | mixUV | UV | | | | 0.0 | 0.0 | 5 | 34 | uv | ColorAdd_UV | y | Helvetica | 12 | n | | ||
| + | | adj_x | X offset | | | | 0.0 | 0.0 | 6 | | | | | Helvetica | 12 | n | | ||
| + | | adj_y | Y offset | | | | 0.0 | 0.0 | 6 | | | | | Helvetica | 12 | n | | ||
| + | | adj_z | Z offset | | | | 0.0 | 0.0 | 6 | | | | | Helvetica | 12 | n | | ||
| + | | ipaddr | IP Address | | y | | 0.0 | 9.0 | 5 | | | | | CourierNewPSMT | 12 | | | ||
| + | | mode | Mode | | | | 0.0 | 0.0 | 5 | | | | | ArialNarrow | 12 | | | ||
| + | | univ | Universe | | | y | 180.0 | 7.0 | 5 | | | | | Arial-Black | 12 | | | ||
| + | === pos info fields === | ||
| + | ^ Key ^ Human Key ^ Inner ^ Single ^ Angle ^ Dist ^ Category ^ Font Name ^ Font Size ^ | ||
| + | | pname | Name | y | | 0.0 | 10.0 | 1 | Helvetica-BoldOblique | 12 | | ||
| + | | ht | Height | y | | 0.0 | 0.0 | 1 | Helvetica | 10 | | ||
| + | | n_o | Numbering | y | | 0.0 | 0.0 | 0 | Helvetica | 10 | | ||
| + | | l_o | Layout | y | | 0.0 | 0.0 | 0 | Helvetica-BoldOblique | 12 | | ||
| + | | space | Spacing | y | | 0.0 | 0.0 | 1 | Helvetica | 12 | | ||
| + | | l_off | Offset Layout | y | | 0.0 | 0.0 | 0 | Helvetica | 12 | | ||
| + | | pnote | Note | y | y | 0.0 | 0.0 | 1 | Helvetica | 10 | | ||
| + | | map_st_x | Map Start X | y | | 0.0 | 0.0 | 6 | Helvetica | 10 | | ||
| + | | map_st_y | Map Start Y | y | | 0.0 | 0.0 | 6 | Helvetica | 10 | | ||
| + | | map_st_z | Map Start Z | y | | 0.0 | 0.0 | 6 | Helvetica | 10 | | ||
| + | | map_ed_x | Map End X | y | | 0.0 | 0.0 | 6 | Helvetica | 10 | | ||
| + | | map_ed_y | Map End Y | y | | 0.0 | 0.0 | 6 | Helvetica | 10 | | ||
| + | | map_ed_z | Map End Z | y | | 0.0 | 0.0 | 6 | Helvetica | 10 | | ||
| + | | map_axis | Map Axis | y | | 0.0 | 0.0 | 6 | Helvetica | 12 | | ||
| + | ==== Examples ==== | ||
| + | ===== template ===== | ||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | <key> | ||
| + | < | ||
| + | < | ||
| + | #Thu Jan 15 16:34:27 CET 2026 | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | #Thu Jan 15 16:34:27 CET 2026 | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | <key> | ||
| + | < | ||
| + | < | ||
| + | #Tue Apr 30 09:39:12 CEST 2024 | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | #Tue Apr 30 09:39:12 CEST 2024 | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <note /> | ||
| + | <have /> | ||
| + | < | ||
| + | <d_mk /> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <d_adj_y /> | ||
| + | <d_adj_x /> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | <e> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </e> | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Lib maker ==== | ||
| + | made with claude.ai. create symbol with lxplan or import dxf then keep only one layer and then embed the symbol inside a group and then run the python script. | ||
| + | <code python> | ||
| + | import tkinter as tk | ||
| + | from tkinter import filedialog, messagebox, ttk | ||
| + | import xml.etree.ElementTree as ET | ||
| + | import os | ||
| + | |||
| + | class XMLExtractorApp: | ||
| + | def __init__(self, | ||
| + | self.root = root | ||
| + | self.root.title(" | ||
| + | self.root.geometry(" | ||
| + | self.root.resizable(False, | ||
| + | | ||
| + | self.input_file = None | ||
| + | self.tree = None | ||
| + | | ||
| + | self.create_widgets() | ||
| + | | ||
| + | def create_widgets(self): | ||
| + | # Title | ||
| + | title = tk.Label(self.root, | ||
| + | font=(" | ||
| + | title.pack(pady=10) | ||
| + | | ||
| + | # Info label | ||
| + | info = tk.Label(self.root, | ||
| + | | ||
| + | info.pack() | ||
| + | | ||
| + | # Input file frame | ||
| + | input_frame = tk.Frame(self.root) | ||
| + | input_frame.pack(pady=10, | ||
| + | | ||
| + | tk.Label(input_frame, | ||
| + | font=(" | ||
| + | | ||
| + | file_display_frame = tk.Frame(input_frame) | ||
| + | file_display_frame.pack(fill=tk.X, | ||
| + | | ||
| + | self.file_label = tk.Label(file_display_frame, | ||
| + | | ||
| + | self.file_label.pack(side=tk.LEFT, | ||
| + | | ||
| + | browse_btn = tk.Button(file_display_frame, | ||
| + | command=self.browse_file) | ||
| + | browse_btn.pack(side=tk.RIGHT) | ||
| + | | ||
| + | # Output file frame | ||
| + | output_frame = tk.Frame(self.root) | ||
| + | output_frame.pack(pady=10, | ||
| + | | ||
| + | tk.Label(output_frame, | ||
| + | font=(" | ||
| + | | ||
| + | self.output_entry = tk.Entry(output_frame, | ||
| + | self.output_entry.pack(fill=tk.X, | ||
| + | self.output_entry.insert(0, | ||
| + | | ||
| + | # Additional fields frame | ||
| + | fields_frame = tk.Frame(self.root) | ||
| + | fields_frame.pack(pady=10, | ||
| + | | ||
| + | tk.Label(fields_frame, | ||
| + | font=(" | ||
| + | | ||
| + | # Name field (displayed as " | ||
| + | name_frame = tk.Frame(fields_frame) | ||
| + | name_frame.pack(fill=tk.X, | ||
| + | tk.Label(name_frame, | ||
| + | self.name_entry = tk.Entry(name_frame, | ||
| + | self.name_entry.pack(side=tk.LEFT, | ||
| + | | ||
| + | # ID field | ||
| + | id_frame = tk.Frame(fields_frame) | ||
| + | id_frame.pack(fill=tk.X, | ||
| + | tk.Label(id_frame, | ||
| + | self.id_entry = tk.Entry(id_frame, | ||
| + | self.id_entry.pack(side=tk.LEFT, | ||
| + | | ||
| + | # Fname field | ||
| + | fname_frame = tk.Frame(fields_frame) | ||
| + | fname_frame.pack(fill=tk.X, | ||
| + | tk.Label(fname_frame, | ||
| + | self.fname_entry = tk.Entry(fname_frame, | ||
| + | self.fname_entry.pack(side=tk.LEFT, | ||
| + | | ||
| + | # Kind field (dropdown) | ||
| + | kind_frame = tk.Frame(fields_frame) | ||
| + | kind_frame.pack(fill=tk.X, | ||
| + | tk.Label(kind_frame, | ||
| + | | ||
| + | # Dictionary mapping display names to values | ||
| + | self.kind_options = { | ||
| + | "eko / ERS": " | ||
| + | "Zoom Leko / ERS": " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | "DMX Device": | ||
| + | " | ||
| + | "Focus Point": | ||
| + | " | ||
| + | " | ||
| + | "Color Mixing Automated Fixture": | ||
| + | "Color Mixing Rectangular Beam (obsolete rgb)": " | ||
| + | "Color Mixing Rectangular Beam (obsolete rgba)": | ||
| + | "Color Mixing Rectangular Beam": " | ||
| + | "Color Mixing Striplight": | ||
| + | "Color Mixing Leko / ERS": " | ||
| + | "Color Mixing Zoom ERS": " | ||
| + | "Color Mixing DMX Device": | ||
| + | " | ||
| + | } | ||
| + | | ||
| + | self.kind_var = tk.StringVar() | ||
| + | self.kind_dropdown = ttk.Combobox(kind_frame, | ||
| + | values=list(self.kind_options.keys()), | ||
| + | state=" | ||
| + | font=(" | ||
| + | self.kind_dropdown.pack(side=tk.LEFT, | ||
| + | self.kind_dropdown.current(0) | ||
| + | | ||
| + | # Extract button | ||
| + | extract_btn = tk.Button(self.root, | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | extract_btn.pack(pady=20) | ||
| + | | ||
| + | # Status label | ||
| + | self.status_label = tk.Label(self.root, | ||
| + | | ||
| + | self.status_label.pack(pady=5) | ||
| + | | ||
| + | def browse_file(self): | ||
| + | filename = filedialog.askopenfilename( | ||
| + | title=" | ||
| + | filetypes=[(" | ||
| + | ) | ||
| + | if filename: | ||
| + | self.input_file = filename | ||
| + | self.file_label.config(text=os.path.basename(filename), | ||
| + | self.status_label.config(text=" | ||
| + | | ||
| + | def extract_and_convert(self): | ||
| + | # Validate inputs | ||
| + | if not self.input_file: | ||
| + | messagebox.showerror(" | ||
| + | return | ||
| + | | ||
| + | output_filename = self.output_entry.get().strip() | ||
| + | if not output_filename: | ||
| + | messagebox.showerror(" | ||
| + | return | ||
| + | | ||
| + | # Get the directory of the input file and create full output path | ||
| + | input_dir = os.path.dirname(self.input_file) | ||
| + | output_file = os.path.join(input_dir, | ||
| + | | ||
| + | try: | ||
| + | # Parse the LXXPLOT file (XML format) | ||
| + | tree = ET.parse(self.input_file) | ||
| + | root = tree.getroot() | ||
| + | | ||
| + | # Find the shape tag using the xpath: / | ||
| + | shape_element = root.find(" | ||
| + | | ||
| + | if shape_element is None: | ||
| + | messagebox.showerror(" | ||
| + | "Path '/ | ||
| + | return | ||
| + | | ||
| + | # Create the new XML structure: / | ||
| + | new_root = ET.Element(" | ||
| + | kentry = ET.SubElement(new_root, | ||
| + | | ||
| + | # Add name, kind, and fname as siblings of custom with user-provided values | ||
| + | name = ET.SubElement(kentry, | ||
| + | name.text = self.name_entry.get().strip() | ||
| + | | ||
| + | id_elem = ET.SubElement(kentry, | ||
| + | id_elem.text = self.id_entry.get().strip() | ||
| + | | ||
| + | kind = ET.SubElement(kentry, | ||
| + | # Get the value corresponding to the selected display name | ||
| + | selected_display = self.kind_var.get() | ||
| + | kind.text = self.kind_options.get(selected_display, | ||
| + | | ||
| + | fname = ET.SubElement(kentry, | ||
| + | fname.text = self.fname_entry.get().strip() | ||
| + | | ||
| + | custom = ET.SubElement(kentry, | ||
| + | | ||
| + | symbol = ET.SubElement(custom, | ||
| + | group = ET.SubElement(symbol, | ||
| + | shape = ET.SubElement(group, | ||
| + | | ||
| + | # Copy the content from shape element to the new shape element | ||
| + | shape.text = shape_element.text | ||
| + | shape.attrib = shape_element.attrib | ||
| + | | ||
| + | # Copy all child elements from original shape to new shape | ||
| + | for child in shape_element: | ||
| + | shape.append(child) | ||
| + | | ||
| + | # Create and write the new LXKEY file | ||
| + | new_tree = ET.ElementTree(new_root) | ||
| + | ET.indent(new_tree, | ||
| + | new_tree.write(output_file, | ||
| + | | ||
| + | self.status_label.config( | ||
| + | text=f" | ||
| + | fg=" | ||
| + | ) | ||
| + | messagebox.showinfo(" | ||
| + | f" | ||
| + | | ||
| + | except ET.ParseError as e: | ||
| + | messagebox.showerror(" | ||
| + | f" | ||
| + | self.status_label.config(text=" | ||
| + | except Exception as e: | ||
| + | messagebox.showerror(" | ||
| + | self.status_label.config(text=" | ||
| + | |||
| + | if __name__ == " | ||
| + | root = tk.Tk() | ||
| + | app = XMLExtractorApp(root) | ||
| + | root.mainloop() | ||
| + | </ | ||
| + | |||
| + | ==== js version ==== | ||
| + | <code javascript> | ||
| + | < | ||
| + | <html lang=" | ||
| + | |||
| + | < | ||
| + | <meta charset=" | ||
| + | <meta name=" | ||
| + | < | ||
| + | < | ||
| + | body { | ||
| + | font-family: | ||
| + | margin: 20px; | ||
| + | line-height: | ||
| + | } | ||
| + | |||
| + | textarea { | ||
| + | width: 100%; | ||
| + | height: 200px; | ||
| + | margin: 10px 0; | ||
| + | } | ||
| + | |||
| + | button { | ||
| + | padding: 8px 16px; | ||
| + | background-color: | ||
| + | color: white; | ||
| + | border: none; | ||
| + | border-radius: | ||
| + | cursor: pointer; | ||
| + | } | ||
| + | |||
| + | button: | ||
| + | background-color: | ||
| + | } | ||
| + | |||
| + | .test-result> | ||
| + | font-weight: | ||
| + | padding: 5px; | ||
| + | } | ||
| + | |||
| + | .valid { | ||
| + | color: white; | ||
| + | background-color: | ||
| + | } | ||
| + | |||
| + | .invalid { | ||
| + | color: white; | ||
| + | background-color: | ||
| + | } | ||
| + | |||
| + | .no-answer { | ||
| + | color: black; | ||
| + | background-color: | ||
| + | } | ||
| + | |||
| + | .container { | ||
| + | border: 1px solid black; | ||
| + | border-radius: | ||
| + | margin: 5px; | ||
| + | padding: 10px; | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | < | ||
| + | <div class=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <ul> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | les autres si besoin</ | ||
| + | < | ||
| + | bibliotheque (voir l' | ||
| + | </ul> | ||
| + | </p> | ||
| + | </ | ||
| + | </ | ||
| + | <div class=" | ||
| + | < | ||
| + | < | ||
| + | <input type=" | ||
| + | </ | ||
| + | <div class=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | class=" | ||
| + | < | ||
| + | <button onclick=" | ||
| + | </ | ||
| + | <div id=" | ||
| + | < | ||
| + | <div class=" | ||
| + | <div id=" | ||
| + | < | ||
| + | <div> | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | </ | ||
| + | <div> | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | </ | ||
| + | <div> | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | </ | ||
| + | <div> | ||
| + | <label for=" | ||
| + | <select id=" | ||
| + | <option value=""> | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | <div id=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | Cliquer içi pour editer les champs optionnels | ||
| + | </ | ||
| + | <div id=" | ||
| + | </ | ||
| + | </ | ||
| + | <button id=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | // declaration des variables | ||
| + | var xmlInputContent = ""; | ||
| + | var xmlOutputContent = ""; | ||
| + | var shape = ""; | ||
| + | var isLxxplot = false; | ||
| + | var hasShape = false; | ||
| + | var hasGroup = false; | ||
| + | var filledOptionalFields = undefined; | ||
| + | var filledFields = []; | ||
| + | var isLxxplotDiv = document.getElementById(" | ||
| + | var hasShapeDiv = document.getElementById(" | ||
| + | var hasGroupDiv = document.getElementById(" | ||
| + | var dataFields = document.getElementById(" | ||
| + | var dataTypeSelect = document.getElementById(' | ||
| + | var dynamicFields = document.getElementById(' | ||
| + | |||
| + | // Tableau des options de la liste de sélection | ||
| + | const selectOptions = [ | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | ]; | ||
| + | |||
| + | // Tableau des champs disponibles | ||
| + | const availableFields = [ | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | { id: " | ||
| + | ]; | ||
| + | |||
| + | // reinitialise les resultats du test de fichier | ||
| + | function resetChecks() { | ||
| + | let content = '< | ||
| + | isLxxplotDiv.innerHTML = content; | ||
| + | hasShapeDiv.innerHTML = content; | ||
| + | hasGroupDiv.innerHTML = content; | ||
| + | dataFields.hidden = true; | ||
| + | } | ||
| + | |||
| + | // action quand le document est bien chargé | ||
| + | document.addEventListener(' | ||
| + | resetChecks(); | ||
| + | fillSelectOptions(); | ||
| + | }); | ||
| + | |||
| + | // Remplit la liste déroulante de type d' | ||
| + | function fillSelectOptions() { | ||
| + | dataTypeSelect.innerHTML = '< | ||
| + | selectOptions.forEach((option) => { | ||
| + | const optElement = document.createElement(" | ||
| + | optElement.value = option.id; | ||
| + | optElement.textContent = option.label; | ||
| + | dataTypeSelect.appendChild(optElement); | ||
| + | }); | ||
| + | } | ||
| + | |||
| + | // ecoute si le type d' | ||
| + | dataTypeSelect.addEventListener(" | ||
| + | const selectedOptionId = dataTypeSelect.value; | ||
| + | displayDynamicFields(selectedOptionId); | ||
| + | }); | ||
| + | |||
| + | // Affiche les champs optionnels en fonction du type d' | ||
| + | function displayDynamicFields(selectedOptionId) { | ||
| + | dynamicFields.innerHTML = "";// | ||
| + | |||
| + | // Trouve l' | ||
| + | const selectedOption = selectOptions.find((option) => option.id === selectedOptionId); | ||
| + | |||
| + | if (!selectedOption || !selectedOption.fields) return; | ||
| + | |||
| + | // Récupère les IDs des champs à afficher | ||
| + | const fieldIds = selectedOption.fields.split(";" | ||
| + | |||
| + | // Affiche chaque champ | ||
| + | fieldIds.forEach((fieldId) => { | ||
| + | |||
| + | const field = availableFields.find((f) => f.id === fieldId); | ||
| + | |||
| + | if (field) { | ||
| + | const fieldDiv = document.createElement(" | ||
| + | fieldDiv.innerHTML = ` | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | `; | ||
| + | dynamicFields.appendChild(fieldDiv); | ||
| + | } | ||
| + | }); | ||
| + | } | ||
| + | |||
| + | // charge le fichier lxxplot | ||
| + | function loadFile() { | ||
| + | const fileInput = document.getElementById(' | ||
| + | const file = fileInput.files[0]; | ||
| + | if (!file) { | ||
| + | alert(" | ||
| + | return; | ||
| + | } | ||
| + | |||
| + | const reader = new FileReader(); | ||
| + | reader.onload = function (e) { | ||
| + | xmlInputContent = e.target.result; | ||
| + | dataFields.hidden = !runChecks(); | ||
| + | }; | ||
| + | reader.readAsText(file); | ||
| + | } | ||
| + | |||
| + | // verifie le contenu du fichier lxxplot | ||
| + | function runChecks() { | ||
| + | isLxxplot = checkIfValidPath("/ | ||
| + | hasShape = checkIfValidPath("/ | ||
| + | if (hasShape) { | ||
| + | getShape(); | ||
| + | } | ||
| + | hasGroup = checkIfValidPath("/ | ||
| + | return (isLxxplot && hasShape && hasGroup); | ||
| + | } | ||
| + | |||
| + | // petit utilitaire pour tester le contenu du fichier lxxplot | ||
| + | function checkIfValidPath(xpathQuery, | ||
| + | resultDiv = document.getElementById(resultDiv); | ||
| + | let status = parseXml(xpathQuery).status; | ||
| + | resultDiv.innerHTML = status ? '< | ||
| + | return status; | ||
| + | } | ||
| + | |||
| + | // petit utilitaire permettant de tester le xml du fichier lxxplot | ||
| + | function parseXml(xpathQuery) { | ||
| + | try { | ||
| + | // Parser le XML | ||
| + | const parser = new DOMParser(); | ||
| + | const xmlDoc = parser.parseFromString(xmlInputContent, | ||
| + | |||
| + | // Exécuter la requête XPath | ||
| + | const xpathResult = document.evaluate( | ||
| + | xpathQuery, | ||
| + | xmlDoc, | ||
| + | null, | ||
| + | XPathResult.ANY_TYPE, | ||
| + | null | ||
| + | ); | ||
| + | |||
| + | let result = []; | ||
| + | let node = xpathResult.iterateNext(); | ||
| + | while (node) { | ||
| + | result.push(node.textContent); | ||
| + | node = xpathResult.iterateNext(); | ||
| + | } | ||
| + | |||
| + | // Afficher le résultat | ||
| + | if (result.length > 0) { | ||
| + | return { " | ||
| + | } else { | ||
| + | return { " | ||
| + | } | ||
| + | } catch (e) { | ||
| + | console.error(" | ||
| + | return { " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // reuperer la shape depuis le fichier lxxplot | ||
| + | function getShape() { | ||
| + | try { | ||
| + | // Parser le XML | ||
| + | const parser = new DOMParser(); | ||
| + | const xmlDoc = parser.parseFromString(xmlInputContent, | ||
| + | |||
| + | // Exécuter la requête XPath | ||
| + | const xpathResult = document.evaluate( | ||
| + | "/ | ||
| + | xmlDoc, | ||
| + | null, | ||
| + | XPathResult.FIRST_ORDERED_NODE_TYPE, | ||
| + | null | ||
| + | ); | ||
| + | |||
| + | shape = xpathResult.singleNodeValue; | ||
| + | } catch (e) { | ||
| + | console.error(" | ||
| + | return { " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // action quand on appuie sur le bouton "creer la librairie" | ||
| + | function buildOutput() { | ||
| + | if (checkFilledFields()) { | ||
| + | buildXmlOutput(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // verifier que les champs soient bien remplis | ||
| + | function checkFilledFields() { | ||
| + | filledFields = []; | ||
| + | getFilledChildren(' | ||
| + | if (Object.keys(filledFields).length < 3 || dataTypeSelect.value === '' | ||
| + | alert(" | ||
| + | return false; | ||
| + | } | ||
| + | getFilledChildren(' | ||
| + | return true; | ||
| + | } | ||
| + | |||
| + | function getFilledChildren(id) { | ||
| + | // recupere les champs | ||
| + | const divElement = document.getElementById(id); | ||
| + | const inputNodes = divElement.getElementsByTagName(' | ||
| + | |||
| + | // teste les champs un par un | ||
| + | for (let i = 0; i < inputNodes.length; | ||
| + | if (inputNodes[i].value.trim() !== '' | ||
| + | filledFields.push({ " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // fabrique le fichier de sortie et l' | ||
| + | function buildXmlOutput() { | ||
| + | // creation du document xml | ||
| + | const xmlDoc = new DOMParser().parseFromString('< | ||
| + | const root = xmlDoc.documentElement; | ||
| + | |||
| + | // creation des elements basiques | ||
| + | const kentryElement = xmlDoc.createElement(' | ||
| + | const customElement = xmlDoc.createElement(" | ||
| + | const symbolElement = xmlDoc.createElement(" | ||
| + | const groupElement = xmlDoc.createElement(" | ||
| + | const kindElement = xmlDoc.createElement(" | ||
| + | kindElement.textContent = dataTypeSelect.value; | ||
| + | |||
| + | // ajout des elements basiques dans l' | ||
| + | groupElement.appendChild(shape); | ||
| + | symbolElement.appendChild(groupElement); | ||
| + | customElement.appendChild(symbolElement); | ||
| + | kentryElement.appendChild(kindElement); | ||
| + | |||
| + | // ajout de chaque champ rempli | ||
| + | filledFields.forEach((item) => { | ||
| + | const newItem = xmlDoc.createElement(item.id); | ||
| + | newItem.textContent = item.value; | ||
| + | kentryElement.appendChild(newItem); | ||
| + | }); | ||
| + | |||
| + | kentryElement.appendChild(customElement); | ||
| + | root.appendChild(kentryElement); | ||
| + | |||
| + | // conversion en chaine de characteres | ||
| + | const xmlString = "<? | ||
| + | console.log(xmlString); | ||
| + | |||
| + | // creation fichier | ||
| + | const blob = new Blob([xmlString], | ||
| + | const url = URL.createObjectURL(blob); | ||
| + | |||
| + | // envoi du fichier | ||
| + | const a = document.createElement(' | ||
| + | a.href = url; | ||
| + | a.download = ' | ||
| + | a.click(); | ||
| + | |||
| + | // nettoyage | ||
| + | URL.revokeObjectURL(url); | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||