Svg import, "inner" parts are imported as separate objects

hello

when importing a svg object which has “holes” or “parts” (inner shapes inside the main shape, or many shapes in one object), the SVG path is imported as many separate objects, instead of one shape made of many paths.

this is particularly tedious when you import shapes with a lot of holes and then moves the shapes to arrange them on a limited surface

  • you have to “ungroup” the imported lot
  • you then have to make groups again, or use the boolean tools to restore the original idea.

in inkscape, this is a unique path of 20 nodes.

copy/paste in LB, then ungroup, the holes are now independant shapes which do not “follow” the outer shape when moving.
image

maybe the problem is in the “ungrouping”… if i import 2 different objects, the resulting object is a “group”, so i must ungroup, but any object that is made of many paths is itself ungrouped (same as inkscape function “separate path”) in as many different objects as there are distinct paths.

I am not understanding the issue here. I have read this several times and do not understand what you are after, or the desired result you are wanting to achieve.

You can control if imported shapes are brought into LightBurn grouped or not here:

I can recreate this design using only 5 distinct shapes, 1 rectangle and 4 circles, then set the cut to process the inner shapes first, the circles, followed by the rectangle cut.

actually, i design in inkscape.

i draw a blue rectangle. draw 3 little rectangles and use inkscape boolean tools to “remove” the inner parts.

in inkscape i have only ONE object. i can edit the nodes of it directly as this is one path only.

i add a red rectangle. i have now TWO objects. (see the XML : there is a “path” and a “rect” only)

copy/paste into LB, without grouping asked.

i have now “one” selection (group) only. (apparently the option to not group at import is not relevant for copy/paste)

image

i ungroup this (once!)

image

and now, i do NOT have 2 objects as expected (a red rectangle and a blue “complex object with holes”), but five objects. the 3 small rectangles have been “removed” from the main shape and treated as independant objects.

moving the outer shape, the inner rectangles do not move with it…

in my opinion, the blue object shall remain exactly this : ONE object. it should not be decomposed when ungrouping.

trying another idea…

i group the 3 small rectangle, then group this group with the big rectangle.

copy/paste.

again, i have 1 group.

ungrouping it, i have now 2 objects : the red one, and the blue one which acts as a whole.

if i further ungroup the blue, i have a big rectangle, and a group of 3 small ones.

so, LB do preserve the grouping from SVG (svg:g in the XML), but does not preserve the independent parts of an unique shape.

trying to explain with code…
a rectangle inside a rectangle has this “path” in SVG

M 334.86523 290.1543 L 334.86523 360.86523 L 427.79883 360.86523 L 427.79883 290.1543 L 334.86523 290.1543 z M 349.51367 331.57031 L 390.92969 331.57031 L 390.92969 349.75391 L 349.51367 349.75391 L 349.51367 331.57031 z

the “breaking point” is a “z M” point … z closes the path, M move the cursor to the start of the next path. i believe LB do stop at the z instruction and finishes the object, then starts another one… except this is not a different object, it is another part of the same object.

When I use the “Combine” Boolean function in Inkscape, and then copy and paste to Lightburn, LB keeps the 4 circles and outer rectangle grouped together.

my problem is not the import of ONE shape, this is the mix of shapes.

see this, from inkscape :

i have 2 objects that interest me. the blue one is composed from 2 paths (resulting from the boolean addition of 3 circles), and the red one is one circle.

when importing in LB, i want to get the same structure (2 objects), but i have either

  • 1 object which is the group of everything
    or
  • 3 objects (2 blue, 1 red) all separated.

what i want is to keep the blue object as ONE, where i could edit the nodes as in inkscape. it is important to me that the parts of the blue shape stay where they are relatively to each other, and this is possible only if they are within the same object, but this object is “broken” by the import in many independant parts.

in LB, the structure of the data is 3 “shape” elements :
<Children> <Shape Type="Path" CutIndex="9"> <XForm>1 0 0 1 0 0</XForm> <Tabs>-6.20749,7.50874 -22.4819,21.7622 -30.0291,2.81133 </Tabs> <VertList>V-17.071842 0.1c0x-13.988251c0y0.099880852c1x1V-8.8504734 3.4660316c0x-6.6700282c0y5.6213765c1x-11.030919c1y1.3106848V-5.4451613 11.592838c0x-5.4451604c0y14.640631c1x-5.4450927c1y8.5446939V-8.8504696 19.719126c0x-11.030849c0y21.874407c1x-6.6700888c1y17.563841V-17.071842 23.085161c0x-22.195105c0y23.083664c1x-13.988074c1y23.085209V-28.196741 14.919768c0x-28.296877c0y14.926537c1x-26.713514c1y19.767263V-28.497498 14.933712c0x-32.150784c0y14.933539c1x-28.397135c1y14.931185V-35.112083 8.7862825c0x-35.112595c0y5.3919468c1x-35.112221c1y12.181254V-28.497499 2.6388564c0x-27.359758c0y2.6415441c1x-32.151466c1y2.6393807V-25.252218 3.438287c0x-23.077259c0y1.3030101c1x-26.241995c1y2.9168901V-17.071842 0.099989422c0x1c1x-20.137213c1y0.10321761</VertList> <PrimList>B0 1B1 2B2 3B3 4B4 5B5 6B6 7B7 8B8 9B9 10L10 0</PrimList> </Shape> <Shape Type="Path" CutIndex="9"> <XForm>1 0 0 1 0 0</XForm> <VertList>V-48.342281 18.808935c0x-41.330868c0y18.80891c1x-55.353764c1y18.808945V-35.646935 30.435097c0x-35.646931c0y36.856014c1x-35.646969c1y24.014118V-48.342281 42.06126c0x-55.353695c0y42.061283c1x-41.330795c1y42.061245V-61.037632 30.435097c0x-61.037632c0y24.014177c1x-61.037594c1y36.856079</VertList> <PrimList>B0 1B1 2B2 3B3 0</PrimList> </Shape> <Shape Type="Ellipse" CutIndex="2" Rx="66.670067" Ry="62.629459"> <XForm>-0.264583 0 0 0.264583 -17.7398 52.2176</XForm> <Tabs>32.5637,-54.6465 -66.6702,0 32.5637,54.6464 </Tabs> </Shape> </Children>

and in inkscape only 2 elements
<g inkscape:label="Calque 1" inkscape:groupmode="layer" id="layer1"> <path style="color:#000000;overflow:visible;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000080;stroke-width:0.75590551;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" d="M 127.78516 92.164062 A 43.941638 43.436557 0 0 0 83.841797 135.60156 A 43.941638 43.436557 0 0 0 127.78516 179.03711 A 43.941638 43.436557 0 0 0 169.83203 148.17578 A 25.001277 23.233509 0 0 0 170.96875 148.22852 A 25.001277 23.233509 0 0 0 195.96875 124.99414 A 25.001277 23.233509 0 0 0 170.96875 101.75977 A 25.001277 23.233509 0 0 0 158.70312 104.78125 A 43.941638 43.436557 0 0 0 127.78516 92.164062 z M 245.97266 162.875 A 47.982248 43.941638 0 0 0 197.99023 206.81641 A 47.982248 43.941638 0 0 0 245.97266 250.75781 A 47.982248 43.941638 0 0 0 293.95508 206.81641 A 47.982248 43.941638 0 0 0 245.97266 162.875 z " transform="scale(0.26458333)" id="path867" /> <ellipse style="color:#000000;overflow:visible;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="path853" cx="34.477768" cy="76.50264" rx="17.639788" ry="16.570711" /> </g>

Then create separate layers in Inkscape for each color.

Copy and paste into Lightburn, and you will have to do 1 ungroup

Now the 2 blue shapes act as 1

LightBurn doesn’t keep composite shapes intact, but it does preserve whatever groups were in the original SVG. I could make the importer group things that are composite shapes, which would be close. If you group the two blue shapes instead of making them a complex / composite shape, it should do what you want.

ok, i saw in the LB file that “substracting” a shape from another shape, when there are not intersection, creates in fact a group with 2 objects…

this seems to me a bad limitation, since the idea is to combine shapes, and after this operation, you can no more node-edit the shape, unless you first ungroup it.

in the simplest case this is not a problem, but if you have a design that is complex/intricate/made of many parts, you can miss a part when doing the grouping again to restore the “unity”.

workaround is to select the object, ungroup (which selects all objects), move to the edit tab mode, edit the nodes, and at the end group back before switching to any other mode, because the selection is kept during the process

maybe you can emulate this in the edit-node mode, so we could edit the parts from the group without this ungrouping/regrouping step?

If you are designing everything in Inkscape, why would you want to also edit nodes in Lightburn? Make it easy on yourself, and either design and edit in Inkscape, or design and edit in Lightburn.

That’s a good idea. This is how Adobe Illustrator works. You double click on an entity/shape in a group, and you then click once more to isolate just that entity/shape to edit. When finished, you right click and select “exit isolated group”. Most CAD programs I have worked with have a similar editing function.

i do most of the design in inkscape, but at that most most parts are not arranged for cutting… once the most is done, i go into LB, arrange things to be material-efficient, and do the cut… but sometimes there are small botches like parts that do not correctly interconnect, holes misplaced by 1mm, … and this is easier to correct in LB than go back to inkscape, correct, re-export/import in LB and rearrange for cutting.

example of design in inkscape, i have a lot of parts where alignment must be checked :

obviously, not something that can go for cut in these condition.

but i must admit that lightburn gets better everyday and it comes to the point where designing in LB will be ok. i just TOTALLY miss the F1-F2 shortcuts of inkscape to switch from object-moving to node-editing tools, i can’t stop launching the help screen everytime i want to get out of node-mode in LB.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.