Đến nội dung


Hình ảnh
- - - - -

Giúp Đỡ [Lisp] Tự Động Vẽ Đầu Mũi Khoan


  • Please log in to reply
7 replies to this topic

#1 vanmanh192hd

vanmanh192hd

    biết vẽ line

  • Members
  • PipPip
  • 23 Bài viết
Điểm đánh giá: -4 (bình thường)

Đã gửi 05 October 2016 - 09:53 AM

Chào tất cả anh em trong diễn đàn

mình có một bài toán mong các anh em giúp đỡ

yêu cầu bài toán:

1. có một đoạn thẳng mình muốn tạo ra một tam giác cân góc 60 độ chỉ với 2 click . 

      click 1: chọn đường thẳng

      click 2 : chon miền đặt điểm đỉnh của tam giác

2. tự động tạo ra lỗ khoan bằng cách nhập tọa độ 2 điểm trên màn hinh mà khoảng cách giữa hai điểm đó chính là chiều sâu của mũi khoan sau đó chương chình yêu cầu nhập đường kính mũi khoan

......

mình muốn 2 bài toán trên gộp thành một chương trình với 2 lựa chọn

mình đã upload hình ảnh mô tả bài toán ở dưới. rất mong các anh em giúp đỡ.

 

https://drive.google...iew?usp=sharing


  • -1

#2 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 05 October 2016 - 11:18 AM

Chào tất cả anh em trong diễn đàn

mình có một bài toán mong các anh em giúp đỡ

yêu cầu bài toán:

1. có một đoạn thẳng mình muốn tạo ra một tam giác cân góc 60 độ chỉ với 2 click . 

      click 1: chọn đường thẳng

      click 2 : chon miền đặt điểm đỉnh của tam giác

2. tự động tạo ra lỗ khoan bằng cách nhập tọa độ 2 điểm trên màn hinh mà khoảng cách giữa hai điểm đó chính là chiều sâu của mũi khoan sau đó chương chình yêu cầu nhập đường kính mũi khoan

......

mình muốn 2 bài toán trên gộp thành một chương trình với 2 lựa chọn

mình đã upload hình ảnh mô tả bài toán ở dưới. rất mong các anh em giúp đỡ.

 

https://drive.google...iew?usp=sharing

Một vài gợi ý :

bài 1.

- Gọi ptA là đỉnh của tam giác cân (vì góc ở đỉnh là 60 độ => t/giác đều)

- gọi ent là dường thẳng đã chọn

sử dụng hàm (vlax-curve-getClosestPointTo ent ptA) để tính điểm ptH là chân đường  cao cũng là đường trung trực.

- vẽ đ/cao từ ptA đến ptH (copy thành 2 đường)

 + xuay đường cao này qua trái 1 góc 30, tìm giao với đ/thầng ent ta được điểm ptB (sử dung hàm vla-intersectwith)

 + tương tự, xuay đường cao này qua phải 1 góc 30, tìm giao với đ/thầng ent ta được điểm ptC 

- nối các điểm ptA, ptB, ptC ta được kết quả là tam giác đều.

 - xóa các đường phụ (nếu cần).


  • 0

#3 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 05 October 2016 - 12:45 PM

Tính toán mệt. Phương án khỏe hơn là tạo block chứa tam giác cân có góc đáy là 60 độ không có cạnh đáy. Chiều dài đáy là 1 đơn vị.
Insert block này vào dựa trên 2 điểm line. X nó ra là xong.

Mà ngó chừng chủ thớt nói uyễn chuyễn thế thôi chứ là nhờ viết lisp chứ ko phải nhờ chỉ hướng đâu nhỉ
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#4 haanh

haanh

    biết lệnh adcenter

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

Đã gửi 05 October 2016 - 09:35 PM

Chào tất cả anh em trong diễn đàn

mình có một bài toán mong các anh em giúp đỡ

yêu cầu bài toán:

1. có một đoạn thẳng mình muốn tạo ra một tam giác cân góc 60 độ chỉ với 2 click . 

      click 1: chọn đường thẳng

      click 2 : chon miền đặt điểm đỉnh của tam giác

2. tự động tạo ra lỗ khoan bằng cách nhập tọa độ 2 điểm trên màn hinh mà khoảng cách giữa hai điểm đó chính là chiều sâu của mũi khoan sau đó chương chình yêu cầu nhập đường kính mũi khoan

......

mình muốn 2 bài toán trên gộp thành một chương trình với 2 lựa chọn

mình đã upload hình ảnh mô tả bài toán ở dưới. rất mong các anh em giúp đỡ.

 

https://drive.google...iew?usp=sharing

 

Mũi khoan có góc ở đỉnh là 60℃ , không biết anh có hơi bị ... nhầm nhọt gì không???

Phải chăng, anh đang thiết kế loại MŨI KHOAN CHUYÊN DÙNG ĐỂ KHOAN ...THỊT LỢN ???


  • 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...”


#5 Bee

Bee

    biết lệnh extend

  • Members
  • PipPipPip
  • 198 Bài viết
Điểm đánh giá: 68 (tàm tạm)

Đã gửi 05 October 2016 - 10:25 PM

Chào tất cả anh em trong diễn đàn

mình có một bài toán mong các anh em giúp đỡ

yêu cầu bài toán:

1. có một đoạn thẳng mình muốn tạo ra một tam giác cân góc 60 độ chỉ với 2 click . 

      click 1: chọn đường thẳng

      click 2 : chon miền đặt điểm đỉnh của tam giác

2. tự động tạo ra lỗ khoan bằng cách nhập tọa độ 2 điểm trên màn hinh mà khoảng cách giữa hai điểm đó chính là chiều sâu của mũi khoan sau đó chương chình yêu cầu nhập đường kính mũi khoan

......

mình muốn 2 bài toán trên gộp thành một chương trình với 2 lựa chọn

mình đã upload hình ảnh mô tả bài toán ở dưới. rất mong các anh em giúp đỡ.

 

https://drive.google...iew?usp=sharing

Mềnh chả biết mũi khoan là gì nhưng thấy bài toàn giải hay hay nên nghịch chơi. Thử lisp này nhé. ^_^

;;;Found Internet
(defun Point_per (P1 P2 P3 / X1 X2 X3 Y1 Y2 Y3 Z1 Z2 Z3 T4)
  (setq	X1 (car P1)
	X2 (car P2)
	X3 (car P3)
	Y1 (cadr P1)
	Y2 (cadr P2)
	Y3 (cadr P3)
	Z1 (caddr P1)
	Z2 (caddr P2)
	Z3 (caddr P3)
	T4 (/ (+ (* (- X2 X1) (- X3 X1))
		 (* (- Y2 Y1) (- Y3 Y1))
		 (* (- Z2 Z1) (- Z3 Z1))
	      )
	      (+ (* (- X2 X1) (- X2 X1))
		 (* (- Y2 Y1) (- Y2 Y1))
		 (* (- Z2 Z1) (- Z2 Z1))
	      )
	   )
  )
  (list	(+ X1 (* T4 (- X2 X1)))
	(+ Y1 (* T4 (- Y2 Y1)))
	(+ Z1 (* T4 (- Z2 Z1)))
  )
)
;;;My funtions
(defun ve_mui_khoan ( / a p10 p11 pt pt1 pt2 pt_0)
  (setq a (car (entsel "\nChon doan thang: ")))
  (if a
    (progn
      (setq p10 (cdr (assoc 10 (entget a))))
      (setq p11 (cdr (assoc 11 (entget a))))
      (setq pt (polar p10 (angle p10 p11) (/ (distance p10 p11) 2)))
      (setq pt1 (getpoint "\nChon diem bat ky: "))
      (setq pt2 (Point_per p10 p11 pt1))
      (setq pt_0 (polar	pt
			(angle pt2 pt1)
			(/ (* (distance p10 p11) (sqrt 3)) 6)
		 )
      )
      (command "_polygon" "3" "_none" pt_0 "I" p10)
    )
  )
)
(defun ve_lo_khoan (/ p1 p2 d p3 p4 p5 p6 p7 ang)
  (setq p1 (getpoint "\nChon diem 1: "))
  (setq p2 (getpoint p1 "\nChon diem 2: "))
  (setq d (getreal "\nChon duong kinh: "))
  (setq p3 (polar p1 (+ (setq ang (angle p1 p2)) (* pi 0.5)) (/ d 2))
	p4 (polar p3 (+ ang (* pi 1.5)) d)
	p5 (polar p4 ang (distance p1 p2))
	p6 (polar p5 (+ ang (* pi 0.5)) d)
	p7 (polar p2 (angle p1 p2) (/ (* d (sqrt 3)) 6))
	)
  (command "line" "_non" p3 "_non" p4 "_non" p5 "_non" p6 "_non" p3 ""
	   "line" "_non" p6 "_non" p7 "_non" p5 "")
  )
(defun c:test ()
  (initget 1 "M L ")
  (setq ob (getkword "\nChon ve mui khoan hoac ve lo khoan [Mui/Lo]: "))
  (cond
    ((= ob "M")
     (ve_mui_khoan)
     )
    ((= ob "L")
     (ve_lo_khoan)
     )
    );#cond
  (princ)
  )

Lệnh test nhé.


  • 1

#6 vanmanh192hd

vanmanh192hd

    biết vẽ line

  • Members
  • PipPip
  • 23 Bài viết
Điểm đánh giá: -4 (bình thường)

Đã gửi 07 October 2016 - 06:43 PM

Mềnh chả biết mũi khoan là gì nhưng thấy bài toàn giải hay hay nên nghịch chơi. Thử lisp này nhé. ^_^

;;;Found Internet
(defun Point_per (P1 P2 P3 / X1 X2 X3 Y1 Y2 Y3 Z1 Z2 Z3 T4)
  (setq	X1 (car P1)
	X2 (car P2)
	X3 (car P3)
	Y1 (cadr P1)
	Y2 (cadr P2)
	Y3 (cadr P3)
	Z1 (caddr P1)
	Z2 (caddr P2)
	Z3 (caddr P3)
	T4 (/ (+ (* (- X2 X1) (- X3 X1))
		 (* (- Y2 Y1) (- Y3 Y1))
		 (* (- Z2 Z1) (- Z3 Z1))
	      )
	      (+ (* (- X2 X1) (- X2 X1))
		 (* (- Y2 Y1) (- Y2 Y1))
		 (* (- Z2 Z1) (- Z2 Z1))
	      )
	   )
  )
  (list	(+ X1 (* T4 (- X2 X1)))
	(+ Y1 (* T4 (- Y2 Y1)))
	(+ Z1 (* T4 (- Z2 Z1)))
  )
)
;;;My funtions
(defun ve_mui_khoan ( / a p10 p11 pt pt1 pt2 pt_0)
  (setq a (car (entsel "\nChon doan thang: ")))
  (if a
    (progn
      (setq p10 (cdr (assoc 10 (entget a))))
      (setq p11 (cdr (assoc 11 (entget a))))
      (setq pt (polar p10 (angle p10 p11) (/ (distance p10 p11) 2)))
      (setq pt1 (getpoint "\nChon diem bat ky: "))
      (setq pt2 (Point_per p10 p11 pt1))
      (setq pt_0 (polar	pt
			(angle pt2 pt1)
			(/ (* (distance p10 p11) (sqrt 3)) 6)
		 )
      )
      (command "_polygon" "3" "_none" pt_0 "I" p10)
    )
  )
)
(defun ve_lo_khoan (/ p1 p2 d p3 p4 p5 p6 p7 ang)
  (setq p1 (getpoint "\nChon diem 1: "))
  (setq p2 (getpoint p1 "\nChon diem 2: "))
  (setq d (getreal "\nChon duong kinh: "))
  (setq p3 (polar p1 (+ (setq ang (angle p1 p2)) (* pi 0.5)) (/ d 2))
	p4 (polar p3 (+ ang (* pi 1.5)) d)
	p5 (polar p4 ang (distance p1 p2))
	p6 (polar p5 (+ ang (* pi 0.5)) d)
	p7 (polar p2 (angle p1 p2) (/ (* d (sqrt 3)) 6))
	)
  (command "line" "_non" p3 "_non" p4 "_non" p5 "_non" p6 "_non" p3 ""
	   "line" "_non" p6 "_non" p7 "_non" p5 "")
  )
(defun c:test ()
  (initget 1 "M L ")
  (setq ob (getkword "\nChon ve mui khoan hoac ve lo khoan [Mui/Lo]: "))
  (cond
    ((= ob "M")
     (ve_mui_khoan)
     )
    ((= ob "L")
     (ve_lo_khoan)
     )
    );#cond
  (princ)
  )

Lệnh test nhé.

Mình xin lỗi vì đã viết là góc tạo mũi khoan là 60 độ

nó là 120 độ

cảm ơn bạn rất nhiều


  • 0

#7 Bee

Bee

    biết lệnh extend

  • Members
  • PipPipPip
  • 198 Bài viết
Điểm đánh giá: 68 (tàm tạm)

Đã gửi 07 October 2016 - 06:52 PM

Mình xin lỗi vì đã viết là góc tạo mũi khoan là 60 độ

nó là 120 độ

cảm ơn bạn rất nhiều

Nếu là 120 thì thay dòng

(command "_polygon" "3" "_none" pt_0 "I" p10)

 

bằng dòng

 

(command "_line" "_non" p10 "_non" pt_0 "_non" p11 "") 

 

Có thể thay line thành pline tùy ý.


  • 1

#8 vanmanh192hd

vanmanh192hd

    biết vẽ line

  • Members
  • PipPip
  • 23 Bài viết
Điểm đánh giá: -4 (bình thường)

Đã gửi 07 October 2016 - 08:02 PM

Nếu là 120 thì thay dòng

(command "_polygon" "3" "_none" pt_0 "I" p10)

 

bằng dòng

 

(command "_line" "_non" p10 "_non" pt_0 "_non" p11 "") 

 

Có thể thay line thành pline tùy ý.

Tuyệt. Cảm ơn bạn rất nhiều

:D


  • 0