Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
songlaptruong

Nhờ giúp đỡ về lisp tính diện tích bằng các pick điểm bao.

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

Em mới học lisp ạ, Em muốn mọi người giúp đỡ viết lisp tính diện tích bằng cách pick điểm đường bao giống như lệnh "area" ấy ạ.

Nghĩa là mình pick khoảng 10 điểm sau đó tính diện tích hình đa giác 10 cạnh ấy.

Em mong được mọi người giúp đỡ.

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

Em seach trên diễn đàn thường thấy lisp chọn đường bao hoặc chọn điểm trong đường bao chứ chưa thấy lisp pick điểm làm đường bao, nếu như mọi người thấy lisp này rồi thì cho em xin link dẫn với ạ.

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
conghoa    93

Bạn phải kick những 10 điểm để cho ra được diện tích thì sao bạn không vẽ luôn đường pline theo các điểm đó để lấy được diện tích :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
gia_bach    1.442

Em mới học lisp ạ, Em muốn mọi người giúp đỡ viết lisp tính diện tích bằng cách pick điểm đường bao giống như lệnh "area" ấy ạ.

Nghĩa là mình pick khoảng 10 điểm sau đó tính diện tích hình đa giác 10 cạnh ấy.

Em mong được mọi người giúp đỡ.

Tham khảo tính diện tích tam giác qua 3 điểm.

(defun c:dttg()
(defun triangleArea(a b c)
  (setq p (/ (+ a b c) 2.0))
  (sqrt (* p (- p a)(- p b)(- p c))))

  (if (and
	(setq pt1 (getpoint "pict dinh dau cua tam giac :"))
	(setq pt2 (getpoint pt1 "pict dinh ke cua tam giac :"))
	(setq pt3 (getpoint pt2 "pict dinh cuoi cua tam giac :")))
    (progn
      (setq a (distance pt1 pt2)
	    b (distance pt1 pt3)
	    c (distance pt3 pt2)
	    cir (+ a b c)
	    area (triangleArea a b c))
      (princ (strcat "\nChu vi tam giac la :" (rtos cir)
		     "\nDien tich tam giac la :" (rtos area)))  ) )
  (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

Để em tham khảo ạ.

 

Tham khảo tính diện tích tam giác qua 3 điểm.

(defun c:dttg()
(defun triangleArea(a b c)
  (setq p (/ (+ a b c) 2.0))
  (sqrt (* p (- p a)(- p b)(- p c))))

  (if (and
	(setq pt1 (getpoint "pict dinh dau cua tam giac :"))
	(setq pt2 (getpoint pt1 "pict dinh ke cua tam giac :"))
	(setq pt3 (getpoint pt2 "pict dinh cuoi cua tam giac :")))
    (progn
      (setq a (distance pt1 pt2)
	    b (distance pt1 pt3)
	    c (distance pt3 pt2)
	    cir (+ a b c)
	    area (triangleArea a b c))
      (princ (strcat "\nChu vi tam giac la :" (rtos cir)
		     "\nDien tich tam giac la :" (rtos area)))  ) )
  (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
duy782006    1.373
(DEFUN dodientichndiem ( )
  (command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")

(setq a (getpoint "\nChon diem dau tien: "))
(setq b (getpoint a"\nChon diem tiep theo: "))

(command "pline" a b "")
(setq plhoinay (entlast))
(setq diemdong a)
(setq a b)

  (while  (setq b (getpoint a"\nChon diem tiep theo <Enter de ket thuc>: ")) 

  (command "pline" a b "")
  (command "pedit" "m" "L" plhoinay "" "j" "0" "")
(setq plhoinay (entlast))
(setq a b)

)
  (command "pedit" plhoinay "c" "")

  (if (null motmetdo2d)(setq motmetdo2d "1000"))
 (Setq temp T)
(While temp
 (setq a (strcat "\nMot met hien hanh la ("motmetdo2d") <Diem viet ket qua>: "))  
 (Initget "m M")
 (setq str (getpoint a))
 (Cond
  ((= str "m") (setq motmetdo2d (getstring (strcat"\nMot met ban ve la <" motmetdo2d "> :"))))
  ((= str "M") (setq motmetdo2d (getstring (strcat"\nMot met ban ve la <" motmetdo2d "> :"))))
   (Progn
  (Setq a str)
   (setq temp nil)
  )
 )
)
  (command "area" "object" "last")
  (setq dientichdo2d (getvar "area"))
  (command "erase" "last" "") 

  (setq motmetdo2dt (atof motmetdo2d)) 
  (setq dolonchu2d (/ motmetdo2dt 4)) 
  (setq dientichdo2dtinh (/ dientichdo2d (* motmetdo2dt motmetdo2dt)))

  (setq dientichdo2dtinh (rtos dientichdo2dtinh 2 2))
;  (setq dientichdo2dtinh (strcat "S=" dientichdo2dtinh))

  (command "TEXT" a dolonchu2d 0 dientichdo2dtinh)

   (princ)
)

Tham khảo thì đây

  • 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  

×