Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
TKTXVD

Nhờ viết lisp tra kinh tuyến các Tỉnh

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

Đợt này mình có dính đến tra kinh tuyến các tỉnh, mình có 1 file ảnh kinh tuyến ở đây, nhờ ae viết hộ lisp.

Nội dung lisp khi đánh kinhtuyen thì sẽ hiện tiếp ra câu hỏi: chọn tỉnh thành, sau khi chọn xong tỉnh thành sẽ hiện ra giá trị kinh tuyến của tỉnh đấy.

Vì các tỉnh nhiều, các bác chỉ cần viết mẫu vài tỉnh, rồi e làm nốt phần còn lại ah...thanks các bác nhiều

 

Kinh tuyen cac tinh.JPG

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ại sao bạn không lập 1 bảng Word hoặc Excel, khi đó chỉ cần find là ra đáp số, mà phải dùng Lisp?

Làm Lisp này thì quá dễ nhưng lý do là gì?

  • 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
45 phút trước, Doan Van Ha đã nói:

Tại sao bạn không lập 1 bảng Word hoặc Excel, khi đó chỉ cần find là ra đáp số, mà phải dùng Lisp?

Làm Lisp này thì quá dễ nhưng lý do là gì?

Bởi vì mình hay dùng CAD, lại đang trong môi trường CAD chỉ cần đánh lệnh cad là ra mình đỡ mất công mở file khác lên rồi tìm. Chắc tại lười mở file khác lên tì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

+ Nhập tên địa danh nhé, không dấu nhé :

 

(defun c:KT ()


  (setq danhsach (list
           '(0 "Ha Noi"     105.00)
           '(1 "Ho Chi Minh"     105.45)
           '(2 "Lai Chau"     103.30)
           '(3 "Dien Bien"     103.30)
           )
    i 0)
  (setq n (length danhsach))
  (setq name (getstring T "Nhap ten dia danh: "))
  
  (while (and (< i n) (/= (strcase name) (strcase (cadr (nth i danhsach)))))
           (setq i (+ i 1)))
    (if (< i n)
        (alert (strcat "Kinh tuyen: " (Rtos (caddr (nth i danhsach)) 2 2)))
    (alert "Co gi do sai roi! - Kiem tra lai di !"))
        (princ)
    )

  • 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

Bạn dùng cái này! Tra được KTT trên cả 2 hệ tọa độ VN2000 và HN72.

(defun c:KTT (/ TENTINH KTUYENTRUC_)
;;;KINH TUYEN TRUC
  (setvar "CMDECHO" 0)
  (initget "VN2000 HN72")
  (setq	KTUYENTRUC_
	 (strcase
	   (getkword
	     "\nB\U+1EA1n mu\U+1ED1n t\U+00ECm kinh tuy\U+1EBFn tr\U+1EE5c thu\U+1ED9c h\U+1EC7 t\U+1ECDa \U+0111\U+1ED9 n\U+00E0o? [VN2000 / HN72] :"
	   )
	 )
  )

  (setq	TENTINH
	 (strcase
	   (getstring
	     "\nNh\U+1EADp t\U+00EAn t\U+1EC9nh (g\U+1ED3m ch\U+1EEF c\U+00E1i \U+0111\U+1EA7u c\U+1EE7a t\U+00EAn th\U+1EE9 nh\U+1EA5t v\U+00E0 2 ch\U+1EEF c\U+00E1i \U+0111\U+1EA7u c\U+1EE7a t\U+00EAn th\U+1EE9 hai. VD: Hai Phong = HPH): "
	   )
	 )
  )
  (setq KINHTUYENTRUC (GetTINH TENTINH KTUYENTRUC_ ))
  (Alert KINHTUYENTRUC)
  (princ KINHTUYENTRUC)
  (princ)
)

(Defun GetTINH (NAMETINH HTD / Lt1)
  (setq Tinh nil)
  (setq
    Lt1	(list
	  (LIST "LCH" "Lai Chau = 103 00")
	  (LIST "DBI" "Dien Bien = 103 00")
	  (LIST "SLA" "Son La = 104 00")
	  (LIST "LCA" "Lao Cai = 104 45")
	  (LIST "YBA" "Yen Bai = 104 45")
	  (LIST "HGI" "Hau Giang = 105 00 ...... Ha Giang = 105 30")
	  (LIST "TQU" "Tuyen Quang = 106 00")
	  (LIST "PTH" "Phu Tho = 104 45")
	  (LIST "VPH" "Vinh Phuc = 105 00")
	  (LIST "CBA" "Cao Bang = 105 45")
	  (LIST "LSO" "Lang Son = 107 15")
	  (LIST "BCA" "Bac Can = 106 30")
	  (LIST "TNG" "Thai Nguyen = 106 30")
	  (LIST "BGI" "Bac Giang = 107 00")
	  (LIST "BNI" "Bac Ninh = 105 30")
	  (LIST "QNI" "Quang Ninh = 107 45")
	  (LIST "HPH" "Hai Phong = 105 45")
	  (LIST "HDU" "Hai Duong = 105 30")
	  (LIST "HYE" "Hung Yen = 105 30")
	  (LIST "HNO" "Ha Noi = 105 00")
	  (LIST "HBI" "Hoa Binh = 106 00")
	  (LIST "HNA" "Ha Nam = 105 00")
	  (LIST "NDI" "Nam Dinh = 105 30")
	  (LIST "TBI" "Thai Binh = 105 30")
	  (LIST "NBI" "Ninh Binh = 105 00")
	  (LIST "THO" "Thanh hoa = 105 00")
	  (LIST "NAN" "Nghe An = 104 45")
	  (LIST "HTI" "Ha Tinh = 105 30")
	  (LIST "QBI" "Quang Binh = 106 00")
	  (LIST "QTR" "Quang Tri = 106 15")
	  (LIST "TTH" "Thua Thien Hue = 107 00")
	  (LIST "DNA" "Da Nang = 107 45 ...... Dong Nai = 107 45")
	  (LIST "QNA" "Quang Nam = 107 45")
	  (LIST "QNG" "Quang Ngai = 108 00")
	  (LIST "BDI" "Binh Dinh = 108 15")
	  (LIST "KTU" "Kon Tum = 107 30")
	  (LIST "GLA" "Gia Lai = 108 30")
	  (LIST "DLA" "Dak Lak = 108 30")
	  (LIST "DNO" "Dak Nong = 108 30")
	  (LIST "PYE" "Phu Yen = 108 30")
	  (LIST "KHO" "Khanh Hoa = 108 15")
	  (LIST "NTH" "Ninh Thuan = 108 15")
	  (LIST "BTH" "Binh Thuan = 108 30")
	  (LIST "LDO" "Lam Dong = 107 45")
	  (LIST "BDU" "Binh Duong = 105 45")
	  (LIST "BPH" "Binh Phuoc = 106 15")
	  (LIST "DNA" "Dong Nai = 107 45")
	  (LIST "BRI" "Ba Ria Vung Tau = 107 45")
	  (LIST "VTA" "Ba Ria Vung Tau = 107 45")
	  (LIST "TNI" "Tay Ninh = 105 30")
	  (LIST "LAN" "Long An = 105 45")
	  (LIST "TGI" "Tien Giang = 105 45")
	  (LIST "BTR" "Ben Tre = 105 45")
	  (LIST "DTH" "Dong Thap = 105 00")
	  (LIST "VLO" "Vinh Long = 105 30")
	  (LIST "TVI" "Tra Vinh = 105 30")
	  (LIST "AGI" "An Giang = 104 45")
	  (LIST "KGI" "Kien Giang = 104 30")
	  (LIST "CTH" "Can Tho = 105 00")
	  (LIST "STR" "Soc Trang = 105 30")
	  (LIST "BLI" "Bac Lieu = 105 00")
	  (LIST "CMA" "Ca Mau = 104 30")
	  (LIST "HCM" "TP HCM = 105 45")
	)
  )
  (setq
    Lt2	(list
	  (LIST "LCH" "Lai Chau = 103 00")
	  (LIST "DBI" "Dien Bien = Khong co")
	  (LIST "SLA" "Son La = 104 00")
	  (LIST "LCA" "Lao Cai = 104 00")
	  (LIST "YBA" "Yen Bai = 104 30")
	  (LIST "HGI" "Ha Gian = 105 00")
	  (LIST "TQU" "Tuyen Quang = 105 00")
	  (LIST "PTH" "Phu Tho = 105 00")
	  (LIST "VPH" "Vinh Phuc = 105 00")
	  (LIST "CBA" "Cao Bang = 106 00")
	  (LIST "LSO" "Lang Son = 107 00")
	  (LIST "BCA" "Bac Can = 106 00")
	  (LIST "TNG" "Thai Nguyen = 106 00")
	  (LIST "BGI" "Bac Giang = 106 30")
	  (LIST "BNI" "Bac Ninh = 106 00")
	  (LIST "QNI" "Quang Ninh = 107 00")
	  (LIST "HPH" "Hai Phong = 107 00")
	  (LIST "HDU" "Hai Duong = 106 00")
	  (LIST "HYE" "Hung Yen = 106 00")
	  (LIST "HNO" "Ha Noi = 105 45")
	  (LIST "HBI" "Hoa Binh = 105 00")
	  (LIST "HNA" "Ha Nam = 106 00")
	  (LIST "NDI" "Nam Dinh = 106 00")
	  (LIST "TBI" "Thai Binh = 106 00")
	  (LIST "NBI" "Ninh Binh = 106 00")
	  (LIST "THO" "Thanh hoa = 105 00")
	  (LIST "NAN" "Nghe An = 105 00")
	  (LIST "HTI" "Ha Tinh = 106 00")
	  (LIST "QBI" "Quang Binh = 106 30")
	  (LIST "QTR" "Quang Tri = 107 00")
	  (LIST "TTH" "Thua Thien Hue = 107 30")
	  (LIST "TDA" "Da Nang = 108 00")
	  (LIST "QNA" "Quang Nam = 108 00")
	  (LIST "QNG" "Quang Ngai = 109 00")
	  (LIST "BDI" "Binh Dinh = 109 00")
	  (LIST "KTU" "Kon Tum = 108 00")
	  (LIST "GLA" "Gia Lai = 108 00")
	  (LIST "DLA" "Dak Lak = 108 00")
	  (LIST "DNO" "Dak Nong = Khong co")
	  (LIST "PYE" "Phu Yen = 109 00")
	  (LIST "KHO" "Khanh Hoa = 109 00")
	  (LIST "NTH" "Ninh Thuan = 109 00")
	  (LIST "BTH" "Binh Thuan = 108 00")
	  (LIST "LDO" "Lam Dong = 108 00")
	  (LIST "BDU" "Binh Duong = 107 00")
	  (LIST "BPH" "Binh Phuoc = 107 00")
	  (LIST "DNA" "Dong Nai = 107 00")
	  (LIST "BRI" "Ba Ria Vung Tau = 107 00")
	  (LIST "TNI" "Tay Ninh = 106 00")
	  (LIST "LAN" "Long An = 106 00")
	  (LIST "TGI" "Tien Giang = 106 00")
	  (LIST "BTR" "Ben Tre = 106 00")
	  (LIST "DTH" "Dong Thap = 106 00")
	  (LIST "VLO" "Vinh Long = 106 00")
	  (LIST "TVI" "Tra Vinh = 106 00")
	  (LIST "AGI" "An Giang = 105 00")
	  (LIST "KGI" "Kien Giang = 105 00")
	  (LIST "CTH" "Can Tho = 106 30")
	  (LIST "HGI" "Hau Giang = Khong co")
	  (LIST "STR" "Soc Trang = 106 00")
	  (LIST "BLI" "Bac Lieu = 106 00")
	  (LIST "CMA" "Ca Mau = 105 00")
	  (LIST "HCM" "TP HCM = 105 00")
	)
  )
  (Cond	((equal HTD "VN2000")
	 (setq
	   Tinh
	    (car (vl-remove nil
			    (mapcar '(lambda (x)
				       (if (= (car x) NAMETINH)
					 (cadr x)
					 nil
				       )
				     )
				    Lt1
			    )
		 )
	    )
	 )
	)
	((equal HTD "HN72")
	 (setq
	   Tinh
	    (car (vl-remove nil
			    (mapcar '(lambda (x)
				       (if (= (car x) NAMETINH)
					 (cadr x)
					 nil
				       )
				     )
				    Lt2
			    )
		 )
	    )
	 )
	)
  )
  Tinh
)

 

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

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

  • Like 3

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

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

Không biết nói thế này bác có đồng ý không?

Bác có thể cho em xin file nguồn để học cách tạo DCL. Mảng này em còn hơi yếu.

Nếu bác cho được thì cho em xin vào Email: Heaven2407@gmail.com

Em cảm ơn bác 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
12 giờ trước, thanhduan2407 đã nói:

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

Không biết nói thế này bác có đồng ý không?

Bác có thể cho em xin file nguồn để học cách tạo DCL. Mảng này em còn hơi yếu.

Nếu bác cho được thì cho em xin vào Email: Heaven2407@gmail.com

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

Bác tìm hiểu trong tập 2, Hướng dẫn lập trình AutoLisp và Visualisp của tác giả Nguyễn Hữu Lộc ý, trong sách có hướng dẫn tạo file DCL. :)))

Ngườita thường nói lập ra DLC thì dễ, nhưng viết ra lisp để điều khiển nó mới là vấ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
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

 

Vào lúc 17/4/2018 tại 07:08, Danh Cong đã nói:

Bác tìm hiểu trong tập 2, Hướng dẫn lập trình AutoLisp và Visualisp của tác giả Nguyễn Hữu Lộc ý, trong sách có hướng dẫn tạo file DCL. :)))

Ngườita thường nói lập ra DLC thì dễ, nhưng viết ra lisp để điều khiển nó mới là vấn đề @@.

Mình nghiên cứu rồi, chỉ là lười lập DCL thôi. :D. Tài liệu thì nhiều. Căn bản bệnh lười nó tái phá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
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.

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

@thanhduan2407 Tìm xem bài của bác thái sờ trét về vụ canh chữ trên dcl . Mình nhớ đại khái có 1 hàm GetDclWidth đo chiều dài chuỗi rồi tuỳ theo canh lề mà thên ký tự trống vào rồi ghép ghép cho ư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 giờ trước, thanhduan2407 đã nói:

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.

Mình đã gửi từ tháng 4/2018 rồi mà nhỉ! ???

KTT.png

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 giờ trước, thanhduan2407 đã nói:

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.

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

(setq str (strcat thanhpho "	" vn2000 "          " hn72 ))

 

  • Like 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
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 

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, thanhduan2407 đã nói:

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 

Cám ơn bác đã chia sẻ nhiều tool về trắc địa, tuy e không làm trong ngành nhưng tham gia nhóm của bác, thấy bác share nhiều điều thấy rất ngưỡng mộ

  • 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
16 giờ trước, quocmanh04tt đã nói:

Mình đã gửi từ tháng 4/2018 rồi mà nhỉ! ???

KTT.png

À, bác string to list nên em nhìn không hiểu. Em tự mò nên cũng viết được rồi. Thank bác 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
11 giờ trước, Doan Nguyen Van đã nói:

Cám ơn bác đã chia sẻ nhiều tool về trắc địa, tuy e không làm trong ngành nhưng tham gia nhóm của bác, thấy bác share nhiều điều thấy rất ngưỡng mộ

Anh em Trắc Địa còn yếu khoản lập trình trên Cad nên em chia sẻ để em anh đỡ vất vả. Cảm ơn bác đã để ý

  • Like 1
  • 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

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
Đăng nhập để thực hiện theo  

×