(( ... ... ...)
... 1 1 1 ...
... 1 1 1 ...
... 1 1 1 ...))
e.g.((nil 1 1 1 1 nil 0 2 2)
(nil 1 1 1 1 1 0 nil 2)
(nil nil 1 1 1 1 1 nil nil)
(nil nil 0 1 2 3 1 0 nil)
)
fuction to cal (item = 1 )'s zone boundary , the result is ( ((0 1) (1 1) (2 2) (3 3) (2 4) (2 5) (3 6) (2 6) (1 5) (0 4) (0 3) (0 2)) ...)I could not understand the task ...Sorry for my poor English .
publish a simple example with the call and response ...
graphics are welcome ...
(setq l ((0 0 0 0 0 0 1 1 1 1 1 1 1 1 1)
(0 0 0 0 0 1 1 1 1 2 1 1 1 1 1)
(0 0 0 0 1 1 1 1 1 2 2 2 2 2 2)
(0 0 0 0 1 1 1 1 1 1 2 2 2 2 2)
(0 0 0 0 1 1 1 1 1 1 2 2 2 2 2)
(1 1 0 1 1 1 1 1 1 1 2 2 2 2 2)
(1 1 1 1 0 1 1 1 2 2 2 2 1 1 1)
(0 1 0 0 0 1 1 1 2 2 1 1 1 1 1)
(1 1 0 1 1 1 1 1 1 1 1 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 1 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 2 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 1 1 1 2)
(1 1 1 1 1 1 1 1 2 2 2 2 2 2 2)
(1 1 1 1 1 1 1 1 1 2 2 2 2 2 1)
(1 1 1 1 1 1 1 1 1 1 2 2 2 1 1)))
;;Cal same colour zone
(foo l) --->
'(
(2 ((0 0) (1 0) (2 0) (3 0) (4 0) (5 0) (4 1) (3 2) (3 3) (3 4) (2 5) (1 4) (0 4) (0 3) (0 2) (0 1) (0 0))
((4 6) (4 7) (2 7) (2 8)))
(1 ((6 0) (7 0) (8 0) (8 1) (8 2) (9 3) (9 4) (9 5) (8 5) (7 6) (7 7) (8 8) (8 9) (8 10) (8 11) (8 12) (8 13)
(7 14) (8 15) (9 16) (8 16) (7 16) (6 16) (5 16) (4 16) (3 16) (2 16) (1 16) (0 16) (0 15) (0 14) (0 13)
(0 12) (0 11) (0 10) (0 9) (0 8) (0 7) (0 6) (0 5) (1 5) (1 6) (1 7) (1 8) (1 9) (2 9) (3 8) (4 8) (5 7)
(5 6) (4 5) (4 4) (4 3) (4 2) (5 1) (6 0))
((9 0) (10 0) (11 0) (12 0) (13 0) (14 0) (14 1) (13 1) (12 1) (11 1) (10 1) (9 0))
((12 6) (13 6) (14 6) (14 7) (14 8) (14 9) (14 10) (14 11) (14 12) (13 13) (12 13) (11 13) (11 12) (11 11)
(12 10) (11 9) (10 9) (9 8) (10 7) (11 7) (12 6))
((14 15) (14 16) (13 16) (14 15)))
(0 ((9 1) (10 2) (11 2) (12 2) (13 2) (14 2) (14 3) (14 4) (14 5) (13 5) (12 5) (11 6) (10 6) (9 7) (8 7)
(8 6) (9 6) (10 5) (10 4) (10 3) (9 2) (9 1))
((14 14) (14 13) (13 14) (12 14) (10 14) (10 13) (10 12) (10 11) (11 10) (10 10) (9 9) (9 10) (9 11)
(9 12) (9 13) (8 14) (9 15) (10 16) (12 16) (13 15) (14 14))))
problem is similar to search geodesic contours...Thanks Evgeniy !
(setq l '((0 0 0 0 0 0 1 1 1 1 1 1 1 1 1)
(0 0 0 0 0 1 1 1 1 2 1 1 1 1 1)
(0 0 0 0 1 1 1 1 1 2 2 2 2 2 2)
(0 0 0 0 1 1 1 1 1 1 2 2 2 2 2)
(0 0 0 0 1 1 1 1 1 1 2 2 2 2 2)
(1 1 0 1 1 1 1 1 1 1 2 2 2 2 2)
(1 1 1 1 0 1 1 1 2 2 2 2 1 1 1)
(0 1 0 0 0 1 1 1 2 2 1 1 1 1 1)
(1 1 0 1 1 1 1 1 1 1 1 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 1 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 2 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 1 1 1 2)
(1 1 1 1 1 1 1 1 2 2 2 2 2 2 2)
(1 1 1 1 1 1 1 1 1 2 2 2 2 2 1)
(1 1 1 1 1 1 1 1 1 1 2 2 2 1 1)
)
)
(eea-geodesic-contours-TheSwamp l)
(eea-geodesic-contours-TheSwamp l '(0.1 0.3 0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9))
(setq l '((0 0 0 0 0 0 1 1 1 1 1 1 1 1 1)
(0 0 0 0 0 1 1 1 1 2 1 1 1 1 1)
(0 0 0 0 1 1 1 1 1 2 2 2 2 2 2)
(0 0 0 0 1 1 1 1 1 1 2 2 2 2 2)
(0 0 0 0 1 1 1 1 1 1 2 2 2 2 2)
(1 1 0 1 1 1 1 1 1 1 2 2 2 2 2)
(1 1 1 1 0 1 1 1 2 2 2 2 1 1 1)
(0 1 0 0 0 1 1 1 2 2 1 1 1 1 1)
(1 1 0 1 1 1 1 1 1 1 1 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 1 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 2 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 1 1 1 1)
(1 1 1 1 1 1 1 1 1 2 2 1 1 1 2)
(1 1 1 1 1 1 1 1 2 2 2 2 2 2 2)
(1 1 1 1 1 1 1 1 1 2 2 2 2 2 1)
(1 1 1 1 1 1 1 1 1 1 2 2 2 1 1)))
(defun test (l / f1 f2 y x lst l1 a b c e res ss)
(defun f1 (a l)
(cond ((not l) nil)
((equal a (caar l))
(cons 0 (car l)))
((equal a (cadar l))
(cons 1 (car l)))
(t (f1 a (cdr l)))
))
(defun f2 (l / r p p0 p1)
(setq r (list (car l))
l (cdr l))
(while (cadr l)
(setq p (car l)
p1 (cadr l)
l (cdr l)
p0 (car r))
(if (not (or (= (car p0) (car p) (car p1))
(= (cadr p0) (cadr p) (cadr p1))))
(setq r (cons p r))))
(cons (car l) r))
(setq y -0.5)
(mapcar (function (lambda (a b)
(setq y (1+ y)
x -1.5)
(mapcar (function (lambda (a b)
(setq x (1+ x))
(if (/= a b)
(setq lst
(cons (list (list x y) (list (1+ x) y))
lst))
)))
a
b)))
l
(cdr l))
(setq y -1.5)
(mapcar (function (lambda (a)
(setq y (1+ y)
x -0.5)
(mapcar (function (lambda (a b)
(setq x (1+ x))
(if (/= a b)
(setq lst
(cons (list (list x y) (list x (1+ y)))
lst))
)))
a
(cdr a))))
l
)
;|
(setq lst (vl-sort lst (function (lambda (a b)
(if (equal (car a) (car b))
(< (cadadr a) (cadadr b))
(if (equal (cadar a) (cadar b))
(< (caar a) (caar b))
(< (cadar a) (cadar b))))))
)) |;
(while lst
(setq a (car lst)
lst (cdr lst))
(while (setq b (f1 (car a) lst))
(setq lst (vl-remove (cdr b) lst)
a (cons (if (zerop (car b))
(caddr b)
(cadr b))
a)))
(setq a (reverse a))
(while (setq b (f1 (car a) lst))
(setq lst (vl-remove (cdr b) lst)
a (cons (if (zerop (car b))
(caddr b)
(cadr b))
a)))
(setq a (f2 a))
(setq res (cons a res)))
(setq ss (ssadd))
(foreach a res
(if (setq e (entmakex
(append
(list (cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 (length a))
)
(mapcar (function (lambda (x) (cons 10 x))) a)
(list (cons 70 0) (cons 62 6))
)))
(setq ss (ssadd e ss))))
(vl-catch-all-apply
(function vl-cmdf)
(list "_.Pedit" "M" ss "" "S" ""))
(princ)
)
Use Test fun : (Test l) ---->
'VLIDE hard error ***
Has reached Internal Stack Limit (Analog) .
Dose while loop take much RAM ?(defun test (l / f1 f2 y x lst l1 a b c e res ss)
;; refer Evgeniy's code
;; by GSLS(SS) 2012-9-26
(defun f1 (a l)
(cond ((not l) nil)
((equal a (caar l))
(cons 0 (car l)))
((equal a (cadar l))
(cons 1 (car l)))
(t (f1 a (cdr l)))
))
(defun f2 (l / r p p0 p1)
(setq r (list (car l))
l (cdr l))
(while (cadr l)
(setq p (car l)
p1 (cadr l)
l (cdr l)
p0 (car r))
(if (not (or (= (car p0) (car p) (car p1))
(= (cadr p0) (cadr p) (cadr p1))))
(setq r (cons p r))))
(cons (car l) r))
(setq y -0.5)
(mapcar (function (lambda (a b)
(setq y (1+ y)
x -1.5)
(mapcar (function (lambda (a b)
(setq x (1+ x))
(if (/= a b)
(setq lst
(cons (list (list x y) (list (1+ x) y))
lst))
)))
a
b)))
l
(cdr l))
(setq y -1.5)
(mapcar (function (lambda (a)
(setq y (1+ y)
x -0.5)
(mapcar (function (lambda (a b)
(setq x (1+ x))
(if (/= a b)
(setq lst
(cons (list (list x y) (list x (1+ y)))
lst))
)))
a
(cdr a))))
l
)
(gc)
(while lst
(setq a (car lst)
lst (cdr lst))
(while (setq b (f1 (car a) lst))
(setq lst (vl-remove (cdr b) lst)
a (cons (if (zerop (car b))
(caddr b)
(cadr b))
a)))
(setq a (reverse a))
(while (setq b (f1 (car a) lst))
(setq lst (vl-remove (cdr b) lst)
a (cons (if (zerop (car b))
(caddr b)
(cadr b))
a)))
(setq a (f2 a))
(if
(>
(abs
(/ (apply (function +)
(mapcar (function (lambda (x y)
(- (* (car x) (cadr y))
(* (car y) (cadr x)))))
(cons (last a) a)
a))
2.))
5);_add min_area filter .
(setq res (cons a res))))
;_(setq ss (ssadd))
(foreach a res
;| (if (setq e (entmakex
(append
(list (cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 (length a))
)
(mapcar (function (lambda (x) (cons 10 x))) a)
(list (cons 70 0) (cons 62 6))
)))
(setq ss (ssadd e ss)))|;
(entmake
(append
(list (cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 (length a))
)
(mapcar (function (lambda (x) (cons 10 x))) a)
(list (cons 70 0) (cons 62 6))
))
)
;|
(vl-catch-all-apply
(function vl-cmdf)
(list "_.Pedit" "M" ss "" "S" ""))|;
(princ)
)
"; GC calls: " 1361 "; GC run time: " 664471 " ms"
"\nDynamic memory segments statistic:\n"
"PgSz Used Free FMCL Segs Type\n"
512 2006 27 25 16 lisp stacks
256 2917 1929 222 19 bytecode area
4096215129 12 5 14339 CONS memory
32 2254 1710 1354 2 ::new
4096 85 80 14 11 DM Str
512 1 126 126 1 undo strings
4096143499 12 12 9565 DMxx memory
128 4 507 506 1 bstack body
"Segment size: " 65536 ", total used: " 23954 ", free: "1
I have a fast enough computer, I did not think a few seconds...:-( My Computer -----
I think it's enough fast for PC , yours Server ?
Yes, I have a very noisy workstation.Oh , very envious of you have such a good hardware support .
I'm worth a lot of programs - different versions and different languages. Autodesk - licensed ADN.
All programs on my vmware virtual machines. :)
If necessary, I can make accurate measurements of run-time...And thank you for help a lot .
(defun c:Bmp2Lst
(/ f1 cObj putpixel name f k s l p0 x0 y0 en0 x y r g b
res a c i i%)
(defun f1 (r g b / cObj aci)
;;Edited From LeeMas's function LM:rgb->aci
(if
(and (or cObj
(setq cObj
(vla-getInterfaceObject
(vlax-get-acad-object)
(strcat "AutoCAD.AcCmColor."
(substr (getvar 'ACADVER) 1 2))
)
))
(not
(vl-catch-all-error-p
(vl-catch-all-apply 'vla-SetRGB (list cObj r g b))
)
))
(vla-get-ColorIndex cObj)
)
)
(defun putpixel (x y color)
(entmakeX
(list
(cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 2)
(cons 43 1.0)
(cons 62 color)
(cons 10 (list x y))
(cons 10 (list (1+ x) y))
)
)
)
;|
(setq f (vl-filename-directory (findfile "gsls.mns")))
(princ "\nPlease use HighFlybird's work ImageToDCL.exe and pixelated the picture .")
(princ (strcat "\nSave File Path : " f))
(startapp "ImageToDCL.exe" "")|;
(princ "\nPlease use HighFlybird's work ImageToDCL.exe and pixelated the picture .")
(startapp "ImageToDCL.exe" "")
;; ImageToDCL.exe written by HighFlybird
;; Download url : http://www.theswamp.org/index.php?action=dlattach;topic=42619.0;attach=23385
(if (and (setq name (getfiled "Select the Pixel table file to Vector :"
;|(strcat f "\\")|;
""
"txt"
0))
(setq f (open name "R")))
(progn
(while (setq s (read-line f))
(setq k (read s))
(if (and k (= (type k) (quote LIST)) (= (length k) 6))
(setq l (cons k l))
))
(close f)
(if l
(progn
(setq r (car l)
a (1+ (car r))
r (1+ (cadr r))
res nil)
;|
(setq p0 (getpoint "\nInsert point :"))
(and (null p0) (setq p0 (list 0 0)))
(setq p0 (trans p0 1 0))|;
(and (null p0) (setq p0 (list 0 0)))
(setq x0 (car p0))
(setq y0 (cadr p0))
(while l
(setq pt (car l)
l (cdr l)
c (/ (apply (function +) (butlast (cddr pt))) 3)
c (f1 c c c)
c(cond ((= c 7)
254)
((= c 8)
252)
((= c 9)
253)
((member c (list 18 28 38 49))
250)
(t c))
res (cons c res)))
(if cObj
(vlax-release-object cobj))
(setq res (mapcar (function reverse) (list-comp res r))
l (apply (function mapcar) (cons (function list) (mapcar (function (lambda (x) (mapcar (function (lambda (x) (- x 250) )) x) )) res))))
;;Draw Pixmap
(setq i -1)
(while res
(setq b (car res)
res (cdr res))
(setq i% -1
i (1+ i)
x (+ x0 i))
(while b
(setq c (car b)
b (cdr b))
(setq i% (1+ i%)
y (+ y0 i%))
(if c
(entmake
(list
(cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 2)
(cons 43 1.0)
(cons 62 c)
(cons 10 (list x y))
(cons 10 (list (1+ x) y))
)
)
)))
(if (setq f (open (strcat (vl-filename-directory name) "\\Testlst.lsp") "w"))
(progn
(write-line "(setq l (list " f)
(foreach b l
(write-line (vl-princ-to-string b) f))
(write-line"))" f)
(close f)))
;;
(gc)
;;Vector Main routine ...
(princ)
;;
)
(princ "\nReads the the pixel file error, please check whether the file error.")
)
)
(princ "\nPixel file not found .")
)
(princ)
)
;;
(defun list-comp (a b / mid rslt)
(repeat (/ (length a) b)
(setq mid nil)
(repeat b
(setq mid (cons (car a) mid)
a (cdr a)
)
)
(setq rslt (cons (reverse mid) rslt))
)
(if a (reverse (cons a rslt))
(reverse rslt))
)
I think we should try additional algorithm - determine the height changes and only add to the high differential cross section.Agree , I first think use Octree Search Operations , but I am worried that this dealing with matrix list in VLisp will be Inefficient .
0 0 1 2 2 - drop 2 - 0 = 2 add section
0 0 1 1 1 2 2 2 ... smooth drop and not add section...
In the List which create by Bmp2lst , Value smaller Colour darker .
The vectorization procedure usually priority deal with dark areas .
Agree , I've Cold two days, tomorrow continue to modify .In the List which create by Bmp2lst , Value smaller Colour darker .I think the most important change is close multiple colors - a big change...
The vectorization procedure usually priority deal with dark areas .
strange that this topic no one else is reading... :-(I've search all the swamp , Little helps .
strange that this topic no one else is reading... :-(I'm reading but too busy to participate.
I think the most important change is close multiple colors - a big change...Before translate Bmp RGB List into Gray Matrix :
Set background RBG colours ----> Filter RGB List ----> Set forward colours ---->Merge nearly color
Then go to the step you suggest , drop or add setion .(princ "T Bmp2lst CmdGroup : \n
T1----Create Bmp from the Imagelist's txt file , Insert basepoint '(0 0) .
T2----Delete Not Want , you also can use the Erase Command .
T3----Set Background or BackWard Colors
T4----Set Forward Colors
T5----Translate Bmp to Gray Matrix .
T6----Create Component Lines from GrayMatrix .
T7----Deal Component Lines (Its core is like Pedit Command Spline deal),
before do it you also can use AutoCAD other Command deal such as Erase/Strentch/Move .
This CmdGroup will create 3 System Varialbes :
*Vector_GrayMatrix*
*Vector_file_path*
*Vector_Backward_Colors*
*Vector_Forward_Colors*
*Vector_Bmp_X*
*Vector_Bmp_Y*
****Warnning****:
****Please Test in New dwg and not open other dwgs , Because it may take Fatal error then
cause the AutoCAD collapse or interrupt exit****
")
(defun c:t5(/ ss x y)
(princ (strcat "\nCurrent forward colors table is :" (vl-princ-to-string *Vector_Forward_Colors*) "."))
(princ (strcat "\nCurrent backward colors table is :" (vl-princ-to-string *Vector_Backward_Colors*) "."))
(or *Vector_Bmp_X* (setq *Vector_Bmp_X* 287));_Just for Test
(or *Vector_Bmp_Y* (setq *Vector_Bmp_Y* 427));_Just for Test
(setq ss (ssget "X" (list (cons 0 "LWPOLYLINE") (cons 8 "Image2PL")
(cons -4 "<AND") (cons -4 ">=") (cons 10 (list -1 -1)) (cons -4 "<=") (cons 10 (list (1+ *Vector_Bmp_X*) (1+ *Vector_Bmp_Y*))) (cons -4 "AND>"))))
(if ss
(progn
(setq *Vector_GrayMatrix* ([0] (1+ (fix *Vector_Bmp_Y*)) (1+ (fix *Vector_Bmp_X*))))
(ssapply ss (lambda (en / ent c p)
(setq ent (entget en)
c (dxf 420 ent)
p (dxf 10 ent))
(if (and c (not (member c *Vector_Backward_Colors*)))
(progn
(if (member c *Vector_Forward_Colors*)
(setq c 6)
(setq c (vector:True->grayaci c)
c (- 255 c))
)
(setq *Vector_GrayMatrix* (ch-lst c (list (fix (cadr p))(fix (car p))) *Vector_GrayMatrix*)))
)
)
)
)
(princ "\nPlease Select Bmp_PLs based on (0 0) , Don't Select the refer objects !")
)
(if *gsls_debug*
(progn
(setq y -1.)
(foreach a *Vector_GrayMatrix*
(setq x -1.
y (1+ y)
)
(foreach b a
(setq x (1+ x))
(if (/= b 0)
(entupd (entmakex
(list
(cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 2)
(cons 43 1.0)
(cons 8 "GrayBmp")
(cons 62 (min (max 0 (fix (- 255 b))) 255))
(cons 10 (list x y))
(cons 10 (list (1+ x) y))
)
))
)))
))
(princ)
)
To deal some better , I change the T7 command(defun c:t7 (/ f1 f2 tor ss)
(defun f1 (en / ent l Noclosed ps pe e)
(setq ent (entget en)
l (ss-assoc 10 ent)
Noclosed (zerop (rem (dxf 70 ent) 2)))
(repeat 8
(setq ps (car l)
pe (last l))
(setq l (mapcar (function (lambda (a b)
(midpt a b)))
l
(cdr l)))
(if Noclosed
(setq l (append (cons ps l) (list pe)))
(setq l (cons (midpt ps pe) l))))
(setq e (entmakex
(append
(list (cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 (length l))
(assoc 8 ent)
(assoc 70 ent)
)
(mapcar (function (lambda (x) (cons 10 x))) l)
)
))
(if (< (vla-get-length (vlax-ename->vla-object e)) 8)
(entdel e))
(entdel en)
(princ)
)
(defun f2 (en / ent l l0 ps pe e Noclosed)
(setq ent (entget en)
l (ss-assoc 10 ent)
Noclosed (zerop (rem (dxf 70 ent) 2)))
(setq ps (car l)
pe (last l)
l (cdr l)
l0 (list ps))
(while l
(if (> (distance ps (car l)) 1)
(setq l0 (cons (car l) l0)
ps (car l0)))
(setq l (cdr l)))
(if (and l0 (> (distance pe (car l0)) 1))
(setq l (cons pe l0))
(setq l l0)
)
(setq l0 (list (car l))
l (cdr l))
(if (not Noclosed)
(setq l (append l l0)))
(while (cadr l)
(setq a (car l0)
b (car l)
c (cadr l)
l (cdr l))
(if (not (equal (abs (- (angle b a) (angle b c))) pi tor))
(setq l0 (cons b l0)))
)
(setq l l0)
(if l
(progn
(setq
e (entmakex
(append
(list (cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 (length l))
(assoc 8 ent)
(assoc 70 ent)
)
(mapcar (function (lambda (x) (cons 10 x))) l)
)
))
(if (< (vla-get-length (vlax-ename->vla-object e)) 8)
(entdel e))))
(entdel en)
(princ)
)
;;
(while (or (not tor) (> tor 2e-1))
(initget 4)
(setq tor (getreal "\nType in a radian for Rarefying polylines [0.01~0.2]<0.08>:"))
(or tor (setq tor 0.08)))
(foreach z (list 6 5 4 3 2 1);_This ...
(setq ss (ssget "X" (list (cons 0 "LINE") (cons 8 (rtos z 2 1)))))
(command "_.pedit" "m" ss "" "Y" "J" "2." "");_Only Test in ACAD2011 , Other Vesion you must edited by yourself .
(setq ss (ssget "X" (list (cons 0 "LWPOLYLINE") (cons 8 (rtos z 2 1))
(cons -4 "<AND") (cons -4 ">=") (cons 10 (list -1 -1))
(cons -4 "<=") (cons 10 (list (1+ *Vector_Bmp_X*) (1+ *Vector_Bmp_Y*)))
(cons -4 "AND>"))))
(if ss
(ssapply ss f1))
(setq ss (ssget "X" (list (cons 0 "LWPOLYLINE") (cons 8 (rtos z 2 1))
(cons -4 "<AND") (cons -4 ">=") (cons 10 (list -1 -1))
(cons -4 "<=") (cons 10 (list (1+ *Vector_Bmp_X*) (1+ *Vector_Bmp_Y*)))
(cons -4 "AND>"))))
(if ss
(ssapply ss f2))
)
(princ "\nBitmap transfer vector has been completed .")
(princ "\nAny Suggest you can post on : http://www.theswamp.org/index.php?topic=42846.0 ")
(princ)
)
Brain broken , Need more help :-(
Pherhaps more about Vector Algorithm , Some date later try to write Evgeniy's Big change .
strange that this topic no one else is reading... :-(To chlh_jd, it is a very interesting topic~
I'm sorry!Not at all , You are always welcome ! :-)
I find it hard to spend a lot of time on this research.
Probably the right approach - finding the most intense (curved) space.
To chlh_jd, it is a very interesting topic~Key of times , you are always present , Very learned !
...
played a lot with a picture - an interesting program...
code for last version:
...