Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
jangboko

Nhờ Viết Lisp Vẽ Tên Chỉ Hướng Đường

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

nhờ các bác trong diễn đàn giúp em viết cái lisp tạo ra cái hình mũi tên như hình em gửi lên:

-sau khi gõ lệnh thì click điểm thứ nhất là 1 cạnh của đường đi, sau đó click điểm thứ 2 của đường đi thì sẽ tạo ra mũi tên như hình vẽ. Em cảm ơn các bác nhiều, chúc các bác 1 tuần làm việc vui vẻ 

p/s: em đã tìm trên diễn đàn mà không thấy lisp nào như yêu cầu của em, nếu đã có rồi thì cho em xin đường link. Một lần nữa cảm ơn các bác.111575_mui_ten_1.jpg

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

Dùng lệnh pline, đánh điểm đầu có độ dày bằng 0 hay 1, điểm 2 tùy theo độ rộng của mũi tên là xong. Viết autolisp làm gì

cảm ơn bạn đã quan tâm và trả lời. Nhưng có autolisp sẽ làm việc nhanh hơn và đẹp hơn chứ. Mình cũng đã thử vẽ như bạn bảo, thấy nó chậm hơn cả cách mình dùng 1 hình có sẵn sau đó align vào đường. nhưng cách làm này của mình lại phải vẽ hoặc coppy 1 mẫu mũi tên có sẵn, quá trình này hơi lâu nên minh mới mạo muội hỏi a e trên diễn đàn. Mình thấy thằng em bên cạnh sử dụng cadspeed 2.0 nó cũng có lệnh này nên mình hi vọng trên diễn đàn có code lệnh đó. A e nào biết cho mình xin cái link.

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

nhờ các bác trong diễn đàn giúp em viết cái lisp tạo ra cái hình mũi tên như hình em gửi lên:

-sau khi gõ lệnh thì click điểm thứ nhất là 1 cạnh của đường đi, sau đó click điểm thứ 2 của đường đi thì sẽ tạo ra mũi tên như hình vẽ. Em cảm ơn các bác nhiều, chúc các bác 1 tuần làm việc vui vẻ 

p/s: em đã tìm trên diễn đàn mà không thấy lisp nào như yêu cầu của em, nếu đã có rồi thì cho em xin đường link. Một lần nữa cảm ơn các bác.111575_mui_ten_1.jpg

chắc do up hình ko xem được nên ko có bác nào giúp, vậy em xin úp lại cái hình, mong các bác giụp ạ

wL6fqWE.png

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

Tham gia CadViet đc 4 năm rồi. nhưng vẫn còn ko biết cách post bài cho dễ hiểu.

(Các Lisper chán cái cảnh phải năn nỉ xin từng số liệu để viết)

 

Vấn đề không phải là do cái hình ??? 

Qui luật vẽ thế nào ?

 - t/hợp kh/cách điểm 1 tới điểm 2 = 100 thì các giá trị của mũi tên tương ứng là bao nhiêu ?

 - t/hợp kh/cách điểm 1 tới điểm 2 = 200 thì các giá trị của mũi tên tương ứng là bao nhiêu ?

 - t/hợp kh/cách điểm 1 tới điểm 2 = 500 thì các giá trị của mũi tên tương ứng là bao nhiêu ?

...

 - t/hợp kh/cách điểm 1 tới điểm 2 = 800 thì các giá trị của mũi tên tương ứng là bao nhiêu ?

...

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

Thử xem!

(defun duy:taobk_mtdcv ()
  (entmake '((0 . "BLOCK") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbBlockReference") (2 . "duy_tv_muitenduongcv") (10 0.0 0.0 0.0) (70 . 0)))
  (entmake '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 0.0 0.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.0 0.079048750845185) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.0 0.079048750845185) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.0 0.0) (40 . 0.0) (41 . 0.0) (42 . 0.0)))
  (entmake '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 0.0 0.144923408667705) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.0 0.223972159512890) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.0 0.223972159512890) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.0 0.144923408667705) (40 . 0.0) (41 . 0.0) (42 . 0.0)))
  (entmake '((0 . "HATCH") (100 . "AcDbEntity") (8 . "0") (100 . "AcDbHatch") (10 0.0 0.0 0.0) (210 0.0 0.0 1.0) (2 . "SOLID") (70 . 1) (71 . 0) (91 . 1) (92 . 1) (93 . 7) (72 . 1) (10 1.0 0.474294301946547 0.0) (11 1.0 0.312761773046283 0.0) (72 . 1) (10 1.0 0.312761773046283 0.0) (11 0.0 0.312761773046283 0.0) (72 . 1) (10 0.0 0.312761773046283 0.0) (11 0.0 0.474294301946547 0.0) (72 . 1) (10 0.0 0.474294301946547 0.0) (11 -0.309210583527104 0.474294301946547 0.0) (72 . 1) (10 -0.309210583527104 0.474294301946547 0.0) (11 0.500000000000000 0.907304787768128 0.0) (72 . 1) (10 0.500000000000000 0.907304787768126 0.0) (11 1.309210583527104 0.474294301946545 0.0) (72 . 1) (10 1.309210583527104 0.474294301946547 0.0) (11 1.0 0.474294301946547 0.0) (97 . 0) (75 . 0) (76 . 1) (98 . 1) (10 21.99031319514620 -88.48062166520982 0.0) (450 . 0) (451 . 0) (460 . 0.0) (461 . 0.0) (452 . 1) (462 . 1.0) (453 . 2) (463 . 0.0) (63 . 5) (421 . 255) (463 . 1.0) (63 . 7) (421 . 16777215) (470 . "LINEAR")))
  (entmake '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbPolyline") (90 . 8) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 1.0 0.474294301946547) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.0 0.312761773046283) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.0 0.312761773046283) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.0 0.474294301946547) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 -0.309210583527104 0.474294301946547) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.500000000000000 0.907304787768126) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.500000000000000 0.907304787768126) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.309210583527104 0.474294301946547) (40 . 0.0) (41 . 0.0) (42 . 0.0)))
  (entmake '((0 . "ENDBLK") (100 . "AcDbBlockEnd") (8 . "0")))
  (princ)
) 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:xd_diem<traiphai (diemchuan diemchuanm diemxd / diemchuan diemchuanm diemxd)
(cond
((> (* (- (car diemchuanm) (car diemchuan)) (- (cadr diemxd) (cadr diemchuan))) (* (- (cadr diemchuanm) (cadr diemchuan)) (- (car diemxd) (car diemchuan))) ) (setq kqtp "trai") )
((< (* (- (car diemchuanm) (car diemchuan)) (- (cadr diemxd) (cadr diemchuan))) (* (- (cadr diemchuanm) (cadr diemchuan)) (- (car diemxd) (car diemchuan))) ) (setq kqtp "phai") )
((= (* (- (car diemchuanm) (car diemchuan)) (- (cadr diemxd) (cadr diemchuan))) (* (- (cadr diemchuanm) (cadr diemchuan)) (- (car diemxd) (car diemchuan))) ) (setq kqtp "trung") )
)
kqtp)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:mtd ()
(command "undo" "be") 
(cond
((= nill (tblsearch "block" "duy_tv_muitenduongcv")) (duy:taobk_mtdcv) )
((/= nill (tblsearch "block" "duy_tv_muitenduongcv")) )
)

 (while  (setq diemchenmtdm (getpoint "\nDiem thu nhat. Hoac ENTER de ket thuc !"))
(setq diemchenmtdh (getpoint diemchenmtdm "\nDiem thu hai"))
 (command ".insert" "duy_tv_muitenduongcv" "_non" diemchenmtdm  (distance diemchenmtdm diemchenmtdh)  (distance diemchenmtdm diemchenmtdh) diemchenmtdh)

(setq diemchuanh (getpoint diemchenmtdm "\nHuong mui ten"))
(setq huongmtd (duy:xd_diem<traiphai diemchuanh diemchenmtdm  diemchenmtdh))
(cond
((= huongmtd "trai")   )
((= huongmtd "phai")   (command ".mirror" (entlast) "" "_non" diemchenmtdm "_non" diemchenmtdh "y"))
((= huongmtd "trung")   (command ".mirror" (entlast) "" "_non"diemchenmtdm "_non" diemchenmtdh "") (princ "\nDiem dinh huong trung voi duong thang nen ve hai huong luon nhe !") )
)

)
(command "undo" "end")
(princ)
)
  • Vote tăng 2

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

Tham gia CadViet đc 4 năm rồi. nhưng vẫn còn ko biết cách post bài cho dễ hiểu.

(Các Lisper chán cái cảnh phải năn nỉ xin từng số liệu để viết)

 

Vấn đề không phải là do cái hình ??? 

Qui luật vẽ thế nào ?

 - t/hợp kh/cách điểm 1 tới điểm 2 = 100 thì các giá trị của mũi tên tương ứng là bao nhiêu ?

 - t/hợp kh/cách điểm 1 tới điểm 2 = 200 thì các giá trị của mũi tên tương ứng là bao nhiêu ?

 - t/hợp kh/cách điểm 1 tới điểm 2 = 500 thì các giá trị của mũi tên tương ứng là bao nhiêu ?

...

 - t/hợp kh/cách điểm 1 tới điểm 2 = 800 thì các giá trị của mũi tên tương ứng là bao nhiêu ?

...

cảm ơn bạn đã góp ý, mình sẽ cố gắng post bài cẩn thận hơn

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

 

Thử xem!

(defun duy:taobk_mtdcv ()
  (entmake '((0 . "BLOCK") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbBlockReference") (2 . "duy_tv_muitenduongcv") (10 0.0 0.0 0.0) (70 . 0)))
  (entmake '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 0.0 0.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.0 0.079048750845185) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.0 0.079048750845185) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.0 0.0) (40 . 0.0) (41 . 0.0) (42 . 0.0)))
  (entmake '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 0.0 0.144923408667705) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.0 0.223972159512890) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.0 0.223972159512890) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.0 0.144923408667705) (40 . 0.0) (41 . 0.0) (42 . 0.0)))
  (entmake '((0 . "HATCH") (100 . "AcDbEntity") (8 . "0") (100 . "AcDbHatch") (10 0.0 0.0 0.0) (210 0.0 0.0 1.0) (2 . "SOLID") (70 . 1) (71 . 0) (91 . 1) (92 . 1) (93 . 7) (72 . 1) (10 1.0 0.474294301946547 0.0) (11 1.0 0.312761773046283 0.0) (72 . 1) (10 1.0 0.312761773046283 0.0) (11 0.0 0.312761773046283 0.0) (72 . 1) (10 0.0 0.312761773046283 0.0) (11 0.0 0.474294301946547 0.0) (72 . 1) (10 0.0 0.474294301946547 0.0) (11 -0.309210583527104 0.474294301946547 0.0) (72 . 1) (10 -0.309210583527104 0.474294301946547 0.0) (11 0.500000000000000 0.907304787768128 0.0) (72 . 1) (10 0.500000000000000 0.907304787768126 0.0) (11 1.309210583527104 0.474294301946545 0.0) (72 . 1) (10 1.309210583527104 0.474294301946547 0.0) (11 1.0 0.474294301946547 0.0) (97 . 0) (75 . 0) (76 . 1) (98 . 1) (10 21.99031319514620 -88.48062166520982 0.0) (450 . 0) (451 . 0) (460 . 0.0) (461 . 0.0) (452 . 1) (462 . 1.0) (453 . 2) (463 . 0.0) (63 . 5) (421 . 255) (463 . 1.0) (63 . 7) (421 . 16777215) (470 . "LINEAR")))
  (entmake '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbPolyline") (90 . 8) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 1.0 0.474294301946547) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.0 0.312761773046283) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.0 0.312761773046283) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.0 0.474294301946547) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 -0.309210583527104 0.474294301946547) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.500000000000000 0.907304787768126) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.500000000000000 0.907304787768126) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1.309210583527104 0.474294301946547) (40 . 0.0) (41 . 0.0) (42 . 0.0)))
  (entmake '((0 . "ENDBLK") (100 . "AcDbBlockEnd") (8 . "0")))
  (princ)
) 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun duy:xd_diem<traiphai (diemchuan diemchuanm diemxd / diemchuan diemchuanm diemxd)
(cond
((> (* (- (car diemchuanm) (car diemchuan)) (- (cadr diemxd) (cadr diemchuan))) (* (- (cadr diemchuanm) (cadr diemchuan)) (- (car diemxd) (car diemchuan))) ) (setq kqtp "trai") )
((< (* (- (car diemchuanm) (car diemchuan)) (- (cadr diemxd) (cadr diemchuan))) (* (- (cadr diemchuanm) (cadr diemchuan)) (- (car diemxd) (car diemchuan))) ) (setq kqtp "phai") )
((= (* (- (car diemchuanm) (car diemchuan)) (- (cadr diemxd) (cadr diemchuan))) (* (- (cadr diemchuanm) (cadr diemchuan)) (- (car diemxd) (car diemchuan))) ) (setq kqtp "trung") )
)
kqtp)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:mtd ()
(command "undo" "be") 
(cond
((= nill (tblsearch "block" "duy_tv_muitenduongcv")) (duy:taobk_mtdcv) )
((/= nill (tblsearch "block" "duy_tv_muitenduongcv")) )
)

 (while  (setq diemchenmtdm (getpoint "\nDiem thu nhat. Hoac ENTER de ket thuc !"))
(setq diemchenmtdh (getpoint diemchenmtdm "\nDiem thu hai"))
 (command ".insert" "duy_tv_muitenduongcv" "_non" diemchenmtdm  (distance diemchenmtdm diemchenmtdh)  (distance diemchenmtdm diemchenmtdh) diemchenmtdh)

(setq diemchuanh (getpoint diemchenmtdm "\nHuong mui ten"))
(setq huongmtd (duy:xd_diem<traiphai diemchuanh diemchenmtdm  diemchenmtdh))
(cond
((= huongmtd "trai")   )
((= huongmtd "phai")   (command ".mirror" (entlast) "" "_non" diemchenmtdm "_non" diemchenmtdh "y"))
((= huongmtd "trung")   (command ".mirror" (entlast) "" "_non"diemchenmtdm "_non" diemchenmtdh "") (princ "\nDiem dinh huong trung voi duong thang nen ve hai huong luon nhe !") )
)

)
(command "undo" "end")
(princ)
)

cảm ơn bác đã giúp, Bác có thể giúp em sửa lại cho lisp làm việc theo cơ chế scale với tham số R, Nghĩa là khi chọn đểm đầu tiên đặt 1 cạnh của mũi tên, chọn điểm thứ 2 đặt cạnh thứ 2 của mũi tên, sau đó khi di chuyển chuột hình mũi tên sẽ scale theo ( giống khi ta sử dụng lệnh scale với tham số R, em diễn đạt hơi tối nghĩa mong bác thông cảm) 

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

Lisp tôi viết như sau. Chỉ hai điểm sẽ chèn block đúng góc quay và độ lớn của hai điểm đó rồi. Nếu bản vẽ của bạn chưa đúng như vậy thì chắc là do units. Cái này bạn tự chỉnh trong bản vẽ đi. Chỉnh Insertion Scale thành Unitless

  • Vote tăng 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

Lisp tôi viết như sau. Chỉ hai điểm sẽ chèn block đúng góc quay và độ lớn của hai điểm đó rồi. Nếu bản vẽ của bạn chưa đúng như vậy thì chắc là do units. Cái này bạn tự chỉnh trong bản vẽ đi. Chỉnh Insertion Scale thành Unitless

cảm ơn bạn, mình làm được rồi, quên không để ý đơn vị

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
Đăng nhập để thực hiện theo  

×