I have a huge list of Lines. Take this one as an example:
linelist1 = {Line[{{0.150, 0.099}, {0.151, 0.095}}], Line[{{0.149, 0.104}, {0.150, 0.099}}], Line[{{0.151, 0.095}, {0.152, 0.090}}], Line[{{0.149, 0.108}, {0.149, 0.104}}], Line[{{0.149, 0.114}, {0.149, 0.108}}], Line[{{0.152, 0.090}, {0.154, 0.087}}], Line[{{0.154, 0.087}, {0.157, 0.083}}], Line[{{0.157, 0.083}, {0.159, 0.080}}], Line[{{0.149, 0.119}, {0.149, 0.114}}], Line[{{0.149, 0.125}, {0.149, 0.119}}], Line[{{0.150, 0.132}, {0.150, 0.130}}], Line[{{0.150, 0.130}, {0.149, 0.125}}], Line[{{0.151, 0.136}, {0.150, 0.132}}], Line[{{0.162, 0.079}, {0.167, 0.076}}], Line[{{0.159, 0.080}, {0.162, 0.079}}], Line[{{0.167, 0.076}, {0.171, 0.076}}], Line[{{0.171, 0.076}, {0.179, 0.075}}], Line[{{0.152, 0.144}, {0.152, 0.141}}], Line[{{0.152, 0.141}, {0.151, 0.136}}], Line[{{0.154, 0.153}, {0.153, 0.148}}], Line[{{0.153, 0.148}, {0.152, 0.144}}], Line[{{0.154, 0.170}, {0.154, 0.153}}], Line[{{0.179, 0.075}, {0.184, 0.076}}], Line[{{0.184, 0.076}, {0.195, 0.079}}], Line[{{0.195, 0.079}, {0.202, 0.082}}], Line[{{0.202, 0.082}, {0.217, 0.089}}], Line[{{0.151, 0.182}, {0.151, 0.180}}], Line[{{0.151, 0.180}, {0.154, 0.170}}], Line[{{0.149, 0.193}, {0.151, 0.182}}], Line[{{0.149, 0.195}, {0.149, 0.193}}], Line[{{0.148, 0.204}, {0.149, 0.195}}], Line[{{0.147, 0.208}, {0.147, 0.206}}], Line[{{0.147, 0.219}, {0.147, 0.208}}], Line[{{0.147, 0.206}, {0.148, 0.204}}], Line[{{0.147, 0.220}, {0.147, 0.219}}], Line[{{0.147, 0.223}, {0.147, 0.220}}], Line[{{0.147, 0.235}, {0.147, 0.234}}], Line[{{0.147, 0.248}, {0.147, 0.235}}], Line[{{0.147, 0.234}, {0.147, 0.223}}], Line[{{0.217, 0.089}, {0.226, 0.094}}], Line[{{0.237, 0.102}, {0.246, 0.107}}], Line[{{0.236, 0.101}, {0.237, 0.102}}], Line[{{0.226, 0.094}, {0.236, 0.101}}], Line[{{0.246, 0.107}, {0.258, 0.115}}], Line[{{0.270, 0.126}, {0.283, 0.135}}], Line[{{0.258, 0.115}, {0.270, 0.126}}], Line[{{0.283, 0.135}, {0.297, 0.147}}], Line[{{0.147, 0.249}, {0.147, 0.248}}], Line[{{0.147, 0.251}, {0.147, 0.249}}], Line[{{0.149, 0.263}, {0.147, 0.251}}], Line[{{0.149, 0.265}, {0.149, 0.263}}], Line[{{0.149, 0.266}, {0.149, 0.265}}], Line[{{0.151, 0.278}, {0.149, 0.266}}], Line[{{0.151, 0.280}, {0.151, 0.278}}], Line[{{0.151, 0.281}, {0.151, 0.280}}], Line[{{0.154, 0.295}, {0.151, 0.281}}], Line[{{0.154, 0.296}, {0.154, 0.295}}], Line[{{0.154, 0.297}, {0.154, 0.296}}], Line[{{0.157, 0.310}, {0.154, 0.297}}], Line[{{0.158, 0.311}, {0.157, 0.310}}], Line[{{0.158, 0.312}, {0.158, 0.311}}], Line[{{0.162, 0.326}, {0.158, 0.312}}], Line[{{0.162, 0.327}, {0.162, 0.326}}], Line[{{0.167, 0.342}, {0.162, 0.327}}], Line[{{0.297, 0.147}, {0.312, 0.161}}], Line[{{0.312, 0.161}, {0.327, 0.175}}], Line[{{0.168, 0.343}, {0.167, 0.342}}], Line[{{0.167, 0.342}, {0.167, 0.342}}], Line[{{0.174, 0.358}, {0.173, 0.357}}], Line[{{0.173, 0.357}, {0.168, 0.343}}], Line[{{0.180, 0.372}, {0.174, 0.358}}], Line[{{0.180, 0.372}, {0.180, 0.372}}], Line[{{0.188, 0.386}, {0.180, 0.372}}], Line[{{0.188, 0.386}, {0.188, 0.386}}], Line[{{0.196, 0.399}, {0.188, 0.386}}], Line[{{0.196, 0.399}, {0.196, 0.399}}], Line[{{0.205, 0.412}, {0.196, 0.399}}], Line[{{0.205, 0.412}, {0.205, 0.412}}], Line[{{0.214, 0.423}, {0.205, 0.412}}], Line[{{0.215, 0.424}, {0.214, 0.423}}], Line[{{0.214, 0.423}, {0.214, 0.423}}], Line[{{0.224, 0.434}, {0.224, 0.434}}], Line[{{0.225, 0.435}, {0.224, 0.434}}], Line[{{0.224, 0.434}, {0.215, 0.424}}], Line[{{0.236, 0.445}, {0.235, 0.444}}], Line[{{0.235, 0.444}, {0.234, 0.444}}], Line[{{0.234, 0.444}, {0.225, 0.435}}], Line[{{0.245, 0.452}, {0.236, 0.445}}], Line[{{0.247, 0.454}, {0.246, 0.453}}], Line[{{0.246, 0.453}, {0.245, 0.452}}], Line[{{0.257, 0.460}, {0.247, 0.454}}], Line[{{0.258, 0.462}, {0.257, 0.461}}], Line[{{0.257, 0.461}, {0.257, 0.460}}], Line[{{0.271, 0.469}, {0.270, 0.469}}], Line[{{0.270, 0.469}, {0.269, 0.468}}], Line[{{0.269, 0.468}, {0.258, 0.462}}], Line[{{0.282, 0.475}, {0.281, 0.474}}], Line[{{0.283, 0.475}, {0.282, 0.475}}], Line[{{0.292, 0.480}, {0.283, 0.475}}], Line[{{0.281, 0.474}, {0.271, 0.469}}], Line[{{0.296, 0.481}, {0.295, 0.481}}], Line[{{0.293, 0.480}, {0.292, 0.480}}], Line[{{0.295, 0.481}, {0.293, 0.480}}], Line[{{0.307, 0.485}, {0.305, 0.485}}], Line[{{0.308, 0.485}, {0.307, 0.485}}], Line[{{0.305, 0.485}, {0.296, 0.481}}], Line[{{0.320, 0.489}, {0.318, 0.489}}], Line[{{0.330, 0.492}, {0.320, 0.489}}], Line[{{0.318, 0.489}, {0.308, 0.485}}], Line[{{0.327, 0.175}, {0.343, 0.190}}], Line[{{0.343, 0.190}, {0.358, 0.207}}], Line[{{0.358, 0.207}, {0.375, 0.224}}], Line[{{0.391, 0.241}, {0.405, 0.260}}], Line[{{0.405, 0.260}, {0.421, 0.278}}], Line[{{0.375, 0.224}, {0.391, 0.241}}], Line[{{0.421, 0.278}, {0.436, 0.296}}], Line[{{0.436, 0.296}, {0.448, 0.315}}], Line[{{0.448, 0.315}, {0.459, 0.331}}], Line[{{0.459, 0.331}, {0.471, 0.348}}], Line[{{0.332, 0.492}, {0.331, 0.492}}], Line[{{0.331, 0.492}, {0.330, 0.492}}], Line[{{0.343, 0.494}, {0.332, 0.492}}], Line[{{0.354, 0.495}, {0.344, 0.494}}], Line[{{0.344, 0.494}, {0.343, 0.494}}], Line[{{0.355, 0.496}, {0.354, 0.495}}], Line[{{0.356, 0.495}, {0.355, 0.496}}], Line[{{0.471, 0.348}, {0.480, 0.364}}], Line[{{0.486, 0.376}, {0.494, 0.390}}], Line[{{0.480, 0.364}, {0.486, 0.376}}], Line[{{0.494, 0.390}, {0.500, 0.403}}], Line[{{0.367, 0.496}, {0.366, 0.496}}], Line[{{0.366, 0.496}, {0.356, 0.495}}], Line[{{0.377, 0.496}, {0.377, 0.496}}], Line[{{0.387, 0.495}, {0.377, 0.496}}], Line[{{0.377, 0.496}, {0.367, 0.496}}], Line[{{0.387, 0.495}, {0.387, 0.495}}], Line[{{0.396, 0.493}, {0.387, 0.495}}], Line[{{0.397, 0.493}, {0.396, 0.493}}], Line[{{0.405, 0.490}, {0.397, 0.493}}], Line[{{0.405, 0.490}, {0.405, 0.490}}], Line[{{0.413, 0.487}, {0.405, 0.490}}], Line[{{0.413, 0.487}, {0.413, 0.487}}], Line[{{0.500, 0.403}, {0.502, 0.413}}], Line[{{0.504, 0.420}, {0.507, 0.429}}], Line[{{0.502, 0.413}, {0.504, 0.420}}], Line[{{0.427, 0.478}, {0.420, 0.483}}], Line[{{0.420, 0.483}, {0.413, 0.487}}], Line[{{0.432, 0.472}, {0.427, 0.478}}], Line[{{0.433, 0.472}, {0.432, 0.472}}], Line[{{0.437, 0.465}, {0.433, 0.472}}], Line[{{0.507, 0.429}, {0.507, 0.436}}], Line[{{0.507, 0.436}, {0.504, 0.444}}], Line[{{0.477, 0.451}, {0.473, 0.450}}], Line[{{0.473, 0.450}, {0.437, 0.465}}], Line[{{0.504, 0.444}, {0.502, 0.448}}], Line[{{0.483, 0.452}, {0.477, 0.451}}], Line[{{0.502, 0.448}, {0.499, 0.451}}], Line[{{0.489, 0.453}, {0.483, 0.452}}], Line[{{0.499, 0.451}, {0.493, 0.452}}], Line[{{0.493, 0.452}, {0.489, 0.453}}]};
Here's what it looks like graphically:
Graphics@linelist1
The problem I'm trying to solve is that I want to make this line dashed. However, if I do it right now, the line segments are all so small that the dashing doesn't work for most of it:
Graphics@{Dashed, linelist1}
Here's a semi-solution I've tried:
Boundary2SingleLine[inBd_] := (
pts = Flatten[inBd[[All, 1]], 1];
orderedpts = First@FindCurvePath@pts;
Return@Line[pts[[orderedpts]]];
)
Graphics@{Dashed, Boundary2SingleLine@linelist1}
Lookin good! However, if I do it with this set of lines:
linelist2={Line[{{0.217, 0.171}, {0.217, 0.166}}], Line[{{0.217, 0.166}, {0.218, 0.161}}], Line[{{0.218, 0.176}, {0.217, 0.171}}], Line[{{0.218, 0.177}, {0.218, 0.176}}], Line[{{0.220, 0.157}, {0.220, 0.156}}], Line[{{0.218, 0.161}, {0.220, 0.157}}], Line[{{0.218, 0.178}, {0.218, 0.177}}], Line[{{0.219, 0.182}, {0.218, 0.178}}], Line[{{0.219, 0.183}, {0.219, 0.182}}], Line[{{0.220, 0.186}, {0.219, 0.184}}], Line[{{0.219, 0.184}, {0.219, 0.183}}], Line[{{0.220, 0.189}, {0.220, 0.186}}], Line[{{0.222, 0.196}, {0.221, 0.192}}], Line[{{0.221, 0.192}, {0.220, 0.189}}], Line[{{0.220, 0.156}, {0.223, 0.152}}], Line[{{0.223, 0.152}, {0.228, 0.147}}], Line[{{0.234, 0.143}, {0.240, 0.141}}], Line[{{0.228, 0.147}, {0.234, 0.143}}], Line[{{0.223, 0.199}, {0.222, 0.196}}], Line[{{0.224, 0.202}, {0.223, 0.199}}], Line[{{0.225, 0.206}, {0.224, 0.202}}], Line[{{0.227, 0.213}, {0.226, 0.209}}], Line[{{0.229, 0.217}, {0.227, 0.213}}], Line[{{0.226, 0.209}, {0.225, 0.206}}], Line[{{0.230, 0.220}, {0.229, 0.217}}], Line[{{0.231, 0.224}, {0.230, 0.220}}], Line[{{0.232, 0.227}, {0.231, 0.224}}], Line[{{0.234, 0.234}, {0.232, 0.227}}], Line[{{0.235, 0.237}, {0.234, 0.234}}], Line[{{0.237, 0.243}, {0.235, 0.237}}], Line[{{0.240, 0.141}, {0.243, 0.140}}], Line[{{0.243, 0.140}, {0.250, 0.138}}], Line[{{0.250, 0.138}, {0.254, 0.138}}], Line[{{0.254, 0.138}, {0.263, 0.138}}], Line[{{0.263, 0.138}, {0.268, 0.138}}], Line[{{0.268, 0.138}, {0.278, 0.138}}], Line[{{0.239, 0.246}, {0.237, 0.243}}], Line[{{0.239, 0.248}, {0.239, 0.246}}], Line[{{0.240, 0.251}, {0.239, 0.248}}], Line[{{0.243, 0.259}, {0.242, 0.256}}], Line[{{0.245, 0.263}, {0.243, 0.259}}], Line[{{0.242, 0.256}, {0.240, 0.251}}], Line[{{0.248, 0.269}, {0.247, 0.267}}], Line[{{0.250, 0.273}, {0.248, 0.269}}], Line[{{0.247, 0.267}, {0.245, 0.263}}], Line[{{0.253, 0.281}, {0.252, 0.278}}], Line[{{0.252, 0.278}, {0.250, 0.273}}], Line[{{0.240, 0.335}, {0.253, 0.281}}], Line[{{0.278, 0.138}, {0.285, 0.140}}], Line[{{0.285, 0.140}, {0.296, 0.141}}], Line[{{0.296, 0.141}, {0.304, 0.144}}], Line[{{0.304, 0.144}, {0.316, 0.147}}], Line[{{0.316, 0.147}, {0.326, 0.150}}], Line[{{0.326, 0.150}, {0.338, 0.155}}], Line[{{0.338, 0.155}, {0.350, 0.160}}], Line[{{0.239, 0.336}, {0.240, 0.335}}], Line[{{0.239, 0.336}, {0.239, 0.336}}], Line[{{0.240, 0.337}, {0.239, 0.336}}], Line[{{0.242, 0.338}, {0.240, 0.337}}], Line[{{0.244, 0.339}, {0.242, 0.338}}], Line[{{0.248, 0.340}, {0.244, 0.339}}], Line[{{0.252, 0.341}, {0.248, 0.340}}], Line[{{0.257, 0.342}, {0.256, 0.342}}], Line[{{0.256, 0.342}, {0.252, 0.341}}], Line[{{0.262, 0.343}, {0.257, 0.342}}], Line[{{0.266, 0.343}, {0.262, 0.343}}], Line[{{0.295, 0.363}, {0.266, 0.343}}], Line[{{0.297, 0.366}, {0.295, 0.363}}], Line[{{0.299, 0.369}, {0.297, 0.366}}], Line[{{0.301, 0.373}, {0.299, 0.369}}], Line[{{0.303, 0.377}, {0.301, 0.373}}], Line[{{0.305, 0.381}, {0.303, 0.377}}], Line[{{0.307, 0.384}, {0.305, 0.381}}], Line[{{0.309, 0.389}, {0.307, 0.384}}], Line[{{0.311, 0.393}, {0.309, 0.389}}], Line[{{0.314, 0.397}, {0.311, 0.393}}], Line[{{0.316, 0.400}, {0.314, 0.397}}], Line[{{0.318, 0.404}, {0.316, 0.400}}], Line[{{0.321, 0.408}, {0.318, 0.404}}], Line[{{0.323, 0.412}, {0.321, 0.408}}], Line[{{0.325, 0.416}, {0.323, 0.412}}], Line[{{0.328, 0.420}, {0.325, 0.416}}], Line[{{0.330, 0.424}, {0.328, 0.420}}], Line[{{0.333, 0.428}, {0.330, 0.424}}], Line[{{0.335, 0.431}, {0.333, 0.428}}], Line[{{0.338, 0.436}, {0.335, 0.431}}], Line[{{0.340, 0.439}, {0.338, 0.436}}], Line[{{0.350, 0.160}, {0.362, 0.166}}], Line[{{0.362, 0.166}, {0.375, 0.172}}], Line[{{0.375, 0.172}, {0.386, 0.179}}], Line[{{0.386, 0.179}, {0.389, 0.181}}], Line[{{0.401, 0.188}, {0.411, 0.195}}], Line[{{0.389, 0.181}, {0.401, 0.188}}], Line[{{0.411, 0.195}, {0.415, 0.198}}], Line[{{0.415, 0.198}, {0.426, 0.205}}], Line[{{0.426, 0.205}, {0.440, 0.216}}], Line[{{0.440, 0.216}, {0.449, 0.224}}], Line[{{0.449, 0.224}, {0.454, 0.228}}], Line[{{0.454, 0.228}, {0.463, 0.236}}], Line[{{0.463, 0.236}, {0.471, 0.245}}], Line[{{0.475, 0.249}, {0.483, 0.257}}], Line[{{0.471, 0.245}, {0.475, 0.249}}], Line[{{0.483, 0.257}, {0.516, 0.272}}], Line[{{0.516, 0.272}, {0.524, 0.272}}], Line[{{0.550, 0.275}, {0.573, 0.280}}], Line[{{0.573, 0.280}, {0.586, 0.282}}], Line[{{0.524, 0.272}, {0.550, 0.275}}], Line[{{0.586, 0.282}, {0.610, 0.287}}], Line[{{0.610, 0.287}, {0.624, 0.295}}], Line[{{0.624, 0.295}, {0.636, 0.300}}], Line[{{0.636, 0.300}, {0.641, 0.309}}], Line[{{0.641, 0.309}, {0.640, 0.317}}], Line[{{0.640, 0.317}, {0.633, 0.326}}], Line[{{0.633, 0.326}, {0.619, 0.333}}], Line[{{0.619, 0.333}, {0.600, 0.341}}], Line[{{0.600, 0.341}, {0.583, 0.347}}], Line[{{0.343, 0.443}, {0.340, 0.439}}], Line[{{0.345, 0.446}, {0.343, 0.443}}], Line[{{0.348, 0.450}, {0.345, 0.446}}], Line[{{0.350, 0.454}, {0.348, 0.450}}], Line[{{0.353, 0.457}, {0.350, 0.454}}], Line[{{0.355, 0.460}, {0.353, 0.457}}], Line[{{0.358, 0.464}, {0.355, 0.460}}], Line[{{0.360, 0.466}, {0.358, 0.464}}], Line[{{0.363, 0.470}, {0.360, 0.466}}], Line[{{0.583, 0.347}, {0.541, 0.385}}], Line[{{0.541, 0.385}, {0.540, 0.392}}], Line[{{0.540, 0.392}, {0.539, 0.401}}], Line[{{0.368, 0.475}, {0.366, 0.473}}], Line[{{0.370, 0.478}, {0.368, 0.475}}], Line[{{0.366, 0.473}, {0.363, 0.470}}], Line[{{0.373, 0.481}, {0.370, 0.478}}], Line[{{0.375, 0.483}, {0.373, 0.481}}], Line[{{0.378, 0.485}, {0.375, 0.483}}], Line[{{0.381, 0.488}, {0.378, 0.485}}], Line[{{0.383, 0.490}, {0.381, 0.488}}], Line[{{0.385, 0.491}, {0.383, 0.490}}], Line[{{0.388, 0.494}, {0.385, 0.491}}], Line[{{0.392, 0.497}, {0.390, 0.495}}], Line[{{0.390, 0.495}, {0.388, 0.494}}], Line[{{0.395, 0.498}, {0.392, 0.497}}], Line[{{0.397, 0.500}, {0.395, 0.498}}], Line[{{0.399, 0.500}, {0.397, 0.500}}], Line[{{0.402, 0.501}, {0.399, 0.500}}], Line[{{0.539, 0.401}, {0.538, 0.407}}], Line[{{0.538, 0.407}, {0.536, 0.414}}], Line[{{0.536, 0.414}, {0.534, 0.420}}], Line[{{0.534, 0.420}, {0.532, 0.426}}], Line[{{0.532, 0.426}, {0.529, 0.432}}], Line[{{0.529, 0.432}, {0.526, 0.437}}], Line[{{0.526, 0.437}, {0.522, 0.443}}], Line[{{0.522, 0.443}, {0.519, 0.447}}], Line[{{0.519, 0.447}, {0.515, 0.452}}], Line[{{0.404, 0.502}, {0.402, 0.501}}], Line[{{0.406, 0.503}, {0.404, 0.502}}], Line[{{0.409, 0.503}, {0.406, 0.503}}], Line[{{0.411, 0.504}, {0.409, 0.503}}], Line[{{0.415, 0.504}, {0.411, 0.504}}], Line[{{0.421, 0.503}, {0.417, 0.504}}], Line[{{0.417, 0.504}, {0.415, 0.504}}], Line[{{0.423, 0.503}, {0.421, 0.503}}], Line[{{0.427, 0.501}, {0.423, 0.503}}], Line[{{0.428, 0.500}, {0.427, 0.501}}], Line[{{0.432, 0.498}, {0.428, 0.500}}], Line[{{0.515, 0.452}, {0.511, 0.455}}], Line[{{0.506, 0.459}, {0.502, 0.462}}], Line[{{0.511, 0.455}, {0.506, 0.459}}], Line[{{0.502, 0.462}, {0.497, 0.465}}], Line[{{0.433, 0.496}, {0.432, 0.498}}], Line[{{0.438, 0.492}, {0.437, 0.493}}], Line[{{0.437, 0.493}, {0.433, 0.496}}], Line[{{0.442, 0.488}, {0.438, 0.492}}], Line[{{0.493, 0.467}, {0.487, 0.470}}], Line[{{0.497, 0.465}, {0.493, 0.467}}], Line[{{0.487, 0.470}, {0.481, 0.472}}], Line[{{0.481, 0.472}, {0.477, 0.473}}], Line[{{0.470, 0.474}, {0.467, 0.475}}], Line[{{0.477, 0.473}, {0.470, 0.474}}], Line[{{0.467, 0.475}, {0.442, 0.488}}]}
It fails and only gets part of it:
Graphics@{Red, linelist2, Thickness -> .008, Black, Dashed,
Boundary2SingleLine@linelist2}
I figured out that for some reason FindCurvePaths is returning 2 lists in this case:
pts = Flatten[linelist2[[All, 1]], 1];
fcp = FindCurvePath@pts
Graphics@{Red, Line[pts[[fcp[[1]]]]], Blue, Line[pts[[fcp[[2]]]]]}
At this point I could manually finagle a way to attach these two lists, but I really have no guarantee it'll work generally, and I'm guessing this is an unnecessarily complicated solution anyway.
What's an easier way of doing this?
edit: Thank you for any advice. However, please show a solution working with the second example set of lines, as I already have a solution that works with the first.
edit: Here is @Michael E2's solution, which works on the second example:
Boundary2SingleLine[inBd_] := (
gr = Graph[inBd /. Line[List[v__]] :> UndirectedEdge[v]];
cycle = First@FindHamiltonianCycle[gr, 1];
Return@Line[Append[cycle[[All, 1]], cycle[[-1, 2]]]];
)
Graphics@{Dashing[.01], Boundary2SingleLine@linelist2}
Boundary2SingleLine
works fine whenFindCurvePath
returns a single list. If you want to show the details then yes, I think you should put the working data in the link and the problem data in the post. $\endgroup$ – Simon Woods Jul 8 '16 at 21:17