Chuyển đến nội dung
Diễn đàn CADViet

Gathienology

Thành viên
  • Số lượng nội dung

    7
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi Gathienology


  1. Bác cho em hỏi lisp để tính diện tích. Em thường dùng chú này

     (Defun c:dt()
    (setvar "cmdecho" 0)
    (command "osnap" "none")
    (initget "Heso Do")
    (setq pt (getpoint "\n He so / :"))
      	(if (= pt "Heso")
    		(progn	
    		(setq am (getreal "Cho he so"))
    		(if (and (null am) (/= ac 0))
    			(setq am ac)
    		)
    	(setq pt (getpoint "\n Chon diem: "))	
    	)
    	(setq ac am))
    
    (if (or (= am 0) (null am)) (setq am 1))
    (setq s 0)
    (progn 
    ;		(setq pt (getpoint "\n Chon diem: "))	
    	  (while pt
    		(setq entold (cdr (assoc 5 (entget (entlast)))))
    		(command "boundary" pt "")
    		(setq entnew (cdr (assoc 5 (entget (entlast)))))
    		(if (/= entold entnew)	
    			(progn 
    						(setq entnew (entget (entlast)))
    						(if (assoc 62 entnew)
    							  (setq entnew (subst (cons 62 (+ 3 (cdr (assoc 62 entnew)))) (assoc 62 entnew) entnew))
    							  (setq entnew (append entnew (list (cons 62 (+ 3 (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 entnew))))))))))
    						  )
    
    
    						(entmod entnew)
    						(Command "area" "o" (entlast))
    				(setq s (+ s (getvar "area")))
      					(setq pt (getpoint "\n Chon diem: "))
    				(entdel (entlast))
    				)
    			(progn
    				(princ "chon diem sai")
    				(setq pt (getpoint "\n Chon diem: "))
    			)
    		)
    	  )
    
    		)
    
    (setvar "osmode" 167)
    (princ(* s am))
    (princ)
    )

     

    mà hay bị lỗi lắm. Có cái nào ngon hơn không ạ?

×