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

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

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

Các bác giúp em vụ này với!!!

0000_2.jpg

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

  • 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
Để 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 ạ.

  • Vote tăng 2

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

  • 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
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ó.

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

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

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

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

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

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

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

  • 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

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  

×