Đến nội dung


Hình ảnh
- - - - -

Nhờ các bác 1 lisp


  • Please log in to reply
17 replies to this topic

#1 dunghn

dunghn

    biết vẽ ellipse

  • Members
  • PipPip
  • 57 Bài viết
Điểm đánh giá: 11 (tàm tạm)

Đã gửi 14 September 2014 - 12:38 PM

Có một việc muốn nhờ các bác giúp hộ. Tôi muốn dùng một lisp xuất thông số chiều dài các đường line sang excel, các đường line chọn bằng phương pháp quét cửa sổ chứ không kích chọn từng line. Trên diễn đàn tôi thấy có lisp của bác PhamThanhBinh: 5194_ghisolieuchieudai.lsp nhưng không thể tải về được, có lisp BTK.lsp nhưng phải kich chọn từng line và có cả phần xuất ra bảng in trong CAD nên tôi không ưng ý lắm. Dùng lệnh Dataextraction thì lại lâu quá. Bác nào có lòng tốt cho tôi 1 lisp để xuất thẳng dữ liệu (Chỉ cần chiều dài) sang excel hoặc up lại cho tôi  lisp 5194_ghisolieuchieudai.lsp của bác PhamThanhBinh cũng quá được. Xin cảm ơn các bác nhiều   :)


  • -1

#2 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 14 September 2014 - 02:26 PM

Nói thật là mình đang luyện nên rất "ngứa ngáy" muốn viết lisp, nhưng với cái yêu cầu của bạn vậy thì chăng biết phải bắt đầu từ đâu ???

Quét chọn đối tượng, xong rồi xuất qua 1 cục vậy sao ?! Ko cần biết đầu lòng nào là của body nào sao ?! :D :D :D

 

p/s: cái này có vẻ dễ ăn, bạn nêu ró ràng tí mình phang cho :D :D :D


  • 1

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#3 dunghn

dunghn

    biết vẽ ellipse

  • Members
  • PipPip
  • 57 Bài viết
Điểm đánh giá: 11 (tàm tạm)

Đã gửi 14 September 2014 - 04:46 PM

Nói thật là mình đang luyện nên rất "ngứa ngáy" muốn viết lisp, nhưng với cái yêu cầu của bạn vậy thì chăng biết phải bắt đầu từ đâu ???

Quét chọn đối tượng, xong rồi xuất qua 1 cục vậy sao ?! Ko cần biết đầu lòng nào là của body nào sao ?! :D :D :D

 

p/s: cái này có vẻ dễ ăn, bạn nêu ró ràng tí mình phang cho :D :D :D

Tất nhiên là nếu phân rõ được chiều dài của từng đoạn theo từng layer thì tốt quá - Nhưng nhờ vậy có tham quá không :( ?

Việc mình làm là cắt nhôm, do vậy thường phải đo trong CAD rồi mới nhập vào excel để tính chiều dài cắt thực tế (Tùy loại thanh nhôm cắt mà có chiều dài cắt khác nhau), nếu dùng thủ công đọc số rồi nhập lại rất dễ mắt đọc 1 số tay gõ 1 số. Do trong bản vẽ mỗi loại nhôm đều đặt 1 layer riêng rồi nên không sợ nhầm cái này sang cái khác.

Như trên đã nói, tuy đã có lisp NTK.lsp trên trang này nhưng do chọn đối tượng bằng cách click nên rất dễ sót. Tôi dùng lệnh Data... thì không bị sót nhưng nhiều thao tác quá (Mất  9 lần click chuột mới ra dc cái bảng excel - Kiểu này chết tiền vì mua chuột mất :wacko:). Bạn thịt giúp mình ca này nếu bạn ở HN xin mời đi cafe luôn, còn nếu ở vùng khác thì hẹn bữa bia vậy - Vì ở xa thì khó gặp lắm  :P


  • 0

#4 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 14 September 2014 - 10:00 PM

Hồi chiều bận tí việc, giờ mới "trả bài" cho bạn đc đây

Mình ở xa, vui tay thì ấn like là đc rồi :D mà chưa thích thì hãy chỉ ném nhẹ thôi nhé ^^

Cũng là 1 cách để mình học bài mà :D :D :D

 

p/s: Bạn thích pick chọn hay quét chọn là tùy bạn

       Mình lấy sau phẩy 3 số thập phân

       Nếu là line 3d => thì chỉ nhận đc length 2d

 

;;;Lisp xuat chieu dai cac LINE
(defun c:LL(/ ss i ename info len lst fn pw)
;length line
(prompt "\nChon doi tuong *** chu y chi LINE duoc nhan ***")
(setq ss (ssget '((0 . "LINE")))
	  i -1)
(if ss
	(progn
		(repeat (sslength ss)
			(setq ename (ssname ss (setq i (1+ i)))
				  info (entget ename)
				  len (distance (2d_dxf info 10) (2d_dxf info 11))
				  lst (append lst (list (list (+ i 1) len)))
			) 
		) 	;repeat
		(setq fn (getfiled "Chon file de xuat ket qua" "" "csv" 1))
 		(setq pw (open fn "w"))
 		(write-line "TT,Length" pw)
 		(foreach elem lst
  			(write-line (strcat (itoa(car elem)) "," (rtos (cadr elem) 2 3)) pw))
 		(close pw)
 	(princ)
	) 	;progn
)
)	
;========================================================================
(defun 2d_dxf(info pt_code)
(list (cadr (assoc pt_code info)) (caddr (assoc pt_code info)) 0))

  • 2

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#5 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 14 September 2014 - 10:17 PM

Sao không test?

May mà lỗi break chứ không thì chạy tới... sáng!


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#6 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 14 September 2014 - 10:20 PM

Sao không test?

May mà lỗi break chứ không thì chạy tới... sáng!

Bác có thể nói rõ hơn ?!


  • 1

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#7 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 14 September 2014 - 10:27 PM

Bác có thể nói rõ hơn ?!

Hiepttr phải test đi chớ!


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#8 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 14 September 2014 - 10:30 PM

Em test nó chạy phè phè, chỉ có hiện ra dìng này trên cad mà mục đích là excel nên ko để ý

 

; error: bad argument type: streamp nil

 

Lỗi này là gì vậy bác nhỉ ^^


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#9 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 14 September 2014 - 10:47 PM

Hàm (while ss sẽ chạy miệt mài vì ss luôn khác nil. Đó là lý do sinh lỗi, khi (ssname ss i) không có. Tiếc là lisp bị lỗi mà bạn vẫn post, hoặc chưa test mà đã post.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#10 dunghn

dunghn

    biết vẽ ellipse

  • Members
  • PipPip
  • 57 Bài viết
Điểm đánh giá: 11 (tàm tạm)

Đã gửi 14 September 2014 - 11:07 PM

Rất cảm ơn bạn Hiepttr  :)  - Không biết nút like ở đâu cả đành phải viết vậy.

Còn đây là chút nhận xét hoặc gọi là ném đá cũng được - Chắc chắn là nhẹ rồi vì đá to cầm kg nổi  :(

+ Mình không thấy xuất hiện lỗi ; error: bad argument type: streamp nil nhưng chiều dài đường line quá dài là kết quả sai luôn. VD: line dài 37572 kết quả cho bằng không luôn.

+ Bạn để 2 cột TT và Length khi sang excel là nó dính luôn thành 1 cột - Vẫn lọc được nhưng nếu tách thành 2 cột riêng biệt thì hay hơn.

Riêng về chuyện line quá dài bạn Hiepttr nếu rảnh xem lại lỗi do đâu - Tuy thực tế thanh nhôm mình cắt chưa bao giờ dài đến 6000. 

Xin cảm ơn lần nữa nhé  :D

Hic, thêm 1 lỗi quái dị nữa. Khi đưa bài lên mới thấy bài của bác Doan Van Ha. Mình làm luôn mấy đoạn thẳng đặt theo phương X và phương Y, kết quả đau buồn là tất cả các thanh song song với trục Y đều cho kết quả bằng 0.000  :o


  • 0

#11 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 14 September 2014 - 11:43 PM

Cảm ơn bác Doanvanha đã nhắc nhở (đã like ^^), quả là thấy bở nên mình code xong, test 1 vài trường hợp, thấy xuất kết quả >>> tưởng là OK nên mới post :D :D :D 

 

@dunghn: bạn chỉnh excel lại sao cho dấu chấm (.) là dấu thập phân là OK mà, lỗi chỉ là ở chổ bác Ha đã chỉ ra >>> mình đã fix tại chổ cũ


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#12 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 14 September 2014 - 11:48 PM

^^ pit khi nào mới đc như bạn Hiep nhỉ :)


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#13 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 15 September 2014 - 12:04 AM

Chỉ toàn là hàng mót đc, học hiểu vài tí, lụm củ này ghép củ kia thôi Nhóc ^^ Quá khen rồi đó !


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#14 dunghn

dunghn

    biết vẽ ellipse

  • Members
  • PipPip
  • 57 Bài viết
Điểm đánh giá: 11 (tàm tạm)

Đã gửi 15 September 2014 - 10:07 AM

Cảm ơn bác Doanvanha đã nhắc nhở (đã like ^^), quả là thấy bở nên mình code xong, test 1 vài trường hợp, thấy xuất kết quả >>> tưởng là OK nên mới post :D :D :D

 

@dunghn: bạn chỉnh excel lại sao cho dấu chấm (.) là dấu thập phân là OK mà, lỗi chỉ là ở chổ bác Ha đã chỉ ra >>> mình đã fix tại chổ cũ

 Đổi lại dấu thì cột OK, nhưng những thanh song song với trục Y vẫn bị bằng không. Mình dùng Cad2013, dưới đây là file CAD và kết quả

http://www.cadviet.c..._new_folder.rar


  • 0

#15 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 15 September 2014 - 10:37 AM

Do line của bạn vẽ trong 3D mà lisp thì viết cho 2D. Bạn sửa dòng cuối cùng thành dòng này:

(list (cadr (assoc pt_code info)) (caddr (assoc pt_code info)) (cadddr (assoc pt_code info))))


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#16 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1431 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 15 September 2014 - 10:42 AM

@ Dunghn :  "Đổi lại dấu thì cột OK, nhưng những thanh song song với trục Y vẫn bị bằng không."

Đọc kỹ hướng dẫn sử dụng trước khi dùng.

......

 

p/s: Bạn thích pick chọn hay quét chọn là tùy bạn

       Mình lấy sau phẩy 3 số thập phân

       Nếu là line 3d => thì chỉ nhận đc length 2d

 

 

@ bác Hà : sửa như bác thì k/quả OK rồi, nhưng code hơi bị phức tạp ... và tên hàm (2D...) không phản ánh đúng nội dung.


  • 0

#17 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 15 September 2014 - 10:45 AM

@ Dunghn :  "Đổi lại dấu thì cột OK, nhưng những thanh song song với trục Y vẫn bị bằng không."

Đọc kỹ hướng dẫn sử dụng trước khi dùng.

 

@ bác Hà : sửa như bác thì k/quả OK rồi, nhưng code hơi bị phức tạp ...

Trồng rau trên đất người ta thì đành vậy. Chứ bình thường thì ai nỡ làm vậy. :lol:


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#18 dunghn

dunghn

    biết vẽ ellipse

  • Members
  • PipPip
  • 57 Bài viết
Điểm đánh giá: 11 (tàm tạm)

Đã gửi 15 September 2014 - 03:57 PM

Do line của bạn vẽ trong 3D mà lisp thì viết cho 2D. Bạn sửa dòng cuối cùng thành dòng này:

(list (cadr (assoc pt_code info)) (caddr (assoc pt_code info)) (cadddr (assoc pt_code info))))

Cám ơn bác, em làm OK rồi

 

@ Dunghn :  "Đổi lại dấu thì cột OK, nhưng những thanh song song với trục Y vẫn bị bằng không."

Đọc kỹ hướng dẫn sử dụng trước khi dùng.

E có nghiên cứu về lisp đâu, cứ nghĩ vẽ trong cùng 1 mặt phẳng thì không sao  :unsure: . Quả thật file mẫu của e luôn để mặt phẳng chuẩn ban đầu là Front vì cũng hay phải dựng 3d thật, đâu biết phải vẽ trong mặt Top mới được coi là 2D.

Lần nữa xin cảm ơn tất cả các bác - Gặp mấy thằng trình còi hơn là là e lại tha hồ thể hiện :D (Nhờ học lỏm từ các bác đấy  :lol:


  • 0