Đến nội dung


Hình ảnh
- - - - -

[Hỏi] Lisp thao tác trong 3D


  • Please log in to reply
115 replies to this topic

#61 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 19 September 2014 - 09:47 PM

Da ! Lam dc, nhung chi khi tren computer, con bay gio dang online bang phone thi chiu roi bac Ha ah.
Mot ly do nua la de nguoi thiet ke con co chut tu duy, neu ko tinh toan (tra bang) gi ca ma ve bay cung dc thi qua la lisp da "noi giao cho giac" roi bac ah ! :D :D :D
  • 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


#62 Hoan1111

Hoan1111

    biết lệnh adcenter

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

Đã gửi 19 September 2014 - 09:53 PM

Nhoc nhap duong kinh la nhung dk da dc liet ke trong list lst_TC_DUC thi lisp moi chay dung, nhap dk tuy y thi se ko chay dc

 

Em copy thông số trong "list lst_TC_DUC" rồi paste vào dòng lệnh, kết quả dư ...lày:

114276_cccca.png

Không hiểu vì sao, không biết vì sao???


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#63 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 19 September 2014 - 10:09 PM

@Hoằn:
Việc giˋ phải copy, la dan trong nganh, sanh dieu như Hoan thi chi viec nhap dung kich thuoc dk, vd: 12 hoac 18 ...
Chu´ y´ laˋ mỗi đoạn của 3dpolyline cũng phải đủ dài (như thực tê´) thiˋ mới cho ra kquả đúng nữa đo´. Viˋ mình nghi lisp chỉ laˋ công cụ để thể hiện y´ tưởng nên ko ràng buộc những yếu tô´ trênu
  • 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


#64 Hoan1111

Hoan1111

    biết lệnh adcenter

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

Đã gửi 19 September 2014 - 10:26 PM

@Hoằn: Để mà giống cad2012 thì khó quá, thôi thì block lại nhé !

 

Nếu làm được như array trong CAD2012 thì có cái hay là bấm chuột  vào, nó sẽ hiện ra bảng kê tổng số lượng cút... .Anh tạm block cũng được

(Em sẽ thử lại lisp)


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#65 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 20 September 2014 - 08:20 AM

Nếu muốn có bảng thống kê thì có thể Group, chỉ có điều hạn chế là khi copy/ paste sang file khác thì nó lại vỡ ra chứ ko nằm nguyên 1 cục như block


  • 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


#66 Hoan1111

Hoan1111

    biết lệnh adcenter

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

Đã gửi 20 September 2014 - 10:08 AM

Bảng thống kê số lượng chi tiết thì bản vẽ đã có rồi. Ý em muốn nói nó hiện ra bảng cho người vẽ tổng số lượng cút như Array trong CAD2012. Người vẽ chỉ cần biết số lượng rồi tự ghi vào bảng thống kê chi tiết kẹp díp với khung tên.

aa1_zps3cf674f4.gif

Em thử lại vẫn bị lỗi trên???


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#67 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 20 September 2014 - 10:28 AM

Ném file đó lên đây đi Hoằ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


#68 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 20 September 2014 - 10:44 AM

@ Hoằn:

Có thể là do lỗi xảy ra trên hộp code CV chăng ?!

Down lại lisp theo link này và thử xem:

 

http://www.cadviet.c...0156_ve_ong.lsp

 

 

p/s: Mình test trên cad2009 được cả con giun dài giằng giặc mà :D :D :D

Có update tính năng group thành 2 nhóm ống và cút

 

 

80156_giun.jpg


  • 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


#69 Hoan1111

Hoan1111

    biết lệnh adcenter

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

Đã gửi 20 September 2014 - 11:19 AM

Ném file đó lên đây đi Hoằn

Không lưu được, AutoCAD biến mất còn trơ lại màn hình thông báo sau:

114276_7845gdhg.png

 

(Em không dám thử lisp trên AutoCAD2013 vì sợ lisp và CAD xung khắc phải cài lại mất thời gian lắm)

Có thể do lỗi mang, hiện giờ em không loát về được.


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#70 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 20 September 2014 - 02:40 PM

Lỗi do lệnh 3DAlign

Trước đây, bạn PhamNgocTu có bị TH này 1 lần với lệnh Align rồi

Link (bài viết số #525):

 http://www.cadviet.c...-coding/page-27

Trong đó có quote bài viết của bác Duy về phương thức viết thay thế lệnh Align. Bạn có thể tham khảo


  • 1

#71 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2875 Bài viết
Điểm đánh giá: 1554 (rất tốt)

Đã gửi 20 September 2014 - 07:54 PM

Em tò mò muốn hỏi anh Tuệ , sao anh Hiệp chạy trên CAD2009 được, còn cái Hoằn lại không??? Hay là lisp nó chỉ khắc tinh với AutoCAD2007???

(Em download lisp của anh Hiệp về để thử nhưng không được, up ảnh lên diễn đàn được vẫn được bình thường)


  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#72 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 20 September 2014 - 08:41 PM

Em tò mò muốn hỏi anh Tuệ , sao anh Hiệp chạy trên CAD2009 được, còn cái Hoằn lại không??? Hay là lisp nó chỉ khắc tinh với AutoCAD2007???

(Em download lisp của anh Hiệp về để thử nhưng không được, up ảnh lên diễn đàn được vẫn được bình thường)

 

Tại vì Lisp để thực hiện lệnh 3DAlign là lệnh của CAD, chạy lúc được, lúc không được (lỗi phát sinh như Hoằn đã gặp) không rõ nguyên nhân, cũng không biết cơ chế hoạt động lệnh đó trong CAD như thế nào nên chỉ biết cách khắc phục là thay mã code (command "3dAlign"....) bằng mã code khác thì mới hết lỗi mà Hoằn đã gặp


  • 2

#73 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 22 September 2014 - 11:56 AM

@ Tue_NV:

Nghe lời "xúi dại" của bác, em làm công cụ thay cho 3dalign ^^

Quả thật 2d thì còn dễ ngốn chứ quả 3d này đã làm em mất ngày chủ nhật đó :D :D :D

 

Tạm xong, em đưa lên đây xin đá ^^ :D :D :D

Đến khi ổn thì em cho vào code !

 

p/s:

1) Hạn chế của nó là "em đã phát hiện có sai số trong các phép toán của lisp" 

Tuy ko lớn >>> nhưng chỉ sợ nếu ứng dụng vào bài toán của haanh thì ko sao mà dùng trong các trường hợp khác để xđịnh giao cắt ... thì có thể "dính đòn"

 

Mong đc chỉ giáo thêm !

 

2) Đang để dạng thủ tục để các bác dễ đường test !

 

3) Chưa xét đến tỉ lệ scale

 

;lisp thay the lenh 3dalign tuy chon "Copy"
;pt_a, pt_b, pt_c la 3 diem chuan
;pt_1, pt_2, pt_3 la 3 diem dich
; ss co the la 1 ename hoac mot tap chon ss
;ti le (length pt_1 pt_2) / (length pt_a pt_b) la ti le scale
(defun c:3DDD(/ )
;ss pt_a pt_b pt_c pt_1 pt_2 pt_3 
;lst_var old lst_point_w moc new pre pt_phu pt_phu_w base ang anh pt_phu_2d pt_phu_3d pt_phu_w_3d
(setq pt_a (getpoint "\nchon a:") 
	  pt_b (getpoint "\nchon b:")
	  pt_c (getpoint "\nchon c:")
	  pt_1 (getpoint "\nchon d:")
	  pt_2 (getpoint "\nchon e:")
	  pt_3 (getpoint "\nchon f:")
	  ss (car(entsel "\nChon vat: ")))
(setq lst_va '("osmode" "cmdecho" "AUNITS" "ANGDIR"))
(setq old (mapcar 'getvar lst_va))
(mapcar 'setvar lst_va '(0 0 3 0))
(setq lst_point_w (mapcar '(lambda (x) (trans x 1 0)) (list pt_a pt_b pt_c pt_1 pt_2 pt_3)))
(command "ucs" "na" "s" "save_ucs")
(command "-view" "s" "save_v")
(setq moc (entlast) 
	  new (ssadd))
(command "_.copy" ss "" pt_a pt_1)
(while (setq pre (entnext moc))
	(setq new (ssadd pre new)
		  moc pre)
)	;while
(setq pt_phu (mapcar '+ pt_1 (mapcar '- pt_b pt_a))
	  pt_phu_w (trans pt_phu 1 0))
(command "ucs" "3p" pt_1 pt_2 pt_phu)
(command "plan" "c")
(command "rotate" new "" 
	(setq base (trans (nth 3 lst_point_w) 0 1)) 
	(setq ang (* -1 (angle base (trans pt_phu_w 0 1))))
	)
(setq pt_phu_2d 
				(polar 
					base 
					(+ ang (angle base (setq anh (mapcar '+ base (mapcar '- (trans (nth 2  lst_point_w) 0 1) (trans (nth 0  lst_point_w) 0 1)))))) 
					(distance (list (car base) (cadr base)) (list (car anh) (cadr anh))))
	  pt_phu_3d (list (car pt_phu_2d) (cadr pt_phu_2d) (last anh))
	  pt_phu_w_3d (trans pt_phu_3d 1 0))
(command "ucs" "3p" base (trans (nth 5 lst_point_w) 0 1) pt_phu_3d)
(command "plan" "c")
(command "rotate" new "" 
	(setq base (trans (nth 3 lst_point_w) 0 1)) 
	(* -1 (angle base (trans pt_phu_w_3d 0 1)))
	)
(command "ucs" "na" "r" "save_ucs")
(command "ucs" "na" "d" "save_ucs")
(command "-view" "r" "save_v")
(command "-view" "d" "save_v")
(mapcar 'setvar lst_va old)
)

  • 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


#74 Hoan1111

Hoan1111

    biết lệnh adcenter

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

Đã gửi 22 September 2014 - 12:45 PM

Cảm ơn anh Hiệp nhiều, số lượng đường ống tương đối lớn, tính bằng đơn vị container, bởi vậy nếu sai số tính bằng đơn vị xe cải tiến (tổng V/ diện tích ống s = chiều dài ống) là chị Hà em bắt anh phải bù... lỗ đó! :) :) :)

Bữa nào chị Hà em thử lisp, em sẽ mời anh đến thưởng thức món gà - đang đẻ trứng con so của nhà chị Hà em trồng được - luộc trong nồi  hấp cách thủy do chính tay em vặt lông nhé!


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#75 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 22 September 2014 - 05:46 PM

#73 Đợị hoài ko thấy đá, mình tự lụm đc 1 cục đây:

........

Chưa kiểm tra trường hợp nếu sau khi copy xong, các cạnh (tạm gọi là vậy)

hoặc cả 2 đều vào đúng chỗ

hoặc 1 trong 2 cạnh đã vào đúng chỗ  cái này gây ra lỗi 3 điểm chọn trong lênh command UCS thẳng hàng cho lisp trên

 

===> Định đưa phương án xữ lý là so sánh tỉ lệ hiệu từng cặp tọa độ >>>> phát sinh trường hợp mẫu số âm >>> lỗi :(

===> Định đưa giải pháp 2:

3 lần ucs >>> kiểm tra ANGLE

>>> Cái này có vẻ ổn nhưng cũng hơi dài & lắt nhắt

 

Không biết có "con đường" nào gọn hơn ko ?!

 

Mong đc chỉ giáo !!!


  • 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


#76 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 22 September 2014 - 06:02 PM

Cảm ơn anh Hiệp nhiều, số lượng đường ống tương đối lớn, tính bằng đơn vị container, bởi vậy nếu sai số tính bằng đơn vị xe cải tiến (tổng V/ diện tích ống s = chiều dài ống) là chị Hà em bắt anh phải bù... lỗ đó! :) :) :)

Bữa nào chị Hà em thử lisp, em sẽ mời anh đến thưởng thức món gà - đang đẻ trứng con so của nhà chị Hà em trồng được - luộc trong nồi  hấp cách thủy do chính tay em vặt lông nhé!

 

@ Hoằn:

Cái này chỉ tạo ra sai số về độ lệch tâm của cút so với tim chuẩn (đường 3dpolyline)

 

>>> sẽ ko có lỗ ... hoặc "lỗ nhỏ" mình bù đc mà :D :D :D


  • 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


#77 nhoclangbat

nhoclangbat

    Edu level: li10

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

Đã gửi 22 September 2014 - 06:59 PM

- tới giờ chưa pit bạn Hiep làm ngành gì mà pit nhiều môn vậy ^^


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

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








#78 Hoan1111

Hoan1111

    biết lệnh adcenter

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

Đã gửi 22 September 2014 - 09:00 PM

- tới giờ chưa pit bạn Hiep làm ngành gì mà pit nhiều môn vậy ^^

 

nhoclangbat hỏi:- tới giờ chưa pit bạn Hiep làm ngành gì mà pit nhiều môn vậy ^^

Hoằn giả nhời: anh Nhóc à, anh Hiệp em chỉ thích ăn món tràng và trứng non  của gà mái đang đẻ trứng con so thôi anh à! Anh Hiệp em chúa ghét cái món nhất thủ nhì vĩ, anh ạ! :) :) :)

Anh muốn biết nghề nghiệp của anh Hiệp hãy xem chỗ này sẽ rõ:

1- Xem bài viết số # 34 : http://www.cadviet.c...i-do-vui/page-2

2- Xem chủ đề này: http://www.cadviet.c...tiet-gi-co-khi/

 

@anh Hiệp: Anh có thể cho em biết độ lệch độ lệch tâm của cút so với tim chuẩn được không??? Với bản vẽ lắp tổng thể em thường in nét đậm có chiều dầy 0,25  => nếu lệch tâm chuẩn đến 0,5 thì không đáng ngại lắm!


  • 1

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#79 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2875 Bài viết
Điểm đánh giá: 1554 (rất tốt)

Đã gửi 26 September 2014 - 09:39 AM

@ Hoằn:

Cái này chỉ tạo ra sai số về độ lệch tâm của cút so với tim chuẩn (đường 3dpolyline)

 

>>> sẽ ko có lỗ ... hoặc "lỗ nhỏ" mình bù đc mà :D :D :D

:) :) :)

Em vừa thử lisp của anh Hiệp:

Command: 3ddd
chon a:'_+dsettings >>Tab Index <0>:2
chon a:
chon b:
chon c:
chon d:
chon e:
chon f:
Chon vat: 52
Yes or No, please.
; error: Function cancelled
UCS "save_ucs" already exists.  Replace it? <N>

Em chọn điểm a, b ...trên đương 3dpoly ...>>> Khi lisp hỏi chọn vat ??? Em hoảng quá tưởng anh truy thu thuế giá trị gia tăng...

Phải mất 3 giây sau em mới tĩnh tâm được rồi gõ đại đường kính ống 52 . Kết quả không vẽ được ống và chế độ bắt điểm bị tắt ngóm! Chưa rõ nguyên nhân???

Sao không chọn 3dpoly mà phải chọn loằng ngoằng nhiều điểm thế hả anh???


  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#80 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 26 September 2014 - 09:58 AM

Chắc là haanh đã thử lisp trong bài này:

 

 


@ Tue_NV:

Nghe lời "xúi dại" của bác, em làm công cụ thay cho 3dalign ^^

Quả thật 2d thì còn dễ ngốn chứ quả 3d này đã làm em mất ngày chủ nhật đó :D :D :D

 

Tạm xong, em đưa lên đây xin đá ^^ :D :D :D

Đến khi ổn thì em cho vào code !

.............................

Lỗi tại ko đọc kĩ hdsd trước khi dùng ^^

 

Giờ thì có cái để thử rồi đây !

Hơi dài, do chưa tìm đc cách rút ngắn code

 

Mèo đen, mèo trắng miễn là bắt đc chuột :D :D :D

 

p/s: Lệnh là VE nghe haanh ^^

 

 

;lisp ve duong ong 3d
(defun c:VE(/ lst_va old D ss lst_TC_DUC cao_tam_cut R path cut base_w lst_ver lst_w obj i ss_ong ss_cut n len dau cuoi)
(setq lst_va '("osmode" "cmdecho"))
(setq old (mapcar 'getvar lst_va))
(mapcar 'setvar lst_va '(0 0))
;=================
(setq D (getdist "\nNhap duong kinh ong: ")
	  lst_TC_DUC '((12 . 26.0) (13 . 26.0) (18 . 35.0) (19 . 35.0) (22 . 40.0) (23 . 40.0) (28 . 
50.0) (29 . 50.0) (35 . 55.0) (34 . 55.0) (40 . 60.0) (52 . 70.0) (53 . 70.0) 
(70 . 80.0) (69 . 80.0) (85 . 90.0) (84 . 90.0) (104 . 100.0) (129 . 187.5) 
(154 . 225.0) (204 . 300.0) (254 . 375.0))
	  cao_tam_cut (cdr (assoc D lst_TC_DUC))
	  )	;setq
;=================
(prompt "\nChon 3DPOLY: ")
(setq ss (ssget "+.:E:S" '((0 . "POLYLINE"))))
(if (and
		D
		(member D (mapcar 'car lst_TC_DUC))
		ss)
	(progn
		(or #lan_ve (setq #lan_ve 0))
		(setq #lan_ve (1+ #lan_ve))
		;ve cut mau:
		(command "arc" "c" '(0 0 0) (list cao_tam_cut 0 0) (list 0 cao_tam_cut 0))
		(setq path (entlast))
		(command "circle" '(0 0 0) (setq R (/ D 2.0)))
		(command "sweep" (entlast) "" path)
		(setq cut (entlast))
		(setq base_w (mapcar '(lambda (x) (trans x 1 0)) (list (list cao_tam_cut 0 0) (list cao_tam_cut cao_tam_cut 0) (list 0 cao_tam_cut 0))))
		;== xong cut mau ==
		;Luu UCS:
		(command "ucs" "na" "s" "save1_ucs")
		;(command "-view" "s" "save_v")
		;*******************************
		(setq lst_ver (acet-geom-vertex-list (setq ename (ssname ss 0)))
			  lst_w (mapcar '(lambda (x) (trans x 1 0)) lst_ver)
			  obj (vlax-ename->vla-object ename))
		(setq i 0
			  ss_ong (ssadd)
			  ss_cut (ssadd)
			  )
		(repeat (setq n (1- (length lst_w)))
			(setq len (distance (setq dau (nth i lst_w)) (setq cuoi (nth (1+ i) lst_w))))
			(command "UCS" "za" (trans dau 0 1) (trans cuoi 0 1))
			(cond
				((= i 0) (command "CYLINDER" (trans dau 0 1) R (- len cao_tam_cut))	;ve ong
					(setq ss_ong (ssadd (entlast) ss_ong))
					(3DDD cut  
						(trans (car base_w) 0 1) 
						(trans (cadr base_w) 0 1) 
						(trans (last base_w) 0 1) 
						(trans (vlax-curve-getPointAtDist obj (- (vlax-curve-getDistAtParam obj 1) cao_tam_cut)) 0 1) 
						(trans (vlax-curve-getPointAtParam obj 1) 0 1) 
						(trans (vlax-curve-getPointAtDist obj (+ (vlax-curve-getDistAtParam obj 1) cao_tam_cut)) 0 1))	;align_copy cut
					(setq ss_cut (ssadd (entlast) ss_cut))
				)
				((= i (1- n)) (command "CYLINDER" (mapcar '+ (list 0 0 cao_tam_cut) (trans dau 0 1)) R (- len cao_tam_cut))	;ve ong
					(setq ss_ong (ssadd (entlast) ss_ong))
				)	
				(t (command "CYLINDER" (mapcar '+ (list 0 0 cao_tam_cut) (trans dau 0 1)) R (- len (* 2 cao_tam_cut)))	;ve ong
					(setq ss_ong (ssadd (entlast) ss_ong))
					(3DDD cut 
						(trans (car base_w) 0 1) 
						(trans (cadr base_w) 0 1) 
						(trans (last base_w) 0 1) 
						(trans (vlax-curve-getPointAtDist obj (- (vlax-curve-getDistAtParam obj (1+ i)) cao_tam_cut)) 0 1) 
						(trans (vlax-curve-getPointAtParam obj (1+ i)) 0 1) 
						(trans (vlax-curve-getPointAtDist obj (+ (vlax-curve-getDistAtParam obj (1+ i)) cao_tam_cut)) 0 1))		;align_copy cut
					(setq ss_cut (ssadd (entlast) ss_cut))
				)
			)
			(setq i (1+ i))
		)	;repeat
		;(command "-block" (strcat "Ong_" (rtos (getvar 'cdate) 2 4)) (trans (nth 0 lst_w) 0 1) ss_ong "")
		;(command "-block" (strcat "Cut_" (rtos (getvar 'cdate) 2 4)) (trans (nth 0 lst_w) 0 1) ss_cut "")
		(command "group" "c" (strcat "Ong_" (rtos (getvar 'cdate) 2 0) (itoa #lan_ve)) "Group_ong" ss_ong "")
		(command "group" "c" (strcat "Cut_" (rtos (getvar 'cdate) 2 0) (itoa #lan_ve)) "Group_cut" ss_cut "")
		;(mapcar 'entdel (list cut path))       ;Cai nay chay tren cad2014 thay co loi ko xoa path nen thay bang command
		(command ".ERASE" cut "")
		(command ".ERASE" path "")
		(command "ucs" "na" "r" "save1_ucs")
		(command "ucs" "na" "d" "save1_ucs")
		;(command "-view" "r" "save_v")
		;(command "-view" "d" "save_v")
	)
	(alert "***** Nhap du lieu chua dung ! *****")
)
(mapcar 'setvar lst_va old)
(princ)
)
(vl-load-com)
;*****************************************************************************************************************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=============================================================================================================================
(defun 3DDD(ss pt_a pt_b pt_c pt_1 pt_2 pt_3 / lst_va old lst_point_w moc new pre
huong_12_xoy huong_13_xoy huong_ab_xoy huong_ac_xoy 
huong_12_yoz huong_13_yoz huong_ab_yoz huong_ac_yoz 
huong_12_xoz huong_13_xoz huong_ab_xoz huong_ac_xoz 
pt_phu pt_phu_w pt_phu2 pt_phu2_w base truc truc_w ang anh anh_c anh_w pt_phu2_2d pt_phu2_w_3d pt_phu_2d pt_phu_3d pt_phu_w_3d)
;Ham 3dalign khong scale Voi 3 diem chon phai "bang nhau" ve kich thuoc hinh dang
(setq lst_va '("osmode" "cmdecho" "AUNITS" "ANGDIR"))
(setq old (mapcar 'getvar lst_va))
(mapcar 'setvar lst_va '(0 0 3 0))
(setq lst_point_w (mapcar '(lambda (x) (trans x 1 0)) (list pt_a pt_b pt_c pt_1 pt_2 pt_3)))
(command "ucs" "na" "s" "save_ucs")
;(command "-view" "s" "save_v")
(setq moc (entlast) 
	  new (ssadd))
(command "_.copy" ss "" pt_a pt_1)
(while (setq pre (entnext moc))
	(setq new (ssadd pre new)
		  moc pre)
)	;while
;======================================================================
;Kiem tra trung phuong, chieu
(command "ucs" "za" '(0 0 0) '(2.357 1.312 4.235))
(setq huong_12_xoy (angle (nth 3 lst_point_w) (nth 4 lst_point_w))
	  huong_13_xoy (angle (nth 3 lst_point_w) (nth 5 lst_point_w))
	  huong_ab_xoy (angle (nth 0 lst_point_w) (nth 1 lst_point_w))
	  huong_ac_xoy (angle (nth 0 lst_point_w) (nth 2 lst_point_w))
	  )
(command "ucs" "za" '(0 0 0) '(1 0 0))
(setq huong_12_yoz (angle (trans (nth 3 lst_point_w) 0 1) (trans (nth 4 lst_point_w) 0 1))
	  huong_13_yoz (angle (trans (nth 3 lst_point_w) 0 1) (trans (nth 5 lst_point_w) 0 1))
	  huong_ab_yoz (angle (trans (nth 0 lst_point_w) 0 1) (trans (nth 1 lst_point_w) 0 1))
	  huong_ac_yoz (angle (trans (nth 0 lst_point_w) 0 1) (trans (nth 2 lst_point_w) 0 1))
	  )
(command "ucs" "za" '(0 0 0) '(1 0 0))
(setq huong_12_xoz (angle (trans (nth 3 lst_point_w) 0 1) (trans (nth 4 lst_point_w) 0 1))
	  huong_13_xoz (angle (trans (nth 3 lst_point_w) 0 1) (trans (nth 5 lst_point_w) 0 1))
	  huong_ab_xoz (angle (trans (nth 0 lst_point_w) 0 1) (trans (nth 1 lst_point_w) 0 1))
	  huong_ac_xoz (angle (trans (nth 0 lst_point_w) 0 1) (trans (nth 2 lst_point_w) 0 1))
	  )
(command "ucs" "na" "r" "save_ucs")
;=====================================================================
(cond
	((and 
		(equal huong_12_xoy huong_ab_xoy 1e-5) 
		(equal huong_12_yoz huong_ab_yoz 1e-5)
		(equal huong_12_xoz huong_ab_xoz 1e-5)
		)
		(cond
			((and 
				(equal huong_13_xoy huong_ac_xoy 1e-5) 
				(equal huong_13_yoz huong_ac_yoz 1e-5)
				(equal huong_13_xoz huong_ac_xoz 1e-5)
				)
				(princ "\nAlign = Copy ! ")
				(princ)
			)
			(t 
				(setq pt_phu (mapcar '+ pt_1 (mapcar '- pt_c pt_a))
					  pt_phu_w (trans pt_phu 1 0))
				(command "ucs" "za" pt_1 pt_2)
				(command "rotate" new "" 
					(setq base (trans (nth 3 lst_point_w) 0 1))
					(- (angle base (trans (nth 5 lst_point_w) 0 1)) (angle base (trans pt_phu_w 0 1)))
					)
			)
		)
	)
	;========================================================
	((and 
		(or (equal (+ huong_12_xoy pi) huong_ab_xoy 1e-5) (equal (- huong_12_xoy pi) huong_ab_xoy 1e-5))
		(or (equal (+ huong_12_yoz pi) huong_ab_yoz 1e-5) (equal (- huong_12_yoz pi) huong_ab_yoz 1e-5))
		(or (equal (+ huong_12_xoz pi) huong_ab_xoz 1e-5) (equal (- huong_12_xoz pi) huong_ab_xoz 1e-5))
		)
			(setq truc (mapcar '+ pt_1 (mapcar '- pt_c pt_a))
				  truc_w (trans truc 1 0))
			(setq anh (mapcar '+ pt_1 (mapcar '- pt_b pt_a))
				  anh_w (trans anh 1 0))
			(command "ucs" "za" pt_1 truc)
			(command "rotate" new "" (setq base (trans (nth 3 lst_point_w) 0 1)) pi)
			(setq pt_phu2_2d
				(polar 
						base 
						(+ pi (angle base (setq anh_c (trans anh_w 0 1)))) 
						(distance base (list (car anh_c) (cadr anh_c)))
						)
				pt_phu2_w_3d (trans (list (car pt_phu2_2d) (cadr pt_phu2_2d) (last anh_c)) 1 0)
				)
			(cond
				((and 
					(equal huong_13_xoy huong_ac_xoy 1e-5) 
					(equal huong_13_yoz huong_ac_yoz 1e-5)
					(equal huong_13_xoz huong_ac_xoz 1e-5)
					)
					(princ)
				)
				((and 
					(or (equal (+ huong_13_xoy pi) huong_ac_xoy 1e-5) (equal (- huong_13_xoy pi) huong_ac_xoy 1e-5))
					(or (equal (+ huong_13_yoz pi) huong_ac_yoz 1e-5) (equal (- huong_13_yoz pi) huong_ac_yoz 1e-5))
					(or (equal (+ huong_13_xoz pi) huong_ac_xoz 1e-5) (equal (- huong_13_xoz pi) huong_ac_xoz 1e-5))
					)
					(command "ucs" "za" base (mapcar '(lambda (x) (* 0.5 x)) (mapcar '+ (trans pt_phu2_w_3d 0 1) (trans (nth 4 lst_point_w) 0 1))))
					(command "rotate" new "" (trans (nth 3 lst_point_w) 0 1) pi)
				)
				(t 
					(command "ucs" "3p" base (trans (nth 5 lst_point_w) 0 1) (trans truc_w 0 1))
					(command "rotate" new ""
						(setq base (trans (nth 3 lst_point_w) 0 1))
						(* -1 (angle base (trans truc_w 0 1)))
					)
				)
			)
	)
	;==================================================================
	(t 
		(cond
			((and 
					(equal huong_13_xoy huong_ac_xoy 1e-5) 
					(equal huong_13_yoz huong_ac_yoz 1e-5)
					(equal huong_13_xoz huong_ac_xoz 1e-5)
					)
					(setq pt_phu (mapcar '+ pt_1 (mapcar '- pt_b pt_a))
						  pt_phu_w (trans pt_phu 1 0))
					(command "ucs" "za" pt_1 pt_3)
					(command "rotate" new "" 
						(setq base (trans (nth 3 lst_point_w) 0 1))
						(- (angle base (trans (nth 4 lst_point_w) 0 1)) (angle base (trans pt_phu_w 0 1)))
					)
			)
			((and 
					(or (equal (+ huong_13_xoy pi) huong_ac_xoy 1e-5) (equal (- huong_13_xoy pi) huong_ac_xoy 1e-5))
					(or (equal (+ huong_13_yoz pi) huong_ac_yoz 1e-5) (equal (- huong_13_yoz pi) huong_ac_yoz 1e-5))
					(or (equal (+ huong_13_xoz pi) huong_ac_xoz 1e-5) (equal (- huong_13_xoz pi) huong_ac_xoz 1e-5))
					)
					(setq truc (mapcar '+ pt_1 (mapcar '- pt_b pt_a))
						  truc_w (trans truc 1 0))
					(setq anh (mapcar '+ pt_1 (mapcar '- pt_c pt_a))
						  anh_w (trans anh 1 0))
					(command "ucs" "za" pt_1 truc)
					(command "rotate" new "" (setq base (trans (nth 3 lst_point_w) 0 1)) pi)
					(command "ucs" "3p" base (trans (nth 4 lst_point_w) 0 1) (trans truc_w 0 1))
					(command "rotate" new ""
						(setq base (trans (nth 3 lst_point_w) 0 1))
						(* -1 (angle base (trans truc_w 0 1)))
					)
			)
			(t
				(setq pt_phu (mapcar '+ pt_1 (mapcar '- pt_b pt_a))
					  pt_phu_w (trans pt_phu 1 0)
					  pt_phu2 (mapcar '+ pt_1 (mapcar '- pt_c pt_a))
					  pt_phu2_w (trans pt_phu2 1 0))
				(command "ucs" "3p" pt_1 pt_2 pt_phu)
				(command "rotate" new "" 
					(setq base (trans (nth 3 lst_point_w) 0 1)) 
					(setq ang (* -1 (angle base (trans pt_phu_w 0 1))))
				)
				(setq pt_phu_2d 
						(polar 
							base 
							(+ ang (angle base (setq anh_c (trans pt_phu2_w 0 1)))) 
							(distance (list (car base) (cadr base)) (list (car anh_c) (cadr anh_c))))
					  pt_phu_3d (list (car pt_phu_2d) (cadr pt_phu_2d) (last anh_c))
					  pt_phu_w_3d (trans pt_phu_3d 1 0))
				(command "ucs" "za" (trans (nth 3  lst_point_w) 0 1) (trans (nth 4  lst_point_w) 0 1))
				(command "rotate" new "" 
					(setq base (trans (nth 3 lst_point_w) 0 1))
					(- (angle base (trans (nth 5 lst_point_w) 0 1)) (angle base (trans pt_phu_w_3d 0 1)))
				)
			)
		)
	)
)
(command "ucs" "na" "r" "save_ucs")
(command "ucs" "na" "d" "save_ucs")
;(command "-view" "r" "save_v")
;(command "-view" "d" "save_v")
(mapcar 'setvar lst_va old)
(princ)
)

  • 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