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

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)

Các bài được khuyến nghị

23 giờ trước, Doan Van Ha đã nói:

Tôi muốn hỏi về COLOR.

Giả dụ tôi lấy được màu màn hình, có chỉ số là n (hoặc 3 màu RGB). Tôi muốn tìm 1 màu gần giống màu này thì có nguyên tắc tìm không?

Lý do: tôi muốn tạo các đối tượng có màu gần giống màu màn hình để nhìn nó chỉ lờ mờ (do không biết trước màu màn hình mà user đang dùng).

VD: khi màu màn hình là Black thì màu 250 là gần giống.

Ai biết xin chỉ giùm, cám ơn.   

Hình như ý bác là muốn làm mờ đối tương. Chăc dung để review grread. 

Mình nghĩ là nên thay dổi thuộc tình transparent thì dễ cho bạn hơn là thay đổi màu. Mình thường sài cách này.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
9 phút trước, ngokiet đã nói:

Hình như ý bác là muốn làm mờ đối tương. Chăc dung để review grread. 

Mình nghĩ là nên thay dổi thuộc tình transparent thì dễ cho bạn hơn là thay đổi màu. Mình thường sài cách này.

Không phải dùng grread.

Tôi vẫn muốn thấy các objects này, nhưng thích nó có màu gần màu nền để vẫn nhìn thấy nhưng chỉ lờ mờ thôi (đừng tương phản với màu nền quá mà tốn V-Roto)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Trong đoạn mã của bạn, người viết đã chủ định chỉ bật từng chức năng bắt điểm. Cụ thể:

lệnh (setvar "osmode" 512) là chỉ bật chức năng bắt NEArest.

lệnh (setvar "osmode" 128) là chỉ bật chức năng PERpendicular

lệnh (setvar "osmode" 1) là chỉ bật chức năng ENDpoint

 

Muốn không tắt chức năng này, bạn chỉ cần vô hiệu hóa các mã (setvar "osmode" xxx) với xxx là một số khác 0. Bằng cách xóa dòng lệnh đó đi hoặc thêm dấu chấm phẩy (:lol: vào đầu dòng lệnh.

 

địa chỉ chữa trị bệnh đau tinh hoàn ở Biên Hòa
chi phí chữa trị bệnh rối loạn cương dương ở Biên Hòa
địa chỉ chữa trị bệnh rối loạn cương dương ở Biên Hòa
chi phí chữa trị bệnh vô sinh hiếm muộn ở Biên Hòa

  • Vote giảm 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 

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)
)


 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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))

 

 

 

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Các bác cho em hỏi chút:

Hàm (vl-directory-files  Dir "ext" 1)  trả về danh sách file trong folder Dir,

nhưng nếu các file chứa tiếng việt thì danh sách trả về không đúng.

Vậy cho em hỏi có hàm nào có thể lấy danh sách file mà trong tên của nó có chứa tiếng việt không ạ?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
16 phút trước, Doan Nguyen Van đã nói:

Các bác cho em hỏi chút:

Hàm (vl-directory-files  Dir "ext" 1)  trả về danh sách file trong folder Dir,

nhưng nếu các file chứa tiếng việt thì danh sách trả về không đúng.

Vậy cho em hỏi có hàm nào có thể lấy danh sách file mà trong tên của nó có chứa tiếng việt không ạ?

Mấy thằng VL/VLA/VLAX rất dốt tiếng Việt, trong khi các hàm liên quan đến file hầu hết là thuộc nhóm đó. Nên hình như không có (?)

Theo chủ quan cá nhân tôi là tôi đoạn tuyệt với tên file Vietnamese cho đỡ đau đầu, vì nó không đụng chỗ này rồi cũng đụng chỗ khác.

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
23 phút trước, Doan Van Ha đã nói:

Mấy thằng VL/VLA/VLAX rất dốt tiếng Việt, trong khi các hàm liên quan đến file hầu hết là thuộc nhóm đó. Nên hình như không có (?)

Theo chủ quan cá nhân tôi là tôi đoạn tuyệt với tên file Vietnamese cho đỡ đau đầu, vì nó không đụng chỗ này rồi cũng đụng chỗ khác.

Đau đầu thật bác ạ, cháu vừa thử 1 đống ACet-file ... mà vẫn không được, chẳng lẽ đành bó tay thật 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
3 giờ trước, Doan Nguyen Van đã nói:

Đau đầu thật bác ạ, cháu vừa thử 1 đống ACet-file ... mà vẫn không được, chẳng lẽ đành bó tay thật 

Vấn đề nữa là đọc rồi cũng không làm gì được. Vì các lệnh liên quan tới file đều không hỗ trợ path unicode. Nếu muốn chỉ có thể viết bằng .net thôi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
3 giờ trước, Doan Nguyen Van đã nói:

Đau đầu thật bác ạ, cháu vừa thử 1 đống ACet-file ... mà vẫn không được, chẳng lẽ đành bó tay thật 

Để hôm nào rảnh rỗi viết các hàm Lisp sử dụng .NET là sử dụng Unicode vô tư (không chỉ tiếng Việt ).

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
35 phút trước, ngokiet đã nói:

Vấn đề nữa là đọc rồi cũng không làm gì được. Vì các lệnh liên quan tới file đều không hỗ trợ path unicode. Nếu muốn chỉ có thể viết bằng .net thôi.

 

15 phút trước, gia_bach đã nói:

Để hôm nào rảnh rỗi viết các hàm Lisp sử dụng .NET là sử dụng Unicode vô tư (không chỉ tiếng Việt ).

Cảm ơn các bác, e có test được hàm này  (Acet-file-dir  "ext" Dir)

Có điều đúng là khó quản lý thật.....

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
37 phút trước, Doan Nguyen Van đã nói:

 

Cảm ơn các bác, e có test được hàm này  (Acet-file-dir  "ext" Dir)

Có điều đúng là khó quản lý thật.....

Bác dùng thử cái này của mình xem

 

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
11 giờ trước, ngokiet đã nói:

Bác dùng thử cái này của mình xem

 

Em trước giờ chỉ lập trình Lisp. 

Thấy ứng dụng này có vẻ hay quá,.. 

Mới bắt đầu bác cho em hỏi chút: 

- Để lập trình VB.Net thì dùng ứng dụng nào (theo e tìm hiểu thì có thể dùng: Visual Studio, MS C#) 

- Khi lập trình xong, làm sao để load cùng với file vd.lsp chính mỗi khi khởi động cad

- Có thể đóng gói lại để cho gọn (giống .VLX, .fas ..) không ạ 

Chân thành cảm ơn bác! (Em có search diễn đàn mà thông tin không nhiều, các thông tin thì chủ yếu về các hàm) 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
47 phút trước, Doan Nguyen Van đã nói:

Em trước giờ chỉ lập trình Lisp. 

Thấy ứng dụng này có vẻ hay quá,.. 

Mới bắt đầu bác cho em hỏi chút: 

- Để lập trình VB.Net thì dùng ứng dụng nào (theo e tìm hiểu thì có thể dùng: Visual Studio, MS C#) 

- Khi lập trình xong, làm sao để load cùng với file vd.lsp chính mỗi khi khởi động cad

- Có thể đóng gói lại để cho gọn (giống .VLX, .fas ..) không ạ 

Chân thành cảm ơn bác! (Em có search diễn đàn mà thông tin không nhiều, các thông tin thì chủ yếu về các hàm) 

- Lập trình .NET thì dùng Visual Studio. Nó có cả Visual Basic và C++ trong đó luôn.

- Muốn load cùng file lisp thì lisp cú sử dụng netload thôi. Còn load khi khởi động thì bác load lisp nó theo lisp. Hay tham khảo thêm https://knowledge.autodesk.com/support/autocad/learn-explore/caas/sfdcarticles/sfdcarticles/How-to-autoload-DLLs-with-AutoCAD.html

- Nó luôn đóng gói xong mới sủ dụng được. Đây là ngôn ngữ cần bien dịch chứ không chạy trực tiếp. Nó dịch ra file dll cho autocad.

 

Mình cũng biết ít thôi. Nó là ngôn ngữ lập trình chung. Có thể tạo ứng dụng riêng rất mạnh. Không có ai biết hết nó dâu. Mình chỉ tìm hiểu cơ bản và mình muốn làm gì thôi. Dọc help là chính.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Lâu ko đụng đến lisp nên h quên hết r, các bạn cho mình hỏi, mình có 1 list input như bên dưới, làm sao để có output như mình mong muốn:

INPUT:

(list
 (list "A" (list 1 1) (list 2 2) (list 3 3))
 (list "B" (list 1 2) (list 3 4) (list 5 6))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
 (list "A" (list 1 1) (list 1 1) (list 1 1))
 (list "B" (list 10 10) (list 10 10) (list 10 10))
)

OUTPUT:

(list
 (list "A" (list 2 2) (list 3 3) (list 4 4))
 (list "B" (list 11 12) (list 13 14) (list 15 16))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
)

Mình xin cảm ơn !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chào Dương Nhat Duy!

Bạn thử code sau: 


(defun c:test (/ a b c ptdau lst)
(setq a 
(list
 (list "A" (list 1 1) (list 2 2) (list 3 3))
 (list "B" (list 1 2) (list 3 4) (list 5 6))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
 (list "A" (list 1 1) (list 1 1) (list 1 1))
 (list "B" (list 10 10) (list 10 10) (list 10 10))
))
(setq b (vl-sort a '(lambda(x y) (< (car x) (car y)))) lst '())
(while (/= (length b) 0)
  (setq c (vl-remove-if '(lambda(x) (/= (car x) (caar b))) b))
  (setq ptdau (car c))
  (if (cdr c)
    (foreach x (cdr c)
     (setq lst (append lst (list (list (car ptdau) (mapcar '(lambda(q z) (mapcar '+ q z)) (cdr ptdau) (cdr x))))))
    )
    (setq lst (append lst (list ptdau)))
  )
  (setq b (vl-remove-if '(lambda(x) (= (car x) (caar b))) b))
)
           lst)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
6 giờ trước, Duong Nhat Duy đã nói:

Lâu ko đụng đến lisp nên h quên hết r, các bạn cho mình hỏi, mình có 1 list input như bên dưới, làm sao để có output như mình mong muốn:

INPUT:

  • cadvietlisp.lsp
    lisp help
  •  

(list
 (list "A" (list 1 1) (list 2 2) (list 3 3))
 (list "B" (list 1 2) (list 3 4) (list 5 6))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
 (list "A" (list 1 1) (list 1 1) (list 1 1))
 (list "B" (list 10 10) (list 10 10) (list 10 10))
)

OUTPUT:

  • cadvietlisp.lsp
    lisp help
  •  

(list
 (list "A" (list 2 2) (list 3 3) (list 4 4))
 (list "B" (list 11 12) (list 13 14) (list 15 16))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
)

Mình xin cảm ơn !

Mình cùng mới viết thử.

Bạn test hàm sau

(defun test(ss / x kq)
  (while ss
    (setq x (car ss)
	  ss (vl-remove-if '(lambda(a)
			      (if (eq (car a) (car x))
				(setq x (cons (car x) (mapcar '(lambda(b c) (mapcar '+ b c)) (cdr x) (cdr a)))))) (cdr ss))
	  kq (cons x kq)))
  (reverse kq))

 

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
39 phút trước, Tue_NV đã nói:

Chào Dương Nhat Duy!

Bạn thử code sau: 

 



(defun c:test (/ a b c ptdau lst)
(setq a 
(list
 (list "A" (list 1 1) (list 2 2) (list 3 3))
 (list "B" (list 1 2) (list 3 4) (list 5 6))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
 (list "A" (list 1 1) (list 1 1) (list 1 1))
 (list "B" (list 10 10) (list 10 10) (list 10 10))
))
(setq b (vl-sort a '(lambda(x y) (< (car x) (car y)))) lst '())
(while (/= (length b) 0)
  (setq c (vl-remove-if '(lambda(x) (/= (car x) (caar b))) b))
  (setq ptdau (car c))
  (if (cdr c)
    (foreach x (cdr c)
     (setq lst (append lst (list (list (car ptdau) (mapcar '(lambda(q z) (mapcar '+ q z)) (cdr ptdau) (cdr x))))))
    )
    (setq lst (append lst (list ptdau)))
  )
  (setq b (vl-remove-if '(lambda(x) (= (car x) (caar b))) b))
)
           lst)

 

Hình như bác thừa bước sort. Nếu sort thì duyệt qua 1 lận là xong đâu cần vl-remove.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
4 phút trước, ngokiet đã nói:

Hình như bác thừa bước sort. Nếu sort thì duyệt qua 1 lận là xong đâu cần vl-remove.

 

Không thừa đâu bạn.

Vì điều kiện mình đang kiểm tra (/= (length b) 0) . Nếu không remove thì (length b) nó khác 0 hoài thôi 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ} trướ}c, Tue_NV đã nói:

 

Không thừa đâu bạn.

Vì điều kiện mình đang kiểm tra (/= (length b) 0) . Nếu không remove thì (length b) nó khác 0 hoài thôi 

Ý mình như thế này là được

(defun test(ss / x y kq)
  (setq ss (vl-sort ss '(lambda(a b) (> (car a) (car b))))
	x  (caar ss)
	y  (cdar ss))
  (foreach z (cdr ss)
    (if (eq (car z) x)
      (setq y (mapcar '(lambda(a b) (mapcar '+ a b)) y (cdr z)))
      (setq kq (cons (cons x y) kq)
	    x  (car z)
	    y  (cdr z))))
  (cons (cons x y) kq))

Hay trong hàm của bác ở chỗ (setq b (vl-sort ....)) Thì (setq b a) nó vẫn chạy đúng.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vào lúc 4/11/2019 tại 19:28, Tue_NV đã nói:

Chào Dương Nhat Duy!

Bạn thử code sau: 

 



(defun c:test (/ a b c ptdau lst)
(setq a 
(list
 (list "A" (list 1 1) (list 2 2) (list 3 3))
 (list "B" (list 1 2) (list 3 4) (list 5 6))
 (list "C" (list 0 0) (list 0 0) (list 0 0))
 (list "A" (list 1 1) (list 1 1) (list 1 1))
 (list "B" (list 10 10) (list 10 10) (list 10 10))
))
(setq b (vl-sort a '(lambda(x y) (< (car x) (car y)))) lst '())
(while (/= (length b) 0)
  (setq c (vl-remove-if '(lambda(x) (/= (car x) (caar b))) b))
  (setq ptdau (car c))
  (if (cdr c)
    (foreach x (cdr c)
     (setq lst (append lst (list (list (car ptdau) (mapcar '(lambda(q z) (mapcar '+ q z)) (cdr ptdau) (cdr x))))))
    )
    (setq lst (append lst (list ptdau)))
  )
  (setq b (vl-remove-if '(lambda(x) (= (car x) (caar b))) b))
)
           lst)

 

 

Vào lúc 4/11/2019 tại 20:37, ngokiet đã nói:

Ý mình như thế này là được

  • cadvietlisp.lsp
    lisp help
  •  

(defun test(ss / x y kq)
  (setq ss (vl-sort ss '(lambda(a b) (> (car a) (car b))))
	x  (caar ss)
	y  (cdar ss))
  (foreach z (cdr ss)
    (if (eq (car z) x)
      (setq y (mapcar '(lambda(a b) (mapcar '+ a b)) y (cdr z)))
      (setq kq (cons (cons x y) kq)
	    x  (car z)
	    y  (cdr z))))
  (cons (cons x y) kq))

Hay trong hàm của bác ở chỗ (setq b (vl-sort ....)) Thì (setq b a) nó vẫn chạy đúng.

 

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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á

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
17 phút trước, thanhduan2407 đã nói:

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á

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×