Chuyển đến nội dung
Diễn đàn CADViet
Hien vu

Cách vẽ 1 đoạn thẳng cách đều 2 đoạn thẳng cho trước.

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

Hello các bác, em đang cần vẽ 1 cái tim đường mà 2 mép đường không đều nhau như hình ạ, em cần vẽ tim ở giữa, ai biết giúp em với ạ, em cảm ơn mọi người.

image.png.5ebba113419cdff7828d92045cc9c501.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

Nếu bạn xài cad 2017 về sau thì mới có lệnh centerline, nếu không thì phải vẽ tay, cũng đơn giản thôi. Nếu bạn đã biết bắt điểm (endpoint, perpendicular, midpoint...) thì làm theo hình dưới đây:

Drawing1.thumb.jpg.48543d3e10027f1aed052ad247c232f8.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

Lisp tạo đường PLine giữa 2 đường Pline khác: 

 



; Write by Danh Cong - Cadviet.com 13-11-2020
; SDT 0336 760 750

(defun c:PL-CENTER (/ I KC LEN_PL_1 LST_POINT N PL_1 PL_2 PT1 PT2 PT3)
  (vl-load-com)
  (prompt "Select PLINE_1 ?")
  (setq PL_1 (car (entsel)))
  (prompt "Select PLINE_2 ?")
  (setq PL_2 (car (entsel)))

  (INITGET (+ 1 2 4))
  (setq KC (getreal "/nKhoang cach chia ?"))

  (setq lst_Point '())

  (setq Len_PL_1 (vlax-curve-getDistAtParam PL_1 (vlax-curve-getEndParam PL_1)))
  (setq i 0 n (/ Len_PL_1 KC))

  (while (< i n)
    (progn
      (setq Pt1 (vlax-curve-getPointAtDist PL_1 (* i KC)))
      (setq Pt2 (vlax-curve-getClosestPointTo PL_2 Pt1))
      (setq Pt3 (list (/ (+ (nth 0 Pt1) (nth 0 Pt2)) 2) (/ (+ (nth 1 Pt1) (nth 1 Pt2)) 2)))
      (setq lst_Point (append lst_Point (list Pt3)))
      (setq i (+ i 1))
      ); endprogn
    ); end while

  (acet-pline-make (list lst_Point))
  
  (princ))

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
Vào lúc 13/11/2020 tại 08:55, Danh Cong đã nói:

Lisp tạo đường PLine giữa 2 đường Pline khác: 

 

 





; Write by Danh Cong - Cadviet.com 13-11-2020
; SDT 0336 760 750



	(defun c:PL-CENTER (/ I KC LEN_PL_1 LST_POINT N PL_1 PL_2 PT1 PT2 PT3)
	  (vl-load-com)
	  (prompt "Select PLINE_1 ?")
	  (setq PL_1 (car (entsel)))
	  (prompt "Select PLINE_2 ?")
	  (setq PL_2 (car (entsel)))



	  (INITGET (+ 1 2 4))
	  (setq KC (getreal "/nKhoang cach chia ?"))



	  (setq lst_Point '())



	  (setq Len_PL_1 (vlax-curve-getDistAtParam PL_1 (vlax-curve-getEndParam PL_1)))
	  (setq i 0 n (/ Len_PL_1 KC))



	  (while (< i n)
	    (progn
	      (setq Pt1 (vlax-curve-getPointAtDist PL_1 (* i KC)))
	      (setq Pt2 (vlax-curve-getClosestPointTo PL_2 Pt1))
	      (setq Pt3 (list (/ (+ (nth 0 Pt1) (nth 0 Pt2)) 2) (/ (+ (nth 1 Pt1) (nth 1 Pt2)) 2)))
	      (setq lst_Point (append lst_Point (list Pt3)))
	      (setq i (+ i 1))
	      ); endprogn
	    ); end while



	  (acet-pline-make (list lst_Point))
	  
	  (princ))

cám ơn bác :v, lâu rồi nhưng nay em ms test thấy không ổn lắm bác ạ.

- Đường gấp khúc pline bị biến dạng tùy theo hệ số khoảng cách.

- Chỉ cần tạo tim cách đều 1 cách hoàn hảo, không cần hệ số khoảng cách trong lisp đâu ạ.

Em cảm ơn bác.

  • Vote giảm 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

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

×