(mapcar 'Read (reverse lst))
my parallel lines are like this but not essentially horizontal ones (each piece is lwpolyline)
____ ____ ____ _____
____ ____ ____ _____
[code=cadlisp-7]
(setq Len_list
(mapcar '(lambda (Ai)(distance Ai Ai)) f))
(if (and
(>= 12.40 ) ; 12.40 is distance of parallels with a -bit tolerance
(<= 12.60 ) ; 12.60 is distance of parallels with a +bit tolerance
)
(progn
(setq U_list (list Ai)
L_list (list Ai)
)
)
)
[/code]Quote
my parallel lines are like this but not essentially horizontal ones (each piece is lwpolyline)
____ ____ ____ _____
____ ____ ____ _____
(defun c:mergepoly ( / e i l m n p q s v x z )
(if (setq s (ssget "_:L" '((0 . "LWPOLYLINE") (90 . 2))))
(progn
(repeat (setq i (sslength s))
(setq e (ssname s (setq i (1- i)))
v (mapcar '(lambda ( x ) (trans (cdr x) e 0)) (vl-remove-if-not '(lambda ( x ) (= 10 (car x))) (entget e)))
)
(entdel e)
(if (setq x (vl-some '(lambda ( x ) (if (LM:ListCollinear-p (vl-list* (car x) (cadr x) v)) x)) l))
(setq l (subst (append v x) x l))
(setq l (cons v l))
)
)
(foreach x l
(setq v (mapcar '- (car x) (cadr x))
m (caddr (trans (car x) 0 v))
p (car x)
n m
q p
)
(foreach y (cdr x)
(setq z (caddr (trans y 0 v)))
(if (< m z) (setq m z p y))
(if (< z n) (setq n z q y))
)
(entmake (list '(0 . "LINE") (cons 10 p) (cons 11 q)))
)
)
)
(princ)
)
;; List Collinear-p - Lee Mac
;; Returns T if all points in a list are collinear
(defun LM:ListCollinear-p ( lst )
(or (null (cddr lst))
(and (LM:Collinear-p (car lst) (cadr lst) (caddr lst))
(LM:ListCollinear-p (cdr lst))
)
)
)
;; Collinear-p - Lee Mac
;; Returns T if p1,p2,p3 are collinear
(defun LM:Collinear-p ( p1 p2 p3 )
(
(lambda ( a b c )
(or
(equal (+ a b) c 1e-8)
(equal (+ b c) a 1e-8)
(equal (+ c a) b 1e-8)
)
)
(distance p1 p2) (distance p2 p3) (distance p1 p3)
)
)
(princ)
Could you post a sample drawing Robert?
Export_All_Polylines_Vertexes_ToFile "D:\Users\my Temp\TEST2.txt" ' It's a sub routine
Import_All_Polylines_Vertexes_To_Array "D:\Users\my Temp\TEST2.txt", imp_Array
Id1 = (UBound(imp_Array) + 1)
ReDim X(0 To Id1 / 2)
ReDim Y(0 To Id1 / 2)
For i = 0 To (Id1 / 2) - 1 Step 2
X(i) = imp_Array(2 * i)
Next i
For i = 0 To (Id1 / 2) - 1 Step 2
Y(i) = imp_Array((2 * i) + 1)
Next i
' Debug.Print UBound(X), UBound(Y)
n = 0
For i = 0 To UBound(X) - 1
For j = 1 To UBound(X)
ds = getdist(X(i), Y(i), X(j), Y(j))
If (ds >= 12.4 And ds <= 12.6) Then
ReDim DMX(0 To n)
ReDim DMY(0 To n)
DMX(n) = Round(((X(i) + X(j)) / 2), 2) ' X of Midpoints coordinates
DMY(n) = Round(((Y(i) + Y(j)) / 2), 2) ' Y of Midpoints coordinates
Debug.Print n, DMX(n), DMY(n)
n = n + 1
Else
End If
Next j
Next i
Me.Show