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

Nhờ viết gium lisp autocad

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

EM CÓ FILE CAD LÀ 1 PLINE NHƯ BÊN DƯỚI, MỌI NGƯỜI CÓ THỂ GIÚP EM VIẾT CÁI LISP XUẤT KHOẢNG CÁCH, GÓC LÁI, TỌA ĐỘ VN-200 RA EXCEL VỚI, VỚI GÓC LÁI ( TRÁI HOẶC PHẢI VÀ =0 NẾU THẲNG)VỚI THỨ TỰ TÙ ĐIỂM ĐẦU ĐẾN ĐIỂM CUỐI; MỖI DỮ LIỆU TRÊN 1 CỘT CỦA EXCEL; MONG MỌI NGƯỜI GIÚP VỚI

MONG MOI NGƯỜI GIUP.dwg

  • Vote giảm 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

Không muốn xóa bài của bạn này lần 2: Nói thẳng là không thích viết hoa + không dấu.

Trích #Tue_NV : "Đừng DÙNG TOÀN CHỮ IN HOA, cái này được đọc như một lời la hét và bị đánh giá là thiếu lịch sự. Viết toàn chữ nhỏ mà không viết hoa đúng chỗ cũng chỉ bớt khó chịu hơn một chút vì nó cũng rất khó đọc." + https://www.cadviet.com/forum/topic/5888-viết-yêu-cầu-request-và-trả-lời-response-như-thế-nào/

 

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 nhớ không nhầm đã có lisp này trên diễn đàn rồi. Bạn search các bài viết xuất tọa độ Pline, trong đó đã có 1 vài bài chỉnh sửa để cho thêm gó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

Lại nghịch ^^

Và lý do là tại bạn đăng bài theo cách của bạn nên mình code lisp theo cách của mình, cụ thể:

File xuất ra có các cột: STT, k/c, góc rẽ & 02 cột tọa độ.

Với cột góc, số liệu xuất ra có đơn vị là độ (phần nghuyên & phần thập phân),

khi góc:

<180 ==> rẽ trái,

=180 ==> thẳng,

>180 ==> rẽ phải (khi đó, giá trị trong dim của bạn bằng 360 trừ giá trị trong cột).

Good luck!

 

p/s:

Bạn không nên lưu file CAD tên tiếng Việt, lisp ko thịt đc ^^

 

;; https://www.cadviet.com/forum/topic/171694-nh%E1%BB%9D-vi%E1%BA%BFt-gium-lisp-autocad/
(defun c:EDAC( / ANG DIST ENT FN I LST_DATA LST_PT OLD PT PT_S PT_TR PW START VAR)
;;;export Distance, Angle, Coordinate
(vl-load-com)
(setq var '("osmode" "cmdecho"))
(setq old (mapcar 'getvar var))
(mapcar 'setvar var '(0 0))
(setq ent (car (entsel "\nChon PL: ")))
(setvar "osmode" 1)
(setq start (getpoint "\nPick chon diem dau: "))

(cond 
	((and ent start)
		(setq lst_pt (acet-geom-vertex-list ent))
		(if (not(equal (distance start (car lst_pt)) 0 0.001)) (setq lst_pt (reverse lst_pt)))
		(setq i 0 
			  lst_data (list (list 1 0 0 (car lst_pt)))
			  )
		(repeat (- (length lst_pt) 2)
			(setq i (1+ i)
				  pt_tr (nth (1- i) lst_pt)
				  pt (nth i lst_pt)
				  pt_s (nth (1+ i) lst_pt)
				  dist (distance pt pt_tr)
				  ang (deviant (angle pt pt_s) (angle pt_tr pt))
				  lst_data (append lst_data (list (list (1+ i) dist ang pt)))
				  )
		)
		(setq lst_data (append lst_data (list (list (+ 2 i) (distance pt_s pt) 0 pt_s))))
	;;;-----------------
		(setq fn (getfiled "Chon file de xuat ket qua" "" "csv" 1))
 		(setq pw (open fn "w"))
		(write-line "DIST,ANG,COORD" pw)
		(foreach elem lst_data
 			(write-line (strcat (rtos (cadr elem) 2 0) "," (rtos (caddr elem) 2 3) "," (rtos (cadr (last elem)) 2 3) "," (rtos (car (last elem)) 2 3)) pw)
		)
		(close pw)
	)
	(t (alert "*** Bam lung tung, moi bam lai ! ***"))
)
(mapcar 'setvar var old)
(princ)
)
;;;====================
(defun deviant (ang2 ang1 / deviant_rad deviant_deg)
(setq deviant_rad (if (> ang2 ang1) (- ang2 ang1) (- (+ (* 2 pi) ang2) ang1))
	  deviant_deg (/ (* deviant_rad 180) pi))
)

 

Chỉnh sửa theo hiepttr
Theo y/c của @BEENROLEX
  • 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
15 giờ trước, BEENROLEX đã nói:

bạn sửa giúp mình là làm tròn số phần khoảng cách (DIST) và bỏ phần số thứ tự (ORDER) cái được không, 

Đã fix ở vị 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

×