本帖最后由 ketxu 于 2019-4-16 00:57 编辑
Mine version.
 - (defun c:COL (/ s *error* l _id)
- (defun *error*(m)
- (princ m)
- (:CM:EndMark *CM:Doc*)
- (if oCMD (setvar 'cmdEcho oCMD))
- ;(if l (setq *lSetting* l))
- (princ)
- )
- (:CM:StartMark *CM:Doc*)
- (setq oCMD (getvar 'cmdecho))(setvar 'cmdecho 0)
- ;Private function
- (cond
- (
- (and
- ;Select
- (setq s
- (:CM:SS-Select "\nCh\U+1ECDn c\U+00E1c Line, Pline, Arc, SPLINE mu\U+1ED1n thay \U+0111\U+1ED5i chi\U+1EC1u d\U+00E0i :"
- (list "_:L" '((0 . "LINE,LWPOLYLINE,POLYLINE,ARC,SPLINE")))
- )
- )
- ;Setting
- ;Chi can doan nay la vua thiet dat che do hien hanh, vua tao dialog. Chua co phan luu key vao Reg
- (setq *lSetting*
- ((lambda(/ fl ret dcl_id lstKey init l)
- (setq fl (vl-filename-mktemp "mip" nil ".dcl"))
- (setq ret (open fl "w")
- tt "Ch\U+01B0\U+01A1ng tr\U+00ECnh cho ph\U+00E9p k\U+00E9o d\U+00E0i \U+0111\U+1ED1i t\U+01B0\U+1EE3ng Line, Polyline, LWPolyline, Arc theo ph\U+00EDa
- \n\\U+00A9 Ketxu 3/2017
- \nMail : ks.stung@gmail.com
- \niCad Group"
- title "Change Objects Length v1"
- )
- (or *lengDelta* (setq *lengDelta* 10))
- ;List key_label_value default
- (or *lSetting* (setq *lSetting* '(("kStart" "\U+0110\U+1EA7u" "0")("kEnd" "Cu\U+1ED1i" "0")("kBoth" "C\U+1EA3 2 ph\U+00EDa" "1") ("kTotal" "T\U+1ED5ng" "0"))))
- (mapcar
- '(lambda (x) (write-line x ret))
- (list
- "Dialog : dialog { "
- (strcat "label="" title ""; width = 10;fixed_width = true;")
- ":edit_box {label ="Chi\U+1EC1u d\U+00E0i :";key = "kDel";}"
- " :radio_column{"
-
- (strcat "label="" "Ph\U+00EDa :" "";")
- (apply 'strcat (mapcar '(lambda (x)(strcat ":radio_button {key="" (car x) "";width=2;label="" (cadr x) "";}")) *lSetting*))
- ": spacer { height = 0.2; }"
-
- " :text_part {alignment=centered;"
- (strcat "label="" "\\U+00A9 Ketxu - iCad Tools" "";")
- "}"
- "}"
- ": column {"
- ": row {"
- " fixed_width = true;"
- " alignment = centered;"
- ":button {label = "Ok";key = "kOK";is_cancel = true;fixed_width = true;width = 1;is_default = 1;}"
- ":button {label = "Help";fixed_width = true;width = 1;key = "kHelp";}"
- "}"
- "}}"
- )
- ) ;_ end of mapcar
- ;Load DCL
- (setq ret (close ret))
- (if (and (not (minusp (setq dcl_id (load_dialog fl))))
- (new_dialog "Dialog" dcl_id)
- ) ;_ end of and
- (progn
-
- ;Init
- (defun init()
- (mapcar '(lambda(x)(set_tile (car x) (last x))) *lSetting*)
- (set_tile "kDel" (rtos *lengDelta*))
- )
- (init)
-
- ;Get all value when change
- (defun Get_Value(/ l1)
- (setq *lengDelta* (distof (get_tile "kDel")))
- (mapcar
- '(lambda(x)(list (car x) (cadr x)(get_tile (car x))))
- *lSetting*
- )
- )
- (defun get_len()
- (if (not (distof (get_tile "kDel")))(alert "Vui l\U+00F2ng nh\U+1EADp s\U+1ED1 !"))
- )
- (action_tile "kOK" "(setq ret (Get_value))(done_dialog 4)")
- (action_tile "kDel" "(get_len)")
- (action_tile "kHelp" "(alert tt)")
-
- (setq dlg_Exit (start_dialog))
- ) ;_ end of progn
- ) ;_ end of if
- (unload_dialog dcl_id)
- (vl-file-delete fl)
- ret
- ))
- );End setq
- );End And + Cond
- (defun _id(i)(= (last (assoc i *lSetting*)) "1"))
- (foreach e (:CM:SS->List s)
- (apply 'command
- (append
- (list "_.lengthen")
- (cond ((_id "kStart") (list "_delta" *lengDelta* (list e (vlax-curve-getstartpoint e)) ""))
- ((_id "kEnd") (list "_delta" *lengDelta* (list e (vlax-curve-getendpoint e)) ""))
- ((_id "kBoth") (list "_delta" *lengDelta* (list e (vlax-curve-getendpoint e)) (list e (vlax-curve-getstartpoint e)) ""))
- ((_id "kTotal") (list "Total" *lengDelta* (list e (vlax-curve-getstartpoint e)) ""))
- )
- )
- ))
- )
- (T (princ "\nL\U+1ED7i ! Xin li\U+00EAn h\U+1EC7 v\U+1EDBi t\U+00E1c gi\U+1EA3 !") )
- )
- (*error* nil)
- (princ)
- )
- <blockquote> (vl-load-com)
|