Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
6 replies to this topic

#1 songlaptruong

songlaptruong

    biết pan

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

Đã gửi 21 March 2014 - 07:12 AM

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


  • 0

#2 songlaptruong

songlaptruong

    biết pan

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

Đã gửi 21 March 2014 - 07:14 AM

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


  • 0

#3 conghoa

conghoa

    biết lệnh attdef

  • Members
  • PipPipPipPipPipPip
  • 411 Bài viết
Điểm đánh giá: 88 (tàm tạm)

Đã gửi 21 March 2014 - 08:19 AM

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.


  • 0

#4 songlaptruong

songlaptruong

    biết pan

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

Đã gửi 21 March 2014 - 12:08 PM

Dạ, đây là 1 phần nhỏ trong lisp mà em định viết, tích điểm bao rồi lấy luôn diện tích cho nhanh ạ.


  • 0

#5 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1432 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 21 March 2014 - 12:36 PM

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

  • 1

#6 songlaptruong

songlaptruong

    biết pan

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

Đã gửi 22 March 2014 - 09:01 AM

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

  • 0

#7 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 22 March 2014 - 10:13 AM

(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


  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D