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

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

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

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 !

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

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

  • 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

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)

)

)

  • 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

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 !

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ạ.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

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  

×