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

Xin Lisp vẽ độ dốc dọc

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

bác nào có lisp vẽ độ dốc dọc bằng cách: pick một điểm, nhập độ dốc, nhập chiều dài ==> vẽ được đường thằng cần vẽ. Thanks các bác nhiều nhé, mình mới tìm được lisp cho độ dốc và khoảng cách cố định thôi. Các bác tham kháo: http://www.cadviet.com/cadtips/7526_lisp_do_doc/188/

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ác nào có lisp vẽ độ dốc dọc bằng cách: pick một điểm, nhập độ dốc, nhập chiều dài ==> vẽ được đường thằng cần vẽ. Thanks các bác nhiều nhé, mình mới tìm được lisp cho độ dốc và khoảng cách cố định thôi. Các bác tham kháo: http://www.cadviet.com/cadtips/7526_lisp_do_doc/188/

Chào bạn tuvn254.

Cái này mình nghĩ không khó. Chỉ 1 lệnh Line, ta có thể vẽ được độ dốc theo yêu cầu của bạn

độ dốc i được định nghĩa là tỉ số giữa chiều cao H và chiều dài L

tức i = H/L => H = L * i

Vậy, ta chọn 1 điểm là A(xa, ya) => vậy điểm B sẽ có toạ độ là B(xa+L; ya+H)

 

Ví dụ cho i=10%, L = 5000 cho điểm A => xác định và vẽ đường AB hợp với phương nằm ngang với góc a mà tga = 10%=0.1

 

=> Sử dụng CAD như sau :

Command: LINE -> gõ Line

Specify first point: -> Pick điểm A

Specify next point or [undo]: 'cal -> gõ 'Cal

>> Expression: @+[5000,5000*0.1] -> gõ @+[5000,5000*0.1]

(1.09071e+006 359397.0 0.0) -> đây chính là toạ độ điểm B

 

-> đường AB thế là vẽ xong

  • 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
Chào bạn tuvn254.

Cái này mình nghĩ không khó. Chỉ 1 lệnh Line, ta có thể vẽ được độ dốc theo yêu cầu của bạn

độ dốc i được định nghĩa là tỉ số giữa chiều cao H và chiều dài L

tức i = H/L => H = L * i

Vậy, ta chọn 1 điểm là A(xa, ya) => vậy điểm B sẽ có toạ độ là B(xa+L; ya+H)

 

Ví dụ cho i=10%, L = 5000 cho điểm A => xác định và vẽ đường AB hợp với phương nằm ngang với góc a mà tga = 10%=0.1

 

=> Sử dụng CAD như sau :

Command: LINE -> gõ Line

Specify first point: -> Pick điểm A

Specify next point or [undo]: 'cal -> gõ 'Cal

>> Expression: @+[5000,5000*0.1] -> gõ @+[5000,5000*0.1]

(1.09071e+006 359397.0 0.0) -> đây chính là toạ độ điểm B

 

-> đường AB thế là vẽ xong

thanks bạn đã góp ý, vấn đề làm mình phải vẽ rất nhiều, và độ dốc cũng như chiều dài ko fải lúc nào cũng là một số chẵn. Nên mình mới cần dùng lips cho nhanh, vẽ 1, 2 đường còn nhập được, chứ vẽ hàng trăm đường dễ nhập nhầm lắm bác ah. Bác cố giúp nhé. mình đang cần quá. Thanks

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
thanks bạn đã góp ý, vấn đề làm mình phải vẽ rất nhiều, và độ dốc cũng như chiều dài ko fải lúc nào cũng là một số chẵn. Nên mình mới cần dùng lips cho nhanh, vẽ 1, 2 đường còn nhập được, chứ vẽ hàng trăm đường dễ nhập nhầm lắm bác ah. Bác cố giúp nhé. mình đang cần quá. Thanks

Bạn sử dụng cái này thử nhé :

 

(defun c:doc(/ p L)

(command ".line" (setq p (getpoint "\n Pick diem dau :"))

(strcat "@" (rtos (setq L (getdist p "\n Nhap chieu dai :")))

","

(rtos (* L (/ (getreal "\nVao do doc %: ") 100)))

)

"")

(princ)

)

  • Vote tăng 3

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 sử dụng cái này thử nhé :

 

(defun c:doc(/ p L)

(command ".line" (setq p (getpoint "\n Pick diem dau :"))

(strcat "@" (rtos (setq L (getdist p "\n Nhap chieu dai :")))

","

(rtos (* L (/ (getreal "\nVao do doc %: ") 100)))

)

"")

(princ)

)

cái này tính ra chiều dài là hình chiếu chứ ko phải là chiều dài đường nghiêng. có thể bạn cho mình cái lisp mà vẽ được độ dài đường nghiêng nhé.

  • 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 dùng xem cái này có vừa ý không nhé

;;; Ve Pline theo chieu dai va do doc
;;; Writeb by Nguyen Van Tau Tel:0982.767.231
;;; 30 - 7 - 2010
(defun c:VPL (/ Pt Leng Slope X Y alpha)
 (setq Pt (getpoint "\nSpecify first point: "))
 (while (/= Leng 0.0)
   (setq Leng 0.0 )
   (vl-cmdf "_.pline" Pt)
   (setq Leng (getdist "\nSpecify length of line : "))
   (if (/= Leng nil)
     (progn
(setq Slope (getreal "\nSpecify slope of line <1/...>: ")
      alpha (atan Slope)
      X (* Leng (sin alpha))
      Y (* Leng (cos alpha))
      );
(setq Pt (list (+ X (car Pt)) (+ Y (cadr Pt))))
);
     (progn
(vl-cmdf "")
(exit)
);
     );end if
   );end while
 (princ)
 );end defun

bạn ơi. nhưng khi mình nhập độ dốc( theo%) vào thi không ra:(. bạn có thể giải thích cho minh <1/...> là sao. thanks nha:D

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 ơi. nhưng khi mình nhập độ dốc( theo%) vào thi không ra:(. bạn có thể giải thích cho minh <1/...> là sao. thanks nha:D

 

Ý nghĩa như sau:

1%=1/100= bạn nhập 100

2% = 1/50= bạn nhập 50

3% = 1/33,33333333 = bạn nhập 33,3333333

Nhưng không hiểu sao khi mình nhập bắt đầu bằng 4%, sau đó nhập đến các % khác thì được

Còn nếu mình nhập các % khác (trừ 4%) đầu tiên thì không được

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 xài cái của mình xem sao

Mình để thêm trường hợp bạn vẽ dôc trên trắc dọc tức là tỷ lệ X và Y có thể không bằng nhau

Dùng LISP bằng lệnh DTL - VPL - D1 (khuyến mãi để đo dốc dọc :D)

 

;;; Free lisp code from CADViet.com - edit by Mathan
;;; Ve Pline theo chieu dai va do doc
;;;ho tro ve duong do trong civil - nova
(prompt "Edited by Mathan,dat ty le lenh DTL - Ve pline VPL - kiem tra doc lend D1")
;;;;;;;;;;
(defun c:DTL (/ )
(if (= ngang Nil)
(setq ngang 1000)   
 )
(if (= dung Nil)
(setq dung 100)   
 )
(setq str (strcat "\nNhap ty le ngang [" (itoa ngang) "] (press Enter or Space for get default): "))
 (setq n (getint str))
 (if (/= n Nil)
(setq ngang n)   
 )
(setq str (strcat "\nNhap ty le dung [" (itoa dung) "] (press Enter or Space for get default): "))
 (setq n (getint str))
 (if (/= n Nil)
(setq dung n)   
 )
(setq tyle (/ ngang dung))
)
;;;;;;;;;;;;;;;;;;;;;;
(defun c:vpl (/ Pt Leng Slope X Y alpha)
 (setq Pt (getpoint "\nSpecify first point: "))
 (while (/= Leng 0.0)
(setq Leng 0.0 )
(vl-cmdf "_.pline" Pt)
(setq Leng (getdist "\nSpecify length of line : "))
(if (/= Leng nil)
 	(progn
(setq Slope (getreal "\nSpecify slope of line ...%: ")
  	alpha (atan Slope)
  	X leng
  	Y (/ (* Leng slope tyle) 100)
  	);
(setq Pt (list (+ X (car Pt)) (+ Y (cadr Pt))))
);
 	(progn
(vl-cmdf "")
(exit)
);
 	);end if
);end while
 (princ)
 );end defun
;;; ******************************** DO do doc don gian (d1) ***************************
(defun  c:d1 ()
(setq p1 (getpoint "\nchon diem thu nhat: ")
 	p2 (getpoint p1"\nChon diem thu hai: "))
(setq dx (abs(- (car p1)(car p2))))
;---------------------------------;
(setq dx1 (abs(- (car p1)(car p2))))
(setq dy1 (abs(- (cadr p1)(cadr p2))))
(setq tl1 (/ (* dy1 100) (* dx tyle)))
(princ (strcat "\nDo doc hien tai(theo ty le): " (rtos tl1 2 4) "%"))
(princ)
)

  • 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

mấy anh ơi cho em xin cái lisp đo độ dốc % với ạ em muốn lisp  đó đơn giản thôi chỉ cần pick điểm thứ nhất và pick điểm thứ 2 sẽ ra luôn độ dốc dọc của đường thẳng đó! mong mấy anh viết giúp em với ạ em cảm ơn 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

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

×