Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
9 replies to this topic

#1 jangboko

jangboko

    biết vẽ arc

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

Đã gửi 12 September 2016 - 10:11 AM

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


  • 0

#2 nguoitomo

nguoitomo

    biết vẽ circle

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

Đã gửi 12 September 2016 - 10:30 AM

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ì


  • 0

#3 jangboko

jangboko

    biết vẽ arc

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

Đã gửi 12 September 2016 - 03:49 PM

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.


  • 0

#4 jangboko

jangboko

    biết vẽ arc

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

Đã gửi 15 September 2016 - 09:31 AM

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


  • 0

#5 HoaVien

HoaVien

    biết vẽ arc

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

Đã gửi 15 September 2016 - 09:50 AM

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 ?

...


  • 0

#6 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 15 September 2016 - 09:55 AM

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)
)

  • 1

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


#7 jangboko

jangboko

    biết vẽ arc

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

Đã gửi 15 September 2016 - 10:25 AM

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


  • 0

#8 jangboko

jangboko

    biết vẽ arc

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

Đã gửi 15 September 2016 - 10:38 AM

 

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) 


  • 0

#9 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 15 September 2016 - 10:50 AM

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


  • 1

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


#10 jangboko

jangboko

    biết vẽ arc

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

Đã gửi 15 September 2016 - 11:21 AM

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ị


  • 0