@autoid374ceb4990 wrote:
@marko_ribar wrote:
Here, I changed just slightly (_vl-some) function and line with (_vl-some) in routine body... It worked on my BricsCAD...
HTH.
M.R.
Still getting "null function" at this line:
(setq lii (_vl-some (function (lambda (x) (or (equal (cadr li) (car x) 1e-8) (equal (cadr li) (cadr x) 1e-8)))) lil))
Not getting to the "_vl-some" routine.
I am no expert lisp programmer, but could it be that the "function" call is not supported in my old R14?
Don't worry about this problem. I will write a "C" program that works in R14.
That is possible... Your AutoCAD is too old, but I prepared this mod. that may succeed... Please, test it now... It also worked on my BricsCAD...
(defun c:lins23dpoly-vanilla-foo ( / _reverse _foo _vl-remove ss i lil lix liln li lii )
(defun _reverse ( lst / r )
(while lst
(setq r (cons (car lst) r))
(setq lst (cdr lst))
)
r
)
(defun _foo ( li lst / el r )
(while (setq el (car lst))
(if (or (equal (cadr li) (car el) 1e-8) (equal (cadr li) (cadr el) 1e-8))
(setq r el lst nil)
)
(setq lst (cdr lst))
)
r
)
(defun _vl-remove ( el lst / e r )
(while (setq e (car lst))
(if (not (equal e el))
(setq r (cons e r))
)
(setq lst (cdr lst))
)
(_reverse r)
)
(if (setq ss (ssget (list (cons 0 "LINE"))))
(progn
(repeat (setq i (sslength ss))
(setq lil (cons (list (cdr (assoc 10 (setq lix (entget (ssname ss (setq i (1- i))))))) (cdr (assoc 11 lix))) lil))
)
(setq liln (cons (car lil) liln))
(while (setq li (car lil))
(setq lil (cdr lil))
(setq lii (_foo li lil))
(cond
( (and lii (equal (cadr li) (car lii) 1e-8))
(setq liln (cons lii liln) lil (cons lii (_vl-remove lii lil)))
)
( lii
(setq liln (cons (_reverse lii) liln) lil (cons (_reverse lii) (_vl-remove lii lil)))
)
)
)
(entmake (list (cons 0 "POLYLINE") (cons 70 9)))
(foreach pt (mapcar (function car) liln)
(entmake (list (cons 0 "VERTEX") (cons 70 32) (cons 10 pt)))
)
(entmake (list (cons 0 "SEQEND")))
)
)
(princ)
)
HTH.
M.R.
Marko Ribar, d.i.a. (graduated engineer of architecture)