Đến nội dung


Hình ảnh
- - - - -

[Help] tìm lisp xử lý như hình minh họa


  • Please log in to reply
4 replies to this topic

#1 quochuyksxd

quochuyksxd

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 201 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 15 August 2013 - 05:13 PM

Các bác viết dùm em cái lisp xử lý như hình minh họa được không ah

100618_minh_hoa.jpg


  • 0

#2 Namvanvo

Namvanvo

    Edu level: li5

  • Members
  • PipPipPipPipPip
  • 386 Bài viết
Điểm đánh giá: 42 (tàm tạm)

Đã gửi 15 August 2013 - 10:12 PM

Chào bạn, mình mới học viết lisp, với khả năng hiện tại, mình viết đoạn lisp sau để áp dụng cho hình vẽ trên ( chưa ghi kích thước), bạn áp dụng thử nhé. :D  :lol: 
P/s: bạn load lisp vào và dùng lệnh tắt là cf, nếu bạn có thêm yêu cầu gì thì mình sẽ nghiên cứu để viết thêm


 (defun C:cf(/ os echo x y p p1 p2 p3 p4)
(setq os (getvar 'osmode)
echo (getvar 'cmdecho))
(setvar 'osmode 32)
(setvar 'cmdecho 0)

(setq x (getdist "\n khoang cach vat theo x:")
y (getdist "\n khoang cach vat theo y:")
p (getpoint "\n Chon giao diem hai doan thang:")
p1 (polar p (* 3 pi 0.5) y)
p2 (polar p 0 x)
p3 (list (+ (car p1) (* x 0.5)) (+ (cadr p1) (* y 0.5)))
p4 (polar p3 (* 0.5 pi) y)
)
(setvar 'osmode 0)

(command ".line" p1 p2 "")
(command ".trim" (entlast) "" "f" p3 p4 "" "")

(setvar 'osmode os)
(setvar 'cmdecho echo)
(princ)
)


  • 1

#3 quochuyksxd

quochuyksxd

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 201 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 16 August 2013 - 07:20 AM

Cảm ơn bạn nhé, cũng đúng ý mình rồi nhưng bạn có thể bổ sung thêm lựa chọn hướng ngược lại được không? vì như hình trên là vát góc bên phải, có thể chọn thêm vát góc bên trái nữa. Y mặc định giá trị bằng X giống lệnh champer. nếu nhập giá trị khác cho Y thì thay đổi


  • 0

#4 Namvanvo

Namvanvo

    Edu level: li5

  • Members
  • PipPipPipPipPip
  • 386 Bài viết
Điểm đánh giá: 42 (tàm tạm)

Đã gửi 16 August 2013 - 02:03 PM

Phím tắt 1 (bạn nhập một số) nếu x=y; phím tắt 2 (phải nhập hai số) nếu x # y; nếu bạn nhập x <0, y< 0 thì hình sẽ ngược lại tương ứng với cái hình của bạn ở trên. cái lisp mình viết hơi củ chuối nhưng đã đáp ứng được yêu cầu của bạn ở trên, bạn thử áp dụng với từng trường hợp nhé  :D  :D  :D

(defun C:2(/ os echo x y p p1 p2 p2a p3 p3a p4 p4a)
  (setq os (getvar 'osmode)
echo (getvar 'cmdecho))
  (setvar 'osmode 32)
  (setvar 'cmdecho 0)
  
  (setq x (getdist "\n khoang cach vat theo x:")
y (getdist "\n khoang cach vat theo y:")
p (getpoint "\n Chon giao diem hai doan thang:")
p1 (polar p (* 3 pi 0.5) y)
p2 (polar p 0 x)
p2a (polar p pi (abs x))
p3 (list (+ (car p1) (* x 0.5)) (+ (cadr p1) (* y 0.5)))
p3a (list (+ (car p1) (* x 0.5)) (+ (cadr p1) (* y 0.5)))
p4 (polar p3 (* 0.5 pi) y)
p4a (polar p3a (* 0.5 pi) y)
)
  (setvar 'osmode 0)
  (if (> x 0)
    (command ".line" p1 p2 ""
".trim" (entlast) "" "f" p3 p4 "" "")
 
  (command ".line" p1 p2a ""
  ".trim" (entlast) "" "f" p3a p4a "" "")
  )
 
  (setvar 'osmode os)
  (setvar 'cmdecho echo)
  (princ)
  )
;------------------------------------------------------------
(defun C:1(/ os echo x p p1 p2 p2a p3 p3a p4 p4a)
  (setq os (getvar 'osmode)
echo (getvar 'cmdecho))
  (setvar 'osmode 32)
  (setvar 'cmdecho 1)
  
  (setq x (getdist "\n khoang cach vat:")
p (getpoint "\n Chon giao diem hai doan thang:")
p1 (polar p (* 3 pi 0.5) x)
p1a (polar p (* 3 pi 0.5) (abs x))
p2 (polar p 0 x)
p2a (polar p pi (abs x))
p3 (list (+ (car p1) (* x 0.5)) (+ (cadr p1) (* x 0.5)))
p3a (list (+ (car p1) (* x 0.5)) (+ (cadr p1) (* x 0.5)))
p4 (polar p3 (* 0.5 pi) x)
p4a (polar p3a (* 0.5 pi) x)
)
  (setvar 'osmode 0)
  (if (> x 0)
    (command ".line" p1 p2 ""
".trim" (entlast) "" "f" p3 p4 "" "")
 
  (command ".line" p1a p2a ""
  ".trim" (entlast) "" "f" p3a p4a "" "")
  )
 
  (setvar 'osmode os)
  (setvar 'cmdecho echo)
  (princ)
  )

  • 2

#5 quochuyksxd

quochuyksxd

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 201 Bài viết
Điểm đánh giá: 24 (tàm tạm)

Đã gửi 16 August 2013 - 02:13 PM

Thank bạn nhé, lần này thì đúng rồi. chúc diễn đàn sẽ có càng nhiều lập trình lisp như bạn.


  • 0