Đến nội dung


Hình ảnh
- - - - -

Lấy giá trị chiều dài đoạn thằng?????


  • Please log in to reply
10 replies to this topic

#1 hatieu

hatieu

    biết vẽ pline

  • Advance Member
  • PipPip
  • 67 Bài viết
Điểm đánh giá: 13 (tàm tạm)

Đã gửi 05 November 2010 - 11:06 AM

Các bác giúp em vụ này với!!!
Hình đã gửi
  • 0
Công ty cổ phần đầu tư và xây dựng AGA
Chuyên tư vấn, cung cấp, thi công hệ vách dựng nhôm kính khổ lớn, cửa nhôm kính,
kính cường lực, vách ngăn, lan can, cầu thang kinh, lam nhôm chăn nắng.
Hot: 0984.985.119

#2 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 05 November 2010 - 11:14 AM

Các bác giúp em vụ này với!!!
Hình đã gửi

Để vẽ cái polyline như của bạn đâu cần phức tạp thế dùng (command "rectang" pt dpt) là được.
để lấy dx: (- (car dpt) (car pt))
lấy dy (- (cadr dpt) (cadr dpt))
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 05 November 2010 - 11:26 AM

Để vẽ cái polyline như của bạn đâu cần phức tạp thế dùng (command "rectang" pt dpt) là được.
để lấy dx: (- (car dpt) (car pt))
lấy dy (- (cadr dpt) (cadr dpt))

Hề hề hề,
Bác Phamngoctukts ơi,
Vì lấy giá trị dx và dy nên bác nên có hàm abs phía trước bác ạ.
  • 2
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#4 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 05 November 2010 - 11:32 AM

Hề hề hề,
Bác Phamngoctukts ơi,
Vì lấy giá trị dx và dy nên bác nên có hàm abs phía trước bác ạ.

Hề hề Bác bình à!
Em cũng nghĩ đến việc dùng giá trị tuyệt đối rồi nhưng do bạn mới làm quen với lisp nên đưa ra trường hợp cụ thể trong hình ảnh của bạn đó thôi. Để cho bạn tìm hiểu dần dần không có thì loạn đầu mất.
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#5 hatieu

hatieu

    biết vẽ pline

  • Advance Member
  • PipPip
  • 67 Bài viết
Điểm đánh giá: 13 (tàm tạm)

Đã gửi 05 November 2010 - 11:53 AM

Hề hề Bác bình à!
Em cũng nghĩ đến việc dùng giá trị tuyệt đối rồi nhưng do bạn mới làm quen với lisp nên đưa ra trường hợp cụ thể trong hình ảnh của bạn đó thôi. Để cho bạn tìm hiểu dần dần không có thì loạn đầu mất.

Hề hề hề,
Bác Phamngoctukts ơi,
Vì lấy giá trị dx và dy nên bác nên có hàm abs phía trước bác ạ.

Cảm ơn hai bác!!!
Em làm được rùi hì.
(setq dx (abs (- (car dpt) (car pt))))
(setq dy (abs (- (cadr dpt) (cadr pt))))
(setq w (- dx 15))
(setq h (- dy 15))
Các bác à thực sự là nhưng hàm trên em đều biết qua sách vở.Nhưng điều khó khăng nhất là việc vẫn dụng những hàm đó như thế nào là rất khó.
Thế nên phải qua những ví dụ thực tế thì mới thấu hiểu được nó.
  • 0
Công ty cổ phần đầu tư và xây dựng AGA
Chuyên tư vấn, cung cấp, thi công hệ vách dựng nhôm kính khổ lớn, cửa nhôm kính,
kính cường lực, vách ngăn, lan can, cầu thang kinh, lam nhôm chăn nắng.
Hot: 0984.985.119

#6 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 05 November 2010 - 02:08 PM

Cảm ơn hai bác!!!
Em làm được rùi hì.

(setq dx (abs (- (car dpt) (car pt))))
(setq dy (abs (- (cadr dpt) (cadr pt))))
(setq w (- dx 15))
(setq h (- dy 15))
Các bác à thực sự là nhưng hàm trên em đều biết qua sách vở.Nhưng điều khó khăng nhất là việc vẫn dụng những hàm đó như thế nào là rất khó.
Thế nên phải qua những ví dụ thực tế thì mới thấu hiểu được nó.

Hề hề hề,
Tất cả mọi người đều biết qua sâch vở cả, việc vận dụng kiến thức biết được vào giải quyết các vấn đề thực tế là điều duy nhất để chứng tỏ cái sự biết của mình. Biết lắm mà chả vận dụng dược chi thì đó chỉ là cái thư viện di động thôi, và trong thời buổi hiện tại thì loại thư viện này đã hết giá trị lịch sử của nó.
Hề hề hề. Vậy nên bạn cứ chịu khó thực hành sẽ biến được cái thư viện của bạn thành các giá trị vật chất đáng giá bạn ạ.
Chúc bạn thành công...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#7 hatieu

hatieu

    biết vẽ pline

  • Advance Member
  • PipPip
  • 67 Bài viết
Điểm đánh giá: 13 (tàm tạm)

Đã gửi 05 November 2010 - 02:28 PM

Hề hề hề,
Tất cả mọi người đều biết qua sâch vở cả, việc vận dụng kiến thức biết được vào giải quyết các vấn đề thực tế là điều duy nhất để chứng tỏ cái sự biết của mình. Biết lắm mà chả vận dụng dược chi thì đó chỉ là cái thư viện di động thôi, và trong thời buổi hiện tại thì loại thư viện này đã hết giá trị lịch sử của nó.
Hề hề hề. Vậy nên bạn cứ chịu khó thực hành sẽ biến được cái thư viện của bạn thành các giá trị vật chất đáng giá bạn ạ.
Chúc bạn thành công...

Thanks bác Bình đã động viên. Đang hứng xem kết quả của mình thế nào.
Nên em hỏi luôn bác một vấn đề nữa.
Làm thế nào để lưu giá trị một biến để không phải nhập lại giá trị khi sử dụng lisp lần sau.
Ví dụ: Em muốn lưu giá trị "siz" để lần sau thực hiên lisp nếu enter thì chấp nhận giá trị trước. Nếu không thì nhập giá trị mới.
(setq siz (getreal "\nEnter drawing scale:"))
  • 0
Công ty cổ phần đầu tư và xây dựng AGA
Chuyên tư vấn, cung cấp, thi công hệ vách dựng nhôm kính khổ lớn, cửa nhôm kính,
kính cường lực, vách ngăn, lan can, cầu thang kinh, lam nhôm chăn nắng.
Hot: 0984.985.119

#8 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 05 November 2010 - 02:42 PM

Thanks bác Bình đã động viên. Đang hứng xem kết quả của mình thế nào.
Nên em hỏi luôn bác một vấn đề nữa.
Làm thế nào để lưu giá trị một biến để không phải nhập lại giá trị khi sử dụng lisp lần sau.
Ví dụ: Em muốn lưu giá trị "siz" để lần sau thực hiên lisp nếu enter thì chấp nhận giá trị trước. Nếu không thì nhập giá trị mới.
(setq siz (getreal "\nEnter drawing scale:"))

Bạn dùng thế này
(setq siz (cond (siz) (1))
oldsiz siz
siz (getreal "\n Enter drawing scale: <" (rtos oldsiz 2 3) ">: ")
)
(if (nul siz) (setq siz oldsiz))
thử xem nhé
BS: muốn thay đổi giá trị ban đầu thì bạn thay giá trị vào chỗ chữ đỏ (cond (siz) (1))
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#9 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 05 November 2010 - 02:47 PM

Thanks bác Bình đã động viên. Đang hứng xem kết quả của mình thế nào.
Nên em hỏi luôn bác một vấn đề nữa.
Làm thế nào để lưu giá trị một biến để không phải nhập lại giá trị khi sử dụng lisp lần sau.
Ví dụ: Em muốn lưu giá trị "siz" để lần sau thực hiên lisp nếu enter thì chấp nhận giá trị trước. Nếu không thì nhập giá trị mới.
(setq siz (getreal "\nEnter drawing scale:"))

Để giá trị siz được tái sử dụng, bạn phải đặt nó là biến toàn cục, đồng thời thêm vào trước dòng code (setq siz ......) hàm điều kiện (if (not siz ......
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#10 hatieu

hatieu

    biết vẽ pline

  • Advance Member
  • PipPip
  • 67 Bài viết
Điểm đánh giá: 13 (tàm tạm)

Đã gửi 05 November 2010 - 04:15 PM

Cái này thì được rùi nhưng vẫn chưa đúng ý của em.
Vì em muốn là lưu giá trị trước đó chứ không phải giá trị cố định:(setq kco 40))
(defun dtr (a)
(* pi (/ a 180.0)))
;==================================================================
(defun c:t4 (/ ptc ten txt p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 e1 e2 siz kco )
(graphscr)
(reset)
;==================================================================
(if (not kco) (setq kco 40))
(setq siz (getdist(strcat "\nNhap ty le ban ve: <" (rtos kco) "> :")))
(if (not siz) (setq siz kco) (setq kco siz))

(setq ptc (getpoint "\nDiem chen ten:"))
(setq ten (strcase (getstring "Enter name glass:")))
(setq txt (* siz 6))
(setq p0 (polar ptc (dtr 90) (* txt 1)))
(setq p1 (polar p0 (dtr 180) (* txt 3)))
(setq p2 (polar p1 (dtr 270) (* txt 2)))
(setq p3 (polar p2 (dtr 0) (* txt 6)))
(setq p4 (polar p3 (dtr 90) (* txt 2)))
(setq p5 (polar p2 (dtr 0) (/ txt 4)))
(setq p6 (polar p5 (dtr 270) (/ txt 4)))
(setq p7 (polar p6 (dtr 0) (* txt 6)))
(setq p8 (polar p7 (dtr 90) (* txt 2)))
(setq p9 (polar p8 (dtr 180) (/ txt 4)))
(command "pline" p0 p1 p2 p3 p4 "c")
(setq e1 (entlast))
(prompt "_.change")
(command "_.change" e1 "" "p" "c" "3" "")
(command "pline" p5 p6 p7 p8 p9 "" "" )
(setq e2 (entlast))
(prompt "_.change")
(command "_.change" e2 "" "p" "c" "3" "")
;==================================================================
(command "layer" "m" "text" "c" "7" "" "")
(command "layer" "s" "text" "" "")
(command "text" "j" "m" ptc txt 0 ten \e)
(reset1)
(princ)
)
;==================================================================
(defun reset()
(setq old_lay (getvar "clayer"))
(setq old_txt (getvar "textstyle"))
(setvar "textstyle" "romans")
(setvar "osmode" 0)
)
;==================================================================
(defun reset1()
(setvar "osmode" 15359)
(setvar "plinewid" 0.0)
(setvar "textstyle" old_txt)
(command "layer" "s" old_lay "")
)

  • 0
Công ty cổ phần đầu tư và xây dựng AGA
Chuyên tư vấn, cung cấp, thi công hệ vách dựng nhôm kính khổ lớn, cửa nhôm kính,
kính cường lực, vách ngăn, lan can, cầu thang kinh, lam nhôm chăn nắng.
Hot: 0984.985.119

#11 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 05 November 2010 - 08:07 PM

[quote name='hatieu' post='115907' date='Nov 5 2010, 16:15']Cái này thì được rùi nhưng vẫn chưa đúng ý của em.
Vì em muốn là lưu giá trị trước đó chứ không phải giá trị cố định:(setq kco 40))

;; free lisp from cadviet.com
(defun dtr (a)
  (* pi (/ a 180.0)))
;==================================================================
(defun c:t4 (/ ptc ten txt p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 e1 e2 kco  )
(graphscr)
  (reset)
;==================================================================  
    (setq siz (cond (siz) (40)))
(setq oldsiz siz)  
(setq siz (getdist(strcat "\nNhap ty le ban ve: <" (rtos oldsiz 2 3) "> :")))
    (if (null siz) (setq siz oldsiz))
      (setq ptc (getpoint "\nDiem chen ten:"))
      (setq ten (strcase (getstring "Enter name glass:")))
      (setq txt (* siz 6))
      (setq p0 (polar ptc (dtr 90) (* txt 1)))
      (setq p1 (polar p0 (dtr 180) (* txt 3)))
      (setq p2 (polar p1 (dtr 270) (* txt 2)))
      (setq p3 (polar p2 (dtr 0) (* txt 6)))
      (setq p4 (polar p3 (dtr 90) (* txt 2)))
      (setq p5 (polar p2 (dtr 0) (/ txt 4)))
      (setq p6 (polar p5 (dtr 270) (/ txt 4)))
      (setq p7 (polar p6 (dtr 0) (* txt 6)))
      (setq p8 (polar p7 (dtr 90) (* txt 2)))
      (setq p9 (polar p8 (dtr 180) (/ txt 4)))
       (command "pline" p0 p1 p2 p3 p4  "c")
      (setq e1 (entlast))
    (prompt "_.change")
      (command "_.change" e1 "" "p" "c" "3" "")
      (command "pline" p5 p6 p7 p8 p9  "" "" )
      (setq e2 (entlast))
    (prompt "_.change")
      (command "_.change" e2 "" "p" "c" "3" "")
;==================================================================
      (command "layer" "m" "text" "c" "7" "" "")
      (command "layer" "s" "text" "" "")
       (command "text" "j" "m" ptc  txt 0 ten \e)
    (reset1)
        (princ)
  )
;==================================================================
  (defun reset()
        (setq old_lay (getvar "clayer"))
        (setq old_txt (getvar "textstyle"))
        (setvar "textstyle" "romans")
        (setvar "osmode" 0)    
    )
;==================================================================
    (defun reset1()
        (setvar "osmode" 15359)
        (setvar "plinewid" 0.0)
          (setvar "textstyle" old_txt)
      (command "layer" "s" old_lay "")
    )

  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!