Chuyển đến nội dung
Diễn đàn CADViet

thanhduan2407

Nhà quảng cáo
  • Số lượng nội dung

    1.161
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    26

Bài đăng được đăng bởi thanhduan2407


  1. 29 phút trước, Doan Nguyen Van đã nói:

    Bác thử cái này xem: 

    • cadvietlisp.lsp
      lisp help
    •  
    
    (defun tachlist (lst / lst1 z x y l1)
      (setq lst1 (list) z 0 )
      (while (setq l1 (car lst))
        (setq lst (cdr lst))
        (if (< (caddr l1) 2.0) (if (= z 0) (setq x (car l1) y (cadr l1) z (caddr l1)) (setq y (cadr l1) z (+ z (caddr l1))))
    		(if (= z 0) (Setq lst1 (append lst1 (list l1))) (Setq lst1 (append lst1 (list (list x y z) l1)) z 0)))
        )
      lst1
      )

     

    Tuyệt vời quá! Zin luôn. Cảm ơn em nhiều nhé! Tiếc là không vote được nhiều LIKE.


  2. 8 phút trước, Doan Van Ha đã nói:

    Đọc đề 15' bể não, kết quả không hiểu gì hết

    Dạ!

    Trong danh sách L2 thì phần tử thứ nhất là (1 2 1.0) (gọi là pt1), vì trong pt1 có 1.0 < 2.0 nên xét tiếp phần tử tiếp theo, trong pt2 cũng có  1.0 < 2.0 nên xét tiếp đến pt3....

    Đến phần tử thứ 4 có 5.0 > 2.0 nên tạo thành 1 phần tử mới (1 4 3.0), cái 3.0 = 1.0 + 1.0 + 1.0 của các phần tử trước.

     


  3. Chào các bác! Em loay hoay với việc xử lý hàm mà không ra nên đành nhờ các bác chỉ giáo

    Em có 1 list: 

    Đầu vào: (setq L2 '((1 2 1.00) (2 3 1.00) (3 4 1.00) (4 5 5.00) (5 6 3.45) (6 7 1.00) (7 8 1.00) (8 9 1.00) (9 10 3.60)))

    Đầu ra thu gọn: (1 4 3.0)(4 5 5.0)(5 6 3.45)(6 9 3.0)(9 10 3.6)

    Tức là phần tử thứ 3 trong phần tử con nhỏ hơn 2.0 thì giữ nguyên phần tử đầu, phần tử thứ 2 bằng phần tử thứ 2 cuối cùng mà có phần tử thứ 3 < 2.0, phần tử thứ 3 bằng tổng các phần tử thứ 3 nhỏ hơn 2.0.

    Em mong được các bác chỉ giáo. Đầu óc dạo này ngu muội quá


  4. Vào lúc 7/11/2012 tại 09:15, Doan Van Ha đã nói:

    Nếu nhằm mục đích xóa tất cả các điểm trùng nhau của 1 Lwpolyline bất kỳ, không phân biệt có arc hay không, thì dùng lisp này (còn nếu có thêm điều kiện là chỉ xóa các điểm liên tiếp mà trùng nhau thì phải sửa lisp tí):

     

    
    (defun C:HA( / ent)
    (vl-load-com)
    (if
     (and
      (setq ent (car (entsel "\nChon Lwpolyline: ")))
      (= "LWPOLYLINE" (cdr (assoc 0 (entget ent)))))
     (entmod (LM:HA:UniqueFuzz (entget ent) 1E-8)))
    (princ))
    (defun LM:HA:UniqueFuzz (lst fz)
    (if lst
     (cons (car lst) (LM:HA:UniqueFuzz (vl-remove-if '(lambda (x) (if (= 10 (car x)) (equal x (car lst) fz))) (cdr lst)) fz))))
    
     

     

    Bác @Doan Van Ha ơi! Giả sử nó có ARC mà điểm cuối của ARC trùng với điểm đầu Pline thì sẽ như nào vậy bác? nếu lisp trên thì nó xoá mất cung tròn của cháu. 


  5. 2 phút trước, cuongtk2 đã nói:

    Bạn hãy làm chỉ một nút togle  cho 1 editbox để test xem có được hay không rồi hãy triển khai hàng  loạt, tôi cảm thấy bạn không kiểm soát được dcl .

    Nút togle trả về giá trị string "0" hoặc "1" nên không cần atoi làm gì, nếu bạn cần tắt một tile editbox thì mới cần.

    Như bạn cần khi tick  "ON" vào nút có key "tg1" để làm mờ edit_box có key "ed1" bạn sẽ làm như sau:

    (action_tile "tg1" (mode_tile "ed1" (atoi $value)))

    ở đây $value là giá trị hiện tại của "tg1"

    còn với thực hiện action

    (defun hamdulieutracdoc ()

    (setq kieuve 1

               tg1 (get_tile "tg1")

               ed1 (get_tile "ed1)

               tg2 ....

    .....));end hamdulieutracdoc

    (action_tile "vetracdoc" "(hamdulieutracdoc)(done_dialog 1)")

    (action_tile "vetracngang" "(hamdulieutracngang)(done_dialog 1)")

    (action_tile "cancel" "(done_dialog 0)")

    bạn bỏ nút OK đi vì nó chẳng để làm gì, và nút Cancel cũng không cần thiết vì có thể tắt bằng cách đóng cửa sổ

    nếu kiểu vẽ = 1 sẽ thi hành hàm vẽ trắc dọc

    (if  (= kieuve 1) (vetracdoc))

    (if (= kieuve 2) (vetracngang))

     

     

     

     

    Cảm ơn bác nhiều!

    Em mới tập tành về DCL nên còn lộn xộn. Qua cách giải thích của bác em đã hiểu. Vừa rồi em cũng đã được bác @Doan Van Ha giúp đỡ và tìm ra chỗ sai rồi. 

    Chân thành cảm ơn bác về sự góp ý quý báu.

    P/s: Em đợi cả tối, mãi đến đêm mới được hỗ trợ. Hii.


  6.  

    Chào các bác! Em đang viết DCL nhưng đang bị vướng bởi nút thắt này. Em muốn tích vào các toggle thì nó là Yes và không tích là No mà nó cứ sai hoài! Mong các bác chỉ dùm. Cảm ơn các bác nhiều!

     

     

    (vl-load-com)
    (defun C:00 (/ ANSDC ANSKCDC ANSKH ANSMSS CAOCHU_TD CAOCHU_TN DCH DCL DES KCDAUCO KC_COT KC_HANG MSS0 MSS_TD PATH_NTD SOCOTMC TLD1 TLD1_TN TLN1	TLN1_TN	USEBUTTON WIDTHMD)
      (defun *error* (msg)
        (if	(= 'file (type des))
          (close des)
        )
        (if	(and (= 'int (type dch)) (< 0 dch))
          (unload_dialog dch)
        )
        (if	(and (= 'str (type dcl)) (findfile dcl))
          (vl-file-delete dcl)
        )
        (if	(and msg (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*")))
          (princ (strcat "\nError: " msg))
        )
        (princ)
      )
      (command "-style" "Times New Roman" "Times New Roman" 0 1 0 "" "")
      (Create_dialog_VETD_VETN)
      (setq dch (load_dialog dcl))
      (end_list)
    
      (setq Path_ntd "")
      (action_tile
        "InputFile"
        (vl-prin1-to-string
          (quote (if (setq Path_ntd	(getfiled "Select Input File"
    					  (getvar "dwgprefix")
    					  "ntd;*"
    					  16
    				)
    		 )
    	       (set_tile "box_Input" Path_ntd)
    	     )
    
          )
        )
      )
    ;;;;;;;;;;;;;;;;PHAN TRAC DOC;;;;;;;;;;;;;;;;;;;;;;;;;
      (action_tile "box_TLD1" "(setq TLD1 (get_tile \"box_TLD1\"))")
      (setq TLD1 (get_tile "box_TLD1"))
      (action_tile "box_TLN1" "(setq TLN1 (get_tile \"box_TLN1\"))")
      (setq TLN1 (get_tile "box_TLN1"))
      (action_tile "box_CC1" "(setq Caochu_TD (get_tile \"box_CC1\"))")
      (setq Caochu_TD (get_tile "box_CC1"))
      (action_tile "box_MSS1" "(setq MSS_TD (get_tile \"box_MSS1\"))")
      (setq MSS_TD (get_tile "box_MSS1"))
      (action_tile
        "VETRACDOC"
        (strcat
          "(done_dialog)(setq UseButton 1))"
        )
      )
    
    
    
    
    
    ;;;;;;;;;;;;;;;;PHAN TRAC NGANG;;;;;;;;;;;;;;;;;;;;;;;;;
      (Check_Toggle)
      (action_tile "box_TLD2" "(setq TLD1_TN (get_tile \"box_TLD2\"))")
      (setq TLD1_TN (get_tile "box_TLD2"))
      (action_tile "box_TLN2" "(setq TLN1_TN (get_tile \"box_TLN2\"))")
      (setq TLN1_TN (get_tile "box_TLN2"))
      (action_tile "box_CC2" "(setq Caochu_TN (get_tile \"box_CC2\"))")
      (setq Caochu_TN (get_tile "box_CC2"))
      (action_tile "box_SC" "(setq SocotMC (get_tile \"box_SC\"))")
      (setq SocotMC (get_tile "box_SC"))
      (action_tile "box_KCC" "(setq KC_COT (get_tile \"box_KCC\"))")
      (setq KC_COT (get_tile "box_KCC"))
      (action_tile "box_KCH" "(setq KC_HANG (get_tile \"box_KCH\"))")
      (setq KC_HANG (get_tile "box_KCH"))
      ;;;TOGGLE
      (action_tile "toggle_KCDC" "(Check_Toggle)(setq tog_KCDC $value)")
    ;;;  (setq tog_KCDC (get_tile "toggle_KCDC"))
      (action_tile "toggle_MSS" "(Check_Toggle)(setq tog_MSS_TN $value)")
    ;;;  (setq tog_MSS_TN (get_tile "toggle_MSS"))
      (action_tile "toggle_KH" "(Check_Toggle)(setq tog_KH $value)")
    ;;;  (setq tog_KH (get_tile "toggle_KH"))
      (action_tile "toggle_DC" "(Check_Toggle)(setq tog_DC $value)")
    ;;;  (setq tog_DC (get_tile "toggle_DC"))
    ;;;;;;KHOANG CACH DAU CO TU DONG
      (if (= tog_KCDC "1")
        (progn
          (setq ansKCDC "Yes")
          (setq KCDauCo "0")
        )
        (progn
          (setq ansKCDC "No")
          (action_tile "box_KCDC"   "(setq KCDauCo (get_tile \"box_KCDC\"))")
          (setq KCDauCo (get_tile "box_KCDC"))
        )
      )
    
    ;;;;;;MUC SO SANH TU DONG
      (if (= tog_MSS_TN "1")
        (progn
          (setq ansMSS "Yes")
          (setq MSS0 "0")
        )
        (progn
          (setq ansMSS "No")
          (action_tile "box_MSS_TN"   "(setq MSS0 (get_tile \"box_MSS_TN\"))")
          (setq MSS0 (get_tile "box_MSS_TN"))
        )
      )
    
    
    ;;;;;;KY HIEU DIA VAT
      (if (= tog_KH "1")
        (setq ansKH "Yes")
        (setq ansKH "No")
      )
      
    ;;;;;MEP DUONG CU
      (if (= tog_DC "1")
        (progn
          (setq ansDC "Yes")
    ;;;      (action_tile "box_DC"   "(setq WidthMD (get_tile \"box_DC\"))")
    ;;;      (setq WidthMD (get_tile "box_DC"))
        )
        (progn
          (setq ansDC "No")
          (setq WidthMD "0")
        )
      )
    
      
      (action_tile
        "VETRACNGANG"
        (strcat
          "(done_dialog)(setq UseButton 2))"
        )
      )
      (action_tile
        "accept"
        "(done_dialog)
           (vl-file-delete dcl)"
      )
      (action_tile
        "cancel"
        "(done_dialog)
           (vl-file-delete dcl)"
      )
    
      (start_dialog)
      (unload_dialog dch)
      (if (= UseButton 1)
        (progn
          (if (/= Path_ntd "")
    	(progn
    	  (Func_VETD Path_ntd (atof TLD1) (atof TLN1) (atof Caochu_TD) (atof MSS_TD))
    	  (done_dialog)
    	)
    	(Alert "B\U+1EA1n ch\U+01B0a ch\U+1ECDn file ntd!")
          )
        )
      )
    
      (if (= UseButton 2)
        (progn
          (if (/= Path_ntd "")
    	(progn
    	  (prompt
    	    (strcat
    		"\n"
    		"AnsKCDC: " ansKCDC
    		"\n"
    		"ansMSS : " ansMSS
    		"\n"
    		"AnsKH: " AnsKH
    		"\n"
    		"AnsDC : " AnsDC
    		"\n"
    	    )
    	  )
    ;;;	  (Func_VETN ansKH
    ;;;		     ansDC
    ;;;		     Path_ntd
    ;;;		     (atof WidthMD)
    ;;;		     ansMSS
    ;;;		     (atof MSS0)
    ;;;		     (atof TLD1_TN)
    ;;;		     (atof TLN1_TN)
    ;;;		     (atof Caochu_TN)
    ;;;		     (atof SocotMC)
    ;;;		     (atof KC_HANG)
    ;;;		     (atof KC_COT)
    ;;;		     ansKCDC
    ;;;		     (atof KCDauCo)
    ;;;	  )
    	  (done_dialog)
    	)
    	(Alert "B\U+1EA1n ch\U+01B0a ch\U+1ECDn file ntd!")
          )
        )
      )
    
    
    
      (vl-file-delete dcl)
      (princ)
    )
    (defun toggleSet ( k kL )
        (foreach x kL (set_tile x "0")) (set_tile k "1") k
      )
    (defun Check_Toggle ()
      (if (= (atoi (get_tile "toggle_MSS")) 1)
        (progn
          (mode_tile "box_MSS_TN" 2)
          (mode_tile "Text_MSS" 1)
        )
        (progn
          (mode_tile "box_MSS_TN" 0)
          (mode_tile "Text_MSS" 0)
        )
      )
      (if (= (atoi (get_tile "toggle_KCDC")) 1)
        (progn
          (mode_tile "box_KCDC" 2)
          (mode_tile "Text_KCDC" 1)
        )
        (progn
          (mode_tile "box_KCDC" 0)
          (mode_tile "Text_KCDC" 0)
        )
      )
      (if (= (atoi (get_tile "toggle_DC")) 1)
        (progn
          (mode_tile "box_DC" 0)
          (mode_tile "Text_DC" 0)
        )
        (progn
          (mode_tile "box_DC" 2)
          (mode_tile "Text_DC" 1)
        )
      )
    )
    (defun Create_dialog_VETD_VETN ()
      (setq dcl (vl-filename-mktemp nil nil ".dcl"))
      (setq des (open dcl "w"))
      (foreach x
    	     '("temp : dialog"
    	       "{"
    	       "label = \"CH\U+01AF\U+01A0NG TRÌNH V\U+1EBC TR\U+1EAEC D\U+1ECCC - TR\U+1EAEC NGANG\";"
    	       ": text"
    	       "{"
    	       "label = \"Ng\U+01B0\U+1EDDi vi\U+1EBFt: Nguy\U+1EC5n Th\U+00E0nh Du\U+00E2n\";"
    	       "alignment = centered;"
    	       "}"
    	       ": text"
    	       "{"
    	       "label = \"Email: Heaven2407@gmail.com - Mobile: 0972.0168.25\";"
    	       "alignment = centered;"
    	       "}"
    
    	       "spacer;" "spacer;"
    
    	       
    	       ": boxed_column"
    	       "{"
    	       "label = \"Ch\U+1ECDn \U+0111\U+01B0\U+1EDDng d\U+1EABn\";"
    	       "fixed_width = 10;"
    	       "alignment = centered;"
    	       "width = 20.0;"
    
    	       ": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"&File\";"
    	       "fixed_width = true;"
    	       
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_Input\";"
    	       "fixed_width = true;"
    	        "width = 50.0;"
    	       "}"
    	       
    	       ": button"
    		"{"
    		"label = \"Browse...\";"
    		"key = \"InputFile\";"
    		"is_default = false;"
    		"width = 15;" "fixed_width = true;"
    	        "alignment = centered;"
    		"}"
    	       "}"
    
    
    
    	       
    	       "}"
                     
    	       
    
    
    
    	       
    	       ": row"
    	       "{"
    		": boxed_column"
    		"{"
    		"label = \" Tr\U+1EAFc D\U+1ECDc \";"
    	        "fixed_width = 10;"
    	       "alignment = centered;"
    	        "width = 20.0;"
    
    	       ": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"T\U+1EF7 l\U+1EC7 \U+0111\U+1EE9ng 1 / \";"
    	       "fixed_width = true;"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_TLD1\";"
    	       "fixed_width = true;"
    	       "value = \"100\";"
    	       "}"
    	       "}"
    
    	       	": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"T\U+1EF7 l\U+1EC7 ngang 1 / \";"
    	       "fixed_width = true;"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_TLN1\";"
    	       "fixed_width = true;"
    	       "value = \"1000\";"
    	       "}"
    	       "}"
    
    	       
    
    	       	": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"Cao ch\U+1EEF \";"
    	       "fixed_width = true;"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_CC1\";"
    	       "fixed_width = true;"
    	       "value = \"2\";"
    	       "}"
    	       "}"
    
    
    
    	       	": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"M\U+1EE9c so s\U+00E1nh \";"
    	       "fixed_width = true;"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_MSS1\";"
    	       "fixed_width = true;"
    	       "value = \"0\";"
    	       "}"
    	       "}"
    	       
     		"spacer;" "spacer;" "spacer;" "spacer;"
    	       
    		": button"
    		"{"
    		"label = \"  V\U+1EBD Tr\U+1EAFc D\U+1ECDc   \";"
    		"key = \"VETRACDOC\";"
    		"is_default = false;"
    		"width = 15;" "fixed_width = true;"
    	        "alignment = centered;"
    		"}"
    
    
    
    	       
    	       
                   "}"
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    	       ": row"
    	       "{"
    	       	": boxed_column"
    		"{"
    		"label = \" Tr\U+1EAFc Ngang \";"
    	        "fixed_width = 10;"
    	        "width = 20.0;"
    	       
    
    	       ": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"T\U+1EF7 l\U+1EC7 \U+0111\U+1EE9ng 1 / \";"
    	       "fixed_width = true;"
    	       "alignment = left;"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_TLD2\";"
    	       "fixed_width = true;"
    	       "value = \"200\";"
    	       "}"
    	       "}"
    
    	       	": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"T\U+1EF7 l\U+1EC7 ngang 1 / \";"
    	       "fixed_width = true;"
    	       "alignment = left;"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_TLN2\";"
    	       "fixed_width = true;"
    	       "value = \"200\";"
    	       "}"
    	       "}"
    
    	       
    
    	       	": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"Cao ch\U+1EEF\";"
    	       "fixed_width = true;"
    	       "alignment = left;"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_CC2\";"
    	       "fixed_width = true;"
    	       "value = \"0.4\";"
    	       "}"
    	       "}"
    
    
    
    	       	": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"S\U+1ED1 c\U+1ED9t\";"
    	       "fixed_width = true;"
    	       "alignment = left;"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_SC\";"
    	       "fixed_width = true;"
    	       "value = \"10\";"
    	       "}"
    	       "}"
    
    	       	": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"Kho\U+1EA3ng c\U+00E1ch c\U+1ED9t\";"
    	       "fixed_width = true;"
    	       "alignment = left;"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_KCC\";"
    	       "fixed_width = true;"
    	       "value = \"100\";"
    	       "}"
    	       "}"
    
    	       	": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"Kho\U+1EA3ng c\U+00E1ch h\U+00E0ng \";"
    	       "fixed_width = true;"
    	       "alignment = left;"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_KCH\";"
    	       "fixed_width = true;"
    	       "value = \"100\";"
    	       "}"
    	       "}"
    
    
    	
    	       ":toggle"
    	       "{"
    	       "alignment = centered ;"
    	       "label = \"Auto kho\U+1EA3ng c\U+00E1ch \U+0111\U+1EA7u c\U+1EDD\" ;"
    		"key = \"toggle_KCDC\" ;"
    		"}"
    	       
    	       	": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"Kho\U+1EA3ng c\U+00E1ch \U+0111\U+1EA7u c\U+1EDD\";"
    	       "fixed_width = true;"
    	       "alignment = left;"
    	       "key = \"Text_KCDC\";"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_KCDC\";"
    	       "value = \"20\";"
    	       "fixed_width = true;"
    	       "}"
    	       "}"
    
    
    	       
    	       ":toggle"
    	       "{"
    	       "alignment = centered ;"
    	       "label = \"So s\U+00E1nh t\U+1EF1 \U+0111\U+1ED9ng\" ;"
    		"key = \"toggle_MSS\" ;"
    		"}"
    
    	       	": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"Nh\U+1EADp m\U+1EE9c so s\U+00E1nh\";"
    	       "fixed_width = true;"
    	       "alignment = left;"
    	       "key = \"Text_MSS\";"
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_MSS_TN\";"
    	       "fixed_width = true;"
    	       "value = \"0\";"
    	       "}"
    	       "}"
    
    
    
    
    	       
    
    	       ":toggle"
    	       "{"
    	       "alignment = centered ;"
    	       "label = \"Ch\U+00E8n k\U+00FD hi\U+1EC7u l\U+00EAn Tr\U+1EAFc Ngang\" ;"
    		"key = \"toggle_KH\" ;"
    		"}"
    
    
    	       ":toggle"
    	       "{"
    	       "alignment = centered ;"
    	       "label = \"V\U+1EBD l\U+1EDBp \U+0111\U+01B0\U+1EDDng c\U+0169\" ;"
    		"key = \"toggle_DC\" ;"
    		"}"
    
    	       ": row"
    	       "{"
    	       "children_alignment = right;"
    	       ": text"
    	       "{"
    	       "label = \"Nh\U+1EADp \U+0111\U+1ED9 d\U+00E0y l\U+1EDBp \U+0111\U+01B0\U+1EDDng c\U+0169\";"
    	       "fixed_width = true;"
    	       "key = \"Text_DC\" ;"
    	       "alignment = left;"
    	       
    	       "}"
    	       ": edit_box"
    	       "{"
    	       "key = \"box_DC\";"
    	       "fixed_width = true;"
    	       "value = \"0.1\";"
    	       "}"
    	       "}"
    
    
    	       
    
     		"spacer;" "spacer;" "spacer;" "spacer;"
    	       
    		": button"
    		"{"
    		"label = \"V\U+1EBD Tr\U+1EAFc Ngang\";"
    		"key = \"VETRACNGANG\";"
    		"is_default = false;"
    		"width = 15;" "fixed_width = true;"
    	        "alignment = centered;"
    		"}"
    
    	       
    		"}"
    	       "}"
     	       "}"
    
    
    	       
    	       "spacer;" "spacer;" "spacer;" 
    	       "ok_cancel;"
    	       "}"
    	      )
        (write-line x des)
      )
      (not (setq des (close des)))
      (< 0 (setq dch (load_dialog dcl)))
      (new_dialog "temp" dch)
    )
    
    
    

     


  7. 2 giờ trước, Doan Nguyen Van đã nói:

    Hiểu sơ sơ có vẻ ý của bác là căn chỉnh các cột trong list_box.

    Bác khai báo list box thêm dòng Tabs nữa là được:

    
    : list_box {
    label = ....;
    key = abc;
    tabs = 20 40; có bao nhiêu cột thì bấy nhiêu số tabs, ở đây có 3 cột thì lấy 2 dòng
    multiple_select = false;
    }

    Trong phần khai báo các text của list, bác khai báo các text nối với nhau thêm ký tự tab trống là được

    • cadvietlisp.lsp
      lisp help
    •  
    
    (setq str (strcat thanhpho "	" vn2000 "          " hn72 ))

     

    Bác nói chuẩn rồi!

    Lúc sáng em được bác @Doan Van Ha giúp đỡ rồi và đã hoàn thiện rồi. Em cũng nhận ra được vấn đề bác chỉ rồi. Cảm ơn bác nhiều 


  8. Vào lúc 11/4/2018 tại 21:33, quocmanh04tt đã nói:

    Mình tham gia 1 cái, chỉ cần gọi lệnh (KTT) lên và lăn chuột là tra, OK là xuất ra TEXT. (bao gồm VN2000 và HN72)

    https://drive.google.com/file/d/1F-pxzcygtuyM2q2nq_G9nDL662e8Wzub/view?usp=sharing

    HH: 

    2018-04-11_213208.png

    Bác có thể share cho em xin mã code được ko ạ? Em căn chỉnh mãi để các cột trong Textbox nó thẳng hàng mà không được. Em cảm ơn bác nhiều! Email của em là: heaven2407@gmail.com. Chân thành cảm ơn bác.


  9. Bạn tham khảo lisp này!

    (defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
    ;;;--------------------------------------------------------------------
    (defun C:TL( / ss L e)
    (setq
        ss (ssget  (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))
        L 0.0
    )
    (vl-load-com)
    (while (setq e (ssname ss 0))
        (setq L (+ L (length1 e)))
        (ssdel e ss)
    )
    (alert (strcat "Total length = " (rtos L)))
      (Prompt (strcat "Total length = " (rtos L 2 3) " m"))
      (princ)
    )


  10. Vào lúc 17/7/2019 tại 15:24, united đã nói:

    Không biết anh @thanhduan2407 còn ở đây không?

    Em xin được nhờ anh (hoặc bất kỳ anh nào) sửa giúp em 1 chút lisp VTL2 để "đối tượng thứ hai" không phải là 1 đường mà có thể là nhiều đường.

    Trên diễn đàn có 1 lisp làm được tương tự (lisp Batter) nhưng với các đối tượng dài (hoặc rải dày) thì nó làm việc rất chậm.

    Về tác dụng thì như hình: Chỉ cần chọn đối tượng thứ nhất (1) và chọn nhóm đối tượng thứ 2 (2&3) rồi Enter để ra được kết quả như hình. Còn với lisp VTL2 thì phải thực hiện rải 2 lần và xóa bớt đối tượng thừa, hoặc phải Break đối tượng (1) thành các đoạn nhỏ.

    PS: hình chỉ là minh họa chứ em thường rải nhiều đối tượng khá phức tạp nên rất mất thời gian.

    - Thêm 1 điều nữa là lisp này có nhược điểm là không chạy liên tục, mỗi lần rải lại phải thực hiện lệnh từ đầu, không như lisp #dưới em up.

    Capture.PNG

    Bạn nhờ người khác viết lisp tức là chiếm dụng thời gian. Bạn nên trả phí cho công việc này. Khởi điểm ra giá 300k.

    • Like 2

  11. Xin phép em viết lisp này! Không biết như vậy đã hoàn thiện chưa ạ! Mong các bác chỉ giáo!

    (vl-load-com)
    (defun C:DUAN (/ ELAST LOOP LTSOBJ  PT1 PT2 SSA)
      (defun *error* (msg)
        (if	Olmode
          (setvar 'osmode Olmode)
        )
        (if	(not (member msg '("*BREAK,*CANCEL*,*EXIT*")))
          (princ (strcat "\nError: " msg))
        )
        (princ)
      )
      (setq Olmode (getvar "OSMODE"))
      (setvar 'CMDECHO 0)
      (Prompt
        "\nQu\U+00E9t ch\U+1ECDn \U+0111\U+1ED1i t\U+01B0\U+1EE3ng \U+0111\U+1EC3 copy v\U+00E0 xoay:"
      )
      (setq ssa (ssget))
      (setq Loop T)
      (setq pt1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m chu\U+1EA9n: "))
      (while Loop
        (setq pt2 (getpoint pt1 "\nCh\U+1ECDn \U+0111i\U+1EC3m \U+0111\U+1EB7t: "))
        (cond
          (T
           (if pt2
    	 (progn
    	   (setq Elast (entlast))
    	   (command "copy" ssa "" pt1 pt2 )
    	   (setq LtsObj (GetNewEnts Elast))
    	   (command "rotate" (CV:List-to-ss LtsObj) "" pt2 pause)
    	 )
    	 (setq Loop nil)
           )
          )
        )
      )
      (setvar 'OSMODE Olmode)
      (princ)
    )
    (defun CV:List-to-ss (lst / ss)
      (setq ss (ssadd))
      (foreach item	lst
        (or	(= (type item) 'Ename)
    	(setq item (vlax-vla-object->ename item))
        )
        (setq ss (ssadd item ss))
      )
      ss
    )
    
    (defun GetNewEnts (ename / new)
      (while (setq ename (entnext ename))
        (if	(entget ename)
          (setq new (cons ename new))
        )
      )
      new
    )
     ;|«Visual LISP© Format Options»
    (200 2 60 2 nil "end of " 80 9 0 0 0 T T T T)
    ;*** DO NOT add text below the comment! ***|;

     

    • Vote tăng 1

  12. 1 giờ} trướ}c, Doan Van Ha đã nói:

    Lỗi sao được mà lỗi Duan ơi.

    Thử thay dòng này vào dòng của ndtnv xem:

     

    • cadvietlisp.lsp
      lisp help
    •  
    
    
    (setq LtsZichZac ((eval (read(strcat "SortPoint_" style))) x y))
    
    

     

    Sorry bác Doan Van Ha. Cháu nhầm với phía trên khi biến chưa xác định. Lúc này là hàm đã xác định rồi.

    11 phút trước, ngokiet đã nói:

    Mình giải thích cho bạn 

    - Hàm eval trả về giá trị biến.

    - Hàm read đọc tên biến.

    Tuy nhiên mình cảm thấy nếu bác viết lại hàm sortpoint thành 1 hàm có các trường hợp thì hay hơn vì bác cũng phải làm 4 hàm tương tự nhau. Mình viết như vậy để bác có thể dùng hàm như biến, biến như hàm thì linh động hơn.

    Mình share cho bạn hàm sort 2 chiều theo 8 trường hợp luôn

    • cadvietlisp.lsp
      lisp help
    •  
    
    (defun sortx(s1 st / f1 f2 f3 f4)
      (mapcar 'set '(f1 f2 f3 f4)
    	  (mapcar 'eval
    		  (nth st '((cadr car > >)
    			    (cadr car > <)
    			    (cadr car < <)
    			    (cadr car < >)              
    			    (car cadr > >)
    			    (car cadr > <)
    			    (car cadr < <)
    			    (car cadr < >)))))
      (vl-sort s1 '(lambda(x y) (if (equal  (f1 x) (f1 y) 0.1)
    			      (f4 (f2 x) (f2 y))
    			      (f3 (f1 x) (f1 y))))))

    Bác có thể thay đổi theo ý mình và chỉnh sửa cũng dễ.

    St : Là style của bạn (Bạn có thể dùng là (vl-position style '("PTTD" "TPTD" ....))

    Mình nghĩ nên dùng style là số thì dễ hơn.

    Đây là mình sử dụng các biến fx là các hàm tương ứng khi sort.

    Cảm ơn bác! Em vội quá chưa test, cứ nghĩ ở câu hỏi hôm qua. Cảm ơn bác cho ví dụ dễ hiểu và dễ học hỏi.


  13. 37 phút trước, ndtnv đã nói:

    Dòng đó là của bạn ngokiet

    Theo cách của tôi là:

    (setq LtsZichZac (eval (read (strcat "(SortPoint_" style " LtsPoint kccum)" ))))

     

    26 phút trước, Doan Van Ha đã nói:

    1 ví dụ viết theo cách viết cho gọn của anh ndtnv để thanhduan dễ hiểu:

    
    
    (defun C:HA()
     (setq x 1 y 2)
     (initget "TDTP DTTP TPDT PTDT")
     (setq style (getkword "\nStyle [TDTP/DTTP/TPDT/PTDT]: "))
     (setq LstZickZac (eval (read (strcat "(SortPoint_" style " x y " ")")))))
    (defun SortPoint_TDTP(x y)
     (+ x y))
    (defun SortPoint_DTTP(x y)
     (- x y))
    (defun SortPoint_TPDT(x y)
     (* x y))
    (defun SortPoint_PTDT(x y)
     (/ x y))
    
    

    Cảm ơn anh @ndtnv và bác @Doan Van Ha nhiều! 

    Thiếu "(" và ")" là cái em/cháu vướng.


  14. 1 giờ} trướ}c, ndtnv đã nói:

    Bạn test xem

    (setq LtsZichZac ((read(strcat “SortPoint_” style)) LtsPoint kccum)) 

    có chạy được không?

    Cách lập trình của tôi là kết hợp 4 hàm SortPoint thay cho kết hợp 4 lệnh gọi,   trên đó chỉ là VD kết hợp 4 lệnh gọi

    Có thể có cách kết hợp khác hay hơn, nếu bạn nào biết xin chia sẻ.

    Cảm ơn bác đã quan tâm đến bài viết của em. Em test của bác không được bác ạ!

    Nó lỗi tại dòng của bác. 


  15. Cháu cảm ơn bác @Doan Van Ha! và bác @ngokiet!

    (cond
    	     ((= Style "TDTP")
    	      (setq LtsZichZac (SortPoint_TDTP LtsPoint kccum))
    	     )
    	     ((= Style "DTTP")
    	      (setq LtsZichZac (SortPoint_DTTP LtsPoint kccum))
    	     )
    	     ((= Style "TPDT")
    	      (setq LtsZichZac (SortPoint_TPDT LtsPoint kccum))
    	     )
    	     ((= Style "PTDT")
    	      (setq LtsZichZac (SortPoint_PTDT LtsPoint kccum))
    	     )
    	   )

    Đoạn này lặp lại 4 lần. Dài 1 chút nhưng giải quyết được vấn đề rồi ạ.


  16. 1 giờ} trướ}c, Botot đã nói:

    Không hiểu ý của bạn, đọc câu này mình hiểu là ai đó muốn viết lisp có phí trên CV phải xin phép bạn trước, và “kiếm tiền trên công sức của ngkhac là ko đc” tức là bạn bị ng khác lấy source của bạn đem bán hả?

    ps: tui không phải “bác quân”, chỉ thấy câu nói của bạn khá là lạ!

    Tức là lisp này mình viết và tặng anh em trên diễn đàn Trắc Địa, cả kho lisp của mình luôn. Mình biết bạn Quân lấy về và phát triển thêm rồi bán. Thậm chí còn đăng ký bản quyền. Có rất nhiều người đã phản ánh tới mình nhưng mình không bận tâm lắm.

    Tác giả viết và bán thì không sao nhưng không phải của mình thì đừng bán.

    • Like 1
×