캐드에서 사용 도면 합치기 리습이 캐디안에서는 원점을 기준으로 합쳐져서 수정해주실 능력자분 있으실까요???
(defun c:HH( / typ )(vl-load-com)
;;===========================================
;; Sub-01 Function
;;===========================================
(defun PTE:form-01 ( / a b sc )
(if (not(tblsearch “block” “pte-form-block”))
(PTE:make-block 1)
)
(while (setq a(car(entsel “n 도면의 가장아래라인을 선택하세요.”)))
(if (not(and(= “INSERT” (PTE:DXF a 0)) (= “pte-form-block” (PTE:DXF a 2))))
(progn
(setq b (PTE:MinMax a)
sc (/ (abs (- (caar b) (caadr b))) 841)
)
(vla-InsertBlock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3D-Point (car b)) “pte-form-block” sc sc sc 0)
)
)
)
)
;;===========================================
;; Sub-02 Function
;;===========================================
(defun PTE:form-02( / s sss ip p1 p2 p3 p4 flag flag2 i j directory temp )
(if (setq s (car(entsel “n 도곽을 선택하세욤!”)))
(progn
(vla-put-activeucs
(vla-get-activedocument (vlax-get-acad-object))
(vla-add
(vla-get-usercoordinatesystems
(vla-get-activedocument (vlax-get-acad-object))
)
(vlax-3d-point ‘(0.0 0.0 0.0))
(vlax-3d-point ‘(1.0 0.0 0.0))
(vlax-3d-point ‘(0.0 1.0 0.0))
“tempWCS”
)
)
(setq sss(ssget “x” (list (cons 0 “INSERT”) (cons 2 (PTE:DXF s 2))))
sc1(PTE:DXF s 41)
ip (PTE:DXF s 10)
p1 (mapcar ‘- (setq temp(getpoint “n파일명으로 정할 text구간을 선택하세요.”)) ip)
p2 (mapcar ‘- (getcorner temp) ip)
flag nil flag2 nil
i 0 j 0
)
(PTE:make-layer “ST-temp” “continuous” 7) (setvar ‘clayer “ST-temp”)
(initget “Yes No”)
(setq yn
(cond
(
(getkword
(strcat “n파일명에 revision을 넣으시겠습니까? [Yes/No]? <“
(setq yn
(cond ( yn ) ( “No” ))
)
“>: “
)
)
)
( yn )
)
)
(if (= “Yes” yn)
(setq p3 (mapcar ‘- (setq temp(getpoint “nRevision구간을 선택하세요..”)) ip)
p4 (mapcar ‘- (getcorner temp) ip)
)
(setq p3 nil p4 nil)
)
(setq directory (LM:DirectoryDialog “세상은 야매로…..” nil 1))
(vla-ZoomExtents (vlax-get-acad-object))
(setvar ‘osmode 0)
(mapcar
‘(lambda ( a / b mm fn fn2 sc2 )
(setq b (PTE:DXF a 10)
sc2 (/ (PTE:DXF a 41) sc1)
mm(PTE:MinMax a)
)
(vla-ZoomWindow (vlax-get-acad-object) (vlax-3d-point (car mm)) (vlax-3d-point (cadr mm)))
(if (setq c (ssget “wp” (PTE:pt->lst (PTE:temp1 p1 b sc2) (PTE:temp1 p2 b sc2)) ‘((0 . “*TEXT”))))
(if (and p3 p4 (setq d (ssget “wp” (PTE:pt->lst (PTE:temp1 p3 b sc2) (PTE:temp1 p4 b sc2)) ‘((0 . “*TEXT”)))))
(progn
(setq fn (strcat (PTE:DXF (ssname c 0) 1) “_” (PTE:DXF (ssname d 0) 1)) fn2 fn)
(while (findfile (strcat directory “\” fn “.dwg”))
(setq fn (strcat fn2 ” (중복)-” (itoa(setq j (1+ j)))) flag 1 flag2 1)
)
)
(progn
(setq fn (strcat (PTE:DXF (ssname c 0) 1)) fn2 fn)
(while (findfile (strcat directory “\” fn “.dwg”))
(setq fn (strcat fn2 ” (중복)-” (itoa(setq j (1+ j)))) flag 1 flag2 1)
)
)
)
(progn
(setq flag 1 flag2 1)
(while (findfile (strcat directory “\” (setq fn(strcat “파일명을 찾을 수 없습니다.-” (itoa(setq i (1+ i))))) “.dwg”)))
)
)
(setq sc (/ (abs (- (caar mm) (caadr mm))) 841))
(if flag2
(progn
(if (not(tblsearch “block” “pte-flag-red”)) (PTE:make-block 2))
(vla-InsertBlock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3D-Point (car mm)) “pte-flag-red” sc sc sc 0)
)
(progn
(if (not(tblsearch “block” “pte-flag-green”)) (PTE:make-block 3))
(vla-InsertBlock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3D-Point (car mm)) “pte-flag-green” sc sc sc 0)
)
)
(setq fn (strcat directory “\” fn “.dwg”) j 0 flag2 nil)
(ssget “wp” (PTE:pt->lst (car mm) (cadr mm)))
(PTE:vla-wblock (car mm) fn nil)
)(LM:ss->ent sss)
)
)
)
(if flag
(LM:Popup “세상은 야매로…” ” 잘못된 파일이 있습니다. 폴더를 확인하세염” (+ 0 48 4096))
(LM:Popup “세상은 야매로…” (strcat (itoa(sslength sss)) “장의 도면이 생성되었습니다.”) (+ 0 64 4096))
)
)
;;===========================================
;; Sub-03 Function
;;===========================================
(defun PTE:form-03( / directory dwgs point xlst ylst len k j dwg i block obj )
(setq directory (LM:DirectoryDialog “세상은 야매로…..” nil 1)
point ‘(0 0 0) xlst ‘(0) ylst ‘(0)
)
(if (eq “\” (substr directory (strlen directory)))
(setq directory (substr directory 1 (1- (strlen directory))))
)
(setq dwgs(reverse(PTE:sortwindows (LM:GetAllFiles directory nil “*.dwg”) nil)))
(setq len(length dwgs)
k (fix(/ len 10))
j -1
)
(repeat (rem len 10)
(setq dwg (nth (+ (* 10 k) (setq j (1+ j))) dwgs)
block(PTE:vla-insert dwg ‘(0 0 0) 1)
)
(vla-getboundingbox block ‘mi ‘ma)
(vla-move block mi (vlax-3d-point point))
(vla-explode block)
(vla-delete block)
(setq dis(list (vlax-safearray->list mi) (vlax-safearray->list ma))
xlst (append xlst (list (* 1.2 (- (caadr dis) (caar dis)))))
ylst (append ylst (list (* 1.2 (- (cadadr dis) (cadar dis)))))
point (mapcar ‘+ point (list (last xlst) 0))
)
)
(repeat k
(setq point (list 0 (+ (cadr point) (nth 0(vl-sort ylst ‘>))))
xlst ‘()
ylst ‘()
i -1
)
(repeat 10
(setq dwg (nth (+ (* 10 (- k 1)) (setq i (1+ i))) dwgs))
(setq block(PTE:vla-insert dwg ‘(0 0 0) 1))
(vla-getboundingbox block ‘mi ‘ma)
(vla-move block mi (vlax-3d-point point))
(vla-explode block)
(vla-delete block)
(setq dis(list (vlax-safearray->list mi) (vlax-safearray->list ma))
xlst (append xlst (list (* 1.2 (- (caadr dis) (caar dis)))))
ylst (append ylst (list (* 1.2 (- (cadadr dis) (cadar dis)))))
point (mapcar ‘+ point (list (last xlst) 0))
)
)
(setq k (1- k))
)
(setq obj (vla-get-activedocument (vlax-get-acad-object)))
(vla-purgeall obj) (vla-AuditInfo obj T) (vla-Regen obj acActiveViewport) (vla-ZoomExtents obj)
)
;;===========================================
;; Sub-04 Function
;;===========================================
(defun PTE:vla-insert( f p sc / a block )
(setq a (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
(setq block(vla-InsertBlock a(vlax-3D-Point p) f sc sc sc 0))
block
)
;;===========================================
;; Sub-05 Function
;;===========================================
(defun PTE:temp1(p pt sc)
(mapcar ‘+ pt (mapcar ‘* p (list sc sc sc)))
)
;;===========================================
;; Sub-06 Function
;;===========================================
(defun LM:Popup ( title msg flags / wsh res )
(vl-catch-all-apply
(function
(lambda nil
(setq wsh (vlax-create-object “WScript.Shell”))
(setq res (vlax-invoke-method wsh ‘popup msg 0 title flags))
)
)
)
(if wsh (vlax-release-object wsh))
res
)
;;===========================================
;; Sub-07 Function
;;===========================================
(defun PTE:make-layer(#name #linetype #color / )
(if (not (tblsearch “LAYER” #name))
(entmake (list (cons 0 “LAYER”)
(cons 100 “AcDbSymbolTableRecord”)
(cons 100 “AcDbLayerTableRecord”)
(cons 2 #name)
(cons 70 0)
(cons 62 #color)
(cons 6 #linetype)))
)
)
;;===========================================
;; Sub-08 Function
;;===========================================
(defun PTE:pt->lst( p1 p2 / )
(list p1 (list (car p1) (cadr p2)) p2 (list (car p2) (cadr p1)))
)
;;===========================================
;; Sub-09 Function
;;===========================================
(defun LM:ss->ent ( ss / i l )
(if ss
(repeat (setq i (sslength ss))
(setq l (cons (ssname ss (setq i (1- i))) l))
)
)
)
;;===========================================
;; Sub-10 Function
;;===========================================
(defun LM:DirectoryDialog ( msg dir flag / Shell HWND Fold Self Path ac )
;; ? Lee Mac 2010
(setq Shell (vla-getInterfaceObject (setq ac (vlax-get-acad-object)) “Shell.Application”)
HWND (vl-catch-all-apply ‘vla-get-HWND (list ac))
Fold (vlax-invoke-method Shell ‘BrowseForFolder (if (vl-catch-all-error-p HWND) 0 HWND) msg flag dir)
)
(vlax-release-object Shell)
(if Fold
(progn
(setq Self (vlax-get-property Fold ‘Self) Path (vlax-get-property Self ‘Path))
(vlax-release-object Self)
(vlax-release-object Fold)
(and (= “\” (substr Path (strlen Path)))
(setq Path (substr Path 1 (1- (strlen Path))))
)
)
)
Path
)
;;===========================================
;; Sub-11 Function
;;===========================================
(defun PTE:vla-wblock( pt fn flag / Acdoc )
(setq Acdoc (vla-get-activedocument (vlax-get-acad-object))
ss (vla-get-activeselectionset Acdoc)
)
(if flag
(progn
(vlax-for x ss (vla-move x (vlax-3d-point pt) (vlax-3d-point ‘(0.0 0.0 0.0))))
(vla-wblock Acdoc fn ss)
(vlax-for x ss (vla-move x (vlax-3d-point ‘(0.0 0.0 0.0)) (vlax-3d-point pt)))
)
(vla-wblock Acdoc fn ss)
)
(vla-delete ss)
)
;;===========================================
;; Sub-12 Function
;;===========================================
(defun PTE:start( variable-list / )
(setq *list* variable-list)
(setq *start* (mapcar ‘getvar *list*))
(if (= 8 (logand 8 (getvar ‘UNDOCTL)))
(vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
)
(vla-startundomark (vla-get-ActiveDocument (vlax-get-acad-object)))
)
;;===========================================
;; Sub-13 Function
;;===========================================
(defun PTE:end nil
(if (and *list* *start*) (mapcar ‘setvar *list* *start*))
(setq *list* nil *start* nil)
(vla-endundomark (vla-get-ActiveDocument (vlax-get-acad-object)))
)
;;===========================================
;; Sub-14 Function
;;===========================================
(defun PTE:DXF (#ename #code / )
(cdr (assoc #code (entget #ename)))
)
;;===========================================
;; Sub-15 Function
;;===========================================
(defun PTE:MinMax (l / #Obj #P1 #P2 #Ans)
(vla-getboundingbox (vlax-ename->vla-object l) ‘low_left ‘up_right)
(list (vlax-safearray->list low_left) (vlax-safearray->list up_right))
)
;;===========================================
;; Sub-16 Function
;;===========================================
(defun PTE:make-block ( typ- )
(cond
((= typ- 1)
(entmake
‘((0 . “BLOCK”) (100 . “AcDbEntity”) (67 . 0) (8 . “0”) (100 . “AcDbBlockReference”) (2 . “pte-form-block”) (10 0 0 0) (70 . 0)))
(entmake
‘((0 . “HATCH”) (100 . “AcDbEntity”) (8 . “Defpoints”) (370 . -3) (100 . “AcDbHatch”) (10 0 0 0) (210 0 0 1) (2 . “SOLID”)
(70 . 1) (71 . 0) (91 . 1) (92 . 7) (72 . 1) (73 . 1) (93 . 3) (10 0 9.768871806911647 0) (42 . 0) (10 0 0 0) (42 . 0) (10 9.768871806911647 0 0)
(42 . 0.414213562373095) (97 . 0) (75 . 1) (76 . 1) (47 . 0.057316318991594) (98 . 1) (10 4.300900791185996 3.248327298868389 0) (450 . 0) (451 . 0)
(460 . 0) (461 . 0) (452 . 0) (462 . 1) (453 . 2) (463 . 0) (63 . 5) (421 . 255) (463 . 1) (63 . 2) (421 . 16776960) (470 . “LINEAR”)))
(entmake
‘((0 . “LWPOLYLINE”) (100 . “AcDbEntity”) (67 . 0) (8 . “0”) (62 . 5) (370 . 0) (100 . “AcDbPolyline”) (90 . 4) (70 . 1) (43 . 0) (38 . 0) (39 . 0)
(10 0 594) (40 . 0) (41 . 0) (42 . 0) (91 . 0) (10 841 594) (40 . 0) (41 . 0) (42 . 0) (91 . 0) (10 841 0) (40 . 0) (41 . 0) (42 . 0) (91 . 0) (10 0 0)
(40 . 0) (41 . 0) (42 . 0) (91 . 0)))
(entmake
‘((0 . “HATCH”) (100 . “AcDbEntity”) (8 . “Defpoints”) (370 . -3) (100 . “AcDbHatch”) (10 0 0 0) (210 0 0 1) (2 . “SOLID”) (70 . 1) (71 . 0) (91 . 1)
(92 . 7) (72 . 1) (73 . 1) (93 . 3) (10 841 584.2311281930883 0) (42 . 0) (10 841 594 0) (42 . 0) (10 831.2311281930888 594 0) (42 . 0.414213562373095)
(97 . 0) (75 . 1) (76 . 1) (47 . 0.057316318991594) (98 . 1) (10 836.699099208814 590.7516727011316 0) (450 . 0) (451 . 0) (460 . 0) (461 . 0) (452 . 0)
(462 . 1) (453 . 2) (463 . 0) (63 . 5) (421 . 255) (463 . 1) (63 . 2) (421 . 16776960) (470 . “LINEAR”)))
(entmake ‘((0 . “ENDBLK”) (100 . “AcDbBlockEnd”) (8 . “0”))))
((= typ- 2)
(entmake ‘((0 . “BLOCK”) (100 . “AcDbEntity”) (67 . 0) (8 . “0”) (62 . 2) (370 . -3) (100 . “AcDbBlockReference”) (2 . “pte-flag-red”) (10 0.0 0.0 0.0) (70 . 0)))
(entmake ‘((0 . “SPLINE”) (100 . “AcDbEntity”) (67 . 0) (8 . “0”) (62 . 1) (370 . -3) (100 . “AcDbSpline”) (70 . 32) (71 . 3) (72 . 10) (73 . 6) (74 . 4) (42 . 0.000000000100000) (43 . 0.000000000100000) (44 . 0.000000000100000) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 71.66205627572100) (40 . 143.6880992171877) (40 . 194.5866491965853) (40 . 194.5866491965853) (40 . 194.5866491965853) (40 . 194.5866491965853) (10 0.300000000000000 594.0999999999998 0.0) (10 3.854161460886274 627.9449535612924 -0.000000025382563) (10 10.98053671672376 695.8067663259887 -0.000000076276612) (10 -81.65511740149456 622.5500634578737 -0.000000057283283) (10 -98.46806936643611 669.6349440058939 -0.000000059204496) (10 -105.4296940141557 689.1310601930769 -0.000000060000000) (11 0.300000000000000 594.0999999999998 0.0) (11 -7.824738613389809 665.2999925009033 -0.000000060000000) (11 -77.39422565083255 646.6495947798600 -0.000000060000000) (11 -105.4296940141557 689.1310601930769 -0.000000060000000)))
(entmake ‘((0 . “HATCH”) (100 . “AcDbEntity”) (8 . “0”) (62 . 1) (370 . -3) (100 . “AcDbHatch”) (10 0.0 0.0 -0.000000060000000) (210 0.0 0.0 1.0) (2 . “SOLID”) (70 . 1) (71 . 0) (91 . 1) (92 . 7) (72 . 1) (73 . 1) (93 . 2) (10 -181.2992735489656 720.5795495055800 0.0) (42 . 1.0) (10 -92.39406779739459 720.5795495055800 0.0) (42 . 1.0) (97 . 0) (75 . 1) (76 . 1) (47 . 0.741958353749653) (98 . 1) (10 -117.4553724786146 730.2973255564718 0.0) (450 . 0) (451 . 0) (460 . 0.0) (461 . 0.0) (452 . 0) (462 . 1.0) (453 . 2) (463 . 0.0) (63 . 5) (421 . 255) (463 . 1.0) (63 . 2) (421 . 16776960) (470 . “LINEAR”)))
(entmake ‘((0 . “CIRCLE”) (100 . “AcDbEntity”) (67 . 0) (8 . “0”) (62 . 1) (370 . -3) (100 . “AcDbCircle”) (10 -136.8466706731801 720.5795495055800 -0.000000060000000) (40 . 44.45260287578548)))
(entmake ‘((0 . “ENDBLK”) (100 . “AcDbBlockEnd”) (8 . “0”))))
((= typ- 3)
(entmake ‘((0 . “BLOCK”) (100 . “AcDbEntity”) (67 . 0) (8 . “0”) (370 . -3) (100 . “AcDbBlockReference”) (2 . “pte-flag-green”) (10 0.0 0.0 0.0) (70 . 0)))
(entmake ‘((0 . “SPLINE”) (100 . “AcDbEntity”) (67 . 0) (8 . “0”) (62 . 3) (370 . -3) (100 . “AcDbSpline”) (70 . 32) (71 . 3) (72 . 10) (73 . 6) (74 . 4) (42 . 0.000000000100000) (43 . 0.000000000100000) (44 . 0.000000000100000) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 71.66205627572100) (40 . 143.6880992171877) (40 . 194.5866491965853) (40 . 194.5866491965853) (40 . 194.5866491965853) (40 . 194.5866491965853) (10 0.0 594.0 0.0) (10 3.554161460886275 627.8449535612925 -0.000000025382563) (10 10.68053671672376 695.7067663259890 -0.000000076276612) (10 -81.95511740149457 622.4500634578739 -0.000000057283283) (10 -98.76806936643610 669.5349440058939 -0.000000059204496) (10 -105.7296940141557 689.0310601930771 -0.000000060000000) (11 0.0 594.0 0.0) (11 -8.124738613389808 665.1999925009033 -0.000000060000000) (11 -77.69422565083255 646.5495947798602 -0.000000060000000) (11 -105.7296940141557 689.0310601930771 -0.000000060000000)))
(entmake ‘((0 . “HATCH”) (100 . “AcDbEntity”) (8 . “0”) (62 . 3) (370 . -3) (100 . “AcDbHatch”) (10 0.0 0.0 -0.000000060000000) (210 0.0 0.0 1.0) (2 . “SOLID”) (70 . 1) (71 . 0) (91 . 1) (92 . 7) (72 . 1) (73 . 1) (93 . 2) (10 -181.5992735489656 720.4795495055800 0.0) (42 . 1.0) (10 -92.69406779739460 720.4795495055800 0.0) (42 . 1.0) (97 . 0) (75 . 1) (76 . 1) (47 . 0.741958353749653) (98 . 1) (10 -117.7553724786146 730.1973255564718 0.0) (450 . 0) (451 . 0) (460 . 0.0) (461 . 0.0) (452 . 0) (462 . 1.0) (453 . 2) (463 . 0.0) (63 . 5) (421 . 255) (463 . 1.0) (63 . 2) (421 . 16776960) (470 . “LINEAR”)))
(entmake ‘((0 . “CIRCLE”) (100 . “AcDbEntity”) (67 . 0) (8 . “0”) (62 . 3) (370 . -3) (100 . “AcDbCircle”) (10 -137.1466706731801 720.4795495055800 -0.000000060000000) (40 . 44.45260287578548)))
(entmake ‘((0 . “ENDBLK”) (100 . “AcDbBlockEnd”) (8 . “0”)))
)
)
)
;;===========================================
;; Sub-17 Function
;;===========================================
(defun PTE:form-main( / val1 scale fname fn str )
(setq fname (strcat (getvar “TEMPPREFIX”) “st-form.dcl”))
(while (not (findfile fname))
(setq fn (open fname “w”))
(foreach str
‘( “STENG : dialog {“
” label = ”세상은 야매로…” ;”
” spacer;”
” : boxed_column { label = ” Form Option”;”
” : button { key = ”DCLButton1”; label = ”도곽 insert”; width = 2; height = 2; alignment = top; is_tab_stop = false; }”
” : button { key = ”DCLButton2”; label = ”도면 나누기”; width = 2; height = 2; alignment = top; is_tab_stop = false; }”
” : button { key = ”DCLButton3”; label = ”도면 합치기”; width = 2; height = 2; alignment = top; is_tab_stop = false; }”
” }”
“”
” : spacer { height = 2; fixed_width = true; }”
” : row {“
” : button { key = ”cancel”; label = ”<< &Cancel” ; height = 2; fixed_width = true; width = 2; is_cancel = true; mnemonic = ”C”; }”
” : spacer { width = 2; fixed_width = true; }”
” }”
” :row{“
” :image{ key = ”im”; height = 1.0; width = 1.0; }”
” :paragraph{“
” :text_part{ label = ”Designed and Created”; }”
” :text_part{ label = ”by TaeEun -_-)~” ; }”
” }”
” : spacer { width = 2; fixed_width = true; }”
” : image { key = ”iconimage”; width = 5.42; height = 2.51; fixed_width = true; fixed_height = true; aspect_ratio = 1; color = -15; }”
” }”
“}”
)
(write-line str fn)
)
(close fn)
)
(setq dcl_id (load_dialog fname))
(new_dialog “STENG” dcl_id)
(SmileIcon)
(start_image “im”)
(fill_image 0 0 (dimx_tile “im”) (dimy_tile “im”) 44)
(end_image)
(action_tile “DCLButton1” “(setq typ 1)(done_dialog)”)
(action_tile “DCLButton2” “(setq typ 2)(done_dialog)”)
(action_tile “DCLButton3” “(setq typ 3)(done_dialog)”)
(action_tile “cancel” “(setq typ 0) (done_dialog)”)
(start_dialog)
)
;;===========================================
;; Sub-18 Function
;;===========================================
(defun set_tile_list (KeyName$ ListName@ Selected / Item)
(start_list KeyName$ 3)
(mapcar ‘add_list ListName@)
(end_list)
(foreach Item (if (listp Selected) Selected (list Selected))
(if (member Item ListName@)
(set_tile KeyName$ (itoa (- (length ListName@) (length (member Item ListName@)))))
)
)
)
;;===========================================
;; Sub-19 Function
;;===========================================
(defun SmileIcon nil
(start_image “iconimage”)
(fill_image 0 0 (dimx_tile “iconimage”)(dimy_tile “iconimage”) -15)
(vector_line (list “C” 2 2 12 2 19 “C” 2 3 9 3 22 4 23 4 8 “C” 2 5 6 5 25 6
26 6 5 7 5 7 26 8 27 8 4 9 3 9 28 10 28 10 3 11 3 11 28 12 29 12 2 13 2
13 29 14 29 14 2 15 2 15 29 16 29 16 2 17 2 17 29 18 29 18 2 19 2 19 29
20 28 20 3 21 3 21 28 22 28 22 3 23 4 23 27 24 26 24 5 25 5 25 26 26 25
26 6 “C” 2 27 8 27 23 28 22 28 9 “C” 2 29 19 29 12)
);vector_line
(vector_line (list “C” 250 12 30 19 30 20 29 22 29 24 27 25 27 27 25 27 24
29 22 29 20 30 19 30 12 29 11 29 9 27 7 27 6 25 4 24 4 22 2 20 2 19 1 12
1 11 2 9 2 7 4 6 4 4 6 4 7 2 9 2 11 1 12 1 19 2 20 2 22 4 24 4 25 6 27 7
27 9 29 11 29 “C” 250 6 18 8 20 9 20 10 21 12 21 13 22 18 22 19 21 21 21
22 20 23 20 25 18 “C” 250 11 12 11 10 12 9 12 13 13 12 13 10 “C” 250 18
12 18 10 19 9 19 13 20 12 20 10)
);vector_line
(vector_line (list “C” 8 7 28 8 29 “C” 8 14 32 21 32 “C” 8 10 30 11 30 11
31 24 31 25 30 20 30 “C” 8 27 29 23 29 24 28 28 28 29 27 26 27 27 26 29
26 29 23 28 24 28 25 “C” 8 30 20 30 25 31 24 31 11 30 11 30 10 “C” 8 32
21 32 14 “C” 8 28 7 29 8)
);vector_line
(vector_image 9 17 10 17 1)
(vector_image 7 16 8 16 3)
(end_image)
)
;;===========================================
;; Sub-20 Function
;;===========================================
(defun vector_line (LineList@ / Rep# X# Y# X1# Y1# X2# Y2# Color#)
(if (= (type LineList@) ‘LIST)
(progn
(setq Rep# 0)
(repeat (/ (length LineList@) 2)
(setq X# (nth Rep# LineList@)
Y# (nth (+ Rep# 1) LineList@)
)
(if (and (= (type X#) ‘STR) (= (type Y#) ‘INT))
(if (= (strcase X# “C”))
(setq Color# Y#
X1# nil
Y1# nil
X2# nil
Y2# nil
)
)
(if (and (= (type X#) ‘INT) (= (type Y#) ‘INT))
(if (and (= X1# nil) (= Y1# nil))
(setq X1# X#
Y1# Y#
)
(progn
(setq X2# X#
Y2# Y#
)
(vector_image X1# Y1# X2# Y2# Color#)
(setq X1# X2#
Y1# Y2#
X# nil
Y# nil
)
)
)
)
)
(setq Rep# (+ Rep# 2))
)
)
)
)
;;===========================================
;; Sub-21 Function
;;===========================================
(defun LM:GetAllFiles ( Dir Subs Filetype / GetSubFolders )
;; ? Lee Mac 2010
(defun GetSubFolders ( folder / _f )
(mapcar
(function
(lambda ( f ) (setq _f (strcat folder “\” f))
(cons _f (apply (function append) (GetSubFolders _f)))
)
)
(cddr (vl-directory-files folder nil -1))
)
)
(apply (function append)
(vl-remove (quote nil)
(mapcar
(function
(lambda ( Filepath )
(mapcar
(function
(lambda ( Filename )
(strcat Filepath “\” Filename)
)
)
(vl-directory-files Filepath Filetype 1)
)
)
)
(append (list Dir) (apply (function append) (if subs (GetSubFolders Dir))))
)
)
)
)
;;===========================================
;; Sub-22 Function
;;===========================================
(defun PTE:sortwindows (ListOfString IgnoreCase / NorStrs count
NormalizeNumberInString getcount)
(defun NormalizeNumberInString (str count / ch i pat ret buf)
(setq i 0
pat ‘(“0” “1” “2” “3” “4” “5” “6” “7” “8” “9”)
ret “”
)
(while (/= (setq ch (substr str (setq i (1+ i)) 1)) “”)
(if (vl-position ch pat)
(progn
(setq buf ch)
(while
(vl-position (setq ch (substr str (setq i (1+ i)) 1)) pat)
(setq buf (strcat buf ch))
)
(while (< (strlen buf) count) (setq buf (strcat “0” buf)))
(setq ret (strcat ret buf))
)
)
(setq ret (strcat ret ch))
)
ret
)
(defun getcount (lst / count pat)
(setq count 0)
(setq pat ‘(“0” “1” “2” “3” “4” “5” “6” “7” “8” “9”))
(mapcar
‘(lambda (str / i maxlen ch)
(setq i 0 maxlen 0)
(while (/= (setq ch (substr str (setq i (1+ i)) 1)) “”)
(if (vl-position ch pat)
(setq maxlen (1+ maxlen))
(setq count (max count maxlen) maxlen 0)
)
)
)
Lst
)
count
)
;;===============================================
(setq count (GetCount ListOfString)
NorStrs (mapcar ‘(lambda (x) (NormalizeNumberInString x count)) ListOfString)
)
(and IgnoreCase (setq NorStrs (mapcar ‘strcase NorStrs)))
(mapcar ‘(lambda (x) (nth x ListOfString)) (vl-sort-i NorStrs ‘<))
)
;;================================================================================
;; Main Function
;;================================================================================
(defun *error*(s) (PTE:end))
(PTE:start ‘(“osmode” “clayer”))
(PTE:form-main)
(cond ((= typ 1) (PTE:form-01))
((= typ 2) (PTE:form-02))
((= typ 3) (PTE:form-03))
)
(PTE:end)
)