Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Trang72

Xuất dữ liệu cad sang EXCEL lần lượt

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

có thể là như thế này chẳng hạn

 

;; free lisp from cadviet.com

(defun c:cvs ( )
(defun saveVars()
 (setq STT (get_tile "ebox1")
	   Ma (get_tile "ebox2")
	   KC (get_tile "ebox3")
	   LGC (get_tile "ebox4")
  )
)

(setq filename (getfiled "Select a File" "" "xls" 1))
(setq f (open filename "w")) 
(setq sta 2)
(while (> sta 0)

(setq dcl_id (load_dialog "c:/1.DCL"))
(if (not (new_dialog "NHAPLIEU" dcl_id) ) (exit))
(action_tile "zoom" "(done_dialog 2)")
(setq sta (start_dialog))

 (if (= sta 0)
 (progn
	  (princ "\n \n ...EXAMPLE Cancelled. \n ")
 )
 )
 (if (= sta 1)
 (progn
 (saveVars)
 (setq retlist (strcat stt "\t" ma "\t" kc "\t" Lgc "\t"))
 (princ "\n")
 (princ retlist)	 
 (write-line retlist f )	
 )
 )
 (if (= sta 2)
  (progn
  (command "zoom" "e")
  (alert "\n Khoa zoom bi nhan")
  (SSGET)
  )
 )

)
(close f )
(done_dialog)
(unload_dialog dcl_id)
(princ)

)

  • 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
có thể là như thế này chẳng hạn

 

;; free lisp from cadviet.com

(defun c:cvs ( )
(defun saveVars()
 (setq STT (get_tile "ebox1")
	   Ma (get_tile "ebox2")
	   KC (get_tile "ebox3")
	   LGC (get_tile "ebox4")
  )
)

(setq filename (getfiled "Select a File" "" "xls" 1))
(setq f (open filename "w")) 
(setq sta 2)
(while (> sta 0)

(setq dcl_id (load_dialog "c:/1.DCL"))
(if (not (new_dialog "NHAPLIEU" dcl_id) ) (exit))
(action_tile "zoom" "(done_dialog 2)")
(setq sta (start_dialog))

 (if (= sta 0)
 (progn
	  (princ "\n \n ...EXAMPLE Cancelled. \n ")
 )
 )
 (if (= sta 1)
 (progn
 (saveVars)
 (setq retlist (strcat stt "\t" ma "\t" kc "\t" Lgc "\t"))
 (princ "\n")
 (princ retlist)	 
 (write-line retlist f )	
 )
 )
 (if (= sta 2)
  (progn
  (command "zoom" "e")
  (alert "\n Khoa zoom bi nhan")
  (SSGET)
  )
 )

)
(close f )
(done_dialog)
(unload_dialog dcl_id)
(princ)

)

Chào bác npham,

Mình không rõ vì lý do gì, có thể do mình xài cad2004 chăng, nhưng khi load cái lisp của bác đã sửa này về chạy thử thì thấy:

1/- Hộp thoại xuất hiện , nhưng chỉ nhập được một dòng dữ liệu rồi thoát mà không in kết quả sang Excel được với thông báo lỗi là

; error: bad argument type: stringp nil

 

2/- Lúc này do chương trình thoát ra mà chưa chạy hàm (close f) nên file Excel không thể mở được mà chỉ có thể mở ở dạng read only. Nội dung thì trống rỗng như đã nói trên bác ạ.

 

Cứ theo logic như bác giải thích thì thấy OK, nhưng thực tế mình chưa rõ vì sao lại bị như vậy. Bác có thể bớt chút thời gian xem lại hộ mình với..

Cám ơn bá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
Chào bác npham,

Mình không rõ vì lý do gì, có thể do mình xài cad2004 chăng, nhưng khi load cái lisp của bác đã sửa này về chạy thử thì thấy:

1/- Hộp thoại xuất hiện , nhưng chỉ nhập được một dòng dữ liệu rồi thoát mà không in kết quả sang Excel được với thông báo lỗi là

; error: bad argument type: stringp nil

 

2/- Lúc này do chương trình thoát ra mà chưa chạy hàm (close f) nên file Excel không thể mở được mà chỉ có thể mở ở dạng read only. Nội dung thì trống rỗng như đã nói trên bác ạ.

 

Cứ theo logic như bác giải thích thì thấy OK, nhưng thực tế mình chưa rõ vì sao lại bị như vậy. Bác có thể bớt chút thời gian xem lại hộ mình với..

Cám ơn bác.

 

Heee. Gỡ lỗi là công việc rất thú vị của programmer. Mình ví dụ mà chưa kịp chạy thử nó nữa

 

Hàm savevars được gọi sau khi done_ dialog nên nó không đọc được (get_tile "key"). bạn bỏ lại ở vị trí thích hợp nhé.

 

Có nghĩa trong trường hợp này bạn phải thêm: (action_tile "accept" "(savevars)(done_dialog 1)") và bỏ cái savevars ở dưới

 

mà mình góp ý xí. Chỉ đóng tạm thời hộp thoại khi rất cần thiết . Ví dụ cần thực hiện những lệnh mà nếu họp thoại hiẹn hành thì không thể làm được.

Nếu không mỗi lần tắt/mở HT sẽ nháy 1 cái nhìn k0 " chuyên nghiệp"

  • 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
Chào bác npham,

Nhờ bác chỉ dạy và tham khảo thêm các bác khác, mình làm thử cái này hơi thừa vì chưa chắc có ai cần dùng. Song mình gửi lên để mong các bác góp ý thêm xem còn chỗ nào bất hợp lý. Đề bài vẫn là của bạn Trang72 thôi, còn đáp án thì có khác chút đỉnh với của bác. Tuy cũng ra được cái hộp thoại nhưng chưa được như mong muốn nên nhờ các bác chỉ thêm.

1/- file lisp

 

2/- File dcl:

 

NHAPLIEU : dialog {
 label = "Nhap so lieu sang Excel";
 : column {
   : boxed_row {   
     label = "Data input";   
     : edit_box { label = "STT"; key = "ebox1"; }
     : edit_box { label = "Ma so"; key = "ebox2"; }
     : edit_box { label = "Khoang cach"; key = "ebox3"; }
     : edit_box { label = "Ghi chu"; key = "ebox4"; }
   }
   : row {
     label = "Function";
     ok_cancel; 
     : button {key = "zoom"; label = "Zoom realtime"; is_default = false; is_zoom = true; }
   }
 }
}

Chào các bác.

Tiếp sức cùng bác Bình, "mình làm thử cái này hơi thừa vì chưa chắc có ai cần dùng ?"

Đề bài vẫn là của bạn Trang72 và ý tuởng từ LISP của bác Bình, đáp án thì có khác chút đỉnh với nguyên bản ..

 

Sử dụng file "NHAPLIEU.dcl" của bác Bình.

Môt số cải tiến :

- gán giá trị mặc định cho hộp thoại

- STT tự động tăng lên 1 sau mỗi lần nhấn OK

- chức năng của button ZOOM đuợc đổi thành GET_Distance (đo khoảng cách 2 điểm trên CAD)

(defun c:cvs (/ dcflag dcl_id f filename kc ma note retlist stt)
 (defun saveVars ();save data
   (setq STT (get_tile "ebox1")
  Ma  (get_tile "ebox2")
  KC  (get_tile "ebox3")
  note (get_tile "ebox4")   )  )

 (setq dcl_id (load_dialog "temp"));(load_dialog "NHAPLIEU.dcl")(load_dialog "temp")
 (setq filename (getfiled "Select a File" "" "csv" 1))
 (setq f (open filename "a"))

 ;init data
 (setq STT  1
Ma   "CadViet"
KC   1000
note "AutoLisp")

 (while (/= dcflag 0)    
   (if	(not (new_dialog "NHAPLIEU" dcl_id))
     (exit)    )

   ;set data
   (set_tile "ebox1" (itoa stt))
   (set_tile "ebox2" Ma)    
   (set_tile "ebox3" (rtos kc))
   (set_tile "ebox4" note)

   (action_tile "accept" "(saveVars)(done_dialog 1)")
   (action_tile "zoom" "(done_dialog 2)")

   (setq dcFlag (start_dialog))
   (cond

     ((= dcflag 1);add data to file
      (progn
 (setq retlist (strcat stt "\t" ma "\t" kc "\t" note "\t"))
 (princ "\n")	 (princ retlist)
 (write-line retlist f)
 (setq stt (1+ (atoi stt)))
 (setq kc (atof kc)) ))

     ((= dcflag 2);Get distance
      (if (setq tmp (getdist "\nPick 2 diem de do khoang cach :"))
 (setq kc tmp)	 ))
     );cond

   )
 (princ "\n \n ...EXAMPLE Cancelled. \n ")  
 (close f)
 (unload_dialog dcl_id)
 (princ))

  • 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
Chào các bác.

Tiếp sức cùng bác Bình, "mình làm thử cái này hơi thừa vì chưa chắc có ai cần dùng ?"

Đề bài vẫn là của bạn Trang72 và ý tuởng từ LISP của bác Bình, đáp án thì có khác chút đỉnh với nguyên bản ..

 

Sử dụng file "NHAPLIEU.dcl" của bác Bình.

Môt số cải tiến :

- gán giá trị mặc định cho hộp thoại

- STT tự động tăng lên 1 sau mỗi lần nhấn OK

- chức năng của button ZOOM đuợc đổi thành GET_Distance (đo khoảng cách 2 điểm trên CAD)

(defun c:cvs (/ dcflag dcl_id f filename kc ma note retlist stt)
 (defun saveVars ();save data
   (setq STT (get_tile "ebox1")
  Ma  (get_tile "ebox2")
  KC  (get_tile "ebox3")
  note (get_tile "ebox4")   )  )

 (setq dcl_id (load_dialog "NHAPLIEU.dcl"))
 (setq filename (getfiled "Select a File" "" "csv" 1))
 (setq f (open filename "a"))

 ;init data
 (setq STT  1
Ma   "CadViet"
KC   1000
note "AutoLisp")

 (while (/= dcflag 0)    
   (if	(not (new_dialog "NHAPLIEU" dcl_id))
     (exit)    )

   ;set data
   (set_tile "ebox1" (itoa stt))
   (set_tile "ebox2" Ma)    
   (set_tile "ebox3" (rtos kc))
   (set_tile "ebox4" note)

   (action_tile "accept" "(saveVars)(done_dialog 1)")
   (action_tile "zoom" "(done_dialog 2)")

   (setq dcFlag (start_dialog))
   (cond

     ((= dcflag 1);add data to file
      (setq retlist (strcat stt "\t" ma "\t" kc "\t" note "\t"))
      (princ "\n")
      (princ retlist)
      (write-line retlist f)
      (setq stt (1+ (atoi stt)))
      (setq kc (atof kc)) )

     ((= dcflag 2);Get distance
      (if (setq tmp (getdist "\nPick 2 diem de do khoang cach :")) ))
     );cond
   )
 (princ "\n \n ...EXAMPLE Cancelled. \n ")  
 (close f)
 (unload_dialog dcl_id)
 (princ))

Chào bác Giabach,

Sau khi test cái lisp của bác, mình thấy có vài ý như sau:

1/- Có nhẽ do mình xài Cad2004 nên nó không hiểu cái lisp của bác và cứ báo là ; error: syntax error

Sau khi đọc lại cái lisp thì mình thấy cái hàm (cond ....................) của bác có nhẽ là viết theo đời mới nên mình bổ sung thêm như sau thì lisp chạy ngon lành:

(cond

( (= dcflag 1);add data to file

(progn

(setq retlist (strcat stt "\t" ma "\t" kc "\t" note "\t"))

(princ "\n")

(princ retlist)

(write-line retlist f)

(setq stt (1+ (atoi stt)))

(setq kc (atof kc))

)

)

 

( (= dcflag 2);Get distance

(setq tmp (getdist "\nPick 2 diem de do khoang cach :"))

)

);cond

 

2/- Việc bác cho các giá trị mặc định sẽ thuận tiện cho người dùng không phải nhập lại các giá trị nếu các giá trị này ở record sau giống như record trưởc. Tuy nhiên cũng có bất lợi là dễ làm cho người sử dụng nhầm lẫn khi có những giá trị cần bỏ qua. Lúc này người sử dụng sẽ phải xóa cái giá trị đó đi trong hộp thoại.

3/- Việc bác sử dụng hàm getdist trong trường hợp này là khá hay thay vì các thao tác phải zoom pan màn hình khác.

4/- Việc bác sử dụng tham số a cho hàm open cũng là một ý rất hay.

 

Chúc bác khỏe và vui.

  • 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
Chào bác Giabach,

Sau khi test cái lisp của bác, mình thấy có vài ý như sau:

1/- Có nhẽ do mình xài Cad2004 nên nó không hiểu cái lisp của bác và cứ báo là ; error: syntax error

Sau khi đọc lại cái lisp thì mình thấy cái hàm (cond ....................) của bác có nhẽ là viết theo đời mới nên mình bổ sung thêm như sau thì lisp chạy ngon lành:

(cond

( (= dcflag 1);add data to file

(progn

(setq retlist (strcat stt "\t" ma "\t" kc "\t" note "\t"))

(princ "\n")

(princ retlist)

(write-line retlist f)

(setq stt (1+ (atoi stt)))

(setq kc (atof kc))

)

)

 

( (= dcflag 2);Get distance

(setq tmp (getdist "\nPick 2 diem de do khoang cach :"))

)

);cond

 

2/- Việc bác cho các giá trị mặc định sẽ thuận tiện cho người dùng không phải nhập lại các giá trị nếu các giá trị này ở record sau giống như record trưởc. Tuy nhiên cũng có bất lợi là dễ làm cho người sử dụng nhầm lẫn khi có những giá trị cần bỏ qua. Lúc này người sử dụng sẽ phải xóa cái giá trị đó đi trong hộp thoại.

3/- Việc bác sử dụng hàm getdist trong trường hợp này là khá hay thay vì các thao tác phải zoom pan màn hình khác.

4/- Việc bác sử dụng tham số a cho hàm open cũng là một ý rất hay.

 

Chúc bác khỏe và vui.

Cám ơn bác đã góp ý.

Xin lỗi bác vì Post bài thế nào mà code trong hàm cond bị mất 1 đọan. (đã fix ở bài viết trên)

Tui chạy với Cad2010 thì ok.

Vậy là với Cad2004 phải cho code vào trong hàm (progn ...).

Chúc bác mạnh khỏe .

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ả nhà !

Thấy mấy bác cũng có hứng thú với đề tài này nên mình " chế " lại 1 chút cho vui. Chủ yếu là để tham khảo học hỏi lẫn nhau.

Code dưới đây thực hiện công việc ghi dwx liệu nhập ra file, nhưng trước khi ra file nó được ghi vào list_box để quan sát trước.

Ưu điểm:

- Số TT twj gia tăng

- nhập liệu bằng TAB-ENter, sau khi enter con trỏ quay về code, thuận tiện cho người nhập, đồng thời reset các ô nhập liệu (trừ stt)

- Nút getdistance (theo ý tưỏng của bác gì đó)

- Quan sát được toàn bộ du liêu trươc khi ghi

Tồn tại: (cần bổ sung)

- Kiểm tra tính hợp lệ dwx liệu, loại bỏ dữ liệu rỗng

- Nút thêm, xoá, swả dw liệu trên list_box

- Cần phải hỏi lại trước khi đóng mà không ghi

 

Mấy bác có hứng thú thì phát triển tiếp nhé . Để chơi thôi chứ không biết có cần để làm gì không nwã. Hehe

 

minh hoạ:

input.png

 

Code:

;;; www.cadviet.com
(defun DCLmaker ( / f fn )
(setq fn (strcat (vl-filename-mktemp) ".dcl"))
(setq f (open fn "w"))
(write-line (strcat
"input:dialog {
label=\"Write to file\";
: boxed_row {
label=\"Row data\";
: column {: text {label=\"Number\";} : edit_box {key=\"number\";edit_width=5;}}
: column {: text {label=\"Code\";} : edit_box {key=\"code\";edit_width=8;}}
: column {: text {label=\"Distance\";} : edit_box {key=\"distance\";edit_width=8;}}
: column {: text {label=\"Notes\";} : edit_box {key=\"note\";edit_width=20;}}
: column {spacer; : button {key=\"add\";label=\"Add\";edit_width=20;}}
}
: list_box {
key=\"data\";
label=\"Data\";
}
: row { 
: button {
	label=\"Distance\";
	fixed_width=true;	
	key=\"zoom\";
		}
	: button {
	label=\"Close without write\";
	fixed_width=true;
	is_cancel=true;
	key=\"cancel\";	
	alignment=right;
		}	
: button {
	label=\"Close and write\";
	fixed_width=true;		
	key=\"accept\";
	is_default=true;
	alignment=right;
		}
		}
}"
) f)
(close f)
fn
)
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
(defun add&view (key ss /)
 (start_list key)
 (foreach x ss (add_list x))
 (end_list)
)
;---------------------------------------------------------------------------
(defun savevars ( / vars)
(setq vars (strcat
(setq number (get_tile "number")) ",			"
(get_tile "code") ",			"
(rtos (distof (get_tile "distance")) 2 2) ",			"
(get_tile "note")))

(set_tile "code" "") 
(set_tile "distance" "")
(set_tile "note" "")
vars
)
;---------------------------------------------------------------------------
(defun c:input (/ fn f number sta id data dis)


(setq id (load_dialog (dclmaker)))

(setq sta 2)	
(while (> sta 1)	
(new_dialog "input" id)
	(if dis (set_tile "distance" (rtos dis 2 2)))
  (add&view "data" data)

(mode_tile "number" 2)
(action_tile "add" "(PROGN
			  (setq data (append data (list (savevars))))
			  (add&view \"data\" data)
			(set_tile \"number\" (itoa (1+ (atoi number))))
			(mode_tile \"code\" 2)
			  )")
(action_tile "zoom" "(done_dialog 2)")  
(setq sta (start_dialog))

	(cond
  ((= sta 2) (setq dis (getdist "\nNhap khoang cach:")))
  ((= sta 1) (progn			
		 (if (setq fn (getfiled "Select a File" "" "cvs" 1))
			 (progn
		 (setq f (open fn "w"))
		   (foreach x data (write-line x f))
			 (close f)
		 ))))
  )




 )
(done_dialog)
(unload_dialog id)

 )

  • Vote tăng 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ả nhà !

Thấy mấy bác cũng có hứng thú với đề tài này nên mình " chế " lại 1 chút cho vui. Chủ yếu là để tham khảo học hỏi lẫn nhau.

Code dưới đây thực hiện công việc ghi dwx liệu nhập ra file, nhưng trước khi ra file nó được ghi vào list_box để quan sát trước.

Ưu điểm:

- Số TT twj gia tăng

- nhập liệu bằng TAB-ENter, sau khi enter con trỏ quay về code, thuận tiện cho người nhập, đồng thời reset các ô nhập liệu (trừ stt)

- Nút getdistance (theo ý tưỏng của bác gì đó)

- Quan sát được toàn bộ du liêu trươc khi ghi

Tồn tại: (cần bổ sung)

- Kiểm tra tính hợp lệ dwx liệu, loại bỏ dữ liệu rỗng

- Nút thêm, xoá, swả dw liệu trên list_box

- Cần phải hỏi lại trước khi đóng mà không ghi

 

Mấy bác có hứng thú thì phát triển tiếp nhé . Để chơi thôi chứ không biết có cần để làm gì không nwã. Hehe

 

minh hoạ:

input.png

 

Code:

;;; www.cadviet.com
(defun DCLmaker ( / f fn )
(setq fn (strcat (vl-filename-mktemp) ".dcl"))
(setq f (open fn "w"))
(write-line (strcat
"input:dialog {
label=\"Write to file\";
: boxed_row {
label=\"Row data\";
: column {: text {label=\"Number\";} : edit_box {key=\"number\";edit_width=5;}}
: column {: text {label=\"Code\";} : edit_box {key=\"code\";edit_width=8;}}
: column {: text {label=\"Distance\";} : edit_box {key=\"distance\";edit_width=8;}}
: column {: text {label=\"Notes\";} : edit_box {key=\"note\";edit_width=20;}}
: column {spacer; : button {key=\"add\";label=\"Add\";edit_width=20;}}
}
: list_box {
key=\"data\";
label=\"Data\";
}
: row { 
: button {
	label=\"Distance\";
	fixed_width=true;	
	key=\"zoom\";
		}
	: button {
	label=\"Close without write\";
	fixed_width=true;
	is_cancel=true;
	key=\"cancel\";	
	alignment=right;
		}	
: button {
	label=\"Close and write\";
	fixed_width=true;		
	key=\"accept\";
	is_default=true;
	alignment=right;
		}
		}
}"
) f)
(close f)
fn
)
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
(defun add&view (key ss /)
 (start_list key)
 (foreach x ss (add_list x))
 (end_list)
)
;---------------------------------------------------------------------------
(defun savevars ( / vars)
(setq vars (strcat
(setq number (get_tile "number")) ",			"
(get_tile "code") ",			"
(rtos (distof (get_tile "distance")) 2 2) ",			"
(get_tile "note")))

(set_tile "code" "") 
(set_tile "distance" "")
(set_tile "note" "")
vars
)
;---------------------------------------------------------------------------
(defun c:input (/ fn f number sta id data dis)


(setq id (load_dialog (dclmaker)))

(setq sta 2)	
(while (> sta 1)	
(new_dialog "input" id)
	(if dis (set_tile "distance" (rtos dis 2 2)))
  (add&view "data" data)

(mode_tile "number" 2)
(action_tile "add" "(PROGN
			  (setq data (append data (list (savevars))))
			  (add&view \"data\" data)
			(set_tile \"number\" (itoa (1+ (atoi number))))
			(mode_tile \"code\" 2)
			  )")
(action_tile "zoom" "(done_dialog 2)")  
(setq sta (start_dialog))

	(cond
  ((= sta 2) (setq dis (getdist "\nNhap khoang cach:")))
  ((= sta 1) (progn			
		 (if (setq fn (getfiled "Select a File" "" "cvs" 1))
			 (progn
		 (setq f (open fn "w"))
		   (foreach x data (write-line x f))
			 (close f)
		 ))))
  )




 )
(done_dialog)
(unload_dialog id)

 )

Code của bác rất hay nhưng dữ liệu 4 cột chỉ vào trong 1 cel.Nếu tách dữ liệu sang mỗi 1 dữ liệu sang 1 cel thì quả là hay.

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
Code của bác rất hay nhưng dữ liệu 4 cột chỉ vào trong 1 cel.Nếu tách dữ liệu sang mỗi 1 dữ liệu sang 1 cel thì quả là hay.

 

Úi trời. bác sửa cái đuôi *.cvs thành *.csv dùm cá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

Chào cả nhà !

Thấy mấy bác cũng có hứng thú với đề tài này nên mình " chế " lại 1 chút cho vui. Chủ yếu là để tham khảo học hỏi lẫn nhau.

Code dưới đây thực hiện công việc ghi dwx liệu nhập ra file, nhưng trước khi ra file nó được ghi vào list_box để quan sát trước.

Ưu điểm:

- Số TT twj gia tăng

- nhập liệu bằng TAB-ENter, sau khi enter con trỏ quay về code, thuận tiện cho người nhập, đồng thời reset các ô nhập liệu (trừ stt)

- Nút getdistance (theo ý tưỏng của bác gì đó)

- Quan sát được toàn bộ du liêu trươc khi ghi

Tồn tại: (cần bổ sung)

- Kiểm tra tính hợp lệ dwx liệu, loại bỏ dữ liệu rỗng

- Nút thêm, xoá, swả dw liệu trên list_box

- Cần phải hỏi lại trước khi đóng mà không ghi

 

Mấy bác có hứng thú thì phát triển tiếp nhé . Để chơi thôi chứ không biết có cần để làm gì không nwã. Hehe

 

minh hoạ:

input.png

 

 

Các bác cho e hỏi dùng font gì để không bị lỗi vậy ạ. E làm thì nó bị lỗi font từ lúc add, xuất hiện toàn hình vuông đằng trước rùi mới đến những thông số mình nhập vào (hình), và khi em nhập thông số stt, code rùi bấm nút distance thì những thông số ở stt, code bị xóa mất nhờ các bác sửa giúp.

 

http://www.cadviet.com/upfiles/3/86711_ck.jpg

 

E xin phép đưa ra 1 số ý kiến thêm vào cho chương trình theo nhu cầu của e nhờ các bác júp đỡ ạ:

-Thêm vào 1 cột distance2

-Cạnh mỗi cột có 1 nút pick để chọn text có sẵn trong bản vẽ (giống nút distance)

Em xin cám ơn các bác v chúc các bác sức khỏe.

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


×