Đến nội dung


Hình ảnh
- - - - -

"[Nhờ chỉnh sửa] Lisp tạo polyline qua các điểm của 2 đường thẳng và hatch.


  • Please log in to reply
5 replies to this topic

#1 NguyenNgocSon

NguyenNgocSon

    biết dimbaseline

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

Đã gửi 11 March 2012 - 03:41 PM

Em mới code được đoạn lisp sau:

(Defun C:ds ( )
;chon duong thu nhat
(setq DT (entsel "\nChon LINE mau1"))
(while
(or
(null DT)
(/= "LINE" (cdr (assoc 0 (entget (car DT)))))
)
(princ "\nDoi tuong khong phai la LINE! Chon lai")
(setq DT (entsel "\nChon LINE mau 1"))
)
(setq DT (car DT));loc chon doi tuong
(setq DT (entget DT))
(setq DD (cdr (assoc 10 DT)))
(setq DC (cdr (assoc 11 DT)))
(setq gocdc(angle DD DC))
(setq daidc (distance DD DC))
;chon duong thu 2
(setq DT1 (entsel "\nChon LINE mau2"))
(while
(or
(null DT1)
(/= "LINE" (cdr (assoc 0 (entget (car DT1)))))
)
(princ "\nDoi tuong khong phai la LINE! Chon lai")
(setq DT1 (entsel "\nChon LINE2 mau"))
)
(setq DT1 (car DT1))
(setq DT1 (entget DT1))
(setq DD1 (cdr (assoc 10 DT1)))
(setq DC1 (cdr (assoc 11 DT1)))
(setq gocdc1(angle DD1 DC1))
(setq daidc1 (distance DD1 DC1))
;Ket thuc chon duong thu 2
;(command "line" dd dd1 "" )
;(command "line" dc dc1 "" )
(command "Pline" dd dc dc1 dd1 dd "" )
(command "hatch" "solid" (ssget) "")
(princ)
)
Lisp thực hiện như sau:
- Chọn đường thứ nhất, chọn đường thứ 2
- Vẽ polyline qua 4 điếm của đường thẳng
- Hatch vùng bao.
Lisp trên đã thực hiện được nhưng hơi dài
Em muốn rút gọn như sau: để không phải chọn đối tượng sau khi hatch mà lisp tự lấy cái polyline cuối cùng để hatch luôn.
Em cám ơn !
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 11 March 2012 - 03:54 PM

Em mới code được đoạn lisp sau:
Lisp thực hiện như sau:
- Chọn đường thứ nhất, chọn đường thứ 2
- Vẽ polyline qua 4 điếm của đường thẳng
- Hatch vùng bao.
Lisp trên đã thực hiện được nhưng hơi dài
Em muốn rút gọn như sau: để không phải chọn đối tượng sau khi hatch mà lisp tự lấy cái polyline cuối cùng để hatch luôn.
Em cám ơn !

Thay:
(command "hatch" "solid" (ssget) "")
Bằng:
(command "hatch" "solid" (entlast) "")
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 NguyenNgocSon

NguyenNgocSon

    biết dimbaseline

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

Đã gửi 11 March 2012 - 08:12 PM

Xinh hỏi có cách nào mình thay cách chọn line1, line 2 bằng đoạn mã quét chọn luôn cả 2 đường ko ?
Cám ơn !
  • 0

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 11 March 2012 - 08:26 PM

Xinh hỏi có cách nào mình thay cách chọn line1, line 2 bằng đoạn mã quét chọn luôn cả 2 đường ko ?
Cám ơn !

Bạn tham khảo :

(IF (setq ss (ssget '((0 . "LINE"))))
(if (= (sslength ss) 2)
(setq enameline1 (ssname ss 0) enameline2 (ssname ss 1)
)
)
  • 1

#5 NguyenNgocSon

NguyenNgocSon

    biết dimbaseline

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

Đã gửi 11 March 2012 - 08:37 PM

Bạn tham khảo :

(IF (setq ss (ssget '((0 . "LINE"))))
(if (= (sslength ss) 2)
(setq enameline1 (ssname ss 0) enameline2 (ssname ss 1)
)
)

Dạ.Em cám ơn. Nhưng e thấy để chọn ra đối tượng 1 và 2 để lấy tọa độ vẽ ra Polyline em chưa thực hiện được.Tại code lisp của e hơi chắp vá
Cám ơn bác nhiều !
  • 0

#6 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 11 March 2012 - 08:47 PM

Dạ.Em cám ơn. Nhưng e thấy để chọn ra đối tượng 1 và 2 để lấy tọa độ vẽ ra Polyline em chưa thực hiện được.Tại code lisp của e hơi chắp vá
Cám ơn bác nhiều !

Code lấy ra tọa độ Polyline cũng đã có trên diễn đàn.
Mình nghĩ bạn nên xây dựng và sử dụng các hàm con trong chương trình của bạn vừa dễ kiểm soát lỗi, mà code cũng trong sáng hơn
Chẳng hạn, trong trường hợp này bạn có thể xây dựng 1 Function con để lấy tọa độ đỉnh Polyline (với đối số là ename của Polyline)
Tue_NV chỉ có vài góp ý vậy.
Chúc thành công
  • 0