Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
11 replies to this topic

#1 tuvn254

tuvn254

    biết vẽ line

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

Đã gửi 17 November 2009 - 10:37 AM

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.c...isp_do_doc/188/
  • 0

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 17 November 2009 - 11:02 AM

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.c...isp_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
  • 1

#3 tuvn254

tuvn254

    biết vẽ line

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

Đã gửi 18 November 2009 - 08:16 AM

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
  • 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 18 November 2009 - 08:32 AM

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

  • 3

#5 tuvn254

tuvn254

    biết vẽ line

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

Đã gửi 18 November 2009 - 09:04 AM

thanks bác nhé. Đúng lisp mình cần rồi. Thanks cadviet.................
  • 0

#6 anhsangxanh04kt

anhsangxanh04kt

    Chưa sử dụng CAD

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

Đã gửi 30 July 2010 - 09:53 PM

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é.
  • 1

#7 anhsangxanh04kt

anhsangxanh04kt

    Chưa sử dụng CAD

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

Đã gửi 01 August 2010 - 11:18 AM

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
  • 0

#8 softwater

softwater

    biết zoom

  • Members
  • Pip
  • 14 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 19 July 2012 - 02:49 PM

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
  • 0

#9 mathan

mathan

    biết vẽ rectang

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

Đã gửi 19 July 2012 - 04:44 PM

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

  • 1
-----------
Hình đã gửi Hãy chia sẻ để thấy có được nhiều hơn điều mình muốn!
Best regard,

#10 hadeptrai

hadeptrai

    biết vẽ polygon

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

Đã gửi 21 July 2012 - 11:16 AM

Trong nova có lệnh Pldd là ra cựckỳ đơn giản mà lại nhanh :D
  • 0

#11 phuongkq

phuongkq

    biết vẽ line

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

Đã gửi 02 February 2014 - 10:01 PM

cám ơn bạn mathan nhiều


  • 0

#12 lamngocson

lamngocson

    Chưa sử dụng CAD

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

Đã gửi 07 June 2016 - 11:07 AM

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!


  • 0